+++ /dev/null
-From 428525f97153505e83983460a8d08a3210aa6b8a Mon Sep 17 00:00:00 2001
-From: Roger Quadros <rogerq@ti.com>
-Date: Thu, 14 Feb 2013 17:08:08 +0200
-Subject: USB: ehci-omap: Don't free gpios that we didn't request
-
-From: Roger Quadros <rogerq@ti.com>
-
-commit 428525f97153505e83983460a8d08a3210aa6b8a upstream.
-
-This driver does not request any gpios so don't free them.
-Fixes L3 bus error on multiple modprobe/rmmod of ehci_hcd
-with ehci-omap in use.
-
-Without this patch, EHCI will break on repeated insmod/rmmod
-of ehci_hcd for all OMAP2+ platforms that use EHCI and
-set 'phy_reset = true' in usbhs_omap_board_data.
-i.e.
-
-board-3430sdp.c: .phy_reset = true,
-board-3630sdp.c: .phy_reset = true,
-board-am3517crane.c: .phy_reset = true,
-board-am3517evm.c: .phy_reset = true,
-board-cm-t3517.c: .phy_reset = true,
-board-cm-t35.c: .phy_reset = true,
-board-devkit8000.c: .phy_reset = true,
-board-igep0020.c: .phy_reset = true,
-board-igep0020.c: .phy_reset = true,
-board-omap3beagle.c: .phy_reset = true,
-board-omap3evm.c: .phy_reset = true,
-board-omap3pandora.c: .phy_reset = true,
-board-omap3stalker.c: .phy_reset = true,
-board-omap3touchbook.c: .phy_reset = true,
-board-omap4panda.c: .phy_reset = false,
-board-overo.c: .phy_reset = true,
-board-zoom.c: .phy_reset = true,
-
-Signed-off-by: Roger Quadros <rogerq@ti.com>
-Reviewed-by: Felipe Balbi <balbi@ti.com>
-Acked-by: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/usb/host/ehci-omap.c | 8 --------
- 1 file changed, 8 deletions(-)
-
---- a/drivers/usb/host/ehci-omap.c
-+++ b/drivers/usb/host/ehci-omap.c
-@@ -288,7 +288,6 @@ static int ehci_hcd_omap_remove(struct p
- {
- struct device *dev = &pdev->dev;
- struct usb_hcd *hcd = dev_get_drvdata(dev);
-- struct ehci_hcd_omap_platform_data *pdata = dev->platform_data;
-
- usb_remove_hcd(hcd);
- disable_put_regulator(dev->platform_data);
-@@ -297,13 +296,6 @@ static int ehci_hcd_omap_remove(struct p
- pm_runtime_put_sync(dev);
- pm_runtime_disable(dev);
-
-- if (pdata->phy_reset) {
-- if (gpio_is_valid(pdata->reset_gpio_port[0]))
-- gpio_free(pdata->reset_gpio_port[0]);
--
-- if (gpio_is_valid(pdata->reset_gpio_port[1]))
-- gpio_free(pdata->reset_gpio_port[1]);
-- }
- return 0;
- }
-