Message ID | 508E11E8.2040609@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> > After power-on, must be ensured at least 74~80 clocks before sending any first command. > To ensure, it's good that dw_mci_setup_bus() is located at dw_mci_set_ios > instead of __dw_mci_start_request() After power-up, host driver sets 'DW_MMC_CARD_NEED_INIT' flag, right? And then, this flag help to add SDMMC_CMD_INIT flag into CMD, when __dw_mci_start_request is executed. 74~80 clocks is ensured with SDMMC_CMD_INIT regardless location change, isn't it? I mentioned this part in previous mail. Could you check it? Thanks, Seungwon Jeon > > Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > Acked-by: Seungwon Jeon <tgih.jun@samsung.com> > ------ > Changelog V2: > - Modified the commit-message. > --- > drivers/mmc/host/dw_mmc.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 4b2bedc..de79093 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -682,9 +682,6 @@ static void __dw_mci_start_request(struct dw_mci *host, > if (host->pdata->select_slot) > host->pdata->select_slot(slot->id); > > - /* Slot specific timing and width adjustment */ > - dw_mci_setup_bus(slot); > - > host->cur_slot = slot; > host->mrq = mrq; > > @@ -810,6 +807,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) > if (slot->host->drv_data->set_ios) > slot->host->drv_data->set_ios(slot->host, ios); > > + /* Slot specific timing and width adjustment */ > + dw_mci_setup_bus(slot); > + > switch (ios->power_mode) { > case MMC_POWER_UP: > set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags); > -- > 1.7.4.1 > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/29/2012 06:08 PM, Seungwon Jeon wrote: > Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> >> After power-on, must be ensured at least 74~80 clocks before sending any first command. >> To ensure, it's good that dw_mci_setup_bus() is located at dw_mci_set_ios >> instead of __dw_mci_start_request() > After power-up, host driver sets 'DW_MMC_CARD_NEED_INIT' flag, right? > And then, this flag help to add SDMMC_CMD_INIT flag into CMD, when __dw_mci_start_request is executed. > 74~80 clocks is ensured with SDMMC_CMD_INIT regardless location change, isn't it? > I mentioned this part in previous mail. Could you check it? According to eMMC spec, after power-on, need to wait for 74-clock before sending first command You can see code that after mmc_set_ios(), waiting for mmc_delay(10) into mmc_power_up(). (You can read the comment at mmc_power_up(), Maybe mmc_delay(10) didn't ensure the 74-clock). Best Regards, Jaehoon Chung > > Thanks, > Seungwon Jeon > >> >> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> >> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> >> Acked-by: Seungwon Jeon <tgih.jun@samsung.com> >> ------ >> Changelog V2: >> - Modified the commit-message. >> --- >> drivers/mmc/host/dw_mmc.c | 6 +++--- >> 1 files changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c >> index 4b2bedc..de79093 100644 >> --- a/drivers/mmc/host/dw_mmc.c >> +++ b/drivers/mmc/host/dw_mmc.c >> @@ -682,9 +682,6 @@ static void __dw_mci_start_request(struct dw_mci *host, >> if (host->pdata->select_slot) >> host->pdata->select_slot(slot->id); >> >> - /* Slot specific timing and width adjustment */ >> - dw_mci_setup_bus(slot); >> - >> host->cur_slot = slot; >> host->mrq = mrq; >> >> @@ -810,6 +807,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) >> if (slot->host->drv_data->set_ios) >> slot->host->drv_data->set_ios(slot->host, ios); >> >> + /* Slot specific timing and width adjustment */ >> + dw_mci_setup_bus(slot); >> + >> switch (ios->power_mode) { >> case MMC_POWER_UP: >> set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags); >> -- >> 1.7.4.1 >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >> the body of a message to majordomo@vger.kernel.org >> 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@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> wrote: > On 10/29/2012 06:08 PM, Seungwon Jeon wrote: > > Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> > >> After power-on, must be ensured at least 74~80 clocks before sending any first command. > >> To ensure, it's good that dw_mci_setup_bus() is located at dw_mci_set_ios > >> instead of __dw_mci_start_request() > > After power-up, host driver sets 'DW_MMC_CARD_NEED_INIT' flag, right? > > And then, this flag help to add SDMMC_CMD_INIT flag into CMD, when __dw_mci_start_request is > executed. > > 74~80 clocks is ensured with SDMMC_CMD_INIT regardless location change, isn't it? > > I mentioned this part in previous mail. Could you check it? > According to eMMC spec, after power-on, need to wait for 74-clock before sending first command > You can see code that after mmc_set_ios(), waiting for mmc_delay(10) into mmc_power_up(). > (You can read the comment at mmc_power_up(), Maybe mmc_delay(10) didn't ensure the 74-clock). There is 'send_initialization' bit in CMD register. If this bit set with CMD0, it will guarantee 80 clocks by host controller. Currently this is applied in driver. I agree change the location of dw_mci_setup_bus. But commit message seem not proper for it. Please let me know, if I miss something. Thanks, Seungwon Jeon > > Best Regards, > Jaehoon Chung > > > > Thanks, > > Seungwon Jeon > > > >> > >> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> > >> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > >> Acked-by: Seungwon Jeon <tgih.jun@samsung.com> > >> ------ > >> Changelog V2: > >> - Modified the commit-message. > >> --- > >> drivers/mmc/host/dw_mmc.c | 6 +++--- > >> 1 files changed, 3 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > >> index 4b2bedc..de79093 100644 > >> --- a/drivers/mmc/host/dw_mmc.c > >> +++ b/drivers/mmc/host/dw_mmc.c > >> @@ -682,9 +682,6 @@ static void __dw_mci_start_request(struct dw_mci *host, > >> if (host->pdata->select_slot) > >> host->pdata->select_slot(slot->id); > >> > >> - /* Slot specific timing and width adjustment */ > >> - dw_mci_setup_bus(slot); > >> - > >> host->cur_slot = slot; > >> host->mrq = mrq; > >> > >> @@ -810,6 +807,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) > >> if (slot->host->drv_data->set_ios) > >> slot->host->drv_data->set_ios(slot->host, ios); > >> > >> + /* Slot specific timing and width adjustment */ > >> + dw_mci_setup_bus(slot); > >> + > >> switch (ios->power_mode) { > >> case MMC_POWER_UP: > >> set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags); > >> -- > >> 1.7.4.1 > >> -- > >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > >> the body of a message to majordomo@vger.kernel.org > >> 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@vger.kernel.org > > 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@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Dear Seungwon, On 10/30/2012 02:27 PM, Seungwon Jeon wrote: > Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> wrote: >> On 10/29/2012 06:08 PM, Seungwon Jeon wrote: >>> Monday, October 29, 2012, Jaehoon Chung <jh80.chung@samsung.com> >>>> After power-on, must be ensured at least 74~80 clocks before sending any first command. >>>> To ensure, it's good that dw_mci_setup_bus() is located at dw_mci_set_ios >>>> instead of __dw_mci_start_request() >>> After power-up, host driver sets 'DW_MMC_CARD_NEED_INIT' flag, right? >>> And then, this flag help to add SDMMC_CMD_INIT flag into CMD, when __dw_mci_start_request is >> executed. >>> 74~80 clocks is ensured with SDMMC_CMD_INIT regardless location change, isn't it? >>> I mentioned this part in previous mail. Could you check it? >> According to eMMC spec, after power-on, need to wait for 74-clock before sending first command >> You can see code that after mmc_set_ios(), waiting for mmc_delay(10) into mmc_power_up(). >> (You can read the comment at mmc_power_up(), Maybe mmc_delay(10) didn't ensure the 74-clock). > There is 'send_initialization' bit in CMD register. > If this bit set with CMD0, it will guarantee 80 clocks by host controller. Is it guaranteed 80-clocks by host-controller? So I understood something wrong. My understanding is that "if flags is set, need to wait for 80-clock." If host-controller can ensure the 80-clock, location is not important. My point was just entire sequence with core.c and dw_mmc.c Anyway, thank you for review. If i miss other thing. let me know, plz. Best Regards, Jaehoon Chung > Currently this is applied in driver. > I agree change the location of dw_mci_setup_bus. > But commit message seem not proper for it. > Please let me know, if I miss something. > > Thanks, > Seungwon Jeon >> >> Best Regards, >> Jaehoon Chung >>> >>> Thanks, >>> Seungwon Jeon >>> >>>> >>>> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> >>>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> >>>> Acked-by: Seungwon Jeon <tgih.jun@samsung.com> >>>> ------ >>>> Changelog V2: >>>> - Modified the commit-message. >>>> --- >>>> drivers/mmc/host/dw_mmc.c | 6 +++--- >>>> 1 files changed, 3 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c >>>> index 4b2bedc..de79093 100644 >>>> --- a/drivers/mmc/host/dw_mmc.c >>>> +++ b/drivers/mmc/host/dw_mmc.c >>>> @@ -682,9 +682,6 @@ static void __dw_mci_start_request(struct dw_mci *host, >>>> if (host->pdata->select_slot) >>>> host->pdata->select_slot(slot->id); >>>> >>>> - /* Slot specific timing and width adjustment */ >>>> - dw_mci_setup_bus(slot); >>>> - >>>> host->cur_slot = slot; >>>> host->mrq = mrq; >>>> >>>> @@ -810,6 +807,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) >>>> if (slot->host->drv_data->set_ios) >>>> slot->host->drv_data->set_ios(slot->host, ios); >>>> >>>> + /* Slot specific timing and width adjustment */ >>>> + dw_mci_setup_bus(slot); >>>> + >>>> switch (ios->power_mode) { >>>> case MMC_POWER_UP: >>>> set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags); >>>> -- >>>> 1.7.4.1 >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >>>> the body of a message to majordomo@vger.kernel.org >>>> 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@vger.kernel.org >>> 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@vger.kernel.org >> 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@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 4b2bedc..de79093 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -682,9 +682,6 @@ static void __dw_mci_start_request(struct dw_mci *host, if (host->pdata->select_slot) host->pdata->select_slot(slot->id); - /* Slot specific timing and width adjustment */ - dw_mci_setup_bus(slot); - host->cur_slot = slot; host->mrq = mrq; @@ -810,6 +807,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) if (slot->host->drv_data->set_ios) slot->host->drv_data->set_ios(slot->host, ios); + /* Slot specific timing and width adjustment */ + dw_mci_setup_bus(slot); + switch (ios->power_mode) { case MMC_POWER_UP: set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags);