Exemplo n.º 1
0
static int
cbb_pci_probe(device_t brdev)
{
	const char *name;
	uint32_t progif;
	uint32_t baseclass;
	uint32_t subclass;

	/*
	 * Do we know that we support the chipset?  If so, then we
	 * accept the device.
	 */
	if (cbb_chipset(pci_get_devid(brdev), &name) != CB_UNKNOWN) {
		device_set_desc(brdev, name);
		return (BUS_PROBE_DEFAULT);
	}

	/*
	 * We do support generic CardBus bridges.  All that we've seen
	 * to date have progif 0 (the Yenta spec, and successors mandate
	 * this).
	 */
	baseclass = pci_get_class(brdev);
	subclass = pci_get_subclass(brdev);
	progif = pci_get_progif(brdev);
	if (baseclass == PCIC_BRIDGE &&
	    subclass == PCIS_BRIDGE_CARDBUS && progif == 0) {
		device_set_desc(brdev, "PCI-CardBus Bridge");
		return (BUS_PROBE_GENERIC);
	}
	return (ENXIO);
}
Exemplo n.º 2
0
static int
nvme_probe (device_t device)
{
	struct _pcsid	*ep;
	u_int32_t	type;

	type = pci_get_devid(device);
	ep = pci_ids;

	while (ep->type && ep->type != type)
		++ep;

	if (ep->desc) {
		device_set_desc(device, ep->desc);
		return (BUS_PROBE_DEFAULT);
	}

#if defined(PCIS_STORAGE_NVM)
	if (pci_get_class(device)    == PCIC_STORAGE &&
	    pci_get_subclass(device) == PCIS_STORAGE_NVM &&
	    pci_get_progif(device)   == PCIP_STORAGE_NVM_ENTERPRISE_NVMHCI_1_0) {
		device_set_desc(device, "Generic NVMe Device");
		return (BUS_PROBE_GENERIC);
	}
#endif

	return (ENXIO);
}
Exemplo n.º 3
0
static int
nvme_probe (device_t device)
{
	struct _pcsid	*ep;
	uint32_t	devid;
	uint16_t	subdevice;

	devid = pci_get_devid(device);
	subdevice = pci_get_subdevice(device);
	ep = pci_ids;

	while (ep->devid) {
		if (nvme_match(devid, subdevice, ep))
			break;
		++ep;
	}

	if (ep->desc) {
		device_set_desc(device, ep->desc);
		return (BUS_PROBE_DEFAULT);
	}

#if defined(PCIS_STORAGE_NVM)
	if (pci_get_class(device)    == PCIC_STORAGE &&
	    pci_get_subclass(device) == PCIS_STORAGE_NVM &&
	    pci_get_progif(device)   == PCIP_STORAGE_NVM_ENTERPRISE_NVMHCI_1_0) {
		device_set_desc(device, "Generic NVMe Device");
		return (BUS_PROBE_GENERIC);
	}
#endif

	return (ENXIO);
}
Exemplo n.º 4
0
static const char *
ohci_pci_match(device_t self)
{
	u_int32_t device_id = pci_get_devid(self);

	switch(device_id) {
	case PCI_OHCI_DEVICEID_ALADDIN_V:
		return (ohci_device_aladdin_v);
	case PCI_OHCI_DEVICEID_AMD756:
		return (ohci_device_amd756);
	case PCI_OHCI_DEVICEID_USB0670:
		return (ohci_device_usb0670);
	case PCI_OHCI_DEVICEID_USB0673:
		return (ohci_device_usb0673);
	case PCI_OHCI_DEVICEID_FIRELINK:
		return (ohci_device_firelink);
	case PCI_OHCI_DEVICEID_NEC:
		return (ohci_device_nec);
	default:
		if (   pci_get_class(self)    == PCIC_SERIALBUS
		    && pci_get_subclass(self) == PCIS_SERIALBUS_USB
		    && pci_get_progif(self)   == PCI_INTERFACE_OHCI) {
			return (ohci_device_generic);
		}
	}

	return NULL;	/* dunno */
}
Exemplo n.º 5
0
static const char *
xhci_pci_match(device_t self)
{
	uint32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case 0x01941033:
		return ("NEC uPD720200 USB 3.0 controller");

	case 0x10421b21:
		return ("ASMedia ASM1042 USB 3.0 controller");

	case 0x0f358086:
		return ("Intel Intel BayTrail USB 3.0 controller");
	case 0x9c318086:
	case 0x1e318086:
		return ("Intel Panther Point USB 3.0 controller");
	case 0x8c318086:
		return ("Intel Lynx Point USB 3.0 controller");
	case 0x8cb18086:
		return ("Intel Wildcat Point USB 3.0 controller");
	case 0x9cb18086:
		return ("Intel Wildcat Point-LB USB 3.0 controller");
	default:
		break;
	}

	if ((pci_get_class(self) == PCIC_SERIALBUS)
	    && (pci_get_subclass(self) == PCIS_SERIALBUS_USB)
	    && (pci_get_progif(self) == PCIP_SERIALBUS_USB_XHCI)) {
		return ("XHCI (generic) USB 3.0 controller");
	}
	return (NULL);			/* dunno */
}
Exemplo n.º 6
0
static const char *
ehci_pci_match(device_t self)
{
	u_int32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case PCI_EHCI_DEVICEID_M5239:
		return (ehci_device_m5239);
	case PCI_EHCI_DEVICEID_8111:
		return (ehci_device_8111);
	case PCI_EHCI_DEVICEID_CS5536:
		return (ehci_device_cs5536);
	case PCI_EHCI_DEVICEID_SB200:
		return (ehci_device_sb200);
	case PCI_EHCI_DEVICEID_SB400:
		return (ehci_device_sb400);
	case PCI_EHCI_DEVICEID_6300:
		return (ehci_device_6300);
	case PCI_EHCI_DEVICEID_63XX:
		return (ehci_device_63XX);
	case PCI_EHCI_DEVICEID_ICH4:
		return (ehci_device_ich4);
	case PCI_EHCI_DEVICEID_ICH5:
		return (ehci_device_ich5);
	case PCI_EHCI_DEVICEID_ICH6:
		return (ehci_device_ich6);
	case PCI_EHCI_DEVICEID_ICH7:
		return (ehci_device_ich7);
	case PCI_EHCI_DEVICEID_ICH8_A:
		return (ehci_device_ich8_a);
	case PCI_EHCI_DEVICEID_ICH8_B:
		return (ehci_device_ich8_b);
	case PCI_EHCI_DEVICEID_NEC:
		return (ehci_device_nec);
	case PCI_EHCI_DEVICEID_NF2:
		return (ehci_device_nf2);
	case PCI_EHCI_DEVICEID_NF2_400:
		return (ehci_device_nf2_400);
	case PCI_EHCI_DEVICEID_NF3:
		return (ehci_device_nf3);
	case PCI_EHCI_DEVICEID_NF3_250:
		return (ehci_device_nf3_250);
	case PCI_EHCI_DEVICEID_NF4:
		return (ehci_device_nf4);
	case PCI_EHCI_DEVICEID_ISP156X:
		return (ehci_device_isp156x);
	case PCI_EHCI_DEVICEID_VIA:
		return (ehci_device_via);
	default:
		if (pci_get_class(self) == PCIC_SERIALBUS
		    && pci_get_subclass(self) == PCIS_SERIALBUS_USB
		    && pci_get_progif(self) == PCI_INTERFACE_EHCI) {
			return (ehci_device_generic);
		}
	}

	return NULL;		/* dunno */
}
Exemplo n.º 7
0
static const char *
ohci_pci_match(device_t self)
{
	uint32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case 0x523710b9:
		return ("AcerLabs M5237 (Aladdin-V) USB controller");

	case 0x740c1022:
		return ("AMD-756 USB Controller");

	case 0x74141022:
		return ("AMD-766 USB Controller");

	case 0x43741002:
		return "ATI SB400 USB Controller";
	case 0x43751002:
		return "ATI SB400 USB Controller";

	case 0x06701095:
		return ("CMD Tech 670 (USB0670) USB controller");

	case 0x06731095:
		return ("CMD Tech 673 (USB0673) USB controller");

	case 0xc8611045:
		return ("OPTi 82C861 (FireLink) USB controller");

	case 0x00351033:
		return ("NEC uPD 9210 USB controller");

	case 0x00d710de:
		return ("nVidia nForce3 USB Controller");

	case 0x03f110de:
		return ("nVidia nForce MCP61 USB Controller");

	case 0x70011039:
		return ("SiS 5571 USB controller");

	case 0x1103108e:
		return "Sun PCIO-2 USB controller";

	case 0x0019106b:
		return ("Apple KeyLargo USB controller");

	default:
		break;
	}
	if ((pci_get_class(self) == PCIC_SERIALBUS) &&
	    (pci_get_subclass(self) == PCIS_SERIALBUS_USB) &&
	    (pci_get_progif(self) == PCI_INTERFACE_OHCI)) {
		return ("OHCI (generic) USB controller");
	}
	return (NULL);
}
Exemplo n.º 8
0
static const char *
xhci_pci_match(device_t self)
{
    if ((pci_get_class(self) == PCIC_SERIALBUS)
            && (pci_get_subclass(self) == PCIS_SERIALBUS_USB)
            && (pci_get_progif(self) == PCIP_SERIALBUS_USB_XHCI)) {
        return ("XHCI (generic) USB 3.0 controller");
    }
    return (NULL);			/* dunno */
}
Exemplo n.º 9
0
static const char *
uhci_pci_match(device_t self)
{
	u_int32_t device_id = pci_get_devid(self);

	if (device_id == PCI_UHCI_DEVICEID_PIIX3) {
		return (uhci_device_piix3);
	} else if (device_id == PCI_UHCI_DEVICEID_PIIX4) {
		return (uhci_device_piix4);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH) {
		return (uhci_device_ich);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH0) {
		return (uhci_device_ich0);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH2_A) {
		return (uhci_device_ich2_a);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH2_B) {
		return (uhci_device_ich2_b);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH3_A) {
		return (uhci_device_ich3_a);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH3_B) {
		return (uhci_device_ich3_b);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH3_C) {
		return (uhci_device_ich3_c);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH4_A) {
		return (uhci_device_ich4_a);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH4_B) {
		return (uhci_device_ich4_b);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH4_C) {
		return (uhci_device_ich4_c);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH5_A) {
		return (uhci_device_ich5_a);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH5_B) {
		return (uhci_device_ich5_b);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH5_C) {
		return (uhci_device_ich5_c);
	} else if (device_id == PCI_UHCI_DEVICEID_ICH5_D) {
		return (uhci_device_ich5_d);
	} else if (device_id == PCI_UHCI_DEVICEID_440MX) {
		return (uhci_device_440mx);
	} else if (device_id == PCI_UHCI_DEVICEID_460GX) {
		return (uhci_device_460gx);
	} else if (device_id == PCI_UHCI_DEVICEID_VT83C572) {
		return (uhci_device_vt83c572);
	} else {
		if (pci_get_class(self) == PCIC_SERIALBUS
		    && pci_get_subclass(self) == PCIS_SERIALBUS_USB
		    && pci_get_progif(self) == PCI_INTERFACE_UHCI) {
			return (uhci_device_generic);
		}
	}

	return NULL;		/* dunno... */
}
Exemplo n.º 10
0
static int
ahci_acpi_probe(device_t dev)
{
	ACPI_HANDLE h;

	if ((h = acpi_get_handle(dev)) == NULL)
		return (ENXIO);

	if (pci_get_class(dev) == PCIC_STORAGE &&
	    pci_get_subclass(dev) == PCIS_STORAGE_SATA &&
	    pci_get_progif(dev) == PCIP_STORAGE_SATA_AHCI_1_0) {
		device_set_desc_copy(dev, "AHCI SATA controller");
		return (BUS_PROBE_DEFAULT);
	}

	return (ENXIO);
}
Exemplo n.º 11
0
static const char *
ohci_pci_match(device_t self)
{
	u_int32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case PCI_OHCI_DEVICEID_ALADDIN_V:
		return (ohci_device_aladdin_v);
	case PCI_OHCI_DEVICEID_AMD756:
		return (ohci_device_amd756);
	case PCI_OHCI_DEVICEID_AMD766:
		return (ohci_device_amd766);
	case PCI_OHCI_DEVICEID_CS5536:
		return (ohci_device_cs5536);
	case PCI_OHCI_DEVICEID_SB400_1:
	case PCI_OHCI_DEVICEID_SB400_2:
		return (ohci_device_sb400);
	case PCI_OHCI_DEVICEID_USB0670:
		return (ohci_device_usb0670);
	case PCI_OHCI_DEVICEID_USB0673:
		return (ohci_device_usb0673);
	case PCI_OHCI_DEVICEID_FIRELINK:
		return (ohci_device_firelink);
	case PCI_OHCI_DEVICEID_NEC:
		return (ohci_device_nec);
	case PCI_OHCI_DEVICEID_NFORCE3:
		return (ohci_device_nforce3);
	case PCI_OHCI_DEVICEID_SIS5571:
		return (ohci_device_sis5571);
	case PCI_OHCI_DEVICEID_KEYLARGO:
		return (ohci_device_keylargo);
	case PCI_OHCI_DEVICEID_PCIO2USB:
		return (ohci_device_pcio2usb);
	default:
		if (pci_get_class(self) == PCIC_SERIALBUS
		    && pci_get_subclass(self) == PCIS_SERIALBUS_USB
		    && pci_get_progif(self) == PCI_INTERFACE_OHCI) {
			return (ohci_device_generic);
		}
	}

	return NULL;		/* dunno */
}
Exemplo n.º 12
0
static int
ichsmb_pci_probe(device_t dev)
{
	/* Check PCI identifier */
	switch (pci_get_devid(dev)) {
	case ID_82801AA:
		device_set_desc(dev, "Intel 82801AA (ICH) SMBus controller");
		break;
	case ID_82801AB:
		device_set_desc(dev, "Intel 82801AB (ICH0) SMBus controller");
		break;
	case ID_82801BA:
		device_set_desc(dev, "Intel 82801BA (ICH2) SMBus controller");
		break;
	case ID_82801CA:
		device_set_desc(dev, "Intel 82801CA (ICH3) SMBus controller");
		break;
	case ID_82801DC:
		device_set_desc(dev, "Intel 82801DC (ICH4) SMBus controller");
		break;
	case ID_82801EB:
		device_set_desc(dev, "Intel 82801EB (ICH5) SMBus controller");
		break;
	default:
		if (pci_get_class(dev) == PCIC_SERIALBUS
		    && pci_get_subclass(dev) == PCIS_SERIALBUS_SMBUS
		    && pci_get_progif(dev) == PCIS_SERIALBUS_SMBUS_PROGIF) {
			device_set_desc(dev, "SMBus controller");
			return (-2);		/* XXX */
		}
		return (ENXIO);
	}

	/* Done */
	return (ichsmb_probe(dev));
}
Exemplo n.º 13
0
static const char *
xhci_pci_match(device_t self)
{
	uint32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case 0x70231b6f:
		return ("Etron EJ168 USB 3.0 Host Controller");
	case 0x01941033:
		return ("NEC uPD720200 USB 3.0 controller");
	case 0x1e318086:
		return ("Intel Panther Point USB 3.0 controller");
	case 0x8c318086:
		return ("Intel Lynx Point USB 3.0 controller");
	default:
		break;
	}
	if ((pci_get_class(self) == PCIC_SERIALBUS)
	    && (pci_get_subclass(self) == PCIS_SERIALBUS_USB)
	    && (pci_get_progif(self) == PCIP_SERIALBUS_USB_XHCI)) {
		return ("XHCI (generic) USB 3.0 controller");
	}
	return (NULL);			/* dunno */
}
Exemplo n.º 14
0
static const char *
ehci_pci_match(device_t self)
{
	uint32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case 0x523910b9:
		return "ALi M5239 USB 2.0 controller";

	case 0x10227463:
		return "AMD 8111 USB 2.0 controller";

	case 0x20951022:
		return ("AMD CS5536 (Geode) USB 2.0 controller");

	case 0x43451002:
		return "ATI SB200 USB 2.0 controller";
	case 0x43731002:
		return "ATI SB400 USB 2.0 controller";
	case 0x43961002:
		return ("AMD SB7x0/SB8x0/SB9x0 USB 2.0 controller");

	case 0x1e268086:
		return ("Intel Panther Point USB 2.0 controller");
	case 0x1e2d8086:
		return ("Intel Panther Point USB 2.0 controller");
	case 0x1f2c8086:
		return ("Intel Avoton USB 2.0 controller");
	case 0x25ad8086:
		return "Intel 6300ESB USB 2.0 controller";
	case 0x24cd8086:
		return "Intel 82801DB/L/M (ICH4) USB 2.0 controller";
	case 0x24dd8086:
		return "Intel 82801EB/R (ICH5) USB 2.0 controller";
	case 0x265c8086:
		return "Intel 82801FB (ICH6) USB 2.0 controller";
	case 0x268c8086:
		return ("Intel 63XXESB USB 2.0 controller");
	case 0x27cc8086:
		return "Intel 82801GB/R (ICH7) USB 2.0 controller";
	case 0x28368086:
		return "Intel 82801H (ICH8) USB 2.0 controller USB2-A";
	case 0x283a8086:
		return "Intel 82801H (ICH8) USB 2.0 controller USB2-B";
	case 0x293a8086:
		return "Intel 82801I (ICH9) USB 2.0 controller";
	case 0x293c8086:
		return "Intel 82801I (ICH9) USB 2.0 controller";
	case 0x3a3a8086:
		return "Intel 82801JI (ICH10) USB 2.0 controller USB-A";
	case 0x3a3c8086:
		return "Intel 82801JI (ICH10) USB 2.0 controller USB-B";
	case 0x3b348086:
		return ("Intel PCH USB 2.0 controller USB-A");
	case 0x3b3c8086:
		return ("Intel PCH USB 2.0 controller USB-B");
	case 0x8c268086:
		return ("Intel Lynx Point USB 2.0 controller USB-A");
	case 0x8c2d8086:
		return ("Intel Lynx Point USB 2.0 controller USB-B");

	case 0x00e01033:
		return ("NEC uPD 720100 USB 2.0 controller");

	case 0x006810de:
		return "NVIDIA nForce2 USB 2.0 controller";
	case 0x008810de:
		return "NVIDIA nForce2 Ultra 400 USB 2.0 controller";
	case 0x00d810de:
		return "NVIDIA nForce3 USB 2.0 controller";
	case 0x00e810de:
		return "NVIDIA nForce3 250 USB 2.0 controller";
	case 0x005b10de:
		return "NVIDIA nForce CK804 USB 2.0 controller";
	case 0x036d10de:
		return "NVIDIA nForce MCP55 USB 2.0 controller";
	case 0x03f210de:
		return "NVIDIA nForce MCP61 USB 2.0 controller";
	case 0x0aa610de:
		return "NVIDIA nForce MCP79 USB 2.0 controller";
	case 0x0aa910de:
		return "NVIDIA nForce MCP79 USB 2.0 controller";
	case 0x0aaa10de:
		return "NVIDIA nForce MCP79 USB 2.0 controller";

	case 0x15621131:
		return "Philips ISP156x USB 2.0 controller";

	case 0x31041106:
		return ("VIA VT6202 USB 2.0 controller");

	default:
		break;
	}

	if ((pci_get_class(self) == PCIC_SERIALBUS)
	    && (pci_get_subclass(self) == PCIS_SERIALBUS_USB)
	    && (pci_get_progif(self) == PCI_INTERFACE_EHCI)) {
		return ("EHCI (generic) USB 2.0 controller");
	}
	return (NULL);			/* dunno */
}
Exemplo n.º 15
0
static int
ipmi2_pci_attach(device_t dev)
{
	struct ipmi_softc *sc;
	int error, iface, type;

	sc = device_get_softc(dev);
	sc->ipmi_dev = dev;

	/* Interface is determined by progif. */
	switch (pci_get_progif(dev)) {
	case PCIP_SERIALBUS_IPMI_SMIC:
		iface = SMIC_MODE;
		break;
	case PCIP_SERIALBUS_IPMI_KCS:
		iface = KCS_MODE;
		break;
	case PCIP_SERIALBUS_IPMI_BT:
		iface = BT_MODE;
		device_printf(dev, "BT interface unsupported\n");
		return (ENXIO);
	default:
		device_printf(dev, "Unsupported interface: %d\n",
		    pci_get_progif(dev));
		return (ENXIO);
	}

	/* Check the BAR to determine our resource type. */
	sc->ipmi_io_rid = PCIR_BAR(0);
	if (PCI_BAR_IO(pci_read_config(dev, PCIR_BAR(0), 4)))
		type = SYS_RES_IOPORT;
	else
		type = SYS_RES_MEMORY;
	sc->ipmi_io_type = type;
	sc->ipmi_io_spacing = 1;
	sc->ipmi_io_res[0] = bus_alloc_resource_any(dev, type,
	    &sc->ipmi_io_rid, RF_ACTIVE);
	if (sc->ipmi_io_res[0] == NULL) {
		device_printf(dev, "couldn't map ports/memory\n");
		return (ENXIO);
	}

	sc->ipmi_irq_rid = 0;
	sc->ipmi_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ,
	    &sc->ipmi_irq_rid, RF_SHAREABLE | RF_ACTIVE);

	switch (iface) {
	case KCS_MODE:
		device_printf(dev, "using KSC interface\n");

		/*
		 * We have to examine the resource directly to determine the
		 * alignment.
		 */
		if (!ipmi_kcs_probe_align(sc)) {
			device_printf(dev, "Unable to determine alignment\n");
			error = ENXIO;
			goto bad;
		}

		error = ipmi_kcs_attach(sc);
		if (error)
			goto bad;
		break;
	case SMIC_MODE:
		device_printf(dev, "using SMIC interface\n");

		error = ipmi_smic_attach(sc);
		if (error)
			goto bad;
		break;
	}
	error = ipmi_attach(dev);
	if (error)
		goto bad;

	return (0);
bad:
	ipmi_release_resources(dev);
	return (error);
}
Exemplo n.º 16
0
/*
 * The probe routine.
 */
static int
fwohci_pci_probe( device_t dev )
{
#if 1
	uint32_t id;

	id = pci_get_devid(dev);
	if (id == (FW_VENDORID_NATSEMI | FW_DEVICE_CS4210)) {
		device_set_desc(dev, "National Semiconductor CS4210");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_NEC | FW_DEVICE_UPD861)) {
		device_set_desc(dev, "NEC uPD72861");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_NEC | FW_DEVICE_UPD871)) {
		device_set_desc(dev, "NEC uPD72871/2");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_NEC | FW_DEVICE_UPD72870)) {
		device_set_desc(dev, "NEC uPD72870");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_NEC | FW_DEVICE_UPD72873)) {
		device_set_desc(dev, "NEC uPD72873");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_NEC | FW_DEVICE_UPD72874)) {
		device_set_desc(dev, "NEC uPD72874");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_SIS | FW_DEVICE_7007)) {
		/* It has no real identifier, using device id. */
		device_set_desc(dev, "SiS 7007");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB22)) {
		device_set_desc(dev, "Texas Instruments TSB12LV22");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB23)) {
		device_set_desc(dev, "Texas Instruments TSB12LV23");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB26)) {
		device_set_desc(dev, "Texas Instruments TSB12LV26");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB43)) {
		device_set_desc(dev, "Texas Instruments TSB43AA22");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB43A)) {
		device_set_desc(dev, "Texas Instruments TSB43AB22/A");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB43AB21)) {
		device_set_desc(dev, "Texas Instruments TSB43AB21/A/AI/A-EP");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB43AB23)) {
		device_set_desc(dev, "Texas Instruments TSB43AB23");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TITSB82AA2)) {
		device_set_desc(dev, "Texas Instruments TSB82AA2");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TIPCI4450)) {
		device_set_desc(dev, "Texas Instruments PCI4450");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TIPCI4410A)) {
		device_set_desc(dev, "Texas Instruments PCI4410A");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_TI | FW_DEVICE_TIPCI4451)) {
		device_set_desc(dev, "Texas Instruments PCI4451");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_SONY | FW_DEVICE_CXD1947)) {
		device_printf(dev, "Sony i.LINK (CXD1947) not supported\n");
		return ENXIO;
	}
	if (id == (FW_VENDORID_SONY | FW_DEVICE_CXD3222)) {
		device_set_desc(dev, "Sony i.LINK (CXD3222)");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_VIA | FW_DEVICE_VT6306)) {
		device_set_desc(dev, "VIA Fire II (VT6306)");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_RICOH | FW_DEVICE_R5C551)) {
		device_set_desc(dev, "Ricoh R5C551");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_RICOH | FW_DEVICE_R5C552)) {
		device_set_desc(dev, "Ricoh R5C552");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_APPLE | FW_DEVICE_PANGEA)) {
		device_set_desc(dev, "Apple Pangea");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_APPLE | FW_DEVICE_UNINORTH)) {
		device_set_desc(dev, "Apple UniNorth");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_LUCENT | FW_DEVICE_FW322)) {
		device_set_desc(dev, "Lucent FW322/323");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_INTEL | FW_DEVICE_82372FB)) {
		device_set_desc(dev, "Intel 82372FB");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_ADAPTEC | FW_DEVICE_AIC5800)) {
		device_set_desc(dev, "Adaptec AHA-894x/AIC-5800");
		return BUS_PROBE_DEFAULT;
	}
	if (id == (FW_VENDORID_SUN | FW_DEVICE_PCIO2FW)) {
		device_set_desc(dev, "Sun PCIO-2");
		return BUS_PROBE_DEFAULT;
	}
#endif
	if (pci_get_class(dev) == PCIC_SERIALBUS
			&& pci_get_subclass(dev) == PCIS_SERIALBUS_FW
			&& pci_get_progif(dev) == PCI_INTERFACE_OHCI) {
		if (bootverbose)
			device_printf(dev, "vendor=%x, dev=%x\n",
			    pci_get_vendor(dev), pci_get_device(dev));
		device_set_desc(dev, "1394 Open Host Controller Interface");
		return BUS_PROBE_DEFAULT;
	}

	return ENXIO;
}
Exemplo n.º 17
0
static const char *
uhci_pci_match(device_t self)
{
	uint32_t device_id = pci_get_devid(self);

	switch (device_id) {
	case 0x26888086:
		return ("Intel 631XESB/632XESB/3100 USB controller USB-1");

	case 0x26898086:
		return ("Intel 631XESB/632XESB/3100 USB controller USB-2");

	case 0x268a8086:
		return ("Intel 631XESB/632XESB/3100 USB controller USB-3");

	case 0x268b8086:
		return ("Intel 631XESB/632XESB/3100 USB controller USB-4");

	case 0x70208086:
		return ("Intel 82371SB (PIIX3) USB controller");

	case 0x71128086:
		return ("Intel 82371AB/EB (PIIX4) USB controller");

	case 0x24128086:
		return ("Intel 82801AA (ICH) USB controller");

	case 0x24228086:
		return ("Intel 82801AB (ICH0) USB controller");

	case 0x24428086:
		return ("Intel 82801BA/BAM (ICH2) USB controller USB-A");

	case 0x24448086:
		return ("Intel 82801BA/BAM (ICH2) USB controller USB-B");

	case 0x24828086:
		return ("Intel 82801CA/CAM (ICH3) USB controller USB-A");

	case 0x24848086:
		return ("Intel 82801CA/CAM (ICH3) USB controller USB-B");

	case 0x24878086:
		return ("Intel 82801CA/CAM (ICH3) USB controller USB-C");

	case 0x24c28086:
		return ("Intel 82801DB (ICH4) USB controller USB-A");

	case 0x24c48086:
		return ("Intel 82801DB (ICH4) USB controller USB-B");

	case 0x24c78086:
		return ("Intel 82801DB (ICH4) USB controller USB-C");

	case 0x24d28086:
		return ("Intel 82801EB (ICH5) USB controller USB-A");

	case 0x24d48086:
		return ("Intel 82801EB (ICH5) USB controller USB-B");

	case 0x24d78086:
		return ("Intel 82801EB (ICH5) USB controller USB-C");

	case 0x24de8086:
		return ("Intel 82801EB (ICH5) USB controller USB-D");

	case 0x26588086:
		return ("Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-A");

	case 0x26598086:
		return ("Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-B");

	case 0x265a8086:
		return ("Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-C");

	case 0x265b8086:
		return ("Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-D");

	case 0x27c88086:
		return ("Intel 82801G (ICH7) USB controller USB-A");
	case 0x27c98086:
		return ("Intel 82801G (ICH7) USB controller USB-B");
	case 0x27ca8086:
		return ("Intel 82801G (ICH7) USB controller USB-C");
	case 0x27cb8086:
		return ("Intel 82801G (ICH7) USB controller USB-D");

	case 0x28308086:
		return ("Intel 82801H (ICH8) USB controller USB-A");
	case 0x28318086:
		return ("Intel 82801H (ICH8) USB controller USB-B");
	case 0x28328086:
		return ("Intel 82801H (ICH8) USB controller USB-C");
	case 0x28348086:
		return ("Intel 82801H (ICH8) USB controller USB-D");
	case 0x28358086:
		return ("Intel 82801H (ICH8) USB controller USB-E");
	case 0x29348086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x29358086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x29368086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x29378086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x29388086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x29398086:
		return ("Intel 82801I (ICH9) USB controller");
	case 0x3a348086:
		return ("Intel 82801JI (ICH10) USB controller USB-A");
	case 0x3a358086:
		return ("Intel 82801JI (ICH10) USB controller USB-B");
	case 0x3a368086:
		return ("Intel 82801JI (ICH10) USB controller USB-C");
	case 0x3a378086:
		return ("Intel 82801JI (ICH10) USB controller USB-D");
	case 0x3a388086:
		return ("Intel 82801JI (ICH10) USB controller USB-E");
	case 0x3a398086:
		return ("Intel 82801JI (ICH10) USB controller USB-F");

	case 0x719a8086:
		return ("Intel 82443MX USB controller");

	case 0x76028086:
		return ("Intel 82372FB/82468GX USB controller");

	case 0x3300103c:
		return ("HP iLO Standard Virtual USB controller");

	case 0x30381106:
		return ("VIA 83C572 USB controller");

	default:
		break;
	}

	if ((pci_get_class(self) == PCIC_SERIALBUS) &&
	    (pci_get_subclass(self) == PCIS_SERIALBUS_USB) &&
	    (pci_get_progif(self) == PCI_INTERFACE_UHCI)) {
		return ("UHCI (generic) USB controller");
	}
	return (NULL);
}