All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-08-31 19:40 ` Stephen Warren
  0 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-08-31 19:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: devel, Andrew Chew, Arnd Bergmann, linux-iio, linux-kernel,
	Jonathan Cameron, linux-tegra, Stephen Warren

Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
method for now.

I suspect the long-term solution is to pass both the IRQ and GPIO IDs
to the driver; the GPIO ID coming from either platform data, or perhaps
enhancing struct i2c_client to add a gpio field alongside irq.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
Russell, now that irq_to_gpio() is going away, can you comment on how
you'd like to fix drivers that do this kind of thing? Thanks.

 drivers/staging/iio/magnetometer/ak8975.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index a17fa9f..bd40e32 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
 	int err;
 
 	/* Grab and set up the supplied GPIO. */
-	eoc_gpio = irq_to_gpio(client->irq);
+	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-- 
1.7.0.4

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

* [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-08-31 19:40 ` Stephen Warren
  0 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-08-31 19:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Andrew Chew, Arnd Bergmann, linux-iio, devel,
	linux-kernel, linux-tegra, Stephen Warren

Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
method for now.

I suspect the long-term solution is to pass both the IRQ and GPIO IDs
to the driver; the GPIO ID coming from either platform data, or perhaps
enhancing struct i2c_client to add a gpio field alongside irq.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
Russell, now that irq_to_gpio() is going away, can you comment on how
you'd like to fix drivers that do this kind of thing? Thanks.

 drivers/staging/iio/magnetometer/ak8975.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index a17fa9f..bd40e32 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
 	int err;
 
 	/* Grab and set up the supplied GPIO. */
-	eoc_gpio = irq_to_gpio(client->irq);
+	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-- 
1.7.0.4


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

* [PATCH 2/3] staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO
  2011-08-31 19:40 ` Stephen Warren
@ 2011-08-31 19:40     ` Stephen Warren
  -1 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-08-31 19:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Andrew Chew, Arnd Bergmann,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Stephen Warren

gpio_is_valid() is the defined mechanism to determine whether a GPIO is
valid. Use this instead of assuming that 0 is an invalid GPIO.

Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
---
 drivers/staging/iio/magnetometer/ak8975.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index bd40e32..79ed183 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -373,7 +373,7 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val)
 	}
 
 	/* Wait for the conversion to complete. */
-	if (data->eoc_gpio)
+	if (gpio_is_valid(data->eoc_gpio))
 		ret = wait_conversion_complete_gpio(data);
 	else
 		ret = wait_conversion_complete_polled(data);
@@ -481,7 +481,7 @@ static int ak8975_probe(struct i2c_client *client,
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-	if (eoc_gpio > 0) {
+	if (gpio_is_valid(eoc_gpio)) {
 		err = gpio_request(eoc_gpio, "ak_8975");
 		if (err < 0) {
 			dev_err(&client->dev,
@@ -497,8 +497,7 @@ static int ak8975_probe(struct i2c_client *client,
 						eoc_gpio, err);
 			goto exit_gpio;
 		}
-	} else
-		eoc_gpio = 0;	/* No GPIO available */
+	}
 
 	/* Register with IIO */
 	indio_dev = iio_allocate_device(sizeof(*data));
@@ -534,7 +533,7 @@ static int ak8975_probe(struct i2c_client *client,
 exit_free_iio:
 	iio_free_device(indio_dev);
 exit_gpio:
-	if (eoc_gpio)
+	if (gpio_is_valid(eoc_gpio))
 		gpio_free(eoc_gpio);
 exit:
 	return err;
@@ -549,7 +548,7 @@ static int ak8975_remove(struct i2c_client *client)
 	iio_device_unregister(indio_dev);
 	iio_free_device(indio_dev);
 
-	if (eoc_gpio)
+	if (gpio_is_valid(eoc_gpio))
 		gpio_free(eoc_gpio);
 
 	return 0;
-- 
1.7.0.4

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

* [PATCH 2/3] staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO
@ 2011-08-31 19:40     ` Stephen Warren
  0 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-08-31 19:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Andrew Chew, Arnd Bergmann, linux-iio, devel,
	linux-kernel, linux-tegra, Stephen Warren

gpio_is_valid() is the defined mechanism to determine whether a GPIO is
valid. Use this instead of assuming that 0 is an invalid GPIO.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 drivers/staging/iio/magnetometer/ak8975.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index bd40e32..79ed183 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -373,7 +373,7 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val)
 	}
 
 	/* Wait for the conversion to complete. */
-	if (data->eoc_gpio)
+	if (gpio_is_valid(data->eoc_gpio))
 		ret = wait_conversion_complete_gpio(data);
 	else
 		ret = wait_conversion_complete_polled(data);
@@ -481,7 +481,7 @@ static int ak8975_probe(struct i2c_client *client,
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-	if (eoc_gpio > 0) {
+	if (gpio_is_valid(eoc_gpio)) {
 		err = gpio_request(eoc_gpio, "ak_8975");
 		if (err < 0) {
 			dev_err(&client->dev,
@@ -497,8 +497,7 @@ static int ak8975_probe(struct i2c_client *client,
 						eoc_gpio, err);
 			goto exit_gpio;
 		}
-	} else
-		eoc_gpio = 0;	/* No GPIO available */
+	}
 
 	/* Register with IIO */
 	indio_dev = iio_allocate_device(sizeof(*data));
@@ -534,7 +533,7 @@ static int ak8975_probe(struct i2c_client *client,
 exit_free_iio:
 	iio_free_device(indio_dev);
 exit_gpio:
-	if (eoc_gpio)
+	if (gpio_is_valid(eoc_gpio))
 		gpio_free(eoc_gpio);
 exit:
 	return err;
@@ -549,7 +548,7 @@ static int ak8975_remove(struct i2c_client *client)
 	iio_device_unregister(indio_dev);
 	iio_free_device(indio_dev);
 
-	if (eoc_gpio)
+	if (gpio_is_valid(eoc_gpio))
 		gpio_free(eoc_gpio);
 
 	return 0;
-- 
1.7.0.4


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

* [PATCH 3/3] staging:iio:magnetometer:ak8975: Fix probe() error-handling
  2011-08-31 19:40 ` Stephen Warren
  (?)
@ 2011-08-31 19:40 ` Stephen Warren
       [not found]   ` <1314819657-828-3-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
  -1 siblings, 1 reply; 27+ messages in thread
From: Stephen Warren @ 2011-08-31 19:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Andrew Chew, Arnd Bergmann, linux-iio, devel,
	linux-kernel, linux-tegra, Stephen Warren

Fix ak8975_probe() to jump to the appropriate exit labels when an error
occurs. With the previous code, some cleanup actions were being skipped
for some error conditions.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 drivers/staging/iio/magnetometer/ak8975.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index 79ed183..d92b3d0 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -510,7 +510,7 @@ static int ak8975_probe(struct i2c_client *client,
 	err = ak8975_setup(client);
 	if (err < 0) {
 		dev_err(&client->dev, "AK8975 initialization fails\n");
-		goto exit_gpio;
+		goto exit_free_iio;
 	}
 
 	i2c_set_clientdata(client, indio_dev);
-- 
1.7.0.4

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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-08-31 19:40 ` Stephen Warren
  (?)
@ 2011-08-31 19:45     ` Andrew Chew
  -1 siblings, 0 replies; 27+ messages in thread
From: Andrew Chew @ 2011-08-31 19:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Arnd Bergmann,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Stephen Warren

> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
> use irq_to_gpio()
> 
> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> tegra_defconfig. This causes a build failure. Solve this with 
> a heavy-handed
> method for now.
> 
> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> to the driver; the GPIO ID coming from either platform data, 
> or perhaps
> enhancing struct i2c_client to add a gpio field alongside irq.
> 
> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---

The three patches in this set LGTM.

Acked-by: Andrew Chew <achew-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 

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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-08-31 19:45     ` Andrew Chew
  0 siblings, 0 replies; 27+ messages in thread
From: Andrew Chew @ 2011-08-31 19:45 UTC (permalink / raw)
  To: Stephen Warren, Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Arnd Bergmann, linux-iio, devel, linux-kernel,
	linux-tegra, Stephen Warren

> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
> use irq_to_gpio()
> 
> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> tegra_defconfig. This causes a build failure. Solve this with 
> a heavy-handed
> method for now.
> 
> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> to the driver; the GPIO ID coming from either platform data, 
> or perhaps
> enhancing struct i2c_client to add a gpio field alongside irq.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---

The three patches in this set LGTM.

Acked-by: Andrew Chew <achew@nvidia.com> 

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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-08-31 19:45     ` Andrew Chew
  0 siblings, 0 replies; 27+ messages in thread
From: Andrew Chew @ 2011-08-31 19:45 UTC (permalink / raw)
  To: Stephen Warren, Greg Kroah-Hartman, Russell King
  Cc: Jonathan Cameron, Arnd Bergmann, linux-iio, devel, linux-kernel,
	linux-tegra, Stephen Warren

> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't=20
> use irq_to_gpio()
>=20
> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> tegra_defconfig. This causes a build failure. Solve this with=20
> a heavy-handed
> method for now.
>=20
> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> to the driver; the GPIO ID coming from either platform data,=20
> or perhaps
> enhancing struct i2c_client to add a gpio field alongside irq.
>=20
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---

The three patches in this set LGTM.

Acked-by: Andrew Chew <achew@nvidia.com>=20

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-08-31 19:45     ` Andrew Chew
@ 2011-09-01  9:01         ` Jonathan Cameron
  -1 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:01 UTC (permalink / raw)
  To: Andrew Chew
  Cc: Stephen Warren, Greg Kroah-Hartman, Russell King, Arnd Bergmann,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On 08/31/11 20:45, Andrew Chew wrote:
>> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
>> use irq_to_gpio()
>>
>> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
>> tegra_defconfig. This causes a build failure. Solve this with 
>> a heavy-handed
>> method for now.
>>
>> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
>> to the driver; the GPIO ID coming from either platform data, 
>> or perhaps
>> enhancing struct i2c_client to add a gpio field alongside irq.
>>
>> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>> ---
> 
> The three patches in this set LGTM.
> 
> Acked-by: Andrew Chew <achew-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 
> 

Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
a pointer to an int in as platform_data.  Patch to follow.

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01  9:01         ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:01 UTC (permalink / raw)
  To: Andrew Chew
  Cc: Stephen Warren, Greg Kroah-Hartman, Russell King, Arnd Bergmann,
	linux-iio, devel, linux-kernel, linux-tegra

On 08/31/11 20:45, Andrew Chew wrote:
>> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
>> use irq_to_gpio()
>>
>> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
>> tegra_defconfig. This causes a build failure. Solve this with 
>> a heavy-handed
>> method for now.
>>
>> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
>> to the driver; the GPIO ID coming from either platform data, 
>> or perhaps
>> enhancing struct i2c_client to add a gpio field alongside irq.
>>
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>> ---
> 
> The three patches in this set LGTM.
> 
> Acked-by: Andrew Chew <achew@nvidia.com> 
> 

Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
a pointer to an int in as platform_data.  Patch to follow.

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

* [PATCH] staging:iio:magnetometer:ak8975 use platform_data to pass the gpio number.
  2011-09-01  9:01         ` Jonathan Cameron
@ 2011-09-01  9:04             ` Jonathan Cameron
  -1 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:04 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andrew Chew, Stephen Warren, Greg Kroah-Hartman, Russell King,
	Arnd Bergmann, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

Basically provide another means to set this value given irq_to_gpio has
gone away.

Signed-off-by: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
---
 drivers/staging/iio/magnetometer/ak8975.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index c1ff430..ab0e26c 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -477,7 +477,10 @@ static int ak8975_probe(struct i2c_client *client,
 	int err;
 
 	/* Grab and set up the supplied GPIO. */
-	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
+	if (client->dev.platform_data == NULL)
+		eoc_gpio = -1;
+	else
+		eoc_gpio = *(int *)(client->dev.platform_data);
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-- 
1.7.3.4

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

* [PATCH] staging:iio:magnetometer:ak8975 use platform_data to pass the gpio number.
@ 2011-09-01  9:04             ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:04 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andrew Chew, Stephen Warren, Greg Kroah-Hartman, Russell King,
	Arnd Bergmann, linux-iio, devel, linux-kernel, linux-tegra

Basically provide another means to set this value given irq_to_gpio has
gone away.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/magnetometer/ak8975.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index c1ff430..ab0e26c 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -477,7 +477,10 @@ static int ak8975_probe(struct i2c_client *client,
 	int err;
 
 	/* Grab and set up the supplied GPIO. */
-	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
+	if (client->dev.platform_data == NULL)
+		eoc_gpio = -1;
+	else
+		eoc_gpio = *(int *)(client->dev.platform_data);
 
 	/* We may not have a GPIO based IRQ to scan, that is fine, we will
 	   poll if so */
-- 
1.7.3.4


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

* Re: [PATCH 2/3] staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO
  2011-08-31 19:40     ` Stephen Warren
@ 2011-09-01  9:06         ` Jonathan Cameron
  -1 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:06 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Greg Kroah-Hartman, Russell King, Andrew Chew, Arnd Bergmann,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On 08/31/11 20:40, Stephen Warren wrote:
> gpio_is_valid() is the defined mechanism to determine whether a GPIO is
> valid. Use this instead of assuming that 0 is an invalid GPIO.
> 
Greg, depending on merge order you will get some fuzz between this and something
in my tree.

> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Acked-by: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
> ---
>  drivers/staging/iio/magnetometer/ak8975.c |   11 +++++------
>  1 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index bd40e32..79ed183 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -373,7 +373,7 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val)
>  	}
>  
>  	/* Wait for the conversion to complete. */
> -	if (data->eoc_gpio)
> +	if (gpio_is_valid(data->eoc_gpio))
>  		ret = wait_conversion_complete_gpio(data);
>  	else
>  		ret = wait_conversion_complete_polled(data);
> @@ -481,7 +481,7 @@ static int ak8975_probe(struct i2c_client *client,
>  
>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>  	   poll if so */
> -	if (eoc_gpio > 0) {
> +	if (gpio_is_valid(eoc_gpio)) {
>  		err = gpio_request(eoc_gpio, "ak_8975");
>  		if (err < 0) {
>  			dev_err(&client->dev,
> @@ -497,8 +497,7 @@ static int ak8975_probe(struct i2c_client *client,
>  						eoc_gpio, err);
>  			goto exit_gpio;
>  		}
> -	} else
> -		eoc_gpio = 0;	/* No GPIO available */
> +	}
>  
>  	/* Register with IIO */
>  	indio_dev = iio_allocate_device(sizeof(*data));
> @@ -534,7 +533,7 @@ static int ak8975_probe(struct i2c_client *client,
>  exit_free_iio:
>  	iio_free_device(indio_dev);
>  exit_gpio:
> -	if (eoc_gpio)
> +	if (gpio_is_valid(eoc_gpio))
>  		gpio_free(eoc_gpio);
>  exit:
>  	return err;
> @@ -549,7 +548,7 @@ static int ak8975_remove(struct i2c_client *client)
>  	iio_device_unregister(indio_dev);
>  	iio_free_device(indio_dev);
>  
> -	if (eoc_gpio)
> +	if (gpio_is_valid(eoc_gpio))
>  		gpio_free(eoc_gpio);
>  
>  	return 0;

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

* Re: [PATCH 2/3] staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO
@ 2011-09-01  9:06         ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:06 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Greg Kroah-Hartman, Russell King, Andrew Chew, Arnd Bergmann,
	linux-iio, devel, linux-kernel, linux-tegra

On 08/31/11 20:40, Stephen Warren wrote:
> gpio_is_valid() is the defined mechanism to determine whether a GPIO is
> valid. Use this instead of assuming that 0 is an invalid GPIO.
> 
Greg, depending on merge order you will get some fuzz between this and something
in my tree.

> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
>  drivers/staging/iio/magnetometer/ak8975.c |   11 +++++------
>  1 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index bd40e32..79ed183 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -373,7 +373,7 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val)
>  	}
>  
>  	/* Wait for the conversion to complete. */
> -	if (data->eoc_gpio)
> +	if (gpio_is_valid(data->eoc_gpio))
>  		ret = wait_conversion_complete_gpio(data);
>  	else
>  		ret = wait_conversion_complete_polled(data);
> @@ -481,7 +481,7 @@ static int ak8975_probe(struct i2c_client *client,
>  
>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>  	   poll if so */
> -	if (eoc_gpio > 0) {
> +	if (gpio_is_valid(eoc_gpio)) {
>  		err = gpio_request(eoc_gpio, "ak_8975");
>  		if (err < 0) {
>  			dev_err(&client->dev,
> @@ -497,8 +497,7 @@ static int ak8975_probe(struct i2c_client *client,
>  						eoc_gpio, err);
>  			goto exit_gpio;
>  		}
> -	} else
> -		eoc_gpio = 0;	/* No GPIO available */
> +	}
>  
>  	/* Register with IIO */
>  	indio_dev = iio_allocate_device(sizeof(*data));
> @@ -534,7 +533,7 @@ static int ak8975_probe(struct i2c_client *client,
>  exit_free_iio:
>  	iio_free_device(indio_dev);
>  exit_gpio:
> -	if (eoc_gpio)
> +	if (gpio_is_valid(eoc_gpio))
>  		gpio_free(eoc_gpio);
>  exit:
>  	return err;
> @@ -549,7 +548,7 @@ static int ak8975_remove(struct i2c_client *client)
>  	iio_device_unregister(indio_dev);
>  	iio_free_device(indio_dev);
>  
> -	if (eoc_gpio)
> +	if (gpio_is_valid(eoc_gpio))
>  		gpio_free(eoc_gpio);
>  
>  	return 0;


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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-08-31 19:40 ` Stephen Warren
@ 2011-09-01  9:07   ` Jonathan Cameron
  -1 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:07 UTC (permalink / raw)
  To: Stephen Warren
  Cc: devel, Andrew Chew, Arnd Bergmann, linux-iio, Greg Kroah-Hartman,
	linux-kernel, linux-tegra, Russell King

On 08/31/11 20:40, Stephen Warren wrote:
> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
> method for now.
> 
> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> to the driver; the GPIO ID coming from either platform data, or perhaps
> enhancing struct i2c_client to add a gpio field alongside irq.
Definitely on the platform data front. We need some means of doing this now
hence my patch putting most trivial form of that in.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
> Russell, now that irq_to_gpio() is going away, can you comment on how
> you'd like to fix drivers that do this kind of thing? Thanks.
> 
>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index a17fa9f..bd40e32 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
>  	int err;
>  
>  	/* Grab and set up the supplied GPIO. */
> -	eoc_gpio = irq_to_gpio(client->irq);
> +	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
>  
>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>  	   poll if so */

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01  9:07   ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:07 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Greg Kroah-Hartman, Russell King, Andrew Chew, Arnd Bergmann,
	linux-iio, devel, linux-kernel, linux-tegra

On 08/31/11 20:40, Stephen Warren wrote:
> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
> method for now.
> 
> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> to the driver; the GPIO ID coming from either platform data, or perhaps
> enhancing struct i2c_client to add a gpio field alongside irq.
Definitely on the platform data front. We need some means of doing this now
hence my patch putting most trivial form of that in.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
> Russell, now that irq_to_gpio() is going away, can you comment on how
> you'd like to fix drivers that do this kind of thing? Thanks.
> 
>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index a17fa9f..bd40e32 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
>  	int err;
>  
>  	/* Grab and set up the supplied GPIO. */
> -	eoc_gpio = irq_to_gpio(client->irq);
> +	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
>  
>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>  	   poll if so */


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

* Re: [PATCH 3/3] staging:iio:magnetometer:ak8975: Fix probe() error-handling
  2011-08-31 19:40 ` [PATCH 3/3] staging:iio:magnetometer:ak8975: Fix probe() error-handling Stephen Warren
@ 2011-09-01  9:08       ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:08 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Greg Kroah-Hartman, Russell King, Andrew Chew, Arnd Bergmann,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On 08/31/11 20:40, Stephen Warren wrote:
> Fix ak8975_probe() to jump to the appropriate exit labels when an error
> occurs. With the previous code, some cleanup actions were being skipped
> for some error conditions.
> 
> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Acked-by: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>

Thanks for these Stephen.  There's one other driver in tree that uses irq_to_gpio
(I hadn't registered it was going away till you sent these.)

> ---
>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index 79ed183..d92b3d0 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -510,7 +510,7 @@ static int ak8975_probe(struct i2c_client *client,
>  	err = ak8975_setup(client);
>  	if (err < 0) {
>  		dev_err(&client->dev, "AK8975 initialization fails\n");
> -		goto exit_gpio;
> +		goto exit_free_iio;
>  	}
>  
>  	i2c_set_clientdata(client, indio_dev);

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

* Re: [PATCH 3/3] staging:iio:magnetometer:ak8975: Fix probe() error-handling
@ 2011-09-01  9:08       ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:08 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Greg Kroah-Hartman, Russell King, Andrew Chew, Arnd Bergmann,
	linux-iio, devel, linux-kernel, linux-tegra

On 08/31/11 20:40, Stephen Warren wrote:
> Fix ak8975_probe() to jump to the appropriate exit labels when an error
> occurs. With the previous code, some cleanup actions were being skipped
> for some error conditions.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>

Thanks for these Stephen.  There's one other driver in tree that uses irq_to_gpio
(I hadn't registered it was going away till you sent these.)

> ---
>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
> index 79ed183..d92b3d0 100644
> --- a/drivers/staging/iio/magnetometer/ak8975.c
> +++ b/drivers/staging/iio/magnetometer/ak8975.c
> @@ -510,7 +510,7 @@ static int ak8975_probe(struct i2c_client *client,
>  	err = ak8975_setup(client);
>  	if (err < 0) {
>  		dev_err(&client->dev, "AK8975 initialization fails\n");
> -		goto exit_gpio;
> +		goto exit_free_iio;
>  	}
>  
>  	i2c_set_clientdata(client, indio_dev);


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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-09-01  9:07   ` Jonathan Cameron
@ 2011-09-01  9:24       ` Jonathan Cameron
  -1 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:24 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Stephen Warren, Greg Kroah-Hartman, Russell King, Andrew Chew,
	Arnd Bergmann, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On 09/01/11 10:07, Jonathan Cameron wrote:
> On 08/31/11 20:40, Stephen Warren wrote:
>> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
>> tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
>> method for now.
>>
>> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
>> to the driver; the GPIO ID coming from either platform data, or perhaps
>> enhancing struct i2c_client to add a gpio field alongside irq.
> Definitely on the platform data front. We need some means of doing this now
> hence my patch putting most trivial form of that in.

Actually taking the time to look at the code...

Can someone explain to me (I have a feeling I may just have forgotten this)
why we aren't using an interrupt here?  It looks like a bus transaction triggered
read.  So why not do a enable_irq followed by triggering the read and use a
waitqueue to wait for an interrupt handler to signal it is done?

Having found the datahsheeting lying around on the net I can't see why this
won't work and be somewhat cleaner than current polling approach.

Jonathan
>> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> Acked-by: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
>> ---
>> Russell, now that irq_to_gpio() is going away, can you comment on how
>> you'd like to fix drivers that do this kind of thing? Thanks.
>>
>>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
>> index a17fa9f..bd40e32 100644
>> --- a/drivers/staging/iio/magnetometer/ak8975.c
>> +++ b/drivers/staging/iio/magnetometer/ak8975.c
>> @@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
>>  	int err;
>>  
>>  	/* Grab and set up the supplied GPIO. */
>> -	eoc_gpio = irq_to_gpio(client->irq);
>> +	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
>>  
>>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>>  	   poll if so */
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01  9:24       ` Jonathan Cameron
  0 siblings, 0 replies; 27+ messages in thread
From: Jonathan Cameron @ 2011-09-01  9:24 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Stephen Warren, Greg Kroah-Hartman, Russell King, Andrew Chew,
	Arnd Bergmann, linux-iio, devel, linux-kernel, linux-tegra

On 09/01/11 10:07, Jonathan Cameron wrote:
> On 08/31/11 20:40, Stephen Warren wrote:
>> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
>> tegra_defconfig. This causes a build failure. Solve this with a heavy-handed
>> method for now.
>>
>> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
>> to the driver; the GPIO ID coming from either platform data, or perhaps
>> enhancing struct i2c_client to add a gpio field alongside irq.
> Definitely on the platform data front. We need some means of doing this now
> hence my patch putting most trivial form of that in.

Actually taking the time to look at the code...

Can someone explain to me (I have a feeling I may just have forgotten this)
why we aren't using an interrupt here?  It looks like a bus transaction triggered
read.  So why not do a enable_irq followed by triggering the read and use a
waitqueue to wait for an interrupt handler to signal it is done?

Having found the datahsheeting lying around on the net I can't see why this
won't work and be somewhat cleaner than current polling approach.

Jonathan
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
>> ---
>> Russell, now that irq_to_gpio() is going away, can you comment on how
>> you'd like to fix drivers that do this kind of thing? Thanks.
>>
>>  drivers/staging/iio/magnetometer/ak8975.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
>> index a17fa9f..bd40e32 100644
>> --- a/drivers/staging/iio/magnetometer/ak8975.c
>> +++ b/drivers/staging/iio/magnetometer/ak8975.c
>> @@ -477,7 +477,7 @@ static int ak8975_probe(struct i2c_client *client,
>>  	int err;
>>  
>>  	/* Grab and set up the supplied GPIO. */
>> -	eoc_gpio = irq_to_gpio(client->irq);
>> +	eoc_gpio = -1; /* FIXME: irq_to_gpio(client->irq) */
>>  
>>  	/* We may not have a GPIO based IRQ to scan, that is fine, we will
>>  	   poll if so */
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-09-01  9:01         ` Jonathan Cameron
@ 2011-09-01 11:06             ` Arnd Bergmann
  -1 siblings, 0 replies; 27+ messages in thread
From: Arnd Bergmann @ 2011-09-01 11:06 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andrew Chew, Stephen Warren, Greg Kroah-Hartman, Russell King,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On Thursday 01 September 2011, Jonathan Cameron wrote:
> On 08/31/11 20:45, Andrew Chew wrote:
> >> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
> >> use irq_to_gpio()
> >>
> >> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> >> tegra_defconfig. This causes a build failure. Solve this with 
> >> a heavy-handed
> >> method for now.
> >>
> >> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> >> to the driver; the GPIO ID coming from either platform data, 
> >> or perhaps
> >> enhancing struct i2c_client to add a gpio field alongside irq.
> >>
> >> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> >> ---
> > 
> > The three patches in this set LGTM.
> > 
> > Acked-by: Andrew Chew <achew-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 
> > 
> 
> Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
> a pointer to an int in as platform_data.  Patch to follow.

My feeling is that we should just add another field to
struct i2c_client. There are probably more drivers that
need the same thing, making it appropriate to increase
the size of that struct for everything device instead of
adding platform_data to a subset of the devices.

	Arnd

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01 11:06             ` Arnd Bergmann
  0 siblings, 0 replies; 27+ messages in thread
From: Arnd Bergmann @ 2011-09-01 11:06 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andrew Chew, Stephen Warren, Greg Kroah-Hartman, Russell King,
	linux-iio, devel, linux-kernel, linux-tegra

On Thursday 01 September 2011, Jonathan Cameron wrote:
> On 08/31/11 20:45, Andrew Chew wrote:
> >> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't 
> >> use irq_to_gpio()
> >>
> >> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> >> tegra_defconfig. This causes a build failure. Solve this with 
> >> a heavy-handed
> >> method for now.
> >>
> >> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> >> to the driver; the GPIO ID coming from either platform data, 
> >> or perhaps
> >> enhancing struct i2c_client to add a gpio field alongside irq.
> >>
> >> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> >> ---
> > 
> > The three patches in this set LGTM.
> > 
> > Acked-by: Andrew Chew <achew@nvidia.com> 
> > 
> 
> Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
> a pointer to an int in as platform_data.  Patch to follow.

My feeling is that we should just add another field to
struct i2c_client. There are probably more drivers that
need the same thing, making it appropriate to increase
the size of that struct for everything device instead of
adding platform_data to a subset of the devices.

	Arnd

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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-09-01 11:06             ` Arnd Bergmann
  (?)
@ 2011-09-01 15:36                 ` Stephen Warren
  -1 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-09-01 15:36 UTC (permalink / raw)
  To: Arnd Bergmann, Jonathan Cameron
  Cc: Andrew Chew, Greg Kroah-Hartman, Russell King,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

Arnd Bergmann wrote at Thursday, September 01, 2011 5:07 AM:
> On Thursday 01 September 2011, Jonathan Cameron wrote:
> > On 08/31/11 20:45, Andrew Chew wrote:
> > >> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't
> > >> use irq_to_gpio()
> > >>
> > >> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> > >> tegra_defconfig. This causes a build failure. Solve this with
> > >> a heavy-handed
> > >> method for now.
> > >>
> > >> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> > >> to the driver; the GPIO ID coming from either platform data,
> > >> or perhaps
> > >> enhancing struct i2c_client to add a gpio field alongside irq.
> > >>
> > >> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> > >> ---
> > >
> > > The three patches in this set LGTM.
> > >
> > > Acked-by: Andrew Chew <achew-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> > >
> >
> > Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
> > a pointer to an int in as platform_data.  Patch to follow.
> 
> My feeling is that we should just add another field to
> struct i2c_client. There are probably more drivers that
> need the same thing, making it appropriate to increase
> the size of that struct for everything device instead of
> adding platform_data to a subset of the devices.

That sounds reasonable to me.

One question: When we add this field, how do drivers tell whether a value
of 0 is an uninitialized field, or a legitimate GPIO value of 0? Should we
add a flag to indicate validity, or just work hard to not enable driver-
side code to use this value until we've fixed up all places that instantiate
the driver to initialize the field to some invalid value like -1?

-- 
nvpublic

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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01 15:36                 ` Stephen Warren
  0 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-09-01 15:36 UTC (permalink / raw)
  To: Arnd Bergmann, Jonathan Cameron
  Cc: Andrew Chew, Greg Kroah-Hartman, Russell King, linux-iio, devel,
	linux-kernel, linux-tegra

Arnd Bergmann wrote at Thursday, September 01, 2011 5:07 AM:
> On Thursday 01 September 2011, Jonathan Cameron wrote:
> > On 08/31/11 20:45, Andrew Chew wrote:
> > >> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't
> > >> use irq_to_gpio()
> > >>
> > >> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> > >> tegra_defconfig. This causes a build failure. Solve this with
> > >> a heavy-handed
> > >> method for now.
> > >>
> > >> I suspect the long-term solution is to pass both the IRQ and GPIO IDs
> > >> to the driver; the GPIO ID coming from either platform data,
> > >> or perhaps
> > >> enhancing struct i2c_client to add a gpio field alongside irq.
> > >>
> > >> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > >> ---
> > >
> > > The three patches in this set LGTM.
> > >
> > > Acked-by: Andrew Chew <achew@nvidia.com>
> > >
> >
> > Hmm.. I'd like to see some means of passing that in. Perhaps as simple as passing
> > a pointer to an int in as platform_data.  Patch to follow.
> 
> My feeling is that we should just add another field to
> struct i2c_client. There are probably more drivers that
> need the same thing, making it appropriate to increase
> the size of that struct for everything device instead of
> adding platform_data to a subset of the devices.

That sounds reasonable to me.

One question: When we add this field, how do drivers tell whether a value
of 0 is an uninitialized field, or a legitimate GPIO value of 0? Should we
add a flag to indicate validity, or just work hard to not enable driver-
side code to use this value until we've fixed up all places that instantiate
the driver to initialize the field to some invalid value like -1?

-- 
nvpublic


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

* RE: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01 15:36                 ` Stephen Warren
  0 siblings, 0 replies; 27+ messages in thread
From: Stephen Warren @ 2011-09-01 15:36 UTC (permalink / raw)
  To: Arnd Bergmann, Jonathan Cameron
  Cc: Andrew Chew, Greg Kroah-Hartman, Russell King, linux-iio, devel,
	linux-kernel, linux-tegra

Arnd Bergmann wrote at Thursday, September 01, 2011 5:07 AM:
> On Thursday 01 September 2011, Jonathan Cameron wrote:
> > On 08/31/11 20:45, Andrew Chew wrote:
> > >> Subject: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't
> > >> use irq_to_gpio()
> > >>
> > >> Tegra doesn't have irq_to_gpio() any more, and ak8975 is included in
> > >> tegra_defconfig. This causes a build failure. Solve this with
> > >> a heavy-handed
> > >> method for now.
> > >>
> > >> I suspect the long-term solution is to pass both the IRQ and GPIO ID=
s
> > >> to the driver; the GPIO ID coming from either platform data,
> > >> or perhaps
> > >> enhancing struct i2c_client to add a gpio field alongside irq.
> > >>
> > >> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > >> ---
> > >
> > > The three patches in this set LGTM.
> > >
> > > Acked-by: Andrew Chew <achew@nvidia.com>
> > >
> >
> > Hmm.. I'd like to see some means of passing that in. Perhaps as simple =
as passing
> > a pointer to an int in as platform_data.  Patch to follow.
>=20
> My feeling is that we should just add another field to
> struct i2c_client. There are probably more drivers that
> need the same thing, making it appropriate to increase
> the size of that struct for everything device instead of
> adding platform_data to a subset of the devices.

That sounds reasonable to me.

One question: When we add this field, how do drivers tell whether a value
of 0 is an uninitialized field, or a legitimate GPIO value of 0? Should we
add a flag to indicate validity, or just work hard to not enable driver-
side code to use this value until we've fixed up all places that instantiat=
e
the driver to initialize the field to some invalid value like -1?

--=20
nvpublic

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
  2011-09-01 15:36                 ` Stephen Warren
@ 2011-09-01 16:20                     ` Arnd Bergmann
  -1 siblings, 0 replies; 27+ messages in thread
From: Arnd Bergmann @ 2011-09-01 16:20 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Jonathan Cameron, Andrew Chew, Greg Kroah-Hartman, Russell King,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On Thursday 01 September 2011, Stephen Warren wrote:
> One question: When we add this field, how do drivers tell whether a value
> of 0 is an uninitialized field, or a legitimate GPIO value of 0? Should we
> add a flag to indicate validity, or just work hard to not enable driver-
> side code to use this value until we've fixed up all places that instantiate
> the driver to initialize the field to some invalid value like -1?

I think it's enough to coordinate the driver with the initialization of the
i2c data. If a driver requires a GPIO number, it can assume that it's valid.
Drivers that don't need one don't care. If it's an optional feature, you
might want to either use platform_data after all, or use different identifiers
for devices that have a gpio vs. those that have none -- in effect those are
different types of devices handled by the same driver.

	Arnd

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

* Re: [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio()
@ 2011-09-01 16:20                     ` Arnd Bergmann
  0 siblings, 0 replies; 27+ messages in thread
From: Arnd Bergmann @ 2011-09-01 16:20 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Jonathan Cameron, Andrew Chew, Greg Kroah-Hartman, Russell King,
	linux-iio, devel, linux-kernel, linux-tegra

On Thursday 01 September 2011, Stephen Warren wrote:
> One question: When we add this field, how do drivers tell whether a value
> of 0 is an uninitialized field, or a legitimate GPIO value of 0? Should we
> add a flag to indicate validity, or just work hard to not enable driver-
> side code to use this value until we've fixed up all places that instantiate
> the driver to initialize the field to some invalid value like -1?

I think it's enough to coordinate the driver with the initialization of the
i2c data. If a driver requires a GPIO number, it can assume that it's valid.
Drivers that don't need one don't care. If it's an optional feature, you
might want to either use platform_data after all, or use different identifiers
for devices that have a gpio vs. those that have none -- in effect those are
different types of devices handled by the same driver.

	Arnd

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

end of thread, other threads:[~2011-09-01 16:20 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-31 19:40 [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio() Stephen Warren
2011-08-31 19:40 ` Stephen Warren
2011-08-31 19:40 ` [PATCH 3/3] staging:iio:magnetometer:ak8975: Fix probe() error-handling Stephen Warren
     [not found]   ` <1314819657-828-3-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-09-01  9:08     ` Jonathan Cameron
2011-09-01  9:08       ` Jonathan Cameron
     [not found] ` <1314819657-828-1-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-31 19:40   ` [PATCH 2/3] staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO Stephen Warren
2011-08-31 19:40     ` Stephen Warren
     [not found]     ` <1314819657-828-2-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-09-01  9:06       ` Jonathan Cameron
2011-09-01  9:06         ` Jonathan Cameron
2011-08-31 19:45   ` [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio() Andrew Chew
2011-08-31 19:45     ` Andrew Chew
2011-08-31 19:45     ` Andrew Chew
     [not found]     ` <643E69AA4436674C8F39DCC2C05F76383CF3C784A3-lR+7xdUAJVNDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2011-09-01  9:01       ` Jonathan Cameron
2011-09-01  9:01         ` Jonathan Cameron
     [not found]         ` <4E5F49F4.2080208-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2011-09-01  9:04           ` [PATCH] staging:iio:magnetometer:ak8975 use platform_data to pass the gpio number Jonathan Cameron
2011-09-01  9:04             ` Jonathan Cameron
2011-09-01 11:06           ` [PATCH 1/3] staging:iio:magnetometer:ak8975 Don't use irq_to_gpio() Arnd Bergmann
2011-09-01 11:06             ` Arnd Bergmann
     [not found]             ` <201109011306.50936.arnd-r2nGTMty4D4@public.gmane.org>
2011-09-01 15:36               ` Stephen Warren
2011-09-01 15:36                 ` Stephen Warren
2011-09-01 15:36                 ` Stephen Warren
     [not found]                 ` <74CDBE0F657A3D45AFBB94109FB122FF04B327A2A4-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2011-09-01 16:20                   ` Arnd Bergmann
2011-09-01 16:20                     ` Arnd Bergmann
2011-09-01  9:07 ` Jonathan Cameron
2011-09-01  9:07   ` Jonathan Cameron
     [not found]   ` <4E5F4B4E.5060801-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2011-09-01  9:24     ` Jonathan Cameron
2011-09-01  9:24       ` Jonathan Cameron

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.