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