Re: [PATCH v3 1/2] ads7846: fix gpio free without requesting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux