linux-openzaurus 2.6.16: backport of USB MaxPower limit information
authorMarcin Juszkiewicz <hrw@openembedded.org>
Fri, 8 Sep 2006 17:09:02 +0000 (17:09 +0000)
committerMarcin Juszkiewicz <hrw@openembedded.org>
Fri, 8 Sep 2006 17:09:02 +0000 (17:09 +0000)
Revision: 69f0a166098b754a6fa1cbb114317c805f34e399 from .oz354x

packages/linux/linux-openzaurus-2.6.16/maxpower-message.patch [new file with mode: 0644]
packages/linux/linux-openzaurus_2.6.16.bb

diff --git a/packages/linux/linux-openzaurus-2.6.16/maxpower-message.patch b/packages/linux/linux-openzaurus-2.6.16/maxpower-message.patch
new file mode 100644 (file)
index 0000000..6e76be4
--- /dev/null
@@ -0,0 +1,55 @@
+From: Daniel Drake <dsd@gentoo.org>
+Date: Fri, 26 May 2006 20:36:28 +0000 (+0100)
+Subject: [PATCH] USB: print message when device is rejected due to insufficient power
+X-Git-Tag: v2.6.18-rc1
+X-Git-Url: http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=1fbe75e12f0dd567c86533e13ba2605f3ecad2e1
+
+[PATCH] USB: print message when device is rejected due to insufficient power
+
+2.6.16 introduces USB power budgeting in the Linux kernel, and since then, a
+fair number of users have observed that some of their devices no longer work in
+unpowered hubs (this is not a bug, the devices claim that they need more than
+100mA).
+
+The very least we can do is print an informational message to the kernel log
+when this happens, otherwise it is not at all clear why the device was not
+accepted.
+
+Signed-off-by: Daniel Drake <dsd@gentoo.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -1176,6 +1176,7 @@ static int choose_configuration(struct u
+ {
+       int i;
+       int num_configs;
++      int insufficient_power = 0;
+       struct usb_host_config *c, *best;
+       best = NULL;
+@@ -1228,8 +1229,10 @@ static int choose_configuration(struct u
+                */
+               /* Rule out configs that draw too much bus current */
+-              if (c->desc.bMaxPower * 2 > udev->bus_mA)
++              if (c->desc.bMaxPower * 2 > udev->bus_mA) {
++                      insufficient_power++;
+                       continue;
++              }
+               /* If the first config's first interface is COMM/2/0xff
+                * (MSFT RNDIS), rule it out unless Linux has host-side
+@@ -1263,6 +1266,11 @@ static int choose_configuration(struct u
+                       best = c;
+       }
++      if (insufficient_power > 0)
++              dev_info(&udev->dev, "rejected %d configuration%s "
++                      "due to insufficient available bus power\n",
++                      insufficient_power, plural(insufficient_power));
++
+       if (best) {
+               i = best->desc.bConfigurationValue;
+               dev_info(&udev->dev,
index 3aa85c1..cbb379d 100644 (file)
@@ -1,6 +1,6 @@
 require linux-openzaurus.inc
 
-PR = "r42"
+PR = "r45"
 
 # Handy URLs
 # git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
@@ -68,6 +68,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
            file://00-hostap.patch;patch=1;status=merged \
            file://10-pcnet.patch;patch=1;status=merged \
            ${RPSRC}/alsa/asoc-v0.10rc4.patch;patch=1 \
+           file://maxpower-message.patch;patch=1;status=backported \
            ${RPSRC}/asoc_fixups-r0.patch;patch=1 \
            ${RPSRC}/hx2750_base-r24.patch;patch=1 \
            ${RPSRC}/hx2750_bl-r5.patch;patch=1 \