diff options
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/usb/ukbd.c | 8 | ||||
| -rw-r--r-- | sys/dev/usb/usb_quirks.c | 3 | ||||
| -rw-r--r-- | sys/dev/usb/usb_quirks.h | 5 | ||||
| -rw-r--r-- | sys/dev/usb/usb_subr.c | 46 | ||||
| -rw-r--r-- | sys/dev/usb/usbdi.c | 380 | ||||
| -rw-r--r-- | sys/dev/usb/usbdi.h | 88 | ||||
| -rw-r--r-- | sys/dev/usb/usbdivar.h | 8 |
7 files changed, 21 insertions, 517 deletions
diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c index 78913dc0cc4..85ac16ad8c7 100644 --- a/sys/dev/usb/ukbd.c +++ b/sys/dev/usb/ukbd.c @@ -1,4 +1,4 @@ -/* $NetBSD: ukbd.c,v 1.34 1999/06/11 19:05:13 wrstuden Exp $ */ +/* $NetBSD: ukbd.c,v 1.35 1999/06/14 17:09:57 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -684,11 +684,11 @@ ukbd_cngetc(v, type, data) int *data; { struct ukbd_softc *sc = v; - usbd_lock_token s; + int s; int c; DPRINTFN(-1,("ukbd_cngetc: enter\n")); - s = usbd_lock(); + s = splusb(); sc->sc_polling = 1; while(sc->sc_npollchar <= 0) usbd_dopoll(sc->sc_iface); @@ -699,7 +699,7 @@ ukbd_cngetc(v, type, data) sc->sc_npollchar * sizeof(u_int16_t)); *type = c & RELEASE ? WSCONS_EVENT_KEY_UP : WSCONS_EVENT_KEY_DOWN; *data = c & CODEMASK; - usbd_unlock(s); + splx(s); DPRINTFN(-1,("ukbd_cngetc: return 0x%02x\n", c)); } diff --git a/sys/dev/usb/usb_quirks.c b/sys/dev/usb/usb_quirks.c index 2bb8565f3ad..8bd698906be 100644 --- a/sys/dev/usb/usb_quirks.c +++ b/sys/dev/usb/usb_quirks.c @@ -1,4 +1,4 @@ -/* $NetBSD: usb_quirks.c,v 1.9 1999/05/20 09:51:13 augustss Exp $ */ +/* $NetBSD: usb_quirks.c,v 1.10 1999/06/14 17:09:57 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -61,7 +61,6 @@ struct usbd_quirk_entry { { USB_VENDOR_GENIUS, USB_PRODUCT_GENIUS_NICHE, 0x100, { UQ_NO_SET_PROTO}}, { USB_VENDOR_INSIDEOUT,USB_PRODUCT_INSIDEOUT_EDGEPORT4, 0x094, { UQ_SWAP_UNICODE}}, - { USB_VENDOR_TI, USB_PRODUCT_TI_UTUSB41, 0x100, { UQ_HUB_POWER }}, { USB_VENDOR_BTC, USB_PRODUCT_BTC_BTC7932, 0x100, { UQ_NO_STRINGS }}, { USB_VENDOR_ADS, USB_PRODUCT_ADS_ENET, 0x002, { UQ_NO_STRINGS }}, { USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1, 0x101, { UQ_NO_STRINGS }}, diff --git a/sys/dev/usb/usb_quirks.h b/sys/dev/usb/usb_quirks.h index dbdc2bcac0c..30a21746f53 100644 --- a/sys/dev/usb/usb_quirks.h +++ b/sys/dev/usb/usb_quirks.h @@ -1,4 +1,4 @@ -/* $NetBSD: usb_quirks.h,v 1.5 1998/12/29 15:23:59 augustss Exp $ */ +/* $NetBSD: usb_quirks.h,v 1.6 1999/06/14 17:09:57 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -41,8 +41,7 @@ struct usbd_quirks { u_int32_t uq_flags; /* Device problems: */ #define UQ_NO_SET_PROTO 0x01 /* cannot handle SET PROTOCOL. */ #define UQ_SWAP_UNICODE 0x02 /* has some Unicode strings swapped. */ -#define UQ_HUB_POWER 0x04 /* does not respond correctly to get - device status; use get hub status. */ +/*#define UQ_ 0x04 */ #define UQ_NO_STRINGS 0x08 /* string descriptors are broken. */ #define UQ_BAD_ADC 0x10 /* bad audio spec version number. */ }; diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c index 244713e5169..7a49e82212a 100644 --- a/sys/dev/usb/usb_subr.c +++ b/sys/dev/usb/usb_subr.c @@ -1,4 +1,4 @@ -/* $NetBSD: usb_subr.c,v 1.32 1999/05/16 13:51:05 augustss Exp $ */ +/* $NetBSD: usb_subr.c,v 1.33 1999/06/14 17:09:57 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -110,12 +110,10 @@ char *usbd_error_strs[] = { "PENDING_REQUESTS", "NOT_STARTED", "INVAL", - "IS_IDLE", "NOMEM", "CANCELLED", "BAD_ADDRESS", "IN_USE", - "INTERFACE_NOT_ACTIVE", "NO_ADDR", "SET_ADDR_FAILED", "NO_POWER", @@ -125,6 +123,7 @@ char *usbd_error_strs[] = { "TIMEOUT", "SHORT_XFER", "STALLED", + "INTERRUPTED", "XXX", }; #endif @@ -459,14 +458,12 @@ usbd_fill_iface_data(dev, ifaceidx, altidx) goto bad; found: ifc->endpoints[endpt].edesc = ed; - ifc->endpoints[endpt].state = USBD_ENDPOINT_ACTIVE; ifc->endpoints[endpt].refcnt = 0; ifc->endpoints[endpt].toggle = 0; p += ed->bLength; } #undef ed LIST_INIT(&ifc->pipes); - ifc->state = USBD_INTERFACE_ACTIVE; return (USBD_NORMAL_COMPLETION); bad: @@ -528,7 +525,6 @@ usbd_set_config_index(dev, index, msg) int msg; { usb_status_t ds; - usb_hub_status_t hs; usb_config_descriptor_t cd, *cdp; usbd_status r; int ifcidx, nifc, len, selfpowered, power; @@ -547,7 +543,6 @@ usbd_set_config_index(dev, index, msg) dev->ifaces = 0; dev->cdesc = 0; dev->config = 0; - dev->state = USBD_DEVICE_ADDRESSED; } /* Figure out what config number to use. */ @@ -572,18 +567,10 @@ usbd_set_config_index(dev, index, msg) /* May be self powered. */ if (cdp->bmAttributes & UC_BUS_POWERED) { /* Must ask device. */ - if (dev->quirks->uq_flags & UQ_HUB_POWER) { - /* Buggy hub, use hub descriptor. */ - r = usbd_get_hub_status(dev, &hs); - if (r == USBD_NORMAL_COMPLETION && - !(UGETW(hs.wHubStatus) & UHS_LOCAL_POWER)) - selfpowered = 1; - } else { - r = usbd_get_device_status(dev, &ds); - if (r == USBD_NORMAL_COMPLETION && - (UGETW(ds.wStatus) & UDS_SELF_POWERED)) - selfpowered = 1; - } + r = usbd_get_device_status(dev, &ds); + if (r == USBD_NORMAL_COMPLETION && + (UGETW(ds.wStatus) & UDS_SELF_POWERED)) + selfpowered = 1; DPRINTF(("usbd_set_config_index: status=0x%04x, " "error=%d(%s)\n", UGETW(ds.wStatus), r, usbd_error_strs[r])); @@ -591,10 +578,9 @@ usbd_set_config_index(dev, index, msg) selfpowered = 1; } DPRINTF(("usbd_set_config_index: (addr %d) attr=0x%02x, " - "selfpowered=%d, power=%d, powerquirk=%x\n", + "selfpowered=%d, power=%d\n", dev->address, cdp->bmAttributes, - selfpowered, cdp->bMaxPower * 2, - dev->quirks->uq_flags & UQ_HUB_POWER)); + selfpowered, cdp->bMaxPower * 2)); #ifdef USB_DEBUG if (!dev->powersrc) { printf("usbd_set_config_index: No power source?\n"); @@ -637,7 +623,6 @@ usbd_set_config_index(dev, index, msg) DPRINTFN(5,("usbd_set_config_index: dev=%p cdesc=%p\n", dev, cdp)); dev->cdesc = cdp; dev->config = cdp->bConfigurationValue; - dev->state = USBD_DEVICE_CONFIGURED; for (ifcidx = 0; ifcidx < nifc; ifcidx++) { r = usbd_fill_iface_data(dev, ifcidx, 0); if (r != USBD_NORMAL_COMPLETION) { @@ -673,7 +658,6 @@ usbd_setup_pipe(dev, iface, ep, pipe) return (USBD_NOMEM); p->device = dev; p->iface = iface; - p->state = USBD_PIPE_ACTIVE; p->endpoint = ep; ep->refcnt++; p->refcnt = 1; @@ -873,7 +857,6 @@ usbd_new_device(parent, bus, depth, lowspeed, port, up) /* Set up default endpoint handle. */ dev->def_ep.edesc = &dev->def_ep_desc; - dev->def_ep.state = USBD_ENDPOINT_ACTIVE; /* Set up default endpoint descriptor. */ dev->def_ep_desc.bLength = USB_ENDPOINT_DESCRIPTOR_SIZE; @@ -883,7 +866,6 @@ usbd_new_device(parent, bus, depth, lowspeed, port, up) USETW(dev->def_ep_desc.wMaxPacketSize, USB_MAX_IPACKET); dev->def_ep_desc.bInterval = 0; - dev->state = USBD_DEVICE_DEFAULT; dev->quirks = &usbd_no_quirk; dev->address = USB_START_ADDR; dev->ddesc.bMaxPacketSize = 0; @@ -956,7 +938,6 @@ usbd_new_device(parent, bus, depth, lowspeed, port, up) usbd_delay_ms(dev, USB_SET_ADDRESS_SETTLE); dev->address = addr; /* New device address now */ - dev->state = USBD_DEVICE_ADDRESSED; bus->devices[addr] = dev; /* Assume 100mA bus powered for now. Changed when configured. */ @@ -1073,15 +1054,8 @@ usb_insert_transfer(reqh) usbd_request_handle reqh; { usbd_pipe_handle pipe = reqh->pipe; - usbd_interface_handle iface = pipe->iface; - if (pipe->state == USBD_PIPE_IDLE || - (iface && iface->state == USBD_INTERFACE_IDLE)) - return (USBD_IS_IDLE); SIMPLEQ_INSERT_TAIL(&pipe->queue, reqh, next); - if (pipe->state != USBD_PIPE_ACTIVE || - (iface && iface->state != USBD_INTERFACE_ACTIVE)) - return (USBD_NOT_STARTED); if (pipe->running) return (USBD_IN_PROGRESS); pipe->running = 1; @@ -1114,10 +1088,6 @@ usb_start_next(pipe) /* First remove remove old */ SIMPLEQ_REMOVE_HEAD(&pipe->queue, SIMPLEQ_FIRST(&pipe->queue), next); - if (pipe->state != USBD_PIPE_ACTIVE) { - pipe->running = 0; - return; - } reqh = SIMPLEQ_FIRST(&pipe->queue); DPRINTFN(5, ("usb_start_next: start reqh=%p\n", reqh)); if (!reqh) diff --git a/sys/dev/usb/usbdi.c b/sys/dev/usb/usbdi.c index 260775c3b35..ea85f016bfb 100644 --- a/sys/dev/usb/usbdi.c +++ b/sys/dev/usb/usbdi.c @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi.c,v 1.23 1999/05/13 23:29:41 augustss Exp $ */ +/* $NetBSD: usbdi.c,v 1.24 1999/06/14 17:09:58 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -70,7 +70,6 @@ extern int usbdebug; #endif static usbd_status usbd_ar_pipe __P((usbd_pipe_handle pipe)); -static usbd_status usbd_ar_iface __P((usbd_interface_handle iface)); static void usbd_transfer_cb __P((usbd_request_handle reqh)); static void usbd_sync_transfer_cb __P((usbd_request_handle reqh)); static usbd_status usbd_do_transfer __P((usbd_request_handle reqh)); @@ -97,8 +96,6 @@ usbd_open_pipe(iface, address, flags, pipe) usbd_status r; int i; - if (iface->state != USBD_INTERFACE_ACTIVE) - return (USBD_INTERFACE_NOT_ACTIVE); for (i = 0; i < iface->idesc->bNumEndpoints; i++) { ep = &iface->endpoints[i]; if (ep->edesc->bEndpointAddress == address) @@ -192,8 +189,6 @@ usbd_status usbd_close_pipe(pipe) usbd_pipe_handle pipe; { - if (pipe->iface->state != USBD_INTERFACE_ACTIVE) - return (USBD_INTERFACE_NOT_ACTIVE); if (--pipe->refcnt != 0) return (USBD_NORMAL_COMPLETION); if (SIMPLEQ_FIRST(&pipe->queue) != 0) @@ -278,16 +273,6 @@ usbd_setup_request(reqh, pipe, priv, buffer, length, flags, timeout, callback) } usbd_status -usbd_setup_device_request(reqh, req) - usbd_request_handle reqh; - usb_device_request_t *req; -{ - reqh->isreq = 1; - reqh->request = *req; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status usbd_setup_default_request(reqh, dev, priv, timeout, req, buffer, length, flags, callback) usbd_request_handle reqh; @@ -318,15 +303,6 @@ usbd_setup_default_request(reqh, dev, priv, timeout, req, buffer, } usbd_status -usbd_set_request_timeout(reqh, timeout) - usbd_request_handle reqh; - u_int32_t timeout; -{ - reqh->timeout = timeout; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status usbd_get_request_status(reqh, priv, buffer, count, status) usbd_request_handle reqh; usbd_private_handle *priv; @@ -341,25 +317,6 @@ usbd_get_request_status(reqh, priv, buffer, count, status) return (USBD_NORMAL_COMPLETION); } -usbd_status -usbd_request_device_data(reqh, req) - usbd_request_handle reqh; - usb_device_request_t *req; -{ - if (!reqh->isreq) - return (USBD_INVAL); - *req = reqh->request; - return (USBD_NORMAL_COMPLETION); -} - -#if 0 -usb_descriptor_t * -usbd_get_descriptor(iface, desc_type) - usbd_interface_handle *iface; - u_int8_t desc_type; -XX -#endif - usb_config_descriptor_t * usbd_get_config_descriptor(dev) usbd_device_handle dev; @@ -392,91 +349,18 @@ usbd_interface2endpoint_descriptor(iface, index) } usbd_status -usbd_set_configuration(dev, conf) - usbd_device_handle dev; - u_int8_t conf; -{ - return usbd_set_config_no(dev, conf, 0); -} - -usbd_status -usbd_retry_request(reqh, retry_count) - usbd_request_handle reqh; - u_int32_t retry_count; -{ - usbd_status r; - - r = usbd_set_pipe_state(reqh->pipe, USBD_PIPE_ACTIVE); - if (r != USBD_NORMAL_COMPLETION) - return (r); - reqh->retries = retry_count; - return (usbd_transfer(reqh)); -} - -usbd_status usbd_abort_pipe(pipe) usbd_pipe_handle pipe; { usbd_status r; - int s, st; - - if (pipe->iface->state != USBD_INTERFACE_ACTIVE) - return (USBD_INTERFACE_NOT_ACTIVE); - s = splusb(); - st = pipe->state; - r = usbd_ar_pipe(pipe); - pipe->state = st; - splx(s); - return (r); -} - -usbd_status -usbd_abort_interface(iface) - usbd_interface_handle iface; -{ - usbd_status r; - int s, st; - - s = splusb(); - st = iface->state; - r = usbd_ar_iface(iface); - iface->state = st; - splx(s); - return (r); -} - -usbd_status -usbd_reset_pipe(pipe) - usbd_pipe_handle pipe; -{ - usbd_status r; int s; - if (pipe->iface->state != USBD_INTERFACE_ACTIVE) - return (USBD_INTERFACE_NOT_ACTIVE); s = splusb(); r = usbd_ar_pipe(pipe); - /* XXX anything else */ - pipe->state = USBD_PIPE_ACTIVE; - splx(s); - return (r); -} - -usbd_status -usbd_reset_interface(iface) - usbd_interface_handle iface; -{ - usbd_status r; - int s; - - s = splusb(); - r = usbd_ar_iface(iface); - /* XXX anything else */ - iface->state = USBD_INTERFACE_ACTIVE; splx(s); return (r); } - + usbd_status usbd_clear_endpoint_stall(pipe) usbd_pipe_handle pipe; @@ -520,126 +404,6 @@ usbd_clear_endpoint_stall_async(pipe) } usbd_status -usbd_set_pipe_state(pipe, state) - usbd_pipe_handle pipe; - usbd_pipe_state state; -{ - int s; - usbd_status r; - usbd_request_handle reqh; - - if (pipe->iface->state != USBD_INTERFACE_ACTIVE) - return (USBD_INTERFACE_NOT_ACTIVE); - if (state != USBD_PIPE_ACTIVE && - state != USBD_PIPE_STALLED && - state != USBD_PIPE_IDLE) - return (USBD_INVAL); - pipe->state = state; - r = USBD_NORMAL_COMPLETION; - if (state == USBD_PIPE_ACTIVE) { - s = splusb(); - if (!pipe->running) { - reqh = SIMPLEQ_FIRST(&pipe->queue); - if (reqh != 0) { - pipe->running = 1; - splx(s); - r = pipe->methods->start(reqh); - } else - splx(s); - } else - splx(s); - } - return (r); -} - -usbd_status -usbd_get_pipe_state(pipe, state, endpoint_state, request_count) - usbd_pipe_handle pipe; - usbd_pipe_state *state; - u_int32_t *endpoint_state; - u_int32_t *request_count; -{ - int n; - usbd_request_handle r; - - *state = pipe->state; - *endpoint_state = pipe->endpoint->state; - for (r = SIMPLEQ_FIRST(&pipe->queue), n = 0; - r != 0; - r = SIMPLEQ_NEXT(r, next), n++) - ; - *request_count = n; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_set_interface_state(iface, state) - usbd_interface_handle iface; - usbd_interface_state state; -{ - int ps; - usbd_pipe_handle p; - - if (state == USBD_INTERFACE_ACTIVE) - ps = USBD_PIPE_ACTIVE; - else if (state == USBD_INTERFACE_STALLED) - ps = USBD_PIPE_STALLED; - else if (state == USBD_INTERFACE_IDLE) - ps = USBD_PIPE_IDLE; - else - return (USBD_INVAL); - iface->state = USBD_INTERFACE_ACTIVE; /* to allow setting the pipe */ - for (p = LIST_FIRST(&iface->pipes); p != 0; p = LIST_NEXT(p, next)) - usbd_set_pipe_state(p, ps); - iface->state = state; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_get_interface_state(iface, state) - usbd_interface_handle iface; - usbd_interface_state *state; -{ - *state = iface->state; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_get_device_state(dev, state) - usbd_device_handle dev; - usbd_device_state *state; -{ - *state = dev->state; - return (USBD_NORMAL_COMPLETION); -} - -#if 0 -usbd_status -usbd_set_device_state(dev, state) - usbd_device_handle dev; - usbd_device_state state; -X -#endif - -usbd_status -usbd_device_address(dev, address) - usbd_device_handle dev; - u_int8_t *address; -{ - *address = dev->address; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_endpoint_address(pipe, address) - usbd_pipe_handle pipe; - u_int8_t *address; -{ - *address = pipe->endpoint->edesc->bEndpointAddress; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status usbd_endpoint_count(iface, count) usbd_interface_handle iface; u_int8_t *count; @@ -659,73 +423,6 @@ usbd_interface_count(dev, count) return (USBD_NORMAL_COMPLETION); } -#if 0 -u_int8_t -usbd_bus_count() -{ - return (usb_bus_count()); -} - -usbd_status -usbd_get_bus_handle(index, bus) - u_int8_t index; - usbd_bus_handle *bus; -{ - return (usb_get_bus_handle(index, bus)); -} -#endif - -usbd_status -usbd_get_root_hub(bus, dev) - usbd_bus_handle bus; - usbd_device_handle *dev; -{ - *dev = bus->root_hub; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_port_count(dev, nports) - usbd_device_handle dev; - u_int8_t *nports; -{ - if (dev->hub == 0) - return (USBD_INVAL); - *nports = dev->hub->hubdesc.bNbrPorts; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_hub2device_handle(dev, port, devp) - usbd_device_handle dev; - u_int8_t port; - usbd_device_handle *devp; -{ - if (dev->hub == 0 || port >= dev->hub->hubdesc.bNbrPorts || - dev->hub->ports[port].device == 0) - return (USBD_INVAL); - *devp = dev->hub->ports[port].device; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_request2pipe_handle(reqh, pipe) - usbd_request_handle reqh; - usbd_pipe_handle *pipe; -{ - *pipe = reqh->pipe; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_pipe2interface_handle(pipe, iface) - usbd_pipe_handle pipe; - usbd_interface_handle *iface; -{ - *iface = pipe->iface; - return (USBD_NORMAL_COMPLETION); -} - usbd_status usbd_interface2device_handle(iface, dev) usbd_interface_handle iface; @@ -736,15 +433,6 @@ usbd_interface2device_handle(iface, dev) } usbd_status -usbd_device2bus_handle(dev, bus) - usbd_device_handle dev; - usbd_bus_handle *bus; -{ - *bus = dev->bus; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status usbd_device2interface_handle(dev, ifaceno, iface) usbd_device_handle dev; u_int8_t ifaceno; @@ -758,53 +446,6 @@ usbd_device2interface_handle(dev, ifaceno, iface) return (USBD_NORMAL_COMPLETION); } -usbd_status -usbd_set_interface_private_handle(iface, priv) - usbd_interface_handle iface; - usbd_private_handle priv; -{ - iface->priv = priv; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_get_interface_private_handle(iface, priv) - usbd_interface_handle iface; - usbd_private_handle *priv; -{ - *priv = iface->priv; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_reference_pipe(pipe) - usbd_pipe_handle pipe; -{ - pipe->refcnt++; - return (USBD_NORMAL_COMPLETION); -} - -usbd_status -usbd_dereference_pipe(pipe) - usbd_pipe_handle pipe; -{ - pipe->refcnt--; - return (USBD_NORMAL_COMPLETION); -} - -usbd_lock_token -usbd_lock() -{ - return (splusb()); -} - -void -usbd_unlock(tok) - usbd_lock_token tok; -{ - splx(tok); -} - /* XXXX use altno */ usbd_status usbd_set_interface(iface, altidx) @@ -821,7 +462,6 @@ usbd_set_interface(iface, altidx) free(iface->endpoints, M_USB); iface->endpoints = 0; iface->idesc = 0; - iface->state = USBD_INTERFACE_IDLE; r = usbd_fill_iface_data(iface->device, iface->index, altidx); if (r != USBD_NORMAL_COMPLETION) @@ -905,22 +545,6 @@ usbd_ar_pipe(pipe) return (USBD_NORMAL_COMPLETION); } -/* Dequeue all interface operations, called at splusb(). */ -static usbd_status -usbd_ar_iface(iface) - usbd_interface_handle iface; -{ - usbd_pipe_handle p; - usbd_status r, ret = USBD_NORMAL_COMPLETION; - - for (p = LIST_FIRST(&iface->pipes); p != 0; p = LIST_NEXT(p, next)) { - r = usbd_ar_pipe(p); - if (r != USBD_NORMAL_COMPLETION) - ret = r; - } - return (ret); -} - static int usbd_global_init_done = 0; void diff --git a/sys/dev/usb/usbdi.h b/sys/dev/usb/usbdi.h index 742e7280a81..5d636ef49b1 100644 --- a/sys/dev/usb/usbdi.h +++ b/sys/dev/usb/usbdi.h @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi.h,v 1.18 1999/05/16 13:51:05 augustss Exp $ */ +/* $NetBSD: usbdi.h,v 1.19 1999/06/14 17:09:58 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -44,32 +44,6 @@ typedef struct usbd_pipe *usbd_pipe_handle; typedef struct usbd_request *usbd_request_handle; typedef void *usbd_private_handle; -typedef enum { - USBD_ENDPOINT_ACTIVE, - USBD_ENDPOINT_STALLED, -} usbd_endpoint_state; - -typedef enum { - USBD_PIPE_ACTIVE, - USBD_PIPE_STALLED, - USBD_PIPE_IDLE, -} usbd_pipe_state; - -typedef enum { - USBD_INTERFACE_ACTIVE, - USBD_INTERFACE_STALLED, - USBD_INTERFACE_IDLE, -} usbd_interface_state; - -typedef enum { - USBD_DEVICE_ATTACHED, - USBD_DEVICE_POWERED, - USBD_DEVICE_DEFAULT, - USBD_DEVICE_ADDRESSED, - USBD_DEVICE_CONFIGURED, - USBD_DEVICE_SUSPENDED, -} usbd_device_state; - typedef enum { USBD_NORMAL_COMPLETION = 0, USBD_IN_PROGRESS, @@ -77,12 +51,10 @@ typedef enum { USBD_PENDING_REQUESTS, USBD_NOT_STARTED, USBD_INVAL, - USBD_IS_IDLE, USBD_NOMEM, USBD_CANCELLED, USBD_BAD_ADDRESS, USBD_IN_USE, - USBD_INTERFACE_NOT_ACTIVE, USBD_NO_ADDR, USBD_SET_ADDR_FAILED, USBD_NO_POWER, @@ -125,83 +97,27 @@ usbd_status usbd_setup_request usbd_private_handle priv, void *buffer, u_int32_t length, u_int16_t flags, u_int32_t timeout, usbd_callback)); -usbd_status usbd_setup_device_request - __P((usbd_request_handle reqh, usb_device_request_t *req)); usbd_status usbd_setup_default_request __P((usbd_request_handle reqh, usbd_device_handle dev, usbd_private_handle priv, u_int32_t timeout, usb_device_request_t *req, void *buffer, u_int32_t length, u_int16_t flags, usbd_callback)); -usbd_status usbd_set_request_timeout - __P((usbd_request_handle reqh, u_int32_t timeout)); usbd_status usbd_get_request_status __P((usbd_request_handle reqh, usbd_private_handle *priv, void **buffer, u_int32_t *count, usbd_status *status)); -usbd_status usbd_request_device_data - __P((usbd_request_handle reqh, usb_device_request_t *req)); -usb_descriptor_t *usbd_get_descriptor - __P((usbd_interface_handle *iface, u_int8_t desc_type)); usb_endpoint_descriptor_t *usbd_interface2endpoint_descriptor __P((usbd_interface_handle iface, u_int8_t address)); -usbd_status usbd_set_configuration - __P((usbd_device_handle dev, u_int8_t conf)); -usbd_status usbd_retry_request - __P((usbd_request_handle reqh, u_int32_t retry_count)); usbd_status usbd_abort_pipe __P((usbd_pipe_handle pipe)); -usbd_status usbd_abort_interface __P((usbd_interface_handle iface)); -usbd_status usbd_reset_pipe __P((usbd_pipe_handle pipe)); -usbd_status usbd_reset_interface __P((usbd_interface_handle iface)); usbd_status usbd_clear_endpoint_stall __P((usbd_pipe_handle pipe)); usbd_status usbd_clear_endpoint_stall_async __P((usbd_pipe_handle pipe)); -usbd_status usbd_set_pipe_state - __P((usbd_pipe_handle pipe, usbd_pipe_state state)); -usbd_status usbd_get_pipe_state - __P((usbd_pipe_handle pipe, usbd_pipe_state *state, - u_int32_t *endpoint_state, u_int32_t *request_count)); -usbd_status usbd_set_interface_state - __P((usbd_interface_handle iface, usbd_interface_state state)); -usbd_status usbd_get_interface_state - __P((usbd_interface_handle iface, usbd_interface_state *state)); -usbd_status usbd_get_device_state - __P((usbd_device_handle dev, usbd_device_state *state)); -usbd_status usbd_set_device_state - __P((usbd_device_handle dev, usbd_device_state state)); -usbd_status usbd_device_address - __P((usbd_device_handle dev, u_int8_t *address)); -usbd_status usbd_endpoint_address - __P((usbd_pipe_handle dev, u_int8_t *address)); usbd_status usbd_endpoint_count __P((usbd_interface_handle dev, u_int8_t *count)); usbd_status usbd_interface_count __P((usbd_device_handle dev, u_int8_t *count)); -#if 0 -u_int8_t usbd_bus_count __P((void)); -usbd_status usbd_get_bus_handle __P((u_int8_t index, usbd_bus_handle *bus)); -#endif -usbd_status usbd_get_root_hub - __P((usbd_bus_handle bus, usbd_device_handle *dev)); -usbd_status usbd_port_count __P((usbd_device_handle hub, u_int8_t *nports)); -usbd_status usbd_hub2device_handle - __P((usbd_device_handle hub, u_int8_t port, usbd_device_handle *dev)); -usbd_status usbd_request2pipe_handle - __P((usbd_request_handle reqh, usbd_pipe_handle *pipe)); -usbd_status usbd_pipe2interface_handle - __P((usbd_pipe_handle pipe, usbd_interface_handle *iface)); usbd_status usbd_interface2device_handle __P((usbd_interface_handle iface, usbd_device_handle *dev)); -usbd_status usbd_device2bus_handle - __P((usbd_device_handle dev, usbd_bus_handle *bus)); usbd_status usbd_device2interface_handle - __P((usbd_device_handle dev, u_int8_t ifaceno, - usbd_interface_handle *iface)); -usbd_status usbd_set_interface_private_handle - __P((usbd_interface_handle iface, usbd_private_handle priv)); -usbd_status usbd_get_interface_private_handle - __P((usbd_interface_handle iface, usbd_private_handle *priv)); -usbd_status usbd_reference_pipe __P((usbd_pipe_handle pipe)); -usbd_status usbd_dereference_pipe __P((usbd_pipe_handle pipe)); -usbd_lock_token usbd_lock __P((void)); -void usbd_unlock __P((usbd_lock_token tok)); + __P((usbd_device_handle dev, u_int8_t ifaceno, usbd_interface_handle *iface)); /* Non-standard */ usbd_status usbd_sync_transfer __P((usbd_request_handle req)); diff --git a/sys/dev/usb/usbdivar.h b/sys/dev/usb/usbdivar.h index 89223d63502..a89c6c26cbe 100644 --- a/sys/dev/usb/usbdivar.h +++ b/sys/dev/usb/usbdivar.h @@ -1,4 +1,4 @@ -/* $NetBSD: usbdivar.h,v 1.20 1999/05/16 13:51:05 augustss Exp $ */ +/* $NetBSD: usbdivar.h,v 1.21 1999/06/14 17:09:58 augustss Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -42,7 +42,6 @@ struct usbd_pipe; struct usbd_endpoint { usb_endpoint_descriptor_t *edesc; - usbd_endpoint_state state; int refcnt; int toggle; /* XXX */ }; @@ -96,7 +95,6 @@ struct usbd_bus { struct usbd_device { struct usbd_bus *bus; - usbd_device_state state; struct usbd_pipe *default_pipe; u_int8_t address; u_int8_t depth; @@ -119,7 +117,6 @@ struct usbd_device { struct usbd_interface { struct usbd_device *device; - usbd_interface_state state; usb_interface_descriptor_t *idesc; int index; int altindex; @@ -132,8 +129,7 @@ struct usbd_pipe { struct usbd_interface *iface; struct usbd_device *device; struct usbd_endpoint *endpoint; - usbd_pipe_state state; - int32_t refcnt; + int refcnt; char running; SIMPLEQ_HEAD(, usbd_request) queue; LIST_ENTRY(usbd_pipe) next; |
