From: Alexander Shishkin Date: Fri, 11 May 2012 14:25:55 +0000 (+0300) Subject: usb: chipidea: add power_budget limit for ehci to platform data X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=bd841986e4e1fe60fe97da45be5139f173c5188e;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git usb: chipidea: add power_budget limit for ehci to platform data Some implementations need this limitation to work correctly. Signed-off-by: Alexander Shishkin Signed-off-by: Greg Kroah-Hartman --- 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 = { .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 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) 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 86273ce5f554..edb90d6cfd12 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)