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_PICASSO_SMI_H
4 #define AMD_PICASSO_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 /* 33 - 38 Reserved */
82 #define SMITYPE_AZPME 39
83 #define SMITYPE_USB_PD_I2C4 40
84 #define SMITYPE_GPIO_CTL 41
85 /* 42 Reserved */
86 #define SMITYPE_ALT_HPET_ALARM 43
87 #define SMITYPE_FAN_THERMAL 44
88 #define SMITYPE_ASF_MASTER_SLAVE 45
89 #define SMITYPE_I2S_WAKE 46
90 #define SMITYPE_SMBUS0_MASTER 47
91 #define SMITYPE_TWARN 48
92 #define SMITYPE_TRAFFIC_MON 49
93 #define SMITYPE_ILLB 50
94 #define SMITYPE_PWRBUTTON_UP 51
95 #define SMITYPE_PROCHOT 52
96 #define SMITYPE_APU_HW 53
97 #define SMITYPE_NB_SCI 54
98 #define SMITYPE_RAS_SERR 55
99 #define SMITYPE_XHC0_PME 56
100 #define SMITYPE_XHC1_PME 57
101 #define SMITYPE_ACDC_TIMER 58
102 /* 59-63 Reserved */
103 #define SMITYPE_KB_RESET 64
104 #define SMITYPE_SLP_TYP 65
105 #define SMITYPE_AL2H_ACPI 66
106 #define SMITYPE_AHCI 67
107 #define SMITYPE_NB_GPP_PME_PULSE 68
108 #define SMITYPE_NB_GPP_HP_PULSE 69
109 #define SMITYPE_USBPD_I2C_INT 70
110 /* 71 Reserved */
111 #define SMITYPE_GBL_RLS 72
112 #define SMITYPE_BIOS_RLS 73
113 #define SMITYPE_PWRBUTTON_DOWN 74
114 #define SMITYPE_SMI_CMD_PORT 75
115 #define SMITYPE_USB_SMI 76
116 #define SMITYPE_SERIRQ 77
117 #define SMITYPE_SMBUS0_INTR 78
118 /* 79-80 Reserved */
119 #define SMITYPE_INTRUDER 81
120 #define SMITYPE_VBAT_LOW 82
121 #define SMITYPE_PROTHOT 83
122 #define SMITYPE_PCI_SERR 84
123 #define SMITYPE_GPP_SERR 85
124 /* 85-89 Reserved */
125 #define SMITYPE_EMUL60_64 90
126 /* 91-132 Reserved */
127 #define SMITYPE_FANIN0 133
128 /* 134-140 Reserved */
129 #define SMITYPE_CF9_WRITE 141
130 #define SMITYPE_SHORT_TIMER 142
131 #define SMITYPE_LONG_TIMER 143
132 #define SMITYPE_AB_SMI 144
133 /* 145 Reserved */
134 #define SMITYPE_ESPI_SMI 146
135 /* 147 Reserved */
136 #define SMITYPE_IOTRAP0 148
137 #define SMITYPE_IOTRAP1 149
138 #define SMITYPE_IOTRAP2 150
139 #define SMITYPE_IOTRAP3 151
140 #define SMITYPE_MEMTRAP0 152
141 /* 153-155 Reserved */
142 #define SMITYPE_CFGTRAP0 156
143 /* 157-159 Reserved */
144 
145 #define TYPE_TO_MASK(X) (1 << (X) % 32)
146 
147 #define SMI_REG_SMISTS0 0x80
148 #define SMI_REG_SMISTS1 0x84
149 #define SMI_REG_SMISTS2 0x88
150 #define SMI_REG_SMISTS3 0x8c
151 #define SMI_REG_SMISTS4 0x90
152 
153 #define SMI_REG_POINTER 0x94
154 # define SMI_STATUS_SRC_SCI (1 << 0)
155 # define SMI_STATUS_SRC_0 (1 << 1) /* SMIx80 */
156 # define SMI_STATUS_SRC_1 (1 << 2) /* SMIx84... */
157 # define SMI_STATUS_SRC_2 (1 << 3)
158 # define SMI_STATUS_SRC_3 (1 << 4)
159 # define SMI_STATUS_SRC_4 (1 << 5)
160 
161 #define SMI_TIMER 0x96
162 #define SMI_TIMER_MASK 0x7fff
163 #define SMI_TIMER_EN (1 << 15)
164 
165 #define SMI_REG_SMITRIG0 0x98
166 # define SMITRIG0_PSP (1 << 25)
167 # define SMITRG0_EOS (1 << 28)
168 # define SMI_TIMER_SEL (1 << 29)
169 # define SMITRG0_SMIENB (1 << 31)
170 
171 #define SMI_REG_CONTROL0 0xa0
172 #define SMI_REG_CONTROL1 0xa4
173 #define SMI_REG_CONTROL2 0xa8
174 #define SMI_REG_CONTROL3 0xac
175 #define SMI_REG_CONTROL4 0xb0
176 #define SMI_REG_CONTROL5 0xb4
177 #define SMI_REG_CONTROL6 0xb8
178 #define SMI_REG_CONTROL7 0xbc
179 #define SMI_REG_CONTROL8 0xc0
180 #define SMI_REG_CONTROL9 0xc4
181 
182 #define SMI_MODE_MASK 0x03
183 
184 #endif /* AMD_PICASSO_SMI_H */