Hi, On 02/03/11 17:47, Wolfram Sang wrote: > On Thu, Feb 03, 2011 at 08:51:26PM +0530, Sourav Poddar wrote: >> 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) >> 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? >> >> @@ -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. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html