OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips/] [sgi/] [ioc.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
 * This file is subject to the terms and conditions of the GNU General Public
3
 * License. See the file "COPYING" in the main directory of this archive
4
 * for more details.
5
 *
6
 * ioc.h: Definitions for SGI I/O Controller
7
 *
8
 * Copyright (C) 1996 David S. Miller
9
 * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle
10
 * Copyright (C) 2001, 2003 Ladislav Michl
11
 */
12
 
13
#ifndef _SGI_IOC_H
14
#define _SGI_IOC_H
15
 
16
#include <linux/types.h>
17
#include <asm/sgi/pi1.h>
18
 
19
/*
20
 * All registers are 8-bit wide alligned on 32-bit boundary. Bad things
21
 * happen if you try word access them. You have been warned.
22
 */
23
 
24
struct sgioc_uart_regs {
25
        u8 _ctrl1[3];
26
        volatile u8 ctrl1;
27
        u8 _data1[3];
28
        volatile u8 data1;
29
        u8 _ctrl2[3];
30
        volatile u8 ctrl2;
31
        u8 _data2[3];
32
        volatile u8 data2;
33
};
34
 
35
struct sgioc_keyb_regs {
36
        u8 _data[3];
37
        volatile u8 data;
38
        u8 _command[3];
39
        volatile u8 command;
40
};
41
 
42
struct sgint_regs {
43
        u8 _istat0[3];
44
        volatile u8 istat0;             /* Interrupt status zero */
45
#define SGINT_ISTAT0_FFULL      0x01
46
#define SGINT_ISTAT0_SCSI0      0x02
47
#define SGINT_ISTAT0_SCSI1      0x04
48
#define SGINT_ISTAT0_ENET       0x08
49
#define SGINT_ISTAT0_GFXDMA     0x10
50
#define SGINT_ISTAT0_PPORT      0x20
51
#define SGINT_ISTAT0_HPC2       0x40
52
#define SGINT_ISTAT0_LIO2       0x80
53
        u8 _imask0[3];
54
        volatile u8 imask0;             /* Interrupt mask zero */
55
        u8 _istat1[3];
56
        volatile u8 istat1;             /* Interrupt status one */
57
#define SGINT_ISTAT1_ISDNI      0x01
58
#define SGINT_ISTAT1_PWR        0x02
59
#define SGINT_ISTAT1_ISDNH      0x04
60
#define SGINT_ISTAT1_LIO3       0x08
61
#define SGINT_ISTAT1_HPC3       0x10
62
#define SGINT_ISTAT1_AFAIL      0x20
63
#define SGINT_ISTAT1_VIDEO      0x40
64
#define SGINT_ISTAT1_GIO2       0x80
65
        u8 _imask1[3];
66
        volatile u8 imask1;             /* Interrupt mask one */
67
        u8 _vmeistat[3];
68
        volatile u8 vmeistat;           /* VME interrupt status */
69
        u8 _cmeimask0[3];
70
        volatile u8 cmeimask0;          /* VME interrupt mask zero */
71
        u8 _cmeimask1[3];
72
        volatile u8 cmeimask1;          /* VME interrupt mask one */
73
        u8 _cmepol[3];
74
        volatile u8 cmepol;             /* VME polarity */
75
        u8 _tclear[3];
76
        volatile u8 tclear;
77
        u8 _errstat[3];
78
        volatile u8 errstat;    /* Error status reg, reserved on INT2 */
79
        u32 _unused0[2];
80
        u8 _tcnt0[3];
81
        volatile u8 tcnt0;              /* counter 0 */
82
        u8 _tcnt1[3];
83
        volatile u8 tcnt1;              /* counter 1 */
84
        u8 _tcnt2[3];
85
        volatile u8 tcnt2;              /* counter 2 */
86
        u8 _tcword[3];
87
        volatile u8 tcword;             /* control word */
88
#define SGINT_TCWORD_BCD        0x01    /* Use BCD mode for counters */
89
#define SGINT_TCWORD_MMASK      0x0e    /* Mode bitmask. */
90
#define SGINT_TCWORD_MITC       0x00    /* IRQ on terminal count (doesn't work) */
91
#define SGINT_TCWORD_MOS        0x02    /* One-shot IRQ mode. */
92
#define SGINT_TCWORD_MRGEN      0x04    /* Normal rate generation */
93
#define SGINT_TCWORD_MSWGEN     0x06    /* Square wave generator mode */
94
#define SGINT_TCWORD_MSWST      0x08    /* Software strobe */
95
#define SGINT_TCWORD_MHWST      0x0a    /* Hardware strobe */
96
#define SGINT_TCWORD_CMASK      0x30    /* Command mask */
97
#define SGINT_TCWORD_CLAT       0x00    /* Latch command */
98
#define SGINT_TCWORD_CLSB       0x10    /* LSB read/write */
99
#define SGINT_TCWORD_CMSB       0x20    /* MSB read/write */
100
#define SGINT_TCWORD_CALL       0x30    /* Full counter read/write */
101
#define SGINT_TCWORD_CNT0       0x00    /* Select counter zero */
102
#define SGINT_TCWORD_CNT1       0x40    /* Select counter one */
103
#define SGINT_TCWORD_CNT2       0x80    /* Select counter two */
104
#define SGINT_TCWORD_CRBCK      0xc0    /* Readback command */
105
};
106
 
107
/*
108
 * The timer is the good old 8254.  Unlike in PCs it's clocked at exactly 1MHz
109
 */
110
#define SGINT_TIMER_CLOCK       1000000
111
 
112
/*
113
 * This is the constant we're using for calibrating the counter.
114
 */
115
#define SGINT_TCSAMP_COUNTER    ((SGINT_TIMER_CLOCK / HZ) + 255)
116
 
117
/* We need software copies of these because they are write only. */
118
extern u8 sgi_ioc_reset, sgi_ioc_write;
119
 
120
struct sgioc_regs {
121
        struct pi1_regs pport;
122
        u32 _unused0[2];
123
        struct sgioc_uart_regs serport;
124
        struct sgioc_keyb_regs kbdmouse;
125
        u8 _gcsel[3];
126
        volatile u8 gcsel;
127
        u8 _genctrl[3];
128
        volatile u8 genctrl;
129
        u8 _panel[3];
130
        volatile u8 panel;
131
#define SGIOC_PANEL_POWERON     0x01
132
#define SGIOC_PANEL_POWERINTR   0x02
133
#define SGIOC_PANEL_VOLDNINTR   0x10
134
#define SGIOC_PANEL_VOLDNHOLD   0x20
135
#define SGIOC_PANEL_VOLUPINTR   0x40
136
#define SGIOC_PANEL_VOLUPHOLD   0x80
137
        u32 _unused1;
138
        u8 _sysid[3];
139
        volatile u8 sysid;
140
#define SGIOC_SYSID_FULLHOUSE   0x01
141
#define SGIOC_SYSID_BOARDREV(x) ((x & 0xe0) > 5) 
142
#define SGIOC_SYSID_CHIPREV(x)  ((x & 0x1e) > 1)
143
        u32 _unused2;
144
        u8 _read[3];
145
        volatile u8 read;
146
        u32 _unused3;
147
        u8 _dmasel[3];
148
        volatile u8 dmasel;
149
#define SGIOC_DMASEL_SCLK10MHZ  0x00    /* use 10MHZ serial clock */
150
#define SGIOC_DMASEL_ISDNB      0x01    /* enable isdn B */
151
#define SGIOC_DMASEL_ISDNA      0x02    /* enable isdn A */
152
#define SGIOC_DMASEL_PPORT      0x04    /* use parallel DMA */
153
#define SGIOC_DMASEL_SCLK667MHZ 0x10    /* use 6.67MHZ serial clock */
154
#define SGIOC_DMASEL_SCLKEXT    0x20    /* use external serial clock */
155
        u32 _unused4;
156
        u8 _reset[3];
157
        volatile u8 reset;
158
#define SGIOC_RESET_PPORT       0x01    /* 0=parport reset, 1=nornal */
159
#define SGIOC_RESET_KBDMOUSE    0x02    /* 0=kbdmouse reset, 1=normal */
160
#define SGIOC_RESET_EISA        0x04    /* 0=eisa reset, 1=normal */
161
#define SGIOC_RESET_ISDN        0x08    /* 0=isdn reset, 1=normal */
162
#define SGIOC_RESET_LC0OFF      0x10    /* guiness: turn led off (red, else green) */
163
#define SGIOC_RESET_LC1OFF      0x20    /* guiness: turn led off (green, else amber) */
164
        u32 _unused5;
165
        u8 _write[3];
166
        volatile u8 write;
167
#define SGIOC_WRITE_NTHRESH     0x01    /* use 4.5db threshhold */
168
#define SGIOC_WRITE_TPSPEED     0x02    /* use 100ohm TP speed */
169
#define SGIOC_WRITE_EPSEL       0x04    /* force cable mode: 1=AUI 0=TP */
170
#define SGIOC_WRITE_EASEL       0x08    /* 1=autoselect 0=manual cable selection */
171
#define SGIOC_WRITE_U1AMODE     0x10    /* 1=PC 0=MAC UART mode */
172
#define SGIOC_WRITE_U0AMODE     0x20    /* 1=PC 0=MAC UART mode */
173
#define SGIOC_WRITE_MLO         0x40    /* 1=4.75V 0=+5V */
174
#define SGIOC_WRITE_MHI         0x80    /* 1=5.25V 0=+5V */
175
        u32 _unused6;
176
        struct sgint_regs int3;
177
        u32 _unused7[16];
178
        volatile u32 extio;             /* FullHouse only */
179
#define EXTIO_S0_IRQ_3          0x8000  /* S0: vid.vsync */
180
#define EXTIO_S0_IRQ_2          0x4000  /* S0: gfx.fifofull */
181
#define EXTIO_S0_IRQ_1          0x2000  /* S0: gfx.int */
182
#define EXTIO_S0_RETRACE        0x1000
183
#define EXTIO_SG_IRQ_3          0x0800  /* SG: vid.vsync */
184
#define EXTIO_SG_IRQ_2          0x0400  /* SG: gfx.fifofull */
185
#define EXTIO_SG_IRQ_1          0x0200  /* SG: gfx.int */
186
#define EXTIO_SG_RETRACE        0x0100
187
#define EXTIO_GIO_33MHZ         0x0080
188
#define EXTIO_EISA_BUSERR       0x0040
189
#define EXTIO_MC_BUSERR         0x0020
190
#define EXTIO_HPC3_BUSERR       0x0010
191
#define EXTIO_S0_STAT_1         0x0008
192
#define EXTIO_S0_STAT_0         0x0004
193
#define EXTIO_SG_STAT_1         0x0002
194
#define EXTIO_SG_STAT_0         0x0001
195
};
196
 
197
extern struct sgioc_regs *sgioc;
198
extern struct sgint_regs *sgint;
199
 
200
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.