ChangeSet 1.1722.97.52, 2004/06/08 16:08:19-07:00, david-b@pacbell.net

[PATCH] USB: usb root hubs can set power budgets

This adds hub_set_power_budget(), mostly so that HCDs for low
powered ports (cell phone, PDA, etc) can more easily report their
true power budgets.  It's not always 500mA per root hub port; this
makes dummy_hcd report the minimum, 8mA.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/usb/core/hub.h         |   11 +++++++++++
 drivers/usb/gadget/dummy_hcd.c |    3 +++
 2 files changed, 14 insertions(+)


diff -Nru a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
--- a/drivers/usb/core/hub.h	Fri Jun 18 10:59:02 2004
+++ b/drivers/usb/core/hub.h	Fri Jun 18 10:59:02 2004
@@ -215,4 +215,15 @@
 	struct work_struct	leds;
 };
 
+/* use this for low-powered root hubs */
+static inline void
+hub_set_power_budget (struct usb_device *hubdev, unsigned mA)
+{
+	struct usb_hub	*hub;
+
+	hub = (struct usb_hub *)
+		usb_get_intfdata (hubdev->actconfig->interface[0]);
+	hub->power_budget = min(mA,(unsigned)500)/2;
+}
+
 #endif /* __LINUX_HUB_H */
diff -Nru a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
--- a/drivers/usb/gadget/dummy_hcd.c	Fri Jun 18 10:59:02 2004
+++ b/drivers/usb/gadget/dummy_hcd.c	Fri Jun 18 10:59:02 2004
@@ -1686,6 +1686,9 @@
 		goto clean1;
 	}
 
+	/* only show a low-power port: just 8mA */
+	hub_set_power_budget (root, 8);
+
 	dum->started = 1;
 
 	if ((retval = dummy_register_udc (dum)) != 0) {
