Re: [PATCH] arm64: dts: ls1028a: make the eMMC and SD card controllers use fixed indices

From: Michael Walle
Date: Tue Nov 24 2020 - 03:55:31 EST


Am 2020-11-24 09:47, schrieb Y.b. Lu:
Hi Michael,

-----Original Message-----
From: Michael Walle <michael@xxxxxxxx>
Sent: Tuesday, November 24, 2020 4:03 PM
To: Y.b. Lu <yangbo.lu@xxxxxxx>
Cc: Vladimir Oltean <vladimir.oltean@xxxxxxx>; Shawn Guo
<shawnguo@xxxxxxxxxx>; Leo Li <leoyang.li@xxxxxxx>; Rob Herring
<robh+dt@xxxxxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
devicetree@xxxxxxxxxxxxxxx; Adrian Hunter <adrian.hunter@xxxxxxxxx>; Ulf
Hansson <ulf.hansson@xxxxxxxxxx>; linux-mmc@xxxxxxxxxxxxxxx;
linux-kernel@xxxxxxxxxxxxxxx; Ashish Kumar <ashish.kumar@xxxxxxx>
Subject: Re: [PATCH] arm64: dts: ls1028a: make the eMMC and SD card
controllers use fixed indices

Am 2020-11-24 08:41, schrieb Y.b. Lu:
> Hi Vladimir,
>
>> -----Original Message-----
>> From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
>> Sent: Friday, November 20, 2020 5:30 PM
>> To: Y.b. Lu <yangbo.lu@xxxxxxx>
>> Cc: Shawn Guo <shawnguo@xxxxxxxxxx>; Leo Li <leoyang.li@xxxxxxx>; Rob
>> Herring <robh+dt@xxxxxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
>> devicetree@xxxxxxxxxxxxxxx; Adrian Hunter <adrian.hunter@xxxxxxxxx>;
>> Ulf
>> Hansson <ulf.hansson@xxxxxxxxxx>; linux-mmc@xxxxxxxxxxxxxxx;
>> linux-kernel@xxxxxxxxxxxxxxx; Ashish Kumar <ashish.kumar@xxxxxxx>;
>> Michael Walle <michael@xxxxxxxx>
>> Subject: Re: [PATCH] arm64: dts: ls1028a: make the eMMC and SD card
>> controllers use fixed indices
>>
>> On Fri, Nov 20, 2020 at 02:04:02AM +0000, Y.b. Lu wrote:
>> > Hi Vladimir,
>> >
>> > I have already upstreamed a patch for all affected layerscape boards.
>> >
>>
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kern
el.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fshawnguo%2Flinux.git%2
Fcommit%2F&amp;data=04%7C01%7Cyangbo.lu%40nxp.com%7C498622ade
e704fc0042008d8904f6184%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0
%7C0%7C637418017917635725%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiM
C4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000
&amp;sdata=OciS3q%2BmP%2Bz4x1ewPHDigmUkgIZmBgUlRRTm4yaxB7s%3D
&amp;reserved=0?
>> h=imx/dt64&id=342ab37ecaf8c1b10dd3ca9a1271db29a6af0705
>> >
>> > Please check whether it works for you.
>>
>> Thanks, one can tell that I haven't done my due diligence of checking
>> Shawn's tree first. I'll cherry-pick that patch and carry on with my
>> work.
>>
>> However, the fact still remains that Michael has expressed his opinion
>> regarding mmcblk0 vs mmcblk1. Do you think that we could make the
>> aliases a per-board option instead of per-SoC? Consider that there
>> might
>> even be boards that only use SD card. It would be strange for the
>> block
>> device in that case to be called /dev/mmcblk1.
>
> I don't think it's a problem in board dts to define board specific
> thing, like re-defining alias, and disabling any IP it not using.

First, why would you put it in the architecture include anyway? That
is really board-specific. That is like you would say, we enable all
devices and a board could potentially disable it. TBH it seems that
this will fit your reference boards and you don't care about the
other ones which uses that include.

In soc dtsi, this is giving default alias for two esdhc controllers.
This is not board specific.
That's natural esdhc0 is mmc0 and esdhc1 is mmc1.

How could this be not board specific if there are at least three
different use cases the board can choose from - and needs three
different configurations:

(1) eMMC at /dev/mmcblk0, SD card at /dev/mmcblk1
(2) SD card at /dev/mmcblk0, eMMC at /dev/mmcblk1
(3) no eMMC at all, SD card at /dev/mmcblk0

your include only support (1). If a board needs (2) or (3) it has to
override the configuration in the _common_ include.

And as Vladimir pointed out, what do you do if you just have the eMMC
on the LS1028A. It will be mmcblk1 unless you do something like the
following in the board dts:

mmc0 = &esdhc;
/delete-property/ mmc1;

That is really cumbersome, isnt it?

The soc dtsi gives default alias to make esdhc0 as mmc0, and esdhc1 as
mmc1, the use case just needs to consider which esdhc controller is
used. That's fixed index for it.
No matter how the board is designed, there are two esdhc controllers
in soc. It's probed as mmc0 and mmc1.
It's use case that should choose the right mmc device. It is not the
dts that should be changed to suit use case.
If the board owner insists to change alias to make esdhc1 as mmc0, I
think no problem. Just do it in board dts to override the default one.

Still, why would this be enforced in the common include? What is the
advnatage here? I only see disadvantages.

-michael