Browse Source

[ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget

Patch from Richard Purdie

Add a power budget variable to the PXA OHCI platform data and add a
default value for the spitz platform(s) which prevents known failures
with certain USB devices.

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Richard Purdie 19 years ago
parent
commit
0c27c5d5b9
3 changed files with 6 additions and 0 deletions
  1. 1 0
      arch/arm/mach-pxa/spitz.c
  2. 3 0
      drivers/usb/host/ohci-pxa27x.c
  3. 2 0
      include/asm-arm/arch-pxa/ohci.h

+ 1 - 0
arch/arm/mach-pxa/spitz.c

@@ -371,6 +371,7 @@ static int spitz_ohci_init(struct device *dev)
 static struct pxaohci_platform_data spitz_ohci_platform_data = {
 static struct pxaohci_platform_data spitz_ohci_platform_data = {
 	.port_mode	= PMM_NPS_MODE,
 	.port_mode	= PMM_NPS_MODE,
 	.init		= spitz_ohci_init,
 	.init		= spitz_ohci_init,
+	.power_budget	= 150,
 };
 };
 
 
 
 

+ 3 - 0
drivers/usb/host/ohci-pxa27x.c

@@ -185,6 +185,9 @@ int usb_hcd_pxa27x_probe (const struct hc_driver *driver, struct platform_device
 	/* Select Power Management Mode */
 	/* Select Power Management Mode */
 	pxa27x_ohci_select_pmm(inf->port_mode);
 	pxa27x_ohci_select_pmm(inf->port_mode);
 
 
+	if (inf->power_budget)
+		hcd->power_budget = inf->power_budget;
+
 	ohci_hcd_init(hcd_to_ohci(hcd));
 	ohci_hcd_init(hcd_to_ohci(hcd));
 
 
 	retval = usb_add_hcd(hcd, pdev->resource[1].start, SA_INTERRUPT);
 	retval = usb_add_hcd(hcd, pdev->resource[1].start, SA_INTERRUPT);

+ 2 - 0
include/asm-arm/arch-pxa/ohci.h

@@ -11,6 +11,8 @@ struct pxaohci_platform_data {
 #define PMM_NPS_MODE           1
 #define PMM_NPS_MODE           1
 #define PMM_GLOBAL_MODE        2
 #define PMM_GLOBAL_MODE        2
 #define PMM_PERPORT_MODE       3
 #define PMM_PERPORT_MODE       3
+
+	int power_budget;
 };
 };
 
 
 extern void pxa_set_ohci_info(struct pxaohci_platform_data *info);
 extern void pxa_set_ohci_info(struct pxaohci_platform_data *info);