summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb2/serial/uvscom2.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb2/serial/uvscom2.c')
-rw-r--r--sys/dev/usb2/serial/uvscom2.c58
1 files changed, 33 insertions, 25 deletions
diff --git a/sys/dev/usb2/serial/uvscom2.c b/sys/dev/usb2/serial/uvscom2.c
index fc2fa47..30fd016 100644
--- a/sys/dev/usb2/serial/uvscom2.c
+++ b/sys/dev/usb2/serial/uvscom2.c
@@ -122,7 +122,15 @@ SYSCTL_INT(_hw_usb2_uvscom, OID_AUTO, debug, CTLFLAG_RW,
#define UVSCOM_BULK_BUF_SIZE 1024 /* bytes */
-#define UVSCOM_N_TRANSFER 6 /* units */
+enum {
+ UVSCOM_BULK_DT_WR,
+ UVSCOM_BULK_DT_RD,
+ UVSCOM_BULK_CS_WR,
+ UVSCOM_BULK_CS_RD,
+ UVSCOM_INTR_DT_RD,
+ UVSCOM_INTR_CS_RD,
+ UVSCOM_N_TRANSFER = 6,
+};
struct uvscom_softc {
struct usb2_com_super_softc sc_super_ucom;
@@ -176,7 +184,7 @@ static uint16_t uvscom_cfg_read_status(struct uvscom_softc *);
static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
- [0] = {
+ [UVSCOM_BULK_DT_WR] = {
.type = UE_BULK,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_OUT,
@@ -185,7 +193,7 @@ static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
.mh.callback = &uvscom_write_callback,
},
- [1] = {
+ [UVSCOM_BULK_DT_RD] = {
.type = UE_BULK,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_IN,
@@ -194,7 +202,7 @@ static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
.mh.callback = &uvscom_read_callback,
},
- [2] = {
+ [UVSCOM_BULK_CS_WR] = {
.type = UE_CONTROL,
.endpoint = 0x00, /* Control pipe */
.direction = UE_DIR_ANY,
@@ -204,7 +212,7 @@ static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
.mh.interval = 50, /* 50ms */
},
- [3] = {
+ [UVSCOM_BULK_CS_RD] = {
.type = UE_CONTROL,
.endpoint = 0x00, /* Control pipe */
.direction = UE_DIR_ANY,
@@ -214,7 +222,7 @@ static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
.mh.interval = 50, /* 50ms */
},
- [4] = {
+ [UVSCOM_INTR_DT_RD] = {
.type = UE_INTERRUPT,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_IN,
@@ -223,7 +231,7 @@ static const struct usb2_config uvscom_config[UVSCOM_N_TRANSFER] = {
.mh.callback = &uvscom_intr_callback,
},
- [5] = {
+ [UVSCOM_INTR_CS_RD] = {
.type = UE_CONTROL,
.endpoint = 0x00, /* Control pipe */
.direction = UE_DIR_ANY,
@@ -339,7 +347,7 @@ uvscom_attach(device_t dev)
}
/* start interrupt pipe */
mtx_lock(&Giant);
- usb2_transfer_start(sc->sc_xfer[4]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_INTR_DT_RD]);
mtx_unlock(&Giant);
return (0);
@@ -358,8 +366,8 @@ uvscom_detach(device_t dev)
/* stop interrupt pipe */
- if (sc->sc_xfer[4]) {
- usb2_transfer_stop(sc->sc_xfer[4]);
+ if (sc->sc_xfer[UVSCOM_INTR_DT_RD]) {
+ usb2_transfer_stop(sc->sc_xfer[UVSCOM_INTR_DT_RD]);
}
usb2_com_detach(&sc->sc_super_ucom, &sc->sc_ucom, 1);
@@ -378,7 +386,7 @@ uvscom_write_callback(struct usb2_xfer *xfer)
case USB_ST_SETUP:
case USB_ST_TRANSFERRED:
if (sc->sc_flag & UVSCOM_FLAG_WRITE_STALL) {
- usb2_transfer_start(sc->sc_xfer[2]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_CS_WR]);
return;
}
if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0,
@@ -392,7 +400,7 @@ uvscom_write_callback(struct usb2_xfer *xfer)
default: /* Error */
if (xfer->error != USB_ERR_CANCELLED) {
sc->sc_flag |= UVSCOM_FLAG_WRITE_STALL;
- usb2_transfer_start(sc->sc_xfer[2]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_CS_WR]);
}
return;
@@ -403,7 +411,7 @@ static void
uvscom_write_clear_stall_callback(struct usb2_xfer *xfer)
{
struct uvscom_softc *sc = xfer->priv_sc;
- struct usb2_xfer *xfer_other = sc->sc_xfer[0];
+ struct usb2_xfer *xfer_other = sc->sc_xfer[UVSCOM_BULK_DT_WR];
if (usb2_clear_stall_callback(xfer, xfer_other)) {
DPRINTF("stall cleared\n");
@@ -423,7 +431,7 @@ uvscom_read_callback(struct usb2_xfer *xfer)
case USB_ST_SETUP:
if (sc->sc_flag & UVSCOM_FLAG_READ_STALL) {
- usb2_transfer_start(sc->sc_xfer[3]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_CS_RD]);
} else {
xfer->frlengths[0] = xfer->max_data_length;
usb2_start_hardware(xfer);
@@ -433,7 +441,7 @@ uvscom_read_callback(struct usb2_xfer *xfer)
default: /* Error */
if (xfer->error != USB_ERR_CANCELLED) {
sc->sc_flag |= UVSCOM_FLAG_READ_STALL;
- usb2_transfer_start(sc->sc_xfer[3]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_CS_RD]);
}
return;
@@ -444,7 +452,7 @@ static void
uvscom_read_clear_stall_callback(struct usb2_xfer *xfer)
{
struct uvscom_softc *sc = xfer->priv_sc;
- struct usb2_xfer *xfer_other = sc->sc_xfer[1];
+ struct usb2_xfer *xfer_other = sc->sc_xfer[UVSCOM_BULK_DT_RD];
if (usb2_clear_stall_callback(xfer, xfer_other)) {
DPRINTF("stall cleared\n");
@@ -492,7 +500,7 @@ uvscom_intr_callback(struct usb2_xfer *xfer)
}
case USB_ST_SETUP:
if (sc->sc_flag & UVSCOM_FLAG_INTR_STALL) {
- usb2_transfer_start(sc->sc_xfer[5]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_INTR_CS_RD]);
} else {
xfer->frlengths[0] = xfer->max_data_length;
usb2_start_hardware(xfer);
@@ -502,7 +510,7 @@ uvscom_intr_callback(struct usb2_xfer *xfer)
default: /* Error */
if (xfer->error != USB_ERR_CANCELLED) {
sc->sc_flag |= UVSCOM_FLAG_INTR_STALL;
- usb2_transfer_start(sc->sc_xfer[5]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_INTR_CS_RD]);
}
return;
@@ -513,7 +521,7 @@ static void
uvscom_intr_clear_stall_callback(struct usb2_xfer *xfer)
{
struct uvscom_softc *sc = xfer->priv_sc;
- struct usb2_xfer *xfer_other = sc->sc_xfer[4];
+ struct usb2_xfer *xfer_other = sc->sc_xfer[UVSCOM_INTR_DT_RD];
if (usb2_clear_stall_callback(xfer, xfer_other)) {
DPRINTF("stall cleared\n");
@@ -711,7 +719,7 @@ uvscom_start_read(struct usb2_com_softc *ucom)
{
struct uvscom_softc *sc = ucom->sc_parent;
- usb2_transfer_start(sc->sc_xfer[1]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_DT_RD]);
}
static void
@@ -719,8 +727,8 @@ uvscom_stop_read(struct usb2_com_softc *ucom)
{
struct uvscom_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[UVSCOM_BULK_CS_RD]);
+ usb2_transfer_stop(sc->sc_xfer[UVSCOM_BULK_DT_RD]);
}
static void
@@ -728,7 +736,7 @@ uvscom_start_write(struct usb2_com_softc *ucom)
{
struct uvscom_softc *sc = ucom->sc_parent;
- usb2_transfer_start(sc->sc_xfer[0]);
+ usb2_transfer_start(sc->sc_xfer[UVSCOM_BULK_DT_WR]);
}
static void
@@ -736,8 +744,8 @@ uvscom_stop_write(struct usb2_com_softc *ucom)
{
struct uvscom_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[UVSCOM_BULK_CS_WR]);
+ usb2_transfer_stop(sc->sc_xfer[UVSCOM_BULK_DT_WR]);
}
static void
OpenPOWER on IntegriCloud