0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __ASM_JAZZ_H
0009 #define __ASM_JAZZ_H
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #define JAZZ_LOCAL_IO_SPACE 0xe0000000
0020
0021
0022
0023
0024
0025
0026
0027
0028 #define PICA_ASIC_REVISION 0xe0000008
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 #define PICA_LED 0xe000f000
0046
0047
0048
0049
0050
0051
0052
0053
0054 #define LED_DOT 0x01
0055 #define LED_SPACE 0x00
0056 #define LED_0 0xfc
0057 #define LED_1 0x60
0058 #define LED_2 0xda
0059 #define LED_3 0xf2
0060 #define LED_4 0x66
0061 #define LED_5 0xb6
0062 #define LED_6 0xbe
0063 #define LED_7 0xe0
0064 #define LED_8 0xfe
0065 #define LED_9 0xf6
0066 #define LED_A 0xee
0067 #define LED_b 0x3e
0068 #define LED_C 0x9c
0069 #define LED_d 0x7a
0070 #define LED_E 0x9e
0071 #define LED_F 0x8e
0072
0073 #ifndef __ASSEMBLY__
0074
0075 static __inline__ void pica_set_led(unsigned int bits)
0076 {
0077 volatile unsigned int *led_register = (unsigned int *) PICA_LED;
0078
0079 *led_register = bits;
0080 }
0081
0082 #endif
0083
0084
0085
0086
0087 #define JAZZ_ETHERNET_BASE 0xe0001000
0088
0089
0090
0091
0092 #define JAZZ_SCSI_BASE 0xe0002000
0093
0094
0095
0096
0097
0098
0099 #define JAZZ_KEYBOARD_ADDRESS 0xe0005000
0100 #define JAZZ_KEYBOARD_DATA 0xe0005000
0101 #define JAZZ_KEYBOARD_COMMAND 0xe0005001
0102
0103 #ifndef __ASSEMBLY__
0104
0105 typedef struct {
0106 unsigned char data;
0107 unsigned char command;
0108 } jazz_keyboard_hardware;
0109
0110 #define jazz_kh ((keyboard_hardware *) JAZZ_KEYBOARD_ADDRESS)
0111
0112 typedef struct {
0113 unsigned char pad0[3];
0114 unsigned char data;
0115 unsigned char pad1[3];
0116 unsigned char command;
0117 } mips_keyboard_hardware;
0118
0119
0120
0121
0122 #define keyboard_hardware jazz_keyboard_hardware
0123
0124 #endif
0125
0126
0127
0128
0129 #define MIPS_KEYBOARD_ADDRESS 0xb9005000
0130 #define MIPS_KEYBOARD_DATA 0xb9005003
0131 #define MIPS_KEYBOARD_COMMAND 0xb9005007
0132
0133
0134
0135
0136 #define JAZZ_SERIAL1_BASE (unsigned int)0xe0006000
0137 #define JAZZ_SERIAL2_BASE (unsigned int)0xe0007000
0138 #define JAZZ_PARALLEL_BASE (unsigned int)0xe0008000
0139
0140
0141
0142
0143 #define JAZZ_DUMMY_DEVICE 0xe000d000
0144
0145
0146
0147
0148
0149
0150
0151 #define JAZZ_TIMER_INTERVAL 0xe0000228
0152 #define JAZZ_TIMER_REGISTER 0xe0000230
0153
0154
0155
0156
0157 #ifndef __ASSEMBLY__
0158 #ifdef __MIPSEL__
0159 typedef struct {
0160 unsigned int bank2 : 3;
0161 unsigned int bank1 : 3;
0162 unsigned int mem_bus_width : 1;
0163 unsigned int reserved2 : 1;
0164 unsigned int page_mode : 1;
0165 unsigned int reserved1 : 23;
0166 } dram_configuration;
0167 #else
0168 typedef struct {
0169 unsigned int reserved1 : 23;
0170 unsigned int page_mode : 1;
0171 unsigned int reserved2 : 1;
0172 unsigned int mem_bus_width : 1;
0173 unsigned int bank1 : 3;
0174 unsigned int bank2 : 3;
0175 } dram_configuration;
0176 #endif
0177 #endif
0178
0179 #define PICA_DRAM_CONFIG 0xe00fffe0
0180
0181
0182
0183
0184 #define JAZZ_IO_IRQ_SOURCE 0xe0010000
0185 #define JAZZ_IO_IRQ_ENABLE 0xe0010002
0186
0187
0188
0189
0190
0191
0192
0193 #define JAZZ_IRQ_START 24
0194 #define JAZZ_IRQ_END (24 + 9)
0195 #define JAZZ_PARALLEL_IRQ (JAZZ_IRQ_START + 0)
0196 #define JAZZ_FLOPPY_IRQ (JAZZ_IRQ_START + 1)
0197 #define JAZZ_SOUND_IRQ (JAZZ_IRQ_START + 2)
0198 #define JAZZ_VIDEO_IRQ (JAZZ_IRQ_START + 3)
0199 #define JAZZ_ETHERNET_IRQ (JAZZ_IRQ_START + 4)
0200 #define JAZZ_SCSI_IRQ (JAZZ_IRQ_START + 5)
0201 #define JAZZ_KEYBOARD_IRQ (JAZZ_IRQ_START + 6)
0202 #define JAZZ_MOUSE_IRQ (JAZZ_IRQ_START + 7)
0203 #define JAZZ_SERIAL1_IRQ (JAZZ_IRQ_START + 8)
0204 #define JAZZ_SERIAL2_IRQ (JAZZ_IRQ_START + 9)
0205
0206 #define JAZZ_TIMER_IRQ (MIPS_CPU_IRQ_BASE+6)
0207
0208
0209
0210
0211
0212
0213
0214 #define JAZZ_SCSI_DMA 0
0215 #define JAZZ_FLOPPY_DMA 1
0216 #define JAZZ_AUDIOL_DMA 2
0217 #define JAZZ_AUDIOR_DMA 3
0218
0219
0220
0221
0222
0223 #define JAZZ_R4030_CONFIG 0xE0000000
0224 #define JAZZ_R4030_REVISION 0xE0000008
0225 #define JAZZ_R4030_INV_ADDR 0xE0000010
0226
0227 #define JAZZ_R4030_TRSTBL_BASE 0xE0000018
0228 #define JAZZ_R4030_TRSTBL_LIM 0xE0000020
0229 #define JAZZ_R4030_TRSTBL_INV 0xE0000028
0230
0231 #define JAZZ_R4030_CACHE_MTNC 0xE0000030
0232 #define JAZZ_R4030_R_FAIL_ADDR 0xE0000038
0233 #define JAZZ_R4030_M_FAIL_ADDR 0xE0000040
0234
0235 #define JAZZ_R4030_CACHE_PTAG 0xE0000048
0236 #define JAZZ_R4030_CACHE_LTAG 0xE0000050
0237 #define JAZZ_R4030_CACHE_BMASK 0xE0000058
0238 #define JAZZ_R4030_CACHE_BWIN 0xE0000060
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248 #define JAZZ_R4030_REM_SPEED 0xE0000070
0249
0250 #define JAZZ_R4030_IRQ_ENABLE 0xE00000E8
0251 #define JAZZ_R4030_INVAL_ADDR 0xE0000010
0252 #define JAZZ_R4030_IRQ_SOURCE 0xE0000200
0253 #define JAZZ_R4030_I386_ERROR 0xE0000208
0254
0255
0256
0257
0258 #define JAZZ_EISA_IRQ_ACK 0xE0000238
0259
0260
0261
0262
0263 #ifndef __ASSEMBLY__
0264
0265 static inline void r4030_delay(void)
0266 {
0267 __asm__ __volatile__(
0268 ".set\tnoreorder\n\t"
0269 "nop\n\t"
0270 "nop\n\t"
0271 "nop\n\t"
0272 "nop\n\t"
0273 ".set\treorder");
0274 }
0275
0276 static inline unsigned short r4030_read_reg16(unsigned long addr)
0277 {
0278 unsigned short ret = *((volatile unsigned short *)addr);
0279 r4030_delay();
0280 return ret;
0281 }
0282
0283 static inline unsigned int r4030_read_reg32(unsigned long addr)
0284 {
0285 unsigned int ret = *((volatile unsigned int *)addr);
0286 r4030_delay();
0287 return ret;
0288 }
0289
0290 static inline void r4030_write_reg16(unsigned long addr, unsigned val)
0291 {
0292 *((volatile unsigned short *)addr) = val;
0293 r4030_delay();
0294 }
0295
0296 static inline void r4030_write_reg32(unsigned long addr, unsigned val)
0297 {
0298 *((volatile unsigned int *)addr) = val;
0299 r4030_delay();
0300 }
0301
0302 #endif
0303
0304 #define JAZZ_FDC_BASE 0xe0003000
0305 #define JAZZ_RTC_BASE 0xe0004000
0306 #define JAZZ_PORT_BASE 0xe2000000
0307
0308 #define JAZZ_EISA_BASE 0xe3000000
0309
0310 #endif