RE: UHS-I bus speed mode should be set last in UHS initialization

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

 



Hi Philip,

Can you please confirm what should be the correct implementation?

Thanks,
Arindam

> -----Original Message-----
> From: subhashj@xxxxxxxxxxxxxx [mailto:subhashj@xxxxxxxxxxxxxx]
> Sent: Wednesday, June 15, 2011 5:28 AM
> To: Nath, Arindam
> Cc: 'Philip Rakity'; 'zhangfei gao'; cjb@xxxxxxxxxx; linux-
> mmc@xxxxxxxxxxxxxxx; Lu, Aaron
> Subject: RE: UHS-I bus speed mode should be set last in UHS
> initialization
> 
> Hi Arindam,
> 
> > -----Original Message-----
> > From: linux-mmc-owner@xxxxxxxxxxxxxxx [mailto:linux-mmc-
> > owner@xxxxxxxxxxxxxxx] On Behalf Of Nath, Arindam
> > Sent: Tuesday, June 14, 2011 12:00 AM
> > To: subhashj@xxxxxxxxxxxxxx
> > Cc: Philip Rakity; zhangfei gao; cjb@xxxxxxxxxx; linux-
> > mmc@xxxxxxxxxxxxxxx; Lu, Aaron
> > Subject: RE: UHS-I bus speed mode should be set last in UHS
> > initialization
> >
> > Adding Philip and Zhangfei.
> >
> > Hi Subhash,
> >
> > Does your controller follow some non-standard steps for
> initialization?
> > I referred to Figure 3-14, section 3.9.4 of Physical Layer Spec
> v3.01,
> > and it shows the order, setting Driver Strength Select, Bus Speed
> Mode,
> > and then Current Limit. So please confirm back.
> 
> Sorry, I don't know what do you mean by non standard steps for
> initialization. Nowhere in v3.01 spec, it is mentioned that Bus speed
> mode
> **must** be set before current limit. Figure 3-14 also doesn't indicate
> this.
> 
> If you set the bus speed mode in sd_set_bus_speed_mode(), you are
> changing
> the host controller timings as well and if it's SDR50/SDR104 mode, then
> immediately after setting the host controller timing mode, we have to
> execute tuning sequence but here before executing tuning sequence, you
> are
> sending the CMD6 which involves the read data transfer from card which
> is
> bound to fail without tuning and it does fail with our host controller.
> 
> Do let me know if this explanation make sense.
> 
> Regards,
> Subhash
> 
> >
> > Thanks,
> > Arindam
> >
> > > -----Original Message-----
> > > From: subhashj@xxxxxxxxxxxxxx [mailto:subhashj@xxxxxxxxxxxxxx]
> > > Sent: Tuesday, June 14, 2011 1:27 AM
> > > To: Nath, Arindam
> > > Subject: FW: UHS-I bus speed mode should be set last in UHS
> > > initialization
> > >
> > > Hi Arindam,
> > >
> > > Does this change make sense for you? If yes, then I can go ahead
> and
> > > post a
> > > patch for this.
> > >
> > > Regards,
> > > Subhash
> > >
> > > -----Original Message-----
> > > From: linux-mmc-owner@xxxxxxxxxxxxxxx
> > > [mailto:linux-mmc-owner@xxxxxxxxxxxxxxx] On Behalf Of Subhash
> > Jadavani
> > > Sent: Monday, June 06, 2011 3:44 PM
> > > To: linux-mmc@xxxxxxxxxxxxxxx
> > > Subject: UHS-I bus speed mode should be set last in UHS
> > initialization
> > >
> > > Hi Chris, Arindam,
> > >
> > > mmc_sd_init_uhs_card function sets the driver type, current limit
> and
> > > bus
> > > speed mode on card as well as on host controller side. Currently
> bus
> > > speed
> > > mode is set by sending CMD6 to card and setting timing mode in host
> > > controller and then before initiating tuning sequence, it also
> tries
> > to
> > > set current limit by sending CMD6 to card which fails on our host
> > > controller (due to data CRC or timeout errors) if bus speed mode is
> > > SDR50/SDR104 mode.
> > >
> > > So basically bus speed mode should be set only after current limit
> is
> > > set
> > > in the card and immediately after setting the bus speed mode,
> tuning
> > > sequence should be initiated. So following changes is needed. If it
> > > looks
> > > fine then I can send you this change in patch.
> > >
> > > diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index
> > > 0da37eb..19634d5 100644
> > > --- a/drivers/mmc/core/sd.c
> > > +++ b/drivers/mmc/core/sd.c
> > > @@ -610,13 +610,13 @@ static int mmc_sd_init_uhs_card(struct
> mmc_card
> > > *card)
> > >         if (err)
> > >                 goto out;
> > >
> > > -       /* Set bus speed mode of the card */
> > > -       err = sd_set_bus_speed_mode(card, status);
> > > +       /* Set current limit for the card */
> > > +       err = sd_set_current_limit(card, status);
> > >         if (err)
> > >                 goto out;
> > >
> > > -       /* Set current limit for the card */
> > > -       err = sd_set_current_limit(card, status);
> > > +       /* Set bus speed mode of the card */
> > > +       err = sd_set_bus_speed_mode(card, status);
> > >         if (err)
> > >                 goto out;
> > >
> > > Regards,
> > > Subhash
> > >
> > > --
> > > Sent by a consultant of the Qualcomm Innovation Center, Inc.
> > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
> > > Forum.
> > >
> > >
> > > --
> > > 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
> > >
> >
> >
> > --
> > 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
> 


--
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


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

  Powered by Linux