[PATCH v3 3/4] powerpc: NAND: FSL UPM: document new bindings

Grant Likely grant.likely at secretlab.ca
Thu Mar 26 13:02:06 EDT 2009

On Thu, Mar 26, 2009 at 10:35 AM, Wolfgang Grandegger <wg at grandegger.com> wrote:
> Grant Likely wrote:
>> On Thu, Mar 26, 2009 at 9:33 AM, Wolfgang Grandegger <wg at grandegger.com> wrote:
>>> Grant Likely wrote:
>>>> Does using the reg property give the driver enough information to
>>>> reliably program the MAR for NAND connections that use the address
>>>> line chip select scheme?  Related to that, should the binding include
>>> In principle yes:
>>>  if (i > 0)
>>>      offset[i] = resource[i].start - resource[0].start;
>> Ewww.  That's ugly.
> Yep.
>>>> a property that explicitly states that an address line chip select
>>>> scheme is being used?
>>> That's why I'm still in favor of:
>>>  fsl,upm-multi-chip-offsets = <0x200 0x400>
>>> That would state that the address line chip select scheme is used with
>>> the specified offsets. It also allows for a more elegant solution
>>> (code-wise).
>> Alright.  Then at the very least the property name should reflect that
>> address lines CS is used to reduce the chance of confusion with
>> another multi-chip scheme.  Something like
>> fsl,upm-addr-line-cs-offsets maybe?
>> Here is another thought.  The binding is describing that address lines
>> are used to activate CS lines.  Offset for chip access purposes is
>> derived from the address line, but it doesn't directly describe the
>> hardware.  The following may be a better description of the hardware.
>> fsl,upm-addr-line-cs = <9 10>;
> The TQM8548 hardware has some logic connected to the two address lines
> allowing to select up to 4 chips with two address lines:
>  fsl,upm-addr-line-cs-offsets = <0x0 0x200 0x400 0x600>

Ah.  I see.  This is board specific then.  I think it is premature to
try and define a generic solution here because it depends on custom
board hardware and different boards could use very different logic.
The next board could end up doing something completely different.  I'd
rather start to see trends in multiple boards implementing the same
scheme before trying to craft a generic scheme.

In other words, this device is not register-level compatible with the
fsl,upm-nand device.  Give the node a new compatible value
(tqc,tqm8548-upm-nand) and add another entry to the of_fun_match table
for the new device.  Use the .data element in the match table to
supply an alternate fun_cmd_ctrl() function for this board (instead of
using a property value do decide which fun_cmd_ctrl() behaviour to
use).  New boards that *do* use the same addressing scheme can claim
compatibility with tqc,tqm8548-upm-nand.

You can still use the property names already discussed, but only
document them as valid for the tqc,tqm8548-upm-nand variant of the

Very little will need to change in your patch to handle it this way.


Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

More information about the linux-mtd mailing list