arm64: dts: ls1028a: make the eMMC and SD card controllers use fixed indices
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 19 Nov 2020 16:38:21 +0000 (18:38 +0200)
committerShawn Guo <shawnguo@kernel.org>
Tue, 1 Dec 2020 01:35:27 +0000 (09:35 +0800)
As the boot order in the kernel continues to change, sometimes it may
happen that the eSDHC controller mmc@2150000 (the one for eMMC) gets
probed before the one at mmc@2140000 (for external SD cards). The effect
is that the eMMC controller gets the /dev/mmcblk0 name, and the SD card
gets /dev/mmcblk1.

Since the introduction of this SoC, that has never happened in practice,
even though it was never guaranteed in theory. Setting
"root=/dev/mmcblk0p2" in /proc/cmdline has always caused the kernel to
use the second partition from the SD card as the rootfs.

The NXP development boards are typically shipped with either
- LSDK, which uses "root=UUID=", or
- OpenIL, which uses "root=/dev/mmcblkNp2"

So for OpenIL, let's preserve that old behavior by adding some aliases
which create naming consistency (for LSDK it doesn't matter):
- the SD card controller uses /dev/mmcblk0
- the eMMC controller uses /dev/mmcblk1

For the Kontron SL28 boards, Michael Walle says that they are shipped
with "root=UUID=" already, so the probing order doesn't matter, but it
is more natural to him for /dev/mmcblk0 to be the eMMC, so let's do it
the other way around there.

The aliases are parsed by mmc_alloc_host() in drivers/mmc/core/host.c.

Cc: Ashish Kumar <Ashish.Kumar@nxp.com>
Cc: Yangbo Lu <yangbo.lu@nxp.com>
Cc: Michael Walle <michael@walle.cc>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Acked-by: Michael Walle <michael@walle.cc>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-rdb.dts

index 6b1ec50d6a6588c27b89753a0fc35b9edf16988e..3123e4173c62b55d5ad378eddb2fc73bebab9e7c 100644 (file)
@@ -23,6 +23,8 @@
                serial2 = &lpuart1;
                spi0 = &fspi;
                spi1 = &dspi2;
+               mmc0 = &esdhc1;
+               mmc1 = &esdhc;
        };
 
        buttons0 {
index 13cdc958ba3ea2182a60cfad0e29be68bb0fb567..c0786b7137919cf9b76a3f911d32d5554a21e6d7 100644 (file)
@@ -23,6 +23,8 @@
                gpio2 = &gpio3;
                serial0 = &duart0;
                serial1 = &duart1;
+               mmc0 = &esdhc;
+               mmc1 = &esdhc1;
        };
 
        chosen {
index 1efb61cff45471f2dcd2a337105d6b7dd1ad3d7e..c1d1ba459307a5b1e70428922f80324592ed59d7 100644 (file)
@@ -19,6 +19,8 @@
                crypto = &crypto;
                serial0 = &duart0;
                serial1 = &duart1;
+               mmc0 = &esdhc;
+               mmc1 = &esdhc1;
        };
 
        chosen {