Subject: [PATCH v2 2/3] ep93xx: IDE driver platform support code

From: [email-masked] (Rafal Prylowski)
Date: Thu, 05 Apr 2012 14:15:55 +0200

[linux-ide mailing list removed from Cc, because topic is not related to IDE/libata]

On 2012-04-04 19:11, H Hartley Sweeten wrote:
> On Wednesday, April 04, 2012 9:43 AM, H Hartley Sweeten wrote:
>> On Wednesday, April 04, 2012 9:20 AM, H Hartley Sweeten wrote:
>>> On Wednesday, April 04, 2012 1:41 AM, Rafal Prylowski wrote:
>>>> On 2012-04-03 19:41, H Hartley Sweeten wrote:
>>>> [not related to my patch, but ep93xx keypad]:
>>>> Isn't ep93xx_keypad_acquire_gpio be more correct if we apply the following patch:
>>>>
>>>> Index: linux-2.6/arch/arm/mach-ep93xx/core.c
>>>> ===================================================================
>>>> --- linux-2.6.orig/arch/arm/mach-ep93xx/core.c
>>>> +++ linux-2.6/arch/arm/mach-ep93xx/core.c
>>>> @@ -734,7 +734,7 @@ int ep93xx_keypad_acquire_gpio(struct pl
>>>>  fail_gpio_d:
>>>>  	gpio_free(EP93XX_GPIO_LINE_C(i));
>>>>  fail_gpio_c:
>>>> -	for ( ; i >= 0; --i) {
>>>> +	for (--i; i >= 0; --i) {
>>>>  		gpio_free(EP93XX_GPIO_LINE_C(i));
>>>>  		gpio_free(EP93XX_GPIO_LINE_D(i));
>>>>  	}
>>>>
>>>> This way we don't double free EP93XX_GPIO_LINE_C(i), and don't free lines which were not
>>>> successfully acquired (I noticed this when writing my patch, which is based on
>>>> ep93xx_keypad_acquire/release_gpio).
>>>
>>> You are correct... ;-)
>>>
>>> Care to submit an actual patch?

Yes, patch should be on LAKML already.

>>
>> Note, if/when the devm_gpio_request patch gets into the kernel tree we can use
>> that and get rid of the gpio_free's completely.

I doubt if using devm_gpio_request() would help here. We need to call both
ep93xx_*_acquire and ep93xx_*_release_gpio in drivers, because it also sets up
some registers, etc. If ep93xx_*_acquire_gpio fails, then gpio lines should be
freed immediately and not when the driver unloads (because the driver might
want to use them in some other way..).

>>
>> Sorry, I don't have a link to that patch...
> 
> I just pulled linux-next. It looks like the devm_gpio_* stuff is now in.
> 
> commit 1a0703ede4493bd74f9c6b53f782b749e175a88e
> Author: John Crispin <[email-masked]>
> Date:   Tue Dec 20 21:40:21 2011 +0100
> 
>     GPIO: add bindings for managed devices
>     
>     This patch adds 2 functions that allow managed devices to request GPIOs.
>     These GPIOs will then be managed by drivers/base/devres.c.
>     
>     Signed-off-by: John Crispin <[email-masked]>
>     Signed-off-by: Grant Likely <[email-masked]>
> 

I see that this is also in v3.4rc1 :)

Regards,
RP