Re: [PATCH 2/2 RE-SEND] ARM: S5PV210: Add support HSMMC on Samsung SMDKV210

2010-06-14 Thread Kyungmin Park
Hi

On Mon, Jun 14, 2010 at 4:19 PM, Kukjin Kim kgene@samsung.com wrote:
 From: Lee Hyuk hyuk1@samsung.com

 This patch adds support HSMMC on Samsung SMDKV210, and gpio configuration for
 S5PV210 hsmmc3.

 Signed-off-by: Hyuk Lee hyuk1@samsung.com
 Signed-off-by: Kukjin Kim kgene@samsung.com
 ---

 Changes since previous patch:

 - Adding missed call s5pv210_default_sdhci3() in s5pv210_map_io()

  arch/arm/mach-s5pv210/Kconfig|5 +
  arch/arm/mach-s5pv210/cpu.c  |1 +
  arch/arm/mach-s5pv210/include/mach/map.h |1 +
  arch/arm/mach-s5pv210/mach-smdkv210.c|4 
  arch/arm/mach-s5pv210/setup-sdhci-gpio.c |   20 
  5 files changed, 31 insertions(+), 0 deletions(-)

 diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
 index 0761eac..6aee967 100644
 --- a/arch/arm/mach-s5pv210/Kconfig
 +++ b/arch/arm/mach-s5pv210/Kconfig
 @@ -72,9 +72,14 @@ config MACH_SMDKV210
select CPU_S5PV210
select ARCH_SPARSEMEM_ENABLE
select SAMSUNG_DEV_ADC
 +   select S3C_DEV_HSMMC
 +   select S3C_DEV_HSMMC1
 +   select S3C_DEV_HSMMC2
 +   select S3C_DEV_HSMMC3
select SAMSUNG_DEV_TS
select S3C_DEV_WDT
select HAVE_S3C2410_WATCHDOG
 +   select S5PV210_SETUP_SDHCI
help
  Machine support for Samsung SMDKV210

 diff --git a/arch/arm/mach-s5pv210/cpu.c b/arch/arm/mach-s5pv210/cpu.c
 index 411a4a9..765034e 100644
 --- a/arch/arm/mach-s5pv210/cpu.c
 +++ b/arch/arm/mach-s5pv210/cpu.c
 @@ -86,6 +86,7 @@ void __init s5pv210_map_io(void)
s5pv210_default_sdhci0();
s5pv210_default_sdhci1();
s5pv210_default_sdhci2();
 +   s5pv210_default_sdhci3();

/* the i2c devices are directly compatible with s3c2440 */
s3c_i2c0_setname(s3c2440-i2c);
 diff --git a/arch/arm/mach-s5pv210/include/mach/map.h 
 b/arch/arm/mach-s5pv210/include/mach/map.h
 index 34eb168..fa9d7c2 100644
 --- a/arch/arm/mach-s5pv210/include/mach/map.h
 +++ b/arch/arm/mach-s5pv210/include/mach/map.h
 @@ -97,6 +97,7 @@
  #define S3C_PA_HSMMC0  S5PV210_PA_HSMMC(0)
  #define S3C_PA_HSMMC1  S5PV210_PA_HSMMC(1)
  #define S3C_PA_HSMMC2  S5PV210_PA_HSMMC(2)
 +#define S3C_PA_HSMMC3  S5PV210_PA_HSMMC(3)
  #define S3C_PA_IIC S5PV210_PA_IIC0
  #define S3C_PA_IIC1S5PV210_PA_IIC1
  #define S3C_PA_IIC2S5PV210_PA_IIC2
 diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c 
 b/arch/arm/mach-s5pv210/mach-smdkv210.c
 index 0d46279..b08f376 100644
 --- a/arch/arm/mach-s5pv210/mach-smdkv210.c
 +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
 @@ -77,6 +77,10 @@ static struct platform_device *smdkv210_devices[] 
 __initdata = {
s5pv210_device_iis0,
s5pv210_device_ac97,
s3c_device_adc,
 +   s3c_device_hsmmc0,
 +   s3c_device_hsmmc1,
 +   s3c_device_hsmmc2,
 +   s3c_device_hsmmc3,
s3c_device_ts,
s3c_device_wdt,
  };
 diff --git a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c 
 b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
 index fe7d86d..415f62c 100644
 --- a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
 +++ b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
 @@ -102,3 +102,23 @@ void s5pv210_setup_sdhci2_cfg_gpio(struct 
 platform_device *dev, int width)
s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(S5PV210_GPG2(2), S3C_GPIO_SFN(2));
  }
 +
 +void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *dev, int width)
 +{
 +   unsigned int gpio;
 +
 +   /* Set all the necessary GPG1[0:2] pins to special-function 2 */

Wrong pin name, GPG3?

 +   for (gpio = S5PV210_GPG3(0); gpio  S5PV210_GPG3(2); gpio++) {
 +   s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
 +   s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
 +   }
 +
 +   /* Data pin GPG1[3:6] to special-function 2 */
ditto
 +   for (gpio = S5PV210_GPG3(3); gpio = S5PV210_GPG3(6); gpio++) {
 +   s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
 +   s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
 +   }
 +
 +   s3c_gpio_setpull(S5PV210_GPG3(2), S3C_GPIO_PULL_UP);
 +   s3c_gpio_cfgpin(S5PV210_GPG3(2), S3C_GPIO_SFN(2));

In case of this, how about to use one loop like this.

for (gpio = GPG3(0); gpio = GPG3(7); gpio++)
s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));

since all pins use special function 2.

or others methods are welcome.

To Ben,
When do you apply previous gpio helper functions?

Thank you,
Kyungmin Park


 +}
 --
 1.6.2.5

 --
 To unsubscribe from this list: send the line unsubscribe linux-samsung-soc 
 in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/2 RE-SEND] ARM: S5PV210: Add support HSMMC on Samsung SMDKV210

2010-06-14 Thread Kukjin Kim
Kyungmin Park wrote:
 
 Hi
 
Hi, :-)

 On Mon, Jun 14, 2010 at 4:19 PM, Kukjin Kim kgene@samsung.com wrote:
  From: Lee Hyuk hyuk1@samsung.com
 
  This patch adds support HSMMC on Samsung SMDKV210, and gpio
 configuration for
  S5PV210 hsmmc3.
 
  Signed-off-by: Hyuk Lee hyuk1@samsung.com
  Signed-off-by: Kukjin Kim kgene@samsung.com
  ---
 
  Changes since previous patch:
 
  - Adding missed call s5pv210_default_sdhci3() in s5pv210_map_io()
 
   arch/arm/mach-s5pv210/Kconfig|5 +
   arch/arm/mach-s5pv210/cpu.c  |1 +
   arch/arm/mach-s5pv210/include/mach/map.h |1 +
   arch/arm/mach-s5pv210/mach-smdkv210.c|4 
   arch/arm/mach-s5pv210/setup-sdhci-gpio.c |   20 
   5 files changed, 31 insertions(+), 0 deletions(-)
 
  diff --git a/arch/arm/mach-s5pv210/Kconfig
b/arch/arm/mach-s5pv210/Kconfig
  index 0761eac..6aee967 100644
  --- a/arch/arm/mach-s5pv210/Kconfig
  +++ b/arch/arm/mach-s5pv210/Kconfig
  @@ -72,9 +72,14 @@ config MACH_SMDKV210
 select CPU_S5PV210
 select ARCH_SPARSEMEM_ENABLE
 select SAMSUNG_DEV_ADC
  +   select S3C_DEV_HSMMC
  +   select S3C_DEV_HSMMC1
  +   select S3C_DEV_HSMMC2
  +   select S3C_DEV_HSMMC3
 select SAMSUNG_DEV_TS
 select S3C_DEV_WDT
 select HAVE_S3C2410_WATCHDOG
  +   select S5PV210_SETUP_SDHCI
 help
   Machine support for Samsung SMDKV210
 
  diff --git a/arch/arm/mach-s5pv210/cpu.c b/arch/arm/mach-s5pv210/cpu.c
  index 411a4a9..765034e 100644
  --- a/arch/arm/mach-s5pv210/cpu.c
  +++ b/arch/arm/mach-s5pv210/cpu.c
  @@ -86,6 +86,7 @@ void __init s5pv210_map_io(void)
 s5pv210_default_sdhci0();
 s5pv210_default_sdhci1();
 s5pv210_default_sdhci2();
  +   s5pv210_default_sdhci3();
 
 /* the i2c devices are directly compatible with s3c2440 */
 s3c_i2c0_setname(s3c2440-i2c);
  diff --git a/arch/arm/mach-s5pv210/include/mach/map.h b/arch/arm/mach-
 s5pv210/include/mach/map.h
  index 34eb168..fa9d7c2 100644
  --- a/arch/arm/mach-s5pv210/include/mach/map.h
  +++ b/arch/arm/mach-s5pv210/include/mach/map.h
  @@ -97,6 +97,7 @@
   #define S3C_PA_HSMMC0  S5PV210_PA_HSMMC(0)
   #define S3C_PA_HSMMC1  S5PV210_PA_HSMMC(1)
   #define S3C_PA_HSMMC2  S5PV210_PA_HSMMC(2)
  +#define S3C_PA_HSMMC3  S5PV210_PA_HSMMC(3)
   #define S3C_PA_IIC S5PV210_PA_IIC0
   #define S3C_PA_IIC1S5PV210_PA_IIC1
   #define S3C_PA_IIC2S5PV210_PA_IIC2
  diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-
 s5pv210/mach-smdkv210.c
  index 0d46279..b08f376 100644
  --- a/arch/arm/mach-s5pv210/mach-smdkv210.c
  +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
  @@ -77,6 +77,10 @@ static struct platform_device *smdkv210_devices[]
 __initdata = {
 s5pv210_device_iis0,
 s5pv210_device_ac97,
 s3c_device_adc,
  +   s3c_device_hsmmc0,
  +   s3c_device_hsmmc1,
  +   s3c_device_hsmmc2,
  +   s3c_device_hsmmc3,
 s3c_device_ts,
 s3c_device_wdt,
   };
  diff --git a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c b/arch/arm/mach-
 s5pv210/setup-sdhci-gpio.c
  index fe7d86d..415f62c 100644
  --- a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
  +++ b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
  @@ -102,3 +102,23 @@ void s5pv210_setup_sdhci2_cfg_gpio(struct
 platform_device *dev, int width)
 s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_UP);
 s3c_gpio_cfgpin(S5PV210_GPG2(2), S3C_GPIO_SFN(2));
   }
  +
  +void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *dev, int
width)
  +{
  +   unsigned int gpio;
  +
  +   /* Set all the necessary GPG1[0:2] pins to special-function 2 */
 
 Wrong pin name, GPG3?
 
OK.

  +   for (gpio = S5PV210_GPG3(0); gpio  S5PV210_GPG3(2); gpio++) {
  +   s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
  +   s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
  +   }
  +
  +   /* Data pin GPG1[3:6] to special-function 2 */
 ditto

OK.

  +   for (gpio = S5PV210_GPG3(3); gpio = S5PV210_GPG3(6); gpio++) {
  +   s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
  +   s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
  +   }
  +
  +   s3c_gpio_setpull(S5PV210_GPG3(2), S3C_GPIO_PULL_UP);
  +   s3c_gpio_cfgpin(S5PV210_GPG3(2), S3C_GPIO_SFN(2));
 
 In case of this, how about to use one loop like this.
 
 for (gpio = GPG3(0); gpio = GPG3(7); gpio++)
 s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
 
 since all pins use special function 2.
 
 or others methods are welcome.
 

Yeah, you're right.
But used same method of s5pv210_sdhci0_cfg_gpio(), sdhci1_xxx(), and
sdhci2_xxx() from Marek.

If necessary, will modify later with others.

 To Ben,
 When do you apply previous gpio helper functions?
 
What's the previous gpio helper functions for?


Thanks.

Best regards,
Kgene.
--
Kukjin Kim kgene@samsung.com, Senior