diff options
author | Alexander Shishkin <alexander.shishkin@linux.intel.com> | 2012-05-11 17:25:55 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-11 16:59:35 -0700 |
commit | bd841986e4e1fe60fe97da45be5139f173c5188e (patch) | |
tree | 4fb3a19474eedd0c6775520a1f180171bafd228e | |
parent | eb70e5ab8f95a81283623c03d2c99dfc59fcb319 (diff) | |
download | op-kernel-dev-bd841986e4e1fe60fe97da45be5139f173c5188e.zip op-kernel-dev-bd841986e4e1fe60fe97da45be5139f173c5188e.tar.gz |
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 f190140..e3dab27 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 = { .capoffset = 0, }; +struct ci13xxx_udc_driver penwell_pci_driver = { + .name = UDC_DRIVER_NAME, + .capoffset = 0, + .power_budget = 200, +}; + /** * ci13xxx_pci_probe: PCI probe * @pdev: USB device controller being probed @@ -153,7 +159,7 @@ static DEFINE_PCI_DEVICE_TABLE(ci13xxx_pci_id_table) = { }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0829), - .driver_data = (kernel_ulong_t)&langwell_pci_driver, + .driver_data = (kernel_ulong_t)&penwell_pci_driver, }, { 0, 0, 0, 0, 0, 0, 0 /* end: all zeroes */ } }; diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index 8c8362c..0cffcfe 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -116,6 +116,8 @@ static int host_start(struct ci13xxx *ci) hcd->regs = ci->hw_bank.abs; hcd->has_tt = 1; + hcd->power_budget = ci->udc_driver->power_budget; + ehci = hcd_to_ehci(hcd); ehci->caps = ci->hw_bank.cap; ehci->has_hostpc = ci->hw_bank.lpm; diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h index 86273ce..edb90d6 100644 --- a/include/linux/usb/chipidea.h +++ b/include/linux/usb/chipidea.h @@ -10,6 +10,7 @@ struct ci13xxx_udc_driver { const char *name; /* offset of the capability registers */ uintptr_t capoffset; + unsigned power_budget; unsigned long flags; #define CI13XXX_REGS_SHARED BIT(0) #define CI13XXX_REQUIRE_TRANSCEIVER BIT(1) |