On 2 July 2012 14:13, Saugata Das <saugata.das@xxxxxxxxxx> wrote: > On 2 July 2012 12:26, Venkatraman S <svenkatr@xxxxxx> wrote: >> This reverts commit 3d93576e(skip card initialization if >> power class selection fails). >> Problem has been reported when this is used with eMMC4.41 >> card with Tegra Platform. Till the issue is root caused, >> bus width selection failure should not be treated as fatal. >> > > According to me, we need to find the root issue (which could be either > host not able to provide enough current or faulty eMMC). Do we know, > what could be the side effect of working on eMMC with less power than > what it has requested in PWR_CL ? > > One known issue with the current power class selection is that we do > not check the current requirement for a selected power class. It > assumes that host is able to provide the maximum current needed at > highest speed (> 800mA). Is it already checked on Tegra ? > and at the least bus width i.e 1 bit mode. >> Reported-by: Marc Dietrich <marvin24@xxxxxx> >> Signed-Off-by: Venkatraman S <svenkatr@xxxxxx> >> CC: Ulf Hansson <ulf.hansson@xxxxxxxxxxxxxx> >> CC: Subhash Jadavani <subhashj@xxxxxxxxxxxxxx> >> CC: Saugata Das <saugata.das@xxxxxxxxxx> >> --- >> drivers/mmc/core/mmc.c | 18 +++++++++++------- >> 1 file changed, 11 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >> index 258b203..4f4489a 100644 >> --- a/drivers/mmc/core/mmc.c >> +++ b/drivers/mmc/core/mmc.c >> @@ -717,10 +717,6 @@ static int mmc_select_powerclass(struct mmc_card *card, >> card->ext_csd.generic_cmd6_time); >> } >> >> - if (err) >> - pr_err("%s: power class selection for ext_csd_bus_width %d" >> - " failed\n", mmc_hostname(card->host), bus_width); >> - >> return err; >> } >> >> @@ -1104,7 +1100,9 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, >> EXT_CSD_BUS_WIDTH_8 : EXT_CSD_BUS_WIDTH_4; >> err = mmc_select_powerclass(card, ext_csd_bits, ext_csd); >> if (err) >> - goto err; >> + pr_warning("%s: power class selection to bus width %d" >> + " failed\n", mmc_hostname(card->host), >> + 1 << bus_width); >> } >> >> /* >> @@ -1136,7 +1134,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, >> err = mmc_select_powerclass(card, ext_csd_bits[idx][0], >> ext_csd); >> if (err) >> - goto err; >> + pr_warning("%s: power class selection to " >> + "bus width %d failed\n", >> + mmc_hostname(card->host), >> + 1 << bus_width); >> >> err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, >> EXT_CSD_BUS_WIDTH, >> @@ -1164,7 +1165,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, >> err = mmc_select_powerclass(card, ext_csd_bits[idx][1], >> ext_csd); >> if (err) >> - goto err; >> + pr_warning("%s: power class selection to " >> + "bus width %d ddr %d failed\n", >> + mmc_hostname(card->host), >> + 1 << bus_width, ddr); >> >> err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, >> EXT_CSD_BUS_WIDTH, >> -- >> 1.7.11.1.25.g0e18bef >> -- 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