[PATCH v2] gpio/omap: add *remove* callback in platform_driver
From: Shilimkar, Santosh <hidden>
Date: 2012-08-08 14:03:38
Also in:
linux-omap, lkml
On Wed, Aug 8, 2012 at 7:28 PM, Tarun Kanti DebBarma [off-list ref] wrote:
Add *remove* callback so that necessary cleanup operations are
performed when device is unregistered. The device is deleted
from the list and associated clock handle is released by
calling clk_put() and irq descriptor is released using the
irq_free_desc() api.
Signed-off-by: Tarun Kanti DebBarma <redacted>
Reported-by: Paul Walmsley <paul@pwsan.com>
Reviewed-by: Jon Hunter <redacted>
Cc: Kevin Hilman <redacted>
Cc: Rajendra Nayak <redacted>
Cc: Santosh Shilimkar <redacted>
Cc: Cousson, Benoit <redacted>
Cc: Paul Walmsley <paul@pwsan.com>
---
v2:
Baseline: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Commit: 0d7614f09c1ebdbaa1599a5aba7593f147bf96ee (Linux 3.6-rc1)
(1) Use irq_free_descs() instead of irq_free_desc().
Besides, irq_free_desc() was using wrong parameter,
irq_base, instead of bank->irq.
(2) irq_free_descs() moved outside spin_lock/unlock_*()
in order to avoid exception warnings.
(3) pm_runtime_disable() added so that bind can happen successfully
Test Detail:
Step 1: Unbind gpio.5 device in order to invoke the *remove* callback.
#echo "omap_gpio.5" > sys/bus/platform/drivers/omap_gpio/unbind
Step 2: Bind gpio.5 device and confirm probe() for the device succeeds.
#echo "omap_gpio.5" > sys/bus/platform/drivers/omap_gpio/bind
Step 3: Execute read/write GPIO test case.Thanks details about test. Whe you to "Unbind->bind", do you see that PM is not broken. In other words, can you also test and ensure that the OMAP3 suspend and CPUIDLE are not broken because of this patch. PER and CORE domains should transition to low power states. Regards Santosh