usb: chipidea: add power_budget limit for ehci to platform data
authorAlexander Shishkin <alexander.shishkin@linux.intel.com>
Fri, 11 May 2012 14:25:55 +0000 (17:25 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 May 2012 23:59:35 +0000 (16:59 -0700)
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>
drivers/usb/chipidea/ci13xxx_pci.c
drivers/usb/chipidea/host.c
include/linux/usb/chipidea.h

index f190140cf612463f88f14b9256fa502a22b167c0..e3dab27f5c751c621eb08d34dbc4da0d86d940fc 100644 (file)
@@ -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 */ }
 };
index 8c8362c89a8c91493283b5bda314e251658401f5..0cffcfe5ce5337c3c541ca25088666cd099179bf 100644 (file)
@@ -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;
index 86273ce5f55447d6fdfa794301cb00baab367170..edb90d6cfd123d503ba5d1b010851d9760f8772c 100644 (file)
@@ -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)