summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Pyhalov <apyhalov@gmail.com>2018-05-23 12:23:44 +0300
committerHans Rosenfeld <hans.rosenfeld@joyent.com>2018-05-24 15:12:46 +0200
commitfcd69270d3e30d8121da73f26d9d8aec4375ecd4 (patch)
tree10da0a520fc5ab53d314d8b4b213ad2f754def72
parent0df48811699b83d09c552548effcb1718d6ff1d0 (diff)
downloadillumos-joyent-fcd69270d3e30d8121da73f26d9d8aec4375ecd4.tar.gz
9550 Create hub symlinks for xhci devices
Reviewed by: Andy Stormont <astormont@racktopsystems.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Toomas Soome <tsoome@me.com> Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com> Approved by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
-rw-r--r--usr/src/cmd/devfsadm/usb_link.c44
1 files changed, 25 insertions, 19 deletions
diff --git a/usr/src/cmd/devfsadm/usb_link.c b/usr/src/cmd/devfsadm/usb_link.c
index d47c4931eb..ac6a8447fb 100644
--- a/usr/src/cmd/devfsadm/usb_link.c
+++ b/usr/src/cmd/devfsadm/usb_link.c
@@ -61,6 +61,8 @@ static devfsadm_create_t usb_cbt[] = {
ILEVEL_0, usb_process },
{ "usb", DDI_NT_NEXUS, "ehci", DRV_EXACT|TYPE_EXACT,
ILEVEL_0, usb_process },
+ { "usb", DDI_NT_NEXUS, "xhci", DRV_EXACT|TYPE_EXACT,
+ ILEVEL_0, usb_process },
{ "usb", DDI_NT_SCSI_NEXUS, "scsa2usb", DRV_EXACT|TYPE_EXACT,
ILEVEL_0, usb_process },
{ "usb", DDI_NT_UGEN, "scsa2usb", DRV_EXACT|TYPE_EXACT,
@@ -189,28 +191,29 @@ minor_fini(void)
}
typedef enum {
- DRIVER_HUBD = 0,
- DRIVER_OHCI = 1,
- DRIVER_EHCI = 2,
- DRIVER_UHCI = 3,
- DRIVER_USB_AC = 4,
- DRIVER_USB_AS = 5,
- DRIVER_HID = 6,
- DRIVER_USB_MID = 7,
- DRIVER_DDIVS_USBC = 8,
- DRIVER_SCSA2USB = 9,
- DRIVER_USBPRN = 10,
- DRIVER_UGEN = 11,
- DRIVER_VIDEO = 12,
- DRIVER_HWAHC = 13,
- DRIVER_HWARC = 14,
- DRIVER_WUSB_CA = 15,
- DRIVER_UNKNOWN = 16
+ DRIVER_HUBD,
+ DRIVER_OHCI,
+ DRIVER_EHCI,
+ DRIVER_UHCI,
+ DRIVER_XHCI,
+ DRIVER_USB_AC,
+ DRIVER_USB_AS,
+ DRIVER_HID,
+ DRIVER_USB_MID,
+ DRIVER_DDIVS_USBC,
+ DRIVER_SCSA2USB,
+ DRIVER_USBPRN,
+ DRIVER_UGEN,
+ DRIVER_VIDEO,
+ DRIVER_HWAHC,
+ DRIVER_HWARC,
+ DRIVER_WUSB_CA,
+ DRIVER_UNKNOWN
} driver_defs_t;
typedef struct {
char *driver_name;
- int index;
+ driver_defs_t index;
} driver_name_table_entry_t;
driver_name_table_entry_t driver_name_table[] = {
@@ -218,6 +221,7 @@ driver_name_table_entry_t driver_name_table[] = {
{ "ohci", DRIVER_OHCI },
{ "ehci", DRIVER_EHCI },
{ "uhci", DRIVER_UHCI },
+ { "xhci", DRIVER_XHCI },
{ "usb_ac", DRIVER_USB_AC },
{ "usb_as", DRIVER_USB_AS },
{ "hid", DRIVER_HID },
@@ -244,7 +248,8 @@ usb_process(di_minor_t minor, di_node_t node)
devfsadm_enumerate_t rules[1];
char *l_path, *p_path, *buf, *devfspath;
char *minor_nm, *drvr_nm, *name = (char *)NULL;
- int i, index;
+ int i;
+ driver_defs_t index;
int flags = 0;
int create_secondary_link = 0;
@@ -307,6 +312,7 @@ usb_process(di_minor_t minor, di_node_t node)
case DRIVER_OHCI:
case DRIVER_EHCI:
case DRIVER_UHCI:
+ case DRIVER_XHCI:
rules[0] = hub_rules[0]; /* For HUBs */
name = "hub";