1) Make debugging more selective.
2) create function usbd_errstr which turns a usbd_status into a sensible error message 3) Change the printf in DPRINTF to logprintf which is a define for log(KERN_DEBUG, x)
This commit is contained in:
parent
c8bdad599f
commit
67aa00a71b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=45604
@ -51,9 +51,9 @@
|
||||
|
||||
#include <dev/usb/hid.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) printf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
|
||||
#ifdef UHID_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
extern int usbdebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
|
@ -75,9 +75,18 @@
|
||||
#include <machine/clock.h>
|
||||
|
||||
#define delay(d) DELAY(d)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OHCI_DEBUG
|
||||
#define DPRINTF(x) if (ohcidebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (ohcidebug>(n)) logprintf x
|
||||
int ohcidebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* The OHCI controller is little endian, so on big endian machines
|
||||
* the data strored in memory needs to be swapped.
|
||||
@ -145,7 +154,7 @@ int ohci_str __P((usb_string_descriptor_t *, int, char *));
|
||||
void ohci_timeout __P((void *));
|
||||
void ohci_rhsc_able __P((ohci_softc_t *, int));
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
ohci_softc_t *thesc;
|
||||
void ohci_dumpregs __P((ohci_softc_t *));
|
||||
void ohci_dump_tds __P((ohci_soft_td_t *));
|
||||
@ -458,7 +467,7 @@ ohci_init(sc)
|
||||
r = USBD_IOERROR;
|
||||
goto bad3;
|
||||
}
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
thesc = sc;
|
||||
if (ohcidebug > 15)
|
||||
ohci_dumpregs(sc);
|
||||
@ -494,7 +503,7 @@ ohci_init(sc)
|
||||
|
||||
sc->sc_noport = OHCI_GET_NDP(OREAD4(sc, OHCI_RH_DESCRIPTOR_A));
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (ohcidebug > 5)
|
||||
ohci_dumpregs(sc);
|
||||
#endif
|
||||
@ -515,7 +524,7 @@ ohci_init(sc)
|
||||
return (r);
|
||||
}
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
void ohcidump(void);
|
||||
void ohcidump(void) { ohci_dumpregs(thesc); }
|
||||
|
||||
@ -650,7 +659,7 @@ ohci_rhsc_able(sc, on)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
char *ohci_cc_strs[] = {
|
||||
"NO_ERROR",
|
||||
"CRC",
|
||||
@ -686,7 +695,7 @@ ohci_process_done(sc, done)
|
||||
sdone = std;
|
||||
}
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (ohcidebug > 10) {
|
||||
printf("ohci_process_done: TD done:\n");
|
||||
ohci_dump_tds(sdone);
|
||||
@ -937,7 +946,7 @@ ohci_waitintr(sc, reqh)
|
||||
usb_delay_ms(&sc->sc_bus, 1);
|
||||
intrs = OREAD4(sc, OHCI_INTERRUPT_STATUS) & sc->sc_eintrs;
|
||||
DPRINTFN(15,("ohci_waitintr: 0x%04x\n", intrs));
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (ohcidebug > 15)
|
||||
ohci_dumpregs(sc);
|
||||
#endif
|
||||
@ -1065,7 +1074,7 @@ ohci_device_request(reqh)
|
||||
|
||||
reqh->hcpriv = stat;
|
||||
|
||||
#if USB_DEBUG
|
||||
#if UHCI_DEBUG
|
||||
if (ohcidebug > 5) {
|
||||
printf("ohci_device_request:\n");
|
||||
ohci_dump_ed(sed);
|
||||
@ -1088,7 +1097,7 @@ ohci_device_request(reqh)
|
||||
}
|
||||
splx(s);
|
||||
|
||||
#if USB_DEBUG
|
||||
#if UHCI_DEBUG
|
||||
if (ohcidebug > 5) {
|
||||
delay(5000);
|
||||
printf("ohci_device_request: status=%x\n",
|
||||
@ -1206,7 +1215,7 @@ ohci_timeout(addr)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
void
|
||||
ohci_dump_tds(std)
|
||||
ohci_soft_td_t *std;
|
||||
@ -2071,7 +2080,7 @@ ohci_device_intr_start(reqh)
|
||||
|
||||
reqh->hcpriv = xfer;
|
||||
|
||||
#if USB_DEBUG
|
||||
#if UHCI_DEBUG
|
||||
if (ohcidebug > 5) {
|
||||
printf("ohci_device_intr_transfer:\n");
|
||||
ohci_dump_ed(sed);
|
||||
@ -2092,7 +2101,7 @@ ohci_device_intr_start(reqh)
|
||||
#endif
|
||||
sed->ed->ed_flags &= LE(~OHCI_ED_SKIP);
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (ohcidebug > 5) {
|
||||
delay(5000);
|
||||
printf("ohci_device_intr_transfer: status=%x\n",
|
||||
|
@ -104,11 +104,3 @@ int ohci_intr __P((void *));
|
||||
|
||||
#define MS_TO_TICKS(ms) ((ms) * hz / 1000)
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (ohcidebug) printf x
|
||||
#define DPRINTFN(n,x) if (ohcidebug>(n)) printf x
|
||||
extern int ohcidebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
#endif
|
||||
|
@ -69,9 +69,9 @@
|
||||
#include <dev/usb/usb_quirks.h>
|
||||
#include <dev/usb/hid.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (ucomdebug) printf x
|
||||
#define DPRINTFN(n,x) if (ucomdebug>(n)) printf x
|
||||
#ifdef UCOM_DEBUG
|
||||
#define DPRINTF(x) if (ucomdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (ucomdebug>(n)) logprintf x
|
||||
int ucomdebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -95,12 +95,14 @@ USB_MATCH(ucom)
|
||||
|
||||
if (!uaa->iface)
|
||||
return (UMATCH_NONE);
|
||||
|
||||
id = usbd_get_interface_descriptor(uaa->iface);
|
||||
if ((id &&
|
||||
id->bInterfaceClass != UCLASS_CDC) ||
|
||||
id->bInterfaceSubClass != USUBCLASS_ABSTRACT_CONTROL_MODEL)
|
||||
return (UMATCH_NONE);
|
||||
return (UMATCH_IFACECLASS_IFACESUBCLASS);
|
||||
if ((id
|
||||
&& id->bInterfaceClass == UCLASS_CDC)
|
||||
&& id->bInterfaceSubClass == USUBCLASS_ABSTRACT_CONTROL_MODEL)
|
||||
return (UMATCH_IFACECLASS_IFACESUBCLASS);
|
||||
|
||||
return (UMATCH_NONE);
|
||||
}
|
||||
|
||||
USB_ATTACH(ucom)
|
||||
|
@ -65,9 +65,9 @@
|
||||
#include <dev/usb/usbdi.h>
|
||||
#include <dev/usb/usbdi_util.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (ugendebug) printf x
|
||||
#define DPRINTFN(n,x) if (ugendebug>(n)) printf x
|
||||
#ifdef UGEN_DEBUG
|
||||
#define DPRINTF(x) if (ugendebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (ugendebug>(n)) logprintf x
|
||||
int ugendebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -735,7 +735,7 @@ ugenioctl(dev, cmd, addr, flag, p)
|
||||
return (EINVAL);
|
||||
|
||||
switch (cmd) {
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UGEN_DEBUG
|
||||
case USB_SETDEBUG:
|
||||
ugendebug = *(int *)addr;
|
||||
break;
|
||||
|
@ -80,6 +80,15 @@ cgiform.tpl
|
||||
#define delay(d) DELAY(d)
|
||||
#endif
|
||||
|
||||
#ifdef UHCI_DEBUG
|
||||
#define DPRINTF(x) if (uhcidebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (uhcidebug>(n)) logprintf x
|
||||
int uhcidebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
#endif
|
||||
|
||||
#define MS_TO_TICKS(ms) ((ms) * hz / 1000)
|
||||
|
||||
struct uhci_pipe {
|
||||
@ -202,7 +211,7 @@ usbd_status uhci_device_setintr __P((uhci_softc_t *sc,
|
||||
void uhci_intr_done __P((uhci_intr_info_t *ii));
|
||||
void uhci_isoc_done __P((uhci_intr_info_t *ii));
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
static void uhci_dumpregs __P((uhci_softc_t *));
|
||||
void uhci_dump_tds __P((uhci_soft_td_t *));
|
||||
void uhci_dump_qh __P((uhci_soft_qh_t *));
|
||||
@ -382,7 +391,7 @@ uhci_init(sc)
|
||||
return (uhci_run(sc, 1)); /* and here we go... */
|
||||
}
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
static void
|
||||
uhci_dumpregs(sc)
|
||||
uhci_softc_t *sc;
|
||||
@ -582,7 +591,7 @@ uhci_remove_ctrl(sc, sqh)
|
||||
|
||||
DPRINTFN(10, ("uhci_remove_ctrl: sqh=%p\n", sqh));
|
||||
for (pqh = sc->sc_ctl_start; pqh->qh->hlink != sqh; pqh=pqh->qh->hlink)
|
||||
#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
|
||||
#if defined(DIAGNOSTIC) || defined(UHCI_DEBUG)
|
||||
if (pqh->qh->qh_hlink & UHCI_PTR_T) {
|
||||
printf("uhci_remove_ctrl: QH not found\n");
|
||||
return;
|
||||
@ -625,7 +634,7 @@ uhci_remove_bulk(sc, sqh)
|
||||
for (pqh = sc->sc_bulk_start;
|
||||
pqh->qh->hlink != sqh;
|
||||
pqh = pqh->qh->hlink)
|
||||
#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
|
||||
#if defined(DIAGNOSTIC) || defined(UHCI_DEBUG)
|
||||
if (pqh->qh->qh_hlink & UHCI_PTR_T) {
|
||||
printf("uhci_remove_bulk: QH not found\n");
|
||||
return;
|
||||
@ -648,7 +657,7 @@ uhci_intr(p)
|
||||
uhci_intr_info_t *ii;
|
||||
|
||||
sc->sc_intrs++;
|
||||
#if defined(USB_DEBUG)
|
||||
#if defined(UHCI_DEBUG)
|
||||
if (uhcidebug > 9) {
|
||||
printf("uhci_intr %p\n", sc);
|
||||
uhci_dumpregs(sc);
|
||||
@ -782,7 +791,7 @@ uhci_ii_done(ii, timo)
|
||||
std = std->td->link.std) {
|
||||
tst = std->td->td_status;
|
||||
status |= tst;
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if ((tst & UHCI_TD_ERROR) && uhcidebug) {
|
||||
printf("uhci_ii_done: intr error TD:\n");
|
||||
uhci_dump_td(std);
|
||||
@ -1225,7 +1234,7 @@ uhci_device_bulk_start(reqh)
|
||||
if (!isread && len != 0)
|
||||
memcpy(KERNADDR(dmap), reqh->buffer, len);
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 10) {
|
||||
printf("uhci_device_bulk_transfer: xfer(1)\n");
|
||||
uhci_dump_tds(xfer);
|
||||
@ -1257,7 +1266,7 @@ uhci_device_bulk_start(reqh)
|
||||
}
|
||||
splx(s);
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 10) {
|
||||
printf("uhci_device_bulk_transfer: xfer(2)\n");
|
||||
uhci_dump_tds(xfer);
|
||||
@ -1385,7 +1394,7 @@ uhci_device_intr_start(reqh)
|
||||
goto ret2;
|
||||
xferend->td->td_status |= UHCI_TD_IOC;
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 10) {
|
||||
printf("uhci_device_intr_transfer: xfer(1)\n");
|
||||
uhci_dump_tds(xfer);
|
||||
@ -1411,7 +1420,7 @@ uhci_device_intr_start(reqh)
|
||||
}
|
||||
splx(s);
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 10) {
|
||||
printf("uhci_device_intr_transfer: xfer(2)\n");
|
||||
uhci_dump_tds(xfer);
|
||||
@ -1577,7 +1586,7 @@ uhci_device_request(reqh)
|
||||
UHCI_TD_IN (0, endpt, addr, 1);
|
||||
stat->td->td_buffer = 0;
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 20) {
|
||||
printf("uhci_device_request: setup\n");
|
||||
uhci_dump_td(setup);
|
||||
@ -1604,7 +1613,7 @@ uhci_device_request(reqh)
|
||||
s = splusb();
|
||||
uhci_add_ctrl(sc, sqh);
|
||||
LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list);
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 12) {
|
||||
uhci_soft_td_t *std;
|
||||
uhci_soft_qh_t *xqh;
|
||||
@ -1650,7 +1659,7 @@ uhci_device_isoc_transfer(reqh)
|
||||
usbd_request_handle reqh;
|
||||
{
|
||||
struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
usbd_device_handle dev = upipe->pipe.device;
|
||||
uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
|
||||
#endif
|
||||
@ -1851,7 +1860,7 @@ uhci_intr_done(ii)
|
||||
dma, &xfer, &xferend);
|
||||
xferend->td->td_status |= UHCI_TD_IOC;
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UHCI_DEBUG
|
||||
if (uhcidebug > 10) {
|
||||
printf("uhci_device_intr_done: xfer(1)\n");
|
||||
uhci_dump_tds(xfer);
|
||||
@ -1967,7 +1976,7 @@ uhci_remove_intr(sc, n, sqh)
|
||||
DPRINTFN(4, ("uhci_remove_intr: n=%d sqh=%p\n", n, sqh));
|
||||
|
||||
for (pqh = vf->hqh; pqh->qh->hlink != sqh; pqh = pqh->qh->hlink)
|
||||
#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
|
||||
#if defined(DIAGNOSTIC) || defined(UHCI_DEBUG)
|
||||
if (pqh->qh->qh_hlink & UHCI_PTR_T) {
|
||||
printf("uhci_remove_intr: QH not found\n");
|
||||
return;
|
||||
|
@ -168,12 +168,3 @@ int uhci_intr __P((void *));
|
||||
void uhci_reset __P((void *));
|
||||
#endif
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (uhcidebug) printf x
|
||||
#define DPRINTFN(n,x) if (uhcidebug>(n)) printf x
|
||||
extern int uhcidebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
#endif
|
||||
|
||||
|
@ -68,9 +68,9 @@
|
||||
#include <dev/usb/hid.h>
|
||||
#include <dev/usb/usb_quirks.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (uhiddebug) printf x
|
||||
#define DPRINTFN(n,x) if (uhiddebug>(n)) printf x
|
||||
#ifdef UHID_DEBUG
|
||||
#define DPRINTF(x) if (uhiddebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (uhiddebug>(n)) logprintf x
|
||||
int uhiddebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
|
@ -64,7 +64,6 @@
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
extern int usbdebug;
|
||||
extern char *usbd_error_strs[];
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
@ -147,8 +146,8 @@ USB_ATTACH(uhub)
|
||||
|
||||
r = usbd_set_config_index(dev, 0, 1);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTF(("%s: configuration failed, error=%d(%s)\n",
|
||||
USBDEVNAME(sc->sc_dev), r, usbd_error_strs[r]));
|
||||
DPRINTF(("%s: configuration failed, %s\n",
|
||||
USBDEVNAME(sc->sc_dev), usbd_errstr(r)));
|
||||
USB_ATTACH_ERROR_RETURN;
|
||||
}
|
||||
|
||||
@ -172,8 +171,8 @@ USB_ATTACH(uhub)
|
||||
r = usbd_do_request(dev, &req, &hubdesc);
|
||||
}
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTF(("%s: getting hub descriptor failed, error=%d(%s)\n",
|
||||
USBDEVNAME(sc->sc_dev), r, usbd_error_strs[r]));
|
||||
DPRINTF(("%s: getting hub descriptor failed, %s\n",
|
||||
USBDEVNAME(sc->sc_dev), usbd_errstr(r)));
|
||||
USB_ATTACH_ERROR_RETURN;
|
||||
}
|
||||
|
||||
@ -344,8 +343,8 @@ uhub_explore(dev)
|
||||
up = &dev->hub->ports[port-1];
|
||||
r = usbd_get_port_status(dev, port, &up->status);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTF(("uhub_explore: get port %d status failed error=%d(%s)\n",
|
||||
port, r, usbd_error_strs[r]));
|
||||
DPRINTF(("uhub_explore: get port %d status failed, %s\n",
|
||||
port, usbd_errstr(r)));
|
||||
continue;
|
||||
}
|
||||
status = UGETW(up->status.wPortStatus);
|
||||
@ -355,18 +354,16 @@ uhub_explore(dev)
|
||||
if (change & UPS_C_PORT_ENABLED) {
|
||||
usbd_clear_port_feature(dev, port, UHF_C_PORT_ENABLE);
|
||||
if (status & UPS_PORT_ENABLED) {
|
||||
printf("%s: illegal enable change, port %d\n",
|
||||
printf("%s: port %d illegal enable change\n",
|
||||
USBDEVNAME(sc->sc_dev), port);
|
||||
} else {
|
||||
/* Port error condition. */
|
||||
if (up->restartcnt++ < USBD_RESTART_MAX) {
|
||||
printf("%s: port error, restarting "
|
||||
"port %d\n",
|
||||
printf("%s: port %d error, restarting\n",
|
||||
USBDEVNAME(sc->sc_dev), port);
|
||||
goto disco;
|
||||
} else {
|
||||
printf("%s: port error, giving up "
|
||||
"port %d\n",
|
||||
printf("%s: port %d error, giving up\n",
|
||||
USBDEVNAME(sc->sc_dev), port);
|
||||
}
|
||||
}
|
||||
@ -418,8 +415,8 @@ uhub_explore(dev)
|
||||
port, up);
|
||||
/* XXX retry a few times? */
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTFN(-1,("uhub_explore: usb_new_device failed, "
|
||||
"error=%d(%s)\n", r, usbd_error_strs[r]));
|
||||
DPRINTFN(-1,("uhub_explore: usb_new_device failed, %s\n",
|
||||
usbd_errstr(r)));
|
||||
/* Avoid addressing problems by disabling. */
|
||||
/* usbd_reset_port(dev, port, &up->status); */
|
||||
/* XXX
|
||||
|
@ -76,7 +76,7 @@
|
||||
|
||||
#define delay(d) DELAY(d)
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UKBD_DEBUG
|
||||
#define DPRINTF(x) if (ukbddebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (ukbddebug>(n)) logprintf x
|
||||
int ukbddebug = 1;
|
||||
@ -865,7 +865,7 @@ ukbd_interrupt(keyboard_t *kbd, void *arg)
|
||||
if (state->ks_inputs <= 0)
|
||||
return 0;
|
||||
|
||||
#if USB_DEBUG
|
||||
#if UKBD_DEBUG
|
||||
for (i = state->ks_inputhead, j = 0; j < state->ks_inputs; ++j,
|
||||
i = (i + 1)%INPUTBUFSIZE) {
|
||||
c = state->ks_input[i];
|
||||
@ -879,7 +879,7 @@ ukbd_interrupt(keyboard_t *kbd, void *arg)
|
||||
printf("%d ", ud->keycode[i]);
|
||||
}
|
||||
printf("\n");
|
||||
#endif /* USB_DEBUG */
|
||||
#endif /* UKBD_DEBUG */
|
||||
|
||||
if (state->ks_polling)
|
||||
return 0;
|
||||
@ -1425,15 +1425,17 @@ probe_keyboard(struct usb_attach_arg *uaa, int flags)
|
||||
{
|
||||
usb_interface_descriptor_t *id;
|
||||
|
||||
/* Check that this is a keyboard that speaks the boot protocol. */
|
||||
if (!uaa->iface)
|
||||
return EINVAL;
|
||||
|
||||
/* Check that this is a keyboard that speaks the boot protocol. */
|
||||
id = usbd_get_interface_descriptor(uaa->iface);
|
||||
if (id->bInterfaceClass != UCLASS_HID ||
|
||||
id->bInterfaceSubClass != USUBCLASS_BOOT ||
|
||||
id->bInterfaceProtocol != UPROTO_BOOT_KEYBOARD)
|
||||
return EINVAL;
|
||||
return 0;
|
||||
if (id
|
||||
&& id->bInterfaceClass == UCLASS_HID
|
||||
&& id->bInterfaceSubClass == USUBCLASS_BOOT
|
||||
&& id->bInterfaceProtocol == UPROTO_BOOT_KEYBOARD)
|
||||
return 0;
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -67,9 +67,9 @@
|
||||
#define LPTPRI (PZERO+8)
|
||||
#define ULPT_BSIZE 1024
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (ulptdebug) printf x
|
||||
#define DPRINTFN(n,x) if (ulptdebug>(n)) printf x
|
||||
#ifdef ULPT_DEBUG
|
||||
#define DPRINTF(x) if (ulptdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (ulptdebug>(n)) logprintf x
|
||||
int ulptdebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -300,7 +300,7 @@ ulptopen(dev, flag, mode, p)
|
||||
sc->sc_flags = flags;
|
||||
DPRINTF(("ulptopen: flags=0x%x\n", (unsigned)flags));
|
||||
|
||||
#if defined(USB_DEBUG) && defined(__FreeBSD__)
|
||||
#if defined(ULPT_DEBUG) && defined(__FreeBSD__)
|
||||
/* Ignoring these flags might not be a good idea */
|
||||
if ((flags & ~ULPT_NOPRIME) != 0)
|
||||
printf("ulptopen: flags ignored: %b\n", flags,
|
||||
|
@ -65,9 +65,9 @@
|
||||
#include <dev/usb/usbdevs.h>
|
||||
#include <dev/usb/usb_quirks.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (umodemdebug) printf x
|
||||
#define DPRINTFN(n,x) if (umodemdebug>(n)) printf x
|
||||
#ifdef UMODEM_DEBUG
|
||||
#define DPRINTF(x) if (umodemdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (umodemdebug>(n)) logprintf x
|
||||
int umodemdebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
|
@ -74,9 +74,9 @@
|
||||
#include <machine/mouse.h>
|
||||
#endif
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (umsdebug) printf x
|
||||
#define DPRINTFN(n,x) if (umsdebug>(n)) printf x
|
||||
#ifdef UMS_DEBUG
|
||||
#define DPRINTF(x) if (umsdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (umsdebug>(n)) logprintf x
|
||||
int umsdebug = 1;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -307,7 +307,7 @@ USB_ATTACH(ums)
|
||||
sc->sc_disconnected = 0;
|
||||
free(desc, M_TEMP);
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UMS_DEBUG
|
||||
DPRINTF(("ums_attach: sc=%p\n", sc));
|
||||
DPRINTF(("ums_attach: X\t%d/%d\n",
|
||||
sc->sc_loc_x.pos, sc->sc_loc_x.size));
|
||||
@ -495,7 +495,7 @@ ums_intr(reqh, addr, status)
|
||||
|
||||
sc->qhead += sc->mode.packetsize;
|
||||
sc->qcount += sc->mode.packetsize;
|
||||
#ifdef USB_DEBUG
|
||||
#ifdef UMS_DEBUG
|
||||
if (sc->qhead > sizeof(sc->qbuf))
|
||||
DPRINTF(("Buffer overrun! %d %d\n",
|
||||
sc->qhead, sizeof(sc->qbuf)));
|
||||
@ -566,7 +566,7 @@ ums_disable(v)
|
||||
|
||||
sc->sc_enabled = 0;
|
||||
|
||||
#if defined(USBVERBOSE) && defined(__FreeBSD__)
|
||||
#if defined(__FreeBSD__)
|
||||
if (sc->qcount != 0)
|
||||
DPRINTF(("Discarded %d bytes in queue\n", sc->qcount));
|
||||
#endif
|
||||
|
@ -75,11 +75,10 @@ MALLOC_DEFINE(M_USBDEV, "USBdev", "USB device");
|
||||
#include <dev/usb/usb_quirks.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) printf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
int usbdebug = 1;
|
||||
int uhcidebug = 1;
|
||||
int ohcidebug = 1;
|
||||
extern int uhcidebug, ohcidebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
#define DPRINTFN(n,x)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: usb_subr.c,v 1.27 1999/01/08 11:58:25 augustss Exp $ */
|
||||
/* $NetBSD: usb_subr.c,v 1.29 1999/03/18 12:08:43 augustss Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
@ -65,8 +65,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) printf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
extern int usbdebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -86,50 +86,6 @@ usbd_status usbd_probe_and_attach
|
||||
__P((bdevice *parent, usbd_device_handle dev, int port, int addr));
|
||||
|
||||
|
||||
#ifdef USBVERBOSE
|
||||
typedef u_int16_t usb_vendor_id_t;
|
||||
typedef u_int16_t usb_product_id_t;
|
||||
|
||||
/*
|
||||
* Descriptions of of known vendors and devices ("products").
|
||||
*/
|
||||
struct usb_knowndev {
|
||||
usb_vendor_id_t vendor;
|
||||
usb_product_id_t product;
|
||||
int flags;
|
||||
char *vendorname, *productname;
|
||||
};
|
||||
#define USB_KNOWNDEV_NOPROD 0x01 /* match on vendor only */
|
||||
|
||||
#include <dev/usb/usbdevs_data.h>
|
||||
#endif /* USBVERBOSE */
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
char *usbd_error_strs[] = {
|
||||
"NORMAL_COMPLETION",
|
||||
"IN_PROGRESS",
|
||||
"PENDING_REQUESTS",
|
||||
"NOT_STARTED",
|
||||
"INVAL",
|
||||
"IS_IDLE",
|
||||
"NOMEM",
|
||||
"CANCELLED",
|
||||
"BAD_ADDRESS",
|
||||
"IN_USE",
|
||||
"INTERFACE_NOT_ACTIVE",
|
||||
"NO_ADDR",
|
||||
"SET_ADDR_FAILED",
|
||||
"NO_POWER",
|
||||
"TOO_DEEP",
|
||||
"IOERROR",
|
||||
"NOT_CONFIGURED",
|
||||
"TIMEOUT",
|
||||
"SHORT_XFER",
|
||||
"STALLED",
|
||||
"XXX",
|
||||
};
|
||||
#endif
|
||||
|
||||
usbd_status
|
||||
usbd_get_string_desc(dev, sindex, langid, sdesc)
|
||||
usbd_device_handle dev;
|
||||
@ -205,31 +161,10 @@ usbd_devinfo_vp(dev, v, p)
|
||||
{
|
||||
usb_device_descriptor_t *udd = &dev->ddesc;
|
||||
char *vendor = 0, *product = 0;
|
||||
#ifdef USBVERBOSE
|
||||
struct usb_knowndev *kdp;
|
||||
#endif
|
||||
|
||||
vendor = usbd_get_string(dev, udd->iManufacturer, v);
|
||||
product = usbd_get_string(dev, udd->iProduct, p);
|
||||
#ifdef USBVERBOSE
|
||||
if (!vendor) {
|
||||
for(kdp = usb_knowndevs;
|
||||
kdp->vendorname != NULL;
|
||||
kdp++) {
|
||||
if (kdp->vendor == UGETW(udd->idVendor) &&
|
||||
(kdp->product == UGETW(udd->idProduct) ||
|
||||
(kdp->flags & USB_KNOWNDEV_NOPROD) != 0))
|
||||
break;
|
||||
}
|
||||
if (kdp->vendorname == NULL)
|
||||
vendor = product = NULL;
|
||||
else {
|
||||
vendor = kdp->vendorname;
|
||||
product = (kdp->flags & USB_KNOWNDEV_NOPROD) == 0 ?
|
||||
kdp->productname : NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (vendor)
|
||||
strcpy(v, vendor);
|
||||
else
|
||||
@ -312,20 +247,23 @@ usbd_reset_port(dev, port, ps)
|
||||
USETW(req.wIndex, port);
|
||||
USETW(req.wLength, 0);
|
||||
r = usbd_do_request(dev, &req, 0);
|
||||
DPRINTFN(1,("usbd_reset_port: port %d reset done, error=%d(%s)\n",
|
||||
port, r, usbd_error_strs[r]));
|
||||
DPRINTFN(1,("usbd_reset_port: port %d reset done, %s\n",
|
||||
port, usbd_errstr(r)));
|
||||
if (r != USBD_NORMAL_COMPLETION)
|
||||
return (r);
|
||||
return(r);
|
||||
|
||||
n = 10;
|
||||
do {
|
||||
/* Wait for device to recover from reset. */
|
||||
usbd_delay_ms(dev, USB_PORT_RESET_DELAY);
|
||||
r = usbd_get_port_status(dev, port, ps);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTF(("usbd_reset_port: get status failed %d\n",r));
|
||||
DPRINTF(("usbd_reset_port: get port %d status failed %s\n",
|
||||
port, usbd_errstr(r)));
|
||||
return (r);
|
||||
}
|
||||
} while ((UGETW(ps->wPortChange) & UPS_C_PORT_RESET) == 0 && --n > 0);
|
||||
|
||||
if (n == 0) {
|
||||
printf("usbd_reset_port: timeout\n");
|
||||
return (USBD_IOERROR);
|
||||
@ -333,7 +271,8 @@ usbd_reset_port(dev, port, ps)
|
||||
r = usbd_clear_port_feature(dev, port, UHF_C_PORT_RESET);
|
||||
#ifdef USB_DEBUG
|
||||
if (r != USBD_NORMAL_COMPLETION)
|
||||
DPRINTF(("usbd_reset_port: clear port feature failed %d\n",r));
|
||||
DPRINTF(("usbd_reset_port: clear port %d feature failed %d\n",
|
||||
port, r));
|
||||
#endif
|
||||
|
||||
/* Wait for the device to recover from reset. */
|
||||
@ -585,9 +524,8 @@ usbd_set_config_index(dev, index, msg)
|
||||
(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]));
|
||||
DPRINTF(("usbd_set_config_index: status=0x%04x, %s\n",
|
||||
UGETW(ds.wStatus), usbd_errstr(r)));
|
||||
} else
|
||||
selfpowered = 1;
|
||||
}
|
||||
@ -621,9 +559,8 @@ usbd_set_config_index(dev, index, msg)
|
||||
cdp->bConfigurationValue));
|
||||
r = usbd_set_config(dev, cdp->bConfigurationValue);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTF(("usbd_set_config_index: setting config=%d failed, "
|
||||
"error=%d(%s)\n",
|
||||
cdp->bConfigurationValue, r, usbd_error_strs[r]));
|
||||
DPRINTF(("usbd_set_config_index: setting config=%d failed, %s\n",
|
||||
cdp->bConfigurationValue, usbd_errstr(r)));
|
||||
goto bad;
|
||||
}
|
||||
DPRINTF(("usbd_set_config_index: setting new config %d\n",
|
||||
@ -680,12 +617,13 @@ usbd_setup_pipe(dev, iface, ep, pipe)
|
||||
p->refcnt = 1;
|
||||
p->intrreqh = 0;
|
||||
p->running = 0;
|
||||
p->disco = 0;
|
||||
p->discoarg = 0;
|
||||
SIMPLEQ_INIT(&p->queue);
|
||||
r = dev->bus->open_pipe(p);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
DPRINTFN(-1,("usbd_setup_pipe: endpoint=0x%x failed, error=%d"
|
||||
"(%s)\n",
|
||||
ep->edesc->bEndpointAddress, r, usbd_error_strs[r]));
|
||||
DPRINTFN(-1,("usbd_setup_pipe: endpoint=0x%x failed, %s\n",
|
||||
ep->edesc->bEndpointAddress, usbd_errstr(r)));
|
||||
free(p, M_USB);
|
||||
return (r);
|
||||
}
|
||||
@ -715,7 +653,6 @@ usbd_getnewaddr(bus)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
usbd_status
|
||||
usbd_probe_and_attach(parent, dev, port, addr)
|
||||
bdevice *parent;
|
||||
@ -764,17 +701,8 @@ usbd_probe_and_attach(parent, dev, port, addr)
|
||||
confi));
|
||||
r = usbd_set_config_index(dev, confi, 1);
|
||||
if (r != USBD_NORMAL_COMPLETION) {
|
||||
#ifdef USB_DEBUG
|
||||
DPRINTF(("%s: port %d, set config at addr %d failed, "
|
||||
"error=%d(%s)\n", USBDEVNAME(*parent), port,
|
||||
addr, r, usbd_error_strs[r]));
|
||||
#else
|
||||
printf("%s: port %d, set config at addr %d failed\n",
|
||||
USBDEVNAME(*parent), port, addr);
|
||||
#endif
|
||||
#if defined(__FreeBSD__)
|
||||
device_delete_child(*parent, bdev);
|
||||
#endif
|
||||
printf("%s: port %d, set config at addr %d failed, %s\n",
|
||||
USBDEVNAME(*parent), port, addr, usbd_errstr(r));
|
||||
return (r);
|
||||
}
|
||||
nifaces = dev->cdesc->bNumInterface;
|
||||
@ -1136,3 +1064,4 @@ usbd_fill_deviceinfo(dev, di)
|
||||
} else
|
||||
di->nports = 0;
|
||||
}
|
||||
|
||||
|
@ -62,8 +62,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) printf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
extern int usbdebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
@ -86,6 +86,33 @@ static SIMPLEQ_HEAD(, usbd_request) usbd_free_requests;
|
||||
extern struct cdevsw usb_cdevsw;
|
||||
#endif
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
char *usbd_error_strs[USBD_ERROR_MAX] = {
|
||||
"NORMAL_COMPLETION",
|
||||
"IN_PROGRESS",
|
||||
"PENDING_REQUESTS",
|
||||
"NOT_STARTED",
|
||||
"INVAL",
|
||||
"IS_IDLE",
|
||||
"NOMEM",
|
||||
"CANCELLED",
|
||||
"BAD_ADDRESS",
|
||||
"IN_USE",
|
||||
"INTERFACE_NOT_ACTIVE",
|
||||
"NO_ADDR",
|
||||
"SET_ADDR_FAILED",
|
||||
"NO_POWER",
|
||||
"TOO_DEEP",
|
||||
"IOERROR",
|
||||
"NOT_CONFIGURED",
|
||||
"TIMEOUT",
|
||||
"SHORT_XFER",
|
||||
"STALLED",
|
||||
"XXX",
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
usbd_status
|
||||
usbd_open_pipe(iface, address, flags, pipe)
|
||||
usbd_interface_handle iface;
|
||||
@ -1302,3 +1329,21 @@ usbd_devname(bdevice *bdev)
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
char *
|
||||
usbd_errstr(usbd_status err)
|
||||
{
|
||||
static char buffer[5]; /* XXX static buffer */
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
if ( err < USBD_ERROR_MAX ) {
|
||||
return usbd_error_strs[err];
|
||||
} else {
|
||||
snprintf(buffer, 4, "%d", err);
|
||||
return buffer;
|
||||
}
|
||||
#else
|
||||
snprintf(buffer, 4, "%d", err);
|
||||
return buffer;
|
||||
#endif
|
||||
}
|
||||
|
@ -96,6 +96,7 @@ typedef enum {
|
||||
USBD_INTERRUPTED,
|
||||
|
||||
USBD_XXX,
|
||||
#define USBD_ERROR_MAX 21 /* used for usbd_error_strs */
|
||||
} usbd_status;
|
||||
|
||||
typedef int usbd_lock_token;
|
||||
@ -243,6 +244,9 @@ usb_endpoint_descriptor_t *usbd_find_edesc
|
||||
__P((usb_config_descriptor_t *cd, int ifaceidx, int altidx,
|
||||
int endptidx));
|
||||
|
||||
char * usbd_errstr(usbd_status err);
|
||||
|
||||
|
||||
void usbd_dopoll __P((usbd_interface_handle));
|
||||
void usbd_set_polling __P((usbd_interface_handle iface, int on));
|
||||
|
||||
|
@ -54,8 +54,8 @@
|
||||
#include <dev/usb/usbdi_util.h>
|
||||
|
||||
#ifdef USB_DEBUG
|
||||
#define DPRINTF(x) if (usbdebug) printf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
|
||||
#define DPRINTF(x) if (usbdebug) logprintf x
|
||||
#define DPRINTFN(n,x) if (usbdebug>(n)) logprintf x
|
||||
extern int usbdebug;
|
||||
#else
|
||||
#define DPRINTF(x)
|
||||
|
Loading…
Reference in New Issue
Block a user