[PATCH] powerpc/mpc52xx/mtd: fix mtd-ram access for 16-bit Local Plus Bus
Grant Likely
grant.likely at secretlab.ca
Sun Jun 14 03:09:24 EST 2009
On Sat, Jun 13, 2009 at 10:45 AM, Albrecht Dreß<albrecht.dress at arcor.de> wrote:
> Am 11.06.09 18:27 schrieb(en) Grant Likely:
>>>
>>> + *(u16 *)buf = *((volatile u16 *)(vdest - 1));
>>> + buf[1] = *((u8 *)src);
>>> + *((volatile u16 *)(vdest - 1)) = *(u16 *)buf;
>>
>> what is the purpose of volatile here? If you need io barriers, then use
>> the in_/out_be16 macros.
>
> Yes, you're right - should be completely superfluous here. A result of copy
> & paste without thinking... :-(
>
>> Blech. ugly #ifdef and not really multiplatform safe (yeah, I know it
>> shouldn't break non-5200 platforms, but it does have an undesirable impact).
>> There's got to be a better way.
>
> Ouch, yes - I completely forgot the possibility of multi-platform builds.
>
> Am 11.06.09 19:28 schrieb(en) Grant Likely:
>>
>> So; the solution to me seems to be on an MPC5200 platform replace the
>> offending hooks with MPC5200 specific variants at runtime.
>
> Will re-work the patch that way! BTW, a dumb question: what is the proper
> way to determine which cpu the system is running on? Check the CPU node of
> the of tree?
In this case I'd walk up the parent nodes in the tree looking for an
"fsl,mpc5200-lpb" compatible value. That way you only apply the
workaround if the device is on the locaplus bus, and not for example
below the PCI bus.
g.
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
More information about the Linuxppc-dev
mailing list