From: Lars-Peter Clausen <lars@metafoo.de>
To: Kukjin Kim <kgene.kim@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org,
'Russell King' <linux@arm.linux.org.uk>,
'Vasily Khoruzhick' <anarsoul@gmail.com>,
'Ben Dooks' <ben-linux@fluff.org>,
'Abdoulaye Walsimou GAYE' <awg@embtoolkit.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks
Date: Tue, 30 Nov 2010 12:53:43 +0100 [thread overview]
Message-ID: <4CF4E5C7.5020600@metafoo.de> (raw)
In-Reply-To: <001801cb9056$65296530$2f7c2f90$%kim@samsung.com>
On 11/30/2010 07:18 AM, Kukjin Kim wrote:
> 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 compiling kernel for s3c2442:
>>
>> 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'
>>
> Yeah, happened build error when selected only S3C2442.
>
>> 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 s3c2442 cpu init function to the new pulldown helper functions.
>>
>> Based on patch from "Lars-Peter Clausen" <lars@metafoo.de>
>>
>> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
>> ---
>> v2: adapt patch for 2.6.37-rc1
>> v3: restore default pull callbacks, add default pull callbacks for s3c2442
>> arch/arm/mach-s3c2440/Kconfig | 1 +
>> arch/arm/mach-s3c2440/s3c2442.c | 7 +++
>> arch/arm/plat-s3c24xx/gpiolib.c | 9 +++-
>> arch/arm/plat-samsung/gpio-config.c | 44
> ++++++++++++++++--
>> -
>> .../plat-samsung/include/plat/gpio-cfg-helpers.h | 11 +++++
>> 5 files changed, 63 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
>> index ff024a6..478fae0 100644
>> --- a/arch/arm/mach-s3c2440/Kconfig
>> +++ b/arch/arm/mach-s3c2440/Kconfig
>> @@ -18,6 +18,7 @@ config CPU_S3C2440
>> config CPU_S3C2442
>> bool
>> select CPU_ARM920T
>> + select S3C_GPIO_PULL_DOWN
>> select S3C2410_CLOCK
>> select S3C2410_GPIO
>> select S3C2410_PM if PM
>> diff --git a/arch/arm/mach-s3c2440/s3c2442.c b/arch/arm/mach-
>> s3c2440/s3c2442.c
>> index 188ad1e..0dbc91c 100644
>> --- a/arch/arm/mach-s3c2440/s3c2442.c
>> +++ b/arch/arm/mach-s3c2440/s3c2442.c
>> @@ -32,6 +32,7 @@
>> #include <linux/interrupt.h>
>> #include <linux/ioport.h>
>> #include <linux/mutex.h>
>> +#include <linux/gpio.h>
>> #include <linux/clk.h>
>> #include <linux/io.h>
>>
>> @@ -44,6 +45,10 @@
>> #include <plat/clock.h>
>> #include <plat/cpu.h>
>>
>> +#include <plat/gpio-core.h>
>> +#include <plat/gpio-cfg.h>
>> +#include <plat/gpio-cfg-helpers.h>
>> +
>> /* S3C2442 extended clock support */
>>
>> static unsigned long s3c2442_camif_upll_round(struct clk *clk,
>> @@ -160,6 +165,8 @@ static struct sys_device s3c2442_sysdev = {
>> int __init s3c2442_init(void)
>> {
>> printk("S3C2442: Initialising architecture\n");
>
> To add empty line would be helpful to read here.
>
>> + s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1down;
>> + s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1down;
>>
> Right now, this is ok to me...but I think we need to sort this out with
> other S3C SoCs.
>
>> return sysdev_register(&s3c2442_sysdev);
>> }
>> diff --git a/arch/arm/plat-s3c24xx/gpiolib.c b/arch/arm/plat-
>> s3c24xx/gpiolib.c
>> index 24c6f5a..b805dab 100644
>> --- a/arch/arm/plat-s3c24xx/gpiolib.c
>> +++ b/arch/arm/plat-s3c24xx/gpiolib.c
>> @@ -82,8 +82,13 @@ static struct s3c_gpio_cfg s3c24xx_gpiocfg_banka = {
>> struct s3c_gpio_cfg s3c24xx_gpiocfg_default = {
>> .set_config = s3c_gpio_setcfg_s3c24xx,
>> .get_config = s3c_gpio_getcfg_s3c24xx,
>> - .set_pull = s3c_gpio_setpull_1up,
>> - .get_pull = s3c_gpio_getpull_1up,
>> +#if defined(CONFIG_S3C_GPIO_PULL_UP)
>> + .set_pull = s3c_gpio_setpull_1up,
>> + .get_pull = s3c_gpio_getpull_1up,
> ^^^^^^
> Why do you use white space instead of tab?
> Original code used tab in there.
>
>> +#elif defined(CONFIG_S3C_GPIO_PULL_DOWN)
>> + .set_pull = s3c_gpio_setpull_1down,
>> + .get_pull = s3c_gpio_getpull_1down,
>> +#endif
>
> Yeah, this is needed for avoiding build error with only S3C2442.
> But please remember, now, its default is CONFIG_S3C_GPIO_PULL_UP when used
> s3c2410_defconfig even though selected S3C_GPIO_PULL_DOWN together.
>
> I will thinking about better method for single binary kernel of S3C24XX. As
> you know, current your method can not support it.
>
>> };
>>
>> struct s3c_gpio_chip s3c24xx_gpios[] = {
>> diff --git a/arch/arm/plat-samsung/gpio-config.c b/arch/arm/plat-
>> samsung/gpio-config.c
>> index b732b77..ac7f13f 100644
>> --- a/arch/arm/plat-samsung/gpio-config.c
>> +++ b/arch/arm/plat-samsung/gpio-config.c
>> @@ -280,16 +280,17 @@ s3c_gpio_pull_t s3c_gpio_getpull_updown(struct
>> s3c_gpio_chip *chip,
>> }
>> #endif
>>
>> -#ifdef CONFIG_S3C_GPIO_PULL_UP
>> -int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> - unsigned int off, s3c_gpio_pull_t pull)
>> +#if defined(CONFIG_S3C_GPIO_PULL_UP) ||
> defined(CONFIG_S3C_GPIO_PULL_DOWN)
>> +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull,
>> + s3c_gpio_pull_t updown)
>
> Hmm...how about s3c_gpio_setpull_1updown(...)?
> And actually, not used 3rd argument, "pull" now.
> I prefer follwoing.
>
You need the 4th arguemnt, because the s3c2440 only supports pullups and the s3c2442
only supports pulldowns. So you want to return -EINVAL if somebody tries to set a
pullup on a s3c2442 based board.
Your proposed solution would return 0 and set a pulldown instead.
> +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
> + unsigned int off, s3c_gpio_pull_t pull)
>
>> {
>> void __iomem *reg = chip->base + 0x08;
>> u32 pup = __raw_readl(reg);
>>
>> pup = __raw_readl(reg);
>
> Hmm...need twice read?
>
>>
>> - if (pup == S3C_GPIO_PULL_UP)
>> + if (pup == updown)
>> pup &= ~(1 << off);
>> else if (pup == S3C_GPIO_PULL_NONE)
>> pup |= (1 << off);
>
> Is this right? I think, your code is wrong :-(
> Of course, original code has bug too...
>
> Should be like follwoing.
>
> + pup >>= off;
> +
> + if ((pull == S3C_GPIO_PULL_UP) || (pull == S3C_GPIO_PULL_DOWN))
> + pup &= ~(1 << off);
> + else if (pull == S3C_GPIO_PULL_NONE)
> + pup |= (1 << off);
> + else
> + return -EINVAL;
>
> ...
> But, according to your patch, maybe not called "else if" and "else".
> Because you only used "S3C_GPIO_PULL_UP" and "S3C_GPIO_PULL_DOWN" as
> argument from caller function.
>
> So should be separate it as Ben's original code.
>
>> @@ -300,17 +301,46 @@ int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> return 0;
>> }
>>
>> -s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
>> - unsigned int off)
>> +static s3c_gpio_pull_t s3c_gpio_getpull_1(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t
> updown)
>
> s3c_gpio_getpull_1updown(...)?
> And...why need 3rd argument, "updown"
Same reason as above.
>
> +static s3c_gpio_pull_t s3c_gpio_getpull_1(struct s3c_gpio_chip *chip,
> + unsigned int off)
>
>> {
>> void __iomem *reg = chip->base + 0x08;
>> u32 pup = __raw_readl(reg);
>>
>> pup &= (1 << off);
>> - return pup ? S3C_GPIO_PULL_NONE : S3C_GPIO_PULL_UP;
>> + return pup ? S3C_GPIO_PULL_NONE : updown;
>
> Is this right?
> Hmm...No...
Why do you think it is wrong? As far as I can see it is correct.
>
>> +}
>> +#endif /* CONFIG_S3C_GPIO_PULL_UP || CONFIG_S3C_GPIO_PULL_DOWN */
>> +
>> +#ifdef CONFIG_S3C_GPIO_PULL_UP
>> +s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
>> + unsigned int off)
>> +{
>> + return s3c_gpio_getpull_1(chip, off, S3C_GPIO_PULL_UP);
>> +}
>> +
>> +int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull)
>> +{
>> + return s3c_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_UP);
>> }
>> #endif /* CONFIG_S3C_GPIO_PULL_UP */
>>
>> +#ifdef CONFIG_S3C_GPIO_PULL_DOWN
>> +s3c_gpio_pull_t s3c_gpio_getpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off)
>> +{
>> + return s3c_gpio_getpull_1(chip, off, S3C_GPIO_PULL_DOWN);
>> +}
>> +
>> +int s3c_gpio_setpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull)
>> +{
>> + return s3c_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_DOWN);
>> +}
>> +#endif /* CONFIG_S3C_GPIO_PULL_DOWN */
>> +
>> +
>
> No need 2 empty lines.
>
>> #ifdef CONFIG_S5P_GPIO_DRVSTR
>> s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int pin)
>> {
>> diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> b/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> index 8fd65d8..0d2c570 100644
>> --- a/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> +++ b/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> @@ -210,6 +210,17 @@ extern s3c_gpio_pull_t s3c_gpio_getpull_1up(struct
>> s3c_gpio_chip *chip,
>> unsigned int off);
>>
>> /**
>> + * s3c_gpio_getpull_1down() - Get configuration for choice of down or
> none
>> + * @chip: The gpio chip that the GPIO pin belongs to
>> + * @off: The offset to the pin to get the configuration of.
>> + *
>> + * This helper function reads the state of the pull-down resistor for the
>> + * given GPIO in the same case as s3c_gpio_setpull_1down.
>> +*/
>> +extern s3c_gpio_pull_t s3c_gpio_getpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off);
>> +
>
> Need to add "extern int s3c_gpio_setpull_1down(...);"
It is already present in the current code.
>
>> +/**
>> * s3c_gpio_setpull_s3c2443() - Pull configuration for s3c2443.
>> * @chip: The gpio chip that is being configured.
>> * @off: The offset for the GPIO being configured.
>> --
>
> Please make sure your code has no problem again before submitting.
> However, your pointing out is right. Should be fixed this...
>
> Thanks.
>
> Best regards,
> Kgene.
> --
> Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
> SW Solution Development Team, Samsung Electronics Co., Ltd.
>
WARNING: multiple messages have this Message-ID (diff)
From: lars@metafoo.de (Lars-Peter Clausen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks
Date: Tue, 30 Nov 2010 12:53:43 +0100 [thread overview]
Message-ID: <4CF4E5C7.5020600@metafoo.de> (raw)
In-Reply-To: <001801cb9056$65296530$2f7c2f90$%kim@samsung.com>
On 11/30/2010 07:18 AM, Kukjin Kim wrote:
> 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 compiling kernel for s3c2442:
>>
>> 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'
>>
> Yeah, happened build error when selected only S3C2442.
>
>> 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 s3c2442 cpu init function to the new pulldown helper functions.
>>
>> Based on patch from "Lars-Peter Clausen" <lars@metafoo.de>
>>
>> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
>> ---
>> v2: adapt patch for 2.6.37-rc1
>> v3: restore default pull callbacks, add default pull callbacks for s3c2442
>> arch/arm/mach-s3c2440/Kconfig | 1 +
>> arch/arm/mach-s3c2440/s3c2442.c | 7 +++
>> arch/arm/plat-s3c24xx/gpiolib.c | 9 +++-
>> arch/arm/plat-samsung/gpio-config.c | 44
> ++++++++++++++++--
>> -
>> .../plat-samsung/include/plat/gpio-cfg-helpers.h | 11 +++++
>> 5 files changed, 63 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
>> index ff024a6..478fae0 100644
>> --- a/arch/arm/mach-s3c2440/Kconfig
>> +++ b/arch/arm/mach-s3c2440/Kconfig
>> @@ -18,6 +18,7 @@ config CPU_S3C2440
>> config CPU_S3C2442
>> bool
>> select CPU_ARM920T
>> + select S3C_GPIO_PULL_DOWN
>> select S3C2410_CLOCK
>> select S3C2410_GPIO
>> select S3C2410_PM if PM
>> diff --git a/arch/arm/mach-s3c2440/s3c2442.c b/arch/arm/mach-
>> s3c2440/s3c2442.c
>> index 188ad1e..0dbc91c 100644
>> --- a/arch/arm/mach-s3c2440/s3c2442.c
>> +++ b/arch/arm/mach-s3c2440/s3c2442.c
>> @@ -32,6 +32,7 @@
>> #include <linux/interrupt.h>
>> #include <linux/ioport.h>
>> #include <linux/mutex.h>
>> +#include <linux/gpio.h>
>> #include <linux/clk.h>
>> #include <linux/io.h>
>>
>> @@ -44,6 +45,10 @@
>> #include <plat/clock.h>
>> #include <plat/cpu.h>
>>
>> +#include <plat/gpio-core.h>
>> +#include <plat/gpio-cfg.h>
>> +#include <plat/gpio-cfg-helpers.h>
>> +
>> /* S3C2442 extended clock support */
>>
>> static unsigned long s3c2442_camif_upll_round(struct clk *clk,
>> @@ -160,6 +165,8 @@ static struct sys_device s3c2442_sysdev = {
>> int __init s3c2442_init(void)
>> {
>> printk("S3C2442: Initialising architecture\n");
>
> To add empty line would be helpful to read here.
>
>> + s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1down;
>> + s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1down;
>>
> Right now, this is ok to me...but I think we need to sort this out with
> other S3C SoCs.
>
>> return sysdev_register(&s3c2442_sysdev);
>> }
>> diff --git a/arch/arm/plat-s3c24xx/gpiolib.c b/arch/arm/plat-
>> s3c24xx/gpiolib.c
>> index 24c6f5a..b805dab 100644
>> --- a/arch/arm/plat-s3c24xx/gpiolib.c
>> +++ b/arch/arm/plat-s3c24xx/gpiolib.c
>> @@ -82,8 +82,13 @@ static struct s3c_gpio_cfg s3c24xx_gpiocfg_banka = {
>> struct s3c_gpio_cfg s3c24xx_gpiocfg_default = {
>> .set_config = s3c_gpio_setcfg_s3c24xx,
>> .get_config = s3c_gpio_getcfg_s3c24xx,
>> - .set_pull = s3c_gpio_setpull_1up,
>> - .get_pull = s3c_gpio_getpull_1up,
>> +#if defined(CONFIG_S3C_GPIO_PULL_UP)
>> + .set_pull = s3c_gpio_setpull_1up,
>> + .get_pull = s3c_gpio_getpull_1up,
> ^^^^^^
> Why do you use white space instead of tab?
> Original code used tab in there.
>
>> +#elif defined(CONFIG_S3C_GPIO_PULL_DOWN)
>> + .set_pull = s3c_gpio_setpull_1down,
>> + .get_pull = s3c_gpio_getpull_1down,
>> +#endif
>
> Yeah, this is needed for avoiding build error with only S3C2442.
> But please remember, now, its default is CONFIG_S3C_GPIO_PULL_UP when used
> s3c2410_defconfig even though selected S3C_GPIO_PULL_DOWN together.
>
> I will thinking about better method for single binary kernel of S3C24XX. As
> you know, current your method can not support it.
>
>> };
>>
>> struct s3c_gpio_chip s3c24xx_gpios[] = {
>> diff --git a/arch/arm/plat-samsung/gpio-config.c b/arch/arm/plat-
>> samsung/gpio-config.c
>> index b732b77..ac7f13f 100644
>> --- a/arch/arm/plat-samsung/gpio-config.c
>> +++ b/arch/arm/plat-samsung/gpio-config.c
>> @@ -280,16 +280,17 @@ s3c_gpio_pull_t s3c_gpio_getpull_updown(struct
>> s3c_gpio_chip *chip,
>> }
>> #endif
>>
>> -#ifdef CONFIG_S3C_GPIO_PULL_UP
>> -int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> - unsigned int off, s3c_gpio_pull_t pull)
>> +#if defined(CONFIG_S3C_GPIO_PULL_UP) ||
> defined(CONFIG_S3C_GPIO_PULL_DOWN)
>> +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull,
>> + s3c_gpio_pull_t updown)
>
> Hmm...how about s3c_gpio_setpull_1updown(...)?
> And actually, not used 3rd argument, "pull" now.
> I prefer follwoing.
>
You need the 4th arguemnt, because the s3c2440 only supports pullups and the s3c2442
only supports pulldowns. So you want to return -EINVAL if somebody tries to set a
pullup on a s3c2442 based board.
Your proposed solution would return 0 and set a pulldown instead.
> +static int s3c_gpio_setpull_1(struct s3c_gpio_chip *chip,
> + unsigned int off, s3c_gpio_pull_t pull)
>
>> {
>> void __iomem *reg = chip->base + 0x08;
>> u32 pup = __raw_readl(reg);
>>
>> pup = __raw_readl(reg);
>
> Hmm...need twice read?
>
>>
>> - if (pup == S3C_GPIO_PULL_UP)
>> + if (pup == updown)
>> pup &= ~(1 << off);
>> else if (pup == S3C_GPIO_PULL_NONE)
>> pup |= (1 << off);
>
> Is this right? I think, your code is wrong :-(
> Of course, original code has bug too...
>
> Should be like follwoing.
>
> + pup >>= off;
> +
> + if ((pull == S3C_GPIO_PULL_UP) || (pull == S3C_GPIO_PULL_DOWN))
> + pup &= ~(1 << off);
> + else if (pull == S3C_GPIO_PULL_NONE)
> + pup |= (1 << off);
> + else
> + return -EINVAL;
>
> ...
> But, according to your patch, maybe not called "else if" and "else".
> Because you only used "S3C_GPIO_PULL_UP" and "S3C_GPIO_PULL_DOWN" as
> argument from caller function.
>
> So should be separate it as Ben's original code.
>
>> @@ -300,17 +301,46 @@ int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> return 0;
>> }
>>
>> -s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
>> - unsigned int off)
>> +static s3c_gpio_pull_t s3c_gpio_getpull_1(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t
> updown)
>
> s3c_gpio_getpull_1updown(...)?
> And...why need 3rd argument, "updown"
Same reason as above.
>
> +static s3c_gpio_pull_t s3c_gpio_getpull_1(struct s3c_gpio_chip *chip,
> + unsigned int off)
>
>> {
>> void __iomem *reg = chip->base + 0x08;
>> u32 pup = __raw_readl(reg);
>>
>> pup &= (1 << off);
>> - return pup ? S3C_GPIO_PULL_NONE : S3C_GPIO_PULL_UP;
>> + return pup ? S3C_GPIO_PULL_NONE : updown;
>
> Is this right?
> Hmm...No...
Why do you think it is wrong? As far as I can see it is correct.
>
>> +}
>> +#endif /* CONFIG_S3C_GPIO_PULL_UP || CONFIG_S3C_GPIO_PULL_DOWN */
>> +
>> +#ifdef CONFIG_S3C_GPIO_PULL_UP
>> +s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
>> + unsigned int off)
>> +{
>> + return s3c_gpio_getpull_1(chip, off, S3C_GPIO_PULL_UP);
>> +}
>> +
>> +int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull)
>> +{
>> + return s3c_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_UP);
>> }
>> #endif /* CONFIG_S3C_GPIO_PULL_UP */
>>
>> +#ifdef CONFIG_S3C_GPIO_PULL_DOWN
>> +s3c_gpio_pull_t s3c_gpio_getpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off)
>> +{
>> + return s3c_gpio_getpull_1(chip, off, S3C_GPIO_PULL_DOWN);
>> +}
>> +
>> +int s3c_gpio_setpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off, s3c_gpio_pull_t pull)
>> +{
>> + return s3c_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_DOWN);
>> +}
>> +#endif /* CONFIG_S3C_GPIO_PULL_DOWN */
>> +
>> +
>
> No need 2 empty lines.
>
>> #ifdef CONFIG_S5P_GPIO_DRVSTR
>> s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int pin)
>> {
>> diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> b/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> index 8fd65d8..0d2c570 100644
>> --- a/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> +++ b/arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
>> @@ -210,6 +210,17 @@ extern s3c_gpio_pull_t s3c_gpio_getpull_1up(struct
>> s3c_gpio_chip *chip,
>> unsigned int off);
>>
>> /**
>> + * s3c_gpio_getpull_1down() - Get configuration for choice of down or
> none
>> + * @chip: The gpio chip that the GPIO pin belongs to
>> + * @off: The offset to the pin to get the configuration of.
>> + *
>> + * This helper function reads the state of the pull-down resistor for the
>> + * given GPIO in the same case as s3c_gpio_setpull_1down.
>> +*/
>> +extern s3c_gpio_pull_t s3c_gpio_getpull_1down(struct s3c_gpio_chip *chip,
>> + unsigned int off);
>> +
>
> Need to add "extern int s3c_gpio_setpull_1down(...);"
It is already present in the current code.
>
>> +/**
>> * s3c_gpio_setpull_s3c2443() - Pull configuration for s3c2443.
>> * @chip: The gpio chip that is being configured.
>> * @off: The offset for the GPIO being configured.
>> --
>
> Please make sure your code has no problem again before submitting.
> However, your pointing out is right. Should be fixed this...
>
> Thanks.
>
> Best regards,
> Kgene.
> --
> Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
> SW Solution Development Team, Samsung Electronics Co., Ltd.
>
next prev parent reply other threads:[~2010-11-30 11:53 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-20 22:00 [PATCH] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Lars-Peter Clausen
2010-09-20 22:00 ` Lars-Peter Clausen
2010-09-20 22:00 ` [PATCH] ARM: s3c24xx: Set ARCH_NR_GPIOS according to the selected SoC types Lars-Peter Clausen
2010-09-20 22:00 ` Lars-Peter Clausen
2010-09-20 23:41 ` [PATCH] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Ben Dooks
2010-09-20 23:41 ` Ben Dooks
2010-09-21 5:28 ` Abdoulaye Walsimou GAYE
2010-09-21 5:28 ` Abdoulaye Walsimou GAYE
2010-11-06 7:54 ` [PATCH v2] " Vasily Khoruzhick
2010-11-06 7:54 ` Vasily Khoruzhick
2010-11-06 16:09 ` Abdoulaye Walsimou GAYE
2010-11-08 9:08 ` Vasily Khoruzhick
2010-11-08 9:08 ` Vasily Khoruzhick
2010-11-08 20:26 ` [PATCH v3] " Vasily Khoruzhick
2010-11-08 20:26 ` Vasily Khoruzhick
2010-11-08 21:41 ` Abdoulaye Walsimou GAYE
2010-11-08 21:41 ` Abdoulaye Walsimou GAYE
2010-11-29 9:56 ` Vasily Khoruzhick
2010-11-29 9:56 ` Vasily Khoruzhick
2010-11-29 10:15 ` Kukjin Kim
2010-11-29 10:15 ` Kukjin Kim
2010-11-29 10:26 ` [PATCH RESEND " Vasily Khoruzhick
2010-11-29 10:26 ` Vasily Khoruzhick
2010-11-30 6:18 ` Kukjin Kim
2010-11-30 6:18 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Kukjin Kim
2010-11-30 11:53 ` Lars-Peter Clausen [this message]
2010-11-30 11:53 ` Lars-Peter Clausen
2010-11-30 12:01 ` Vasily Khoruzhick
2010-11-30 12:01 ` Vasily Khoruzhick
2010-11-30 13:12 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Lars-Peter Clausen
2010-11-30 13:12 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Lars-Peter Clausen
2010-11-30 14:33 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-30 14:33 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-11-30 14:53 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Lars-Peter Clausen
2010-11-30 14:53 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Lars-Peter Clausen
2010-11-30 15:01 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-30 15:01 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-11-30 19:46 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-30 19:59 ` Lars-Peter Clausen
2010-11-30 19:59 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Lars-Peter Clausen
2010-11-30 20:05 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-30 20:05 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-11-30 20:12 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-30 20:12 ` Vasily Khoruzhick
2010-12-01 0:22 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Ben Dooks
2010-12-03 9:40 ` Kukjin Kim
2010-12-01 7:26 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Kukjin Kim
2010-12-01 7:26 ` Kukjin Kim
2010-12-01 10:17 ` Vasily Khoruzhick
2010-12-01 10:17 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-12-01 12:05 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Kukjin Kim
2010-12-01 12:05 ` Kukjin Kim
2010-12-01 12:16 ` Vasily Khoruzhick
2010-12-01 12:16 ` [PATCH v5] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-12-01 5:28 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Kukjin Kim
2010-12-01 5:28 ` Kukjin Kim
2010-12-01 6:19 ` Vasily Khoruzhick
2010-12-01 6:19 ` [PATCH v4] ARM: s3c244x: Fix mess with gpio {set, get}_pull callbacks Vasily Khoruzhick
2010-12-01 6:29 ` [PATCH v6] ARM: s3c244x: Fix mess with gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-12-01 6:29 ` Vasily Khoruzhick
2010-11-30 19:46 ` [PATCH v4] " Vasily Khoruzhick
2010-12-01 5:19 ` [PATCH RESEND v3] ARM: s3c2442: Setup " Kukjin Kim
2010-12-01 5:19 ` [PATCH RESEND v3] ARM: s3c2442: Setup gpio {set, get}_pull callbacks Kukjin Kim
2010-11-29 10:28 ` [PATCH v3] ARM: s3c2442: Setup gpio {set,get}_pull callbacks Vasily Khoruzhick
2010-11-29 10:28 ` Vasily Khoruzhick
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CF4E5C7.5020600@metafoo.de \
--to=lars@metafoo.de \
--cc=anarsoul@gmail.com \
--cc=awg@embtoolkit.org \
--cc=ben-linux@fluff.org \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.