On Wed, 15 Jan 2014, Hans de Goede wrote:
+static int ohci_platform_power_on(struct platform_device *dev)
+{
+ struct usb_hcd *hcd = platform_get_drvdata(dev);
+ struct ohci_platform_priv *priv = hcd_to_ohci_priv(hcd);
+ int clk, ret;
+
+ for (clk = 0; clk < OHCI_MAX_CLKS && priv->clks[clk]; clk++) {
You fixed this one...
quoted hunk
@@ -125,13 +225,22 @@ static int ohci_platform_remove(struct platform_device *dev)
{
struct usb_hcd *hcd = platform_get_drvdata(dev);
struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev);
+ struct ohci_platform_priv *priv = hcd_to_ohci_priv(hcd);
+ int clk;
usb_remove_hcd(hcd);
- usb_put_hcd(hcd);
if (pdata->power_off)
pdata->power_off(dev);
+ for (clk = 0; priv->clks[clk] && clk < OHCI_MAX_CLKS; clk++)
but not this one. :-( Same for the ehci-platform patch.
In fact, it might be easier to make this loop go backward, like
you do in the *_platform_power_off routines.
Is there a devm-type routine that will take care of all this for you?
Alan Stern