Simplify attach for UMASS_PROTO_CBI_I mode and change some switch() returns

into breaks.

Submitted by:	Hans Petter Selesky
This commit is contained in:
Andrew Thompson 2010-01-29 02:35:50 +00:00
parent 4d69093fcc
commit c2b2c741a0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=203145

View File

@ -671,7 +671,7 @@ static struct usb_config umass_cbi_config[UMASS_T_CBI_MAX] = {
.type = UE_INTERRUPT,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_IN,
.flags = {.short_xfer_ok = 1,},
.flags = {.short_xfer_ok = 1,.no_pipe_ok = 1,},
.bufsize = sizeof(umass_cbi_sbl_t),
.callback = &umass_t_cbi_status_callback,
.timeout = 5000, /* ms */
@ -984,9 +984,7 @@ umass_attach(device_t dev)
err = usbd_transfer_setup(uaa->device,
&uaa->info.bIfaceIndex, sc->sc_xfer, umass_cbi_config,
(sc->sc_proto & UMASS_PROTO_CBI_I) ?
UMASS_T_CBI_MAX : (UMASS_T_CBI_MAX - 2), sc,
&sc->sc_mtx);
UMASS_T_CBI_MAX, sc, &sc->sc_mtx);
/* skip reset first time */
sc->sc_last_xfer_index = UMASS_T_CBI_COMMAND;
@ -1676,7 +1674,7 @@ umass_t_cbi_reset1_callback(struct usb_xfer *xfer, usb_error_t error)
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
umass_transfer_start(sc, UMASS_T_CBI_RESET2);
return;
break;
case USB_ST_SETUP:
/*
@ -1723,11 +1721,14 @@ umass_t_cbi_reset1_callback(struct usb_xfer *xfer, usb_error_t error)
usbd_xfer_set_frame_len(xfer, 1, sizeof(buf));
usbd_xfer_set_frames(xfer, 2);
usbd_transfer_submit(xfer);
return;
break;
default: /* Error */
umass_tr_error(xfer, error);
return;
if (error == USB_ERR_CANCELLED)
umass_tr_error(xfer, error);
else
umass_transfer_start(sc, UMASS_T_CBI_RESET2);
break;
}
}
@ -1772,17 +1773,17 @@ umass_t_cbi_data_clear_stall_callback(struct usb_xfer *xfer,
} else {
umass_transfer_start(sc, next_xfer);
}
return;
break;
case USB_ST_SETUP:
if (usbd_clear_stall_callback(xfer, sc->sc_xfer[stall_xfer])) {
goto tr_transferred; /* should not happen */
}
return;
break;
default: /* Error */
umass_tr_error(xfer, error);
return;
break;
}
}
@ -1805,7 +1806,7 @@ umass_t_cbi_command_callback(struct usb_xfer *xfer, usb_error_t error)
(sc, (sc->sc_transfer.dir == DIR_IN) ?
UMASS_T_CBI_DATA_READ : UMASS_T_CBI_DATA_WRITE);
}
return;
break;
case USB_ST_SETUP:
@ -1844,12 +1845,13 @@ umass_t_cbi_command_callback(struct usb_xfer *xfer, usb_error_t error)
usbd_transfer_submit(xfer);
}
return;
break;
default: /* Error */
umass_tr_error(xfer, error);
return;
/* skip reset */
sc->sc_last_xfer_index = UMASS_T_CBI_COMMAND;
break;
}
}
@ -1885,7 +1887,7 @@ umass_t_cbi_data_read_callback(struct usb_xfer *xfer, usb_error_t error)
if (sc->sc_transfer.data_rem == 0) {
umass_cbi_start_status(sc);
return;
break;
}
if (max_bulk > sc->sc_transfer.data_rem) {
max_bulk = sc->sc_transfer.data_rem;
@ -1899,7 +1901,7 @@ umass_t_cbi_data_read_callback(struct usb_xfer *xfer, usb_error_t error)
usbd_xfer_set_frame_len(xfer, 0, max_bulk);
#endif
usbd_transfer_submit(xfer);
return;
break;
default: /* Error */
if ((error == USB_ERR_CANCELLED) ||
@ -1908,7 +1910,7 @@ umass_t_cbi_data_read_callback(struct usb_xfer *xfer, usb_error_t error)
} else {
umass_transfer_start(sc, UMASS_T_CBI_DATA_RD_CS);
}
return;
break;
}
}
@ -1948,7 +1950,7 @@ umass_t_cbi_data_write_callback(struct usb_xfer *xfer, usb_error_t error)
if (sc->sc_transfer.data_rem == 0) {
umass_cbi_start_status(sc);
return;
break;
}
if (max_bulk > sc->sc_transfer.data_rem) {
max_bulk = sc->sc_transfer.data_rem;
@ -1965,7 +1967,7 @@ umass_t_cbi_data_write_callback(struct usb_xfer *xfer, usb_error_t error)
#endif
usbd_transfer_submit(xfer);
return;
break;
default: /* Error */
if ((error == USB_ERR_CANCELLED) ||
@ -1974,7 +1976,7 @@ umass_t_cbi_data_write_callback(struct usb_xfer *xfer, usb_error_t error)
} else {
umass_transfer_start(sc, UMASS_T_CBI_DATA_WR_CS);
}
return;
break;
}
}
@ -2035,7 +2037,7 @@ umass_t_cbi_status_callback(struct usb_xfer *xfer, usb_error_t error)
(sc->sc_transfer.callback)
(sc, ccb, residue, status);
return;
break;
} else {
@ -2060,7 +2062,7 @@ umass_t_cbi_status_callback(struct usb_xfer *xfer, usb_error_t error)
(sc->sc_transfer.callback)
(sc, ccb, residue, status);
return;
break;
}
}
@ -2070,13 +2072,13 @@ umass_t_cbi_status_callback(struct usb_xfer *xfer, usb_error_t error)
tr_setup:
usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_len(xfer));
usbd_transfer_submit(xfer);
return;
break;
default: /* Error */
DPRINTF(sc, UDMASS_CBI, "Failed to read CSW: %s\n",
usbd_errstr(error));
umass_tr_error(xfer, error);
return;
break;
}
}