Re: [PATCH v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks

2010-11-30 Thread Lars-Peter Clausen
On 11/30/2010 08:46 PM, Vasily Khoruzhick wrote:
 Currently the {set,get}_pull callbacks of the s3c24xx_gpiocfg_default 
 structure
 are initalized via s3c_gpio_{get,set}pull_1up. This results in a linker
 error when only CONFIG_CPU_S3C2442 is selected:
 
 arch/arm/plat-s3c24xx/built-in.o:(.data+0x13f4): undefined reference to
 `s3c_gpio_getpull_1up'
 arch/arm/plat-s3c24xx/built-in.o:(.data+0x13f8): undefined reference to
 `s3c_gpio_setpull_1up'
 
 The s3c2442 has pulldowns instead of pullups compared to the s3c2440.
 The method of controlling them is the same though.
 So this patch modifies the existing s3c_gpio_{get,set}pull_1up helper 
 functions
 to take an additional parameter deciding whether the pin has a pullup or 
 pulldown.
 The s3c_gpio_{get,set}pull_1{down,up} functions then wrap that functions 
 passing
 either S3C_GPIO_PULL_UP or S3C_GPIO_PULL_DOWN.
 
 Furthermore this patch sets up the s3c24xx_gpiocfg_default.{get,set}_pull 
 fields
 in the s3c244{0,2}_map_io function to the new pulldown helper functions.
 
 Based on patch from Lars-Peter Clausen l...@metafoo.de
 
 Signed-off-by: Vasily Khoruzhick anars...@gmail.com
 ---
 v2: adapt patch for 2.6.37-rc1
 v3: restore default pull callbacks, add default pull callbacks for s3c2442
 v4: remove default pull callbacks, set them in per-soc map_io function 
 instead.
  arch/arm/mach-s3c2440/Kconfig  |1 +
  arch/arm/mach-s3c2440/s3c2440.c|   11 -
  arch/arm/mach-s3c2440/s3c2442.c|   14 ++
  arch/arm/plat-s3c24xx/cpu.c|8 ++--
  arch/arm/plat-s3c24xx/gpiolib.c|2 -
  arch/arm/plat-s3c24xx/include/plat/s3c244x.h   |7 +++-
  arch/arm/plat-samsung/gpio-config.c|   45 
 
  .../plat-samsung/include/plat/gpio-cfg-helpers.h   |   11 +
  8 files changed, 80 insertions(+), 19 deletions(-)
 
 ...

 +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
 +  unsigned int off, s3c_gpio_pull_t pull,
 +  s3c_gpio_pull_t updown)
  {
   void __iomem *reg = chip-base + 0x08;
   u32 pup = __raw_readl(reg);
  
 - pup = __raw_readl(reg);
 -
 - if (pup == S3C_GPIO_PULL_UP)
 + if (pup == updown)
This should be pull == updown, otherwise looks fine to me

   pup = ~(1  off);
   else if (pup == S3C_GPIO_PULL_NONE)
   pup |= (1  off);
 @@ -300,17 +299,45 @@ int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
   return 0;
  }

- Lars

--
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 v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks

2010-11-30 Thread Vasily Khoruzhick
On Tuesday 30 November 2010 21:59:01 Lars-Peter Clausen wrote:
 On 11/30/2010 08:46 PM, Vasily Khoruzhick wrote:
  Currently the {set,get}_pull callbacks of the s3c24xx_gpiocfg_default
  structure are initalized via s3c_gpio_{get,set}pull_1up. This results in
  a linker error when only CONFIG_CPU_S3C2442 is selected:
  
  arch/arm/plat-s3c24xx/built-in.o:(.data+0x13f4): undefined reference to
  `s3c_gpio_getpull_1up'
  arch/arm/plat-s3c24xx/built-in.o:(.data+0x13f8): undefined reference to
  `s3c_gpio_setpull_1up'
  
  The s3c2442 has pulldowns instead of pullups compared to the s3c2440.
  The method of controlling them is the same though.
  So this patch modifies the existing s3c_gpio_{get,set}pull_1up helper
  functions to take an additional parameter deciding whether the pin has a
  pullup or pulldown. The s3c_gpio_{get,set}pull_1{down,up} functions then
  wrap that functions passing either S3C_GPIO_PULL_UP or
  S3C_GPIO_PULL_DOWN.
  
  Furthermore this patch sets up the s3c24xx_gpiocfg_default.{get,set}_pull
  fields in the s3c244{0,2}_map_io function to the new pulldown helper
  functions.
  
  Based on patch from Lars-Peter Clausen l...@metafoo.de
  
  Signed-off-by: Vasily Khoruzhick anars...@gmail.com
  ---
  v2: adapt patch for 2.6.37-rc1
  v3: restore default pull callbacks, add default pull callbacks for
  s3c2442 v4: remove default pull callbacks, set them in per-soc map_io
  function instead.
  
   arch/arm/mach-s3c2440/Kconfig  |1 +
   arch/arm/mach-s3c2440/s3c2440.c|   11 -
   arch/arm/mach-s3c2440/s3c2442.c|   14 ++
   arch/arm/plat-s3c24xx/cpu.c|8 ++--
   arch/arm/plat-s3c24xx/gpiolib.c|2 -
   arch/arm/plat-s3c24xx/include/plat/s3c244x.h   |7 +++-
   arch/arm/plat-samsung/gpio-config.c|   45
    .../plat-samsung/include/plat/gpio-cfg-helpers.h  
   |   11 + 8 files changed, 80 insertions(+), 19 deletions(-)
  
  ...
  
  +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
  +unsigned int off, s3c_gpio_pull_t pull,
  +s3c_gpio_pull_t updown)
  
   {
   
  void __iomem *reg = chip-base + 0x08;
  u32 pup = __raw_readl(reg);
  
  -   pup = __raw_readl(reg);
  -
  -   if (pup == S3C_GPIO_PULL_UP)
  +   if (pup == updown)
 
 This should be pull == updown, otherwise looks fine to me

You're right. Btw, can you test this patch on your s3c24xx-machine?

  pup = ~(1  off);
  
  else if (pup == S3C_GPIO_PULL_NONE)
  
  pup |= (1  off);
  
  @@ -300,17 +299,45 @@ int s3c_gpio_setpull_1up(struct s3c_gpio_chip
  *chip,
  
  return 0;
   
   }
 
 - Lars

Regards
Vasily
--
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 v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks

2010-11-30 Thread Vasily Khoruzhick
On Wednesday 01 December 2010 07:28:17 Kukjin Kim wrote:
 else if (pup == S3C_GPIO_PULL_NONE)
 
 pull == S3C_GPIO_PULL_NONE?

Yep, thanks
--
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