On Fri, 7 Jun 2013, Manjunath Goudar wrote:
Separate the TI OHCI OMAP1/2 host controller driver from ohci-hcd host code so that it can be built as a separate driver module. This work is part of enabling multi-platform kernels on ARM.
@@ -71,6 +77,10 @@ static struct clk *usb_dc_ck; static int host_enabled; static int host_initialized;
These two variables aren't used for anything. You should get rid of them.
@@ -201,8 +211,14 @@ static int ohci_omap_init(struct usb_hcd *hcd) ohci_to_hcd(ohci)->self.otg_port = config->otg; /* default/minimum OTG power budget: 8 mA */ ohci_to_hcd(ohci)->power_budget = 8;
ohci->hc_control = OHCI_CTRL_RWC;
}writel(OHCI_CTRL_RWC, &ohci->regs->control);
- if (config->rwc) {
ohci->hc_control = OHCI_CTRL_RWC;
writel(OHCI_CTRL_RWC, &ohci->regs->control);
- }
It's better to have two tests. Remove the two lines added to the previous "if" block, and change this test to
if (config->otg || config->rwc) {
@@ -281,14 +298,6 @@ static int ohci_omap_init(struct usb_hcd *hcd) return 0; } -static void ohci_omap_stop(struct usb_hcd *hcd) -{
- dev_dbg(hcd->self.controller, "stopping USB Controller\n");
- ohci_stop(hcd);
- omap_ohci_clock_power(0);
This last line seems to have gotten lost. You need to add it to usb_hcd_omap_remove().
@@ -354,8 +362,7 @@ static int usb_hcd_omap_probe (const struct hc_driver *driver, goto err2; }
- ohci = hcd_to_ohci(hcd);
- ohci_hcd_init(ohci);
- ohci_setup(hcd);
Not needed, since you call ohci_setup() from within ohci_omap_reset().
Alan Stern