Subject: Re: powerpc/85xx: Add support for the "socrates" board (MPC8544)

From: Wolfgang Grandegger <[email-masked]>
Date: Wed, 01 Apr 2009 15:10:31 +0200

Grant Likely wrote:
> On Wed, Apr 1, 2009 at 1:36 AM, Wolfgang Grandegger <[email-masked]> wrote:
>> Anton Vorontsov wrote:
>>> On Tue, Mar 31, 2009 at 09:05:28AM -0600, Grant Likely wrote:
>>> [...]
>>>>>>>>> +       soc8544@e0000000 {
>>>>>>>>> +               #address-cells = <1>;
>>>>>>>>> +               #size-cells = <1>;
>>>>>>>>> +               device_type = "soc";
>>>>>>>> Drop device_type here too.
>>>>>>> Grrr, I just realized that removing the devices type "soc" has broken
>>>>>>> fsl_get_sys_freq(). See:
>>>>>>>
>>>>>>> http://lxr.linux.no/linux+v2.6.29/arch/powerpc/sysdev/fsl_soc.c#L80
>>>>>>>
>>>>>>> We need a quick fix and we could take the occasion to establish a common
>>>>>>> function for the MPC52xx as well, but it's not obvious to me how to find
>>>>>>> the SOC node without the device type property.
>>>>>> SoC node should have a compatible property, just like everything else.
>>>>>>
>>>>>> compatible = "fsl,mpc8544-immr";  (immr == Internally Memory Mapped Registers)
>>>>>>
>>>>>> Many other boards already do this.
>>>>> Yes, it does, but searching for the SOC node is not straight-forward
>>>>> because there is no common compatibility string but many CPU-specific
>>>>> compatibility strings, e.g. "fsl,mpc8560-immr", etc. Have I missed
>>>>> something?
>>>> Choose a new value ("fsl,mpc-immr" perhaps?), document exactly what it
>>>> means, and add add it to the end of the compatible list.
>>> As Scott Wood once pointed out, IMMR does not exists for MPC85xx
>>> parts. There it's called CCSR.
>>>
>>> See this thread:
>>>
>>> http://www.mail-archive.com/[email-masked]/msg12665.html
>>>
>>> I still think that
>>> "fsl,mpc83NN-immr", "fsl,soc", "simple-bus" for 83xx
>>> and
>>> "fsl,mpc85NN-ccsr", "fsl,soc", "simple-bus" for 85xx
>>>
>>> would be OK, at least to start with. We can always deprecate "fsl,soc"
>>> compatible in favour of something more elegant, but "fsl,soc" should be
>>> just fine to replace device_type = "soc".
>>>
>>> Also, there is another good thing about "fsl,soc" -- U-Boot already
>>> finds it for 83xx CPUs. ;-)
>> Ugh! I just realize the full impact of removing device type "soc". It
>> will break compatibility with U-Boot for many boards. Is it worth it?
> 
> Yes, I know this.  I'm not asking you to fix all the other boards, but
> make sure that it is not required for the new board.

Hm, I'm confused, if we want to fix this issue we need first to

- fix all functions in fsl_soc.c searching for the compatible string
  "fsl,soc" instead of the device type "soc" (or both for backward
  compatibility).

- fix U-Boot to find the SOC node by looking for "fsl,soc" to insert the
  proper bus-frequency, at least.

That affects *all* boards using CONFIG_FSL_SOC and requires an
up-to-date version of U-Boot for new kernels :-(. If that is fixed, I
can remove the "device_type = "soc";" from socrates.dts (and may more),
but not right now. Or have I missed something?

Wolfgang.