[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