[RFC][PATCH 2/7] USB: OHCI: make ohci-omap a separate driver

Alan Stern stern at rowland.harvard.edu
Fri Jun 7 13:37:57 EDT 2013


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




More information about the linux-arm-kernel mailing list