s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
Subsystems (3)
PATCH 1/1 s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
With this patch the platform-specific define for the last defined GPIO on S3C machines is used instead of a hard-coded value (which is right only for the s3c2410). The gpio_nr being incremented by 1 too much (look for the gpio_nr++ in the for instruction) is fixed too although it doesn't make any trouble on current S3C implementations.
--- arch/arm/mach-s3c2410/include/mach/gpio-track.h | 2 +- arch/arm/plat-samsung/pm-gpio.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-s3c2410/include/mach/gpio-track.h +1 -1
@@ -23,7 +23,7 @@ static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) {struct s3c_gpio_chip *chip; -if (pin >S3C2410_GPG (10 )) +if (pin >S3C_GPIO_END )return NULL ; chip = &s3c24xx_gpios[pin/32 ];
arch/arm/plat-samsung/pm-gpio.c +1 -1
@@ -343,7 +343,7 @@ void s3c_pm_save_gpios(void) ourchip->pm_save[2 ], ourchip->pm_save[3]); - gpio_nr += ourchip->chip.ngpio; + gpio_nr += ourchip->chip.ngpio -1 ; gpio_nr +=CONFIG_S3C_GPIO_SPACE ; } }
Signature · 1 line
1.5.6.5
PATCH 1/1 s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
? ????????? ?? 30 ????? 2010 11:23:06 ????? Christian Pellegrin ???????:
Quoted 7 lines
With this patch the platform-specific define for the last defined GPIO on S3C machines is used instead of a hard-coded value (which is right only for the s3c2410). The
gpio_nrbeing incremented by 1 too much (look for the gpio_nr++ in the for instruction) is fixed too although it doesn't make any trouble on current S3C implementations.Signed-off-by Christian Pellegrin <[email protected]>
Quoted 24 lines
--- arch/arm/mach-s3c2410/include/mach/gpio-track.h | 2 +- arch/arm/plat-samsung/pm-gpio.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/arch/arm/mach-s3c2410/include/mach/gpio-track.hindex acb2591..6371eaa 100644arch/arm/mach-s3c2410/include/mach/gpio-track.h +1
-1@@ -23,7 +23,7 @@ static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) {struct s3c_gpio_chip *chip; -if (pin >S3C2410_GPG (10 )) +if (pin >S3C_GPIO_END )return NULL ; chip = &s3c24xx_gpios[pin/32 ];(quoted diff) +0
-0
b/arch/arm/plat-samsung/pm-gpio.cindex 69a4c7f..1aac746 100644
arch/arm/plat-samsung/pm-gpio.c void s3c_pm_save_gpios(void) · line 349
Quoted 8 lines
arch/arm/plat-samsung/pm-gpio.c +1
-1@@ -343,7 +343,7 @@ void s3c_pm_save_gpios(void) ourchip->pm_save[2 ], ourchip->pm_save[3]); - gpio_nr += ourchip->chip.ngpio; + gpio_nr += ourchip->chip.ngpio -1 ; gpio_nr +=CONFIG_S3C_GPIO_SPACE ; } }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100423/4a85e3ff/attachment.sig>
PATCH 1/1 s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
In reply to Christian PellegrinQuoted 17 lines · Christian Pellegrin
With this patch the platform-specific define for the last defined GPIO on S3C machines is used instead of a hard-coded value (which is right only for the s3c2410). The
gpio_nrbeing incremented by 1 too much (look for the gpio_nr++ in the for instruction) is fixed too although it doesn't make any trouble on current S3C implementations.Signed-off-by Christian Pellegrin <[email protected]>--- arch/arm/mach-s3c2410/include/mach/gpio-track.h | 2 +- arch/arm/plat-samsung/pm-gpio.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mach-s3c2410/include/mach/gpio-track.h +0
-0
arch/arm/mach-s3c2410/include/mach/gpio-track.h static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) · line 29
Quoted 8 lines
arch/arm/mach-s3c2410/include/mach/gpio-track.h +1
-1@@ -23,7 +23,7 @@ static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) {struct s3c_gpio_chip *chip; -if (pin >S3C2410_GPG (10 )) +if (pin >S3C_GPIO_END )return NULL ; chip = &s3c24xx_gpios[pin/32 ];
This may get removed in the up-comming s3c2410_gpio fallout, so I'll keep this in mind if it is needed. Series should be posted in the next few days.
arch/arm/plat-samsung/pm-gpio.c void s3c_pm_save_gpios(void) · line 349
Quoted 13 lines
arch/arm/plat-samsung/pm-gpio.c +1
-1@@ -343,7 +343,7 @@ void s3c_pm_save_gpios(void) ourchip->pm_save[2 ], ourchip->pm_save[3]); - gpio_nr += ourchip->chip.ngpio; + gpio_nr += ourchip->chip.ngpio -1 ; gpio_nr +=CONFIG_S3C_GPIO_SPACE ; } }
Hmm, think a better fix for this would be to remove the gpio_nr++ in the for() loop.
could you send the gpio fix with the above change as a seperate patch please?
Signature · 4 lines
Ben Q: What's a light-year? A: One-third less calories than a regular year.
PATCH 1/1 s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
Quoted 4 lines · Ben Dooks
could you send the gpio fix with the above change as a seperate patch please?
Yes, no problem, I'll just wait for the "up-comming s3c2410_gpio fallout" patches so I can test everything with the new functions.
BTW there is a nastiness in mixing old-style s3c24xx gpios and gpiolib ones for the J port found in the s3c2440. For the former you have to use S3C241?_GPJ* macros in regs-gpioj.h, for the later S3C2410_GPJ(). The reason of this is the "hole" in GPIO registers address which breaks S3C2410_GPIO_BASE. So I'm looking forward for your reorganization of s3c24xx gpio to see if a patch is needed for this. Right now I'm using:
(quoted diff) +0 -0
b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h
index ebc85c6..a2eab90 100644
arch/arm/mach-s3c2410/include/mach/regs-gpio.h +10 -1
@@ -37,7 +37,16 @@ S3C2400_BASEC2H(pin)+S3C24XX_VA_GPIO) -#define S3C2410_GPIO_BASE (pin) ((((pin) & ~31) >> 1) + S3C24XX_VA_GPIO) +#if !defined(__ASSEMBLER__) && defined(S3C24XX_VA_GPIO ) +static inline void *S3C2410_GPIO_BASE (unsigned int pin) +{ +unsigned int off = (pin & ~31 ) >>1 ; + +if ((pin & ~31 ) ==S3C2410_GPIO_J_START ) + off +=0x50 ; +return S3C24XX_VA_GPIO + off; +} +#endif #define S3C2410_GPIO_OFFSET (pin) ((pin) & 31)
so if I use, by mistake, S3C2410_GPJ() in s3c2410_gpio_cfgpin I don't shoot myself in the foot. If I understand you intentions S3C241?_GPJ* will go away after the mentioned patch series. Anyway I wait for your reorganization of s3c gpios to resubmit these patches if needed.
Thanks,
Signature · 5 lines
Christian Pellegrin, see http://www.evolware.org/chri/ "Real Programmers don't play tennis, or any other sport which requires you to change clothes. Mountain climbing is OK, and Real Programmers wear their climbing boots to work in case a mountain should suddenly spring up in the middle of the computer room."
PATCH 1/1 s3c: Fix GPIOs bank H and J not being preserved during suspend on S3C24XX
Quoted 10 lines · christian pellegrin
Quoted 4 lines · Ben Dooks
could you send the gpio fix with the above change as a seperate patch please?
Yes, no problem, I'll just wait for the "up-comming
s3c2410_gpiofallout" patches so I can test everything with the new functions.
Quoted 7 lines
BTW there is a nastiness in mixing old-style s3c24xx gpios and gpiolib ones for the J port found in the s3c2440. For the former you have to use S3C241?_GPJ* macros in
regs-gpioj.h, for the laterS3C2410_GPJ(). The reason of this is the "hole" in GPIO registers address which breaksS3C2410_GPIO_BASE. So I'm looking forward for your reorganization of s3c24xx gpio to see if a patch is needed for this. Right now I'm using:
Yes, one of the reasons for these changes is to remove the gpio->regaddr mappings we've been keeping around for a while. Given the new gpiolib code it makes sense to base all the platform specific calls off the same numbering scheme and even use the same data structures.
I'll post a series from the following, possibly later today.
http://git.fluff.org/gitweb?p=bjdooks/linux.git;a=shortlog;h=refs/heads/for-2635/s3c24xx-gpio
Quoted 39 lines
arch/arm/mach-s3c2410/include/mach/regs-gpio.h +10
-1@@ -37,7 +37,16 @@ S3C2400_BASEC2H(pin)+S3C24XX_VA_GPIO) -#define S3C2410_GPIO_BASE (pin) ((((pin) & ~31) >> 1) + S3C24XX_VA_GPIO) +#if !defined(__ASSEMBLER__) && defined(S3C24XX_VA_GPIO ) +static inline void *S3C2410_GPIO_BASE (unsigned int pin) +{ +unsigned int off = (pin & ~31 ) >>1 ; + +if ((pin & ~31 ) ==S3C2410_GPIO_J_START ) + off +=0x50 ; +return S3C24XX_VA_GPIO + off; +} +#endif #define S3C2410_GPIO_OFFSET (pin) ((pin) & 31)so if I use, by mistake,
S3C2410_GPJ()ins3c2410_gpio_cfgpinI don't shoot myself in the foot. If I understand you intentions S3C241?_GPJ* will go away after the mentioned patch series. Anyway I wait for your reorganization of s3c gpios to resubmit these patches if needed.Thanks,
Signature · 9 lines
Christian Pellegrin, see http://www.evolware.org/chri/ "Real Programmers don't play tennis, or any other sport which requires you to change clothes. Mountain climbing is OK, and Real Programmers wear their climbing boots to work in case a mountain should suddenly spring up in the middle of the computer room." -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 5 lines
-- Ben Q: What's a light-year? A: One-third less calories than a regular year.