]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/mips/malta/maltareg.h
ident(1): Normalizing date format
[FreeBSD/FreeBSD.git] / sys / mips / malta / maltareg.h
1 /*      $NetBSD: maltareg.h,v 1.1 2002/03/07 14:44:04 simonb Exp $      */
2
3 /*-
4  * SPDX-License-Identifier: BSD-4-Clause
5  *
6  * Copyright 2002 Wasabi Systems, Inc.
7  * All rights reserved.
8  *
9  * Written by Simon Burge for Wasabi Systems, Inc.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. All advertising materials mentioning features or use of this software
20  *    must display the following acknowledgement:
21  *      This product includes software developed for the NetBSD Project by
22  *      Wasabi Systems, Inc.
23  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
24  *    or promote products derived from this software without specific prior
25  *    written permission.
26  *
27  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
28  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
31  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37  * POSSIBILITY OF SUCH DAMAGE.
38  *
39  * $FreeBSD$
40  */
41
42 /*
43         Memory Map
44
45         0000.0000 *     128MB   Typically SDRAM (on Core Board)
46         0800.0000 *     256MB   Typically PCI
47         1800.0000 *      62MB   Typically PCI
48         1be0.0000 *       2MB   Typically System controller's internal registers
49         1c00.0000 *      32MB   Typically not used
50         1e00.0000         4MB   Monitor Flash
51         1e40.0000        12MB   reserved
52         1f00.0000        12MB   Switches
53                                 LEDs
54                                 ASCII display
55                                 Soft reset
56                                 FPGA revision number
57                                 CBUS UART (tty2)
58                                 General Purpose I/O
59                                 I2C controller
60         1f10.0000 *      11MB   Typically System Controller specific
61         1fc0.0000         4MB   Maps to Monitor Flash
62         1fd0.0000 *       3MB   Typically System Controller specific
63
64                   * depends on implementation of the Core Board and of software
65  */
66
67 /*
68         CPU interrupts
69
70                 NMI     South Bridge or NMI button
71                  0      South Bridge INTR
72                  1      South Bridge SMI
73                  2      CBUS UART (tty2)
74                  3      COREHI (Core Card)
75                  4      CORELO (Core Card)
76                  5      Not used, driven inactive (typically CPU internal timer interrupt
77
78         IRQ mapping (as used by YAMON)
79
80                 0       Timer           South Bridge
81                 1       Keyboard        SuperIO
82                 2                       Reserved by South Bridge (for cascading)
83                 3       UART (tty1)     SuperIO
84                 4       UART (tty0)     SuperIO
85                 5                       Not used
86                 6       Floppy Disk     SuperIO
87                 7       Parallel Port   SuperIO
88                 8       Real Time Clock South Bridge
89                 9       I2C bus         South Bridge
90                 10      PCI A,B,eth     PCI slot 1..4, Ethernet
91                 11      PCI C,audio     PCI slot 1..4, Audio, USB (South Bridge)
92                         PCI D,USB
93                 12      Mouse           SuperIO
94                 13                      Reserved by South Bridge
95                 14      Primary IDE     Primary IDE slot
96                 15      Secondary IDE   Secondary IDE slot/Compact flash connector
97  */
98
99 #define MALTA_SYSTEMRAM_BASE    0x00000000ul  /* System RAM:    */
100 #define MALTA_SYSTEMRAM_SIZE    0x08000000  /*   128 MByte      */
101
102 #define MALTA_PCIMEM1_BASE      0x08000000ul  /* PCI 1 memory:  */
103 #define MALTA_PCIMEM1_SIZE      0x08000000  /*   128 MByte      */
104
105 #define MALTA_PCIMEM2_BASE      0x10000000ul  /* PCI 2 memory:  */
106 #define MALTA_PCIMEM2_SIZE      0x08000000  /*   128 MByte      */
107
108 #define MALTA_PCIMEM3_BASE      0x18000000ul  /* PCI 3 memory   */
109 #define MALTA_PCIMEM3_SIZE      0x03e00000  /*    62 MByte      */
110
111 #define MALTA_CORECTRL_BASE     0x1be00000ul  /* Core control:  */
112 #define MALTA_CORECTRL_SIZE     0x00200000  /*     2 MByte      */
113
114 #define MALTA_RESERVED_BASE1    0x1c000000ul  /* Reserved:      */
115 #define MALTA_RESERVED_SIZE1    0x02000000  /*    32 MByte      */
116
117 #define MALTA_MONITORFLASH_BASE 0x1e000000ul  /* Monitor Flash: */
118 #define MALTA_MONITORFLASH_SIZE 0x003e0000  /*     4 MByte      */
119 #define MALTA_MONITORFLASH_SECTORSIZE 0x00010000 /* Sect. = 64 KB */
120
121 #define MALTA_FILEFLASH_BASE    0x1e3e0000ul /* File Flash (for monitor): */
122 #define MALTA_FILEFLASH_SIZE    0x00020000 /*   128 KByte       */
123
124 #define MALTA_FILEFLASH_SECTORSIZE 0x00010000 /* Sect. = 64 KB  */
125
126 #define MALTA_RESERVED_BASE2    0x1e400000ul  /* Reserved:      */
127 #define MALTA_RESERVED_SIZE2    0x00c00000  /*    12 MByte      */
128
129 #define MALTA_FPGA_BASE         0x1f000000ul  /* FPGA:          */
130 #define MALTA_FPGA_SIZE         0x00c00000  /*    12 MByte      */
131
132 #define MALTA_NMISTATUS         (MALTA_FPGA_BASE + 0x24)
133 #define  MALTA_NMI_SB            0x2    /* Pending NMI from the South Bridge */
134 #define  MALTA_NMI_ONNMI         0x1    /* Pending NMI from the ON/NMI push button */
135
136 #define MALTA_NMIACK            (MALTA_FPGA_BASE + 0x104)
137 #define  MALTA_NMIACK_ONNMI      0x1    /* Write 1 to acknowledge ON/NMI */
138
139 #define MALTA_SWITCH            (MALTA_FPGA_BASE + 0x200)
140 #define  MALTA_SWITCH_MASK       0xff   /* settings of DIP switch S2 */
141
142 #define MALTA_STATUS            (MALTA_FPGA_BASE + 0x208)
143 #define  MALTA_ST_MFWR           0x10   /* Monitor Flash is write protected (JP1) */
144 #define  MALTA_S54               0x08   /* switch S5-4 - set YAMON factory default mode */
145 #define  MALTA_S53               0x04   /* switch S5-3 */
146 #define  MALTA_BIGEND            0x02   /* switch S5-2 - big endian mode */
147
148 #define MALTA_JMPRS             (MALTA_FPGA_BASE + 0x210)
149 #define  MALTA_JMPRS_PCICLK      0x1c   /* PCI clock frequency */
150 #define  MALTA_JMPRS_EELOCK      0x02   /* I2C EEPROM is write protected */
151
152 #define MALTA_LEDBAR            (MALTA_FPGA_BASE + 0x408)
153 #define MALTA_ASCIIWORD         (MALTA_FPGA_BASE + 0x410)
154 #define MALTA_ASCII_BASE        (MALTA_FPGA_BASE + 0x418)
155 #define MALTA_ASCIIPOS0         0x00
156 #define MALTA_ASCIIPOS1         0x08
157 #define MALTA_ASCIIPOS2         0x10
158 #define MALTA_ASCIIPOS3         0x18
159 #define MALTA_ASCIIPOS4         0x20
160 #define MALTA_ASCIIPOS5         0x28
161 #define MALTA_ASCIIPOS6         0x30
162 #define MALTA_ASCIIPOS7         0x38
163
164 #define MALTA_SOFTRES           (MALTA_FPGA_BASE + 0x500)
165 #define  MALTA_GORESET           0x42   /* write this to MALTA_SOFTRES for board reset */
166
167 /*
168  * BRKRES is the number of milliseconds before a "break" on tty will
169  * trigger a reset.  A value of 0 will disable the reset.
170  */
171 #define MALTA_BRKRES            (MALTA_FPGA_BASE + 0x508)
172 #define  MALTA_BRKRES_MASK       0xff
173
174 #define MALTA_CBUSUART          (MALTA_FPGA_BASE + 0x900)
175 /* 16C550C UART, 8 bit registers on 8 byte boundaries */
176 /* RXTX    0x00 */
177 /* INTEN   0x08 */
178 /* IIFIFO  0x10 */
179 /* LCTRL   0x18 */
180 /* MCTRL   0x20 */
181 /* LSTAT   0x28 */
182 /* MSTAT   0x30 */
183 /* SCRATCH 0x38 */
184 #define MALTA_CBUSUART_INTR     2
185
186 #define MALTA_GPIO_BASE         (MALTA_FPGA_BASE + 0xa00)
187 #define MALTA_GPOUT             0x0
188 #define MALTA_GPINP             0x8
189
190 #define MALTA_I2C_BASE          (MALTA_FPGA_BASE + 0xb00)
191 #define MALTA_I2CINP            0x00
192 #define MALTA_I2COE             0x08
193 #define MALTA_I2COUT            0x10
194 #define MALTA_I2CSEL            0x18
195
196 #define MALTA_BOOTROM_BASE      0x1fc00000ul  /* Boot ROM:      */
197 #define MALTA_BOOTROM_SIZE      0x00400000  /*     4 MByte      */
198
199 #define MALTA_REVISION          0x1fc00010ul
200 #define  MALTA_REV_FPGRV         0xff0000       /* CBUS FPGA revision */
201 #define  MALTA_REV_CORID         0x00fc00       /* Core Board ID */
202 #define  MALTA_REV_CORRV         0x000300       /* Core Board Revision */
203 #define  MALTA_REV_PROID         0x0000f0       /* Product ID */
204 #define  MALTA_REV_PRORV         0x00000f       /* Product Revision */
205
206 /* PCI definitions */
207 #define MALTA_SOUTHBRIDGE_INTR     0
208
209 #define MALTA_PCI0_IO_BASE         MALTA_PCIMEM3_BASE
210 #define MALTA_PCI0_ADDR( addr )    (MALTA_PCI0_IO_BASE + (addr))
211
212 #define MALTA_RTCADR               0x70 // MALTA_PCI_IO_ADDR8(0x70)
213 #define MALTA_RTCDAT               0x71 // MALTA_PCI_IO_ADDR8(0x71)
214
215 #define MALTA_SMSC_COM1_ADR        0x3f8
216 #define MALTA_SMSC_COM2_ADR        0x2f8
217 #define MALTA_UART0ADR             MALTA_PCI0_ADDR(MALTA_SMSC_COM1_ADR)
218 #define MALTA_UART1ADR             MALTA_SMSC_COM2_ADR // MALTA_PCI0_ADDR(MALTA_SMSC_COM2_ADR)
219
220 #define MALTA_SMSC_1284_ADR        0x378
221 #define MALTA_1284ADR              MALTA_SMSC_1284_ADR // MALTA_PCI0_ADDR(MALTA_SMSC_1284_ADR)
222
223 #define MALTA_SMSC_FDD_ADR         0x3f0
224 #define MALTA_FDDADR               MALTA_SMSC_FDD_ADR // MALTA_PCI0_ADDR(MALTA_SMSC_FDD_ADR)
225
226 #define MALTA_SMSC_KYBD_ADR        0x60  /* Fixed 0x60, 0x64 */
227 #define MALTA_KYBDADR              MALTA_SMSC_KYBD_ADR // MALTA_PCI0_ADDR(MALTA_SMSC_KYBD_ADR)
228 #define MALTA_SMSC_MOUSE_ADR       MALTA_SMSC_KYBD_ADR
229 #define MALTA_MOUSEADR             MALTA_KYBDADR
230
231 #define MALTA_DMA_PCI_PCIBASE   0x00000000UL
232 #define MALTA_DMA_PCI_PHYSBASE  0x00000000UL
233 #define MALTA_DMA_PCI_SIZE      (256 * 1024 * 1024)
234
235 #define MALTA_DMA_ISA_PCIBASE   0x00800000UL
236 #define MALTA_DMA_ISA_PHYSBASE  0x00000000UL
237 #define MALTA_DMA_ISA_SIZE      (8 * 1024 * 1024)
238
239 #ifndef _LOCORE
240 void    led_bar(uint8_t);
241 void    led_display_word(uint32_t);
242 void    led_display_str(const char *);
243 void    led_display_char(int, uint8_t);
244 #endif