public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] gpio: langwell: ensure alternate function is cleared
@ 2011-10-03 11:36 Adrian Hunter
  2011-10-04 18:37 ` Grant Likely
  2011-10-06 10:15 ` Grant Likely
  0 siblings, 2 replies; 7+ messages in thread
From: Adrian Hunter @ 2011-10-03 11:36 UTC (permalink / raw)
  To: grant.likely; +Cc: linux-kernel, Adrian Hunter, Alan Cox

Alternate function must be zero for the pin to act as
a GPIO.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
---
 drivers/gpio/gpio-langwell.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
index d2eb57c..00692e8 100644
--- a/drivers/gpio/gpio-langwell.c
+++ b/drivers/gpio/gpio-langwell.c
@@ -59,6 +59,7 @@ enum GPIO_REG {
 	GRER,		/* rising edge detect */
 	GFER,		/* falling edge detect */
 	GEDR,		/* edge detect result */
+	GAFR,		/* alt function */
 };
 
 struct lnw_gpio {
@@ -81,6 +82,31 @@ static void __iomem *gpio_reg(struct gpio_chip *chip, unsigned offset,
 	return ptr;
 }
 
+static void __iomem *gpio_reg_2bit(struct gpio_chip *chip, unsigned offset,
+				   enum GPIO_REG reg_type)
+{
+	struct lnw_gpio *lnw = container_of(chip, struct lnw_gpio, chip);
+	unsigned nreg = chip->ngpio / 32;
+	u8 reg = offset / 16;
+	void __iomem *ptr;
+
+	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);
+	return ptr;
+}
+
+static int lnw_gpio_request(struct gpio_chip *chip, unsigned offset)
+{
+	void __iomem *gafr = gpio_reg_2bit(chip, offset, GAFR);
+	u32 value = readl(gafr);
+	int shift = (offset % 16) << 1, af = (value >> shift) & 3;
+
+	if (af) {
+		value &= ~(3 << shift);
+		writel(value, gafr);
+	}
+	return 0;
+}
+
 static int lnw_gpio_get(struct gpio_chip *chip, unsigned offset)
 {
 	void __iomem *gplr = gpio_reg(chip, offset, GPLR);
@@ -321,6 +347,7 @@ static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
 	lnw->reg_base = base;
 	lnw->irq_base = irq_base;
 	lnw->chip.label = dev_name(&pdev->dev);
+	lnw->chip.request = lnw_gpio_request;
 	lnw->chip.direction_input = lnw_gpio_direction_input;
 	lnw->chip.direction_output = lnw_gpio_direction_output;
 	lnw->chip.get = lnw_gpio_get;
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-03 11:36 [PATCH] gpio: langwell: ensure alternate function is cleared Adrian Hunter
@ 2011-10-04 18:37 ` Grant Likely
  2011-10-05  7:52   ` Adrian Hunter
  2011-10-06 10:15 ` Grant Likely
  1 sibling, 1 reply; 7+ messages in thread
From: Grant Likely @ 2011-10-04 18:37 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-kernel, Alan Cox

On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
> Alternate function must be zero for the pin to act as
> a GPIO.
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Alan Cox <alan@linux.intel.com>
> ---
>  drivers/gpio/gpio-langwell.c |   27 +++++++++++++++++++++++++++
>  1 files changed, 27 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
> index d2eb57c..00692e8 100644
> --- a/drivers/gpio/gpio-langwell.c
> +++ b/drivers/gpio/gpio-langwell.c
> @@ -59,6 +59,7 @@ enum GPIO_REG {
>  	GRER,		/* rising edge detect */
>  	GFER,		/* falling edge detect */
>  	GEDR,		/* edge detect result */
> +	GAFR,		/* alt function */
>  };
>  
>  struct lnw_gpio {
> @@ -81,6 +82,31 @@ static void __iomem *gpio_reg(struct gpio_chip *chip, unsigned offset,
>  	return ptr;
>  }
>  
> +static void __iomem *gpio_reg_2bit(struct gpio_chip *chip, unsigned offset,
> +				   enum GPIO_REG reg_type)
> +{
> +	struct lnw_gpio *lnw = container_of(chip, struct lnw_gpio, chip);
> +	unsigned nreg = chip->ngpio / 32;
> +	u8 reg = offset / 16;
> +	void __iomem *ptr;
> +
> +	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);

This looks wrong.  It looks to me like the __iomem annotation should
be added to ->reg_base.

Otherwise, the patch looks okay.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-04 18:37 ` Grant Likely
@ 2011-10-05  7:52   ` Adrian Hunter
  2011-10-05 16:58     ` Grant Likely
  0 siblings, 1 reply; 7+ messages in thread
From: Adrian Hunter @ 2011-10-05  7:52 UTC (permalink / raw)
  To: Grant Likely; +Cc: linux-kernel, Alan Cox

On 04/10/11 21:37, Grant Likely wrote:
> On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
>> Alternate function must be zero for the pin to act as
>> a GPIO.
>>
>> Signed-off-by: Adrian Hunter<adrian.hunter@intel.com>
>> Signed-off-by: Alan Cox<alan@linux.intel.com>
>> ---
>>   drivers/gpio/gpio-langwell.c |   27 +++++++++++++++++++++++++++
>>   1 files changed, 27 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
>> index d2eb57c..00692e8 100644
>> --- a/drivers/gpio/gpio-langwell.c
>> +++ b/drivers/gpio/gpio-langwell.c
>> @@ -59,6 +59,7 @@ enum GPIO_REG {
>>   	GRER,		/* rising edge detect */
>>   	GFER,		/* falling edge detect */
>>   	GEDR,		/* edge detect result */
>> +	GAFR,		/* alt function */
>>   };
>>
>>   struct lnw_gpio {
>> @@ -81,6 +82,31 @@ static void __iomem *gpio_reg(struct gpio_chip *chip, unsigned offset,
>>   	return ptr;
>>   }
>>
>> +static void __iomem *gpio_reg_2bit(struct gpio_chip *chip, unsigned offset,
>> +				   enum GPIO_REG reg_type)
>> +{
>> +	struct lnw_gpio *lnw = container_of(chip, struct lnw_gpio, chip);
>> +	unsigned nreg = chip->ngpio / 32;
>> +	u8 reg = offset / 16;
>> +	void __iomem *ptr;
>> +
>> +	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);
>
> This looks wrong.  It looks to me like the __iomem annotation should
> be added to ->reg_base.
>
> Otherwise, the patch looks okay.
>

Deserves a separate patch...

From: Adrian Hunter <adrian.hunter@intel.com>
Date: Wed, 5 Oct 2011 10:29:27 +0300
Subject: [PATCH] gpio: langwell: declare reg_base as __iomem

reg_base is __iomem so add that to the declaration
and fix up assignment casts and types.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
  drivers/gpio/gpio-langwell.c |   12 ++++++------
  1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
index 00692e8..b7465e5 100644
--- a/drivers/gpio/gpio-langwell.c
+++ b/drivers/gpio/gpio-langwell.c
@@ -64,7 +64,7 @@ enum GPIO_REG {

  struct lnw_gpio {
  	struct gpio_chip		chip;
-	void				*reg_base;
+	void __iomem			*reg_base;
  	spinlock_t			lock;
  	unsigned			irq_base;
  	struct pci_dev			*pdev;
@@ -78,7 +78,7 @@ static void __iomem *gpio_reg(struct gpio_chip *chip, 
unsigned offset,
  	u8 reg = offset / 32;
  	void __iomem *ptr;

-	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);
+	ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
  	return ptr;
  }

@@ -90,7 +90,7 @@ static void __iomem *gpio_reg_2bit(struct gpio_chip 
*chip, unsigned offset,
  	u8 reg = offset / 16;
  	void __iomem *ptr;

-	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);
+	ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
  	return ptr;
  }

@@ -299,7 +299,7 @@ static const struct dev_pm_ops lnw_gpio_pm_ops = {
  static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
  			const struct pci_device_id *id)
  {
-	void *base;
+	void __iomem *base;
  	int i;
  	resource_size_t start, len;
  	struct lnw_gpio *lnw;
@@ -324,8 +324,8 @@ static int __devinit lnw_gpio_probe(struct pci_dev 
*pdev,
  		dev_err(&pdev->dev, "error mapping bar1\n");
  		goto err3;
  	}
-	irq_base = *(u32 *)base;
-	gpio_base = *((u32 *)base + 1);
+	irq_base = *(__force u32 *)base;
+	gpio_base = *((__force u32 *)base + 1);
  	/* release the IO mapping, since we already get the info from bar1 */
  	iounmap(base);
  	/* get the register base from bar0 */
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-05  7:52   ` Adrian Hunter
@ 2011-10-05 16:58     ` Grant Likely
  2011-10-06  6:37       ` Adrian Hunter
  0 siblings, 1 reply; 7+ messages in thread
From: Grant Likely @ 2011-10-05 16:58 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-kernel, Alan Cox

On Wed, Oct 5, 2011 at 1:52 AM, Adrian Hunter <adrian.hunter@intel.com> wrote:
> On 04/10/11 21:37, Grant Likely wrote:
>>
>> On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
>>> +       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg
>>> * 4);
>>
>> This looks wrong.  It looks to me like the __iomem annotation should
>> be added to ->reg_base.
>>
>> Otherwise, the patch looks okay.
>>
>
> Deserves a separate patch...

What order do they get applied in?  </grant-being-lazy>

>
> From: Adrian Hunter <adrian.hunter@intel.com>
> Date: Wed, 5 Oct 2011 10:29:27 +0300
> Subject: [PATCH] gpio: langwell: declare reg_base as __iomem
>
> reg_base is __iomem so add that to the declaration
> and fix up assignment casts and types.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
>  drivers/gpio/gpio-langwell.c |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
> index 00692e8..b7465e5 100644
> --- a/drivers/gpio/gpio-langwell.c
> +++ b/drivers/gpio/gpio-langwell.c
> @@ -64,7 +64,7 @@ enum GPIO_REG {
>
>  struct lnw_gpio {
>        struct gpio_chip                chip;
> -       void                            *reg_base;
> +       void __iomem                    *reg_base;
>        spinlock_t                      lock;
>        unsigned                        irq_base;
>        struct pci_dev                  *pdev;
> @@ -78,7 +78,7 @@ static void __iomem *gpio_reg(struct gpio_chip *chip,
> unsigned offset,
>        u8 reg = offset / 32;
>        void __iomem *ptr;
>
> -       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
> 4);
> +       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
>        return ptr;
>  }
>
> @@ -90,7 +90,7 @@ static void __iomem *gpio_reg_2bit(struct gpio_chip *chip,
> unsigned offset,
>        u8 reg = offset / 16;
>        void __iomem *ptr;
>
> -       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
> 4);
> +       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
>        return ptr;
>  }
>
> @@ -299,7 +299,7 @@ static const struct dev_pm_ops lnw_gpio_pm_ops = {
>  static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
>                        const struct pci_device_id *id)
>  {
> -       void *base;
> +       void __iomem *base;
>        int i;
>        resource_size_t start, len;
>        struct lnw_gpio *lnw;
> @@ -324,8 +324,8 @@ static int __devinit lnw_gpio_probe(struct pci_dev
> *pdev,
>                dev_err(&pdev->dev, "error mapping bar1\n");
>                goto err3;
>        }
> -       irq_base = *(u32 *)base;
> -       gpio_base = *((u32 *)base + 1);
> +       irq_base = *(__force u32 *)base;
> +       gpio_base = *((__force u32 *)base + 1);
>        /* release the IO mapping, since we already get the info from bar1 */
>        iounmap(base);
>        /* get the register base from bar0 */
> --
> 1.7.6
>
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-05 16:58     ` Grant Likely
@ 2011-10-06  6:37       ` Adrian Hunter
  2011-10-06 10:19         ` Grant Likely
  0 siblings, 1 reply; 7+ messages in thread
From: Adrian Hunter @ 2011-10-06  6:37 UTC (permalink / raw)
  To: Grant Likely; +Cc: linux-kernel, Alan Cox

On 05/10/11 19:58, Grant Likely wrote:
> On Wed, Oct 5, 2011 at 1:52 AM, Adrian Hunter<adrian.hunter@intel.com>  wrote:
>> On 04/10/11 21:37, Grant Likely wrote:
>>>
>>> On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
>>>> +       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg
>>>> * 4);
>>>
>>> This looks wrong.  It looks to me like the __iomem annotation should
>>> be added to ->reg_base.
>>>
>>> Otherwise, the patch looks okay.
>>>
>>
>> Deserves a separate patch...
>
> What order do they get applied in?</grant-being-lazy>

First one first ;-)

i.e.

gpio: langwell: ensure alternate function is cleared
gpio: langwell: declare reg_base as __iomem

Since the absence of __iomem was present before the original
patch, there is no advantage to having the second one first,
but the original patch would need to be changed as well.

>
>>
>> From: Adrian Hunter<adrian.hunter@intel.com>
>> Date: Wed, 5 Oct 2011 10:29:27 +0300
>> Subject: [PATCH] gpio: langwell: declare reg_base as __iomem
>>
>> reg_base is __iomem so add that to the declaration
>> and fix up assignment casts and types.
>>
>> Signed-off-by: Adrian Hunter<adrian.hunter@intel.com>
>> ---
>>   drivers/gpio/gpio-langwell.c |   12 ++++++------
>>   1 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
>> index 00692e8..b7465e5 100644
>> --- a/drivers/gpio/gpio-langwell.c
>> +++ b/drivers/gpio/gpio-langwell.c
>> @@ -64,7 +64,7 @@ enum GPIO_REG {
>>
>>   struct lnw_gpio {
>>         struct gpio_chip                chip;
>> -       void                            *reg_base;
>> +       void __iomem                    *reg_base;
>>         spinlock_t                      lock;
>>         unsigned                        irq_base;
>>         struct pci_dev                  *pdev;
>> @@ -78,7 +78,7 @@ static void __iomem *gpio_reg(struct gpio_chip *chip,
>> unsigned offset,
>>         u8 reg = offset / 32;
>>         void __iomem *ptr;
>>
>> -       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
>> 4);
>> +       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
>>         return ptr;
>>   }
>>
>> @@ -90,7 +90,7 @@ static void __iomem *gpio_reg_2bit(struct gpio_chip *chip,
>> unsigned offset,
>>         u8 reg = offset / 16;
>>         void __iomem *ptr;
>>
>> -       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
>> 4);
>> +       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
>>         return ptr;
>>   }
>>
>> @@ -299,7 +299,7 @@ static const struct dev_pm_ops lnw_gpio_pm_ops = {
>>   static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
>>                         const struct pci_device_id *id)
>>   {
>> -       void *base;
>> +       void __iomem *base;
>>         int i;
>>         resource_size_t start, len;
>>         struct lnw_gpio *lnw;
>> @@ -324,8 +324,8 @@ static int __devinit lnw_gpio_probe(struct pci_dev
>> *pdev,
>>                 dev_err(&pdev->dev, "error mapping bar1\n");
>>                 goto err3;
>>         }
>> -       irq_base = *(u32 *)base;
>> -       gpio_base = *((u32 *)base + 1);
>> +       irq_base = *(__force u32 *)base;
>> +       gpio_base = *((__force u32 *)base + 1);
>>         /* release the IO mapping, since we already get the info from bar1 */
>>         iounmap(base);
>>         /* get the register base from bar0 */
>> --
>> 1.7.6
>>
>>
>
>
>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-03 11:36 [PATCH] gpio: langwell: ensure alternate function is cleared Adrian Hunter
  2011-10-04 18:37 ` Grant Likely
@ 2011-10-06 10:15 ` Grant Likely
  1 sibling, 0 replies; 7+ messages in thread
From: Grant Likely @ 2011-10-06 10:15 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-kernel, Alan Cox

On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
> Alternate function must be zero for the pin to act as
> a GPIO.
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Alan Cox <alan@linux.intel.com>

Applied, thanks.

g.

> ---
>  drivers/gpio/gpio-langwell.c |   27 +++++++++++++++++++++++++++
>  1 files changed, 27 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
> index d2eb57c..00692e8 100644
> --- a/drivers/gpio/gpio-langwell.c
> +++ b/drivers/gpio/gpio-langwell.c
> @@ -59,6 +59,7 @@ enum GPIO_REG {
>  	GRER,		/* rising edge detect */
>  	GFER,		/* falling edge detect */
>  	GEDR,		/* edge detect result */
> +	GAFR,		/* alt function */
>  };
>  
>  struct lnw_gpio {
> @@ -81,6 +82,31 @@ static void __iomem *gpio_reg(struct gpio_chip *chip, unsigned offset,
>  	return ptr;
>  }
>  
> +static void __iomem *gpio_reg_2bit(struct gpio_chip *chip, unsigned offset,
> +				   enum GPIO_REG reg_type)
> +{
> +	struct lnw_gpio *lnw = container_of(chip, struct lnw_gpio, chip);
> +	unsigned nreg = chip->ngpio / 32;
> +	u8 reg = offset / 16;
> +	void __iomem *ptr;
> +
> +	ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg * 4);
> +	return ptr;
> +}
> +
> +static int lnw_gpio_request(struct gpio_chip *chip, unsigned offset)
> +{
> +	void __iomem *gafr = gpio_reg_2bit(chip, offset, GAFR);
> +	u32 value = readl(gafr);
> +	int shift = (offset % 16) << 1, af = (value >> shift) & 3;
> +
> +	if (af) {
> +		value &= ~(3 << shift);
> +		writel(value, gafr);
> +	}
> +	return 0;
> +}
> +
>  static int lnw_gpio_get(struct gpio_chip *chip, unsigned offset)
>  {
>  	void __iomem *gplr = gpio_reg(chip, offset, GPLR);
> @@ -321,6 +347,7 @@ static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
>  	lnw->reg_base = base;
>  	lnw->irq_base = irq_base;
>  	lnw->chip.label = dev_name(&pdev->dev);
> +	lnw->chip.request = lnw_gpio_request;
>  	lnw->chip.direction_input = lnw_gpio_direction_input;
>  	lnw->chip.direction_output = lnw_gpio_direction_output;
>  	lnw->chip.get = lnw_gpio_get;
> -- 
> 1.7.6
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] gpio: langwell: ensure alternate function is cleared
  2011-10-06  6:37       ` Adrian Hunter
@ 2011-10-06 10:19         ` Grant Likely
  0 siblings, 0 replies; 7+ messages in thread
From: Grant Likely @ 2011-10-06 10:19 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-kernel, Alan Cox

On Thu, Oct 06, 2011 at 09:37:21AM +0300, Adrian Hunter wrote:
> On 05/10/11 19:58, Grant Likely wrote:
> >On Wed, Oct 5, 2011 at 1:52 AM, Adrian Hunter<adrian.hunter@intel.com>  wrote:
> >>On 04/10/11 21:37, Grant Likely wrote:
> >>>
> >>>On Mon, Oct 03, 2011 at 02:36:07PM +0300, Adrian Hunter wrote:
> >>>>+       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg
> >>>>* 4);
> >>>
> >>>This looks wrong.  It looks to me like the __iomem annotation should
> >>>be added to ->reg_base.
> >>>
> >>>Otherwise, the patch looks okay.
> >>>
> >>
> >>Deserves a separate patch...
> >
> >What order do they get applied in?</grant-being-lazy>
> 
> First one first ;-)

Please repost the 2nd patch properly.  The way it was copied in caused
whitespace corruption and forces me to manually apply the patch.  It
adds a lot of extra work if I cannot use "git am" to apply from my
inbox.

Thanks,
g.

> 
> i.e.
> 
> gpio: langwell: ensure alternate function is cleared
> gpio: langwell: declare reg_base as __iomem
> 
> Since the absence of __iomem was present before the original
> patch, there is no advantage to having the second one first,
> but the original patch would need to be changed as well.
> 
> >
> >>
> >>From: Adrian Hunter<adrian.hunter@intel.com>
> >>Date: Wed, 5 Oct 2011 10:29:27 +0300
> >>Subject: [PATCH] gpio: langwell: declare reg_base as __iomem
> >>
> >>reg_base is __iomem so add that to the declaration
> >>and fix up assignment casts and types.
> >>
> >>Signed-off-by: Adrian Hunter<adrian.hunter@intel.com>
> >>---
> >>  drivers/gpio/gpio-langwell.c |   12 ++++++------
> >>  1 files changed, 6 insertions(+), 6 deletions(-)
> >>
> >>diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c
> >>index 00692e8..b7465e5 100644
> >>--- a/drivers/gpio/gpio-langwell.c
> >>+++ b/drivers/gpio/gpio-langwell.c
> >>@@ -64,7 +64,7 @@ enum GPIO_REG {
> >>
> >>  struct lnw_gpio {
> >>        struct gpio_chip                chip;
> >>-       void                            *reg_base;
> >>+       void __iomem                    *reg_base;
> >>        spinlock_t                      lock;
> >>        unsigned                        irq_base;
> >>        struct pci_dev                  *pdev;
> >>@@ -78,7 +78,7 @@ static void __iomem *gpio_reg(struct gpio_chip *chip,
> >>unsigned offset,
> >>        u8 reg = offset / 32;
> >>        void __iomem *ptr;
> >>
> >>-       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
> >>4);
> >>+       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
> >>        return ptr;
> >>  }
> >>
> >>@@ -90,7 +90,7 @@ static void __iomem *gpio_reg_2bit(struct gpio_chip *chip,
> >>unsigned offset,
> >>        u8 reg = offset / 16;
> >>        void __iomem *ptr;
> >>
> >>-       ptr = (void __iomem *)(lnw->reg_base + reg_type * nreg * 4 + reg *
> >>4);
> >>+       ptr = lnw->reg_base + reg_type * nreg * 4 + reg * 4;
> >>        return ptr;
> >>  }
> >>
> >>@@ -299,7 +299,7 @@ static const struct dev_pm_ops lnw_gpio_pm_ops = {
> >>  static int __devinit lnw_gpio_probe(struct pci_dev *pdev,
> >>                        const struct pci_device_id *id)
> >>  {
> >>-       void *base;
> >>+       void __iomem *base;
> >>        int i;
> >>        resource_size_t start, len;
> >>        struct lnw_gpio *lnw;
> >>@@ -324,8 +324,8 @@ static int __devinit lnw_gpio_probe(struct pci_dev
> >>*pdev,
> >>                dev_err(&pdev->dev, "error mapping bar1\n");
> >>                goto err3;
> >>        }
> >>-       irq_base = *(u32 *)base;
> >>-       gpio_base = *((u32 *)base + 1);
> >>+       irq_base = *(__force u32 *)base;
> >>+       gpio_base = *((__force u32 *)base + 1);
> >>        /* release the IO mapping, since we already get the info from bar1 */
> >>        iounmap(base);
> >>        /* get the register base from bar0 */
> >>--
> >>1.7.6
> >>
> >>
> >
> >
> >
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-10-06 10:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-03 11:36 [PATCH] gpio: langwell: ensure alternate function is cleared Adrian Hunter
2011-10-04 18:37 ` Grant Likely
2011-10-05  7:52   ` Adrian Hunter
2011-10-05 16:58     ` Grant Likely
2011-10-06  6:37       ` Adrian Hunter
2011-10-06 10:19         ` Grant Likely
2011-10-06 10:15 ` Grant Likely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox