Hi, 2017-05-13 22:51 GMT+09:00 Marek Vasut <marek.va...@gmail.com>: > From: Kouei Abe <kouei.abe...@renesas.com> > > Renesas SDHI SD/MMC driver did not support MMC version 5.0 devices. > This adds MMC version 5.0 device support. > > Signed-off-by: Kouei Abe <kouei.abe...@renesas.com> > Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama...@renesas.com> > Signed-off-by: Marek Vasut <marek.vasut+rene...@gmail.com> > Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama...@renesas.com> > Cc: Nobuhiro Iwamatsu <iwama...@nigauri.org> > Cc: Jaehoon Chung <jh80.ch...@samsung.com>
Reviewed-by: Nobuhiro Iwamatsu <iwama...@nigauri.org> > --- > arch/arm/mach-rmobile/include/mach/sh_sdhi.h | 7 ++++++- > drivers/mmc/sh_sdhi.c | 24 +++++++++++++++++++----- > 2 files changed, 25 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/mach-rmobile/include/mach/sh_sdhi.h > b/arch/arm/mach-rmobile/include/mach/sh_sdhi.h > index a5ea45b707..1fb0648b12 100644 > --- a/arch/arm/mach-rmobile/include/mach/sh_sdhi.h > +++ b/arch/arm/mach-rmobile/include/mach/sh_sdhi.h > @@ -50,8 +50,10 @@ > /* SDHI CMD VALUE */ > #define CMD_MASK 0x0000ffff > #define SDHI_APP 0x0040 > +#define SDHI_MMC_SEND_OP_COND 0x0701 > #define SDHI_SD_APP_SEND_SCR 0x0073 > #define SDHI_SD_SWITCH 0x1C06 > +#define SDHI_MMC_SEND_EXT_CSD 0x1C08 > > /* SDHI_PORTSEL */ > #define USE_1PORT (1 << 8) /* 1 port */ > @@ -120,7 +122,10 @@ > #define CLK_ENABLE (1 << 8) > > /* SDHI_OPTION */ > -#define OPT_BUS_WIDTH_1 (1 << 15) /* bus width > = 1 bit */ > +#define OPT_BUS_WIDTH_M (5 << 13) /* 101b > (15-13bit) */ > +#define OPT_BUS_WIDTH_1 (4 << 13) /* bus width > = 1 bit */ > +#define OPT_BUS_WIDTH_4 (0 << 13) /* bus width > = 4 bit */ > +#define OPT_BUS_WIDTH_8 (1 << 13) /* bus width > = 8 bit */ > > /* SDHI_ERR_STS1 */ > #define ERR_STS1_CRC_ERROR ((1 << 11) | (1 << 10) | (1 << 9) | \ > diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c > index d1dd0f0fc3..c64beb6e2a 100644 > --- a/drivers/mmc/sh_sdhi.c > +++ b/drivers/mmc/sh_sdhi.c > @@ -489,6 +489,13 @@ static unsigned short sh_sdhi_set_cmd(struct > sh_sdhi_host *host, > else /* SD_SWITCH */ > opc = SDHI_SD_SWITCH; > break; > + case MMC_CMD_SEND_OP_COND: > + opc = SDHI_MMC_SEND_OP_COND; > + break; > + case MMC_CMD_SEND_EXT_CSD: > + if (data) > + opc = SDHI_MMC_SEND_EXT_CSD; > + break; > default: > break; > } > @@ -513,6 +520,7 @@ static unsigned short sh_sdhi_data_trans(struct > sh_sdhi_host *host, > case MMC_CMD_READ_SINGLE_BLOCK: > case SDHI_SD_APP_SEND_SCR: > case SDHI_SD_SWITCH: /* SD_SWITCH */ > + case SDHI_MMC_SEND_EXT_CSD: > ret = sh_sdhi_single_read(host, data); > break; > default: > @@ -648,12 +656,18 @@ static int sh_sdhi_set_ios(struct mmc *mmc) > if (ret) > return -EINVAL; > > - if (mmc->bus_width == 4) > - sh_sdhi_writew(host, SDHI_OPTION, ~OPT_BUS_WIDTH_1 & > - sh_sdhi_readw(host, SDHI_OPTION)); > + if (mmc->bus_width == 8) > + sh_sdhi_writew(host, SDHI_OPTION, > + OPT_BUS_WIDTH_8 | (~OPT_BUS_WIDTH_M & > + sh_sdhi_readw(host, SDHI_OPTION))); > + else if (mmc->bus_width == 4) > + sh_sdhi_writew(host, SDHI_OPTION, > + OPT_BUS_WIDTH_4 | (~OPT_BUS_WIDTH_M & > + sh_sdhi_readw(host, SDHI_OPTION))); > else > - sh_sdhi_writew(host, SDHI_OPTION, OPT_BUS_WIDTH_1 | > - sh_sdhi_readw(host, SDHI_OPTION)); > + sh_sdhi_writew(host, SDHI_OPTION, > + OPT_BUS_WIDTH_1 | (~OPT_BUS_WIDTH_M & > + sh_sdhi_readw(host, SDHI_OPTION))); > > debug("clock = %d, buswidth = %d\n", mmc->clock, mmc->bus_width); > > -- > 2.11.0 > -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot