All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
To: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: GPIO: Fix probe() error return in gpio driver probes
Date: Sun, 14 Dec 2008 21:33:49 +0000	[thread overview]
Message-ID: <20081214213349.GA19483@fluff.org.uk> (raw)
In-Reply-To: <20081212152426.745254309-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>

On Fri, Dec 12, 2008 at 03:24:27PM +0000, Ben Dooks wrote:
> A number of drivers in drivers/gpio return -ENODEV when confronted
> with missing setup parameters such as the platform data. However,
> returning -ENODEV causes the driver layer to silently ignore the
> driver as it assumes the probe did not find anything and was only
> speculative.
> 
> To make life easier to discern why a driver is not being attached,
> change to returning -EINVAL, which is a better description of the
> fact that the driver data was not valid.
> 
> Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Has anyone reveiwed this patch? Are there any comments, or can this
be commited at somepoint (even if it is during the next merge window)?

> Index: linux.git7/drivers/gpio/max7301.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/max7301.c	2008-12-12 13:35:42.000000000 +0000
> +++ linux.git7/drivers/gpio/max7301.c	2008-12-12 13:36:12.000000000 +0000
> @@ -218,7 +218,7 @@ static int __devinit max7301_probe(struc
>  
>  	pdata = spi->dev.platform_data;
>  	if (!pdata || !pdata->base)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	/*
>  	 * bits_per_word cannot be configured in platform data
> Index: linux.git7/drivers/gpio/max732x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/max732x.c	2008-12-12 13:36:22.000000000 +0000
> +++ linux.git7/drivers/gpio/max732x.c	2008-12-12 13:36:28.000000000 +0000
> @@ -268,7 +268,7 @@ static int __devinit max732x_probe(struc
>  
>  	pdata = client->dev.platform_data;
>  	if (pdata == NULL)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL);
>  	if (chip == NULL)
> Index: linux.git7/drivers/gpio/mcp23s08.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/mcp23s08.c	2008-12-12 14:10:01.000000000 +0000
> +++ linux.git7/drivers/gpio/mcp23s08.c	2008-12-12 14:11:19.000000000 +0000
> @@ -311,7 +311,7 @@ static int mcp23s08_probe(struct spi_dev
>  
>  	pdata = spi->dev.platform_data;
>  	if (!pdata || !gpio_is_valid(pdata->base))
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	for (addr = 0; addr < 4; addr++) {
>  		if (!pdata->chip[addr].is_present)
> Index: linux.git7/drivers/gpio/pca953x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/pca953x.c	2008-12-12 13:33:47.000000000 +0000
> +++ linux.git7/drivers/gpio/pca953x.c	2008-12-12 13:33:55.000000000 +0000
> @@ -201,7 +201,7 @@ static int __devinit pca953x_probe(struc
>  
>  	pdata = client->dev.platform_data;
>  	if (pdata == NULL)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL);
>  	if (chip == NULL)
> Index: linux.git7/drivers/gpio/pcf857x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/pcf857x.c	2008-12-12 13:34:33.000000000 +0000
> +++ linux.git7/drivers/gpio/pcf857x.c	2008-12-12 13:34:54.000000000 +0000
> @@ -189,7 +189,7 @@ static int pcf857x_probe(struct i2c_clie
>  
>  	pdata = client->dev.platform_data;
>  	if (!pdata)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	/* Allocate, initialize, and register this gpio_chip. */
>  	gpio = kzalloc(sizeof *gpio, GFP_KERNEL);
> @@ -249,7 +249,7 @@ static int pcf857x_probe(struct i2c_clie
>  			status = i2c_read_le16(client);
>  
>  	} else
> -		status = -ENODEV;
> +		status = -EINVAL;
>  
>  	if (status < 0)
>  		goto fail;
> 
> -- 
> Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)
> 
>   'a smiley only costs 4 bytes'
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

WARNING: multiple messages have this Message-ID (diff)
From: Ben Dooks <ben-linux@fluff.org>
To: Ben Dooks <ben-linux@fluff.org>
Cc: linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org,
	dbrownell@users.sourceforge.net
Subject: Re: GPIO: Fix probe() error return in gpio driver probes
Date: Sun, 14 Dec 2008 21:33:49 +0000	[thread overview]
Message-ID: <20081214213349.GA19483@fluff.org.uk> (raw)
In-Reply-To: <20081212152426.745254309@fluff.org.uk>

On Fri, Dec 12, 2008 at 03:24:27PM +0000, Ben Dooks wrote:
> A number of drivers in drivers/gpio return -ENODEV when confronted
> with missing setup parameters such as the platform data. However,
> returning -ENODEV causes the driver layer to silently ignore the
> driver as it assumes the probe did not find anything and was only
> speculative.
> 
> To make life easier to discern why a driver is not being attached,
> change to returning -EINVAL, which is a better description of the
> fact that the driver data was not valid.
> 
> Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Has anyone reveiwed this patch? Are there any comments, or can this
be commited at somepoint (even if it is during the next merge window)?

> Index: linux.git7/drivers/gpio/max7301.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/max7301.c	2008-12-12 13:35:42.000000000 +0000
> +++ linux.git7/drivers/gpio/max7301.c	2008-12-12 13:36:12.000000000 +0000
> @@ -218,7 +218,7 @@ static int __devinit max7301_probe(struc
>  
>  	pdata = spi->dev.platform_data;
>  	if (!pdata || !pdata->base)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	/*
>  	 * bits_per_word cannot be configured in platform data
> Index: linux.git7/drivers/gpio/max732x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/max732x.c	2008-12-12 13:36:22.000000000 +0000
> +++ linux.git7/drivers/gpio/max732x.c	2008-12-12 13:36:28.000000000 +0000
> @@ -268,7 +268,7 @@ static int __devinit max732x_probe(struc
>  
>  	pdata = client->dev.platform_data;
>  	if (pdata == NULL)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL);
>  	if (chip == NULL)
> Index: linux.git7/drivers/gpio/mcp23s08.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/mcp23s08.c	2008-12-12 14:10:01.000000000 +0000
> +++ linux.git7/drivers/gpio/mcp23s08.c	2008-12-12 14:11:19.000000000 +0000
> @@ -311,7 +311,7 @@ static int mcp23s08_probe(struct spi_dev
>  
>  	pdata = spi->dev.platform_data;
>  	if (!pdata || !gpio_is_valid(pdata->base))
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	for (addr = 0; addr < 4; addr++) {
>  		if (!pdata->chip[addr].is_present)
> Index: linux.git7/drivers/gpio/pca953x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/pca953x.c	2008-12-12 13:33:47.000000000 +0000
> +++ linux.git7/drivers/gpio/pca953x.c	2008-12-12 13:33:55.000000000 +0000
> @@ -201,7 +201,7 @@ static int __devinit pca953x_probe(struc
>  
>  	pdata = client->dev.platform_data;
>  	if (pdata == NULL)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL);
>  	if (chip == NULL)
> Index: linux.git7/drivers/gpio/pcf857x.c
> ===================================================================
> --- linux.git7.orig/drivers/gpio/pcf857x.c	2008-12-12 13:34:33.000000000 +0000
> +++ linux.git7/drivers/gpio/pcf857x.c	2008-12-12 13:34:54.000000000 +0000
> @@ -189,7 +189,7 @@ static int pcf857x_probe(struct i2c_clie
>  
>  	pdata = client->dev.platform_data;
>  	if (!pdata)
> -		return -ENODEV;
> +		return -EINVAL;
>  
>  	/* Allocate, initialize, and register this gpio_chip. */
>  	gpio = kzalloc(sizeof *gpio, GFP_KERNEL);
> @@ -249,7 +249,7 @@ static int pcf857x_probe(struct i2c_clie
>  			status = i2c_read_le16(client);
>  
>  	} else
> -		status = -ENODEV;
> +		status = -EINVAL;
>  
>  	if (status < 0)
>  		goto fail;
> 
> -- 
> Ben (ben@fluff.org, http://www.fluff.org/)
> 
>   'a smiley only costs 4 bytes'
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

  parent reply	other threads:[~2008-12-14 21:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-12 15:24 GPIO: Fix probe() error return in gpio driver probes Ben Dooks
2008-12-12 15:24 ` Ben Dooks
     [not found] ` <20081212152426.745254309-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2008-12-14 21:33   ` Ben Dooks [this message]
2008-12-14 21:33     ` Ben Dooks
     [not found]     ` <20081214213349.GA19483-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2008-12-15  0:11       ` David Brownell
2008-12-15  0:11         ` David Brownell
     [not found]         ` <200812141611.17555.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-15  7:46           ` Jean Delvare
2008-12-15  7:46             ` Jean Delvare
     [not found]             ` <20081215084600.5d237fea-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-12-15 10:16               ` Ben Dooks
2008-12-15 10:16                 ` Ben Dooks
     [not found]                 ` <20081215101616.GB12431-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2008-12-15 10:22                   ` Jean Delvare
2008-12-15 10:22                     ` Jean Delvare
     [not found]                     ` <20081215112226.18f7fb29-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-12-18 18:16                       ` David Brownell
2008-12-18 18:16                         ` David Brownell
     [not found]                         ` <200812181016.28184.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-18 22:29                           ` Ben Dooks
2008-12-18 22:29                             ` Ben Dooks
2008-12-15 10:15           ` Ben Dooks
2008-12-15 10:15             ` Ben Dooks
  -- strict thread matches above, loose matches on Subject: below --
2009-01-07 12:56 ben-elnMNo+KYs3pIgCt6eIbzw
2009-01-07 12:56 ` ben
     [not found] ` <20090107125619.052023040-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2009-01-08 12:20   ` Ben Dooks
2009-01-08 12:20     ` Ben Dooks
2009-01-07 13:03 Ben Dooks

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=20081214213349.GA19483@fluff.org.uk \
    --to=ben-linux-elnmno+kys3ytjvyw6ydsg@public.gmane.org \
    --cc=dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /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.