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_SABRINA_SMI_H
4 #define AMD_SABRINA_SMI_H
5 
6 #include <types.h>
7 
8 #define SMI_GEVENTS 24
9 #define SCIMAPS 64 /* 0..63 */
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_ESPI_ALERT_L 3
27 #define SMITYPE_G_AGPIO4 4
28 #define SMITYPE_G_BLINK 5
29 #define SMITYPE_G_SPKR 6
30 #define SMITYPE_G_AGPIO5 7
31 #define SMITYPE_G_WAKE_L 8
32 #define SMITYPE_G_SPI_TPM_CS_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_AGPIO32 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_ESPI_ALERT_L) \
51  | (1 << SMITYPE_G_AGPIO4) \
52  | (1 << SMITYPE_G_BLINK) \
53  | (1 << SMITYPE_G_SPKR) \
54  | (1 << SMITYPE_G_AGPIO5) \
55  | (1 << SMITYPE_G_WAKE_L) \
56  | (1 << SMITYPE_G_SPI_TPM_CS_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_AGPIO32) \
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_CIO_FCH_PME_S5_0 37
84 #define SMITYPE_CIO_FCH_PME_S5_1 38
85 #define SMITYPE_AZPME 39
86 #define SMITYPE_USB_PD_I2C4 40
87 #define SMITYPE_GPIO_CTL 41
88 #define SMITYPE_XHC2_PME 42
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-60 Reserved */
106 #define SMITYPE_XHC3_PME 61
107 #define SMITYPE_XHC4_PME 62
108 #define SMITYPE_CUR_TEMP_STATUS_5 63
109 #define SMITYPE_KB_RESET 64
110 #define SMITYPE_SLP_TYP 65
111 #define SMITYPE_AL2H_ACPI 66
112 /* 67 Reserved */
113 #define SMITYPE_NB_GPP_PME_PULSE 68
114 #define SMITYPE_NB_GPP_HP_PULSE 69
115 #define SMITYPE_USB_PD_I2C4_INTR2 70
116 /* 71 Reserved */
117 #define SMITYPE_GBL_RLS 72
118 #define SMITYPE_BIOS_RLS 73
119 #define SMITYPE_PWRBUTTON_DOWN 74
120 #define SMITYPE_SMI_CMD_PORT 75
121 #define SMITYPE_USB_SMI 76
122 #define SMITYPE_SERIRQ 77
123 #define SMITYPE_SMBUS0_INTR 78
124 /* 79-80 Reserved */
125 #define SMITYPE_INTRUDER 81
126 #define SMITYPE_VBAT_LOW 82
127 #define SMITYPE_PROTHOT 83
128 #define SMITYPE_PCI_SERR 84
129 /* 85-89 Reserved */
130 #define SMITYPE_EMUL60_64 90
131 /* 91-132 Reserved */
132 #define SMITYPE_FANIN0 133
133 /* 134-140 Reserved */
134 #define SMITYPE_CF9_WRITE 141
135 #define SMITYPE_SHORT_TIMER 142
136 #define SMITYPE_LONG_TIMER 143
137 #define SMITYPE_AB_SMI 144
138 #define SMITYPE_ANY_RESET 145
139 #define SMITYPE_ESPI_SMI 146
140 /* 147 Reserved */
141 #define SMITYPE_IOTRAP0 148
142 #define SMITYPE_IOTRAP1 149
143 #define SMITYPE_IOTRAP2 150
144 #define SMITYPE_IOTRAP3 151
145 #define SMITYPE_MEMTRAP0 152
146 /* 153-155 Reserved */
147 #define SMITYPE_CFGTRAP0 156
148 /* 157-159 Reserved */
149 
150 #define TYPE_TO_MASK(X) (1 << (X) % 32)
151 
152 #define SMI_REG_SMISTS0 0x80
153 #define SMI_REG_SMISTS1 0x84
154 #define SMI_REG_SMISTS2 0x88
155 #define SMI_REG_SMISTS3 0x8c
156 #define SMI_REG_SMISTS4 0x90
157 
158 #define SMI_REG_POINTER 0x94
159 # define SMI_STATUS_SRC_SCI (1 << 0)
160 # define SMI_STATUS_SRC_0 (1 << 1) /* SMIx80 */
161 # define SMI_STATUS_SRC_1 (1 << 2) /* SMIx84... */
162 # define SMI_STATUS_SRC_2 (1 << 3)
163 # define SMI_STATUS_SRC_3 (1 << 4)
164 # define SMI_STATUS_SRC_4 (1 << 5)
165 
166 #define SMI_TIMER 0x96
167 #define SMI_TIMER_MASK 0x7fff
168 #define SMI_TIMER_EN (1 << 15)
169 
170 #define SMI_REG_SMITRIG0 0x98
171 # define SMITRIG0_PSP (1 << 25)
172 # define SMITRG0_EOS (1 << 28)
173 # define SMI_TIMER_SEL (1 << 29)
174 # define SMITRG0_SMIENB (1 << 31)
175 
176 #define SMI_REG_CONTROL0 0xa0
177 #define SMI_REG_CONTROL1 0xa4
178 #define SMI_REG_CONTROL2 0xa8
179 #define SMI_REG_CONTROL3 0xac
180 #define SMI_REG_CONTROL4 0xb0
181 #define SMI_REG_CONTROL5 0xb4
182 #define SMI_REG_CONTROL6 0xb8
183 #define SMI_REG_CONTROL7 0xbc
184 #define SMI_REG_CONTROL8 0xc0
185 #define SMI_REG_CONTROL9 0xc4
186 
187 #define SMI_MODE_MASK 0x03
188 
189 #endif /* AMD_SABRINA_SMI_H */