1/* $NetBSD: sioreg.h,v 1.3 2021/06/25 13:32:39 thorpej Exp $ */
2
3/*
4 * Copyright (c) 1996 BBN Corporation.
5 *   BBN Systems and Technologies Division
6 *   10 Moulton Street
7 *   Cambridge, Ma. 02138
8 *   617-873-3000
9 *
10 *  Permission to use, copy, modify, distribute, and sell this software and its
11 *  documentation for  any purpose is hereby granted without fee, provided that
12 *  the above copyright notice and this permission appear  in all copies and in
13 *  supporting documentation, and that the name of BBN Corporation not  be used
14 *  in  advertising  or  publicity pertaining  to  distribution of the software
15 *  without specific, written  prior  permission.  BBN makes no representations
16 *  about  the  suitability  of this software for any purposes.  It is provided
17 *  "AS IS" without express or implied warranties.
18 */
19
20/*
21 * Intel 82378 System I/O (SIO) Chip
22 *
23 * Taken from the Intel "Peripheral Components" manual, 1995 Edition.
24 */
25
26
27/*
28 * Device-specific PCI Configuration Registers
29 */
30
31/*
32 * PCI Control Registers
33 */
34#define	SIO_PCIREG_PCICON	0x40	/* PCI Control */
35#define	SIO_PCIREG_PAC		0x41	/* PCI Arbiter Control */
36#define	SIO_PCIREG_PAPC		0x42	/* PCI Arbiter Priority Control */
37#define	SIO_PCIREG_ARBPRIX	0x43	/* PCI Arbiter Priority Control Ext. */
38
39/*
40 * Memory Chip Select Registers
41 */
42#define	SIO_PCIREG_MEMCSCON	0x44	/* MEMCS# Control */
43#define	SIO_PCIREG_MEMCSBOH	0x45	/* MEMCS# Bottom of Hole */
44#define	SIO_PCIREG_MEMCSTOH	0x46	/* MEMCS# Top of Hole */
45#define	SIO_PCIREG_MEMCSTOM	0x47	/* MEMCS# Top of Memory */
46
47#define	SIO_PCIREG_MAR1		0x54	/* MEMCS# Attribute 1 */
48#define	SIO_PCIREG_MAR2		0x55	/* MEMCS# Attribute 2 */
49#define	SIO_PCIREG_MAR3		0x56	/* MEMCS# Attribute 3 */
50#define	SIO_PCIREG_DMASGRB	0x57	/* DMA Scatter/Gather Rel. Base Addr. */
51
52/*
53 * ISA Address Decoder Registers
54 */
55#define	SIO_PCIREG_IADCON	0x48	/* ISA Address Decoder Control */
56#define	SIO_PCIREG_IADRBE	0x49	/* ISA Addr. Decoder ROM Block Enable */
57#define	SIO_PCIREG_IADBOH	0x4A	/* ISA Addr. Decoder Bottom of Hole */
58#define	SIO_PCIREG_IADTOH	0x4B	/* ISA Addr. Decoder Top of Hole */
59
60/*
61 * Clocks and Timers
62 */
63#define	SIO_PCIREG_ICRT		0x4C	/* ISA Controller Recovery Timer */
64#define	SIO_PCIREG_ICD		0x4D	/* ISA Clock Divisor */
65
66#define	SIO_PCIREG_		0x80	/* BIOS Timer Base Address */
67
68#define	SIO_PCIREG_CTLTMRL	0xAC	/* Clock Throttle STPCLK# Low Timer */
69#define	SIO_PCIREG_CTLTMRH	0xAE	/* Clock Throttle STPCLK# High Timer */
70
71/*
72 * Miscellaneous
73 */
74#define	SIO_PCIREG_UBCSA	0x4E	/* Utility Bus Chip Select A */
75#define	SIO_PCIREG_UBCSB	0x4F	/* Utility Bus Chip Select B */
76
77/*
78 * PIRQ# Route Control
79 */
80#define	SIO_PCIREG_PIRQ0	0x60	/* PIRQ0 Route Control */
81#define	SIO_PCIREG_PIRQ1	0x61	/* PIRQ1 Route Control */
82#define	SIO_PCIREG_PIRQ2	0x62	/* PIRQ2 Route Control */
83#define	SIO_PCIREG_PIRQ3	0x63	/* PIRQ3 Route Control */
84#define	SIO_PCIREG_PIRQ_RTCTRL	SIO_PCIREG_PIRQ0
85
86	/* extract the PIRQx field from 32-bit reg */
87#define	PIRQ_RTCTRL_PIRQx(r, p)	(((r) >> ((p) * 8)) & 0xff)
88
89	/* bits within each PIRQx field */
90#define	PIRQ_RTCTRL_NOT_ROUTED	__BIT(7)    /* 0 == interrupt routed */
91#define	PIRQ_RTCTRL_IRQ		__BITS(0,3) /* PIRQ routed to this ISA IRQ */
92
93/*
94 * System Management Interrupt (SMI)
95 */
96#define	SIO_PCIREG_SMICNTL	0xA0	/* SMI Control */
97#define	SIO_PCIREG_SMIEN	0xA2	/* SMI Enable */
98#define	SIO_PCIREG_SEE		0xA4	/* System Event Enable */
99#define	SIO_PCIREG_FTMR		0xA8	/* Fast Off Timer */
100#define	SIO_PCIREG_SMIREQ	0xAA	/* SMI Request */
101
102
103/*
104 * Non-Configuration Registers
105 */
106
107/*
108 * Control
109 */
110#define	SIO_REG_RSTUB		0x060	/* Reset UBus */
111#define	SIO_REG_NMICTRL		0x061	/* NMI Status and Control */
112#define	SIO_REG_CMOSRAM		0x070	/* CMOS RAM Address and NMI Mask */
113#define	SIO_REG_NMIMASK		0x070	/* CMOS RAM Address and NMI Mask */
114#define	SIO_REG_PORT92		0x092	/* Port 92 */
115#define	SIO_REG_CPERR		0x0F0	/* Coprocessor Error */
116
117/*
118 * Interrupt
119 */
120#define	SIO_REG_ICU1		0x020	/* Intr. Controller #1 Control */
121#define	SIO_REG_ICU1MASK	0x021	/* Intr. Controller #1 Mask */
122#define	SIO_REG_ICU2		0x0A0	/* Intr. Controller #2 Control */
123#define	SIO_REG_ICU2MASK	0x0A1	/* Intr. Controller #2 Mask */
124#define	SIO_REG_ICU1ELC		0x4D0	/* #1's Edge/Level Control */
125#define	SIO_REG_ICU2ELC		0x4D1	/* #2's Edge/Level Control */
126#define	SIO_ICUSIZE		16	/* I/O Port Sizes */
127
128/*
129 * Timer
130 */
131/* XXX need Timer definitions */
132
133/*
134 * DMA
135 */
136/* XXX need DMA definitions */
137