coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
smi.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef AMD_CEZANNE_SMI_H
4 #define AMD_CEZANNE_SMI_H
5 
6 #include <types.h>
7 
8 #define SMI_GEVENTS 24
9 #define SCIMAPS 59 /* 0..58 */
10 #define SCI_GPES 32
11 #define NUMBER_SMITYPES 160
12 
13 #define SMI_EVENT_STATUS 0x0
14 #define SMI_EVENT_ENABLE 0x04
15 #define SMI_SCI_TRIG 0x08
16 #define SMI_SCI_LEVEL 0x0c
17 #define SMI_SCI_STATUS 0x10
18 #define SMI_SCI_EN 0x14
19 #define SMI_SCI_MAP0 0x40
20 # define SMI_SCI_MAP(X) (SMI_SCI_MAP0 + (X))
21 
22 /* SMI source and status */
23 #define SMITYPE_G_GENINT1_L 0
24 #define SMITYPE_G_GENINT2_L 1
25 #define SMITYPE_G_AGPIO3 2
26 #define SMITYPE_G_LPCPME 3
27 #define SMITYPE_G_AGPIO4 4
28 #define SMITYPE_G_LPCPD 5
29 #define SMITYPE_G_SPKR 6
30 #define SMITYPE_G_AGPIO5 7
31 #define SMITYPE_G_WAKE_L 8
32 #define SMITYPE_G_LPC_SMI_L 9
33 #define SMITYPE_G_AGPIO6 10
34 #define SMITYPE_G_AGPIO7 11
35 #define SMITYPE_G_USBOC0_L 12
36 #define SMITYPE_G_USBOC1_L 13
37 #define SMITYPE_G_USBOC2_L 14
38 #define SMITYPE_G_USBOC3_L 15
39 #define SMITYPE_G_AGPIO23 16
40 #define SMITYPE_G_ESPI_RESET_L 17
41 #define SMITYPE_G_FANIN0 18
42 #define SMITYPE_G_SYSRESET_L 19
43 #define SMITYPE_G_AGPIO40 20
44 #define SMITYPE_G_PWR_BTN_L 21
45 #define SMITYPE_G_AGPIO9 22
46 #define SMITYPE_G_AGPIO8 23
47 #define GEVENT_MASK ((1 << SMITYPE_G_GENINT1_L) \
48  | (1 << SMITYPE_G_GENINT2_L) \
49  | (1 << SMITYPE_G_AGPIO3) \
50  | (1 << SMITYPE_G_LPCPME) \
51  | (1 << SMITYPE_G_AGPIO4) \
52  | (1 << SMITYPE_G_LPCPD) \
53  | (1 << SMITYPE_G_SPKR) \
54  | (1 << SMITYPE_G_AGPIO5) \
55  | (1 << SMITYPE_G_WAKE_L) \
56  | (1 << SMITYPE_G_LPC_SMI_L) \
57  | (1 << SMITYPE_G_AGPIO6) \
58  | (1 << SMITYPE_G_AGPIO7) \
59  | (1 << SMITYPE_G_USBOC0_L) \
60  | (1 << SMITYPE_G_USBOC1_L) \
61  | (1 << SMITYPE_G_USBOC2_L) \
62  | (1 << SMITYPE_G_USBOC3_L) \
63  | (1 << SMITYPE_G_AGPIO23) \
64  | (1 << SMITYPE_G_ESPI_RESET_L) \
65  | (1 << SMITYPE_G_FANIN0) \
66  | (1 << SMITYPE_G_SYSRESET_L) \
67  | (1 << SMITYPE_G_AGPIO40) \
68  | (1 << SMITYPE_G_PWR_BTN_L) \
69  | (1 << SMITYPE_G_AGPIO9) \
70  | (1 << SMITYPE_G_AGPIO8))
71 #define SMITYPE_MP2_WAKE 24
72 #define SMITYPE_MP2_GPIO0 25
73 #define SMITYPE_ESPI_SYS 26
74 #define SMITYPE_ESPI_WAKE_PME 27
75 #define SMITYPE_MP2_GPIO1 28
76 #define SMITYPE_GPP_PME 29
77 #define SMITYPE_NB_GPP_HOT_PLUG 30
78 /* 31 Reserved */
79 #define SMITYPE_WAKE_L2 32
80 #define SMITYPE_PSP 33
81 /* 34,35 Reserved */
82 #define SMITYPE_ESPI_SCI_B 36
83 #define SMITYPE_WLAN_WLAN_PME 37
84 #define SMITYPE_WLAN_BT_PME 38
85 #define SMITYPE_AZPME 39
86 #define SMITYPE_USB_PD_I2C4 40
87 #define SMITYPE_GPIO_CTL 41
88 /* 42 Reserved */
89 #define SMITYPE_ALT_HPET_ALARM 43
90 #define SMITYPE_FAN_THERMAL 44
91 #define SMITYPE_ASF_MASTER_SLAVE 45
92 #define SMITYPE_I2S_WAKE 46
93 #define SMITYPE_SMBUS0_MASTER 47
94 #define SMITYPE_TWARN 48
95 #define SMITYPE_TRAFFIC_MON 49
96 #define SMITYPE_ILLB 50
97 #define SMITYPE_PWRBUTTON_UP 51
98 #define SMITYPE_PROCHOT 52
99 #define SMITYPE_APU_HW 53
100 #define SMITYPE_NB_SCI 54
101 #define SMITYPE_RAS_SERR 55
102 #define SMITYPE_XHC0_PME 56
103 #define SMITYPE_XHC1_PME 57
104 #define SMITYPE_ACDC_TIMER 58
105 /* 59-63 Reserved */
106 #define SMITYPE_KB_RESET 64
107 #define SMITYPE_SLP_TYP 65
108 #define SMITYPE_AL2H_ACPI 66
109 /* 67-71 Reserved */
110 #define SMITYPE_GBL_RLS 72
111 #define SMITYPE_BIOS_RLS 73
112 #define SMITYPE_PWRBUTTON_DOWN 74
113 #define SMITYPE_SMI_CMD_PORT 75
114 #define SMITYPE_USB_SMI 76
115 #define SMITYPE_SERIRQ 77
116 #define SMITYPE_SMBUS0_INTR 78
117 /* 79-80 Reserved */
118 #define SMITYPE_INTRUDER 81
119 #define SMITYPE_VBAT_LOW 82
120 #define SMITYPE_PROTHOT 83
121 #define SMITYPE_PCI_SERR 84
122 /* 85-89 Reserved */
123 #define SMITYPE_EMUL60_64 90
124 /* 91-132 Reserved */
125 #define SMITYPE_FANIN0 133
126 /* 134-140 Reserved */
127 #define SMITYPE_CF9_WRITE 141
128 #define SMITYPE_SHORT_TIMER 142
129 #define SMITYPE_LONG_TIMER 143
130 #define SMITYPE_AB_SMI 144
131 /* 145 Reserved */
132 #define SMITYPE_ESPI_SMI 146
133 /* 147 Reserved */
134 #define SMITYPE_IOTRAP0 148
135 #define SMITYPE_IOTRAP1 149
136 #define SMITYPE_IOTRAP2 150
137 #define SMITYPE_IOTRAP3 151
138 #define SMITYPE_MEMTRAP0 152
139 /* 153-155 Reserved */
140 #define SMITYPE_CFGTRAP0 156
141 /* 157-159 Reserved */
142 
143 #define TYPE_TO_MASK(X) (1 << (X) % 32)
144 
145 #define SMI_REG_SMISTS0 0x80
146 #define SMI_REG_SMISTS1 0x84
147 #define SMI_REG_SMISTS2 0x88
148 #define SMI_REG_SMISTS3 0x8c
149 #define SMI_REG_SMISTS4 0x90
150 
151 #define SMI_REG_POINTER 0x94
152 # define SMI_STATUS_SRC_SCI (1 << 0)
153 # define SMI_STATUS_SRC_0 (1 << 1) /* SMIx80 */
154 # define SMI_STATUS_SRC_1 (1 << 2) /* SMIx84... */
155 # define SMI_STATUS_SRC_2 (1 << 3)
156 # define SMI_STATUS_SRC_3 (1 << 4)
157 # define SMI_STATUS_SRC_4 (1 << 5)
158 
159 #define SMI_TIMER 0x96
160 #define SMI_TIMER_MASK 0x7fff
161 #define SMI_TIMER_EN (1 << 15)
162 
163 #define SMI_REG_SMITRIG0 0x98
164 # define SMITRIG0_PSP (1 << 25)
165 # define SMITRG0_EOS (1 << 28)
166 # define SMI_TIMER_SEL (1 << 29)
167 # define SMITRG0_SMIENB (1 << 31)
168 
169 #define SMI_REG_CONTROL0 0xa0
170 #define SMI_REG_CONTROL1 0xa4
171 #define SMI_REG_CONTROL2 0xa8
172 #define SMI_REG_CONTROL3 0xac
173 #define SMI_REG_CONTROL4 0xb0
174 #define SMI_REG_CONTROL5 0xb4
175 #define SMI_REG_CONTROL6 0xb8
176 #define SMI_REG_CONTROL7 0xbc
177 #define SMI_REG_CONTROL8 0xc0
178 #define SMI_REG_CONTROL9 0xc4
179 
180 #define SMI_MODE_MASK 0x03
181 
182 #endif /* AMD_CEZANNE_SMI_H */