aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/core/hub.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 1b1846e6473b..89ebe6a23a90 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1176,6 +1176,7 @@ static int choose_configuration(struct usb_device *udev)
1176{ 1176{
1177 int i; 1177 int i;
1178 int num_configs; 1178 int num_configs;
1179 int insufficient_power = 0;
1179 struct usb_host_config *c, *best; 1180 struct usb_host_config *c, *best;
1180 1181
1181 best = NULL; 1182 best = NULL;
@@ -1228,8 +1229,10 @@ static int choose_configuration(struct usb_device *udev)
1228 */ 1229 */
1229 1230
1230 /* Rule out configs that draw too much bus current */ 1231 /* Rule out configs that draw too much bus current */
1231 if (c->desc.bMaxPower * 2 > udev->bus_mA) 1232 if (c->desc.bMaxPower * 2 > udev->bus_mA) {
1233 insufficient_power++;
1232 continue; 1234 continue;
1235 }
1233 1236
1234 /* If the first config's first interface is COMM/2/0xff 1237 /* If the first config's first interface is COMM/2/0xff
1235 * (MSFT RNDIS), rule it out unless Linux has host-side 1238 * (MSFT RNDIS), rule it out unless Linux has host-side
@@ -1263,6 +1266,11 @@ static int choose_configuration(struct usb_device *udev)
1263 best = c; 1266 best = c;
1264 } 1267 }
1265 1268
1269 if (insufficient_power > 0)
1270 dev_info(&udev->dev, "rejected %d configuration%s "
1271 "due to insufficient available bus power\n",
1272 insufficient_power, plural(insufficient_power));
1273
1266 if (best) { 1274 if (best) {
1267 i = best->desc.bConfigurationValue; 1275 i = best->desc.bConfigurationValue;
1268 dev_info(&udev->dev, 1276 dev_info(&udev->dev,