| From 3b2a2e47174cd978258bbb0fdf2e2b1b5ec2144c Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Mon, 20 Feb 2012 17:35:50 -0800 |
| Subject: usb: renesas_usbhs: bugfix: add .release function to gpriv->gadget.dev |
| |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| |
| commit 3b2a2e47174cd978258bbb0fdf2e2b1b5ec2144c upstream. |
| |
| This patch fixup below warning on device_unregister() |
| |
| renesas_usbhs renesas_usbhs.1: host probed |
| renesas_usbhs renesas_usbhs.1: gadget probed |
| renesas_usbhs renesas_usbhs.1: irq request err |
| ------------[ cut here ]------------ |
| WARNING: at ${LINUX}/drivers/base/core.c:1) |
| Device 'gadget' does not have a release() function, it is broken and must be fi. |
| Modules linked in: |
| [<c000e25c>] (unwind_backtrace+0x0/0xe4) from [<c0016960>] (warn_slowpath_commo) |
| [<c0016960>] (warn_slowpath_common+0x4c/0x64) from [<c00169f8>] (warn_slowpath_) |
| [<c00169f8>] (warn_slowpath_fmt+0x2c/0x3c) from [<c0185b80>] (device_release+0x) |
| [<c0185b80>] (device_release+0x70/0x84) from [<c013e300>] (kobject_cleanup+0x58) |
| [<c013e300>] (kobject_cleanup+0x58/0x6c) from [<c01cba14>] (usbhs_mod_gadget_re) |
| [<c01cba14>] (usbhs_mod_gadget_remove+0x3c/0x6c) from [<c01c8384>] (usbhs_mod_p) |
| [<c01c8384>] (usbhs_mod_probe+0x68/0x80) from [<c01c7f84>] (usbhs_probe+0x1cc/0) |
| ... |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Signed-off-by: Felipe Balbi <balbi@ti.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/renesas_usbhs/mod_gadget.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/drivers/usb/renesas_usbhs/mod_gadget.c |
| +++ b/drivers/usb/renesas_usbhs/mod_gadget.c |
| @@ -816,6 +816,11 @@ static int usbhsg_stop(struct usbhs_priv |
| return usbhsg_try_stop(priv, USBHSG_STATUS_STARTED); |
| } |
| |
| +static void usbhs_mod_gadget_release(struct device *pdev) |
| +{ |
| + /* do nothing */ |
| +} |
| + |
| int usbhs_mod_gadget_probe(struct usbhs_priv *priv) |
| { |
| struct usbhsg_gpriv *gpriv; |
| @@ -864,6 +869,7 @@ int usbhs_mod_gadget_probe(struct usbhs_ |
| */ |
| dev_set_name(&gpriv->gadget.dev, "gadget"); |
| gpriv->gadget.dev.parent = dev; |
| + gpriv->gadget.dev.release = usbhs_mod_gadget_release; |
| gpriv->gadget.name = "renesas_usbhs_udc"; |
| gpriv->gadget.ops = &usbhsg_gadget_ops; |
| gpriv->gadget.is_dualspeed = 1; |