Annotation of sys/dev/pci/if_sisreg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: if_sisreg.h,v 1.27 2007/05/28 17:51:26 ckuethe Exp $ */
2: /*
3: * Copyright (c) 1997, 1998, 1999
4: * Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions
8: * are met:
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: * 2. Redistributions in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in the
13: * documentation and/or other materials provided with the distribution.
14: * 3. All advertising materials mentioning features or use of this software
15: * must display the following acknowledgement:
16: * This product includes software developed by Bill Paul.
17: * 4. Neither the name of the author nor the names of any co-contributors
18: * may be used to endorse or promote products derived from this software
19: * without specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24: * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
25: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31: * THE POSSIBILITY OF SUCH DAMAGE.
32: *
33: * $FreeBSD: src/sys/pci/if_sisreg.h,v 1.3 2000/08/22 23:26:51 wpaul Exp $
34: */
35:
36: /*
37: * Register definitions for the SiS 900 and SiS 7016 chipsets. The
38: * 7016 is actually an older chip and some of its registers differ
39: * from the 900, however the core operational registers are the same:
40: * the differences lie in the OnNow/Wake on LAN stuff which we don't
41: * use anyway. The 7016 needs an external MII compliant PHY while the
42: * SiS 900 has one built in. All registers are 32-bits wide.
43: */
44:
45: /* Registers common to SiS 900 and SiS 7016 */
46: #define SIS_CSR 0x00
47: #define SIS_CFG 0x04
48: #define SIS_EECTL 0x08
49: #define SIS_PCICTL 0x0C
50: #define SIS_ISR 0x10
51: #define SIS_IMR 0x14
52: #define SIS_IER 0x18
53: #define SIS_PHYCTL 0x1C
54: #define SIS_TX_LISTPTR 0x20
55: #define SIS_TX_CFG 0x24
56: #define SIS_RX_LISTPTR 0x30
57: #define SIS_RX_CFG 0x34
58: #define SIS_FLOWCTL 0x38
59: #define SIS_RXFILT_CTL 0x48
60: #define SIS_RXFILT_DATA 0x4C
61: #define SIS_PWRMAN_CTL 0xB0
62: #define SIS_PWERMAN_WKUP_EVENT 0xB4
63: #define SIS_WKUP_FRAME_CRC 0xBC
64: #define SIS_WKUP_FRAME_MASK0 0xC0
65: #define SIS_WKUP_FRAME_MASKXX 0xEC
66:
67: /* SiS 7016 specific registers */
68: #define SIS_SILICON_REV 0x5C
69: #define SIS_MIB_CTL0 0x60
70: #define SIS_MIB_CTL1 0x64
71: #define SIS_MIB_CTL2 0x68
72: #define SIS_MIB_CTL3 0x6C
73: #define SIS_MIB 0x80
74: #define SIS_LINKSTS 0xA0
75: #define SIS_TIMEUNIT 0xA4
76: #define SIS_GPIO 0xB8
77:
78: /* NS DP83815/6 registers */
79: #define NS_IHR 0x1C
80: #define NS_CLKRUN 0x3C
81: #define NS_SRR 0x58
82: #define NS_BMCR 0x80
83: #define NS_BMSR 0x84
84: #define NS_PHYIDR1 0x88
85: #define NS_PHYIDR2 0x8C
86: #define NS_ANAR 0x90
87: #define NS_ANLPAR 0x94
88: #define NS_ANER 0x98
89: #define NS_ANNPTR 0x9C
90:
91: #define NS_PHY_CR 0xE4
92: #define NS_PHY_10BTSCR 0xE8
93: #define NS_PHY_PAGE 0xCC
94: #define NS_PHY_EXTCFG 0xF0
95: #define NS_PHY_DSPCFG 0xF4
96: #define NS_PHY_SDCFG 0xF8
97: #define NS_PHY_TDATA 0xFC
98:
99: #define NS_CLKRUN_PMESTS 0x00008000
100: #define NS_CLKRUN_PMEENB 0x00000100
101: #define NS_CLNRUN_CLKRUN_ENB 0x00000001
102:
103: /* NS silicon revisions */
104: #define NS_SRR_15C 0x302
105: #define NS_SRR_15D 0x403
106: #define NS_SRR_16A 0x505
107:
108: #define SIS_CSR_TX_ENABLE 0x00000001
109: #define SIS_CSR_TX_DISABLE 0x00000002
110: #define SIS_CSR_RX_ENABLE 0x00000004
111: #define SIS_CSR_RX_DISABLE 0x00000008
112: #define SIS_CSR_TX_RESET 0x00000010
113: #define SIS_CSR_RX_RESET 0x00000020
114: #define SIS_CSR_SOFTINTR 0x00000080
115: #define SIS_CSR_RESET 0x00000100
116: #define SIS_CSR_RELOAD 0x00000400
117:
118: #define SIS_CFG_BIGENDIAN 0x00000001
119: #define SIS_CFG_PERR_DETECT 0x00000008
120: #define SIS_CFG_DEFER_DISABLE 0x00000010
121: #define SIS_CFG_OUTOFWIN_TIMER 0x00000020
122: #define SIS_CFG_SINGLE_BACKOFF 0x00000040
123: #define SIS_CFG_PCIREQ_ALG 0x00000080
124: #define SIS_CFG_FAIR_BACKOFF 0x00000200 /* 635 & 900B Specific */
125: #define SIS_CFG_RND_CNT 0x00000400 /* 635 & 900B Specific */
126: #define SIS_CFG_EDB_MASTER_EN 0x00002000
127:
128: #define SIS_EECTL_DIN 0x00000001
129: #define SIS_EECTL_DOUT 0x00000002
130: #define SIS_EECTL_CLK 0x00000004
131: #define SIS_EECTL_CSEL 0x00000008
132:
133: #define SIS96x_EECTL_GNT 0x00000100
134: #define SIS96x_EECTL_DONE 0x00000200
135: #define SIS96x_EECTL_REQ 0x00000400
136:
137: #define SIS_MII_CLK 0x00000040
138: #define SIS_MII_DIR 0x00000020
139: #define SIS_MII_DATA 0x00000010
140:
141: #define SIS_EECMD_WRITE 0x140
142: #define SIS_EECMD_READ 0x180
143: #define SIS_EECMD_ERASE 0x1c0
144:
145: #define SIS_EE_NODEADDR 0x8
146: #define NS_EE_NODEADDR 0x6
147:
148: #define SIS_PCICTL_SRAMADDR 0x0000001F
149: #define SIS_PCICTL_RAMTSTENB 0x00000020
150: #define SIS_PCICTL_TXTSTENB 0x00000040
151: #define SIS_PCICTL_RXTSTENB 0x00000080
152: #define SIS_PCICTL_BMTSTENB 0x00000200
153: #define SIS_PCICTL_RAMADDR 0x001F0000
154: #define SIS_PCICTL_ROMTIME 0x0F000000
155: #define SIS_PCICTL_DISCTEST 0x40000000
156:
157: #define SIS_ISR_RX_OK 0x00000001
158: #define SIS_ISR_RX_DESC_OK 0x00000002
159: #define SIS_ISR_RX_ERR 0x00000004
160: #define SIS_ISR_RX_EARLY 0x00000008
161: #define SIS_ISR_RX_IDLE 0x00000010
162: #define SIS_ISR_RX_OFLOW 0x00000020
163: #define SIS_ISR_TX_OK 0x00000040
164: #define SIS_ISR_TX_DESC_OK 0x00000080
165: #define SIS_ISR_TX_ERR 0x00000100
166: #define SIS_ISR_TX_IDLE 0x00000200
167: #define SIS_ISR_TX_UFLOW 0x00000400
168: #define SIS_ISR_SOFTINTR 0x00000800
169: #define SIS_ISR_HIBITS 0x00008000
170: #define SIS_ISR_RX_FIFO_OFLOW 0x00010000
171: #define SIS_ISR_TGT_ABRT 0x00100000
172: #define SIS_ISR_BM_ABRT 0x00200000
173: #define SIS_ISR_SYSERR 0x00400000
174: #define SIS_ISR_PARITY_ERR 0x00800000
175: #define SIS_ISR_RX_RESET_DONE 0x01000000
176: #define SIS_ISR_TX_RESET_DONE 0x02000000
177: #define SIS_ISR_TX_PAUSE_START 0x04000000
178: #define SIS_ISR_TX_PAUSE_DONE 0x08000000
179: #define SIS_ISR_WAKE_EVENT 0x10000000
180:
181: #define SIS_IMR_RX_OK 0x00000001
182: #define SIS_IMR_RX_DESC_OK 0x00000002
183: #define SIS_IMR_RX_ERR 0x00000004
184: #define SIS_IMR_RX_EARLY 0x00000008
185: #define SIS_IMR_RX_IDLE 0x00000010
186: #define SIS_IMR_RX_OFLOW 0x00000020
187: #define SIS_IMR_TX_OK 0x00000040
188: #define SIS_IMR_TX_DESC_OK 0x00000080
189: #define SIS_IMR_TX_ERR 0x00000100
190: #define SIS_IMR_TX_IDLE 0x00000200
191: #define SIS_IMR_TX_UFLOW 0x00000400
192: #define SIS_IMR_SOFTINTR 0x00000800
193: #define SIS_IMR_HIBITS 0x00008000
194: #define SIS_IMR_RX_FIFO_OFLOW 0x00010000
195: #define SIS_IMR_TGT_ABRT 0x00100000
196: #define SIS_IMR_BM_ABRT 0x00200000
197: #define SIS_IMR_SYSERR 0x00400000
198: #define SIS_IMR_PARITY_ERR 0x00800000
199: #define SIS_IMR_RX_RESET_DONE 0x01000000
200: #define SIS_IMR_TX_RESET_DONE 0x02000000
201: #define SIS_IMR_TX_PAUSE_START 0x04000000
202: #define SIS_IMR_TX_PAUSE_DONE 0x08000000
203: #define SIS_IMR_WAKE_EVENT 0x10000000
204:
205: #define SIS_INTRS \
206: (SIS_IMR_RX_OFLOW|SIS_IMR_TX_UFLOW|SIS_IMR_TX_OK|\
207: SIS_IMR_TX_IDLE|SIS_IMR_RX_OK|SIS_IMR_RX_ERR|\
208: SIS_IMR_RX_IDLE|\
209: SIS_IMR_SYSERR)
210:
211: /* Interrupt Holdoff Register */
212: #define NS_IHR_HOLDCTL 0x00000100
213:
214: /*
215: * Interrupt holdoff value for NS DP8316. We can have the chip
216: * delay interrupt delivery for a certain period. Units are in
217: * 100us - this sets the delay to 1ms holdoff.
218: */
219: #define NS_IHR_DELAY 10
220:
221: #define NS_IHR_VALUE (NS_IHR_HOLDCTL|NS_IHR_DELAY)
222:
223: #define SIS_IER_INTRENB 0x00000001
224:
225: #define SIS_PHYCTL_ACCESS 0x00000010
226: #define SIS_PHYCTL_OP 0x00000020
227: #define SIS_PHYCTL_REGADDR 0x000007C0
228: #define SIS_PHYCTL_PHYADDR 0x0000F800
229: #define SIS_PHYCTL_PHYDATA 0xFFFF0000
230:
231: #define SIS_PHYOP_READ 0x00000020
232: #define SIS_PHYOP_WRITE 0x00000000
233:
234: #define SIS_TXCFG_DRAIN_THRESH 0x0000003F /* 32-byte units */
235: #define SIS_TXCFG_FILL_THRESH 0x00003F00 /* 32-byte units */
236: #define SIS_TXCFG_MPII03D 0x00040000 /* "Must be 1" */
237: #define SIS_TXCFG_DMABURST 0x00700000
238: #define SIS_TXCFG_AUTOPAD 0x10000000
239: #define SIS_TXCFG_LOOPBK 0x20000000
240: #define SIS_TXCFG_IGN_HBEAT 0x40000000
241: #define SIS_TXCFG_IGN_CARR 0x80000000
242:
243: #define SIS_TXCFG_DRAIN(x) (((x) >> 5) & SIS_TXCFG_DRAIN_THRESH)
244: #define SIS_TXCFG_FILL(x) ((((x) >> 5) << 8) & SIS_TXCFG_FILL_THRESH)
245:
246: #define SIS_TXDMA_512BYTES 0x00000000
247: #define SIS_TXDMA_4BYTES 0x00100000
248: #define SIS_TXDMA_8BYTES 0x00200000
249: #define SIS_TXDMA_16BYTES 0x00300000
250: #define SIS_TXDMA_32BYTES 0x00400000
251: #define SIS_TXDMA_64BYTES 0x00500000
252: #define SIS_TXDMA_128BYTES 0x00600000
253: #define SIS_TXDMA_256BYTES 0x00700000
254:
255: #define SIS_TXCFG_100 \
256: (SIS_TXDMA_64BYTES|SIS_TXCFG_AUTOPAD|\
257: SIS_TXCFG_FILL(ETHER_MIN_LEN)|SIS_TXCFG_DRAIN(ETHER_MAX_DIX_LEN))
258:
259: #define SIS_TXCFG_10 \
260: (SIS_TXDMA_32BYTES|SIS_TXCFG_AUTOPAD|\
261: SIS_TXCFG_FILL(ETHER_MIN_LEN)|SIS_TXCFG_DRAIN(ETHER_MAX_DIX_LEN))
262:
263: #define SIS_RXCFG_DRAIN_THRESH 0x0000003E /* 8-byte units */
264: #define SIS_RXCFG_DMABURST 0x00700000
265: #define SIS_RXCFG_RX_JABBER 0x08000000
266: #define SIS_RXCFG_RX_TXPKTS 0x10000000
267: #define SIS_RXCFG_RX_RUNTS 0x40000000
268: #define SIS_RXCFG_RX_GIANTS 0x80000000
269:
270: #define SIS_RXCFG_DRAIN(x) ((((x) >> 3) << 1) & SIS_RXCFG_DRAIN_THRESH)
271:
272: #define SIS_RXDMA_512BYTES 0x00000000
273: #define SIS_RXDMA_4BYTES 0x00100000
274: #define SIS_RXDMA_8BYTES 0x00200000
275: #define SIS_RXDMA_16BYTES 0x00300000
276: #define SIS_RXDMA_32BYTES 0x00400000
277: #define SIS_RXDMA_64BYTES 0x00500000
278: #define SIS_RXDMA_128BYTES 0x00600000
279: #define SIS_RXDMA_256BYTES 0x00700000
280:
281: #define SIS_RXCFG256 \
282: (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_256BYTES)
283: #define SIS_RXCFG64 \
284: (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_64BYTES)
285:
286: #define SIS_RXFILTCTL_ADDR 0x000F0000
287: #define NS_RXFILTCTL_MCHASH 0x00200000
288: #define NS_RXFILTCTL_ARP 0x00400000
289: #define NS_RXFILTCTL_PERFECT 0x08000000
290: #define SIS_RXFILTCTL_ALLPHYS 0x10000000
291: #define SIS_RXFILTCTL_ALLMULTI 0x20000000
292: #define SIS_RXFILTCTL_BROAD 0x40000000
293: #define SIS_RXFILTCTL_ENABLE 0x80000000
294:
295: #define SIS_FILTADDR_PAR0 0x00000000
296: #define SIS_FILTADDR_PAR1 0x00010000
297: #define SIS_FILTADDR_PAR2 0x00020000
298: #define SIS_FILTADDR_MAR0 0x00040000
299: #define SIS_FILTADDR_MAR1 0x00050000
300: #define SIS_FILTADDR_MAR2 0x00060000
301: #define SIS_FILTADDR_MAR3 0x00070000
302: #define SIS_FILTADDR_MAR4 0x00080000
303: #define SIS_FILTADDR_MAR5 0x00090000
304: #define SIS_FILTADDR_MAR6 0x000A0000
305: #define SIS_FILTADDR_MAR7 0x000B0000
306:
307: #define NS_FILTADDR_PAR0 0x00000000
308: #define NS_FILTADDR_PAR1 0x00000002
309: #define NS_FILTADDR_PAR2 0x00000004
310:
311: #define NS_FILTADDR_FMEM_LO 0x00000200
312: #define NS_FILTADDR_FMEM_HI 0x000003FE
313:
314: /*
315: * DMA descriptor structures. The first part of the descriptor
316: * is the hardware descriptor format, which is just three longwords.
317: * After this, we include some additional structure members for
318: * use by the driver. Note that for this structure will be a different
319: * size on the alpha, but that's okay as long as it's a multiple of 4
320: * bytes in size.
321: */
322: struct sis_desc {
323: /* SiS hardware descriptor section */
324: u_int32_t sis_next;
325: u_int32_t sis_cmdsts;
326: #define sis_rxstat sis_cmdsts
327: #define sis_txstat sis_cmdsts
328: #define sis_ctl sis_cmdsts
329: u_int32_t sis_ptr;
330: /* Driver software section */
331: struct mbuf *sis_mbuf;
332: struct sis_desc *sis_nextdesc;
333: bus_dmamap_t map;
334: };
335:
336: #define SIS_CMDSTS_BUFLEN 0x00000FFF
337: #define SIS_CMDSTS_PKT_OK 0x08000000
338: #define SIS_CMDSTS_CRC 0x10000000
339: #define SIS_CMDSTS_INTR 0x20000000
340: #define SIS_CMDSTS_MORE 0x40000000
341: #define SIS_CMDSTS_OWN 0x80000000
342:
343: #define SIS_LASTDESC(x) (!((x)->sis_ctl & SIS_CMDSTS_MORE)))
344: #define SIS_OWNDESC(x) ((x)->sis_ctl & SIS_CMDSTS_OWN)
345: #define SIS_INC(x, y) (x) = ((x) == ((y)-1)) ? 0 : (x)+1
346: #define SIS_RXBYTES(x) (((x)->sis_ctl & SIS_CMDSTS_BUFLEN) - ETHER_CRC_LEN)
347:
348: #define SIS_RXSTAT_COLL 0x00010000
349: #define SIS_RXSTAT_LOOPBK 0x00020000
350: #define SIS_RXSTAT_ALIGNERR 0x00040000
351: #define SIS_RXSTAT_CRCERR 0x00080000
352: #define SIS_RXSTAT_SYMBOLERR 0x00100000
353: #define SIS_RXSTAT_RUNT 0x00200000
354: #define SIS_RXSTAT_GIANT 0x00400000
355: #define SIS_RXSTAT_DSTCLASS 0x01800000
356: #define SIS_RXSTAT_OVERRUN 0x02000000
357: #define SIS_RXSTAT_RX_ABORT 0x04000000
358:
359: #define SIS_DSTCLASS_REJECT 0x00000000
360: #define SIS_DSTCLASS_UNICAST 0x00800000
361: #define SIS_DSTCLASS_MULTICAST 0x01000000
362: #define SIS_DSTCLASS_BROADCAST 0x02000000
363:
364: #define SIS_TXSTAT_COLLCNT 0x000F0000
365: #define SIS_TXSTAT_EXCESSCOLLS 0x00100000
366: #define SIS_TXSTAT_OUTOFWINCOLL 0x00200000
367: #define SIS_TXSTAT_EXCESS_DEFER 0x00400000
368: #define SIS_TXSTAT_DEFERED 0x00800000
369: #define SIS_TXSTAT_CARR_LOST 0x01000000
370: #define SIS_TXSTAT_UNDERRUN 0x02000000
371: #define SIS_TXSTAT_TX_ABORT 0x04000000
372:
373: #define SIS_RX_LIST_CNT_MIN 4
374: #define SIS_RX_LIST_CNT_MAX 64
375: #define SIS_TX_LIST_CNT 128
376:
377: struct sis_list_data {
378: struct sis_desc sis_rx_list[SIS_RX_LIST_CNT_MAX];
379: struct sis_desc sis_tx_list[SIS_TX_LIST_CNT];
380: };
381:
382: struct sis_ring_data {
383: struct sis_desc *sis_rx_pdsc;
384: int sis_tx_prod;
385: int sis_tx_cons;
386: int sis_tx_cnt;
387: };
388:
389:
390: /*
391: * SiS PCI vendor ID.
392: */
393: #define SIS_VENDORID 0x1039
394:
395: /*
396: * SiS PCI device IDs
397: */
398: #define SIS_DEVICEID_900 0x0900
399: #define SIS_DEVICEID_7016 0x7016
400:
401:
402: /*
403: * SiS 900 PCI revision codes.
404: */
405: #define SIS_REV_900B 0x0003
406: #define SIS_REV_630A 0x0080
407: #define SIS_REV_630E 0x0081
408: #define SIS_REV_630S 0x0082
409: #define SIS_REV_630EA1 0x0083
410: #define SIS_REV_630ET 0x0084
411: #define SIS_REV_635 0x0090
412: #define SIS_REV_96x 0x0091
413:
414: struct sis_type {
415: u_int16_t sis_vid;
416: u_int16_t sis_did;
417: char *sis_name;
418: };
419:
420: struct sis_mii_frame {
421: u_int8_t mii_stdelim;
422: u_int8_t mii_opcode;
423: u_int8_t mii_phyaddr;
424: u_int8_t mii_regaddr;
425: u_int8_t mii_turnaround;
426: u_int16_t mii_data;
427: };
428:
429: /*
430: * MII constants
431: */
432: #define SIS_MII_STARTDELIM 0x01
433: #define SIS_MII_READOP 0x02
434: #define SIS_MII_WRITEOP 0x01
435: #define SIS_MII_TURNAROUND 0x02
436:
437: #define SIS_TYPE_900 1
438: #define SIS_TYPE_7016 2
439: #define SIS_TYPE_83815 3
440:
441: struct sis_softc {
442: struct device sc_dev; /* generic device structure */
443: void *sc_ih; /* interrupt handler cookie */
444: struct arpcom arpcom; /* interface info */
445: mii_data_t sc_mii;
446: bus_space_handle_t sis_bhandle;
447: bus_space_tag_t sis_btag;
448: u_int8_t sis_type;
449: u_int8_t sis_rev;
450: u_int8_t sis_link;
451: u_int sis_srr;
452: struct sis_list_data *sis_ldata;
453: struct sis_ring_data sis_cdata;
454: struct timeout sis_timeout;
455: bus_dma_tag_t sc_dmat;
456: bus_dmamap_t sc_listmap;
457: bus_dma_segment_t sc_listseg[1];
458: int sc_listnseg;
459: caddr_t sc_listkva;
460: bus_dmamap_t sc_rx_sparemap;
461: bus_dmamap_t sc_tx_sparemap;
462: int sis_stopped;
463: int sc_rxbufs;
464: int sc_if_flags;
465: };
466:
467: /*
468: * register space access macros
469: */
470: #define CSR_WRITE_4(sc, reg, val) \
471: bus_space_write_4(sc->sis_btag, sc->sis_bhandle, reg, val)
472:
473: #define CSR_READ_4(sc, reg) \
474: bus_space_read_4(sc->sis_btag, sc->sis_bhandle, reg)
475:
476: #define SIS_TIMEOUT 1000
477: #define SIS_MIN_FRAMELEN 60
478:
479: /*
480: * PCI low memory base and low I/O base register, and
481: * other PCI registers.
482: */
483:
484: #define SIS_PCI_VENDOR_ID 0x00
485: #define SIS_PCI_DEVICE_ID 0x02
486: #define SIS_PCI_COMMAND 0x04
487: #define SIS_PCI_STATUS 0x06
488: #define SIS_PCI_REVID 0x08
489: #define SIS_PCI_CLASSCODE 0x09
490: #define SIS_PCI_CACHELEN 0x0C
491: #define SIS_PCI_LATENCY_TIMER 0x0D
492: #define SIS_PCI_HEADER_TYPE 0x0E
493: #define SIS_PCI_LOIO 0x10
494: #define SIS_PCI_LOMEM 0x14
495: #define SIS_PCI_BIOSROM 0x30
496: #define SIS_PCI_INTLINE 0x3C
497: #define SIS_PCI_INTPIN 0x3D
498: #define SIS_PCI_MINGNT 0x3E
499: #define SIS_PCI_MINLAT 0x0F
500: #define SIS_PCI_RESETOPT 0x48
501: #define SIS_PCI_EEPROM_DATA 0x4C
502:
503: /* power management registers */
504: #define SIS_PCI_CAPID 0x50 /* 8 bits */
505: #define SIS_PCI_NEXTPTR 0x51 /* 8 bits */
506: #define SIS_PCI_PWRMGMTCAP 0x52 /* 16 bits */
507: #define SIS_PCI_PWRMGMTCTRL 0x54 /* 16 bits */
508:
509: #define SIS_PSTATE_MASK 0x0003
510: #define SIS_PSTATE_D0 0x0000
511: #define SIS_PSTATE_D1 0x0001
512: #define SIS_PSTATE_D2 0x0002
513: #define SIS_PSTATE_D3 0x0003
514: #define SIS_PME_EN 0x0010
515: #define SIS_PME_STATUS 0x8000
CVSweb