s3c-hsudc: add a remove function

A patch from »s3c-hsudc: regulator handling and a lot of fixes« in state Mainline for linux-kernel

From: Heiko Stuebner <heiko@...> Date: Sun, 11 Dec 2011 16:11:10 +0100

Commit-Message

As the driver is also buildable as a module it should need a cleanup function for the removal of the module. Signed-off-by: Heiko Stuebner <heiko@...>

Patch-Comment

drivers/usb/gadget/s3c-hsudc.c | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-)

Statistics

  • 25 lines added
  • 0 lines removed

Changes

------------------------ drivers/usb/gadget/s3c-hsudc.c ------------------------
index 3e5673d..7cb0850 100644
@@ -1370,12 +1370,37 @@ err_res:
return ret;
}
+static int __devexit s3c_hsudc_remove(struct platform_device *pdev)
+{
+ struct s3c_hsudc *hsudc = the_controller;
+
+ usb_del_gadget_udc(&hsudc->gadget);
+
+ clk_disable(hsudc->uclk);
+ clk_put(hsudc->uclk);
+
+ free_irq(hsudc->irq, hsudc);
+
+ iounmap(hsudc->regs);
+
+ release_resource(hsudc->mem_rsrc);
+ kfree(hsudc->mem_rsrc);
+
+ if (hsudc->transceiver)
+ otg_put_transceiver(hsudc->transceiver);
+
+ the_controller = NULL;
+ kfree(hsudc);
+ return 0;
+}
+
static struct platform_driver s3c_hsudc_driver = {
.driver = {
.owner = THIS_MODULE,
.name = "s3c-hsudc",
},
.probe = s3c_hsudc_probe,
+ .remove = __devexit_p(s3c_hsudc_remove),
};
module_platform_driver(s3c_hsudc_driver);
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...