[U-Boot] [PATCH] armv8: ls1088ardb: support force SDHC mode by hwconfig

Y.b. Lu yangbo.lu at nxp.com
Thu Nov 30 04:22:19 UTC 2017


Hi York,

See my comments inline.
Thanks a lot.

Best regards,
Yangbo Lu

> -----Original Message-----
> From: York Sun
> Sent: 2017年11月30日 3:43
> To: Y.b. Lu <yangbo.lu at nxp.com>; u-boot at lists.denx.de
> Subject: Re: [PATCH] armv8: ls1088ardb: support force SDHC mode by
> hwconfig
> 
> On 11/26/2017 11:59 PM, Yangbo Lu wrote:
> > The BRDCFG5[SPISDHC] register field of Qixis device is used to control
> > SPI and SDHC signal routing.
> >
> > 10 = Force SDHC Mode
> >   - SPI_CS[0] is routed to CPLD for SDHC_VS use.
> >   - SPI_CS[1] is unused.
> >   - SPI_CS[2:3] are routed to the TDMRiser slot.
> >
> > 11 = Force eMMC Mode
> >   - SPI_CS[0:3] are routed to the eMMC card.
> >
> > 0X = Auto Mode
> >   - If SDHC_CS_B=0 (SDHC card installed): Use SDHC mode
> >     described above.
> >   - Else SDHC_CS_B=1 (no SDHC card installed): Use eMMC
> >     mode described above.
> >
> > In default the hardware uses auto mode, but sometimes we need to use
> > force SDHC mode to support SD card hotplug, or SD sleep waking up in
> > kernel. This patch is to support force SDHC mode by hwconfig.
> 
> 
> Help me understand this. When you eject the SD card, does the CPLD logic
> detect the SDHC_CS_B and change the signal routing? Are you trying to fix the
> signal routing by forcing the mode?
> 

[Y.b. Lu] In default auto mode, signals would be switched automatically. (Actually I found signals routing issue, I will explain it later.)
When there is a SD card hotplug, it means there also is a eMMC hotplug.
For kernel, there is no way to detect eMMC hotplug which is a non-removable device. So kernel couldn’t handle SD/eMMC automatic switching case.
With the auto mode, we couldn’t support SD hotplug and SD waking up for sleep such cases.
So I added this hwconfig to use force SD mode.

Let's see the signals routing issue I mentioned above.
Actually I found SDHC_CD signal and SDHC_WP signal were mixed up in auto mode.
The SDHC_CD signal of chip was routed to SDHC_WP signal of card slot in default auto mode. The SDHC_WP couldn’t work as expect either.
In force SD mode, the SDHC_CD worked well. I will add you into the email about this issue.

Anyway, hwconfig for force SD mode enabling is needed.
Thanks a lot.

> >
> > Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
> > ---
> >  board/freescale/ls1088a/ls1088a.c       | 18 ++++++++++++++++++
> >  board/freescale/ls1088a/ls1088a_qixis.h |  6 ++++++
> >  include/configs/ls1088ardb.h            |  2 ++
> >  3 files changed, 26 insertions(+)
> >
> > diff --git a/board/freescale/ls1088a/ls1088a.c
> > b/board/freescale/ls1088a/ls1088a.c
> > index 96d9ae7f1d..60f40edb5a 100644
> > --- a/board/freescale/ls1088a/ls1088a.c
> > +++ b/board/freescale/ls1088a/ls1088a.c
> > @@ -18,6 +18,7 @@
> >  #include <environment.h>
> >  #include <asm/arch-fsl-layerscape/soc.h>  #include <asm/arch/ppa.h>
> > +#include <hwconfig.h>
> >
> >  #include "../common/qixis.h"
> >  #include "ls1088a_qixis.h"
> > @@ -296,6 +297,23 @@ void board_retimer_init(void)
> >  	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
> >  }
> >
> > +#ifdef CONFIG_MISC_INIT_R
> > +int misc_init_r(void)
> > +{
> > +#ifdef CONFIG_TARGET_LS1088ARDB
> > +	u8 brdcfg5;
> > +
> > +	if (hwconfig("esdhc-force-sd")) {
> > +		brdcfg5 = QIXIS_READ(brdcfg[5]);
> > +		brdcfg5 &= ~BRDCFG5_SPISDHC_MASK;
> > +		brdcfg5 |= BRDCFG5_FORCE_SD;
> > +		QIXIS_WRITE(brdcfg[5], brdcfg5);
> > +	}
> > +#endif
> 
> Would it be appropriate to check if eMMC is used before taking the forced
> value?
> 
> York


More information about the U-Boot mailing list