RE: [PATCH] mmc: core: use 1.8v signling in ddr mode for some special host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: linux-mmc-owner@xxxxxxxxxxxxxxx
> [mailto:linux-mmc-owner@xxxxxxxxxxxxxxx] On Behalf Of Ulf Hansson
> Sent: Tuesday, August 12, 2014 9:21 PM
> To: Dong, Chuanxiao
> Cc: linux-mmc; chris@xxxxxxxxxx; Gao, Yunpeng
> Subject: Re: [PATCH] mmc: core: use 1.8v signling in ddr mode for some special
> host
> 
> On 1 August 2014 08:08, Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx> wrote:
> > Even eMMC card can support 3.3v to 1.2v vccq in DDR, but not all host
> > controller can support this, like some of the SDHCI host which connect
> > to an eMMC device. Some of these host controller still needs to use
> > 1.8v vccq for supporting DDR mode.
> >
> > If a host controller cannot support 3.3v for DDR, try 1.8v.
> >
> > Signed-off-by: Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx>
> > Signed-off-by: Yunpeng Gao <yunpeng.gao@xxxxxxxxx>
> > ---
> >  drivers/mmc/core/mmc.c   |   19 +++++++++++++++++++
> >  include/linux/mmc/host.h |    1 +
> >  2 files changed, 20 insertions(+)
> >
> > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index
> > 793c6f7..13a5b24 100644
> > --- a/drivers/mmc/core/mmc.c
> > +++ b/drivers/mmc/core/mmc.c
> > @@ -1000,6 +1000,25 @@ static int mmc_select_hs_ddr(struct mmc_card
> *card)
> >                         return err;
> >         }
> >
> > +       /*
> > +        * Even eMMC card can support 3.3v to 1.2v vccq, but not all
> > +        * host controller can support this, like some of the SDHCI
> > +        * controller which connect to an eMMC device. Some of these
> > +        * host controller still needs to use 1.8v vccq for supporting
> > +        * DDR mode.
> > +        *
> > +        * If a host controller cannot support 3.3v for DDR, try 1.8v
> > +        */
> > +       if (unlikely(host->caps2 & MMC_CAP2_NO_3_3V_DDR)) {
> > +               if (card->mmc_avail_type &
> EXT_CSD_CARD_TYPE_HS200_1_8V) {
> > +                       err = __mmc_set_signal_voltage(host,
> > +
> MMC_SIGNAL_VOLTAGE_180);
> > +                       if (err)
> > +                               return err;
> > +               } else
> > +                       return -EOPNOTSUPP;
> > +       }
> 
> I am wondering if we could try an another approach while changing signal
> voltage for (e)MMC. Simply start by trying with 1.2V, then 1.8V and then 3.3V.
> Obviously we shouldn't try with something that isn't supported, which
> card->mmc_avail_type tells us about.
> 
> I realize that it will mean a change in behaviour and depending on how hosts
> are handling signal voltage, this is a bit uncertain if it would work. Still I feel it
> would be the right approach. Can we give at shot?

I agree with you. Actually this is also out original approach. :) Given it we cannot test this approach on all host controllers, thus finally change to add a new CAP is to avoid impacting other host controllers.

I can post a v2 patch to implement this IO signal voltage changing sequence for review.

Thanks
Chuanxiao

> 
> Kind regards
> Uffe
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body
> of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at
> http://vger.kernel.org/majordomo-info.html
��.n��������+%������w��{.n�����{��i��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥





[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux