~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/include/asm/sgi/ioc.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  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 aligned 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 uart;
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) & 0x1e) >> 1)
142 #define SGIOC_SYSID_CHIPREV(x)  (((x) & 0xe0) >> 5)
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 threshold */
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
201 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php