diff options
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/sparc64/dev/ifb.c | 42 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/ifb_ident.c | 20 |
2 files changed, 17 insertions, 45 deletions
diff --git a/sys/arch/sparc64/dev/ifb.c b/sys/arch/sparc64/dev/ifb.c index 554b70fbeaf..64b50550afa 100644 --- a/sys/arch/sparc64/dev/ifb.c +++ b/sys/arch/sparc64/dev/ifb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ifb.c,v 1.16 2009/01/21 17:01:31 miod Exp $ */ +/* $OpenBSD: ifb.c,v 1.17 2009/06/27 22:43:41 miod Exp $ */ /* * Copyright (c) 2007, 2008, 2009 Miodrag Vallat. @@ -48,7 +48,6 @@ #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> -#include <dev/pci/pcidevs.h> #include <dev/wscons/wsconsio.h> #include <dev/wscons/wsdisplayvar.h> @@ -316,7 +315,7 @@ struct cfdriver ifb_cd = { NULL, "ifb", DV_DULL }; -int ifb_accel_identify(struct pci_attach_args *); +int ifb_accel_identify(const char *); static inline u_int ifb_dac_value(u_int, u_int, u_int); int ifb_getcmap(struct ifb_softc *, struct wsdisplay_cmap *); @@ -367,7 +366,7 @@ ifbattach(struct device *parent, struct device *self, void *aux) struct rasops_info *ri; uint32_t dev_comm; int node, console; - char *text; + char *name, *text; sc->sc_mem_t = paa->pa_memt; sc->sc_pcitag = paa->pa_tag; @@ -393,7 +392,7 @@ ifbattach(struct device *parent, struct device *self, void *aux) * Describe the beast. */ - text = getpropstring(node, "name"); + name = text = getpropstring(node, "name"); if (strncmp(text, "SUNW,", 5) == 0) text += 5; printf("%s: %s", self->dv_xname, text); @@ -445,7 +444,7 @@ ifbattach(struct device *parent, struct device *self, void *aux) * Find out what flavour of ifb we are... */ - sc->sc_acceltype = ifb_accel_identify(paa); + sc->sc_acceltype = ifb_accel_identify(name); switch (sc->sc_acceltype) { case IFB_ACCEL_IFB: @@ -527,36 +526,17 @@ ifbattach(struct device *parent, struct device *self, void *aux) * proper acceleration information. */ int -ifb_accel_identify(struct pci_attach_args *pa) +ifb_accel_identify(const char *name) { - uint32_t subid; - - subid = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_SUBSYS_ID_REG); - - /* - * If we have an exact Expert3D match, or the subsystem id - * matches Expert3D or Expert3D-Lite, we have an IFB. - */ - - if (pa->pa_id == - PCI_ID_CODE(PCI_VENDOR_INTERGRAPH, PCI_PRODUCT_INTERGRAPH_EXPERT3D)) - return IFB_ACCEL_IFB; - if (subid == PCI_ID_CODE(PCI_VENDOR_INTERGRAPH, 0x108) || - subid == PCI_ID_CODE(PCI_VENDOR_INTERGRAPH, 0x140)) + if (strcmp(name, "SUNW,Expert3D") == 0 || + strcmp(name, "SUNW,Expert3D-Lite") == 0) return IFB_ACCEL_IFB; - /* - * If we have an exact 5110 match, or the subsystem id matches - * another set of magic values, we have a JFB. - */ - - if (pa->pa_id == - PCI_ID_CODE(PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_WILDCAT_5110)) - return IFB_ACCEL_JFB; - if (subid == PCI_ID_CODE(PCI_VENDOR_3DLABS, 0x1044) || - subid == PCI_ID_CODE(PCI_VENDOR_3DLABS, 0x1047)) + if (strcmp(name, "SUNW,XVR-1200") == 0) return IFB_ACCEL_JFB; + /* XVR-500 is bobcat, XVR-600 is xvr600 */ + return IFB_ACCEL_NONE; } diff --git a/sys/arch/sparc64/dev/ifb_ident.c b/sys/arch/sparc64/dev/ifb_ident.c index 745c00e4798..27791759d79 100644 --- a/sys/arch/sparc64/dev/ifb_ident.c +++ b/sys/arch/sparc64/dev/ifb_ident.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ifb_ident.c,v 1.1 2008/12/29 22:07:35 miod Exp $ */ +/* $OpenBSD: ifb_ident.c,v 1.2 2009/06/27 22:43:41 miod Exp $ */ /* * Copyright (c) 2007, 2008 Miodrag Vallat. @@ -30,20 +30,12 @@ #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> -#include <dev/pci/pcidevs.h> #include <dev/wscons/wsdisplayvar.h> #include <dev/rasops/rasops.h> #include <machine/fbvar.h> -static const struct pci_matchid ifb_devices[] = { - { PCI_VENDOR_INTERGRAPH, PCI_PRODUCT_INTERGRAPH_EXPERT3D }, - { PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_WILDCAT_6210 }, - { PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_WILDCAT_5110 },/* Sun XVR-500 */ - { PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_WILDCAT_7210 }, -}; - int ifb_ident(void *aux) { @@ -51,14 +43,14 @@ ifb_ident(void *aux) int node; char *name; - if (pci_matchbyid(paa, ifb_devices, - sizeof(ifb_devices) / sizeof(ifb_devices[0])) != 0) - return 1; - node = PCITAG_NODE(paa->pa_tag); name = getpropstring(node, "name"); + if (strcmp(name, "SUNW,Expert3D") == 0 || - strcmp(name, "SUNW,Expert3D-Lite") == 0) + strcmp(name, "SUNW,Expert3D-Lite") == 0 || + strcmp(name, "SUNW,XVR-500") == 0 || + strcmp(name, "SUNW,XVR-600") == 0 || + strcmp(name, "SUNW,XVR-1200") == 0) return 1; return 0; |