Re: [PATCH] arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399-roc-pc boards.

From: Robin Murphy
Date: Wed Nov 04 2020 - 07:18:02 EST


On 2020-11-04 11:15, Markus Reichl wrote:
Hi Heiko,

Am 04.11.20 um 11:51 schrieb Heiko Stübner:
Hi Markus,

Am Mittwoch, 4. November 2020, 10:49:45 CET schrieb Markus Reichl:
Recently introduced async probe on mmc devices can shuffle block IDs.
Pin them to fixed values to ease booting in evironments where UUIDs
are not practical. Use newly introduced aliases for mmcblk devices from [1].

[1]
https://patchwork.kernel.org/patch/11747669/

Signed-off-by: Markus Reichl <m.reichl@xxxxxxxxxxxxx>
---
 arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
index e7a459fa4322..bc9482b59428 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
@@ -13,6 +13,11 @@ / {
     model = "Firefly ROC-RK3399-PC Board";
     compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";

+    aliases {
+        mmc0 = &sdmmc;
+        mmc1 = &sdhci;
+    };
+

Any reason for this odering?

Without pinning roc-pc mostly booted as
mmcblk0 = sdmmc = µSD
mmcblk1 = sdhci = eMMC
so I kept this behaviour in aliases

roc-pc-mezzanine with populated SDIO-M2-slot booted
mmc0 = sdio = (no mmcblk)
mmcblk1 = sdmmc = µSD
mmcblk2 = sdhci = eMMC

FWIW that's also how my NanoPC-T4 behaves. Given that it's the order they appear in the DT, not too surprising ;)

Robin.

With my aliases both boards behave the same now and the optional SDIO slot
goes out of the way to mmc2.


I.e. some previous incarnations had it ordered as (emmc, mmc, sdio).
This is also true for the ChromeOS out-of-tree usage of those, the
rk3399 dts in the chromeos-4.4 tree also orders this as sdhci, sdmmc, sdio.

The boards from my zoo (exynos, rk3399) mostly come up with SD-card as mmc0
and eMMC as mmc1 in mainline as opposed in some vendor kernels.
but I have no objection to set it the other way round if this is more common
with rk3399 boards.


And I guess a further question would be when we're doing arbitary orderings
anyway, why is this not in rk3399.dtsi ;-) ?

I restricted the ordering to the boards I have, not to confuse other established
use cases, but if a standard ordering is desired this can go to rk3399.dtsi.



Heiko



Gruß,