diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/boot/filelist/i386/filelist.ramdisk | 1 | ||||
-rw-r--r-- | usr/src/pkg/manifests/system-boot-real-mode.p5m | 7 | ||||
-rw-r--r-- | usr/src/pkg/manifests/system-kernel.p5m | 3 | ||||
-rw-r--r-- | usr/src/uts/common/io/i8042.c | 5 | ||||
-rw-r--r-- | usr/src/uts/i86pc/io/isa.c | 11 | ||||
-rw-r--r-- | usr/src/uts/intel/Makefile.files | 2 | ||||
-rw-r--r-- | usr/src/uts/intel/config/Makefile | 10 | ||||
-rw-r--r-- | usr/src/uts/intel/io/acpica/acpi_enum.c | 174 | ||||
-rw-r--r-- | usr/src/uts/intel/io/acpica/isapnp_devs.c | 111 | ||||
-rw-r--r-- | usr/src/uts/intel/io/acpica/master_ops.c | 433 | ||||
-rw-r--r-- | usr/src/uts/intel/io/pci/pci_boot.c | 44 | ||||
-rw-r--r-- | usr/src/uts/intel/os/master | 428 | ||||
-rw-r--r-- | usr/src/uts/intel/sys/acpica.h | 34 |
13 files changed, 232 insertions, 1031 deletions
diff --git a/usr/src/cmd/boot/filelist/i386/filelist.ramdisk b/usr/src/cmd/boot/filelist/i386/filelist.ramdisk index 53d3936483..14d55d22da 100644 --- a/usr/src/cmd/boot/filelist/i386/filelist.ramdisk +++ b/usr/src/cmd/boot/filelist/i386/filelist.ramdisk @@ -1,6 +1,5 @@ boot/acpi/tables boot/solaris/bootenv.rc -boot/solaris/devicedb/master etc/cluster/nodeid etc/dacf.conf etc/devices/devid_cache diff --git a/usr/src/pkg/manifests/system-boot-real-mode.p5m b/usr/src/pkg/manifests/system-boot-real-mode.p5m index f6258f950f..a98e191b26 100644 --- a/usr/src/pkg/manifests/system-boot-real-mode.p5m +++ b/usr/src/pkg/manifests/system-boot-real-mode.p5m @@ -38,14 +38,7 @@ $(i386_ONLY)dir path=boot/solaris group=sys $(i386_ONLY)hardlink path=boot/solaris.xpm target=splashimage.xpm $(i386_ONLY)file path=boot/solaris/bootenv.rc group=sys \ original_name=SUNWrmodr:boot/solaris/bootenv.rc preserve=renamenew -$(i386_ONLY)dir path=boot/solaris/devicedb group=sys -$(i386_ONLY)file path=boot/solaris/devicedb/master group=sys \ - original_name=SUNWrmod:boot/solaris/devicedb/master preserve=true $(i386_ONLY)file path=boot/splashimage.xpm group=sys -$(i386_ONLY)dir path=usr group=sys -$(i386_ONLY)dir path=usr/lib -$(i386_ONLY)dir path=usr/lib/fs group=sys -$(i386_ONLY)dir path=usr/lib/fs/ufs group=sys $(i386_ONLY)legacy pkg=SUNWrmodr desc="Realmode Modules, (Root)" \ name="Realmode Modules, (Root)" $(i386_ONLY)legacy pkg=SUNWrmodu desc="Realmode Modules, (Usr)" \ diff --git a/usr/src/pkg/manifests/system-kernel.p5m b/usr/src/pkg/manifests/system-kernel.p5m index ad90b0329a..62e8a909c5 100644 --- a/usr/src/pkg/manifests/system-kernel.p5m +++ b/usr/src/pkg/manifests/system-kernel.p5m @@ -659,8 +659,7 @@ driver name=ufm perms="ufm 0666 root sys" $(i386_ONLY)driver name=vgatext \ alias=pciclass,000100 \ alias=pciclass,030000 \ - alias=pciclass,030001 \ - alias=pnpPNP,900 + alias=pciclass,030001 driver name=vnic perms="* 0666 root sys" clone_perms="vnic 0666 root sys" driver name=wc perms="* 0600 root sys" legacy pkg=SUNWckr \ diff --git a/usr/src/uts/common/io/i8042.c b/usr/src/uts/common/io/i8042.c index cebfe4cf6c..a620e1fa42 100644 --- a/usr/src/uts/common/io/i8042.c +++ b/usr/src/uts/common/io/i8042.c @@ -1535,7 +1535,10 @@ alloc_kb_mouse(dev_info_t *i8042_dip, int nodes_needed) int acpi_off = 0; char *acpi_prop; - /* don't alloc unless acpi is off */ + /* + * If ACPI enumeration is not disabled and has taken place, return + * early and do nothing. + */ if (ddi_prop_lookup_string(DDI_DEV_T_ANY, ddi_root_node(), DDI_PROP_DONTPASS, "acpi-enum", &acpi_prop) == DDI_PROP_SUCCESS) { if (strcmp("off", acpi_prop) == 0) { diff --git a/usr/src/uts/i86pc/io/isa.c b/usr/src/uts/i86pc/io/isa.c index 2eea45ebe5..9f382ead98 100644 --- a/usr/src/uts/i86pc/io/isa.c +++ b/usr/src/uts/i86pc/io/isa.c @@ -1206,13 +1206,20 @@ isa_enumerate(int reprogram) ndi_devi_enter(isa_dip, &circ); + /* + * Check whether ACPI enumeration is disabled. + * + * Note this property may also be set if ACPI ISA enumeration has + * failed, to communicate that to the i8042 nexus. + */ if (ddi_prop_lookup_string(DDI_DEV_T_ANY, ddi_root_node(), DDI_PROP_DONTPASS, "acpi-enum", &acpi_prop) == DDI_PROP_SUCCESS) { + /* 0 == match == false */ acpi_enum = strcmp("off", acpi_prop); ddi_prop_free(acpi_prop); } - if (acpi_enum) { + if (acpi_enum != 0) { if (acpi_isa_device_enum(isa_dip)) { ndi_devi_exit(isa_dip, circ); if (isa_resource_setup() != NDI_SUCCESS) { @@ -1246,7 +1253,6 @@ isa_enumerate(int reprogram) (pnode_t)DEVI_SID_NODEID, &xdip); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "compatible", "pnpPNP,500"); - /* This should be gotten from master file: */ (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "model", "Standard PC COM port"); (void) ndi_prop_update_int_array(DDI_DEV_T_NONE, xdip, @@ -1346,7 +1352,6 @@ enumerate_BIOS_serial(dev_info_t *isa_dip) (pnode_t)DEVI_SID_NODEID, &xdip); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "compatible", "pnpPNP,500"); - /* This should be gotten from master file: */ (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "model", "Standard PC COM port"); (void) ndi_prop_update_int_array(DDI_DEV_T_NONE, xdip, diff --git a/usr/src/uts/intel/Makefile.files b/usr/src/uts/intel/Makefile.files index fe380ad770..212bef0e4b 100644 --- a/usr/src/uts/intel/Makefile.files +++ b/usr/src/uts/intel/Makefile.files @@ -227,7 +227,7 @@ ACPICA_OBJS += \ utxferror.o utxfinit.o utxfmutex.o utresdecode.o \ utstrsuppt.o utstrtoul64.o \ \ - acpi_enum.o acpica_ec.o acpica.o ahids.o master_ops.o \ + acpi_enum.o acpica_ec.o acpica.o ahids.o isapnp_devs.o \ osl_ml.o osl.o diff --git a/usr/src/uts/intel/config/Makefile b/usr/src/uts/intel/config/Makefile index b5019e887f..35233a76e2 100644 --- a/usr/src/uts/intel/config/Makefile +++ b/usr/src/uts/intel/config/Makefile @@ -51,13 +51,11 @@ SECCONFIG = device_policy priv_names BOOTIMAGE = splashimage.xpm ALTBOOTIMAGE = solaris.xpm # Temporary, for compatibility BOOTENVRC = bootenv.rc -DEVMASTER = master FILEMODE = 644 ROOTETC = $(ROOT)/etc ROOTETCSEC = $(ROOTETC)/security ROOTBOOT = $(ROOT)/boot BOOTSOLARIS = $(ROOTBOOT)/solaris -BOOTDEVICEDB = $(BOOTSOLARIS)/devicedb SRCFILES = $(CONFIGFILES:%=$(SRCDIR)/%) $(SECCONFIG:%=$(SRCDIR)/%) SRCFILES += $(BOOTIMAGE:%=$(SRCDIR)/%) @@ -66,7 +64,6 @@ SRCFILES += $(DEVMASTER:%=$(SRCDIR)/%) ROOTCONFIGFILES = $(CONFIGFILES:%=$(ROOTETC)/%) $(SECCONFIG:%=$(ROOTETCSEC)/%) ROOTCONFIGFILES += $(BOOTIMAGE:%=$(ROOTBOOT)/%) ROOTCONFIGFILES += $(BOOTENVRC:%=$(BOOTSOLARIS)/%) -ROOTCONFIGFILES += $(DEVMASTER:%=$(BOOTDEVICEDB)/%) ROOTALTBOOTIMAGE = $(ALTBOOTIMAGE:%=$(ROOTBOOT)/%) # @@ -101,19 +98,12 @@ $(ROOTBOOT)/%: $(ROOTBOOT) $(SRCDIR)/% $(ROOTBOOT)/solaris.xpm: $(ROOTBOOT)/splashimage.xpm $(RM) $@; $(LN) $(ROOTBOOT)/splashimage.xpm $@ - $(BOOTSOLARIS): $(INS) -s -d -m $(DIRMODE) $@ $(BOOTSOLARIS)/%: $(BOOTSOLARIS) $(SRCDIR)/% $(INS.file) -$(BOOTDEVICEDB): - $(INS) -s -d -m $(DIRMODE) $@ - -$(BOOTDEVICEDB)/%: $(BOOTDEVICEDB) $(SRCDIR)/% - $(INS.file) - $(SRCDIR)/priv_names: $(PRIVS_DEF) $(PRIVS_AWK) $(AWK) -f $(PRIVS_AWK) < $(PRIVS_DEF) -v pnamesfile=$@ diff --git a/usr/src/uts/intel/io/acpica/acpi_enum.c b/usr/src/uts/intel/io/acpica/acpi_enum.c index 2ac211f0d7..8643431801 100644 --- a/usr/src/uts/intel/io/acpica/acpi_enum.c +++ b/usr/src/uts/intel/io/acpica/acpi_enum.c @@ -19,12 +19,11 @@ * CDDL HEADER END */ /* - * Copyright 2018, Joyent, Inc. - * Copyright (c) 2012 Gary Mills - * * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * + * Copyright (c) 2012 Gary Mills + * Copyright 2018, Joyent, Inc. * Copyright 2021 Racktop Systems, Inc. */ @@ -53,11 +52,9 @@ typedef struct intrs { uint_t i_alloc; } intrs_t; -static char keyboard_alias[] = "keyboard"; -static char mouse_alias[] = "mouse"; -#define ACPI_ENUM_DEBUG "acpi_enum_debug" +static uint32_t acpi_enum_debug = 0x00; #define PARSE_RESOURCES_DEBUG 0x0001 -#define MASTER_LOOKUP_DEBUG 0x0002 +#define ISAPNP_LOOKUP_DEBUG 0x0002 #define DEVICES_NOT_ENUMED 0x0004 #define PARSE_RES_IRQ 0x0008 #define PARSE_RES_DMA 0x0010 @@ -66,9 +63,7 @@ static char mouse_alias[] = "mouse"; #define PARSE_RES_ADDRESS 0x0080 #define ISA_DEVICE_ENUM 0x1000 #define PROCESS_CIDS 0x2000 -static unsigned long acpi_enum_debug = 0x00; -static char USED_RESOURCES[] = "used-resources"; static dev_info_t *usedrdip = NULL; static intrs_t used_interrupts; static unsigned short used_dmas = 0; @@ -164,7 +159,7 @@ add_used_io_mem(struct regspec *io, int io_count) used_io_mem_t *used; for (i = 0; i < io_count; i++) { - used = (used_io_mem_t *)kmem_zalloc(sizeof (used_io_mem_t), + used = kmem_zalloc(sizeof (used_io_mem_t), KM_SLEEP); used->start_addr = io[i].regspec_addr; used->length = io[i].regspec_size; @@ -559,7 +554,7 @@ parse_resources(ACPI_HANDLE handle, dev_info_t *xdip, char *path) return (status); break; } - io = (struct regspec *)kmem_zalloc(sizeof (struct regspec) * + io = kmem_zalloc(sizeof (struct regspec) * MAX_PARSED_ACPI_RESOURCES, KM_SLEEP); current_ptr = buf.Pointer; last_ptr = (char *)buf.Pointer + buf.Length; @@ -678,7 +673,7 @@ parse_resources(ACPI_HANDLE handle, dev_info_t *xdip, char *path) /* keyboard mouse is under i8042, everything else under isa */ static dev_info_t * -get_bus_dip(char *nodename, dev_info_t *isa_dip) +get_bus_dip(const char *nodename, dev_info_t *isa_dip) { static dev_info_t *i8042_dip = NULL; struct regspec i8042_regs[] = { @@ -687,8 +682,8 @@ get_bus_dip(char *nodename, dev_info_t *isa_dip) }; int i8042_intrs[] = {0x1, 0xc}; - if (strcmp(nodename, keyboard_alias) != 0 && - strcmp(nodename, mouse_alias) != 0) + if (strcmp(nodename, "keyboard") != 0 && + strcmp(nodename, "mouse") != 0) return (isa_dip); if (i8042_dip) @@ -706,27 +701,6 @@ get_bus_dip(char *nodename, dev_info_t *isa_dip) return (i8042_dip); } -/* - * put content of properties (if any) to dev info tree at branch xdip - * return non-zero if a "compatible" property was processed, zero otherwise - * - */ -static int -process_properties(dev_info_t *xdip, property_t *properties) -{ - int rv = 0; - - while (properties != NULL) { - (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - properties->name, properties->value); - if (strcmp(properties->name, "compatible") == 0) - rv = 1; - properties = properties->next; - } - - return (rv); -} - void eisa_to_str(ACPI_INTEGER id, char *np) { @@ -772,13 +746,13 @@ process_cids(ACPI_OBJECT *rv, device_id_t **dd) switch (obj.Type) { case ACPI_TYPE_INTEGER: eisa_to_str(obj.Integer.Value, tmp_cidstr); - d = mf_alloc_device_id(); + d = kmem_zalloc(sizeof (device_id_t), KM_SLEEP); d->id = strdup(tmp_cidstr); d->next = *dd; *dd = d; break; case ACPI_TYPE_STRING: - d = mf_alloc_device_id(); + d = kmem_zalloc(sizeof (device_id_t), KM_SLEEP); d->id = strdup(obj.String.Pointer); d->next = *dd; *dd = d; @@ -834,8 +808,7 @@ create_compatible_property(dev_info_t *dip, device_id_t *ids) d = d->next; } - /* create string array */ - strs = (char **)kmem_zalloc(list_len * sizeof (char *), KM_SLEEP); + strs = kmem_zalloc(list_len * sizeof (char *), KM_SLEEP); i = 0; d = ids; while (d != NULL) { @@ -866,17 +839,16 @@ isa_acpi_callback(ACPI_HANDLE ObjHandle, uint32_t NestingLevel, void *a, { _NOTE(ARGUNUSED(NestingLevel, b)) - ACPI_BUFFER rb; - ACPI_DEVICE_INFO *info = NULL; - char *path = NULL; - char *hidstr = NULL; - char tmp_cidstr[8]; /* EISAID size */ - dev_info_t *dip = (dev_info_t *)a; - dev_info_t *xdip = NULL; - device_id_t *d, *device_ids = NULL; - const master_rec_t *m; - int compatible_present = 0; - int status; + ACPI_BUFFER rb; + ACPI_DEVICE_INFO *info = NULL; + char *path = NULL; + char *hidstr = NULL; + char tmp_cidstr[8]; /* EISAID size */ + dev_info_t *dip = (dev_info_t *)a; + dev_info_t *xdip = NULL; + device_id_t *d, *device_ids = NULL; + const isapnp_desc_t *m; + int status; /* * get full ACPI pathname for object @@ -947,13 +919,13 @@ isa_acpi_callback(ACPI_HANDLE ObjHandle, uint32_t NestingLevel, void *a, switch (rv->Type) { case ACPI_TYPE_INTEGER: eisa_to_str(rv->Integer.Value, tmp_cidstr); - d = mf_alloc_device_id(); + d = kmem_zalloc(sizeof (device_id_t), KM_SLEEP); d->id = strdup(tmp_cidstr); d->next = device_ids; device_ids = d; break; case ACPI_TYPE_STRING: - d = mf_alloc_device_id(); + d = kmem_zalloc(sizeof (device_id_t), KM_SLEEP); d->id = strdup(rv->String.Pointer); d->next = device_ids; device_ids = d; @@ -970,52 +942,33 @@ isa_acpi_callback(ACPI_HANDLE ObjHandle, uint32_t NestingLevel, void *a, /* * Add _HID last so it's at the head of the list */ - d = mf_alloc_device_id(); + d = kmem_zalloc(sizeof (device_id_t), KM_SLEEP); d->id = strdup(hidstr); d->next = device_ids; device_ids = d; /* - * master_file_lookup() expects _HID first in device_ids + * isapnp_desc_lookup() expects _HID first in device_ids */ - if ((m = master_file_lookup(device_ids)) != NULL) { - /* PNP description found in master table */ + if ((m = isapnp_desc_lookup(device_ids)) != NULL) { + /* PNP description found in isapnp table */ if (!(strncmp(hidstr, "ACPI", 4))) { dip = ddi_root_node(); } else { - dip = get_bus_dip(m->name, dip); + dip = get_bus_dip(m->ipnp_name, dip); } - ndi_devi_alloc_sleep(dip, m->name, + ndi_devi_alloc_sleep(dip, m->ipnp_name, (pnode_t)DEVI_SID_NODEID, &xdip); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "model", m->description); - compatible_present = process_properties(xdip, m->properties); - } else { - /* for ISA devices not known to the master file */ - if (!(strncmp(hidstr, "PNP03", 5))) { - /* a keyboard device includes PNP03xx */ - dip = get_bus_dip(keyboard_alias, dip); - ndi_devi_alloc_sleep(dip, keyboard_alias, - (pnode_t)DEVI_SID_NODEID, &xdip); - (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "compatible", "pnpPNP,303"); + "model", (char *)m->ipnp_model); + + if (m->ipnp_compat != NULL) { (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "model", "PNP03xx keyboard"); - } else { - if (!(strncmp(hidstr, "PNP0F", 5))) { - /* a mouse device include PNP0Fxx */ - dip = get_bus_dip(mouse_alias, dip); - ndi_devi_alloc_sleep(dip, mouse_alias, - (pnode_t)DEVI_SID_NODEID, &xdip); - (void) ndi_prop_update_string(DDI_DEV_T_NONE, - xdip, "compatible", "pnpPNP,f03"); - (void) ndi_prop_update_string(DDI_DEV_T_NONE, - xdip, "model", "PNP0Fxx mouse"); - } else { - (void) parse_resources(ObjHandle, xdip, path); - goto done; - } + "compatible", (char *)m->ipnp_compat); } + } else { + (void) parse_resources(ObjHandle, xdip, path); + goto done; } (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "acpi-namespace", @@ -1024,21 +977,14 @@ isa_acpi_callback(ACPI_HANDLE ObjHandle, uint32_t NestingLevel, void *a, (void) parse_resources(ObjHandle, xdip, path); /* Special processing for mouse and keyboard devices per IEEE 1275 */ - /* if master entry doesn't contain "compatible" then we add default */ - if (strcmp(m->name, keyboard_alias) == 0) { + if (strcmp(m->ipnp_name, "keyboard") == 0) { (void) ndi_prop_update_int(DDI_DEV_T_NONE, xdip, "reg", 0); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "device-type", keyboard_alias); - if (!compatible_present) - (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "compatible", "pnpPNP,303"); - } else if (strcmp(m->name, mouse_alias) == 0) { + "device-type", "keyboard"); + } else if (strcmp(m->ipnp_name, "mouse") == 0) { (void) ndi_prop_update_int(DDI_DEV_T_NONE, xdip, "reg", 1); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "device-type", mouse_alias); - if (!compatible_present) - (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "compatible", "pnpPNP,f03"); + "device-type", "mouse"); } /* @@ -1057,7 +1003,10 @@ done: device_id_t *next; next = d->next; - mf_free_device_id(d); + if (d->id != NULL) + strfree(d->id); + + kmem_free(d, sizeof (device_id_t)); d = next; } @@ -1131,7 +1080,7 @@ used_res_io_mem(char *nodename, int *count, used_io_mem_t **head) int i; *count *= 2; - io = (int *)kmem_zalloc(sizeof (int)*(*count), KM_SLEEP); + io = kmem_zalloc(sizeof (int)*(*count), KM_SLEEP); for (i = 0; i < *count; i += 2) { used_io_mem_t *prev; if (used != NULL) { @@ -1144,7 +1093,7 @@ used_res_io_mem(char *nodename, int *count, used_io_mem_t **head) } (void) ndi_prop_update_int_array(DDI_DEV_T_NONE, usedrdip, nodename, (int *)io, *count); - kmem_free(io, sizeof (int)*(*count)); + kmem_free(io, sizeof (int) * (*count)); *head = NULL; } @@ -1159,15 +1108,15 @@ acpi_isa_device_enum(dev_info_t *isa_dip) char *acpi_prop; if (ddi_prop_lookup_string(DDI_DEV_T_ANY, ddi_root_node(), - DDI_PROP_DONTPASS, ACPI_ENUM_DEBUG, &acpi_prop) == + DDI_PROP_DONTPASS, "acpi_enum_debug", &acpi_prop) == DDI_PROP_SUCCESS) { - long data; - if (ddi_strtol(acpi_prop, NULL, 0, &data) == 0) { - acpi_enum_debug = (unsigned long)data; + unsigned long data; + if (ddi_strtoul(acpi_prop, NULL, 0, &data) == 0) { + acpi_enum_debug = (uint32_t)data; e_ddi_prop_remove(DDI_DEV_T_NONE, ddi_root_node(), - ACPI_ENUM_DEBUG); + "acpi_enum_debug"); e_ddi_prop_update_int(DDI_DEV_T_NONE, - ddi_root_node(), ACPI_ENUM_DEBUG, data); + ddi_root_node(), "acpi_enum_debug", data); } ddi_prop_free(acpi_prop); } @@ -1177,22 +1126,26 @@ acpi_isa_device_enum(dev_info_t *isa_dip) } if (acpica_init() != AE_OK) { - cmn_err(CE_WARN, "!isa_enum: init failed"); - /* Note, pickup by i8042 nexus */ + cmn_err(CE_WARN, "!acpi_isa_device_enum: init failed"); + /* + * Note: `acpi-enum` is a private boolean property that is + * respected both as a user-set property (by the isa nexus + * which calls us), and set by us on failure (here) to + * communicate to the i8042 nexus that ACPI enumeration has + * not taken place and that it must enumerate. + */ (void) e_ddi_prop_update_string(DDI_DEV_T_NONE, ddi_root_node(), "acpi-enum", "off"); return (0); } - usedrdip = ddi_find_devinfo(USED_RESOURCES, -1, 0); + usedrdip = ddi_find_devinfo("used-resources", -1, 0); if (usedrdip == NULL) { - ndi_devi_alloc_sleep(ddi_root_node(), USED_RESOURCES, + ndi_devi_alloc_sleep(ddi_root_node(), "used-resources", (pnode_t)DEVI_SID_NODEID, &usedrdip); } - process_master_file(); - /* * Do the actual enumeration. Avoid AcpiGetDevices because it * has an unnecessary internal callback that duplicates @@ -1201,7 +1154,6 @@ acpi_isa_device_enum(dev_info_t *isa_dip) (void) AcpiWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, UINT32_MAX, isa_acpi_callback, NULL, isa_dip, NULL); - free_master_data(); used_res_interrupts(); used_res_dmas(); used_res_io_mem("device-memory", &used_mem_count, &used_mem_head); diff --git a/usr/src/uts/intel/io/acpica/isapnp_devs.c b/usr/src/uts/intel/io/acpica/isapnp_devs.c new file mode 100644 index 0000000000..61b624e521 --- /dev/null +++ b/usr/src/uts/intel/io/acpica/isapnp_devs.c @@ -0,0 +1,111 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include <sys/acpica.h> +#include <sys/kmem.h> +#include <sys/types.h> + +/* + * For historical reasons certain ISA or onboard devices have their name in + * the device tree altered and other changes made. + * + * If a device ID matches here, we will create the devi node name, model, and + * (if set) compatible property. The compatible property should already be in + * 1275 form, and _overwrites_ any identifier from enumeration. + * + * In most cases, ISA-like devices not present in this table _will not be + * enumerated_. Serial ports are a special case handled because of bugs in + * old ACPI tables, see enumerate_BIOS_serial() in the isa(4D) nexus. + */ +static const isapnp_desc_t isapnp_descs[] = { + /* + * This wildcard entry catches anything in the PNP keyboard class, and + * sets it compatible with the IBM Enhanced 101/102-key, to which + * kb8042 actually binds + */ + { "PNP03", B_TRUE, "keyboard", "pnpPNP,303", "System keyboard" }, + + /* ecpp(4D) binds to "lp" */ + { "PNP0400", B_FALSE, "lp", NULL, "Standard LPT printer port" }, + { "PNP0401", B_FALSE, "lp", NULL, "ECP printer port" }, + { "ISY0060", B_FALSE, "lp", NULL, "Parallel port" }, + + /* asy(4D) binds to "asy" */ + { "PNP0500", B_FALSE, "asy", NULL, "Standard PC COM port" }, + { "PNP0501", B_FALSE, "asy", NULL, "16550A-compatible COM port" }, + { "ISY0020", B_FALSE, "asy", NULL, "Serial port" }, + + /* fdc(4D) binds to "fdc" */ + { "PNP0700", B_FALSE, "fdc", NULL, + "PC standard floppy disk controller" }, + { "PNP0701", B_FALSE, "fdc", NULL, + "Standard floppy controller supporting MS Device Bay Spec" }, + { "ISY0050", B_FALSE, "fdc", NULL, + "Floppy disk controller" }, + + /* tpm(4D) binds to "tpm" */ + { "PNP0C31", B_FALSE, "tpm", NULL, "Generic Trusted Platform Module" }, + { "ATM1200", B_FALSE, "tpm", NULL, "Generic Trusted Platform Module" }, + { "IFX0102", B_FALSE, "tpm", NULL, "Generic Trusted Platform Module" }, + { "BCM0101", B_FALSE, "tpm", NULL, "Generic Trusted Platform Module" }, + { "NSC1200", B_FALSE, "tpm", NULL, "Generic Trusted Platform Module" }, + + /* + * This wildcard entry catches anything in the PNP mouse class, and + * sets it compatible with the Microsoft PS/2-style, to which + * mouse8042 actually binds. + */ + { "PNP0F", B_TRUE, "mouse", "pnpPNP,f03", "System mouse" }, + + { "ISY0030", B_FALSE, "mouse", "pnpPNP,f03", "System mouse" }, + { "SYN010B", B_FALSE, "mouse", "pnpPNP,f03", "Synaptics mouse pad" }, + + { NULL, B_FALSE, NULL, NULL, NULL }, +}; + +/* + * Return the first record found matching the pnpid list + */ +const isapnp_desc_t * +isapnp_desc_lookup(const device_id_t *pnpid) +{ + const device_id_t *d; + const isapnp_desc_t *m; + + while (pnpid != NULL) { + for (m = isapnp_descs; m->ipnp_id != NULL; m++) { + if (m->ipnp_prefix) { + if (strncmp(pnpid->id, m->ipnp_id, + strlen(m->ipnp_id)) == 0) { + return (m); + } + } else if (strcmp(pnpid->id, m->ipnp_id) == 0) { + return (m); + } + } + pnpid = pnpid->next; + } + + return (NULL); +} diff --git a/usr/src/uts/intel/io/acpica/master_ops.c b/usr/src/uts/intel/io/acpica/master_ops.c deleted file mode 100644 index 676950c5db..0000000000 --- a/usr/src/uts/intel/io/acpica/master_ops.c +++ /dev/null @@ -1,433 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include <sys/kobj.h> -#include <sys/kobj_lex.h> -#include <sys/ddi.h> -#include <sys/sunddi.h> -#include <sys/sunndi.h> -#include <sys/acpi/acpi.h> -#include <sys/acpica.h> - -#define masterfile "/boot/solaris/devicedb/master" - -/* - * Internal definitions - */ - -typedef enum { - MF_UNEXPECTED = -1, - MF_IDENT, - MF_STRING, - MF_EOF, - MF_NEWLINE, - MF_EQUALS, - MF_BIT_OR -} mftoken_t; - -typedef enum { - MF_INIT, - MF_DEVID, - MF_NAME, - MF_DEVTYPE, - MF_BUSTYPE, - MF_BEFNAME, - MF_DESCRIPTION, - MF_PROPNAME, - MF_PROPASSIGN, - MF_PROPVAL, - MF_VERSION_DONE, - MF_VALID_DONE, - MF_ERROR_DONE -} mfparse_t; - - -static master_rec_t *master_list = NULL; - -device_id_t * -mf_alloc_device_id() -{ - return ((device_id_t *)kmem_zalloc(sizeof (device_id_t), KM_SLEEP)); -} - -void -mf_free_device_id(device_id_t *d) -{ - if (d->id != NULL) - strfree(d->id); - - kmem_free(d, sizeof (device_id_t)); -} - -static property_t * -mf_alloc_property() -{ - return ((property_t *)kmem_zalloc(sizeof (property_t), KM_SLEEP)); -} - -static void -mf_free_property(property_t *p) -{ - if (p->name != NULL) - strfree(p->name); - - if (p->value != NULL) - strfree(p->value); - - kmem_free(p, sizeof (property_t)); -} - -static master_rec_t * -mf_alloc_master_rec() -{ - return ((master_rec_t *)kmem_zalloc(sizeof (master_rec_t), KM_SLEEP)); -} - -static void -mf_free_master_rec(master_rec_t *m) -{ - device_id_t *d; - property_t *p; - - if (m->name != NULL) - strfree(m->name); - - if (m->description != NULL) - strfree(m->description); - - d = m->device_ids; - while (d != NULL) { - device_id_t *next; - - next = d->next; - mf_free_device_id(d); - d = next; - } - - p = m->properties; - while (p != NULL) { - property_t *next; - - next = p->next; - mf_free_property(p); - p = next; - } - - kmem_free(m, sizeof (master_rec_t)); -} - -void -free_master_data() -{ - master_rec_t *m; - - m = master_list; - while (m != NULL) { - master_rec_t *next; - - next = m->next; - mf_free_master_rec(m); - m = next; - } - master_list = NULL; -} - -/* - * Unfortunately, kobj_lex() is too sophisticated for our needs - */ -static mftoken_t -mf_lex(struct _buf *file, char *val, size_t size) -{ - char *cp; - int ch, badquote; - size_t remain; - mftoken_t token = MF_UNEXPECTED; - - if (size < 2) - return (token); /* MF_UNEXPECTED */ - - cp = val; - - /* skip leading whitespace */ - while ((ch = kobj_getc(file)) == ' ' || ch == '\t') - ; - - /* strip comments */ - if (ch == '#') { - while ((ch = kobj_getc(file)) != '\n' && ch != '\r' && - ch != -1) - ; - } - - remain = size - 1; - *cp++ = (char)ch; - switch (ch) { - case -1: - token = MF_EOF; - break; - case '\n': - case '\r': - token = MF_NEWLINE; - break; - case '=': - token = MF_EQUALS; - break; - case '|': - token = MF_BIT_OR; - break; - case '"': - remain++; - cp--; - badquote = 0; - while (!badquote && (ch = kobj_getc(file)) != '"') { - switch (ch) { - case '\n': - case -1: - remain = size - 1; - cp = val; - *cp++ = '\n'; - badquote = 1; - /* since we consumed the newline/EOF */ - (void) kobj_ungetc(file); - break; - default: - if (--remain == 0) { - token = MF_UNEXPECTED; - goto out; - } - *cp++ = (char)ch; - break; - } - } - token = MF_STRING; - break; - default: - do { - if (--remain == 0) { - token = MF_UNEXPECTED; - break; - } - - token = MF_IDENT; - *cp++ = (char)(ch = kobj_getc(file)); - - /* if terminating character, break out */ - if ((ch == -1) || (ch == ' ') || (ch == '\t') || - (ch == '\n') || (ch == '\r') || (ch == '=') || - (ch == '|')) { - (void) kobj_ungetc(file); - remain++; - cp--; - break; - } - - if ((ch == '#') || (ch == '"')) - token = MF_UNEXPECTED; - } while (token != MF_UNEXPECTED); - break; - } -out: - *cp = '\0'; - - return (token); -} - -static master_rec_t * -get_line(struct _buf *file) -{ - master_rec_t *m = NULL; - device_id_t *d = NULL; - property_t *p = NULL; - mftoken_t token; - char tokval[MAXPATHLEN]; - mfparse_t parse_state; - - parse_state = MF_INIT; - token = mf_lex(file, tokval, sizeof (tokval)); - while (token != MF_EOF) { - switch (parse_state) { - case MF_INIT: - m = mf_alloc_master_rec(); - parse_state = MF_DEVID; - /*FALLTHROUGH*/ - case MF_DEVID: - if (token == MF_IDENT) { - d = mf_alloc_device_id(); - d->id = strdup(tokval); - d->next = m->device_ids; - m->device_ids = d; - parse_state = MF_NAME; - } else if (token != MF_NEWLINE) - parse_state = MF_ERROR_DONE; - break; - case MF_NAME: - if (token == MF_IDENT) { - m->name = strdup(tokval); - parse_state = MF_DEVTYPE; - } else if (token == MF_BIT_OR) { - parse_state = MF_DEVID; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_DEVTYPE: - if (token == MF_IDENT) { - /* device_type not used */ - parse_state = MF_BUSTYPE; - } else if (token == MF_NEWLINE) { - /* version line ignored */ - parse_state = MF_VERSION_DONE; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_BUSTYPE: - if (token == MF_IDENT) { - /* bus_type ignored */ - parse_state = MF_BEFNAME; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_BEFNAME: - if (token == MF_IDENT) { - /* realmode driver name ignored */ - parse_state = MF_DESCRIPTION; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_DESCRIPTION: - if (token == MF_STRING) { - m->description = strdup(tokval); - parse_state = MF_PROPNAME; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_PROPNAME: - if (token == MF_IDENT) { - p = mf_alloc_property(); - p->name = strdup(tokval); - parse_state = MF_PROPASSIGN; - } else if (token == MF_NEWLINE) { - parse_state = MF_VALID_DONE; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_PROPASSIGN: - if (token == MF_EQUALS) { - parse_state = MF_PROPVAL; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_PROPVAL: - if (token == MF_STRING || token == MF_IDENT) { - p->value = strdup(tokval); - p->next = m->properties; - /* delete properties which begin with '$' */ - if (*p->name == '$') { - mf_free_property(p); - } else - m->properties = p; - p = NULL; - parse_state = MF_PROPNAME; - } else - parse_state = MF_ERROR_DONE; - break; - case MF_VERSION_DONE: - case MF_VALID_DONE: - case MF_ERROR_DONE: - /* terminating states handled outside switch() */ - break; - } - - if (parse_state == MF_VERSION_DONE) { - /* ignore version line */ - mf_free_master_rec(m); - parse_state = MF_INIT; - } else if (parse_state == MF_VALID_DONE) { - /* valid line */ - break; - } else if (parse_state == MF_ERROR_DONE) { - mf_free_master_rec(m); - if (p != NULL) - mf_free_property(p); - /* - * Error in master file. Should never happen - * since master file is not user-edited. Eat rest - * of line to attempt error recovery - */ - cmn_err(CE_NOTE, "!error in %s", masterfile); - while (token != MF_NEWLINE && token != MF_EOF) - token = mf_lex(file, tokval, sizeof (tokval)); - parse_state = MF_INIT; - continue; - } - - token = mf_lex(file, tokval, sizeof (tokval)); - } - - return (m); -} - -void -process_master_file() -{ - struct _buf *file; - master_rec_t *m; - - if ((file = kobj_open_file(masterfile)) == (struct _buf *)-1) { - cmn_err(CE_WARN, "!cannot open master file: %s", masterfile); - return; - } - - while ((m = get_line(file)) != NULL) { - m->next = master_list; - master_list = m; - } - - kobj_close_file(file); -} - -/* - * Return the first master file record found matching pnpid list - */ -const master_rec_t * -master_file_lookup(device_id_t *pnpid) -{ - master_rec_t *m; - device_id_t *d; - - while (pnpid != NULL) { - m = master_list; - while (m != NULL) { - d = m->device_ids; - while (d != NULL) { - if (strcmp(pnpid->id, d->id) == 0) - return (m); - d = d->next; - } - m = m->next; - } - pnpid = pnpid->next; - } - - return (NULL); -} diff --git a/usr/src/uts/intel/io/pci/pci_boot.c b/usr/src/uts/intel/io/pci/pci_boot.c index 25bae81079..ab3b5a5a8f 100644 --- a/usr/src/uts/intel/io/pci/pci_boot.c +++ b/usr/src/uts/intel/io/pci/pci_boot.c @@ -1740,6 +1740,18 @@ enumerate_bus_devs(uchar_t bus, int config_op) } } +/* + * As a workaround for devices which is_pciide() (below, which see) would not + * match due to device issues, check an undocumented device tree property + * 'pci-ide', the value of which is a 1275 device identifier. + * + * Should a device matching this (in normal 'compatible' order) be found, and + * the device not otherwise bound, it will be have its node name changed to + * 'pci-ide' so the pci-ide driver will attach. + * + * This can be set via `eeprom pci-ide=pciXXXX,YYYY` (see eeprom(8)) or + * otherwise added to bootenv.rc. + */ static int check_pciide_prop(uchar_t revid, ushort_t venid, ushort_t devid, ushort_t subvenid, ushort_t subdevid) @@ -1790,18 +1802,22 @@ static int is_pciide(uchar_t basecl, uchar_t subcl, uchar_t revid, ushort_t venid, ushort_t devid, ushort_t subvenid, ushort_t subdevid) { - struct ide_table { /* table for PCI_MASS_OTHER */ + struct ide_table { ushort_t venid; ushort_t devid; } *entry; - /* XXX SATA and other devices: need a way to add dynamically */ + /* + * Devices which need to be matched specially as pci-ide because of + * various device issues. Commonly their specification as being + * PCI_MASS_OTHER or PCI_MASS_SATA despite our using them in ATA mode. + */ static struct ide_table ide_other[] = { - {0x1095, 0x3112}, - {0x1095, 0x3114}, - {0x1095, 0x3512}, - {0x1095, 0x680}, /* Sil0680 */ - {0x1283, 0x8211}, /* ITE 8211F is subcl PCI_MASS_OTHER */ + {0x1095, 0x3112}, /* Silicon Image 3112 SATALink/SATARaid */ + {0x1095, 0x3114}, /* Silicon Image 3114 SATALink/SATARaid */ + {0x1095, 0x3512}, /* Silicon Image 3512 SATALink/SATARaid */ + {0x1095, 0x680}, /* Silicon Image PCI0680 Ultra ATA-133 */ + {0x1283, 0x8211}, /* Integrated Technology Express 8211F */ {0, 0} }; @@ -1820,7 +1836,7 @@ is_pciide(uchar_t basecl, uchar_t subcl, uchar_t revid, } entry = &ide_other[0]; - while (entry->venid) { + while (entry->venid != 0) { if (entry->venid == venid && entry->devid == devid) return (1); entry++; @@ -1832,9 +1848,9 @@ static int is_display(uint_t classcode) { static uint_t disp_classes[] = { - 0x000100, - 0x030000, - 0x030001 + 0x000100, /* pre-class code VGA Compatible */ + 0x030000, /* VGA Compatible */ + 0x030001 /* VGA+8514 Compatible */ }; int i, nclasses = sizeof (disp_classes) / sizeof (uint_t); @@ -2209,7 +2225,7 @@ process_devfunc(uchar_t bus, uchar_t dev, uchar_t func, uchar_t header, * * If it is, check if any other higher precedence driver listed in * driver_aliases will claim the node by calling - * ddi_compatibile_driver_major. If so, clear pciide and do not + * ddi_compatible_driver_major. If so, clear pciide and do not * create a pci-ide node or any other special handling. * * If another driver does not bind, set the node name to pci-ide @@ -2473,7 +2489,7 @@ static struct { }; static int -pciIdeAdjustBAR(uchar_t progcl, int index, uint_t *basep, uint_t *lenp) +pciide_adjust_bar(uchar_t progcl, int index, uint_t *basep, uint_t *lenp) { int hard_decode = 0; @@ -2616,7 +2632,7 @@ add_reg_props(dev_info_t *dip, uchar_t bus, uchar_t dev, uchar_t func, if (subclass != PCI_MASS_IDE) progclass = (PCI_IDE_IF_NATIVE_PRI | PCI_IDE_IF_NATIVE_SEC); - hard_decode = pciIdeAdjustBAR(progclass, j, + hard_decode = pciide_adjust_bar(progclass, j, &base, &len); } else if (value == 0) { /* skip base regs with size of 0 */ diff --git a/usr/src/uts/intel/os/master b/usr/src/uts/intel/os/master deleted file mode 100644 index b860e1b405..0000000000 --- a/usr/src/uts/intel/os/master +++ /dev/null @@ -1,428 +0,0 @@ -version 1.0 -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright 2009 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Device tree database -# - Records in this file can be in an arbitrary order. -# - Records are terminated by newlines, and fields are separated -# by any number of spaces and/or tabs. -# - Quotes can be used in any field to allow white space. -# - Other than comments (lines such as this beginning with '#") -# and the "Version" string no other tokens are understood. -# -# Database format:- -# -# <dev ids> <name> <dev type> <bus> <realmode dvr> <dev desc> <properties> -# -# Where:- -# dev ids List of unique device identifiers, separated by the -# "or" character '|' when more than one ID should -# match the same entry. -# -# name The device name. When the device ID matches -# an entry in the device database, the "name" -# property is set to this value, and the "compatible" -# property is set to the device ID. If no device -# database entry matched, then the node will just have -# the device ID for the "name" property. This allows -# us to specify the Solaris driver name for a device -# when we know what it is. PCI devices are typically -# listed in /etc/driver_aliases so we just map the -# name back to the device ID and let driver_aliases -# take care of the driver name mapping. -# -# dev type The device type. Valid values are: -# -# com ... Serial ports -# mem ... Memory extender cards -# mfc ... Multi-function card -# msd ... Mass storage device (eg scsi or ide) -# net ... Network devices -# plat ... Platform bef -# oth ... Miscellaneous (including sound cards) -# ptr ... Mice, etc. -# vid ... Video/graphics cards -# prt ... Parallel ports -# -# bus The bus type (eg all, isa, pnpisa, eisa, pci) -# -# realmode dvr The realmode driver for bootable devices, -# otherwise "none". -# Note, realmode driver is no longer being used. -# The entry is there for backward compatibility. -# -# dev desc Freeform descriptive device text -# -# properties Optional additional device properties of the form -# name=value eg ipl=3. Properties are added to the -# device tree node passed to the kernel. This field -# is also used to make this database "extensible". -# Properties which begin with a dollar sign are -# are used to pass information to the Configuration -# Assistant, but are not added to the device tree. -# For example, the $forceload property tells the -# Configuration Assistant that it must always load -# the specified bef in order for that bef to set -# additional properties on the node. -# -# -# ISA/EISA devices -# id is the config file name (without leading "!" and trailing ".cfg") -# -SVI0101 SVI0101 oth all none "Sun Fire B100x BSC" -PNP0300 keyboard key all none "IBM PC/XT keyboard controller (83-key)" -PNP0302 keyboard key all none "IBM PC/XT keyboard controller (84-key)" -PNP0301 keyboard key all none "IBM PC/AT keyboard controller (86-key)" -PNP0303 keyboard key all none "IBM Enhanced (101/102-key, PS/2 mouse support)" -PNP0304 keyboard key all none "Olivetti Keyboard (83-key)" -PNP0305 keyboard key all none "Olivetti Keyboard (102-key)" -PNP0306 keyboard key all none "Olivetti Keyboard (86-key)" -PNP0307 keyboard key all none "Microsoft Windows(R) Keyboard" -PNP0308 keyboard key all none "General Input Device Emulation Interface (GIDEI) legacy" -PNP0309 keyboard key all none "Olivetti Keyboard (A101/102 key)" -PNP030A keyboard key all none "AT&T 302 keyboard" -PNP030B keyboard key all none "Reserved by Microsoft" -PNP0320 keyboard key all none "Japanese 101-key keyboard" -PNP0321 keyboard key all none "Japanese AX keyboard" -PNP0322 keyboard key all none "Japanese 106-key keyboard A01" -PNP0323 keyboard key all none "Japanese 106-key keyboard 002/003" -PNP0324 keyboard key all none "Japanese 106-key keyboard 001" -PNP0325 keyboard key all none "Japanese Toshiba Desktop keyboard" -PNP0326 keyboard key all none "Japanese Toshiba Laptop keyboard" -PNP0327 keyboard key all none "Japanese Toshiba Notebook keyboard" -PNP0340 keyboard key all none "Korean 84-key keyboard" -PNP0341 keyboard key all none "Korean 86-key keyboard" -PNP0342 keyboard key all none "Korean Enhanced keyboard" -PNP0343 keyboard key all none "Korean Enhanced keyboard 101b" -PNP0343 keyboard key all none "Korean Enhanced keyboard 101c" -PNP0344 keyboard key all none "Korean Enhanced keyboard 103" -PNP0400 lp prt all none "Standard LPT printer port" -PNP0401 lp prt all none "ECP printer port" -PNP0500 asy com all none "Standard PC COM port" -PNP0501 asy com all none "16550A-compatible COM port" -# IRDA device is untested -# PNP0510 asy com all none "Generic IRDA-compatible device" -PNP0700 fdc oth all none "PC standard floppy disk controller" -PNP0701 fdc oth all none "Standard floppy controller supporting MS Device Bay Spec" -PNP0C31|ATM1200|IFX0102|BCM0101|NSC1200 tpm oth all none "Generic Trusted Platform Module" -PNP0F00 msm ptr all none "Microsoft bus mouse" -PNP0F01 mouse ptr all none "Microsoft Serial Mouse" -PNP0F02 mouse ptr all none "Microsoft InPort Mouse" -PNP0F03 mouse ptr all none "Microsoft PS/2-style Mouse" -PNP0F04 mouse ptr all none "Mouse Systems Mouse" -PNP0F05 mouse ptr all none "Mouse Systems 3-Button Mouse (COM2)" -PNP0F06 mouse ptr all none "Genius Mouse (COM1)" -PNP0F07 mouse ptr all none "Genius Mouse (COM2)" -PNP0F08 mouse ptr all none "Logitech Serial Mouse" -PNP0F09 mouse ptr all none "Microsoft BallPoint Serial Mouse" -PNP0F0A mouse ptr all none "Microsoft Plug and Play Mouse" -PNP0F0B mouse ptr all none "Microsoft Plug and Play BallPoint Mouse" -PNP0F0C mouse ptr all none "Microsoft-compatible Serial Mouse" -PNP0F0D mouse ptr all none "Microsoft-compatible InPort-compatible Mouse" -PNP0F0E mouse ptr all none "Microsoft-compatible PS/2-style Mouse" -PNP0F0F mouse ptr all none "Microsoft-compatible Serial BallPoint-compatible Mouse" -PNP0F10 mouse ptr all none "Texas Instruments QuickPort Mouse" -PNP0F11 mouse ptr all none "Microsoft-compatible Bus Mouse" -PNP0F12 mouse ptr all none "Logitech PS/2-style Mouse" -PNP0F13 mouse ptr all none "PS/2 Port for PS/2-style Mice" -PNP0F14 mouse ptr all none "Microsoft Kids Mouse" -PNP0F15 logi ptr all none "Logitech bus mouse" -PNP0F16 mouse ptr all none "Logitech SWIFT device" -PNP0F17 mouse ptr all none "Logitech-compatible serial mouse" -PNP0F18 mouse ptr all none "Logitech-compatible bus mouse" -PNP0F19 mouse ptr all none "Logitech-compatible PS/2-style Mouse" -PNP0F1A mouse ptr all none "Logitech-compatible SWIFT Device" -PNP0F1B mouse ptr all none "HP Omnibook Mouse" -PNP0F1C mouse ptr all none "Compaq LTE Trackball PS/2-style Mouse" -PNP0F1D mouse ptr all none "Compaq LTE Trackball Serial Mouse" -PNP0F1E mouse ptr all none "Microsoft Kids Trackball Mouse" -PNP0F1F mouse ptr all none "Reserved by Microsoft Input Device Group" -PNP0F20 mouse ptr all none "Reserved by Microsoft Input Device Group" -PNP0F21 mouse ptr all none "Reserved by Microsoft Input Device Group" -PNP0F22 mouse ptr all none "Reserved by Microsoft Input Device Group" -PNP0F23 mouse ptr all none "Reserved by Microsoft Input Device Group" -PNP0FFF mouse ptr all none "Reserved by Microsoft Systems" -SYN010B mouse ptr all none "Synaptics mouse pad" -ICU1900|PNP0E00|PNP0E01|PNP0E02 pcic oth all pcic.bef "PCMCIA controller" -ADS7180 sbpro oth all sbpro.bef "ADS Sound Blaster" -AZT1008 sbpro oth all sbpro.bef "Aztech AZT1008 Sound Device" -CSC0000 sbpro oth all sbpro.bef "Sound Blaster" -PNPB002 sbpro oth all sbpro.bef "Sound Blaster" -PNPB003 sbpro oth all sbpro.bef "Sound Blaster" -CTL0001 sbpro oth all sbpro.bef "Sound Blaster" -CTL0031 sbpro oth all sbpro.bef "Sound Blaster" -CTL0041 sbpro oth all sbpro.bef "Sound Blaster" -CTL0043 sbpro oth all sbpro.bef "Creative Labs Sound Blaster 16 Vibra" -CTL0044 sbpro oth all sbpro.bef "Creative Labs Sound Blaster AWE64 Gold" -CTL0045 sbpro oth all sbpro.bef "Sound Blaster" -ESS1681 sbpro oth all sbpro.bef "Sound Blaster" -ESS1868 sbpro oth all sbpro.bef "ESS ES1868 AudioDrive" -ESS6881 sbpro oth all sbpro.bef "Sound Blaster" -CSC0001|PNPB02F|CTL7001|CTL7002 joyst oth all joyst.bef "Game port (Joy stick)" -PNPB006 none oth all none "Audio MIDI interface (MPU401 UART)" -ALRB200 none oth eisa none "ALR math coprocessor" -AST8250 none mem eisa none "AST Premmia GX Extended Memory Configuration" -CPQ4411|CPQ4410|SNIAAC1 ncrs msd eisa ncrs.bef "Compaq 32-Bit Fast-SCSI-2 Controller" -CPQ4020 csa msd eisa none "Compaq SMART Array Controller" -ICU01F0 mwss oth all mwss.bef "Windows Sound System Compatible" -ICU0210 logi ptr all none "Logitech bus mouse" -ICU0211 msm ptr all none "Microsoft bus mouse" -ICU0580 tmc msd all none "Future Domain TMC-850 SCSI controller" -ICU05F0 usc msd all none "Ultrastor ULTRA14F SCSI Controller" -SUN0005 display vid all none "Sub-VGA Display Adapter" -SUN0006 display vid all none "XGA Display Adapter" compatible="pnpPNP,900" -PNP0900|ISY0010 display vid all none "VGA Compatible Display Adapter" compatible="pnpPNP,900" -PNP0931 display vid all none "Chips & Tech VGA Display Adapter" compatible="pnpPNP,900" -ISY0020 asy com all com.bef "Serial port" -SUN0030 asy com all boca.bef "Boca board serial port" $forceload=yes -USR0006|USR0002|SUP1381|HSM0240 asy com pnpisa none "Serial port w/ built in modem" -ISY0030 mouse ptr all ps2ms.bef "PS/2 mouse" -ISY0040|PNP0600|PNP0680 ata msd all ata.bef "IDE controller" -ISY0050 fdc oth all fdc.bef "Floppy disk controller" -ISY0060 lp prt all lpt.bef "Parallel port" -SUN0010 p9000 vid all none "P9000 VLB VGA graphics adapter" -SUN0020 p9100 vid all none "P9100 VLB VGA graphics adapter" -PNP0902 display vid all none "VGA w/ 8514/A compatible graphics adapter" compatible="pnpPNP,900" -WYS7901 none oth eisa none "CPU board" -WYS7D01 none mem eisa none "Memory board" -SUN0001 none oth all none "ISA Plug and play configuration ports" -PNP8231|ATK1500|ADV55AA|PNP828C|CSI2203 pcn net all pcn.bef "AMD PCnet-ISA 79C960/PCnet-32 79C965 Ethernet" -PNP0300|PNP0301|PNP0302|PNP0303|PNP0304|PNP0305|PNP0306|PNP0307|PNP0308|PNP0309|PNP030A|PNP030B|PNP0320|PNP0321|PNP0322|PNP0323|PNP0324|PNP0325|PNP0326|PNP0327|PNP0340|PNP0341|PNP0342|PNP0343|PNP0344 keyboard key all key.bef "System keyboard" -PNP0C01 motherboard oth all none "Motherboard" -CTL0051|PNPFFFF none oth pnpisa none "Unspecified device" -# -# PCI devices -# IEEE 1275 defined name format: pciVVVV,DDDD -# where VVVV and DDDD are the vendor and device id fields from -# the configuration space. -# -# Only add entries for devices with befs. -# Please keep in numeric order. -# -pci1000,1 pci1000,1 msd pci ncrs.bef "Symbios Logic 53c810 SCSI" -pci1000,2 pci1000,2 msd pci ncrs.bef "Symbios Logic 53c820 SCSI" -pci1000,3 pci1000,3 msd pci ncrs.bef "Symbios Logic 53c825 SCSI" -pci1000,4 pci1000,4 msd pci ncrs.bef "Symbios Logic 53c815 SCSI" -pci1000,6 pci1000,6 msd pci ncrs.bef "Symbios Logic 53c865 SCSI" -pci1000,c pci1000,c msd pci ncrs.bef "Symbios Logic 53c895 SCSI" -pci1000,f pci1000,f msd pci ncrs.bef "Symbios Logic 53c875 SCSI" -pci1000,8f pci1000,8f msd pci ncrs.bef "Diamond Fireport 40 (SYM53C876)" -pci1011,2 pci1011,2 net pci dnet.bef "DEC 21040 Ethernet" -pci1011,9 pci1011,9 net pci dnet.bef "DEC 21140 Fast Ethernet" -pci1011,14 pci1011,14 net pci dnet.bef "DEC 21041 Ethernet" -pci1011,19 pci1011,19 net pci dnet.bef "DEC 21142/21143 Fast Ethernet" -pci1022,2000 pci1022,2000 net pci pcn.bef "AMD 79C970 PCnet Ethernet" -pci103c,104c pci103c,104c net pci pcn.bef "HP 'Tweety' PCnet Fast Ethernet" -pci10b7,9000 pci10b7,9000 net pci elxl.bef "3Com 3C900-TPO Etherlink XL" -pci10b7,9001 pci10b7,9001 net pci elxl.bef "3Com 3C900-COMBO Etherlink XL" -pci10b7,9004 pci10b7,9004 net pci elxl.bef "3Com 3C900B-TPO Etherlink XL" -pci10b7,9005 pci10b7,9005 net pci elxl.bef "3Com 3C900B-COMBO Etherlink XL" -pci10b7,9006 pci10b7,9006 net pci elxl.bef "3Com 3C900B-TPC Etherlink XL" -pci10b7,9050 pci10b7,9050 net pci elxl.bef "3Com 3C905-TX Fast Etherlink XL 10/100" -pci10b7,9051 pci10b7,9051 net pci elxl.bef "3Com 3C905-T4 Fast Etherlink XL 10/100" -pci10b7,9055 pci10b7,9055 net pci elxl.bef "3Com 3C905B-TX Fast Etherlink XL 10/100" -pci10b7,9056 pci10b7,9056 net pci elxl.bef "3Com 3C905B-T4 Fast Etherlink XL 10/100" -pci10b7,9200 pci10b7,9200 net pci elxl.bef "3Com 3C905C-TX-M Fast Etherlink XL 10/100" -pci10b7,9800 pci10b7,9800 net pci elxl.bef "3Com 3C980-TX Fast Etherlink Server 10/100" -pci10b7,9805 pci10b7,9805 net pci elxl.bef "3Com 3C980C-TXM Fast Etherlink Server 10/100" -pci10b8,2001 pci10b8,2001 net pci dnet.bef "SMC9332BDT Fast Ethernet" -pci1109,1400 pci1109,1400 net pci dnet.bef "Cogent EM110TX Fast Ethernet" -pci1109,2400 pci1109,2400 net pci dnet.bef "Cogent EM440 Fast Ethernet" -pci14e4,1644 pci14e4,1644 net pci none "Broadcom 5700 Gigabit Ethernet" -pci14e4,1645 pci14e4,1645 net pci none "Broadcom 5701 Gigabit Ethernet" -pci14e4,1647 pci14e4,1647 net pci none "Broadcom 5703C Gigabit Ethernet" -pci14e4,1648 pci14e4,1648 net pci none "Broadcom 5704C Gigabit Ethernet" -pci14e4,16a7 pci14e4,16a7 net pci none "Broadcom 5703S Gigabit Ethernet" -pci14e4,16c7 pci14e4,16c7 net pci none "Broadcom 5703 Gigabit Ethernet" -pci14e4,16a8 pci14e4,16a8 net pci none "Broadcom 5704S Gigabit Ethernet" -pci14e4,165d pci14e4,165d net pci none "Broadcom 5705M Gigabit Ethernet" -pci14e4,165e pci14e4,165e net pci none "Broadcom 5705MA3 Gigabit Ethernet" -pci14e4,1677 pci14e4,1677 net pci none "Broadcom 5751 Gigabit Ethernet" -pci14e4,167d pci14e4,167d net pci none "Broadcom 5751M Gigabit Ethernet" -pci14e4,1659 pci14e4,1659 net pci none "Broadcom 5721 Gigabit Ethernet" -pci14e4,1696 pci14e4,1696 net pci none "Broadcom 5782 Gigabit Ethernet" -pci14e4,169c pci14e4,169c net pci none "Broadcom 5788 Gigabit Ethernet" -pci10de,57 pci10de,cb84 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,56 pci10de,cb84 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,57 pci10f1,2865 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,56 pci10f1,2865 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,57 pci10f1,2895 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,56 pci10f1,2895 net pci none "NVIDIA CK8-04 Gigabit Ethernet" -pci10de,268 pci10de,268 net pci none "NVIDIA MCP51 Gigabit Ethernet" -pci10de,269 pci10de,269 net pci none "NVIDIA MCP51 Gigabit Ethernet" -pci10de,372 pci10de,372 net pci none "NVIDIA MCP55 Gigabit Ethernet" -pci10de,373 pci10de,373 net pci none "NVIDIA MCP55 Gigabit Ethernet" -pci10de,37 pci10de,37 net pci none "NVIDIA MCP04 Gigabit Ethernet" -pci10de,38 pci10de,38 net pci none "NVIDIA MCP04 Gigabit Ethernet" -pci10de,3ee pci10de,3ee net pci none "NVIDIA MCP61 Gigabit Ethernet" -pci10de,38 pci10de,3ef net pci none "NVIDIA MCP61 Gigabit Ethernet" -pci10de,38 pci10de,e6 net pci none "NVIDIA nForce3 250Gb Gigabit Ethernet" -pci10de,38 pci10de,df net pci none "NVIDIA nForce3 250Gb Gigabit Ethernet" -pci10ec,8139 pci10ec,8139 net pci none "Realtek 8139 Fast Ethernet" -pci8086,1029 pci8086,1029 net pci iprb.bef "Intel Pro/100 Network Adapter" -pci8086,1030 pci8086,1030 net pci iprb.bef "Intel InBusiness 10/100 Network Adapter" -pci8086,1031 pci8086,1031 net pci iprb.bef "Intel Pro/100 VE Ethernet" -pci8086,1032 pci8086,1032 net pci iprb.bef "Intel Pro/100 VE Ethernet" -pci8086,1038 pci8086,1038 net pci iprb.bef "Intel 82559 PRO/100 VM Ethernet" -pci8086,1039 pci8086,1039 net pci iprb.bef "Intel 82801DB Ethernet 82562ET/EZ PHY" -pci8086,103d pci8086,103d net pci iprb.bef "Intel 82801DB PRO/100 VE Ethernet" -pci8086,1050 pci8086,1050 net pci iprb.bef "Intel 82562EZ PRO/100 VE Ethernet" -pci8086,1059 pci8086,1059 net pci iprb.bef "Intel 82551QM PRO/100 VE Ethernet" -pci8086,1068 pci8086,1068 net pci iprb.bef "Intel 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet" -pci8086,1069 pci8086,1069 net pci iprb.bef "Intel 82562EM/EX/GX - PRO/100 VM Ethernet" -pci8086,1229 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1009 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.100c pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1012 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1013 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1015 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1016 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,1229.8086.1017 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet" -pci8086,2449 pci8086,2449 net pci iprb.bef "Intel i815/82559 Ethernet" -pci8086,27dc pci8086,27dc net pci iprb.bef "Intel ICH7 82801G Ethernet" -pci101a,f2d scsi msd pci none "NCR PDS/PQS 53C896-based PCI SCSI Adapter" compatible="pci101a,f2d" -pci101a,f2e scsi msd pci none "NCR PDS/PQS 53C896-based PCI SCSI Adapter" compatible="pci101a,f2e" -pci101a,f2f scsi msd pci none "NCR PDS/PQS 53C896-based PCI SCSI Adapter" compatible="pci101a,f2f" -# -# Special entry for ncrpqs: node and driver are both named 'ncrpqs' -# deviceid is vid=illegal PCI vid, did=NCR PQS's vid -# On resulting devinfo node with no SSVID/SSID: -# name="ncrpqs" -# compatible="ncrpqs\0pci1000,f\0pciclass..." -# on nodes with: -# compatible="ncrpqs\0pci1000,1000\0pci1000,f\0pciclass..." -pciffff,101a ncrpqs msd pci none "NCR PDS/PQS 53C875-based PCI SCSI Adapter" -# -# pci class entries: -# -# PCI Class entries with 2 byte class codes are treated as wildcard class -# specifiers (with the 3rd byte (programming interface) as the wildcard). Hence, -# the following entry will match ALL devices whose pci classes begin with "0101" -# (any programming interface version) -pciclass,0101 pci-ide msd pciclass ata.bef "IDE controller" -pci1095,3112 pci-ide msd pci ata.bef "Silicon Image 3112 SATA Controller" -pci1095,3114 pci-ide msd pci ata.bef "Silicon Image 3114 SATA Controller" -pci1095,3512 pci-ide msd pci ata.bef "Silicon Image 3512 SATA Controller" -pciclass,030000|pciclass,000100 display vid pciclass none "VGA compatible display adapter" -pciclass,030001 display vid pciclass none "VGA+8514 compatible display adapter" -pci1000,b pci1000,b msd pci symhisl.bef "Symbios SYM53C896 Ultra2 SCSI" -pci1000,12 pci1000,12 msd pci symhisl.bef "Symbios SYM53C895A Ultra2 SCSI" -pci1000,20 pci1000,20 msd pci symhisl.bef "Symbios SYM53C1010 Ultra3 SCSI" -pci1000,21 pci1000,21 msd pci symhisl.bef "Symbios SYM53C1010-66 Ultra3 SCSI" -pci1000,30 pci1000,30 msd pci none "LSI Logic 1020/1030 Ultra320 SCSI HBA" -pci1000,50 pci1000,50 msd pci none "LSI Logic 1064 SAS/SATA HBA" -pci8086,1000 pci8086,1000 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1001 pci8086,1001 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1004 pci8086,1004 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1008 pci8086,1008 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1009 pci8086,1009 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,100d pci8086,100d net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,100e pci8086,100e net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,100f pci8086,100f net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1010 pci8086,1010 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1011 pci8086,1011 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1012 pci8086,1012 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1013 pci8086,1013 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1014 pci8086,1014 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1015 pci8086,1015 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1016 pci8086,1016 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1017 pci8086,1017 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1018 pci8086,1018 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1019 pci8086,1019 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,101a pci8086,101a net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,101d pci8086,101d net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,101e pci8086,101e net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1026 pci8086,1026 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1027 pci8086,1027 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1028 pci8086,1028 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,105a pci8086,105a net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,105b pci8086,105b net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,105c pci8086,105c net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,105e pci8086,105e net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,105f pci8086,105f net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1060 pci8086,1060 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1061 pci8086,1061 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1062 pci8086,1062 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1063 pci8086,1063 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1075 pci8086,1075 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1076 pci8086,1076 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1077 pci8086,1077 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,1079 pci8086,1079 net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,107a pci8086,107a net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,107b pci8086,107b net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,107c pci8086,107c net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,107d pci8086,107d net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,107e pci8086,107e net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci8086,108a pci8086,108a net pci none "Intel(R) PRO/1000 Server Adapter Driver" -pci9005,8000 pci9005,8000 msd pci adpu320.bef "Adaptec SCSI Card 29320A(H1B) - Ultra320 SCSI" -pci9005,8010 pci9005,8010 msd pci adpu320.bef "Adaptec SCSI Card 39320 - Ultra320 SCSI" -pci9005,8011 pci9005,8011 msd pci adpu320.bef "Adaptec SCSI Card 39320D - Ultra320 SCSI" -pci9005,8012 pci9005,8012 msd pci adpu320.bef "Adaptec SCSI Card 29320 - Ultra320 SCSI" -pci9005,8014 pci9005,8014 msd pci adpu320.bef "Adaptec SCSI Card 29320LP - Ultra320 SCSI" -pci9005,8015 pci9005,8015 msd pci adpu320.bef "Adaptec SCSI Card 39320(H2B) - Ultra320 SCSI" -pci9005,8016 pci9005,8016 msd pci adpu320.bef "Adaptec SCSI Card 39320A - Ultra320 SCSI" -pci9005,8017 pci9005,8017 msd pci adpu320.bef "Adaptec SCSI Card 29320ALP(H1B) - Ultra320 SCSI" -pci9005,801d pci9005,801d msd pci adpu320.bef "Adaptec SCSI Card AIC-7902B - Ultra320 SCSI" -pci9005,801e pci9005,801e msd pci adpu320.bef "Adaptec SCSI Card AIC-7901A - Ultra320 SCSI" -pci9005,801f pci9005,801f msd pci adpu320.bef "Adaptec AIC-7902 - Ultra320 SCSI" -pci9005,285 pci9005,285 msd pci none "Adaptec AdvancedRAID Controller" -pci1028,a pci1028,a msd pci none "PERC 3/DI RAID Controller" -pci1028,e pci1028,e msd pci none "PERC 4/DI RAID Controller" -pci1028,f pci1028,f msd pci none "PERC 4/DI RAID Controller" -pci1028,493 pci1028,493 msd pci none "PERC 3/DC RAID Controller" -pci1028,518 pci1028,518 msd pci none "PERC 4/DC RAID Controller" -pci1028,520 pci1028,520 msd pci none "PERC 4/SC RAID Controller" -pci1000,532 pci1000,532 msd pci none "MegaRAID SCSI 320-2x" -pci9005,cf pci9005,cf msd pci cadp160.bef "Adaptec AIC-7899 Ultra160 SCSI" -pci9005,8f pci9005,8f msd pci cadp160.bef "Adaptec AIC-7892 Ultra160 SCSI" -pci9005,c0 pci9005,c0 msd pci cadp160.bef "Adaptec 39160 Ultra160 SCSI HBA" -pci9005,80 pci9005,80 msd pci cadp160.bef "Adaptec 29160/N/LP Ultra160 SCSI HBA" -pci9004,5078 pci9004,5078 msd pci adp.bef "Adaptec AIC-7850 SCSI" -pci9004,5578 pci9004,5578 msd pci adp.bef "Adaptec AIC-7855 SCSI" -pci9004,6075 pci9004,6075 msd pci adp.bef "Adaptec AHA-7560 SCSI" -pci9004,6078 pci9004,6078 msd pci adp.bef "Adaptec AHA-7860 SCSI" -pci9004,6178 pci9004,6178 msd pci adp.bef "Adaptec AHA-7861 SCSI" -pci9004,6278 pci9004,6278 msd pci adp.bef "Adaptec AHA-7862 SCSI" -pci9004,7078 pci9004,7078 msd pci adp.bef "Adaptec AIC-7870 SCSI" -pci9004,7178 pci9004,7178 msd pci adp.bef "Adaptec AHA-2940/2940W SCSI" -pci9004,7278 pci9004,7278 msd pci adp.bef "Adaptec AHA-3940/3940W SCSI" -pci9004,7478 pci9004,7478 msd pci adp.bef "Adaptec AHA-2944W Differential SCSI" -pci9004,7578 pci9004,7578 msd pci adp.bef "Adaptec AHA-7875 SCSI" -pci9004,8078 pci9004,8078 msd pci adp.bef "Adaptec AIC-7880 UltraSCSI" -pci9004,8178 pci9004,8178 msd pci adp.bef "Adaptec AHA-2940U/2940UW UltraSCSI" -pci9004,8278 pci9004,8278 msd pci adp.bef "Adaptec AHA-7882 UltraSCSI" -pci9004,8478 pci9004,8478 msd pci adp.bef "Adaptec AHA-7884 SCSI" -pci9004,8578 pci9004,8578 msd pci adp.bef "Adaptec AHA-7885 SCSI" -pci9004,7860 pci9004,7860 msd pci adp.bef "Adaptec AHA-2940W/2940UW Rev B Ultra SCSI Adapter" -pci9004,7880 pci9004,7880 msd pci adp.bef "Adaptec AHA-2940W/2940UW Rev B Ultra SCSI Adapter" -pci9004,7881 pci9004,7881 msd pci adp.bef "Adaptec AHA-2940W/2940UW Rev B Ultra SCSI Adapter" -pci9004,7891 pci9004,7891 msd pci adp.bef "Adaptec AHA-2940W/2940UW Dual Ultra SCSI Adapter" -pci9004,7892 pci9004,7892 msd pci adp.bef "Adaptec AHA-3940AUW Dual-channel Ultra/Wide SCSI Adapter" -pci9004,7895 pci9004,7895 msd pci adp.bef "Adaptec AIC-7895 Ultra SCSI Controller" -pci9005,a180 pci9005,a180 msd pci cadp.bef "Adaptec AHA-2940U2W Ultra-II SCSI Controller" -pci9005,e100 pci9005,e100 msd pci cadp.bef "Adaptec AHA-2950U2B Ultra-II SCSI Controller" -pci9005,f500 pci9005,f500 msd pci cadp.bef "Adaptec AHA-3950U2B Dual Ultra-II SCSI Controller" -pci9005,5f pci9005,5f msd pci cadp.bef "Adaptec AIC-7896 SCSI" -pci9005,1f pci9005,1f msd pci cadp.bef "Adaptec AIC-7890AB SCSI Controller" -pci9005,a100 pci9005,a100 msd pci cadp.bef "Adaptec AHA-2940u2b Scsi Controller" -pci9005,2180 pci9005,2180 msd pci cadp.bef "Adaptec AHA-2940u2-OEM Scsi Controller" diff --git a/usr/src/uts/intel/sys/acpica.h b/usr/src/uts/intel/sys/acpica.h index e15ccc78a7..6f5ba8e01b 100644 --- a/usr/src/uts/intel/sys/acpica.h +++ b/usr/src/uts/intel/sys/acpica.h @@ -32,6 +32,10 @@ #ifndef _SYS_ACPICA_H #define _SYS_ACPICA_H +#include <sys/ddi.h> +#include <sys/sunddi.h> +#include <sys/acpi/acpi.h> + #ifdef __cplusplus extern "C" { #endif @@ -138,32 +142,22 @@ typedef struct iflag { #define ACPI_DEVCFG_PCI 0x8 /* - * master_ops.c + * isapnp_devs.c */ typedef struct device_id { struct device_id *next; char *id; } device_id_t; -typedef struct property { - struct property *next; - char *name; - char *value; -} property_t; - -typedef struct master_rec { - struct master_rec *next; - device_id_t *device_ids; - char *name; - char *description; - property_t *properties; -} master_rec_t; - -extern const master_rec_t *master_file_lookup(device_id_t *); -extern device_id_t *mf_alloc_device_id(void); -extern void mf_free_device_id(device_id_t *); -extern void process_master_file(void); -extern void free_master_data(void); +typedef struct isapnp_desc { + const char *ipnp_id; /* device ID */ + boolean_t ipnp_prefix; /* prefix match? */ + const char *ipnp_name; /* dev tree name */ + const char *ipnp_compat; /* dev tree compatible */ + const char *ipnp_model; /* dev tree model */ +} isapnp_desc_t; + +extern const isapnp_desc_t *isapnp_desc_lookup(const device_id_t *); /* * Function prototypes |