diff options
| author | Alexander Shishkin <alexander.shishkin@linux.intel.com> | 2012-05-11 10:25:55 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-11 19:59:35 -0400 |
| commit | bd841986e4e1fe60fe97da45be5139f173c5188e (patch) | |
| tree | 4fb3a19474eedd0c6775520a1f180171bafd228e | |
| parent | eb70e5ab8f95a81283623c03d2c99dfc59fcb319 (diff) | |
usb: chipidea: add power_budget limit for ehci to platform data
Some implementations need this limitation to work correctly.
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/usb/chipidea/ci13xxx_pci.c | 8 | ||||
| -rw-r--r-- | drivers/usb/chipidea/host.c | 2 | ||||
| -rw-r--r-- | include/linux/usb/chipidea.h | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/usb/chipidea/ci13xxx_pci.c b/drivers/usb/chipidea/ci13xxx_pci.c index f190140cf612..e3dab27f5c75 100644 --- a/drivers/usb/chipidea/ci13xxx_pci.c +++ b/drivers/usb/chipidea/ci13xxx_pci.c | |||
| @@ -33,6 +33,12 @@ struct ci13xxx_udc_driver langwell_pci_driver = { | |||
| 33 | .capoffset = 0, | 33 | .capoffset = 0, |
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | struct ci13xxx_udc_driver penwell_pci_driver = { | ||
| 37 | .name = UDC_DRIVER_NAME, | ||
| 38 | .capoffset = 0, | ||
| 39 | .power_budget = 200, | ||
| 40 | }; | ||
| 41 | |||
| 36 | /** | 42 | /** |
| 37 | * ci13xxx_pci_probe: PCI probe | 43 | * ci13xxx_pci_probe: PCI probe |
| 38 | * @pdev: USB device controller being probed | 44 | * @pdev: USB device controller being probed |
| @@ -153,7 +159,7 @@ static DEFINE_PCI_DEVICE_TABLE(ci13xxx_pci_id_table) = { | |||
| 153 | }, | 159 | }, |
| 154 | { | 160 | { |
| 155 | PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0829), | 161 | PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0829), |
| 156 | .driver_data = (kernel_ulong_t)&langwell_pci_driver, | 162 | .driver_data = (kernel_ulong_t)&penwell_pci_driver, |
| 157 | }, | 163 | }, |
| 158 | { 0, 0, 0, 0, 0, 0, 0 /* end: all zeroes */ } | 164 | { 0, 0, 0, 0, 0, 0, 0 /* end: all zeroes */ } |
| 159 | }; | 165 | }; |
diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index 8c8362c89a8c..0cffcfe5ce53 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c | |||
| @@ -116,6 +116,8 @@ static int host_start(struct ci13xxx *ci) | |||
| 116 | hcd->regs = ci->hw_bank.abs; | 116 | hcd->regs = ci->hw_bank.abs; |
| 117 | hcd->has_tt = 1; | 117 | hcd->has_tt = 1; |
| 118 | 118 | ||
| 119 | hcd->power_budget = ci->udc_driver->power_budget; | ||
| 120 | |||
| 119 | ehci = hcd_to_ehci(hcd); | 121 | ehci = hcd_to_ehci(hcd); |
| 120 | ehci->caps = ci->hw_bank.cap; | 122 | ehci->caps = ci->hw_bank.cap; |
| 121 | ehci->has_hostpc = ci->hw_bank.lpm; | 123 | ehci->has_hostpc = ci->hw_bank.lpm; |
diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h index 86273ce5f554..edb90d6cfd12 100644 --- a/include/linux/usb/chipidea.h +++ b/include/linux/usb/chipidea.h | |||
| @@ -10,6 +10,7 @@ struct ci13xxx_udc_driver { | |||
| 10 | const char *name; | 10 | const char *name; |
| 11 | /* offset of the capability registers */ | 11 | /* offset of the capability registers */ |
| 12 | uintptr_t capoffset; | 12 | uintptr_t capoffset; |
| 13 | unsigned power_budget; | ||
| 13 | unsigned long flags; | 14 | unsigned long flags; |
| 14 | #define CI13XXX_REGS_SHARED BIT(0) | 15 | #define CI13XXX_REGS_SHARED BIT(0) |
| 15 | #define CI13XXX_REQUIRE_TRANSCEIVER BIT(1) | 16 | #define CI13XXX_REQUIRE_TRANSCEIVER BIT(1) |
