Skip to contentSkip to conversation

arm:exynos4:pinmux: Modify the gpio function for mmc

PATCH New Piotr Wilczek 5 participants 8 messages Jan 3, 2013 – Jan 9, 2013

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

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

The pinmux setting previously added in commit a3eab2ac41 has been deleted in merge 96764df1b4

Piotr Wilczek (1):
arm:exynos4:pinmux: Modify the gpio function for mmc

 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
arch/arm/cpu/armv7/exynos/pinmux.c +45 -0
index 20a4b84..ee58dac 100644
@@ -370,6 +370,43 @@ static void exynos4_i2c_config(int peripheral, int flags)
 	}
 }
 
+static int exynos4_mmc_config(int peripheral, int flags)
+{
+	struct exynos4_gpio_part2 *gpio2 =
+		(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
+	struct s5p_gpio_bank *bank, *bank_ext;
+	int i;
+
+	switch (peripheral) {
+	case PERIPH_ID_SDMMC0:
+		bank = &gpio2->k0;
+		bank_ext = &gpio2->k1;
+		break;
+	case PERIPH_ID_SDMMC2:
+		bank = &gpio2->k2;
+		bank_ext = &gpio2->k3;
+		break;
+	default:
+		return -1;
+	}
+	for (i = 0; i < 7; i++) {
+		if (i == 2)
+			continue;
+		s5p_gpio_cfg_pin(bank, i,  GPIO_FUNC(0x2));
+		s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE);
+		s5p_gpio_set_drv(bank, i, GPIO_DRV_4X);
+	}
+	if (flags & PINMUX_FLAG_8BIT_MODE) {
+		for (i = 3; i < 7; i++) {
+			s5p_gpio_cfg_pin(bank_ext, i,  GPIO_FUNC(0x3));
+			s5p_gpio_set_pull(bank_ext, i, GPIO_PULL_NONE);
+			s5p_gpio_set_drv(bank_ext, i, GPIO_DRV_4X);
+		}
+	}
+
+	return 0;
+}
+
 static int exynos4_pinmux_config(int peripheral, int flags)
 {
 	switch (peripheral) {
@@ -383,6 +420,14 @@ static int exynos4_pinmux_config(int peripheral, int flags)
 	case PERIPH_ID_I2C7:
 		exynos4_i2c_config(peripheral, flags);
 		break;
+	case PERIPH_ID_SDMMC0:
+	case PERIPH_ID_SDMMC2:
+		return exynos4_mmc_config(peripheral, flags);
+	case PERIPH_ID_SDMMC1:
+	case PERIPH_ID_SDMMC3:
+	case PERIPH_ID_SDMMC4:
+		printf("SDMMC device %d not implemented\n", peripheral);
+		return -1;
 	default:
 		debug("%s: invalid peripheral %d", __func__, peripheral);
 		return -1;
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

Hi Piotr,

Quoted 1 line · Piotr Wilczek

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

Didn't consider about the mmc4? I know that exynos4 can be used mmc4 for eMMC.

Best Regards,
Jaehoon Chung

Quoted 73 lines
---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
arch/arm/cpu/armv7/exynos/pinmux.c +45 -0
index 20a4b84..ee58dac 100644
@@ -370,6 +370,43 @@ static void exynos4_i2c_config(int peripheral, int flags)
 	}
 }
 
+static int exynos4_mmc_config(int peripheral, int flags)
+{
+	struct exynos4_gpio_part2 *gpio2 =
+		(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
+	struct s5p_gpio_bank *bank, *bank_ext;
+	int i;
+
+	switch (peripheral) {
+	case PERIPH_ID_SDMMC0:
+		bank = &gpio2->k0;
+		bank_ext = &gpio2->k1;
+		break;
+	case PERIPH_ID_SDMMC2:
+		bank = &gpio2->k2;
+		bank_ext = &gpio2->k3;
+		break;
+	default:
+		return -1;
+	}
+	for (i = 0; i < 7; i++) {
+		if (i == 2)
+			continue;
+		s5p_gpio_cfg_pin(bank, i,  GPIO_FUNC(0x2));
+		s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE);
+		s5p_gpio_set_drv(bank, i, GPIO_DRV_4X);
+	}
+	if (flags & PINMUX_FLAG_8BIT_MODE) {
+		for (i = 3; i < 7; i++) {
+			s5p_gpio_cfg_pin(bank_ext, i,  GPIO_FUNC(0x3));
+			s5p_gpio_set_pull(bank_ext, i, GPIO_PULL_NONE);
+			s5p_gpio_set_drv(bank_ext, i, GPIO_DRV_4X);
+		}
+	}
+
+	return 0;
+}
+
 static int exynos4_pinmux_config(int peripheral, int flags)
 {
 	switch (peripheral) {
@@ -383,6 +420,14 @@ static int exynos4_pinmux_config(int peripheral, int flags)
 	case PERIPH_ID_I2C7:
 		exynos4_i2c_config(peripheral, flags);
 		break;
+	case PERIPH_ID_SDMMC0:
+	case PERIPH_ID_SDMMC2:
+		return exynos4_mmc_config(peripheral, flags);
+	case PERIPH_ID_SDMMC1:
+	case PERIPH_ID_SDMMC3:
+	case PERIPH_ID_SDMMC4:
+		printf("SDMMC device %d not implemented\n", peripheral);
+		return -1;
 	default:
 		debug("%s: invalid peripheral %d", __func__, peripheral);
 		return -1;
#3 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

Hi Jaehoon,

Quoted 4 lines · Piotr Wilczek
Quoted 1 line

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

Didn't consider about the mmc4? I know that exynos4 can be used mmc4 for eMMC.

This patch shall be regarded as fixing regression introduced after merge.

We would like to stick (at least for now) to eMMC cotrollers tied to mmc0 and mmc2.

When mmc4 (dw_mmc) will be enabled, then surely we will modify the pinmux code.

Signature · 5 lines
Best regards,

Lukasz Majewski

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

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

Hi Lukasz,

I understood your opinion..it's ok.
After applied this patch, i will update the pinmux for MMC4.

Best Regards,
Jaehoon Chung

Quoted 18 lines · Lukasz Majewski

Hi Jaehoon,

Quoted 4 lines · Piotr Wilczek
Quoted 1 line

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

Didn't consider about the mmc4? I know that exynos4 can be used mmc4 for eMMC.

This patch shall be regarded as fixing regression introduced after merge.

We would like to stick (at least for now) to eMMC cotrollers tied to mmc0 and mmc2.

When mmc4 (dw_mmc) will be enabled, then surely we will modify the pinmux code.

#5 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

In reply to Piotr Wilczek
Quoted 10 lines · Piotr Wilczek

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

applied to u-boot-samsung.

Thanks,
Minkyu Kang.

#6 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

Hi Minkyu,

Quoted 12 lines · Minkyu Kang
Quoted 10 lines · Piotr Wilczek

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
Quoted 1 line

applied to u-boot-samsung.

So I guess you'll be sending out a pull request for the Samung tree soon, right?

Quoted 2 lines

Thanks,
Minkyu Kang.

Amicalement,

Signature · 1 line
Albert.
#7 lore raw

PATCH 1/1 arm:exynos4:pinmux: Modify the gpio function for mmc

Quoted 16 lines · Albert ARIBAUD

Hi Minkyu,

Quoted 12 lines · Minkyu Kang
Quoted 10 lines · Piotr Wilczek

This patch add pinmux settings for Exynos4 for mmc0 and mmc2

---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
Quoted 5 lines
Quoted 1 line

applied to u-boot-samsung.

So I guess you'll be sending out a pull request for the Samung tree soon, right?

Yes, will send soon.

Thanks.
Minkyu Kang.