Print this page
NEX-17521 Unable to install Nexentastor on Lenovo SR650 platform
8702 PCI addresses with physaddr > 0xffffffff can't be mapped in
8703 pci/npe DDI_CTLOPS_REGSIZE should be 64-bit aware
8704 want OFF_MAX in the kernel
8705 unsupported 64-bit prefetch memory on pci-pci bridge
Contributed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Albert Lee <trisk@forkgnu.org>
9550 Create hub symlinks for xhci devices
Contributed by: Alexander Pyhalov <apyhalov@gmail.com>
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>
@@ -59,10 +59,12 @@
ILEVEL_0, usb_process },
{ "usb", DDI_NT_NEXUS, "ohci", DRV_EXACT|TYPE_EXACT,
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,
ILEVEL_0, usb_process },
{ "usb", DDI_NT_NEXUS, "uhci", DRV_EXACT|TYPE_EXACT,
@@ -187,39 +189,41 @@
devfsadm_print(debug_mid, "usb_link: minor_fini\n");
return (DEVFSADM_SUCCESS);
}
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[] = {
{ "hubd", DRIVER_HUBD },
{ "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 },
{ "usb_mid", DRIVER_USB_MID },
{ "ddivs_usbc", DRIVER_DDIVS_USBC },
@@ -242,11 +246,12 @@
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;
minor_nm = di_minor_name(minor);
drvr_nm = di_driver_name(node);
@@ -305,10 +310,11 @@
switch (index) {
case DRIVER_HUBD:
case DRIVER_OHCI:
case DRIVER_EHCI:
case DRIVER_UHCI:
+ case DRIVER_XHCI:
rules[0] = hub_rules[0]; /* For HUBs */
name = "hub";
break;
case DRIVER_USB_AC: