Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/nathanw_sa]: src/sys/arch/algor/algor Use the other DMA window (with pre...
details: https://anonhg.NetBSD.org/src/rev/3b18b24c5d82
branches: nathanw_sa
changeset: 504800:3b18b24c5d82
user: thorpej <thorpej%NetBSD.org@localhost>
date: Fri Jun 22 05:57:27 2001 +0000
description:
Use the other DMA window (with prefetch enabled) on the P-4032
on-board Ethernet. Suggested by Nigel Stephens <nigel%algor.co.uk@localhost>.
diffstat:
sys/arch/algor/algor/algor_p4032_dma.c | 105 ++++++++++++++++++++++++++++
sys/arch/algor/algor/algor_p4032reg.h | 121 +++++++++++++++++++++++++++++++++
sys/arch/algor/algor/algor_p4032var.h | 85 +++++++++++++++++++++++
3 files changed, 311 insertions(+), 0 deletions(-)
diffs (truncated from 323 to 300 lines):
diff -r bbe126a2bfc4 -r 3b18b24c5d82 sys/arch/algor/algor/algor_p4032_dma.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/algor/algor/algor_p4032_dma.c Fri Jun 22 05:57:27 2001 +0000
@@ -0,0 +1,105 @@
+/* $NetBSD: algor_p4032_dma.c,v 1.3.8.2 2001/06/22 05:57:27 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Platform-specific DMA support for the Algorithmics P-4032.
+ */
+
+#include <sys/param.h>
+
+#define _ALGOR_BUS_DMA_PRIVATE
+#include <machine/bus.h>
+
+#include <algor/algor/algor_p4032reg.h>
+#include <algor/algor/algor_p4032var.h>
+
+#include <algor/pci/vtpbcvar.h>
+
+void
+algor_p4032_dma_init(struct p4032_config *acp)
+{
+ bus_dma_tag_t t;
+
+ /*
+ * Initialize the DMA tag used for PCI DMA.
+ */
+ t = &acp->ac_pci_dmat;
+ t->_cookie = acp;
+ t->_wbase = vtpbc_configuration.vt_dma_winbase;
+ t->_physbase = P4032_DMA_PCI_PHYSBASE;
+ t->_wsize = P4032_DMA_PCI_SIZE;
+ t->_dmamap_create = _bus_dmamap_create;
+ t->_dmamap_destroy = _bus_dmamap_destroy;
+ t->_dmamap_load = _bus_dmamap_load;
+ t->_dmamap_load_mbuf = _bus_dmamap_load_mbuf;
+ t->_dmamap_load_uio = _bus_dmamap_load_uio;
+ t->_dmamap_load_raw = _bus_dmamap_load_raw;
+ t->_dmamap_unload = _bus_dmamap_unload;
+ t->_dmamap_sync = _bus_dmamap_sync;
+
+ t->_dmamem_alloc = _bus_dmamem_alloc;
+ t->_dmamem_free = _bus_dmamem_free;
+ t->_dmamem_map = _bus_dmamem_map;
+ t->_dmamem_unmap = _bus_dmamem_unmap;
+ t->_dmamem_mmap = _bus_dmamem_mmap;
+
+ /*
+ * Initialize the DMA tag used for PCI on-board Ethernet DMA.
+ * This window has pre-fetching enabled (hooray for broken
+ * PCI bus controllers).
+ */
+ t = &acp->ac_pci_pf_dmat;
+ t->_cookie = acp;
+ t->_wbase = P4032_DMA_PCI_PF_PCIBASE;
+ t->_physbase = P4032_DMA_PCI_PHYSBASE;
+ t->_wsize = P4032_DMA_PCI_SIZE;
+ t->_dmamap_create = _bus_dmamap_create;
+ t->_dmamap_destroy = _bus_dmamap_destroy;
+ t->_dmamap_load = _bus_dmamap_load;
+ t->_dmamap_load_mbuf = _bus_dmamap_load_mbuf;
+ t->_dmamap_load_uio = _bus_dmamap_load_uio;
+ t->_dmamap_load_raw = _bus_dmamap_load_raw;
+ t->_dmamap_unload = _bus_dmamap_unload;
+ t->_dmamap_sync = _bus_dmamap_sync;
+
+ t->_dmamem_alloc = _bus_dmamem_alloc;
+ t->_dmamem_free = _bus_dmamem_free;
+ t->_dmamem_map = _bus_dmamem_map;
+ t->_dmamem_unmap = _bus_dmamem_unmap;
+ t->_dmamem_mmap = _bus_dmamem_mmap;
+}
diff -r bbe126a2bfc4 -r 3b18b24c5d82 sys/arch/algor/algor/algor_p4032reg.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/algor/algor/algor_p4032reg.h Fri Jun 22 05:57:27 2001 +0000
@@ -0,0 +1,121 @@
+/* $NetBSD: algor_p4032reg.h,v 1.2.8.2 2001/06/22 05:57:27 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Memory map and register definitions for the Algorithmics P-4032.
+ */
+
+#define P4032_MEMORY 0x00000000UL /* onbord DRAM memory */
+ /* 256 MB */
+#define P4032_ISAMEM 0x10000000UL /* ISA window of PCI memory */
+ /* 8MB */
+#define P4032_PCIMEM 0x11000000UL /* PCI memory window */
+ /* 112MB */
+#define P4032_PCIIO 0x1ed00000UL /* PCI I/O window */
+ /* 1MB */
+#define P4032_PCICFG 0x1ee00000UL /* PCI config space */
+ /* 1MB */
+#define P4032_V962PBC 0x1ef00000UL /* V962PBC PCI controller */
+ /* 64KB */
+#define P4032_CFGBOOT_W 0x1fc00000UL /* configured bootstrap (W) */
+ /* 1MB or 512KB */
+#define P4032_SOCKET_W 0x1fd00000UL /* socket EPROM (W) */
+ /* 512KB */
+#define P4032_FLASH_W 0x1fe00000UL /* flash (W) */
+ /* 1MB */
+#define P4032_RTC 0x1ff00000UL /* RTC */
+#define P4032_PCKBC 0x1ff10000UL /* keyboard controller */
+#define P4032_LED 0x1ff20010UL /* LED display (4reg) */
+#define P4032_LCD 0x1ff30000UL /* LCD display */
+#define P4032_GPIO 0x1ff40000UL /* General purpose I/O */
+#define P4032_FDC 0x1ff807c0UL /* floppy controller */
+#define P4032_GAME 0x1ff80800UL /* game port (unused) */
+#define P4032_COM2 0x1ff80be0UL /* COM2 */
+#define P4032_LPT 0x1ff80de0UL /* parallel port */
+#define P4032_COM1 0x1ff80fe0UL /* COM1 */
+#define P4032_IRR0 0x1ff90000UL /* interrupt req. 0 */
+#define P4032_IRR1 0x1ff90004UL /* interrupt req. 1 */
+#define P4032_IRR2 0x1ff90008UL /* interrupt req. 2 */
+#define P4032_XBAR0 0x1ff9000cUL /* interrupt crossbar 0 */
+#define P4032_XBAR1 0x1ff90010UL /* interrupt crossbar 1 */
+#define P4032_XBAR2 0x1ff90014UL /* interrupt crossbar 2 */
+#define P4032_VERSION 0x1ff9001cUL /* board version */
+#define P4032_FLOPPY_DMA_ACK 0x1ffa0fd4UL /* floppy "DMA ACK" */
+#define P4032_BOARD_CONFIG 0x1ffb0000UL /* board configuration */
+#define P4032_DRAM_CONFIG 0x1ffc0000UL /* DRAM configuration */
+#define P4032_OPTION 0x1ffd0000UL /* option register */
+#define P4032_PCIMEM_HI 0x20000000UL /* PCI memory high window */
+ /* 3.5GB */
+
+/* IRR0 (8-bit devices) */
+#define IRR0_PCICTLR 0x01 /* PCI controller */
+#define IRR0_FLOPPY 0x02 /* floppy controller */
+#define IRR0_PCKBC 0x04 /* keyboard controller */
+#define IRR0_COM1 0x08 /* COM1 */
+#define IRR0_COM2 0x10 /* COM2 */
+#define IRR0_LPT 0x20 /* centronics */
+#define IRR0_GPIO 0x40 /* general purpose I/O */
+#define IRR0_RTC 0x80 /* real-time clock */
+
+/* IRR1 (error/clear) */
+#define IRR1_DEBUG 0x01 /* debug switch */
+#define IRR1_POWERFAIL 0x02 /* power fail */
+#define IRR1_BUSERR 0x04 /* bus error */
+#define IRR1_LPT_ACK 0x20 /* centronics interrupt ack. */
+
+/* IRR2 (PCI) */
+#define IRR2_FLOPPY_DMA 0x08 /* floppy DMA request */
+#define IRR2_PCIIRQ0 0x10 /* PCIIRQ 0 */
+#define IRR2_PCIIRQ1 0x20 /* PCIIRQ 1 */
+#define IRR2_PCIIRQ2 0x40 /* PCIIRQ 2 */
+#define IRR2_PCIIRQ3 0x80 /* PCIIRQ 3 */
+
+/*
+ * The Algorithmics PMON initializes two DMA windows:
+ *
+ * PCI 8000.0000 -> Phys 0000.0000 (256MB)
+ * PCI c000.0000 -> Phys 0000.0000 (256MB)
+ *
+ * The latter has prefetching enabled, the former disabled, on
+ * V962 < rev B2, which have broken DMA FIFOs. The latter is
+ * given to the on-board Ethernet.
+ */
+#define P4032_DMA_PCI_PCIBASE 0x80000000UL
+#define P4032_DMA_PCI_PF_PCIBASE 0xc0000000UL
+#define P4032_DMA_PCI_PHYSBASE 0x00000000UL
+#define P4032_DMA_PCI_SIZE (256 * 1024 * 1024)
diff -r bbe126a2bfc4 -r 3b18b24c5d82 sys/arch/algor/algor/algor_p4032var.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/algor/algor/algor_p4032var.h Fri Jun 22 05:57:27 2001 +0000
@@ -0,0 +1,85 @@
+/* $NetBSD: algor_p4032var.h,v 1.4.8.2 2001/06/22 05:57:28 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <machine/bus.h>
+#include <dev/pci/pcivar.h>
+
+struct p4032_config {
+ struct algor_bus_space ac_lociot;
+ struct algor_bus_space ac_iot;
+ struct algor_bus_space ac_memt;
+
+ struct algor_bus_dma_tag ac_pci_dmat;
+ struct algor_bus_dma_tag ac_pci_pf_dmat;
+
+ struct algor_pci_chipset ac_pc;
+
+ struct extent *ac_io_ex;
+ struct extent *ac_mem_ex;
+
+ int ac_mallocsafe;
+};
+
+#ifdef _KERNEL
+/*
+ * These are indexes into the interrupt mapping table for the
+ * on-board devices.
+ */
Home |
Main Index |
Thread Index |
Old Index