Some HTC phones first present a Umass descriptor when they're attached
to a machine then disconnect them self and reattach with an Imaging
(MTP) descriptor.
In between they stop answering to umass(4) which vomit some of its best
prose:
umass0: BBB reset failed, IOERROR
umass0: BBB bulk-in clear stall failed, IOERROR
umass0: BBB bulk-out clear stall failed, IOERROR
umass0: BBB reset failed, IOERROR
umass0: BBB bulk-in clear stall failed, IOERROR
umass0: BBB bulk-out clear stall failed, IOERROR
...
I don't see the point of printing such stuff in GENERIC. These messages
alone are useless, so just print them in DEBUG mode.
Ok?
Index: umass.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/usb/umass.c,v
retrieving revision 1.68
diff -u -p -r1.68 umass.c
--- umass.c 18 Jan 2015 14:40:05 -0000 1.68
+++ umass.c 26 Jan 2015 13:09:15 -0000
@@ -1182,10 +1182,10 @@ umass_bbb_state(struct usbd_xfer *xfer,
* err == 0 and the following if block is passed.
*/
if (err) { /* should not occur */
- printf("%s: BBB bulk-%s stall clear failed, %s\n",
- sc->sc_dev.dv_xname,
+ DPRINTF(UDMASS_BBB, ("%s: BBB bulk-%s stall clear"
+ " failed, %s\n", sc->sc_dev.dv_xname,
(sc->transfer_dir == DIR_IN? "in":"out"),
- usbd_errstr(err));
+ usbd_errstr(err)));
umass_bbb_reset(sc, STATUS_WIRE_FAILED);
return;
}
@@ -1327,8 +1327,8 @@ umass_bbb_state(struct usbd_xfer *xfer,
/***** Bulk Reset *****/
case TSTATE_BBB_RESET1:
if (err)
- printf("%s: BBB reset failed, %s\n",
- sc->sc_dev.dv_xname, usbd_errstr(err));
+ DPRINTF(UDMASS_BBB, ("%s: BBB reset failed, %s\n",
+ sc->sc_dev.dv_xname, usbd_errstr(err)));
sc->transfer_state = TSTATE_BBB_RESET2;
umass_clear_endpoint_stall(sc, UMASS_BULKIN,
@@ -1337,8 +1337,9 @@ umass_bbb_state(struct usbd_xfer *xfer,
return;
case TSTATE_BBB_RESET2:
if (err) /* should not occur */
- printf("%s: BBB bulk-in clear stall failed, %s\n",
- sc->sc_dev.dv_xname, usbd_errstr(err));
+ DPRINTF(UDMASS_BBB, ("%s: BBB bulk-in clear stall"
+ " failed, %s\n", sc->sc_dev.dv_xname,
+ usbd_errstr(err)));
/* no error recovery, otherwise we end up in a loop */
sc->transfer_state = TSTATE_BBB_RESET3;
@@ -1348,8 +1349,9 @@ umass_bbb_state(struct usbd_xfer *xfer,
return;
case TSTATE_BBB_RESET3:
if (err) /* should not occur */
- printf("%s: BBB bulk-out clear stall failed, %s\n",
- sc->sc_dev.dv_xname, usbd_errstr(err));
+ DPRINTF(UDMASS_BBB,("%s: BBB bulk-out clear stall"
+ " failed, %s\n", sc->sc_dev.dv_xname,
+ usbd_errstr(err)));
/* no error recovery, otherwise we end up in a loop */
sc->transfer_state = TSTATE_IDLE;