diff options
Diffstat (limited to 'drivers/usb/host/ehci-omap.c')
| -rw-r--r-- | drivers/usb/host/ehci-omap.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index 7e41a95c5ceb..627f3a678759 100644 --- a/drivers/usb/host/ehci-omap.c +++ b/drivers/usb/host/ehci-omap.c | |||
| @@ -40,6 +40,7 @@ | |||
| 40 | #include <linux/slab.h> | 40 | #include <linux/slab.h> |
| 41 | #include <linux/usb/ulpi.h> | 41 | #include <linux/usb/ulpi.h> |
| 42 | #include <plat/usb.h> | 42 | #include <plat/usb.h> |
| 43 | #include <linux/regulator/consumer.h> | ||
| 43 | 44 | ||
| 44 | /* EHCI Register Set */ | 45 | /* EHCI Register Set */ |
| 45 | #define EHCI_INSNREG04 (0xA0) | 46 | #define EHCI_INSNREG04 (0xA0) |
| @@ -118,6 +119,8 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | |||
| 118 | struct ehci_hcd *omap_ehci; | 119 | struct ehci_hcd *omap_ehci; |
| 119 | int ret = -ENODEV; | 120 | int ret = -ENODEV; |
| 120 | int irq; | 121 | int irq; |
| 122 | int i; | ||
| 123 | char supply[7]; | ||
| 121 | 124 | ||
| 122 | if (usb_disabled()) | 125 | if (usb_disabled()) |
| 123 | return -ENODEV; | 126 | return -ENODEV; |
| @@ -158,6 +161,23 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | |||
| 158 | hcd->rsrc_len = resource_size(res); | 161 | hcd->rsrc_len = resource_size(res); |
| 159 | hcd->regs = regs; | 162 | hcd->regs = regs; |
| 160 | 163 | ||
| 164 | /* get ehci regulator and enable */ | ||
| 165 | for (i = 0 ; i < OMAP3_HS_USB_PORTS ; i++) { | ||
| 166 | if (pdata->port_mode[i] != OMAP_EHCI_PORT_MODE_PHY) { | ||
| 167 | pdata->regulator[i] = NULL; | ||
| 168 | continue; | ||
| 169 | } | ||
| 170 | snprintf(supply, sizeof(supply), "hsusb%d", i); | ||
| 171 | pdata->regulator[i] = regulator_get(dev, supply); | ||
| 172 | if (IS_ERR(pdata->regulator[i])) { | ||
| 173 | pdata->regulator[i] = NULL; | ||
| 174 | dev_dbg(dev, | ||
| 175 | "failed to get ehci port%d regulator\n", i); | ||
| 176 | } else { | ||
| 177 | regulator_enable(pdata->regulator[i]); | ||
| 178 | } | ||
| 179 | } | ||
| 180 | |||
| 161 | ret = omap_usbhs_enable(dev); | 181 | ret = omap_usbhs_enable(dev); |
| 162 | if (ret) { | 182 | if (ret) { |
| 163 | dev_err(dev, "failed to start usbhs with err %d\n", ret); | 183 | dev_err(dev, "failed to start usbhs with err %d\n", ret); |
