summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2002-01-02 20:16:53 +0000
committerjoe <joe@FreeBSD.org>2002-01-02 20:16:53 +0000
commitdc37dfab7839bf806e8b708af3594f4351d24c83 (patch)
tree0606c3163a777ae4d4d6ebf432595414516a660e
parent59ca9f3607038f6a0ace86a98f6ca9a484836e7f (diff)
downloadFreeBSD-src-dc37dfab7839bf806e8b708af3594f4351d24c83.zip
FreeBSD-src-dc37dfab7839bf806e8b708af3594f4351d24c83.tar.gz
Sync usb.h with NetBSD, apart from usb_device_info.speed, which
requires logic changes. For now leave it as usb_device_info.lowspeed. It will get addressed when the usb.c code is sync'd.
-rw-r--r--sys/dev/usb/umass.c4
-rw-r--r--sys/dev/usb/usb.c8
-rw-r--r--sys/dev/usb/usb.h202
-rw-r--r--sys/dev/usb/usb_subr.c10
-rw-r--r--sys/dev/usb/usbhid.h4
-rw-r--r--usr.sbin/usbd/usbd.c20
6 files changed, 165 insertions, 83 deletions
diff --git a/sys/dev/usb/umass.c b/sys/dev/usb/umass.c
index e17fc50..af04f74 100644
--- a/sys/dev/usb/umass.c
+++ b/sys/dev/usb/umass.c
@@ -719,10 +719,10 @@ umass_match_proto(struct umass_softc *sc, usbd_interface_handle iface,
sc->proto |= PROTO_CBI;
#endif
break;
- case UIPROTO_MASS_BBB:
+ case UIPROTO_MASS_BBB_OLD:
sc->proto |= PROTO_BBB;
break;
- case UIPROTO_MASS_BBB_P:
+ case UIPROTO_MASS_BBB:
sc->drive = ZIP_100;
sc->proto |= PROTO_BBB;
sc->transfer_speed = UMASS_ZIP100_TRANSFER_SPEED;
diff --git a/sys/dev/usb/usb.c b/sys/dev/usb/usb.c
index 8bf401b..ef7d909 100644
--- a/sys/dev/usb/usb.c
+++ b/sys/dev/usb/usb.c
@@ -652,10 +652,10 @@ usbd_add_event(type, dev)
int s;
s = splusb();
- if (type == USB_EVENT_DETACH) {
+ if (type == USB_EVENT_CTRLR_DETACH) {
for (ueq = TAILQ_FIRST(&usb_events); ueq; ueq = ueq_next) {
ueq_next = TAILQ_NEXT(ueq, next);
- if (ueq->ue.ue_cookie.cookie == dev->cookie.cookie) {
+ if (ueq->ue.u.ue_driver.ue_cookie.cookie == dev->cookie.cookie) {
TAILQ_REMOVE(&usb_events, ueq, next);
free(ueq, M_USBDEV);
usb_nevents--;
@@ -676,8 +676,8 @@ usbd_add_event(type, dev)
return;
}
ueq->ue.ue_type = type;
- ueq->ue.ue_cookie = dev->cookie;
- usbd_fill_deviceinfo(dev, &ueq->ue.ue_device, 0);
+ ueq->ue.u.ue_driver.ue_cookie = dev->cookie;
+ usbd_fill_deviceinfo(dev, &ueq->ue.u.ue_device, 0);
microtime(&thetime);
TIMEVAL_TO_TIMESPEC(&thetime, &ueq->ue.ue_time);
TAILQ_INSERT_TAIL(&usb_events, ueq, next);
diff --git a/sys/dev/usb/usb.h b/sys/dev/usb/usb.h
index 6b6ee31..21c733f 100644
--- a/sys/dev/usb/usb.h
+++ b/sys/dev/usb/usb.h
@@ -1,5 +1,5 @@
-/* $NetBSD: usb.h,v 1.38 1999/10/20 21:02:39 augustss Exp $ */
-/* $FreeBSD$ */
+/* $NetBSD: usb/usb.h,v 1.60 2001/12/29 15:44:11 augustss Exp $ */
+/* $FreeBSD$ */
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -79,36 +79,43 @@ MALLOC_DECLARE(M_USBHC);
/*
* The USB records contain some unaligned little-endian word
* components. The U[SG]ETW macros take care of both the alignment
- * and endian problem and should always be used to access 16 bit
+ * and endian problem and should always be used to access non-byte
* values.
*/
typedef u_int8_t uByte;
typedef u_int8_t uWord[2];
+typedef u_int8_t uDWord[4];
+
+#define USETW2(w,h,l) ((w)[0] = (u_int8_t)(l), (w)[1] = (u_int8_t)(h))
+
+#if 1
#define UGETW(w) ((w)[0] | ((w)[1] << 8))
#define USETW(w,v) ((w)[0] = (u_int8_t)(v), (w)[1] = (u_int8_t)((v) >> 8))
-#define USETW2(w,h,l) ((w)[0] = (u_int8_t)(l), (w)[1] = (u_int8_t)(h))
-typedef u_int8_t uDWord[4];
#define UGETDW(w) ((w)[0] | ((w)[1] << 8) | ((w)[2] << 16) | ((w)[3] << 24))
#define USETDW(w,v) ((w)[0] = (u_int8_t)(v), \
(w)[1] = (u_int8_t)((v) >> 8), \
(w)[2] = (u_int8_t)((v) >> 16), \
(w)[3] = (u_int8_t)((v) >> 24))
+#else
/*
* On little-endian machines that can handle unanliged accesses
* (e.g. i386) these macros can be replaced by the following.
*/
-#if 0
#define UGETW(w) (*(u_int16_t *)(w))
#define USETW(w,v) (*(u_int16_t *)(w) = (v))
+#define UGETDW(w) (*(u_int32_t *)(w))
+#define USETDW(w,v) (*(u_int32_t *)(w) = (v))
#endif
+#define UPACKED __attribute__((__packed__))
+
typedef struct {
uByte bmRequestType;
uByte bRequest;
uWord wValue;
uWord wIndex;
uWord wLength;
-} usb_device_request_t;
+} UPACKED usb_device_request_t;
#define UT_WRITE 0x00
#define UT_READ 0x80
@@ -154,6 +161,10 @@ typedef struct {
#define UDESC_STRING 0x03
#define UDESC_INTERFACE 0x04
#define UDESC_ENDPOINT 0x05
+#define UDESC_DEVICE_QUALIFIER 0x06
+#define UDESC_OTHER_SPEED_CONFIGURATION 0x07
+#define UDESC_INTERFACE_POWER 0x08
+#define UDESC_OTG 0x09
#define UDESC_CS_DEVICE 0x21 /* class specific */
#define UDESC_CS_CONFIG 0x22
#define UDESC_CS_STRING 0x23
@@ -170,19 +181,25 @@ typedef struct {
/* Feature numbers */
#define UF_ENDPOINT_HALT 0
#define UF_DEVICE_REMOTE_WAKEUP 1
+#define UF_TEST_MODE 2
#define USB_MAX_IPACKET 8 /* maximum size of the initial packet */
+#define USB_2_MAX_CTRL_PACKET 64
+#define USB_2_MAX_BULK_PACKET 512
+
typedef struct {
uByte bLength;
uByte bDescriptorType;
uByte bDescriptorSubtype;
-} usb_descriptor_t;
+} UPACKED usb_descriptor_t;
typedef struct {
uByte bLength;
uByte bDescriptorType;
uWord bcdUSB;
+#define UD_USB_2_0 0x0200
+#define UD_IS_USB2(d) (UGETW((d)->bcdUSB) >= UD_USB_2_0)
uByte bDeviceClass;
uByte bDeviceSubClass;
uByte bDeviceProtocol;
@@ -195,7 +212,7 @@ typedef struct {
uByte iProduct;
uByte iSerialNumber;
uByte bNumConfigurations;
-} usb_device_descriptor_t;
+} UPACKED usb_device_descriptor_t;
#define USB_DEVICE_DESCRIPTOR_SIZE 18
typedef struct {
@@ -211,7 +228,7 @@ typedef struct {
#define UC_REMOTE_WAKEUP 0x20
uByte bMaxPower; /* max current in 2 mA units */
#define UC_POWER_FACTOR 2
-} usb_config_descriptor_t;
+} UPACKED usb_config_descriptor_t;
#define USB_CONFIG_DESCRIPTOR_SIZE 9
typedef struct {
@@ -224,7 +241,7 @@ typedef struct {
uByte bInterfaceSubClass;
uByte bInterfaceProtocol;
uByte iInterface;
-} usb_interface_descriptor_t;
+} UPACKED usb_interface_descriptor_t;
#define USB_INTERFACE_DESCRIPTOR_SIZE 9
typedef struct {
@@ -251,19 +268,23 @@ typedef struct {
#define UE_GET_ISO_TYPE(a) ((a) & UE_ISO_TYPE)
uWord wMaxPacketSize;
uByte bInterval;
-} usb_endpoint_descriptor_t;
+} UPACKED usb_endpoint_descriptor_t;
#define USB_ENDPOINT_DESCRIPTOR_SIZE 7
typedef struct {
uByte bLength;
uByte bDescriptorType;
uWord bString[127];
-} usb_string_descriptor_t;
+} UPACKED usb_string_descriptor_t;
#define USB_MAX_STRING_LEN 128
#define USB_LANGUAGE_TABLE 0 /* # of the string language id table */
/* Hub specific request */
#define UR_GET_BUS_STATE 0x02
+#define UR_CLEAR_TT_BUFFER 0x08
+#define UR_RESET_TT 0x09
+#define UR_GET_TT_STATE 0x0a
+#define UR_STOP_TT 0x0b
/* Hub features */
#define UHF_C_HUB_LOCAL_POWER 0
@@ -280,30 +301,64 @@ typedef struct {
#define UHF_C_PORT_SUSPEND 18
#define UHF_C_PORT_OVER_CURRENT 19
#define UHF_C_PORT_RESET 20
+#define UHF_PORT_TEST 21
+#define UHF_PORT_INDICATOR 22
typedef struct {
uByte bDescLength;
uByte bDescriptorType;
uByte bNbrPorts;
uWord wHubCharacteristics;
-#define UHD_PWR 0x03
-#define UHD_PWR_GANGED 0x00
-#define UHD_PWR_INDIVIDUAL 0x01
-#define UHD_PWR_NO_SWITCH 0x02
-#define UHD_COMPOUND 0x04
-#define UHD_OC 0x18
-#define UHD_OC_GLOBAL 0x00
-#define UHD_OC_INDIVIDUAL 0x08
-#define UHD_OC_NONE 0x10
+#define UHD_PWR 0x0003
+#define UHD_PWR_GANGED 0x0000
+#define UHD_PWR_INDIVIDUAL 0x0001
+#define UHD_PWR_NO_SWITCH 0x0002
+#define UHD_COMPOUND 0x0004
+#define UHD_OC 0x0018
+#define UHD_OC_GLOBAL 0x0000
+#define UHD_OC_INDIVIDUAL 0x0008
+#define UHD_OC_NONE 0x0010
+#define UHD_TT_THINK 0x0060
+#define UHD_TT_THINK_8 0x0000
+#define UHD_TT_THINK_16 0x0020
+#define UHD_TT_THINK_24 0x0040
+#define UHD_TT_THINK_32 0x0060
+#define UHD_PORT_IND 0x0080
uByte bPwrOn2PwrGood; /* delay in 2 ms units */
#define UHD_PWRON_FACTOR 2
uByte bHubContrCurrent;
uByte DeviceRemovable[32]; /* max 255 ports */
#define UHD_NOT_REMOV(desc, i) \
(((desc)->DeviceRemovable[(i)/8] >> ((i) % 8)) & 1)
- /* deprecated uByte PortPowerCtrlMask[]; */
-} usb_hub_descriptor_t;
-#define USB_HUB_DESCRIPTOR_SIZE 8
+ /* deprecated */ uByte PortPowerCtrlMask[1];
+} UPACKED usb_hub_descriptor_t;
+#define USB_HUB_DESCRIPTOR_SIZE 9 /* includes deprecated PortPowerCtrlMask */
+
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uWord bcdUSB;
+ uByte bDeviceClass;
+ uByte bDeviceSubClass;
+ uByte bDeviceProtocol;
+ uByte bMaxPacketSize0;
+ uByte bNumConfigurations;
+ uByte bReserved;
+} UPACKED usb_device_qualifier_t;
+#define USB_DEVICE_QUALIFIER_SIZE 10
+
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uByte bmAttributes;
+#define UOTG_SRP 0x01
+#define UOTG_HNP 0x02
+} UPACKED usb_otg_descriptor_t;
+
+/* OTG feature selectors */
+#define UOTG_B_HNP_ENABLE 3
+#define UOTG_A_HNP_SUPPORT 4
+#define UOTG_A_ALT_HNP_SUPPORT 5
typedef struct {
uWord wStatus;
@@ -312,14 +367,14 @@ typedef struct {
#define UDS_REMOTE_WAKEUP 0x0002
/* Endpoint status flags */
#define UES_HALT 0x0001
-} usb_status_t;
+} UPACKED usb_status_t;
typedef struct {
uWord wHubStatus;
#define UHS_LOCAL_POWER 0x0001
#define UHS_OVER_CURRENT 0x0002
uWord wHubChange;
-} usb_hub_status_t;
+} UPACKED usb_hub_status_t;
typedef struct {
uWord wPortStatus;
@@ -330,13 +385,16 @@ typedef struct {
#define UPS_RESET 0x0010
#define UPS_PORT_POWER 0x0100
#define UPS_LOW_SPEED 0x0200
+#define UPS_HIGH_SPEED 0x0400
+#define UPS_PORT_TEST 0x0800
+#define UPS_PORT_INDICATOR 0x1000
uWord wPortChange;
#define UPS_C_CONNECT_STATUS 0x0001
#define UPS_C_PORT_ENABLED 0x0002
#define UPS_C_SUSPEND 0x0004
#define UPS_C_OVERCURRENT_INDICATOR 0x0008
#define UPS_C_PORT_RESET 0x0010
-} usb_port_status_t;
+} UPACKED usb_port_status_t;
/* Device class codes */
#define UDCLASS_AUDIO 0x00
@@ -344,8 +402,11 @@ typedef struct {
#define UDCLASS_HID 0x00
#define UDCLASS_HUB 0x09
#define UDSUBCLASS_HUB 0
+#define UDPROTO_FSHUB 0
+#define UDPROTO_HSHUBSTT 1
+#define UDPROTO_HSHUBMTT 2
#define UDCLASS_MASS 0x00
-
+
/* Interface class codes */
#define UICLASS_UNSPEC 0x00
@@ -374,6 +435,7 @@ typedef struct {
#define UISUBCLASS_PRINTER 1
#define UIPROTO_PRINTER_UNI 1
#define UIPROTO_PRINTER_BI 2
+#define UIPROTO_PRINTER_1284 3
#define UICLASS_MASS 0x08
#define UISUBCLASS_RBC 1
@@ -384,11 +446,14 @@ typedef struct {
#define UISUBCLASS_SCSI 6
#define UIPROTO_MASS_CBI_I 0
#define UIPROTO_MASS_CBI 1
-#define UIPROTO_MASS_BBB 2
-#define UIPROTO_MASS_BBB_P 80 /* 'P' for the Iomega Zip drive */
+#define UIPROTO_MASS_BBB_OLD 2 /* Not in the spec anymore */
+#define UIPROTO_MASS_BBB 80 /* 'P' for the Iomega Zip drive */
#define UICLASS_HUB 0x09
#define UISUBCLASS_HUB 0
+#define UIPROTO_FSHUB 0
+#define UIPROTO_HSHUBSTT 0 /* Yes, same as previous */
+#define UIPROTO_HSHUBMTT 1
#define UICLASS_CDC_DATA 0x0a
#define UISUBCLASS_DATA 0
@@ -409,6 +474,9 @@ typedef struct {
#define UICLASS_FIRM_UPD 0x0c
#define UICLASS_APPL_SPEC 0xfe
+#define UISUBCLASS_IRDA 2
+#define UIPROTO_IRDA 0
+
#define UICLASS_VENDOR 0xff
@@ -424,18 +492,20 @@ typedef struct {
#if 0
/* These are the values from the spec. */
#define USB_PORT_RESET_DELAY 10 /* ms */
+#define USB_PORT_ROOT_RESET_DELAY 50 /* ms */
#define USB_PORT_RESET_SETTLE 10 /* ms */
#define USB_PORT_POWERUP_DELAY 100 /* ms */
#define USB_SET_ADDRESS_SETTLE 2 /* ms */
-#define USB_RESUME_TIME (20*5) /* ms */
+#define USB_RESUME_DELAY (20*5) /* ms */
#define USB_RESUME_WAIT 10 /* ms */
#define USB_RESUME_RECOVERY 10 /* ms */
#define USB_EXTRA_POWER_UP_TIME 0 /* ms */
#else
/* Allow for marginal (i.e. non-conforming) devices. */
#define USB_PORT_RESET_DELAY 50 /* ms */
+#define USB_PORT_ROOT_RESET_DELAY 250 /* ms */
#define USB_PORT_RESET_RECOVERY 50 /* ms */
-#define USB_PORT_POWERUP_DELAY 200 /* ms */
+#define USB_PORT_POWERUP_DELAY 300 /* ms */
#define USB_SET_ADDRESS_SETTLE 10 /* ms */
#define USB_RESUME_DELAY (50*5) /* ms */
#define USB_RESUME_WAIT 50 /* ms */
@@ -448,8 +518,9 @@ typedef struct {
#define USB_BUS_RESET_DELAY 100 /* ms XXX?*/
-#define USB_UNCONFIG_NO 0
-#define USB_UNCONFIG_INDEX (-1)
+
+#define USB_UNCONFIG_NO 0
+#define USB_UNCONFIG_INDEX (-1)
/*** ioctl() related stuff ***/
@@ -508,26 +579,28 @@ struct usb_ctl_report_desc {
u_char data[1024]; /* filled data size will vary */
};
+typedef struct { u_int32_t cookie; } usb_event_cookie_t;
+
+#define USB_MAX_DEVNAMES 4
+#define USB_MAX_DEVNAMELEN 16
struct usb_device_info {
- u_int8_t bus; /* bus number */
- u_int8_t addr; /* device address */
-# define MAXDEVNAMELEN 10 /* number of drivers */
-# define MAXDEVNAMES 4 /* attached drivers */
- char devnames[MAXDEVNAMES][MAXDEVNAMELEN];
- /* device names */
- char product[USB_MAX_STRING_LEN]; /* iProduct */
- char vendor[USB_MAX_STRING_LEN]; /* iManufacturer */
- char release[8]; /* string of releaseNo*/
- u_int16_t productNo; /* idProduct */
- u_int16_t vendorNo; /* idVendor */
- u_int16_t releaseNo; /* bcdDevice */
- u_int8_t class; /* bDeviceClass */
- u_int8_t subclass; /* bDeviceSubclass */
- u_int8_t protocol; /* bDeviceProtocol */
- u_int8_t config; /* config index */
- u_int8_t lowspeed; /* lowsped yes/no */
+ u_int8_t bus;
+ u_int8_t addr; /* device address */
+ usb_event_cookie_t cookie;
+ char product[USB_MAX_STRING_LEN];
+ char vendor[USB_MAX_STRING_LEN];
+ char release[8];
+ u_int16_t productNo;
+ u_int16_t vendorNo;
+ u_int16_t releaseNo;
+ u_int8_t class;
+ u_int8_t subclass;
+ u_int8_t protocol;
+ u_int8_t config;
+ u_int8_t lowspeed;
int power; /* power consumption in mA, 0 if selfpowered */
- int nports; /* 0 if not hub */
+ int nports;
+ char devnames[USB_MAX_DEVNAMES][USB_MAX_DEVNAMELEN];
u_int8_t ports[16];/* hub only: addresses of devices on ports */
#define USB_PORT_ENABLED 0xff
#define USB_PORT_SUSPENDED 0xfe
@@ -544,15 +617,27 @@ struct usb_device_stats {
u_long requests[4]; /* indexed by transfer type UE_* */
};
-typedef struct { u_int32_t cookie; } usb_event_cookie_t;
/* Events that can be read from /dev/usb */
struct usb_event {
int ue_type;
-#define USB_EVENT_ATTACH 1
-#define USB_EVENT_DETACH 2
- struct usb_device_info ue_device;
+#define USB_EVENT_CTRLR_ATTACH 1
+#define USB_EVENT_CTRLR_DETACH 2
+#define USB_EVENT_DEVICE_ATTACH 3
+#define USB_EVENT_DEVICE_DETACH 4
+#define USB_EVENT_DRIVER_ATTACH 5
+#define USB_EVENT_DRIVER_DETACH 6
+#define USB_EVENT_IS_ATTACH(n) ((n) == USB_EVENT_CTRLR_ATTACH || (n) == USB_EVENT_DEVICE_ATTACH || (n) == USB_EVENT_DRIVER_ATTACH)
struct timespec ue_time;
- usb_event_cookie_t ue_cookie;
+ union {
+ struct {
+ int ue_bus;
+ } ue_ctrlr;
+ struct usb_device_info ue_device;
+ struct {
+ usb_event_cookie_t ue_cookie;
+ char ue_devname[16];
+ } ue_driver;
+ } u;
};
/* USB controller */
@@ -567,6 +652,7 @@ struct usb_event {
#define USB_SET_IMMED _IOW ('U', 22, int)
#define USB_GET_REPORT _IOWR('U', 23, struct usb_ctl_report)
#define USB_SET_REPORT _IOW ('U', 24, struct usb_ctl_report)
+#define USB_GET_REPORT_ID _IOR ('U', 25, int)
/* Generic USB device */
#define USB_GET_CONFIG _IOR ('U', 100, int)
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
index f14c02a..f17e515 100644
--- a/sys/dev/usb/usb_subr.c
+++ b/sys/dev/usb/usb_subr.c
@@ -1032,7 +1032,7 @@ usbd_new_device(device_ptr_t parent, usbd_bus_handle bus, int depth,
return (err);
}
- usbd_add_event(USB_EVENT_ATTACH, dev);
+ usbd_add_event(USB_EVENT_CTRLR_ATTACH, dev);
return (USBD_NORMAL_COMPLETION);
}
@@ -1172,15 +1172,15 @@ usbd_fill_deviceinfo(usbd_device_handle dev, struct usb_device_info *di,
if (dev->subdevs != NULL) {
for (i = 0; dev->subdevs[i] &&
- i < MAXDEVNAMES; i++) {
+ i < USB_MAX_DEVNAMES; i++) {
strncpy(di->devnames[i], USBDEVPTRNAME(dev->subdevs[i]),
- MAXDEVNAMELEN);
- di->devnames[i][MAXDEVNAMELEN-1] = '\0';
+ USB_MAX_DEVNAMELEN);
+ di->devnames[i][USB_MAX_DEVNAMELEN-1] = '\0';
}
} else {
i = 0;
}
- for (/*i is set */; i < MAXDEVNAMES; i++)
+ for (/*i is set */; i < USB_MAX_DEVNAMES; i++)
di->devnames[i][0] = 0; /* empty */
if (dev->hub) {
diff --git a/sys/dev/usb/usbhid.h b/sys/dev/usb/usbhid.h
index a6552b5..fbc1704 100644
--- a/sys/dev/usb/usbhid.h
+++ b/sys/dev/usb/usbhid.h
@@ -54,10 +54,6 @@
#define UR_GET_PROTOCOL 0x03
#define UR_SET_PROTOCOL 0x0b
-#if defined(__FreeBSD__)
-#define UPACKED __attribute__ ((packed))
-#endif
-
typedef struct usb_hid_descriptor {
uByte bLength;
uByte bDescriptorType;
diff --git a/usr.sbin/usbd/usbd.c b/usr.sbin/usbd/usbd.c
index 7697196..967a80b 100644
--- a/usr.sbin/usbd/usbd.c
+++ b/usr.sbin/usbd/usbd.c
@@ -109,8 +109,8 @@ typedef struct event_name_s {
} event_name_t;
event_name_t event_names[] = {
- {USB_EVENT_ATTACH, "attach"},
- {USB_EVENT_DETACH, "detach"},
+ {USB_EVENT_CTRLR_ATTACH, "attach"},
+ {USB_EVENT_CTRLR_DETACH, "detach"},
{0, NULL} /* NULL indicates end of list, not 0 */
};
@@ -560,7 +560,7 @@ print_event(struct usb_event *event)
{
int i;
struct timespec *timespec = &event->ue_time;
- struct usb_device_info *devinfo = &event->ue_device;
+ struct usb_device_info *devinfo = &event->u.ue_device;
printf("%s: ", __progname);
for (i = 0; event_names[i].name != NULL; i++) {
@@ -585,7 +585,7 @@ print_event(struct usb_event *event)
char c = ' ';
printf(" device names:");
- for (i = 0; i < MAXDEVNAMES; i++) {
+ for (i = 0; i < USB_MAX_DEVNAMES; i++) {
if (devinfo->devnames[i][0] == '\0')
break;
@@ -662,7 +662,7 @@ match_devname(action_t *action, struct usb_device_info *devinfo)
regmatch_t match;
int error;
- for (i = 0; i < MAXDEVNAMES; i++) {
+ for (i = 0; i < USB_MAX_DEVNAMES; i++) {
if (devinfo->devnames[i][0] == '\0')
break;
@@ -853,9 +853,9 @@ process_event_queue(int fd)
/* handle the event appropriately */
switch (event.ue_type) {
- case USB_EVENT_ATTACH:
- case USB_EVENT_DETACH:
- if (find_action(&event.ue_device, &action_match) == 0)
+ case USB_EVENT_CTRLR_ATTACH:
+ case USB_EVENT_CTRLR_DETACH:
+ if (find_action(&event.u.ue_device, &action_match) == 0)
/* nothing found */
break;
@@ -873,9 +873,9 @@ process_event_queue(int fd)
__progname, action_match.devname, strerror(errno));
}
- if (event.ue_type == USB_EVENT_ATTACH && action_match.action->attach)
+ if (event.ue_type == USB_EVENT_CTRLR_ATTACH && action_match.action->attach)
execute_command(action_match.action->attach);
- if (event.ue_type == USB_EVENT_DETACH && action_match.action->detach)
+ if (event.ue_type == USB_EVENT_CTRLR_DETACH && action_match.action->detach)
execute_command(action_match.action->detach);
break;
OpenPOWER on IntegriCloud