[PATCH] pwm: pxa: add device tree support to pwm driver
Marek Vasut
marex at denx.de
Thu Sep 5 11:34:40 EDT 2013
Dear Mike Dunn,
> On 09/04/2013 03:11 PM, Marek Vasut wrote:
>
>
> [...]
>
> >>> What's that "secondary PWM" there? I no longer remember, sorry.
> >>
> >> If pdev->id_entry->driver_data == HAS_SECONDARY_PWM, then
> >> pwm_chip->npwm=2 when pwmchip_add() is called. Otherwise
> >> pwm_chip->npwm=1. The driver knows that the second pwm's registers are
> >> at a fixed offset from the first. For compatibility, the pxa27x maps
> >> the registers for the third pwm at a distant offset, and makes the
> >> offset between 3 and 4 the same as between 1 and 2. Yes, the driver
> >> mkes this unnecessarily complicated. There should just be one device
> >> instance per pwm, and dispense with the whole driver_data thing. I
> >> guess there's some history there.
> >
> > OK, I checked the datasheet. The register block for PWM<n + 2> is at
> > offset of 0x10 from PWM<n> , for n in {0, 1} .
> >
> > Why can we not just register four PWM blocks, each with 0x10 register
> > window size then? I know there's history (maybe), but then, with DT,
> > this might go away.
>
> Indeed. That is what I am also thinking.
>
> >>> The question
> >>> remains still, we can have two entries there (pxa25x and pxa27x) ORR
> >>> have one entry (pxa25x) + mrvl,has-secondary-pwm entry.
> >>
> >> It looks like defining "compatible" properties that mirror the old
> >> platform_device_id names won't fly...
> >
> > Yes of course, this won't work. I didn't know the layout exactly.
> >
> >> wildcards are verboten (see Sergei's
> >> comment). So your inclination to use one value for the "compatible"
> >> property is correct. I think the way to go is to forget the whole
> >> HAS_SECONDARY_PWM in the DT case, have one device instance per pwm, and
> >> use "compatible=marvell,pwm". Other suggestions welcome.
> >
> > compatbile=marvell,pxa25x-pwm , no ? The lowest CPU with the block.
>
> Unless I am missing something, the compatible string does not need to
> replicate any of the existing platform_device_id names, so wouldn't
> "marvell,pxa" be better? Except for register mapping and the number of
> units present on a particular pxa variant, the peripheral is software
> compatible across all pxa processors. Plus there is the problem of the
> 'x' wildcard in "pxa25x-pwm".
So use pxa250 ?
My concern is once marvell comes up with PXA1048576 which will have a different
PWM unit, then what will be the name for this new one?
Best regards,
Marek Vasut
More information about the linux-arm-kernel
mailing list