Hi Faiz, On Fri, Jun 07, 2019 at 09:07:32AM +0530, Lokesh Vutla wrote: > > > On 06/06/19 7:24 PM, Faiz Abbas wrote: > > The HOST_CONTROL2 register is a part of SDHC v3.00 and not just specific > > to arasan/zynq controllers. Add the same to sdhci.h. > > > > Also create a common API to set UHS timings in HOST_CONTROL2. > > > > Signed-off-by: Faiz Abbas <faiz_ab...@ti.com> > > Reviewed-by: Tom Rini <tr...@konsulko.com> > > Tested-by: Lokesh Vutla <lokeshvu...@ti.com> > > This is causing build failure for the following defconfig: > xilinx_zynqmp_zcu104_revA_defconfig > > ➜ u-boot git:(master) v78make xilinx_zynqmp_zcu104_revA_defconfig > HOSTCC scripts/basic/fixdep > HOSTCC scripts/kconfig/conf.o > YACC scripts/kconfig/zconf.tab.c > LEX scripts/kconfig/zconf.lex.c > HOSTCC scripts/kconfig/zconf.tab.o > v8 HOSTLD scripts/kconfig/conf > # > # configuration written to .config > # > ➜ u-boot git:(master) v78make -j4 -s > drivers/mmc/zynq_sdhci.c: In function ‘arasan_sdhci_execute_tuning’: > drivers/mmc/zynq_sdhci.c:97:27: error: ‘SDHCI_HOST_CTRL2’ undeclared (first > use > in this function); did you mean ‘SDHCI_HOST_CONTROL2’? > ctrl = sdhci_readw(host, SDHCI_HOST_CTRL2); > ^~~~~~~~~~~~~~~~ > SDHCI_HOST_CONTROL2 > drivers/mmc/zynq_sdhci.c:97:27: note: each undeclared identifier is reported > only once for each function it appears in > drivers/mmc/zynq_sdhci.c: In function ‘arasan_sdhci_set_control_reg’: > drivers/mmc/zynq_sdhci.c:182:27: error: ‘SDHCI_HOST_CTRL2’ undeclared (first > use > in this function); did you mean ‘SDHCI_HOST_CONTROL2’? > reg = sdhci_readw(host, SDHCI_HOST_CTRL2); > ^~~~~~~~~~~~~~~~ > SDHCI_HOST_CONTROL2 > drivers/mmc/zynq_sdhci.c:183:10: error: ‘SDHCI_18V_SIGNAL’ undeclared (first > use > in this function); did you mean ‘SDHCI_DIV_HI_MASK’? > reg |= SDHCI_18V_SIGNAL; > ^~~~~~~~~~~~~~~~ > SDHCI_DIV_HI_MASK > scripts/Makefile.build:278: recipe for target 'drivers/mmc/zynq_sdhci.o' > failed > make[2]: *** [drivers/mmc/zynq_sdhci.o] Error 1 > scripts/Makefile.build:432: recipe for target 'drivers/mmc' failed > make[1]: *** [drivers/mmc] Error 2 > Makefile:1582: recipe for target 'drivers' failed > make: *** [drivers] Error 2 > make: *** Waiting for unfinished jobs.... > > > Can you fix it and repost the series?
Can you re-create the issue? Just bubbling this up to the top as it is the first series needed for TI K3 support... Thanks, Andreas > > Thanks and regards, > Lokesh > > > > --- > > drivers/mmc/sdhci.c | 28 ++++++++++++++++++++++++++++ > > drivers/mmc/zynq_sdhci.c | 31 ++----------------------------- > > include/sdhci.h | 19 ++++++++++++++++++- > > 3 files changed, 48 insertions(+), 30 deletions(-) > > > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > > index 75e6567631..79edb18fe5 100644 > > --- a/drivers/mmc/sdhci.c > > +++ b/drivers/mmc/sdhci.c > > @@ -533,6 +533,34 @@ static void sdhci_set_power(struct sdhci_host *host, > > unsigned short power) > > sdhci_writeb(host, pwr, SDHCI_POWER_CONTROL); > > } > > > > +void sdhci_set_uhs_timing(struct sdhci_host *host) > > +{ > > + struct mmc *mmc = (struct mmc *)host->mmc; > > + u32 reg; > > + > > + reg = sdhci_readw(host, SDHCI_HOST_CONTROL2); > > + reg &= ~SDHCI_CTRL_UHS_MASK; > > + > > + switch (mmc->selected_mode) { > > + case UHS_SDR50: > > + case MMC_HS_52: > > + reg |= SDHCI_CTRL_UHS_SDR50; > > + break; > > + case UHS_DDR50: > > + case MMC_DDR_52: > > + reg |= SDHCI_CTRL_UHS_DDR50; > > + break; > > + case UHS_SDR104: > > + case MMC_HS_200: > > + reg |= SDHCI_CTRL_UHS_SDR104; > > + break; > > + default: > > + reg |= SDHCI_CTRL_UHS_SDR12; > > + } > > + > > + sdhci_writew(host, reg, SDHCI_HOST_CONTROL2); > > +} > > + > > #ifdef CONFIG_DM_MMC > > static int sdhci_set_ios(struct udevice *dev) > > { > > diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c > > index 08023783de..b39e1d7a19 100644 > > --- a/drivers/mmc/zynq_sdhci.c > > +++ b/drivers/mmc/zynq_sdhci.c > > @@ -48,11 +48,6 @@ static const u8 mode2timing[] = { > > [MMC_HS_200] = MMC_HS200_BUS_SPEED, > > }; > > > > -#define SDHCI_HOST_CTRL2 0x3E > > -#define SDHCI_CTRL2_MODE_MASK 0x7 > > -#define SDHCI_18V_SIGNAL 0x8 > > -#define SDHCI_CTRL_EXEC_TUNING 0x0040 > > -#define SDHCI_CTRL_TUNED_CLK 0x80 > > #define SDHCI_TUNING_LOOP_COUNT 40 > > > > static void arasan_zynqmp_dll_reset(struct sdhci_host *host, u8 deviceid) > > @@ -190,30 +185,8 @@ static void arasan_sdhci_set_control_reg(struct > > sdhci_host *host) > > } > > > > if (mmc->selected_mode > SD_HS && > > - mmc->selected_mode <= UHS_DDR50) { > > - reg = sdhci_readw(host, SDHCI_HOST_CTRL2); > > - reg &= ~SDHCI_CTRL2_MODE_MASK; > > - switch (mmc->selected_mode) { > > - case UHS_SDR12: > > - reg |= UHS_SDR12_BUS_SPEED; > > - break; > > - case UHS_SDR25: > > - reg |= UHS_SDR25_BUS_SPEED; > > - break; > > - case UHS_SDR50: > > - reg |= UHS_SDR50_BUS_SPEED; > > - break; > > - case UHS_SDR104: > > - reg |= UHS_SDR104_BUS_SPEED; > > - break; > > - case UHS_DDR50: > > - reg |= UHS_DDR50_BUS_SPEED; > > - break; > > - default: > > - break; > > - } > > - sdhci_writew(host, reg, SDHCI_HOST_CTRL2); > > - } > > + mmc->selected_mode <= UHS_DDR50) > > + sdhci_set_uhs_timing(host); > > } > > #endif > > > > diff --git a/include/sdhci.h b/include/sdhci.h > > index 3dcbc14965..01addb7a60 100644 > > --- a/include/sdhci.h > > +++ b/include/sdhci.h > > @@ -144,7 +144,23 @@ > > > > #define SDHCI_ACMD12_ERR 0x3C > > > > -/* 3E-3F reserved */ > > +#define SDHCI_HOST_CONTROL2 0x3E > > +#define SDHCI_CTRL_UHS_MASK 0x0007 > > +#define SDHCI_CTRL_UHS_SDR12 0x0000 > > +#define SDHCI_CTRL_UHS_SDR25 0x0001 > > +#define SDHCI_CTRL_UHS_SDR50 0x0002 > > +#define SDHCI_CTRL_UHS_SDR104 0x0003 > > +#define SDHCI_CTRL_UHS_DDR50 0x0004 > > +#define SDHCI_CTRL_HS400 0x0005 /* Non-standard */ > > +#define SDHCI_CTRL_VDD_180 0x0008 > > +#define SDHCI_CTRL_DRV_TYPE_MASK 0x0030 > > +#define SDHCI_CTRL_DRV_TYPE_B 0x0000 > > +#define SDHCI_CTRL_DRV_TYPE_A 0x0010 > > +#define SDHCI_CTRL_DRV_TYPE_C 0x0020 > > +#define SDHCI_CTRL_DRV_TYPE_D 0x0030 > > +#define SDHCI_CTRL_EXEC_TUNING 0x0040 > > +#define SDHCI_CTRL_TUNED_CLK 0x0080 > > +#define SDHCI_CTRL_PRESET_VAL_ENABLE 0x8000 > > > > #define SDHCI_CAPABILITIES 0x40 > > #define SDHCI_TIMEOUT_CLK_MASK 0x0000003F > > @@ -467,6 +483,7 @@ int sdhci_bind(struct udevice *dev, struct mmc *mmc, > > struct mmc_config *cfg); > > int add_sdhci(struct sdhci_host *host, u32 f_max, u32 f_min); > > #endif /* !CONFIG_BLK */ > > > > +void sdhci_set_uhs_timing(struct sdhci_host *host); > > #ifdef CONFIG_DM_MMC > > /* Export the operations to drivers */ > > int sdhci_probe(struct udevice *dev); > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot