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...@nxp.com>; u-boot@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...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot