Hi,

On 01/25/2018 07:51 PM, Jean-Jacques Hiblot wrote:
> From: Kishon Vijay Abraham I <kis...@ti.com>
> 
> Use the timing parameter set in the MMC core to set the
> mode in UHSMS  bit field. This is in preparation for
> adding HS200 support in omap hsmmc driver.
> 
> Signed-off-by: Kishon Vijay Abraham I <kis...@ti.com>
> Signed-off-by: Jean-Jacques Hiblot <jjhib...@ti.com>
> ---
> 
>  arch/arm/include/asm/omap_mmc.h | 12 ++++++++++-
>  drivers/mmc/omap_hsmmc.c        | 47 
> +++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 58 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/omap_mmc.h b/arch/arm/include/asm/omap_mmc.h
> index c4d326d..3f94f2e 100644
> --- a/arch/arm/include/asm/omap_mmc.h
> +++ b/arch/arm/include/asm/omap_mmc.h
> @@ -53,7 +53,8 @@ struct hsmmc {
>       unsigned int sysctl;            /* 0x12C */
>       unsigned int stat;              /* 0x130 */
>       unsigned int ie;                /* 0x134 */
> -     unsigned char res4[0x8];
> +     unsigned char res4[0x4];
> +     unsigned int ac12;              /* 0x13C */
>       unsigned int capa;              /* 0x140 */
>       unsigned char res5[0x10];
>       unsigned int admaes;            /* 0x154 */
> @@ -170,6 +171,15 @@ struct omap_hsmmc_plat {
>  #define IOV_3V0                              3000000
>  #define IOV_1V8                              1800000
>  
> +#define AC12_ET                              (1 << 22)
> +#define AC12_UHSMC_MASK                      (7 << 16)
> +#define AC12_UHSMC_DDR50             (4 << 16)
> +#define AC12_UHSMC_SDR104            (3 << 16)
> +#define AC12_UHSMC_SDR50             (2 << 16)
> +#define AC12_UHSMC_SDR25             (1 << 16)
> +#define AC12_UHSMC_SDR12             (0 << 16)
> +#define AC12_UHSMC_RES                       (0x7 << 16)

Using the BIT macro. (from checkpatch)

> +
>  /* Driver definitions */
>  #define MMCSD_SECTOR_SIZE            512
>  #define MMC_CARD                     0
> diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
> index a6a0df6..a65005f 100644
> --- a/drivers/mmc/omap_hsmmc.c
> +++ b/drivers/mmc/omap_hsmmc.c
> @@ -76,6 +76,7 @@ struct omap_hsmmc_data {
>  #endif
>  #if CONFIG_IS_ENABLED(DM_MMC)
>       uint iov;
> +     enum bus_mode mode;
>  #endif
>       u8 controller_flags;
>  #ifndef CONFIG_OMAP34XX
> @@ -258,6 +259,48 @@ void mmc_init_stream(struct hsmmc *mmc_base)
>  }
>  
>  #if CONFIG_IS_ENABLED(DM_MMC)
> +static void omap_hsmmc_set_timing(struct mmc *mmc)
> +{
> +     u32 val;
> +     struct hsmmc *mmc_base;
> +     struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
> +
> +     mmc_base = priv->base_addr;
> +
> +     val = readl(&mmc_base->ac12);
> +     val &= ~AC12_UHSMC_MASK;
> +     priv->mode = mmc->selected_mode;
> +
> +     switch (priv->mode) {
> +     case MMC_HS_200:
> +     case UHS_SDR104:
> +             val |= AC12_UHSMC_SDR104;
> +             break;
> +     case UHS_SDR50:
> +             val |= AC12_UHSMC_SDR50;
> +             break;
> +     case MMC_DDR_52:
> +     case UHS_DDR50:
> +             val |= AC12_UHSMC_DDR50;
> +             break;
> +     case SD_HS:
> +     case MMC_HS_52:
> +     case UHS_SDR25:
> +             val |= AC12_UHSMC_SDR25;
> +             break;
> +     case MMC_LEGACY:
> +     case MMC_HS:
> +     case SD_LEGACY:
> +     case UHS_SDR12:
> +             val |= AC12_UHSMC_SDR12;
> +             break;
> +     default:
> +             val |= AC12_UHSMC_RES;
> +             break;
> +     }
> +     writel(val, &mmc_base->ac12);
> +}
> +
>  static void omap_hsmmc_conf_bus_power(struct mmc *mmc)
>  {
>       struct hsmmc *mmc_base;
> @@ -926,6 +969,10 @@ static int omap_hsmmc_set_ios(struct udevice *dev)
>       if (priv->clock != mmc->clock)
>               omap_hsmmc_set_clock(mmc);
>  
> +#if CONFIG_IS_ENABLED(DM_MMC)
> +     if (priv->mode != mmc->selected_mode)
> +             omap_hsmmc_set_timing(mmc);
> +#endif
>       return 0;
>  }
>  
> 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to