diff options
Diffstat (limited to 'sys/dev/usb')
| -rw-r--r-- | sys/dev/usb/if_bwfm_usb.c | 4 | ||||
| -rw-r--r-- | sys/dev/usb/if_smsc.c | 4 | ||||
| -rw-r--r-- | sys/dev/usb/if_umb.c | 4 | ||||
| -rw-r--r-- | sys/dev/usb/ugen.c | 21 | ||||
| -rw-r--r-- | sys/dev/usb/uhid.c | 17 | ||||
| -rw-r--r-- | sys/dev/usb/usb.c | 120 | ||||
| -rw-r--r-- | sys/dev/usb/usb_subr.c | 78 | ||||
| -rw-r--r-- | sys/dev/usb/usbdi.h | 12 | ||||
| -rw-r--r-- | sys/dev/usb/usbdivar.h | 3 | ||||
| -rw-r--r-- | sys/dev/usb/usbroothub.c | 4 |
10 files changed, 59 insertions, 208 deletions
diff --git a/sys/dev/usb/if_bwfm_usb.c b/sys/dev/usb/if_bwfm_usb.c index e225bb60707..1396d5f5977 100644 --- a/sys/dev/usb/if_bwfm_usb.c +++ b/sys/dev/usb/if_bwfm_usb.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_bwfm_usb.c,v 1.8 2018/09/01 22:01:03 riastradh Exp $ */ +/* $NetBSD: if_bwfm_usb.c,v 1.9 2019/01/27 02:08:42 pgoyette Exp $ */ /* $OpenBSD: if_bwfm_usb.c,v 1.2 2017/10/15 14:55:13 patrick Exp $ */ /* * Copyright (c) 2010-2016 Broadcom Corporation @@ -18,7 +18,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bwfm_usb.c,v 1.8 2018/09/01 22:01:03 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bwfm_usb.c,v 1.9 2019/01/27 02:08:42 pgoyette Exp $"); #include <sys/param.h> #include <sys/systm.h> diff --git a/sys/dev/usb/if_smsc.c b/sys/dev/usb/if_smsc.c index be57db71958..0755fd2be7a 100644 --- a/sys/dev/usb/if_smsc.c +++ b/sys/dev/usb/if_smsc.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_smsc.c,v 1.40 2019/01/22 06:37:54 skrll Exp $ */ +/* $NetBSD: if_smsc.c,v 1.41 2019/01/27 02:08:42 pgoyette Exp $ */ /* $OpenBSD: if_smsc.c,v 1.4 2012/09/27 12:38:11 jsg Exp $ */ /* $FreeBSD: src/sys/dev/usb/net/if_smsc.c,v 1.1 2012/08/15 04:03:55 gonzo Exp $ */ @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.40 2019/01/22 06:37:54 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.41 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" diff --git a/sys/dev/usb/if_umb.c b/sys/dev/usb/if_umb.c index a9ebbe0ed98..6f62b57c796 100644 --- a/sys/dev/usb/if_umb.c +++ b/sys/dev/usb/if_umb.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_umb.c,v 1.7 2018/11/15 10:56:30 maxv Exp $ */ +/* $NetBSD: if_umb.c,v 1.8 2019/01/27 02:08:42 pgoyette Exp $ */ /* $OpenBSD: if_umb.c,v 1.20 2018/09/10 17:00:45 gerhard Exp $ */ /* @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_umb.c,v 1.7 2018/11/15 10:56:30 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_umb.c,v 1.8 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index 790ceb25313..e479ad7e4a8 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.141 2018/11/08 01:59:53 manu Exp $ */ +/* $NetBSD: ugen.c,v 1.142 2019/01/27 02:08:42 pgoyette Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.141 2018/11/08 01:59:53 manu Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.142 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.141 2018/11/08 01:59:53 manu Exp $"); #include <sys/proc.h> #include <sys/vnode.h> #include <sys/poll.h> +#include <sys/compat_stub.h> #include <dev/usb/usb.h> #include <dev/usb/usbdi.h> @@ -1835,13 +1836,17 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd, usbd_fill_deviceinfo(sc->sc_udev, (struct usb_device_info *)addr, 0); break; -#ifdef COMPAT_30 case USB_GET_DEVICEINFO_OLD: - usbd_fill_deviceinfo_old(sc->sc_udev, - (struct usb_device_info_old *)addr, 0); - - break; -#endif + { + int ret; + MODULE_CALL_HOOK(usb_subr_30_fill_hook, + (sc->sc_udev, (struct usb_device_info_old *)addr, 0, + usbd_devinfo_vp, usbd_printBCD), + enosys(), ret); + if (ret == 0) + return 0; + return EINVAL; + } default: return EINVAL; } diff --git a/sys/dev/usb/uhid.c b/sys/dev/usb/uhid.c index b8f9923bc37..21048fb33bd 100644 --- a/sys/dev/usb/uhid.c +++ b/sys/dev/usb/uhid.c @@ -1,4 +1,4 @@ -/* $NetBSD: uhid.c,v 1.102 2018/09/03 16:29:34 riastradh Exp $ */ +/* $NetBSD: uhid.c,v 1.103 2019/01/27 02:08:42 pgoyette Exp $ */ /* * Copyright (c) 1998, 2004, 2008, 2012 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.102 2018/09/03 16:29:34 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.103 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.102 2018/09/03 16:29:34 riastradh Exp $") #include <sys/vnode.h> #include <sys/poll.h> #include <sys/intr.h> +#include <sys/compat_stub.h> #include <dev/usb/usb.h> #include <dev/usb/usbhid.h> @@ -652,13 +653,15 @@ uhid_do_ioctl(struct uhid_softc *sc, u_long cmd, void *addr, usbd_fill_deviceinfo(sc->sc_hdev.sc_parent->sc_udev, (struct usb_device_info *)addr, 0); break; -#ifdef COMPAT_30 case USB_GET_DEVICEINFO_OLD: - usbd_fill_deviceinfo_old(sc->sc_hdev.sc_parent->sc_udev, - (struct usb_device_info_old *)addr, 0); - + MODULE_CALL_HOOK(usb_subr_30_fill_hook, + (sc->sc_hdev.sc_parent->sc_udev, + (struct usb_device_info_old *)addr, 0, + usbd_devinfo_vp, usbd_printBCD), + enosys(), err); + if (err == 0) + return 0; break; -#endif case USB_GET_STRING_DESC: { struct usb_string_desc *si = (struct usb_string_desc *)addr; diff --git a/sys/dev/usb/usb.c b/sys/dev/usb/usb.c index aa359da935b..873504b14f7 100644 --- a/sys/dev/usb/usb.c +++ b/sys/dev/usb/usb.c @@ -1,4 +1,4 @@ -/* $NetBSD: usb.c,v 1.174 2018/09/18 05:37:54 mrg Exp $ */ +/* $NetBSD: usb.c,v 1.175 2019/01/27 02:08:42 pgoyette Exp $ */ /* * Copyright (c) 1998, 2002, 2008, 2012 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.174 2018/09/18 05:37:54 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.175 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -64,6 +64,7 @@ __KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.174 2018/09/18 05:37:54 mrg Exp $"); #include <sys/once.h> #include <sys/atomic.h> #include <sys/sysctl.h> +#include <sys/compat_stub.h> #include <dev/usb/usb.h> #include <dev/usb/usbdi.h> @@ -201,10 +202,6 @@ Static int usb_get_next_event(struct usb_event *); Static void usb_async_intr(void *); Static void usb_soft_intr(void *); -#ifdef COMPAT_30 -Static void usb_copy_old_devinfo(struct usb_device_info_old *, const struct usb_device_info *); -#endif - Static const char *usbrev_str[] = USBREV_STR; static int usb_match(device_t, cfdata_t, void *); @@ -663,22 +660,18 @@ int usbread(dev_t dev, struct uio *uio, int flag) { struct usb_event *ue; -#ifdef COMPAT_30 struct usb_event_old *ueo = NULL; /* XXXGCC */ int useold = 0; -#endif int error, n; if (minor(dev) != USB_DEV_MINOR) return ENXIO; switch (uio->uio_resid) { -#ifdef COMPAT_30 case sizeof(struct usb_event_old): ueo = kmem_zalloc(sizeof(struct usb_event_old), KM_SLEEP); useold = 1; /* FALLTHRU */ -#endif case sizeof(struct usb_event): ue = usb_alloc_event(); break; @@ -702,43 +695,20 @@ usbread(dev_t dev, struct uio *uio, int flag) } mutex_exit(&usb_event_lock); if (!error) { -#ifdef COMPAT_30 if (useold) { /* copy fields to old struct */ - ueo->ue_type = ue->ue_type; - memcpy(&ueo->ue_time, &ue->ue_time, - sizeof(struct timespec)); - switch (ue->ue_type) { - case USB_EVENT_DEVICE_ATTACH: - case USB_EVENT_DEVICE_DETACH: - usb_copy_old_devinfo(&ueo->u.ue_device, &ue->u.ue_device); - break; - - case USB_EVENT_CTRLR_ATTACH: - case USB_EVENT_CTRLR_DETACH: - ueo->u.ue_ctrlr.ue_bus=ue->u.ue_ctrlr.ue_bus; - break; - - case USB_EVENT_DRIVER_ATTACH: - case USB_EVENT_DRIVER_DETACH: - ueo->u.ue_driver.ue_cookie=ue->u.ue_driver.ue_cookie; - memcpy(ueo->u.ue_driver.ue_devname, - ue->u.ue_driver.ue_devname, - sizeof(ue->u.ue_driver.ue_devname)); - break; - default: - ; - } + MODULE_CALL_HOOK(usb_subr_30_copy_hook, + (ue, ueo, uio), enosys(), error); + if (error == ENOSYS) + error = EINVAL; - error = uiomove((void *)ueo, sizeof(*ueo), uio); + if (!error) + error = uiomove((void *)ueo, sizeof(*ueo), uio); } else -#endif error = uiomove((void *)ue, sizeof(*ue), uio); } usb_free_event(ue); -#ifdef COMPAT_30 - if (useold) + if (ueo) kmem_free(ueo, sizeof(struct usb_event_old)); -#endif return error; } @@ -892,7 +862,6 @@ usbioctl(dev_t devt, u_long cmd, void *data, int flag, struct lwp *l) break; } -#ifdef COMPAT_30 case USB_DEVICEINFO_OLD: { struct usbd_device *dev; @@ -908,10 +877,14 @@ usbioctl(dev_t devt, u_long cmd, void *data, int flag, struct lwp *l) error = ENXIO; goto fail; } - usbd_fill_deviceinfo_old(dev, di, 1); - break; + MODULE_CALL_HOOK(usb_subr_30_fill_hook, + (dev, di, 1, usbd_devinfo_vp, usbd_printBCD), + enosys(), error); + if (error == ENOSYS) + error = EINVAL; + if (error) + goto fail; } -#endif case USB_DEVICESTATS: *(struct usb_device_stats *)data = sc->sc_bus->ub_stats; @@ -1259,62 +1232,3 @@ usb_detach(device_t self, int flags) return 0; } - -#ifdef COMPAT_30 -Static void -usb_copy_old_devinfo(struct usb_device_info_old *uo, - const struct usb_device_info *ue) -{ - const unsigned char *p; - unsigned char *q; - int i, n; - - uo->udi_bus = ue->udi_bus; - uo->udi_addr = ue->udi_addr; - uo->udi_cookie = ue->udi_cookie; - for (i = 0, p = (const unsigned char *)ue->udi_product, - q = (unsigned char *)uo->udi_product; - *p && i < USB_MAX_STRING_LEN - 1; p++) { - if (*p < 0x80) - q[i++] = *p; - else { - q[i++] = '?'; - if ((*p & 0xe0) == 0xe0) - p++; - p++; - } - } - q[i] = 0; - - for (i = 0, p = ue->udi_vendor, q = uo->udi_vendor; - *p && i < USB_MAX_STRING_LEN - 1; p++) { - if (* p < 0x80) - q[i++] = *p; - else { - q[i++] = '?'; - p++; - if ((*p & 0xe0) == 0xe0) - p++; - } - } - q[i] = 0; - - memcpy(uo->udi_release, ue->udi_release, sizeof(uo->udi_release)); - - uo->udi_productNo = ue->udi_productNo; - uo->udi_vendorNo = ue->udi_vendorNo; - uo->udi_releaseNo = ue->udi_releaseNo; - uo->udi_class = ue->udi_class; - uo->udi_subclass = ue->udi_subclass; - uo->udi_protocol = ue->udi_protocol; - uo->udi_config = ue->udi_config; - uo->udi_speed = ue->udi_speed; - uo->udi_power = ue->udi_power; - uo->udi_nports = ue->udi_nports; - - for (n=0; n<USB_MAX_DEVNAMES; n++) - memcpy(uo->udi_devnames[n], - ue->udi_devnames[n], USB_MAX_DEVNAMELEN); - memcpy(uo->udi_ports, ue->udi_ports, sizeof(uo->udi_ports)); -} -#endif diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c index 4c74c63e80a..32f5ac291e2 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.228 2018/10/23 01:49:37 manu Exp $ */ +/* $NetBSD: usb_subr.c,v 1.229 2019/01/27 02:08:42 pgoyette Exp $ */ /* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */ /* @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.228 2018/10/23 01:49:37 manu Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.229 2019/01/27 02:08:42 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -68,8 +68,6 @@ __KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.228 2018/10/23 01:49:37 manu Exp $"); Static usbd_status usbd_set_config(struct usbd_device *, int); Static void usbd_devinfo(struct usbd_device *, int, char *, size_t); -Static void usbd_devinfo_vp(struct usbd_device *, char *, size_t, char *, size_t, - int, int); Static int usbd_getnewaddr(struct usbd_bus *); Static int usbd_print(void *, const char *); Static int usbd_ifprint(void *, const char *); @@ -194,7 +192,7 @@ usbd_get_device_strings(struct usbd_device *ud) } -Static void +void usbd_devinfo_vp(struct usbd_device *dev, char *v, size_t vl, char *p, size_t pl, int usedev, int useencoded) { @@ -1587,76 +1585,6 @@ usbd_fill_deviceinfo(struct usbd_device *dev, struct usb_device_info *di, di->udi_nports = nports; } -#ifdef COMPAT_30 -void -usbd_fill_deviceinfo_old(struct usbd_device *dev, struct usb_device_info_old *di, - int usedev) -{ - struct usbd_port *p; - int i, j, err; - - di->udi_bus = device_unit(dev->ud_bus->ub_usbctl); - di->udi_addr = dev->ud_addr; - di->udi_cookie = dev->ud_cookie; - usbd_devinfo_vp(dev, di->udi_vendor, sizeof(di->udi_vendor), - di->udi_product, sizeof(di->udi_product), usedev, 0); - usbd_printBCD(di->udi_release, sizeof(di->udi_release), - UGETW(dev->ud_ddesc.bcdDevice)); - di->udi_vendorNo = UGETW(dev->ud_ddesc.idVendor); - di->udi_productNo = UGETW(dev->ud_ddesc.idProduct); - di->udi_releaseNo = UGETW(dev->ud_ddesc.bcdDevice); - di->udi_class = dev->ud_ddesc.bDeviceClass; - di->udi_subclass = dev->ud_ddesc.bDeviceSubClass; - di->udi_protocol = dev->ud_ddesc.bDeviceProtocol; - di->udi_config = dev->ud_config; - di->udi_power = dev->ud_selfpowered ? 0 : dev->ud_power; - di->udi_speed = dev->ud_speed; - - if (dev->ud_subdevlen > 0) { - for (i = 0, j = 0; i < dev->ud_subdevlen && - j < USB_MAX_DEVNAMES; i++) { - if (!dev->ud_subdevs[i]) - continue; - strncpy(di->udi_devnames[j], - device_xname(dev->ud_subdevs[i]), USB_MAX_DEVNAMELEN); - di->udi_devnames[j][USB_MAX_DEVNAMELEN-1] = '\0'; - j++; - } - } else { - j = 0; - } - for (/* j is set */; j < USB_MAX_DEVNAMES; j++) - di->udi_devnames[j][0] = 0; /* empty */ - - if (!dev->ud_hub) { - di->udi_nports = 0; - return; - } - - const int nports = dev->ud_hub->uh_hubdesc.bNbrPorts; - for (i = 1; i <= __arraycount(di->udi_ports) && i <= nports; - i++) { - p = &dev->ud_hub->uh_ports[i - 1]; - if (p->up_dev) - err = p->up_dev->ud_addr; - else { - const int s = UGETW(p->up_status.wPortStatus); - if (s & UPS_PORT_ENABLED) - err = USB_PORT_ENABLED; - else if (s & UPS_SUSPEND) - err = USB_PORT_SUSPENDED; - else if (s & UPS_PORT_POWER) - err = USB_PORT_POWERED; - else - err = USB_PORT_DISABLED; - } - di->udi_ports[i - 1] = err; - } - di->udi_nports = nports; -} -#endif - - void usb_free_device(struct usbd_device *dev) { diff --git a/sys/dev/usb/usbdi.h b/sys/dev/usb/usbdi.h index bef17f70f11..6c228d6119c 100644 --- a/sys/dev/usb/usbdi.h +++ b/sys/dev/usb/usbdi.h @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi.h,v 1.95 2018/08/02 06:09:04 riastradh Exp $ */ +/* $NetBSD: usbdi.h,v 1.96 2019/01/27 02:08:42 pgoyette Exp $ */ /* $FreeBSD: src/sys/dev/usb/usbdi.h,v 1.18 1999/11/17 22:33:49 n_hibma Exp $ */ /* @@ -158,10 +158,6 @@ usbd_status usbd_get_interface(struct usbd_interface *, uint8_t *); int usbd_get_no_alts(usb_config_descriptor_t *, int); void usbd_fill_deviceinfo(struct usbd_device *, struct usb_device_info *, int); -#ifdef COMPAT_30 -void usbd_fill_deviceinfo_old(struct usbd_device *, struct usb_device_info_old *, - int); -#endif int usbd_get_interface_altindex(struct usbd_interface *); usb_interface_descriptor_t *usbd_find_idesc(usb_config_descriptor_t *, @@ -235,6 +231,12 @@ const struct usb_devno *usb_match_device(const struct usb_devno *, usb_match_device((const struct usb_devno *)(tbl), sizeof(tbl) / sizeof((tbl)[0]), sizeof((tbl)[0]), (vendor), (product)) #define USB_PRODUCT_ANY 0xffff +/* compat callbacks */ +void usbd_devinfo_vp(struct usbd_device *, char *, size_t, char *, size_t, + int, int); +int usbd_printBCD(char *, size_t, int); + + /* NetBSD attachment information */ /* Attach data */ diff --git a/sys/dev/usb/usbdivar.h b/sys/dev/usb/usbdivar.h index 43fd14d2f17..245cb72dfc9 100644 --- a/sys/dev/usb/usbdivar.h +++ b/sys/dev/usb/usbdivar.h @@ -1,4 +1,4 @@ -/* $NetBSD: usbdivar.h,v 1.117 2018/08/09 06:26:47 mrg Exp $ */ +/* $NetBSD: usbdivar.h,v 1.118 2019/01/27 02:08:42 pgoyette Exp $ */ /* * Copyright (c) 1998, 2012 The NetBSD Foundation, Inc. @@ -324,7 +324,6 @@ usbd_status usbd_reattach_device(device_t, struct usbd_device *, int, const int *); void usbd_remove_device(struct usbd_device *, struct usbd_port *); -int usbd_printBCD(char *, size_t, int); usbd_status usbd_fill_iface_data(struct usbd_device *, int, int); void usb_free_device(struct usbd_device *); diff --git a/sys/dev/usb/usbroothub.c b/sys/dev/usb/usbroothub.c index 5912d713edb..2e0791a0c04 100644 --- a/sys/dev/usb/usbroothub.c +++ b/sys/dev/usb/usbroothub.c @@ -1,4 +1,4 @@ -/* $NetBSD: usbroothub.c,v 1.7 2018/09/03 16:29:34 riastradh Exp $ */ +/* $NetBSD: usbroothub.c,v 1.8 2019/01/27 02:08:42 pgoyette Exp $ */ /*- * Copyright (c) 1998, 2004, 2011, 2012 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usbroothub.c,v 1.7 2018/09/03 16:29:34 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbroothub.c,v 1.8 2019/01/27 02:08:42 pgoyette Exp $"); #include <dev/usb/usb.h> #include <dev/usb/usbdi.h> |
