lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 22 Oct 2012 09:39:21 +0530
From:	viresh kumar <viresh.kumar@...aro.org>
To:	Shiraz Hashim <shiraz.hashim@...com>
Cc:	thierry.reding@...onic-design.de, linux-kernel@...r.kernel.org,
	spear-devel@...t.st.com
Subject: Re: [PATCH V3] PWM: Add SPEAr PWM chip driver support

Every time you read a code, you figure out new things about it.
Sorry for these comments Now :(

On Mon, Oct 22, 2012 at 9:21 AM, Shiraz Hashim <shiraz.hashim@...com> wrote:
> diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
> index acfe482..6512786 100644
> --- a/drivers/pwm/Makefile
> +++ b/drivers/pwm/Makefile
> @@ -9,6 +9,7 @@ obj-$(CONFIG_PWM_PUV3)          += pwm-puv3.o
>  obj-$(CONFIG_PWM_PXA)          += pwm-pxa.o
>  obj-$(CONFIG_PWM_SAMSUNG)      += pwm-samsung.o
>  obj-$(CONFIG_PWM_TEGRA)                += pwm-tegra.o
> +obj-$(CONFIG_PWM_SPEAR)                += pwm-spear.o

I have gone through this on every version of this patch, but couldn't figure
out that you were trying to add it in alphabetical order, but you couldn't.

> diff --git a/drivers/pwm/pwm-spear.c b/drivers/pwm/pwm-spear.c

> +static int spear_pwm_probe(struct platform_device *pdev)
> +{
> +       pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL);
> +       if (!pc) {
> +               dev_err(&pdev->dev, "failed to allocate memory\n");
> +               return -ENOMEM;
> +       }
> +
> +       pc->dev = &pdev->dev;

If you are going to send another version, then please move this

> +       pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
> +       if (!pc->mmio_base)
> +               return -EADDRNOTAVAIL;
> +
> +       platform_set_drvdata(pdev, pc);

and this

> +       pc->clk = devm_clk_get(&pdev->dev, NULL);
> +       if (IS_ERR(pc->clk))
> +               return PTR_ERR(pc->clk);

to this place :)
So, that we don't do these for failure cases.

> +       pc->chip.dev = &pdev->dev;
> +       pc->chip.ops = &spear_pwm_ops;
> +       pc->chip.base = -1;
> +       pc->chip.npwm = NUM_PWM;
> +

> +       if (np && of_device_is_compatible(np, "st,spear1340-pwm")) {

I have noticed it earlier, but don't know why didn't i gave a comment here?
you don't need to check for np here. It can't be NULL as you depend on
CONFIG_OF.

> +               /*
> +                * Following enables PWM chip, channels would still be
> +                * enabled individually through their control register
> +                */
> +               val = readl_relaxed(pc->mmio_base + PWMMCR);
> +               val |= PWMMCR_PWM_ENABLE;
> +               writel_relaxed(val, pc->mmio_base + PWMMCR);
> +
> +       }
> +
> +       /* only disable the clk and leave it prepared */
> +       clk_disable(pc->clk);
> +
> +       return 0;
> +}
> +
> +static int spear_pwm_remove(struct platform_device *pdev)
> +{
> +       struct spear_pwm_chip *pc = platform_get_drvdata(pdev);
> +       int i;
> +
> +       for (i = 0; i < NUM_PWM; i++) {
> +               struct pwm_device *pwm = &pc->chip.pwms[i];
> +
> +               if (test_bit(PWMF_ENABLED, &pwm->flags)) {
> +                       spear_pwm_writel(pc, i, PWMCR, 0);
> +                       clk_disable(pc->clk);
> +               }
> +       }
> +
> +       /* clk was prepared in probe, hence unprepare it here */
> +       clk_unprepare(pc->clk);

I believe you need to remove the chip first and then do above to
avoid any race conditions, that might occur.

> +       return pwmchip_remove(&pc->chip);
> +}
> +

After all this please add my:
Acked-by: Viresh Kumar <viresh.kumar@...aro.org>

Sorry Shiraz for so late comments, i can understand your frustration :(

--
viresh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ