diff --git a/drivers/usb/chipidea/ci13xxx_pci.c b/drivers/usb/chipidea/ci13xxx_pci.c index f190140cf612463f88f14b9256fa502a22b167c0..e3dab27f5c751c621eb08d34dbc4da0d86d940fc 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 8c8362c89a8c91493283b5bda314e251658401f5..0cffcfe5ce5337c3c541ca25088666cd099179bf 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 86273ce5f55447d6fdfa794301cb00baab367170..edb90d6cfd123d503ba5d1b010851d9760f8772c 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)