From mboxrd@z Thu Jan 1 00:00:00 1970 From: s.hauer@pengutronix.de (Sascha Hauer) Date: Thu, 18 Nov 2010 11:15:41 +0100 Subject: [PATCH 3/5] mx51: Add mx51 processor to the pwm driver In-Reply-To: <20101116195032.GU8942@pengutronix.de> References: <766471.7361.qm@web51008.mail.re2.yahoo.com> <20101116195032.GU8942@pengutronix.de> Message-ID: <20101118101541.GW6017@pengutronix.de> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Nov 16, 2010 at 08:50:32PM +0100, Uwe Kleine-K?nig wrote: > On Tue, Nov 16, 2010 at 10:36:35AM -0800, Fabio Estevam wrote: > > Signed-off-by: Fabio Estevam > > --- > > arch/arm/plat-mxc/pwm.c |? ? 8 +++++--- > > 1 files changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/arch/arm/plat-mxc/pwm.c b/arch/arm/plat-mxc/pwm.c > > index c36f263..c6cdced 100644 > > --- a/arch/arm/plat-mxc/pwm.c > > +++ b/arch/arm/plat-mxc/pwm.c > > @@ -26,7 +26,7 @@ > > #define MX1_PWMP? ? 0x08???/* PWM Period Register */ > > > > > > -/* i.MX27, i.MX31, i.MX35 share the same PWM function block: */ > > +/* i.MX25/27/31/35/51 share the same PWM function block: */ > If this is correct, ... > > > > #define MX3_PWMCR? ? ? ? ? ? ? ???0x00? ? /* PWM Control Register */ > > #define MX3_PWMSAR? ? ? ? ? ? ? ? 0x0C? ? /* PWM Sample Register */ > > @@ -57,7 +57,7 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) > > ??? if (pwm == NULL || period_ns == 0 || duty_ns > period_ns) > > ??? ??? return -EINVAL; > > > > -??? if (cpu_is_mx27() || cpu_is_mx3() || cpu_is_mx25()) { > > +??? if (cpu_is_mx27() || cpu_is_mx3() || cpu_is_mx25() || cpu_is_mx51()) { > > ??? ??? unsigned long long c; > > ??? ??? unsigned long period_cycles, duty_cycles, prescale; > > ??? ??? u32 cr; > > @@ -79,7 +79,7 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) > > > > ??? ??? cr = MX3_PWMCR_PRESCALER(prescale) | MX3_PWMCR_EN; > > > > -??? ??? if (cpu_is_mx25()) > > +??? ??? if (cpu_is_mx25() || cpu_is_mx51()) > I wonder why mx27 and mx3 are missing here. Look at the code. We are already inside a mx27/3/25 block and we have to do this only on mx25. > > > ??? ??? ??? cr |= MX3_PWMCR_CLKSRC_IPG; > > ??? ??? else > > ??? ??? ??? cr |= MX3_PWMCR_CLKSRC_IPG_HIGH; > > @@ -198,6 +198,7 @@ static int __devinit mxc_pwm_probe(struct platform_device *pdev) > > > > ??? if (IS_ERR(pwm->clk)) { > > ??? ??? ret = PTR_ERR(pwm->clk); > > +??? ??? dev_err(&pdev->dev, "can't get PWM clock\n"); > > ??? ??? goto err_free; > > ??? } > > > > @@ -233,6 +234,7 @@ static int __devinit mxc_pwm_probe(struct platform_device *pdev) > > ??? mutex_unlock(&pwm_lock); > > > > ??? platform_set_drvdata(pdev, pwm); > > +??? dev_info(&pdev->dev, "i.MX PWM Driver Enabled\n"); > > ??? return 0; > > > > err_free_mem: > Some general comments for this driver: > > - should move to drivers/something > - IMHO should use platform ids to get rid of the cpu_is_ stuff Agreed, but this of course should be the scope of another patch. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |