[PATCH] arm: mvebu: Espressobin: Fix checks against machine compatible strings

The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com --- board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin")) + if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc"); + emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb");

On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On Tuesday 29 September 2020 14:38:39 Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Ok, now I see where is the problem. eMMC support for Espressobin is not in U-Boot master yet.
So for U-Boot master the best would be to revert/remove this emmc chunk of code.
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On 29/09/2020 14:38, Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Right, without my set there is no support for the eMMC board in u-boot at all. We could remove the code, but I figured that'll be just unnecessary churn. The check evaluates correctly to non-emmc, so it works for the in-tree board just fine. This is the smaller fixup for the release.
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On Tuesday 29 September 2020 14:43:25 Andre Heider wrote:
On 29/09/2020 14:38, Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
- if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0; /* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Right, without my set there is no support for the eMMC board in u-boot at all. We could remove the code, but I figured that'll be just unnecessary churn. The check evaluates correctly to non-emmc, so it works for the in-tree board just fine. This is the smaller fixup for the release.
Ok, Lets include it!
Reviewed-by: Pali Rohár pali@kernel.org
Stefan, can you send this patch for U-Boot 2020.10 release?
Maybe following patch for documentation (doc/README.marvell) may be useful to: https://patchwork.ozlabs.org/project/uboot/patch/20200925075416.16124-1-pali...
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On 01.10.20 10:23, Pali Rohár wrote:
On Tuesday 29 September 2020 14:43:25 Andre Heider wrote:
On 29/09/2020 14:38, Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
- if (!of_machine_is_compatible("marvell,armada-3720-espressobin"))
Linux v5.9-rc6 arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts:19: compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
This value has been in Linux since 2016.
We should be able to boot with the U-Boot internal device tree into Linux.
So fix the device tree in U-Boot and not the C code, please.
Best regards
Heinrich
return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Right, without my set there is no support for the eMMC board in u-boot at all. We could remove the code, but I figured that'll be just unnecessary churn. The check evaluates correctly to non-emmc, so it works for the in-tree board just fine. This is the smaller fixup for the release.
Ok, Lets include it!
Reviewed-by: Pali Rohár pali@kernel.org
Stefan, can you send this patch for U-Boot 2020.10 release?
Maybe following patch for documentation (doc/README.marvell) may be useful to: https://patchwork.ozlabs.org/project/uboot/patch/20200925075416.16124-1-pali...
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On Thursday 01 October 2020 12:42:21 Heinrich Schuchardt wrote:
On 01.10.20 10:23, Pali Rohár wrote:
On Tuesday 29 September 2020 14:43:25 Andre Heider wrote:
On 29/09/2020 14:38, Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
- if (!of_machine_is_compatible("marvell,armada-3720-espressobin"))
Linux v5.9-rc6 arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts:19: compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
This value has been in Linux since 2016.
We should be able to boot with the U-Boot internal device tree into Linux.
Hello Heinrich!
This is not possible yet as Linux kernel uses different comphy driver as U-Boot and device tree structure for these drivers are different.
So you cannot use U-Boot internal device tree file for booting Linux kernel.
So fix the device tree in U-Boot and not the C code, please.
Yes, this is ongoing work, Marek is working on replacing U-Boot comphy driver one from Linux kernel and Andre is working on synchronizing DTS files from Linux kernel to U-Boot. But these works are not complete yet and we need non-broken U-Boot 2020.10 release.
Best regards
Heinrich
return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Right, without my set there is no support for the eMMC board in u-boot at all. We could remove the code, but I figured that'll be just unnecessary churn. The check evaluates correctly to non-emmc, so it works for the in-tree board just fine. This is the smaller fixup for the release.
Ok, Lets include it!
Reviewed-by: Pali Rohár pali@kernel.org
Stefan, can you send this patch for U-Boot 2020.10 release?
Maybe following patch for documentation (doc/README.marvell) may be useful to: https://patchwork.ozlabs.org/project/uboot/patch/20200925075416.16124-1-pali...
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); -- 2.28.0

On 01.10.20 12:48, Pali Rohár wrote:
On Thursday 01 October 2020 12:42:21 Heinrich Schuchardt wrote:
On 01.10.20 10:23, Pali Rohár wrote:
On Tuesday 29 September 2020 14:43:25 Andre Heider wrote:
On 29/09/2020 14:38, Pali Rohár wrote:
On Tuesday 29 September 2020 14:34:26 Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
- if (!of_machine_is_compatible("marvell,armada-3720-espressobin"))
Linux v5.9-rc6 arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts:19: compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
This value has been in Linux since 2016.
We should be able to boot with the U-Boot internal device tree into Linux.
Hello Heinrich!
This is not possible yet as Linux kernel uses different comphy driver as U-Boot and device tree structure for these drivers are different.
So you cannot use U-Boot internal device tree file for booting Linux kernel.
So fix the device tree in U-Boot and not the C code, please.
Yes, this is ongoing work, Marek is working on replacing U-Boot comphy driver one from Linux kernel and Andre is working on synchronizing DTS files from Linux kernel to U-Boot. But these works are not complete yet and we need non-broken U-Boot 2020.10 release.
Thanks for the explanation Pali. Yes, this fix is only temporarily for the upcoming release. The DT sync will continue after the 2020.10 release.
Thanks, Stefan
Best regards
Heinrich
return 0; /* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
- emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
I run 'git grep marvell,armada-3720-espressobin-emmc origin/master' just for verification... but it returned me empty result.
So marvell,armada-3720-espressobin-emmc is not correct too and therefore this patch does not still fix this problem.
Right, without my set there is no support for the eMMC board in u-boot at all. We could remove the code, but I figured that'll be just unnecessary churn. The check evaluates correctly to non-emmc, so it works for the in-tree board just fine. This is the smaller fixup for the release.
Ok, Lets include it!
Reviewed-by: Pali Rohár pali@kernel.org
Stefan, can you send this patch for U-Boot 2020.10 release?
Maybe following patch for documentation (doc/README.marvell) may be useful to: https://patchwork.ozlabs.org/project/uboot/patch/20200925075416.16124-1-pali...
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb");
-- 2.28.0
Viele Grüße, Stefan

On 29.09.20 14:34, Andre Heider wrote:
The patches changing the compatible strings to the ones used by Linux have not been merged yet, so fix the checks to use the current in-tree ones.
Reported-by: Pali Rohár pali@kernel.org Signed-off-by: Andre Heider a.heider@gmail.com
Applied to u-boot-marvell/master
Thanks, Stefan
board/Marvell/mvebu_armada-37xx/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c index eacee15cb3..2bfc7171c4 100644 --- a/board/Marvell/mvebu_armada-37xx/board.c +++ b/board/Marvell/mvebu_armada-37xx/board.c @@ -88,14 +88,14 @@ int board_late_init(void) if (env_get("fdtfile")) return 0;
- if (!of_machine_is_compatible("globalscale,espressobin"))
if (!of_machine_is_compatible("marvell,armada-3720-espressobin")) return 0;
/* If the memory controller has been configured for DDR4, we're running on v7 */ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
- emmc = of_machine_is_compatible("globalscale,espressobin-emmc");
emmc = of_machine_is_compatible("marvell,armada-3720-espressobin-emmc");
if (ddr4 && emmc) env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb");
Viele Grüße, Stefan
participants (4)
-
Andre Heider
-
Heinrich Schuchardt
-
Pali Rohár
-
Stefan Roese