diff options
Diffstat (limited to 'sys/dev/usb2/serial/uvisor2.c')
-rw-r--r-- | sys/dev/usb2/serial/uvisor2.c | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/sys/dev/usb2/serial/uvisor2.c b/sys/dev/usb2/serial/uvisor2.c index d844a8c..6bd972f 100644 --- a/sys/dev/usb2/serial/uvisor2.c +++ b/sys/dev/usb2/serial/uvisor2.c @@ -83,7 +83,6 @@ SYSCTL_INT(_hw_usb2_uvisor, OID_AUTO, debug, CTLFLAG_RW, #define UVISOR_CONFIG_INDEX 0 #define UVISOR_IFACE_INDEX 0 -#define UVISOR_N_TRANSFER 4 /* units */ #define UVISOR_BUFSIZE 1024 /* bytes */ /* From the Linux driver */ @@ -149,6 +148,14 @@ struct uvisor_palm_connection_info { } __packed connections[UVISOR_MAX_CONN]; } __packed; +enum { + UVISOR_BULK_DT_WR, + UVISOR_BULK_DT_RD, + UVISOR_BULK_CS_WR, + UVISOR_BULK_CS_RD, + UVISOR_N_TRANSFER = 4, +}; + struct uvisor_softc { struct usb2_com_super_softc sc_super_ucom; struct usb2_com_softc sc_ucom; @@ -190,7 +197,7 @@ static void uvisor_stop_write(struct usb2_com_softc *); static const struct usb2_config uvisor_config[UVISOR_N_TRANSFER] = { - [0] = { + [UVISOR_BULK_DT_WR] = { .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_OUT, @@ -199,7 +206,7 @@ static const struct usb2_config uvisor_config[UVISOR_N_TRANSFER] = { .mh.callback = &uvisor_write_callback, }, - [1] = { + [UVISOR_BULK_DT_RD] = { .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_IN, @@ -208,7 +215,7 @@ static const struct usb2_config uvisor_config[UVISOR_N_TRANSFER] = { .mh.callback = &uvisor_read_callback, }, - [2] = { + [UVISOR_BULK_CS_WR] = { .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, @@ -218,7 +225,7 @@ static const struct usb2_config uvisor_config[UVISOR_N_TRANSFER] = { .mh.interval = 50, /* 50ms */ }, - [3] = { + [UVISOR_BULK_CS_RD] = { .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, @@ -552,7 +559,7 @@ uvisor_start_read(struct usb2_com_softc *ucom) { struct uvisor_softc *sc = ucom->sc_parent; - usb2_transfer_start(sc->sc_xfer[1]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_DT_RD]); } static void @@ -560,8 +567,8 @@ uvisor_stop_read(struct usb2_com_softc *ucom) { struct uvisor_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[3]); - usb2_transfer_stop(sc->sc_xfer[1]); + usb2_transfer_stop(sc->sc_xfer[UVISOR_BULK_CS_RD]); + usb2_transfer_stop(sc->sc_xfer[UVISOR_BULK_DT_RD]); } static void @@ -569,7 +576,7 @@ uvisor_start_write(struct usb2_com_softc *ucom) { struct uvisor_softc *sc = ucom->sc_parent; - usb2_transfer_start(sc->sc_xfer[0]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_DT_WR]); } static void @@ -577,8 +584,8 @@ uvisor_stop_write(struct usb2_com_softc *ucom) { struct uvisor_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[2]); - usb2_transfer_stop(sc->sc_xfer[0]); + usb2_transfer_stop(sc->sc_xfer[UVISOR_BULK_CS_WR]); + usb2_transfer_stop(sc->sc_xfer[UVISOR_BULK_DT_WR]); } static void @@ -591,7 +598,7 @@ uvisor_write_callback(struct usb2_xfer *xfer) case USB_ST_SETUP: case USB_ST_TRANSFERRED: if (sc->sc_flag & UVISOR_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[2]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_CS_WR]); return; } if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0, @@ -605,7 +612,7 @@ uvisor_write_callback(struct usb2_xfer *xfer) default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flag |= UVISOR_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[2]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_CS_WR]); } return; @@ -616,7 +623,7 @@ static void uvisor_write_clear_stall_callback(struct usb2_xfer *xfer) { struct uvisor_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[0]; + struct usb2_xfer *xfer_other = sc->sc_xfer[UVISOR_BULK_DT_WR]; if (usb2_clear_stall_callback(xfer, xfer_other)) { DPRINTF("stall cleared\n"); @@ -636,7 +643,7 @@ uvisor_read_callback(struct usb2_xfer *xfer) case USB_ST_SETUP: if (sc->sc_flag & UVISOR_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[3]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_CS_RD]); } else { xfer->frlengths[0] = xfer->max_data_length; usb2_start_hardware(xfer); @@ -646,7 +653,7 @@ uvisor_read_callback(struct usb2_xfer *xfer) default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flag |= UVISOR_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[3]); + usb2_transfer_start(sc->sc_xfer[UVISOR_BULK_CS_RD]); } return; @@ -657,7 +664,7 @@ static void uvisor_read_clear_stall_callback(struct usb2_xfer *xfer) { struct uvisor_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[1]; + struct usb2_xfer *xfer_other = sc->sc_xfer[UVISOR_BULK_DT_RD]; if (usb2_clear_stall_callback(xfer, xfer_other)) { DPRINTF("stall cleared\n"); |