1 1.12 thorpej /* $NetBSD: dwlpxvar.h,v 1.12 2023/12/04 00:32:10 thorpej Exp $ */ 2 1.1 cgd 3 1.1 cgd /* 4 1.2 cgd * Copyright (c) 1997 by Matthew Jacob 5 1.1 cgd * NASA AMES Research Center. 6 1.1 cgd * All rights reserved. 7 1.1 cgd * 8 1.1 cgd * Redistribution and use in source and binary forms, with or without 9 1.1 cgd * modification, are permitted provided that the following conditions 10 1.1 cgd * are met: 11 1.1 cgd * 1. Redistributions of source code must retain the above copyright 12 1.1 cgd * notice immediately at the beginning of the file, without modification, 13 1.1 cgd * this list of conditions, and the following disclaimer. 14 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright 15 1.1 cgd * notice, this list of conditions and the following disclaimer in the 16 1.1 cgd * documentation and/or other materials provided with the distribution. 17 1.1 cgd * 3. The name of the author may not be used to endorse or promote products 18 1.1 cgd * derived from this software without specific prior written permission. 19 1.1 cgd * 20 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 21 1.1 cgd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 1.1 cgd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 1.1 cgd * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 24 1.1 cgd * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 1.1 cgd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 1.1 cgd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 1.1 cgd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 1.1 cgd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 1.1 cgd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 1.1 cgd * SUCH DAMAGE. 31 1.1 cgd */ 32 1.1 cgd 33 1.12 thorpej #include <sys/extent.h> 34 1.12 thorpej #include <sys/vmem_impl.h> 35 1.12 thorpej 36 1.1 cgd #include <dev/pci/pcivar.h> 37 1.1 cgd 38 1.4 thorpej #include <alpha/pci/pci_sgmap_pte32.h> 39 1.4 thorpej 40 1.12 thorpej #define DWLPX_IO_NBTS VMEM_EST_BTCOUNT(2, 8) 41 1.12 thorpej #define DWLPX_D_MEM_NBTS VMEM_EST_BTCOUNT(1, 8) 42 1.12 thorpej #define DWLPX_S_MEM_NBTS VMEM_EST_BTCOUNT(2, 8) 43 1.1 cgd 44 1.1 cgd /* 45 1.1 cgd * DWLPX configuration. 46 1.1 cgd */ 47 1.1 cgd struct dwlpx_config { 48 1.1 cgd int cc_initted; 49 1.5 thorpej struct alpha_bus_space cc_iot; 50 1.5 thorpej struct alpha_bus_space cc_memt; 51 1.12 thorpej vmem_t * cc_io_arena; 52 1.12 thorpej vmem_t * cc_d_mem_arena; 53 1.12 thorpej vmem_t * cc_s_mem_arena; 54 1.1 cgd struct alpha_pci_chipset cc_pc; 55 1.1 cgd struct dwlpx_softc * cc_sc; /* back pointer */ 56 1.12 thorpej struct vmem cc_io_arena_store; 57 1.12 thorpej struct vmem cc_d_mem_arena_store; 58 1.12 thorpej struct vmem cc_s_mem_arena_store; 59 1.12 thorpej struct vmem_btag cc_io_btag_store[DWLPX_IO_NBTS]; 60 1.12 thorpej struct vmem_btag cc_d_mem_btag_store[DWLPX_D_MEM_NBTS]; 61 1.12 thorpej struct vmem_btag cc_s_mem_btag_store[DWLPX_S_MEM_NBTS]; 62 1.1 cgd unsigned long cc_sysbase; /* shorthand */ 63 1.4 thorpej struct alpha_bus_dma_tag cc_dmat_direct; 64 1.4 thorpej struct alpha_bus_dma_tag cc_dmat_sgmap; 65 1.4 thorpej struct alpha_sgmap cc_sgmap; 66 1.1 cgd }; 67 1.1 cgd 68 1.1 cgd struct dwlpx_softc { 69 1.10 matt device_t dwlpx_dev; 70 1.1 cgd struct dwlpx_config dwlpx_cc; /* config info */ 71 1.11 matt uint16_t dwlpx_dtype; /* Node Type */ 72 1.11 matt uint8_t dwlpx_node; /* TurboLaser Node */ 73 1.11 matt uint8_t dwlpx_hosenum; /* Hose Number */ 74 1.11 matt uint8_t dwlpx_nhpc; /* # of hpcs */ 75 1.11 matt uint8_t dwlpx_sgmapsz; /* size of SGMAP */ 76 1.1 cgd }; 77 1.6 mjacob #define DWLPX_NONE 0 78 1.6 mjacob #define DWLPX_SG32K 1 79 1.6 mjacob #define DWLPX_SG64K 2 80 1.6 mjacob #define DWLPX_SG128K 3 81 1.1 cgd 82 1.9 dsl void dwlpx_init(struct dwlpx_softc *); 83 1.9 dsl void dwlpx_pci_init(pci_chipset_tag_t, void *); 84 1.9 dsl void dwlpx_dma_init(struct dwlpx_config *); 85 1.1 cgd 86 1.9 dsl void dwlpx_bus_io_init(bus_space_tag_t, void *); 87 1.9 dsl void dwlpx_bus_mem_init(bus_space_tag_t, void *); 88 1.1 cgd 89 1.6 mjacob /* 90 1.1 cgd * Each DWLPX supports up to 15 devices, 12 of which are PCI slots. 91 1.1 cgd * 92 1.1 cgd * Since the STD I/O modules in slots 12-14 are really a PCI-EISA 93 1.1 cgd * bridge, we'll punt on those for the moment. 94 1.1 cgd */ 95 1.1 cgd #define DWLPX_MAXDEV 12 96 1.6 mjacob 97 1.6 mjacob #define DWLPX_NIONODE 5 98 1.6 mjacob #define DWLPX_NHOSE 4 99 1.1 cgd 100 1.1 cgd /* 101 1.1 cgd * Default values to put into DWLPX IMASK register(s) 102 1.1 cgd */ 103 1.1 cgd #define DWLPX_IMASK_DFLT \ 104 1.1 cgd (1 << 24) | /* IPL 17 for error interrupts */ \ 105 1.1 cgd (1 << 17) | /* IPL 14 for device interrupts */ \ 106 1.1 cgd (1 << 16) /* Enable Error Interrupts */ 107