[U-Boot] Exynos 5800/5422 CPU ID inconsistency.

Hello,
The s5p_cpu_id variable is set in here: arch/arm/mach-exynos/include/mach/cpu.h
For value 0x422, found in pro id register, the s5p_cpu_id is set as 0x5800. I think, that hiding the real info is wrong and misleading.
I don't have documentation for E5800, but maybe there is some additional register like package id to recognise the SoC variant.
I'm pointing this issue, because for older boards, we used this information to set the $fdtfile environment variable name, to next load proper fdt from partition before boot the kernel.
Now, I would like use the s5p_cpu_id to set the fdtfile name for Odroid XU3/4, but the value is bad.
I would like fix this value to the real one, but then, the CPU name will change on Chromebooks.
To fix this we could add "cpu-name" property to device tree, and then print it.
What do you think about this?
Best regards,

Hi Przemyslaw,
On 26 August 2015 at 06:09, Przemyslaw Marczak p.marczak@samsung.com wrote:
Hello,
The s5p_cpu_id variable is set in here: arch/arm/mach-exynos/include/mach/cpu.h
For value 0x422, found in pro id register, the s5p_cpu_id is set as 0x5800. I think, that hiding the real info is wrong and misleading.
I don't have documentation for E5800, but maybe there is some additional register like package id to recognise the SoC variant.
I'm pointing this issue, because for older boards, we used this information to set the $fdtfile environment variable name, to next load proper fdt from partition before boot the kernel.
Now, I would like use the s5p_cpu_id to set the fdtfile name for Odroid XU3/4, but the value is bad.
I would like fix this value to the real one, but then, the CPU name will change on Chromebooks.
To fix this we could add "cpu-name" property to device tree, and then print it.
What do you think about this?
That seems fine to me.
Regards, Simon

On Wed, 2015-08-26 at 06:37 -0700, Simon Glass wrote:
Hi Przemyslaw,
On 26 August 2015 at 06:09, Przemyslaw Marczak <p.marczak@samsung.com
wrote: Hello,
The s5p_cpu_id variable is set in here: arch/arm/mach-exynos/include/mach/cpu.h
For value 0x422, found in pro id register, the s5p_cpu_id is set as 0x5800. I think, that hiding the real info is wrong and misleading.
I don't have documentation for E5800, but maybe there is some additional register like package id to recognise the SoC variant.
I'm pointing this issue, because for older boards, we used this information to set the $fdtfile environment variable name, to next load proper fdt from partition before boot the kernel.
Now, I would like use the s5p_cpu_id to set the fdtfile name for Odroid XU3/4, but the value is bad.
I would like fix this value to the real one, but then, the CPU name will change on Chromebooks.
To fix this we could add "cpu-name" property to device tree, and then print it.
I was wondering recently whether there shouldn't simply be a device -tree property with the name of the fdt file as used by linux such there is no need for putting this dynamically together which can be a tad error-prone (as this example shows). (Unfortunately not all boards in linux use the <cpu name>-<board name> convention :/)

Hello Sjoerd,
On 08/26/2015 10:56 PM, Sjoerd Simons wrote:
On Wed, 2015-08-26 at 06:37 -0700, Simon Glass wrote:
Hi Przemyslaw,
On 26 August 2015 at 06:09, Przemyslaw Marczak <p.marczak@samsung.com
wrote: Hello,
The s5p_cpu_id variable is set in here: arch/arm/mach-exynos/include/mach/cpu.h
For value 0x422, found in pro id register, the s5p_cpu_id is set as 0x5800. I think, that hiding the real info is wrong and misleading.
I don't have documentation for E5800, but maybe there is some additional register like package id to recognise the SoC variant.
I'm pointing this issue, because for older boards, we used this information to set the $fdtfile environment variable name, to next load proper fdt from partition before boot the kernel.
Now, I would like use the s5p_cpu_id to set the fdtfile name for Odroid XU3/4, but the value is bad.
I would like fix this value to the real one, but then, the CPU name will change on Chromebooks.
To fix this we could add "cpu-name" property to device tree, and then print it.
I was wondering recently whether there shouldn't simply be a device -tree property with the name of the fdt file as used by linux such there is no need for putting this dynamically together which can be a tad error-prone (as this example shows). (Unfortunately not all boards in linux use the <cpu name>-<board name> convention :/)
This could be good for the boards with only one kernel compatible fdt file.
But for Exynos, there can be more than one kernel compatible fdt for a single U-Boot binary like for Odroid XU3/3L/4 or Odroid U3/X2. There are also other platforms with this issue, like imx6 wandboard.
Adding common feature for board detection, may be complicated.
After some quick research, I think that adding "cpu-name" to fdt will look not pretty. Change the name of "cpus" node to the SoC name would be nice, but will break the compatibility with the kernel and U-Boot's UCLASS_CPU driver.
In this case, adding a line:
#define CONFIG_CPU_NAME "Exynos5800"
only to the peach-pi.h seem to be reasonable, because for other Exynos platforms the CPU name is proper.
Best regards,
participants (3)
-
Przemyslaw Marczak
-
Simon Glass
-
Sjoerd Simons