Thread (17 messages) read the whole thread 17 messages, 8 authors, 2016-06-02

[PATCH 1/3] mmc: fix mmc mode selection for HS-DDR and higher

From: Marcel Ziswiler <hidden>
Date: 2016-06-01 09:19:54
Also in: linux-mmc, linux-tegra, lkml

On Sun, 2016-05-29 at 15:04 +0800, Chen-Yu Tsai wrote:
When IS_ERR_VALUE was removed from the mmc core code, it was replaced
with a simple not-zero check. This does not work, as the value
checked
is the return value for mmc_select_bus_width, which returns the set
bit width on success. This made eMMC modes higher than HS-DDR
unusable.

Fix this by checking for a positive return value instead.

Fixes: 287980e49ffc ("remove lots of IS_ERR_VALUE abuses")
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chen-Yu Tsai <redacted>
This fixes the following eMMC issue as experienced on Apalis T30 as
well:

[????7.194625] mmc1: mmc_select_hs200 failed, error 3
[????7.201549] mmc1: error 3 whilst initialising MMC card

Tested-by: Marcel Ziswiler <redacted>
quoted hunk ↗ jump to hunk
---
?drivers/mmc/core/mmc.c | 4 ++--
?1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index c984321d1881..aafb73d080ca 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1276,7 +1276,7 @@ static int mmc_select_hs200(struct mmc_card
*card)
?	?* switch to HS200 mode if bus width is set successfully.
?	?*/
?	err = mmc_select_bus_width(card);
-	if (!err) {
+	if (err > 0) {
?		val = EXT_CSD_TIMING_HS200 |
?		??????card->drive_strength << EXT_CSD_DRV_STR_SHIFT;
?		err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
@@ -1583,7 +1583,7 @@ static int mmc_init_card(struct mmc_host *host,
u32 ocr,
?	} else if (mmc_card_hs(card)) {
?		/* Select the desired bus width optionally */
?		err = mmc_select_bus_width(card);
-		if (!err) {
+		if (err > 0) {
?			err = mmc_select_hs_ddr(card);
?			if (err)
?				goto free_card;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help