All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] ti-st: st_kim: use ERR_PTR(-ENOMEM) instead of NULL
@ 2015-06-24 10:24 Jürg Billeter
  2015-06-24 10:24 ` [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data Jürg Billeter
  2015-06-24 10:24 ` [PATCH 3/3] ti-st: st_kim: use gpio_set_value_cansleep to fix warning Jürg Billeter
  0 siblings, 2 replies; 6+ messages in thread
From: Jürg Billeter @ 2015-06-24 10:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Gigi Joseph, Colin Ian King, linux-kernel, Jürg Billeter

This allows return of other error codes.

Signed-off-by: Jürg Billeter <j@bitron.ch>
---
 drivers/misc/ti-st/st_kim.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
index 5027b8f..af71584 100644
--- a/drivers/misc/ti-st/st_kim.c
+++ b/drivers/misc/ti-st/st_kim.c
@@ -752,8 +752,11 @@ static struct ti_st_plat_data *get_platform_data(struct device *dev)
 	int len;
 
 	dt_pdata = kzalloc(sizeof(*dt_pdata), GFP_KERNEL);
-	if (!dt_pdata)
-		return NULL;
+
+	if (!dt_pdata) {
+		pr_err("Can't allocate device_tree platform data\n");
+		return ERR_PTR(-ENOMEM);
+	}
 
 	dt_property = of_get_property(np, "dev_name", &len);
 	if (dt_property)
@@ -773,10 +776,13 @@ static int kim_probe(struct platform_device *pdev)
 	struct ti_st_plat_data	*pdata;
 	int err;
 
-	if (pdev->dev.of_node)
+	if (pdev->dev.of_node) {
 		pdata = get_platform_data(&pdev->dev);
-	else
+		if (IS_ERR(pdata))
+			return PTR_ERR(pdata);
+	} else {
 		pdata = pdev->dev.platform_data;
+	}
 
 	if (pdata == NULL) {
 		dev_err(&pdev->dev, "Platform Data is missing\n");
-- 
2.4.3


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

* [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data
  2015-06-24 10:24 [PATCH 1/3] ti-st: st_kim: use ERR_PTR(-ENOMEM) instead of NULL Jürg Billeter
@ 2015-06-24 10:24 ` Jürg Billeter
  2015-06-24 15:31   ` Peter Hurley
  2015-06-24 10:24 ` [PATCH 3/3] ti-st: st_kim: use gpio_set_value_cansleep to fix warning Jürg Billeter
  1 sibling, 1 reply; 6+ messages in thread
From: Jürg Billeter @ 2015-06-24 10:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Gigi Joseph, Colin Ian King, linux-kernel, Jürg Billeter

Use of_get_named_gpio instead of of_property_read_u32.

Signed-off-by: Jürg Billeter <j@bitron.ch>
---
 drivers/misc/ti-st/st_kim.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
index af71584..8df8faa 100644
--- a/drivers/misc/ti-st/st_kim.c
+++ b/drivers/misc/ti-st/st_kim.c
@@ -38,6 +38,7 @@
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/of_gpio.h>
 
 #define MAX_ST_DEVICES	3	/* Imagine 1 on each UART for now */
 static struct platform_device *st_kim_devices[MAX_ST_DEVICES];
@@ -749,7 +750,7 @@ static struct ti_st_plat_data *get_platform_data(struct device *dev)
 {
 	struct device_node *np = dev->of_node;
 	const u32 *dt_property;
-	int len;
+	int len, gpio;
 
 	dt_pdata = kzalloc(sizeof(*dt_pdata), GFP_KERNEL);
 
@@ -761,8 +762,14 @@ static struct ti_st_plat_data *get_platform_data(struct device *dev)
 	dt_property = of_get_property(np, "dev_name", &len);
 	if (dt_property)
 		memcpy(&dt_pdata->dev_name, dt_property, len);
-	of_property_read_u32(np, "nshutdown_gpio",
-			     &dt_pdata->nshutdown_gpio);
+
+	gpio = of_get_named_gpio(np, "nshutdown_gpio", 0);
+	if (gpio < 0) {
+		kfree(dt_pdata);
+		return ERR_PTR(gpio);
+	}
+	dt_pdata->nshutdown_gpio = gpio;
+
 	of_property_read_u32(np, "flow_cntrl", &dt_pdata->flow_cntrl);
 	of_property_read_u32(np, "baud_rate", &dt_pdata->baud_rate);
 
-- 
2.4.3


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

* [PATCH 3/3] ti-st: st_kim: use gpio_set_value_cansleep to fix warning
  2015-06-24 10:24 [PATCH 1/3] ti-st: st_kim: use ERR_PTR(-ENOMEM) instead of NULL Jürg Billeter
  2015-06-24 10:24 ` [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data Jürg Billeter
@ 2015-06-24 10:24 ` Jürg Billeter
  1 sibling, 0 replies; 6+ messages in thread
From: Jürg Billeter @ 2015-06-24 10:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Gigi Joseph, Colin Ian King, linux-kernel, Jürg Billeter

GPIO accessor functions may sleep.

Signed-off-by: Jürg Billeter <j@bitron.ch>
---
 drivers/misc/ti-st/st_kim.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
index 8df8faa..0ab81d7 100644
--- a/drivers/misc/ti-st/st_kim.c
+++ b/drivers/misc/ti-st/st_kim.c
@@ -483,9 +483,9 @@ long st_kim_start(void *kim_data)
 			pdata->chip_enable(kim_gdata);
 
 		/* Configure BT nShutdown to HIGH state */
-		gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
+		gpio_set_value_cansleep(kim_gdata->nshutdown, GPIO_LOW);
 		mdelay(5);	/* FIXME: a proper toggle */
-		gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
+		gpio_set_value_cansleep(kim_gdata->nshutdown, GPIO_HIGH);
 		mdelay(100);
 		/* re-initialize the completion */
 		reinit_completion(&kim_gdata->ldisc_installed);
@@ -567,11 +567,11 @@ long st_kim_stop(void *kim_data)
 	}
 
 	/* By default configure BT nShutdown to LOW state */
-	gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
+	gpio_set_value_cansleep(kim_gdata->nshutdown, GPIO_LOW);
 	mdelay(1);
-	gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
+	gpio_set_value_cansleep(kim_gdata->nshutdown, GPIO_HIGH);
 	mdelay(1);
-	gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
+	gpio_set_value_cansleep(kim_gdata->nshutdown, GPIO_LOW);
 
 	/* platform specific disable */
 	if (pdata->chip_disable)
-- 
2.4.3


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

* Re: [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data
  2015-06-24 10:24 ` [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data Jürg Billeter
@ 2015-06-24 15:31   ` Peter Hurley
  2015-06-24 15:39     ` Jürg Billeter
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Hurley @ 2015-06-24 15:31 UTC (permalink / raw)
  To: Jürg Billeter, Greg Kroah-Hartman
  Cc: Gigi Joseph, Colin Ian King, linux-kernel

On 06/24/2015 06:24 AM, Jürg Billeter wrote:
> Use of_get_named_gpio instead of of_property_read_u32.
> 
> Signed-off-by: Jürg Billeter <j@bitron.ch>
> ---
>  drivers/misc/ti-st/st_kim.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
> index af71584..8df8faa 100644
> --- a/drivers/misc/ti-st/st_kim.c
> +++ b/drivers/misc/ti-st/st_kim.c
> @@ -38,6 +38,7 @@
>  #include <linux/module.h>
>  #include <linux/of.h>
>  #include <linux/of_device.h>
> +#include <linux/of_gpio.h>
>  
>  #define MAX_ST_DEVICES	3	/* Imagine 1 on each UART for now */
>  static struct platform_device *st_kim_devices[MAX_ST_DEVICES];
> @@ -749,7 +750,7 @@ static struct ti_st_plat_data *get_platform_data(struct device *dev)
>  {
>  	struct device_node *np = dev->of_node;
>  	const u32 *dt_property;
> -	int len;
> +	int len, gpio;
>  
>  	dt_pdata = kzalloc(sizeof(*dt_pdata), GFP_KERNEL);
>  
> @@ -761,8 +762,14 @@ static struct ti_st_plat_data *get_platform_data(struct device *dev)
>  	dt_property = of_get_property(np, "dev_name", &len);
>  	if (dt_property)
>  		memcpy(&dt_pdata->dev_name, dt_property, len);
> -	of_property_read_u32(np, "nshutdown_gpio",
> -			     &dt_pdata->nshutdown_gpio);
> +
> +	gpio = of_get_named_gpio(np, "nshutdown_gpio", 0);

NAK. This breaks existing dtbs, since the format is not the same.

Regards,
Peter Hurley


> +	if (gpio < 0) {
> +		kfree(dt_pdata);
> +		return ERR_PTR(gpio);
> +	}
> +	dt_pdata->nshutdown_gpio = gpio;
> +
>  	of_property_read_u32(np, "flow_cntrl", &dt_pdata->flow_cntrl);
>  	of_property_read_u32(np, "baud_rate", &dt_pdata->baud_rate);
>  
> 


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

* Re: [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data
  2015-06-24 15:31   ` Peter Hurley
@ 2015-06-24 15:39     ` Jürg Billeter
  2015-06-24 15:49       ` Peter Hurley
  0 siblings, 1 reply; 6+ messages in thread
From: Jürg Billeter @ 2015-06-24 15:39 UTC (permalink / raw)
  To: Peter Hurley
  Cc: Greg Kroah-Hartman, Gigi Joseph, Colin Ian King, linux-kernel

On Wed, 2015-06-24 at 11:31 -0400, Peter Hurley wrote:
> On 06/24/2015 06:24 AM, Jürg Billeter wrote:
> > @@ -761,8 +762,14 @@ static struct ti_st_plat_data
> > *get_platform_data(struct device *dev)
> >  	dt_property = of_get_property(np, "dev_name", &len);
> >  	if (dt_property)
> >  		memcpy(&dt_pdata->dev_name, dt_property, len);
> > -	of_property_read_u32(np, "nshutdown_gpio",
> > -			     &dt_pdata->nshutdown_gpio);
> > +
> > +	gpio = of_get_named_gpio(np, "nshutdown_gpio", 0);
> 
> NAK. This breaks existing dtbs, since the format is not the same.

Isn't the existing code completely broken as there is no predictable
GPIO numbering in general? There is also no documentation or use of
that device tree property in the kernel tree, as far as I can tell.

Do you have a suggestion how to fix this without breaking existing
dtbs? Do we need to introduce a second property and support both in the
driver?

Regards,
Jürg

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

* Re: [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data
  2015-06-24 15:39     ` Jürg Billeter
@ 2015-06-24 15:49       ` Peter Hurley
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Hurley @ 2015-06-24 15:49 UTC (permalink / raw)
  To: Jürg Billeter
  Cc: Greg Kroah-Hartman, Gigi Joseph, Colin Ian King, linux-kernel

On 06/24/2015 11:39 AM, Jürg Billeter wrote:
> Do you have a suggestion how to fix this without breaking existing
> dtbs? Do we need to introduce a second property and support both in the
> driver?

Exactly.

Regards,
Peter Hurley

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

end of thread, other threads:[~2015-06-24 15:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-24 10:24 [PATCH 1/3] ti-st: st_kim: use ERR_PTR(-ENOMEM) instead of NULL Jürg Billeter
2015-06-24 10:24 ` [PATCH 2/3] ti-st: st_kim: fix nshutdown_gpio in get_platform_data Jürg Billeter
2015-06-24 15:31   ` Peter Hurley
2015-06-24 15:39     ` Jürg Billeter
2015-06-24 15:49       ` Peter Hurley
2015-06-24 10:24 ` [PATCH 3/3] ti-st: st_kim: use gpio_set_value_cansleep to fix warning Jürg Billeter

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.