Commit 4b75bffc authored by Andrew Gabbasov's avatar Andrew Gabbasov Committed by Ulf Hansson

mmc: core: Fix error paths and messages in mmc_init_card

In mmc_init_card function some of the branches in error handling paths
go to "err" label, which skips removing of newly allocated card structure,
that will actually not be used. Fix that by using proper "free_card" label.

Also, some messages in these branches are reported as warnings,
although the operation processing is not continued. Change these
messages to error level.
Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent fc75b708
...@@ -998,7 +998,7 @@ static int mmc_select_hs_ddr(struct mmc_card *card) ...@@ -998,7 +998,7 @@ static int mmc_select_hs_ddr(struct mmc_card *card)
ext_csd_bits, ext_csd_bits,
card->ext_csd.generic_cmd6_time); card->ext_csd.generic_cmd6_time);
if (err) { if (err) {
pr_warn("%s: switch to bus width %d ddr failed\n", pr_err("%s: switch to bus width %d ddr failed\n",
mmc_hostname(host), 1 << bus_width); mmc_hostname(host), 1 << bus_width);
return err; return err;
} }
...@@ -1069,7 +1069,7 @@ static int mmc_select_hs400(struct mmc_card *card) ...@@ -1069,7 +1069,7 @@ static int mmc_select_hs400(struct mmc_card *card)
card->ext_csd.generic_cmd6_time, card->ext_csd.generic_cmd6_time,
true, true, true); true, true, true);
if (err) { if (err) {
pr_warn("%s: switch to high-speed from hs200 failed, err:%d\n", pr_err("%s: switch to high-speed from hs200 failed, err:%d\n",
mmc_hostname(host), err); mmc_hostname(host), err);
return err; return err;
} }
...@@ -1079,7 +1079,7 @@ static int mmc_select_hs400(struct mmc_card *card) ...@@ -1079,7 +1079,7 @@ static int mmc_select_hs400(struct mmc_card *card)
EXT_CSD_DDR_BUS_WIDTH_8, EXT_CSD_DDR_BUS_WIDTH_8,
card->ext_csd.generic_cmd6_time); card->ext_csd.generic_cmd6_time);
if (err) { if (err) {
pr_warn("%s: switch to bus width for hs400 failed, err:%d\n", pr_err("%s: switch to bus width for hs400 failed, err:%d\n",
mmc_hostname(host), err); mmc_hostname(host), err);
return err; return err;
} }
...@@ -1089,7 +1089,7 @@ static int mmc_select_hs400(struct mmc_card *card) ...@@ -1089,7 +1089,7 @@ static int mmc_select_hs400(struct mmc_card *card)
card->ext_csd.generic_cmd6_time, card->ext_csd.generic_cmd6_time,
true, true, true); true, true, true);
if (err) { if (err) {
pr_warn("%s: switch to hs400 failed, err:%d\n", pr_err("%s: switch to hs400 failed, err:%d\n",
mmc_hostname(host), err); mmc_hostname(host), err);
return err; return err;
} }
...@@ -1232,7 +1232,7 @@ static int mmc_hs200_tuning(struct mmc_card *card) ...@@ -1232,7 +1232,7 @@ static int mmc_hs200_tuning(struct mmc_card *card)
mmc_host_clk_release(host); mmc_host_clk_release(host);
if (err) if (err)
pr_warn("%s: tuning execution failed\n", pr_err("%s: tuning execution failed\n",
mmc_hostname(host)); mmc_hostname(host));
} }
...@@ -1458,18 +1458,18 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, ...@@ -1458,18 +1458,18 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
if (mmc_card_hs200(card)) { if (mmc_card_hs200(card)) {
err = mmc_hs200_tuning(card); err = mmc_hs200_tuning(card);
if (err) if (err)
goto err; goto free_card;
err = mmc_select_hs400(card); err = mmc_select_hs400(card);
if (err) if (err)
goto err; goto free_card;
} else if (mmc_card_hs(card)) { } else if (mmc_card_hs(card)) {
/* Select the desired bus width optionally */ /* Select the desired bus width optionally */
err = mmc_select_bus_width(card); err = mmc_select_bus_width(card);
if (!IS_ERR_VALUE(err)) { if (!IS_ERR_VALUE(err)) {
err = mmc_select_hs_ddr(card); err = mmc_select_hs_ddr(card);
if (err) if (err)
goto err; goto free_card;
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment