Hi Jaehoon,

> -----Original Message-----
> From: Jaehoon Chung <jh80.ch...@samsung.com>
> Sent: Tuesday, August 25, 2020 6:54 AM
> To: Y.b. Lu <yangbo...@nxp.com>; u-boot@lists.denx.de; Peng Fan
> <peng....@nxp.com>; Priyanka Jain <priyanka.j...@nxp.com>
> Subject: Re: [v3, 06/11] mmc: add a mmc_hs400_prepare_ddr() interface
> 
> On 7/23/20 1:30 PM, Yangbo Lu wrote:
> > Add a mmc_hs400_prepare_ddr() interface for controllers
> > which needs preparation before switching to DDR mode for
> > HS400 mode.
> >
> > Signed-off-by: Yangbo Lu <yangbo...@nxp.com>
> > ---
> > Changes for v2:
> >     - None.
> > Changes for v3:
> >     - None.
> > ---
> >  drivers/mmc/mmc-uclass.c | 15 +++++++++++++++
> >  drivers/mmc/mmc.c        |  2 ++
> >  include/mmc.h            | 15 ++++++++++++++-
> >  3 files changed, 31 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/mmc-uclass.c b/drivers/mmc/mmc-uclass.c
> > index b9f0880..240b205 100644
> > --- a/drivers/mmc/mmc-uclass.c
> > +++ b/drivers/mmc/mmc-uclass.c
> > @@ -141,6 +141,21 @@ int mmc_set_enhanced_strobe(struct mmc *mmc)
> >  }
> >  #endif
> >
> > +int dm_mmc_hs400_prepare_ddr(struct udevice *dev)
> > +{
> > +   struct dm_mmc_ops *ops = mmc_get_ops(dev);
> > +
> > +   if (ops->hs400_prepare_ddr)
> > +           return ops->hs400_prepare_ddr(dev);
> > +
> > +   return 0;
> > +}
> > +
> > +int mmc_hs400_prepare_ddr(struct mmc *mmc)
> > +{
> > +   return dm_mmc_hs400_prepare_ddr(mmc->dev);
> > +}
> > +
> >  int dm_mmc_host_power_cycle(struct udevice *dev)
> >  {
> >     struct dm_mmc_ops *ops = mmc_get_ops(dev);
> > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> > index f020a8e..935fa72 100644
> > --- a/drivers/mmc/mmc.c
> > +++ b/drivers/mmc/mmc.c
> > @@ -1992,6 +1992,8 @@ static int mmc_select_hs400(struct mmc *mmc)
> >     /* Set back to HS */
> >     mmc_set_card_speed(mmc, MMC_HS, true);
> >
> > +   mmc_hs400_prepare_ddr(mmc);
> 
> not need to get the return value? you have defined
> mmc_hs400_prepare_ddr() as int return type.

I will add returning checking.
Thanks!

> 
> Best Regards,
> Jaehoon Chung
> 
> > +
> >     err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL,
> EXT_CSD_BUS_WIDTH,
> >                      EXT_CSD_BUS_WIDTH_8 | EXT_CSD_DDR_FLAG);
> >     if (err)
> > diff --git a/include/mmc.h b/include/mmc.h
> > index 2399cc2..659df75 100644
> > --- a/include/mmc.h
> > +++ b/include/mmc.h
> > @@ -513,6 +513,14 @@ struct dm_mmc_ops {
> >      * @return maximum number of blocks for this transfer
> >      */
> >     int (*get_b_max)(struct udevice *dev, void *dst, lbaint_t blkcnt);
> > +
> > +   /**
> > +    * hs400_prepare_ddr - prepare to switch to DDR mode
> > +    *
> > +    * @dev:        Device to check
> > +    * @return 0 if success, -ve on error
> > +    */
> > +   int (*hs400_prepare_ddr)(struct udevice *dev);
> >  };
> >
> >  #define mmc_get_ops(dev)        ((struct dm_mmc_ops
> *)(dev)->driver->ops)
> > @@ -540,7 +548,7 @@ int mmc_host_power_cycle(struct mmc *mmc);
> >  int mmc_deferred_probe(struct mmc *mmc);
> >  int mmc_reinit(struct mmc *mmc);
> >  int mmc_get_b_max(struct mmc *mmc, void *dst, lbaint_t blkcnt);
> > -
> > +int mmc_hs400_prepare_ddr(struct mmc *mmc);
> >  #else
> >  struct mmc_ops {
> >     int (*send_cmd)(struct mmc *mmc,
> > @@ -552,6 +560,11 @@ struct mmc_ops {
> >     int (*host_power_cycle)(struct mmc *mmc);
> >     int (*get_b_max)(struct mmc *mmc, void *dst, lbaint_t blkcnt);
> >  };
> > +
> > +static inline int mmc_hs400_prepare_ddr(struct mmc *mmc)
> > +{
> > +   return 0;
> > +}
> >  #endif
> >
> >  struct mmc_config {
> >

Reply via email to