[U-Boot] [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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org --- arch/arm/mach-exynos/pinmux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-exynos/pinmux.c b/arch/arm/mach-exynos/pinmux.c index 179b294..925bd0a 100644 --- a/arch/arm/mach-exynos/pinmux.c +++ b/arch/arm/mach-exynos/pinmux.c @@ -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) {

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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org --- drivers/mmc/s5p_sdhci.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c index 15ecfee..44353c7 100644 --- a/drivers/mmc/s5p_sdhci.c +++ b/drivers/mmc/s5p_sdhci.c @@ -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++; }

Hi,
Looks good to me.
Acked-by: Jaehoon Chung jh80.chung@samsung.com
Best Regards, Jaehoon Chung
On 10/28/2015 11:41 PM, Przemyslaw Marczak wrote:
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
drivers/mmc/s5p_sdhci.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c index 15ecfee..44353c7 100644 --- a/drivers/mmc/s5p_sdhci.c +++ b/drivers/mmc/s5p_sdhci.c @@ -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++;

Hi Przemyslaw,
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
drivers/mmc/s5p_sdhci.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c index 15ecfee..44353c7 100644 --- a/drivers/mmc/s5p_sdhci.c +++ b/drivers/mmc/s5p_sdhci.c @@ -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++; }
Tested-by: Lukasz Majewski l.majewski@samsung.com
Test HW: Exynos 4210 - Trats board.

On 28/10/15 23:41, Przemyslaw Marczak wrote:
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
drivers/mmc/s5p_sdhci.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
applied to u-boot-samsung.
Thanks, Minkyu Kang.

Hi,
Looks good to me.
Acked-by: Jaehoon Chung jh80.chung@samsung.com
Best Regards, Jaehoon Chung
On 10/28/2015 11:41 PM, Przemyslaw Marczak wrote:
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
arch/arm/mach-exynos/pinmux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-exynos/pinmux.c b/arch/arm/mach-exynos/pinmux.c index 179b294..925bd0a 100644 --- a/arch/arm/mach-exynos/pinmux.c +++ b/arch/arm/mach-exynos/pinmux.c @@ -737,10 +737,10 @@ static int exynos4x12_mmc_config(int peripheral, int flags) return -1; } for (i = start; i < (start + 7); i++) {
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) {gpio_set_pull(i, S5P_GPIO_PULL_NONE);

Hi Przemyslaw,
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
arch/arm/mach-exynos/pinmux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-exynos/pinmux.c b/arch/arm/mach-exynos/pinmux.c index 179b294..925bd0a 100644 --- a/arch/arm/mach-exynos/pinmux.c +++ b/arch/arm/mach-exynos/pinmux.c @@ -737,10 +737,10 @@ static int exynos4x12_mmc_config(int peripheral, int flags) return -1; } for (i = start; i < (start + 7); i++) {
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) {gpio_set_pull(i, S5P_GPIO_PULL_NONE);
Tested-by: Lukasz Majewski l.majewski@samsung.com
Test HW: Exynos 4210 - Trats board.

On 28/10/15 23:41, Przemyslaw Marczak wrote:
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.
Signed-off-by: Przemyslaw Marczak p.marczak@samsung.com Cc: Guillaume GARDET guillaume.gardet@free.fr Cc: Lukasz Majewski l.majewski@samsung.com Cc: Jaehoon Chung jh80.chung@samsung.com Cc: Minkyu Kang mk7.kang@samsung.com Cc: Simon Glass sjg@chromium.org
arch/arm/mach-exynos/pinmux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
applied to u-boot-samsung.
Thanks, Minkyu Kang.
participants (4)
-
Jaehoon Chung
-
Lukasz Majewski
-
Minkyu Kang
-
Przemyslaw Marczak