Patchwork [U-Boot] arm:exynos4:pinmux: Modify the gpio function for mmc

login
register
mail settings
Submitter Piotr Wilczek
Date Jan. 3, 2013, 7:31 a.m.
Message ID <1357198260-7412-2-git-send-email-p.wilczek@samsung.com>
Download mbox | patch
Permalink /patch/209189/
State Accepted
Delegated to: Minkyu Kang
Headers show

Comments

Piotr Wilczek - Jan. 3, 2013, 7:31 a.m.
This patch add pinmux settings for Exynos4 for mmc0 and mmc2

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
CC: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
 arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
Jaehoon Chung - Jan. 3, 2013, 10:55 a.m.
Hi Piotr,

On 01/03/2013 04:31 PM, Piotr Wilczek wrote:
> 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
> 
> Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> CC: Minkyu Kang <mk7.kang@samsung.com>
> CC: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
>  arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
> 
> diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
> index 20a4b84..ee58dac 100644
> --- a/arch/arm/cpu/armv7/exynos/pinmux.c
> +++ b/arch/arm/cpu/armv7/exynos/pinmux.c
> @@ -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;
>
Ɓukasz Majewski - Jan. 4, 2013, 7:59 a.m.
Hi Jaehoon,

> On 01/03/2013 04:31 PM, Piotr Wilczek wrote:
> > 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.
Jaehoon Chung - Jan. 7, 2013, 2:28 a.m.
Hi Lukasz,

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

Best Regards,
Jaehoon Chung

On 01/04/2013 04:59 PM, Lukasz Majewski wrote:
> Hi Jaehoon,
> 
>> On 01/03/2013 04:31 PM, Piotr Wilczek wrote:
>>> 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.
> 
> 
>
Minkyu Kang - Jan. 8, 2013, 1:50 a.m.
On 03/01/13 16:31, Piotr Wilczek wrote:
> This patch add pinmux settings for Exynos4 for mmc0 and mmc2
> 
> Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> CC: Minkyu Kang <mk7.kang@samsung.com>
> CC: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
>  arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
> 

applied to u-boot-samsung.

Thanks,
Minkyu Kang.
Albert ARIBAUD - Jan. 8, 2013, 2:03 p.m.
Hi Minkyu,

On Tue, 08 Jan 2013 10:50:58 +0900, Minkyu Kang <mk7.kang@samsung.com>
wrote:
> On 03/01/13 16:31, Piotr Wilczek wrote:
> > This patch add pinmux settings for Exynos4 for mmc0 and mmc2
> > 
> > Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> > CC: Minkyu Kang <mk7.kang@samsung.com>
> > CC: Albert ARIBAUD <albert.u.boot@aribaud.net>
> > ---
> >  arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
> >  1 file changed, 45 insertions(+)
> > 
> 
> applied to u-boot-samsung.

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

> Thanks,
> Minkyu Kang.

Amicalement,
Minkyu Kang - Jan. 9, 2013, 1:22 a.m.
On 08/01/13 23:03, Albert ARIBAUD wrote:
> Hi Minkyu,
> 
> On Tue, 08 Jan 2013 10:50:58 +0900, Minkyu Kang <mk7.kang@samsung.com>
> wrote:
>> On 03/01/13 16:31, Piotr Wilczek wrote:
>>> This patch add pinmux settings for Exynos4 for mmc0 and mmc2
>>>
>>> Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
>>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>>> CC: Minkyu Kang <mk7.kang@samsung.com>
>>> CC: Albert ARIBAUD <albert.u.boot@aribaud.net>
>>> ---
>>>  arch/arm/cpu/armv7/exynos/pinmux.c |   45 ++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 45 insertions(+)
>>>
>>
>> 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.

Patch

diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
index 20a4b84..ee58dac 100644
--- a/arch/arm/cpu/armv7/exynos/pinmux.c
+++ b/arch/arm/cpu/armv7/exynos/pinmux.c
@@ -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;