diff options
author | 2013-08-12 08:03:56 +0000 | |
---|---|---|
committer | 2013-08-12 08:03:56 +0000 | |
commit | 5704e7bd2896175fb2a96912efa67e8918da49ae (patch) | |
tree | 6827be6261feff66e503d60526ddbbf66f22bb73 | |
parent | In the common IPv4 and IPv6 file ip_carp.c an #ifdef INET6 was (diff) | |
download | wireguard-openbsd-5704e7bd2896175fb2a96912efa67e8918da49ae.tar.xz wireguard-openbsd-5704e7bd2896175fb2a96912efa67e8918da49ae.zip |
Match the framebuffer device against its OpenFirmware node in order
to share the console detection logic with sparc64 in radeondrm(4).
ok miod@
-rw-r--r-- | sys/arch/macppc/macppc/ofw_machdep.c | 18 | ||||
-rw-r--r-- | sys/arch/macppc/pci/vgafb.c | 10 | ||||
-rw-r--r-- | sys/arch/macppc/pci/vgafb_pci.c | 34 | ||||
-rw-r--r-- | sys/arch/macppc/pci/vgafb_pcivar.h | 4 | ||||
-rw-r--r-- | sys/arch/macppc/pci/vgafbvar.h | 3 |
5 files changed, 32 insertions, 37 deletions
diff --git a/sys/arch/macppc/macppc/ofw_machdep.c b/sys/arch/macppc/macppc/ofw_machdep.c index bd879bbd9a0..ab1883f284b 100644 --- a/sys/arch/macppc/macppc/ofw_machdep.c +++ b/sys/arch/macppc/macppc/ofw_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ofw_machdep.c,v 1.38 2013/08/07 07:29:19 mpi Exp $ */ +/* $OpenBSD: ofw_machdep.c,v 1.39 2013/08/12 08:03:56 mpi Exp $ */ /* $NetBSD: ofw_machdep.c,v 1.1 1996/09/30 16:34:50 ws Exp $ */ /* @@ -184,7 +184,6 @@ save_ofw_mapping() return 0; } -#include <dev/pci/pcivar.h> #include <arch/macppc/pci/vgafb_pcivar.h> struct ppc_bus_space ppc_membus; @@ -195,6 +194,7 @@ int cons_display_ofh; u_int32_t cons_addr; int cons_brightness; int cons_backlight_available; +int fbnode; #include "vgafb_pci.h" @@ -358,7 +358,6 @@ of_display_console() char name[32]; int len; int stdout_node; - int display_node; int err; stdout_node = OF_instance_to_package(OF_stdout); @@ -389,15 +388,15 @@ of_display_console() ofw_find_keyboard(); - display_node = stdout_node; + fbnode = stdout_node; len = OF_getprop(stdout_node, "assigned-addresses", addr, sizeof(addr)); if (len == -1) { - display_node = OF_parent(stdout_node); - len = OF_getprop(display_node, "name", name, 20); + fbnode = OF_parent(stdout_node); + len = OF_getprop(fbnode, "name", name, 20); name[len] = 0; printf("using parent %s:", name); - len = OF_getprop(display_node, "assigned-addresses", + len = OF_getprop(fbnode, "assigned-addresses", addr, sizeof(addr)); if (len < sizeof(addr[0])) { panic(": no address"); @@ -407,11 +406,6 @@ of_display_console() if (OF_getnodebyname(0, "backlight") != 0) cons_backlight_available = 1; - vgafb_pci_console_tag = PCITAG_CREATE(display_node, - OFW_PCI_PHYS_HI_BUS(addr[1].phys_hi), - OFW_PCI_PHYS_HI_DEVICE(addr[1].phys_hi), - OFW_PCI_PHYS_HI_FUNCTION(addr[1].phys_hi)); - #if 1 printf(": memaddr %x size %x, ", addr[0].phys_lo, addr[0].size_lo); printf(": consaddr %x, ", cons_addr); diff --git a/sys/arch/macppc/pci/vgafb.c b/sys/arch/macppc/pci/vgafb.c index 91d3cb8bc74..19523be8b0a 100644 --- a/sys/arch/macppc/pci/vgafb.c +++ b/sys/arch/macppc/pci/vgafb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vgafb.c,v 1.48 2013/07/06 18:08:47 mpi Exp $ */ +/* $OpenBSD: vgafb.c,v 1.49 2013/08/12 08:03:56 mpi Exp $ */ /* $NetBSD: vga.c,v 1.3 1996/12/02 22:24:54 cgd Exp $ */ /* @@ -298,6 +298,14 @@ vgafb_mmap(void *v, off_t off, int prot) } int +vgafb_is_console(int node) +{ + extern int fbnode; + + return (fbnode == node); +} + +int vgafb_cnattach(bus_space_tag_t iot, bus_space_tag_t memt, int type, int check) { struct vga_config *vc = &vgafbcn; diff --git a/sys/arch/macppc/pci/vgafb_pci.c b/sys/arch/macppc/pci/vgafb_pci.c index a1994ee5815..a32a9d21080 100644 --- a/sys/arch/macppc/pci/vgafb_pci.c +++ b/sys/arch/macppc/pci/vgafb_pci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vgafb_pci.c,v 1.31 2013/06/04 02:26:36 mpi Exp $ */ +/* $OpenBSD: vgafb_pci.c,v 1.32 2013/08/12 08:03:56 mpi Exp $ */ /* $NetBSD: vga_pci.c,v 1.4 1996/12/05 01:39:38 cgd Exp $ */ /* @@ -62,7 +62,6 @@ const struct cfattach vgafb_pci_ca = { sizeof(struct vga_pci_softc), vgafb_pci_match, vgafb_pci_attach, }; -pcitag_t vgafb_pci_console_tag; struct vga_config vgafbcn; void @@ -140,6 +139,7 @@ int vgafb_pci_match(struct device *parent, void *match, void *aux) { struct pci_attach_args *pa = aux; + int node; if (DEVICE_IS_VGA_PCI(pa->pa_class) == 0) { /* @@ -151,23 +151,15 @@ vgafb_pci_match(struct device *parent, void *match, void *aux) return (0); } - /* If it's the console, we have a winner! */ - if (!bcmp(&pa->pa_tag, &vgafb_pci_console_tag, sizeof(pa->pa_tag))) { - return (1); - } - -#ifdef DEBUG_VGAFB - { - int i; - pci_chipset_tag_t pc = pa->pa_pc; - for (i = 0x10; i < 0x24; i+=4) { - printf("vgafb confread %x %x\n", - i, pci_conf_read(pc, pa->pa_tag, i)); - } - } -#endif + /* + * XXX Non-console devices do not get configured by the PROM, + * XXX so do not attach them yet. + */ + node = PCITAG_NODE(pa->pa_tag); + if (!vgafb_is_console(node)) + return (0); - return (0); + return (1); } void @@ -178,15 +170,17 @@ vgafb_pci_attach(struct device *parent, struct device *self, void *aux) struct vga_config *vc; u_int32_t memaddr, memsize; u_int32_t mmioaddr, mmiosize; - int console; + int console, node; pcireg_t reg; + node = PCITAG_NODE(pa->pa_tag); + vga_pci_bar_init(sc, pa); vgafb_pci_mem_init(sc, &memaddr, &memsize, &mmioaddr, &mmiosize); - console = (!bcmp(&pa->pa_tag, &vgafb_pci_console_tag, sizeof(pa->pa_tag))); + console = vgafb_is_console(node); if (console) { vc = sc->sc_vc = &vgafbcn; diff --git a/sys/arch/macppc/pci/vgafb_pcivar.h b/sys/arch/macppc/pci/vgafb_pcivar.h index b21b0fcaa46..d2f47cc18c9 100644 --- a/sys/arch/macppc/pci/vgafb_pcivar.h +++ b/sys/arch/macppc/pci/vgafb_pcivar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: vgafb_pcivar.h,v 1.7 2012/12/13 13:55:18 mpi Exp $ */ +/* $OpenBSD: vgafb_pcivar.h,v 1.8 2013/08/12 08:03:56 mpi Exp $ */ /* $NetBSD: vga_pcivar.h,v 1.1 1996/11/19 04:38:36 cgd Exp $ */ /* @@ -28,7 +28,5 @@ * rights to redistribute these changes. */ -extern pcitag_t vgafb_pci_console_tag; - /* XXX */ int vgafb_cnattach(bus_space_tag_t, bus_space_tag_t, int, int); diff --git a/sys/arch/macppc/pci/vgafbvar.h b/sys/arch/macppc/pci/vgafbvar.h index a49396cb977..c5816575d0f 100644 --- a/sys/arch/macppc/pci/vgafbvar.h +++ b/sys/arch/macppc/pci/vgafbvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: vgafbvar.h,v 1.19 2013/06/04 02:29:32 mpi Exp $ */ +/* $OpenBSD: vgafbvar.h,v 1.20 2013/08/12 08:03:56 mpi Exp $ */ /* $NetBSD: vgavar.h,v 1.2 1996/11/23 06:06:43 cgd Exp $ */ /* @@ -53,6 +53,7 @@ struct vga_config { }; int vgafb_cnattach(bus_space_tag_t, bus_space_tag_t, int, int); +int vgafb_is_console(int); void vgafb_init(bus_space_tag_t, bus_space_tag_t, struct vga_config *, u_int32_t, size_t); |