[PATCH v2 2/3] ep93xx: IDE driver platform support code
From: Rafal Prylowski <hidden>
Date: 2012-04-05 12:15:55
[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:quoted
On Wednesday, April 04, 2012 9:20 AM, H Hartley Sweeten wrote:quoted
On Wednesday, April 04, 2012 1:41 AM, Rafal Prylowski wrote:quoted
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.
quoted
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..).
quoted
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 [off-list ref] 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 [off-list ref] Signed-off-by: Grant Likely [off-list ref]
I see that this is also in v3.4rc1 :) Regards, RP