Re: [PATCH v3 1/2] ads7846: fix gpio free without requesting
flat view
STALE5731d
From: Igor Grinberg <hidden>
Date: 2011-02-03 16:29:03
Also in:
linux-arm-kernel, linux-omap
Hi, On 02/03/11 17:47, Wolfram Sang wrote:
On Thu, Feb 03, 2011 at 08:51:26PM +0530, Sourav Poddar wrote:quoted
gpio_pendown in ads7846_probe is not getting initalized (defaulted to 0) resulting in gpio_free being called without a gpio_request. This results in the following backtrace in bootup (at least on an OMAP3430 SDP).I wonder if it makes sense to merge both patches under the name of "fix gpio-handling" or similar. Not sure, though...
I'd rather not do that, because this patch fixes the request/free problem and the second is changing the functionality (e.g. configures the gpio as input)
quoted
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index 14ea54b..ce5baee 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c@@ -952,6 +952,7 @@ static int __devinit ads7846_setup_pendown(struct spi_device *spi, struct ads784 if (pdata->get_pendown_state) { ts->get_pendown_state = pdata->get_pendown_state; + ts->gpio_pendown = -EINVAL; return 0; }Will probably work, but maybe it is better to reorganize the code to just have one success-exit-point. That would be mean adding an else branch to this if-block.
This is something that can be done, though I fear the code readability will suffer. Is it worth?
quoted
@@ -1353,7 +1354,7 @@ static int __devinit ads7846_probe(struct spi_device *spi) err_put_regulator: regulator_put(ts->reg); err_free_gpio: - if (ts->gpio_pendown != -1) + if (gpio_is_valid(ts->gpio_pendown))You could do the same in the remove-path.
You mean, _should_... ;) Otherwise, the patch is not complete. -- Regards, Igor.