diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/usb/host/ohci-at91.c | 24 | 
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 5df0b0e3392b..77afabc77f9b 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -139,8 +139,23 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,  	}  	iclk = clk_get(&pdev->dev, "ohci_clk"); +	if (IS_ERR(iclk)) { +		dev_err(&pdev->dev, "failed to get ohci_clk\n"); +		retval = PTR_ERR(iclk); +		goto err3; +	}  	fclk = clk_get(&pdev->dev, "uhpck"); +	if (IS_ERR(fclk)) { +		dev_err(&pdev->dev, "failed to get uhpck\n"); +		retval = PTR_ERR(fclk); +		goto err4; +	}  	hclk = clk_get(&pdev->dev, "hclk"); +	if (IS_ERR(hclk)) { +		dev_err(&pdev->dev, "failed to get hclk\n"); +		retval = PTR_ERR(hclk); +		goto err5; +	}  	at91_start_hc(pdev);  	ohci_hcd_init(hcd_to_ohci(hcd)); @@ -153,9 +168,12 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,  	at91_stop_hc(pdev);  	clk_put(hclk); + err5:  	clk_put(fclk); + err4:  	clk_put(iclk); + err3:  	iounmap(hcd->regs);   err2: @@ -226,7 +244,8 @@ static void ohci_at91_usb_set_power(struct at91_usbh_data *pdata, int port, int  	if (!gpio_is_valid(pdata->vbus_pin[port]))  		return; -	gpio_set_value(pdata->vbus_pin[port], !pdata->vbus_pin_inverted ^ enable); +	gpio_set_value(pdata->vbus_pin[port], +		       !pdata->vbus_pin_active_low[port] ^ enable);  }  static int ohci_at91_usb_get_power(struct at91_usbh_data *pdata, int port) @@ -237,7 +256,8 @@ static int ohci_at91_usb_get_power(struct at91_usbh_data *pdata, int port)  	if (!gpio_is_valid(pdata->vbus_pin[port]))  		return -EINVAL; -	return gpio_get_value(pdata->vbus_pin[port]) ^ !pdata->vbus_pin_inverted; +	return gpio_get_value(pdata->vbus_pin[port]) ^ +		!pdata->vbus_pin_active_low[port];  }  /*  | 
