Module Name: src Committed By: macallan Date: Thu Sep 24 17:56:59 UTC 2015
Modified Files: src/sys/arch/sgimips/mace: pci_mace.c Log Message: on mips64 we can use the whole PCI space, not just the two 32MB windows accessible via KSEG* To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/sgimips/mace/pci_mace.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sgimips/mace/pci_mace.c diff -u src/sys/arch/sgimips/mace/pci_mace.c:1.18 src/sys/arch/sgimips/mace/pci_mace.c:1.19 --- src/sys/arch/sgimips/mace/pci_mace.c:1.18 Wed Feb 18 16:47:59 2015 +++ src/sys/arch/sgimips/mace/pci_mace.c Thu Sep 24 17:56:59 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_mace.c,v 1.18 2015/02/18 16:47:59 macallan Exp $ */ +/* $NetBSD: pci_mace.c,v 1.19 2015/09/24 17:56:59 macallan Exp $ */ /* * Copyright (c) 2001,2003 Christopher Sekiya @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pci_mace.c,v 1.18 2015/02/18 16:47:59 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_mace.c,v 1.19 2015/09/24 17:56:59 macallan Exp $"); #include "opt_pci.h" #include "pci.h" @@ -65,6 +65,11 @@ __KERNEL_RCSID(0, "$NetBSD: pci_mace.c,v #include <sgimips/mace/pcireg_mace.h> +#ifndef __mips_o32 +#define USE_HIGH_PCI +#endif + + struct macepci_softc { struct sgimips_pci_chipset sc_pc; }; @@ -156,15 +161,23 @@ macepci_attach(device_t parent, device_t bus_space_write_4(pc->iot, pc->ioh, MACEPCI_CONTROL, control); #if NPCI > 0 +#ifdef USE_HIGH_PCI + pc->pc_ioext = extent_create("macepciio", 0x00001000, 0x01ffffff, + NULL, 0, EX_NOWAIT); + pc->pc_memext = extent_create("macepcimem", 0x80000000, 0xffffffff, + NULL, 0, EX_NOWAIT); +#else pc->pc_ioext = extent_create("macepciio", 0x00001000, 0x01ffffff, NULL, 0, EX_NOWAIT); + /* XXX no idea why we limit ourselves to only half of the 32MB window */ pc->pc_memext = extent_create("macepcimem", 0x80100000, 0x81ffffff, NULL, 0, EX_NOWAIT); +#endif /* USE_HIGH_PCI */ pci_configure_bus(pc, pc->pc_ioext, pc->pc_memext, NULL, 0, mips_cache_info.mci_dcache_align); memset(&pba, 0, sizeof pba); -/*XXX*/ pba.pba_iot = mace_pci_iot; -/*XXX*/ pba.pba_memt = mace_pci_memt; + pba.pba_iot = mace_pci_iot; + pba.pba_memt = mace_pci_memt; pba.pba_dmat = &pci_bus_dma_tag; pba.pba_dmat64 = NULL; pba.pba_bus = 0; @@ -209,9 +222,6 @@ macepci_conf_read(pci_chipset_tag_t pc, void macepci_conf_write(pci_chipset_tag_t pc, pcitag_t tag, int reg, pcireg_t data) { - /* XXX O2 soren */ - if (tag == 0) - return; bus_space_write_4(pc->iot, pc->ioh, MACE_PCI_CONFIG_ADDR, (tag | reg)); bus_space_write_4(pc->iot, pc->ioh, MACE_PCI_CONFIG_DATA, data); @@ -377,7 +387,7 @@ macepci_intr(void *arg) */ #define CHIP_W1_BUS_START(v) 0x80000000UL #define CHIP_W1_BUS_END(v) 0xffffffffUL -#ifdef _LP64 +#ifdef USE_HIGH_PCI #define CHIP_W1_SYS_START(v) MACE_PCI_HI_MEMORY #define CHIP_W1_SYS_END(v) MACE_PCI_HI_MEMORY + 0x7fffffffUL #else @@ -402,7 +412,7 @@ macepci_intr(void *arg) #define CHIP_MEM /* defined */ #define CHIP_W1_BUS_START(v) 0x00000000UL #define CHIP_W1_BUS_END(v) 0xffffffffUL -#ifdef _LP64 +#ifdef USE_HIGH_PCI #define CHIP_W1_SYS_START(v) MACE_PCI_HI_IO #define CHIP_W1_SYS_END(v) MACE_PCI_HI_IO + 0xffffffffUL #else