Skip to contentSkip to conversation

Exynos4412: pinmux: disable pull for MMC pins

PATCH New Przemyslaw Marczak 4 participants 8 messages Oct 28, 2015 – Nov 2, 2015

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 Exynos4412: pinmux: disable pull for MMC pins

There are 8 pins for SD card in Exynos, but the MUX was configured only for 7, since the one was used for card detection. This caused the pin's pull wrong configuration.

This commit fixes this and the card detect can work properly, after call this function.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 arch/arm/mach-exynos/pinmux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-exynos/pinmux.c +1 -1
index 179b294..925bd0a 100644
@@ -737,10 +737,10 @@ static int exynos4x12_mmc_config(int peripheral, int flags)
 		return -1;
 	}
 	for (i = start; i < (start + 7); i++) {
+		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		if (i == (start + 2))
 			continue;
 		gpio_cfg_pin(i,  func);
-		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		gpio_set_drv(i, S5P_GPIO_DRV_4X);
 	}
 	if (flags & PINMUX_FLAG_8BIT_MODE) {
Signature · 1 line
1.9.1
#1 lore raw

PATCH 2/2 s5p sdhci: call pinmux for card's gpio pins before use them

The SD card detection depends on checking one pin state. But the pin was configured after card was detected, which is wrong.

This commit fixes this, by moving call to pinmux before use the pin.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 drivers/mmc/s5p_sdhci.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/mmc/s5p_sdhci.c +7 -7
index 15ecfee..44353c7 100644
@@ -106,6 +106,12 @@ static int do_sdhci_init(struct sdhci_host *host)
 	flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
 	dev_id = host->index + PERIPH_ID_SDMMC0;
 
+	ret = exynos_pinmux_config(dev_id, flag);
+	if (ret) {
+		printf("external SD not configured\n");
+		return ret;
+	}
+
 	if (dm_gpio_is_valid(&host->pwr_gpio)) {
 		dm_gpio_set_value(&host->pwr_gpio, 1);
 		ret = exynos_pinmux_config(dev_id, flag);
@@ -121,12 +127,6 @@ static int do_sdhci_init(struct sdhci_host *host)
 			debug("no SD card detected (%d)\n", ret);
 			return -ENODEV;
 		}
-
-		ret = exynos_pinmux_config(dev_id, flag);
-		if (ret) {
-			printf("external SD not configured\n");
-			return ret;
-		}
 	}
 
 	return s5p_sdhci_core_init(host);
@@ -193,7 +193,7 @@ static int process_nodes(const void *blob, int node_list[], int count)
 		}
 
 		ret = do_sdhci_init(host);
-		if (ret) {
+		if (ret && ret != -ENODEV) {
 			printf("%s: failed to initialize dev %d (%d)\n", __func__, i, ret);
 			failed++;
 		}
Signature · 1 line
1.9.1
#2 lore raw

PATCH 2/2 s5p sdhci: call pinmux for card's gpio pins before use them

Hi,

Looks good to me.

Best Regards,
Jaehoon Chung

Quoted 57 lines · Przemyslaw Marczak

The SD card detection depends on checking one pin state. But the pin was configured after card was detected, which is wrong.

This commit fixes this, by moving call to pinmux before use the pin.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 drivers/mmc/s5p_sdhci.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/mmc/s5p_sdhci.c +7 -7
index 15ecfee..44353c7 100644
@@ -106,6 +106,12 @@ static int do_sdhci_init(struct sdhci_host *host)
 	flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
 	dev_id = host->index + PERIPH_ID_SDMMC0;
 
+	ret = exynos_pinmux_config(dev_id, flag);
+	if (ret) {
+		printf("external SD not configured\n");
+		return ret;
+	}
+
 	if (dm_gpio_is_valid(&host->pwr_gpio)) {
 		dm_gpio_set_value(&host->pwr_gpio, 1);
 		ret = exynos_pinmux_config(dev_id, flag);
@@ -121,12 +127,6 @@ static int do_sdhci_init(struct sdhci_host *host)
 			debug("no SD card detected (%d)\n", ret);
 			return -ENODEV;
 		}
-
-		ret = exynos_pinmux_config(dev_id, flag);
-		if (ret) {
-			printf("external SD not configured\n");
-			return ret;
-		}
 	}
 
 	return s5p_sdhci_core_init(host);
@@ -193,7 +193,7 @@ static int process_nodes(const void *blob, int node_list[], int count)
 		}
 
 		ret = do_sdhci_init(host);
-		if (ret) {
+		if (ret && ret != -ENODEV) {
 			printf("%s: failed to initialize dev %d (%d)\n", __func__, i, ret);
 			failed++;
 		}
#3 lore raw

PATCH 2/2 s5p sdhci: call pinmux for card's gpio pins before use them

In reply to Przemyslaw Marczak

Hi Przemyslaw,

Quoted 48 lines

The SD card detection depends on checking one pin state. But the pin was configured after card was detected, which is wrong.

This commit fixes this, by moving call to pinmux before use the pin.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 drivers/mmc/s5p_sdhci.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/mmc/s5p_sdhci.c +6 -6
index 15ecfee..44353c7 100644
@@ -106,6 +106,12 @@ static int do_sdhci_init(struct sdhci_host *host)
 	flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE :
 PINMUX_FLAG_NONE; dev_id = host->index + PERIPH_ID_SDMMC0;
 
+	ret = exynos_pinmux_config(dev_id, flag);
+	if (ret) {
+		printf("external SD not configured\n");
+		return ret;
+	}
+
 	if (dm_gpio_is_valid(&host->pwr_gpio)) {
 		dm_gpio_set_value(&host->pwr_gpio, 1);
 		ret = exynos_pinmux_config(dev_id, flag);
@@ -121,12 +127,6 @@ static int do_sdhci_init(struct sdhci_host *host)
 			debug("no SD card detected (%d)\n", ret);
 			return -ENODEV;
 		}
-
-		ret = exynos_pinmux_config(dev_id, flag);
-		if (ret) {
-			printf("external SD not configured\n");
-			return ret;
-		}
 	}
 
 	return s5p_sdhci_core_init(host);

drivers/mmc/s5p_sdhci.c static int process_nodes(const void *blob, int · line 199

Quoted 8 lines
drivers/mmc/s5p_sdhci.c +1 -1
@@ -193,7 +193,7 @@ static int process_nodes(const void *blob, int
 node_list[], int count) }
 
 		ret = do_sdhci_init(host);
-		if (ret) {
+		if (ret && ret != -ENODEV) {
 			printf("%s: failed to initialize dev %d
 (%d)\n", __func__, i, ret); failed++;
 		}

Test HW: Exynos 4210 - Trats board.

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#4 lore raw

PATCH 2/2 s5p sdhci: call pinmux for card's gpio pins before use them

In reply to Przemyslaw Marczak
Quoted 13 lines · Przemyslaw Marczak

The SD card detection depends on checking one pin state. But the pin was configured after card was detected, which is wrong.

This commit fixes this, by moving call to pinmux before use the pin.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
Quoted 4 lines
---
 drivers/mmc/s5p_sdhci.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

applied to u-boot-samsung.

Thanks,
Minkyu Kang.

#5 lore raw

PATCH 1/2 Exynos4412: pinmux: disable pull for MMC pins

In reply to Przemyslaw Marczak

Hi,

Looks good to me.

Best Regards,
Jaehoon Chung

Quoted 36 lines · Przemyslaw Marczak

There are 8 pins for SD card in Exynos, but the MUX was configured only for 7, since the one was used for card detection. This caused the pin's pull wrong configuration.

This commit fixes this and the card detect can work properly, after call this function.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 arch/arm/mach-exynos/pinmux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-exynos/pinmux.c +1 -1
index 179b294..925bd0a 100644
@@ -737,10 +737,10 @@ static int exynos4x12_mmc_config(int peripheral, int flags)
 		return -1;
 	}
 	for (i = start; i < (start + 7); i++) {
+		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		if (i == (start + 2))
 			continue;
 		gpio_cfg_pin(i,  func);
-		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		gpio_set_drv(i, S5P_GPIO_DRV_4X);
 	}
 	if (flags & PINMUX_FLAG_8BIT_MODE) {
#6 lore raw

PATCH 1/2 Exynos4412: pinmux: disable pull for MMC pins

In reply to Przemyslaw Marczak

Hi Przemyslaw,

Quoted 25 lines

There are 8 pins for SD card in Exynos, but the MUX was configured only for 7, since the one was used for card detection. This caused the pin's pull wrong configuration.

This commit fixes this and the card detect can work properly, after call this function.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
---
 arch/arm/mach-exynos/pinmux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
(quoted diff) +0 -0

b/arch/arm/mach-exynos/pinmux.c index 179b294..925bd0a 100644

arch/arm/mach-exynos/pinmux.c +0 -0
@@ -737,10 +737,10 @@ static int exynos4x12_mmc_config(int
 peripheral, int flags) return -1;

arch/arm/mach-exynos/pinmux.c static int exynos4x12_mmc_config(int · line 746

Quoted 10 lines
arch/arm/mach-exynos/pinmux.c +1 -1
 	}
 	for (i = start; i < (start + 7); i++) {
+		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		if (i == (start + 2))
 			continue;
 		gpio_cfg_pin(i,  func);
-		gpio_set_pull(i, S5P_GPIO_PULL_NONE);
 		gpio_set_drv(i, S5P_GPIO_DRV_4X);
 	}
 	if (flags & PINMUX_FLAG_8BIT_MODE) {

Test HW: Exynos 4210 - Trats board.

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#7 lore raw

PATCH 1/2 Exynos4412: pinmux: disable pull for MMC pins

In reply to Przemyslaw Marczak
Quoted 15 lines · Przemyslaw Marczak

There are 8 pins for SD card in Exynos, but the MUX was configured only for 7, since the one was used for card detection. This caused the pin's pull wrong configuration.

This commit fixes this and the card detect can work properly, after call this function.

Tested-on: Odroid U3 and Odroid X2.

Cc Guillaume GARDET <[email protected]>
Cc Lukasz Majewski <[email protected]>
Cc Jaehoon Chung <[email protected]>
Cc Minkyu Kang <[email protected]>
Cc Simon Glass <[email protected]>
Quoted 4 lines
---
 arch/arm/mach-exynos/pinmux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

applied to u-boot-samsung.

Thanks,
Minkyu Kang.