From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 06/10] pwm: Add NVIDIA Tegra SoC support
Date: Mon, 19 Mar 2012 20:35:20 -0600 [thread overview]
Message-ID: <4F67ECE8.8030307@wwwdotorg.org> (raw)
In-Reply-To: <1331740593-10807-7-git-send-email-thierry.reding@avionic-design.de>
On 03/14/2012 09:56 AM, Thierry Reding wrote:
> This commit adds a generic PWM framework driver for the PWFM controller
> found on NVIDIA Tegra SoCs. The driver is based on code from the
> Chromium kernel tree and was originally written by Gary King (NVIDIA)
...
> diff --git a/drivers/pwm/pwm-tegra.c b/drivers/pwm/pwm-tegra.c
...
> +static int tegra_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
> +{
> + struct tegra_pwm_chip *pc = to_tegra_pwm_chip(chip);
> + int rc = 0;
> +
> + if (!pc->enable[pwm->hwpwm]) {
IIRC, the new PWM core only calls the enable() op for a disabled ->
enabled transition, so this driver probably doesn't need to check the
same thing, and you can get rid of tegra_pwm_chip.enable[] and have
tegra_pwm_config() read the enable flag from the core pwm device instead.
> + rc = clk_enable(pc->clk);
> + if (!rc) {
> + unsigned long offset = pwm->hwpwm << 4;
> + u32 val;
> +
> + val = readl(pc->mmio_base + offset);
> + val |= PWM_ENABLE;
> + writel(val, pc->mmio_base + offset);
It seems a little of for the driver to define a pwm_writel() function
but only use it in some places but not others. I guess it's because in
some places the code knows the clock is on, so doesn't need the
clk_enable()/disable() helper in pwm_writel(), but I'd tend towards
always using pwm_readl()/pwm_writel() throughout the driver, and lifting
the clock management out of those low-level functions myself.
> +static int __devexit tegra_pwm_remove(struct platform_device *pdev)
> +{
> + struct tegra_pwm_chip *pwm = platform_get_drvdata(pdev);
> + int i;
> +
> + if (WARN_ON(!pwm))
> + return -ENODEV;
> +
> + pwmchip_remove(&pwm->chip);
> +
> + for (i = 0; i < NUM_PWM; i++) {
> + pwm_writel(pwm, i, 0);
> +
> + if (pwm->enable[i])
> + clk_disable(pwm->clk);
Should the core call the disable() op before the remove() op so drivers
don't need to check this? I'm a little in two minds about this; if this
decision is deferred to drivers (as the code above assumes), then I
suppose the whole remove() path might be marginally more efficient.
next prev parent reply other threads:[~2012-03-20 2:35 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-14 15:56 [PATCH v4 00/10] Add PWM framework and device tree support Thierry Reding
2012-03-14 15:56 ` [PATCH v4 01/10] PWM: add pwm framework support Thierry Reding
2012-03-14 20:52 ` Lars-Peter Clausen
2012-03-14 20:57 ` Thierry Reding
2012-03-16 7:19 ` Shawn Guo
2012-03-16 7:28 ` Thierry Reding
2012-03-20 1:55 ` Stephen Warren
2012-03-20 5:59 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 02/10] pwm: Allow chips to support multiple PWMs Thierry Reding
2012-03-14 20:42 ` H Hartley Sweeten
2012-03-14 20:49 ` Thierry Reding
2012-03-15 0:42 ` H Hartley Sweeten
2012-03-14 15:56 ` [PATCH v4 03/10] pwm: Add device tree support Thierry Reding
2012-03-14 20:11 ` Sascha Hauer
2012-03-14 20:46 ` Thierry Reding
2012-03-15 8:40 ` Arnd Bergmann
2012-03-15 10:29 ` Mark Brown
2012-03-15 12:44 ` Arnd Bergmann
2012-03-20 2:12 ` Stephen Warren
2012-03-20 5:51 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 04/10] ARM: tegra: Fix PWM clock programming Thierry Reding
2012-03-20 2:15 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 05/10] ARM: tegra: Provide clock for only one PWM controller Thierry Reding
2012-03-20 2:18 ` Stephen Warren
2012-03-20 8:44 ` Thierry Reding
2012-03-20 15:27 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 06/10] pwm: Add NVIDIA Tegra SoC support Thierry Reding
2012-03-16 8:00 ` Shawn Guo
2012-03-16 8:21 ` Thierry Reding
2012-03-20 2:35 ` Stephen Warren [this message]
2012-03-14 15:56 ` [PATCH v4 07/10] pwm: tegra: Add device tree support Thierry Reding
2012-03-20 2:42 ` Stephen Warren
2012-03-20 8:48 ` Thierry Reding
2012-03-20 15:33 ` Stephen Warren
2012-03-20 15:44 ` Thierry Reding
2012-04-04 7:04 ` Shawn Guo
2012-04-04 18:33 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 08/10] pwm: Add Blackfin support Thierry Reding
2012-03-14 15:56 ` [PATCH v4 09/10] pwm: Add PXA support Thierry Reding
2012-03-15 0:13 ` Ryan Mallon
2012-03-15 6:56 ` Thierry Reding
2012-03-15 9:05 ` Sascha Hauer
2012-03-15 9:21 ` Thierry Reding
2012-03-15 9:45 ` Sascha Hauer
2012-03-16 8:12 ` Shawn Guo
2012-03-16 8:29 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support Thierry Reding
2012-03-15 8:48 ` Arnd Bergmann
2012-03-20 2:59 ` Stephen Warren
2012-03-20 8:39 ` Thierry Reding
2012-03-20 15:27 ` Stephen Warren
2012-03-20 15:43 ` Thierry Reding
2012-03-20 15:56 ` Stephen Warren
2012-03-20 16:08 ` Mark Brown
2012-03-14 23:19 ` [PATCH v4 00/10] Add PWM framework and " H Hartley Sweeten
2012-03-15 6:41 ` Thierry Reding
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F67ECE8.8030307@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).