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

Y.b. Lu yangbo.lu at nxp.com
Tue Nov 24 06:15:19 EST 2020


Hi Vladimir,

> -----Original Message-----
> From: Vladimir Oltean <vladimir.oltean at nxp.com>
> Sent: Tuesday, November 24, 2020 6:31 PM
> To: Y.b. Lu <yangbo.lu at nxp.com>
> Cc: Michael Walle <michael at walle.cc>; Shawn Guo <shawnguo at kernel.org>;
> Leo Li <leoyang.li at nxp.com>; Rob Herring <robh+dt at kernel.org>;
> linux-arm-kernel at lists.infradead.org; devicetree at vger.kernel.org; Adrian
> Hunter <adrian.hunter at intel.com>; Ulf Hansson <ulf.hansson at linaro.org>;
> linux-mmc at vger.kernel.org; linux-kernel at vger.kernel.org; Ashish Kumar
> <ashish.kumar at nxp.com>
> Subject: Re: [PATCH] arm64: dts: ls1028a: make the eMMC and SD card
> controllers use fixed indices
> 
> Hi Yangbo,
> 
> On Tue, Nov 24, 2020 at 09:02:57AM +0000, Y.b. Lu wrote:
> > > Am 2020-11-24 09:47, schrieb Y.b. Lu:
> > > > Hi Michael,
> > > >> > 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
> >
> > Not matter it's SD card or eMMC card, if it's on esdhc0, use /dev/mmcblk0.
> > Not matter it's SD card or eMMC card, if it's on esdhc1, use /dev/mmcblk1.
> 
> With the note here that you can't actually connect an SD card to eSDHC1,
> due to the lack of pins for CD/WP.

CD/WP is not essential to support SD card. Both SD/eMMC are supported on both eSDHC controllers.

> 
> > It's not related to board and card type, it's only related to esdhc interface in
> use.
> 
> I understand the hardware-centric view that you are coming from. It may
> be natural for you that eSDHC0 is for the SD card and eSDHC1 is for eMMC,
> because these are the designations in the SoC.

Right, from hardware-centric view, it's natural esdhc0 interface is mmc0, and esdhc1 is mmc1.
That's what I explained for why I added the alias in common soc dtsi.


> 
> But it is also natural for a customer to define the indices according to
> their schematics and what they use. If, say, there is a board that only
> uses eMMC, I would expect that for the lay person, no one would even bat
> an eye if that was called /dev/mmcblk0. Whereas, if it was called
> /dev/mmcblk1 (and there was no /dev/mmcblk0 in the system), maybe you'd
> have to come up with some explanations which could be avoided.

To make a product friendly to users, it makes sense to define different alias for controller in board dts.
But it's not the reason to remove the default/natural alias in soc dtsi for two controllers.
What needs to be done after removing them? Add the same to all other board files?

This is just my opinion. I don't decide on this:)

> 
> I am only a passerby when it comes to the MMC subsystem. But in
> networking/DSA, it is frequent that the board designer comes up with
> their own numbering scheme, which has nothing to do with the numbering
> of the chip. Consider this extreme case from
> arch/arm/boot/dts/ls1021a-tsn.dts:
> 
> 	sja1105: ethernet-switch at 1 {
> 		ports {
> 			port at 0 {
> 				/* ETH5 written on chassis */
> 				label = "swp5";
> 			};
> 
> 			port at 1 {
> 				/* ETH2 written on chassis */
> 				label = "swp2";
> 			};
> 
> 			port at 2 {
> 				/* ETH3 written on chassis */
> 				label = "swp3";
> 			};
> 
> 			port at 3 {
> 				/* ETH4 written on chassis */
> 				label = "swp4";
> 			};
> 		};
> 	};
> 
> You just have to go along with how the hardware is being used in the
> product. I could have insisted that hardware switch port 0 is named as
> swp0, but that would have not helped anybody.






More information about the linux-arm-kernel mailing list