Subject: [PATCH] pwm: pxa: add device tree support to pwm driver

From: [email-masked] (Marek Vasut)
Date: Wed, 4 Sep 2013 00:20:54 +0200

Dear Mike Dunn,

> This patch adds device tree support to the pxa's pwm driver.  Only an OF
> match table is added; nothing needs to be extracted from the device tree
> node.  The existing platform_device id table is reused for the match table
> data.
> 
> Tested on a Palm Treo 680 (both platform data and DT cases).
> 
> Signed-off-by: Mike Dunn <[email-masked]>
> ---
> 
> I don't have data sheets handy for the newer Marvell pxa's (and I'm
> confused about the presence of a pwm unit on pxa25x), so only pxa27x.dtsi
> was updated. Thanks for looking!
> 
>  arch/arm/boot/dts/pxa27x.dtsi | 12 ++++++++++++
>  drivers/pwm/pwm-pxa.c         | 31 +++++++++++++++++++++++++++++++
>  2 files changed, 43 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
> index d7c5d72..4031dce 100644
> --- a/arch/arm/boot/dts/pxa27x.dtsi
> +++ b/arch/arm/boot/dts/pxa27x.dtsi
> @@ -10,5 +10,17 @@
>  			marvell,intc-priority;
>  			marvell,intc-nr-irqs = <34>;
>  		};
> +
> +		pwm0: pwm at 40b00000 {
> +			compatible = "marvell,pxa27x-pwm";
> +			reg = <0x40b00000 0x100000>;
> +			#pwm-cells = <2>;
> +		};
> +
> +		pwm1: pwm at 40c00000 {
> +			compatible = "marvell,pxa27x-pwm";
> +			reg = <0x40c00000 0x100000>;
> +			#pwm-cells = <2>;
> +		};
>  	};
>  };
> diff --git a/drivers/pwm/pwm-pxa.c b/drivers/pwm/pwm-pxa.c
> index a4d2164..be5f914 100644
> --- a/drivers/pwm/pwm-pxa.c
> +++ b/drivers/pwm/pwm-pxa.c
> @@ -19,6 +19,7 @@
>  #include <linux/clk.h>
>  #include <linux/io.h>
>  #include <linux/pwm.h>
> +#include <linux/of_device.h>
> 
>  #include <asm/div64.h>
> 
> @@ -124,6 +125,30 @@ static struct pwm_ops pxa_pwm_ops = {
>  	.owner = THIS_MODULE,
>  };
> 
> +#ifdef CONFIG_OF
> +/* use the platform_device id table for OF match table data */
> +static struct of_device_id pwm_of_match[] = {
> +	{ .compatible = "marvell,pxa25x-pwm", .data = &pwm_id_table[0] },
> +	{ .compatible = "marvell,pxa27x-pwm", .data = &pwm_id_table[1] },
> +	{ .compatible = "marvell,pxa168-pwm", .data = &pwm_id_table[2] },
> +	{ .compatible = "marvell,pxa910-pwm", .data = &pwm_id_table[3] },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(of, pwm_of_match);

Are PXA2xx and PXA3xx PWM impleemntations not all the same ? If so, why not just 
stick with pxa25x-pwm only for all of the CPUs (aka. the lowest CPU model). Then 
the table would have but a single entry.

[...]

Best regards,
Marek Vasut