From patchwork Tue Dec 1 22:55:39 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 7741231 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 90C429F30B for ; Tue, 1 Dec 2015 22:58:28 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C393020674 for ; Tue, 1 Dec 2015 22:58:27 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F26D02063B for ; Tue, 1 Dec 2015 22:58:26 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1a3tr7-0004bR-It; Tue, 01 Dec 2015 22:57:05 +0000 Received: from mout.kundenserver.de ([217.72.192.75]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1a3tqg-0004Iz-I1; Tue, 01 Dec 2015 22:56:40 +0000 Received: from localhost.localdomain ([95.91.39.67]) by mrelayeu.kundenserver.de (mreue102) with ESMTPSA (Nemesis) id 0MF3Up-1a5ojI1VJj-00GHAw; Tue, 01 Dec 2015 23:56:03 +0100 From: Stefan Wahren To: Thierry Reding , Stephen Warren , Lee Jones , Eric Anholt Subject: [PATCH 1/3] pwm: bcm2835: calculate scaler in pwm_config Date: Tue, 1 Dec 2015 22:55:39 +0000 Message-Id: <1449010541-3767-2-git-send-email-stefan.wahren@i2se.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1449010541-3767-1-git-send-email-stefan.wahren@i2se.com> References: <1449010541-3767-1-git-send-email-stefan.wahren@i2se.com> X-Provags-ID: V03:K0:ztFTzistsXCBJqai9Mr2aNN5a3cVJQFzThpSDFR9iFt56eohQAD gqbbfsPAkGBAuDkL4kW0QnQUmxk2bvvu2bQejJsoLiqiJzx7xaDDuD91nVPxz/IN9deBl5R ChxnqS/AZnjp6Xa0LM4rHkgrOFI21wLLZBXZiSeCu43OBXIOm/aHvaqWtFLtrkQmIbj44H8 xvYOZXM4kagWTh/A0nXQg== X-UI-Out-Filterresults: notjunk:1; V01:K0:OLH3xfvhrSM=:SG8yemerrGqvf7XR735KIa /CRxETuelR+PdUzQKKIUlWEK9q0b/b/eu3XSCskBfvLd3ij/VVTgRidvEKBH8Awan0vzTm9Y7 2OO/zksJ169y95TczuiCwqA3F0G3NbVXYPL7yXHCmqged6THhD3h7R58rGfQ1qKQEI4cguecZ ekNEw3w4rF6AgfLVNPmyidwNzg6qDtQ/yebzzC3ExygPvD99cbc6/Ssu1vhw5XZg9zuoOhF9I Ir57RjwhxBxWjH0jC6WmtswNTjh+pf7CxyzKneuy2CVC6/Unw7pwsxnl2VicW0YTUJzmTi8tY gREVxK9qnIzv+qAnZ6Km2dWQVXzBfybvk16sI9jBAouiAH0WENgInKgjmof6hP26YFkNf2HC1 B5Y1u69WY8D7CMYQs80Wp0FGZJnG98M/AI3syB6VD075WYHg2g3gAsoEqWf6nM+hGrIv4H3FM V+p4fGmLD3hLmJdx8KvgnWMXrVG784/SzrfSjY/1Ef9+UuTRBceEpg/GetLJ99W0lLvG1KcyE Raj+LCK4nwBek8XZODWg08sn+i0SsGy+NBnnT2hyY7+LqG3qLhnXJI6NwjqGof2HIi0g1hTD4 hHwGei64X9/4//sStqJKOA2dBz19/DMFjEYk+a0c0tCmZ3zsoI33qxHyh9XjYQpbtZG8+2jOQ 1EayEwqlKSbjbaNFP+1z9WIY8znnNFN8cTKwoVXt+wGZ3avhbpblXDPqz0og3eY6x96w= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20151201_145639_111135_AF825E40 X-CRM114-Status: GOOD ( 11.46 ) X-Spam-Score: -1.9 (-) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stefan Wahren , linux-pwm@vger.kernel.org, Remi Pommarel , linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Currently pwm-bcm2835 assumes a fixed clock rate and stores the resulting scaler in the driver structure. But with the upcoming PWM clock support for clk-bcm2835 the rate could change. So calculate the scaler in pwm_config. Signed-off-by: Stefan Wahren --- drivers/pwm/pwm-bcm2835.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/pwm/pwm-bcm2835.c b/drivers/pwm/pwm-bcm2835.c index b4c7f95..174cca9 100644 --- a/drivers/pwm/pwm-bcm2835.c +++ b/drivers/pwm/pwm-bcm2835.c @@ -29,7 +29,6 @@ struct bcm2835_pwm { struct pwm_chip chip; struct device *dev; - unsigned long scaler; void __iomem *base; struct clk *clk; }; @@ -66,6 +65,7 @@ static int bcm2835_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, int duty_ns, int period_ns) { struct bcm2835_pwm *pc = to_bcm2835_pwm(chip); + unsigned long scaler = NSEC_PER_SEC / clk_get_rate(pc->clk); if (period_ns <= MIN_PERIOD) { dev_err(pc->dev, "period %d not supported, minimum %d\n", @@ -73,8 +73,8 @@ static int bcm2835_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, return -EINVAL; } - writel(duty_ns / pc->scaler, pc->base + DUTY(pwm->hwpwm)); - writel(period_ns / pc->scaler, pc->base + PERIOD(pwm->hwpwm)); + writel(duty_ns / scaler, pc->base + DUTY(pwm->hwpwm)); + writel(period_ns / scaler, pc->base + PERIOD(pwm->hwpwm)); return 0; } @@ -156,8 +156,6 @@ static int bcm2835_pwm_probe(struct platform_device *pdev) if (ret) return ret; - pc->scaler = NSEC_PER_SEC / clk_get_rate(pc->clk); - pc->chip.dev = &pdev->dev; pc->chip.ops = &bcm2835_pwm_ops; pc->chip.npwm = 2;