coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
iosf.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <stdint.h>
4 #include <device/pci_ops.h>
5 #include <soc/iosf.h>
6 
7 static inline void write_iosf_reg(int reg, uint32_t value)
8 {
10 }
11 
12 static inline uint32_t read_iosf_reg(int reg)
13 {
14  return pci_s_read_config32(IOSF_PCI_DEV, reg);
15 }
16 
17 /* Common sequences for all the port accesses. */
19 {
20  cr |= IOSF_REG(reg) | IOSF_BYTE_EN;
23  return read_iosf_reg(MDR_REG);
24 }
25 
27 {
28  cr |= IOSF_REG(reg) | IOSF_BYTE_EN;
32 }
33 
34 #define IOSF_READ(port) \
35  (IOSF_OPCODE(IOSF_OP_READ_##port) | IOSF_PORT(IOSF_PORT_##port))
36 #define IOSF_WRITE(port) \
37  (IOSF_OPCODE(IOSF_OP_WRITE_##port) | IOSF_PORT(IOSF_PORT_##port))
38 
40 {
41  return iosf_read_port(IOSF_READ(BUNIT), reg);
42 }
43 
45 {
46  iosf_write_port(IOSF_WRITE(BUNIT), reg, val);
47 }
48 
50 {
51  return iosf_read_port(IOSF_READ(SYSMEMC), reg);
52 }
53 
55 {
56  return iosf_dunit_read(reg);
57 }
58 
60 {
63  return iosf_read_port(cr, reg);
64 }
65 
67 {
68  iosf_write_port(IOSF_WRITE(SYSMEMC), reg, val);
69 }
70 
72 {
73  return iosf_read_port(IOSF_READ(CUNIT), reg);
74 }
75 
77 {
78  iosf_write_port(IOSF_WRITE(CUNIT), reg, val);
79 }
80 
82 {
83  return iosf_read_port(IOSF_READ(PMC), reg);
84 }
85 
87 {
89 }
90 
92 {
93  return iosf_read_port(IOSF_READ(USBPHY), reg);
94 }
95 
97 {
98  iosf_write_port(IOSF_WRITE(USBPHY), reg, val);
99 }
100 
102 {
103  return iosf_read_port(IOSF_READ(USHPHY), reg);
104 }
105 
107 {
108  iosf_write_port(IOSF_WRITE(USHPHY), reg, val);
109 }
110 
112 {
113  return iosf_read_port(IOSF_READ(LPSS), reg);
114 }
115 
117 {
118  iosf_write_port(IOSF_WRITE(LPSS), reg, val);
119 }
120 
122 {
123  return iosf_read_port(IOSF_READ(CCU), reg);
124 }
125 
127 {
128  iosf_write_port(IOSF_WRITE(CCU), reg, val);
129 }
130 
132 {
133  return iosf_read_port(IOSF_READ(SCORE), reg);
134 }
135 
137 {
138  iosf_write_port(IOSF_WRITE(SCORE), reg, val);
139 }
140 
142 {
143  return iosf_read_port(IOSF_READ(SCC), reg);
144 }
145 
147 {
148  iosf_write_port(IOSF_WRITE(SCC), reg, val);
149 }
150 
152 {
153  return iosf_read_port(IOSF_READ(AUNIT), reg);
154 }
155 
157 {
158  iosf_write_port(IOSF_WRITE(AUNIT), reg, val);
159 }
160 
162 {
163  return iosf_read_port(IOSF_READ(CPU_BUS), reg);
164 }
165 
167 {
168  iosf_write_port(IOSF_WRITE(CPU_BUS), reg, val);
169 }
170 
172 {
173  return iosf_read_port(IOSF_READ(SEC), reg);
174 }
175 
177 {
178  iosf_write_port(IOSF_WRITE(SEC), reg, val);
179 }
180 
182 {
183  return iosf_read_port(IOSF_READ(0x45), reg);
184 }
185 
187 {
188  iosf_write_port(IOSF_WRITE(0x45), reg, val);
189 }
190 
192 {
193  return iosf_read_port(IOSF_READ(0x46), reg);
194 }
195 
197 {
198  iosf_write_port(IOSF_WRITE(0x46), reg, val);
199 }
200 
202 {
203  return iosf_read_port(IOSF_READ(0x47), reg);
204 }
205 
207 {
208  iosf_write_port(IOSF_WRITE(0x47), reg, val);
209 }
210 
212 {
213  return iosf_read_port(IOSF_READ(0x55), reg);
214 }
215 
217 {
218  iosf_write_port(IOSF_WRITE(0x55), reg, val);
219 }
220 
222 {
223  return iosf_read_port(IOSF_READ(0x58), reg);
224 }
225 
227 {
228  iosf_write_port(IOSF_WRITE(0x58), reg, val);
229 }
230 
232 {
233  return iosf_read_port(IOSF_READ(0x59), reg);
234 }
235 
237 {
238  iosf_write_port(IOSF_WRITE(0x59), reg, val);
239 }
240 
242 {
243  return iosf_read_port(IOSF_READ(0x5a), reg);
244 }
245 
247 {
248  iosf_write_port(IOSF_WRITE(0x5a), reg, val);
249 }
250 
252 {
253  return iosf_read_port(IOSF_READ(0xa2), reg);
254 }
255 
257 {
258  iosf_write_port(IOSF_WRITE(0xa2), reg, val);
259 }
260 
262 {
263  return iosf_read_port(IOSF_READ(SSUS), reg);
264 }
265 
267 {
268  iosf_write_port(IOSF_WRITE(SSUS), reg, val);
269 }
pte_t value
Definition: mmu.c:91
#define IOSF_BYTE_EN
Definition: iosf.h:30
#define IOSF_REG(x)
Definition: iosf.h:23
#define IOSF_PORT(x)
Definition: iosf.h:22
#define IOSF_OPCODE(x)
Definition: iosf.h:21
#define IOSF_PCI_DEV
Definition: iosf.h:19
#define MDR_REG
Definition: iosf.h:34
#define IOSF_REG_UPPER(x)
Definition: iosf.h:24
#define MCR_REG
Definition: iosf.h:33
#define IOSF_OP_READ_SYSMEMC
Definition: iosf.h:121
#define IOSF_PORT_DUNIT_CH1
Definition: iosf.h:96
#define MCRX_REG
Definition: iosf.h:35
void iosf_sec_write(int reg, uint32_t val)
Definition: iosf.c:176
uint32_t iosf_score_read(int reg)
Definition: iosf.c:131
uint32_t iosf_port55_read(int reg)
Definition: iosf.c:211
uint32_t iosf_dunit_ch1_read(int reg)
Definition: iosf.c:59
uint32_t iosf_lpss_read(int reg)
Definition: iosf.c:111
void iosf_aunit_write(int reg, uint32_t val)
Definition: iosf.c:156
void iosf_port47_write(int reg, uint32_t val)
Definition: iosf.c:206
void iosf_port55_write(int reg, uint32_t val)
Definition: iosf.c:216
uint32_t iosf_port45_read(int reg)
Definition: iosf.c:181
void iosf_write_port(uint32_t cr, int reg, uint32_t val)
Definition: iosf.c:26
uint32_t iosf_dunit_read(int reg)
Definition: iosf.c:49
void iosf_port59_write(int reg, uint32_t val)
Definition: iosf.c:236
void iosf_port45_write(int reg, uint32_t val)
Definition: iosf.c:186
void iosf_lpss_write(int reg, uint32_t val)
Definition: iosf.c:116
uint32_t iosf_read_port(uint32_t cr, int reg)
Definition: iosf.c:18
uint32_t iosf_cpu_bus_read(int reg)
Definition: iosf.c:161
uint32_t iosf_sec_read(int reg)
Definition: iosf.c:171
uint32_t iosf_port59_read(int reg)
Definition: iosf.c:231
void iosf_cpu_bus_write(int reg, uint32_t val)
Definition: iosf.c:166
void iosf_punit_write(int reg, uint32_t val)
Definition: iosf.c:86
void iosf_cunit_write(int reg, uint32_t val)
Definition: iosf.c:76
void iosf_port46_write(int reg, uint32_t val)
Definition: iosf.c:196
static void write_iosf_reg(int reg, uint32_t value)
Definition: iosf.c:7
uint32_t iosf_punit_read(int reg)
Definition: iosf.c:81
#define IOSF_READ(port)
Definition: iosf.c:34
uint32_t iosf_scc_read(int reg)
Definition: iosf.c:141
uint32_t iosf_porta2_read(int reg)
Definition: iosf.c:251
uint32_t iosf_bunit_read(int reg)
Definition: iosf.c:39
uint32_t iosf_port47_read(int reg)
Definition: iosf.c:201
uint32_t iosf_dunit_ch0_read(int reg)
Definition: iosf.c:54
void iosf_port5a_write(int reg, uint32_t val)
Definition: iosf.c:246
uint32_t iosf_usbphy_read(int reg)
Definition: iosf.c:91
uint32_t iosf_ushphy_read(int reg)
Definition: iosf.c:101
#define IOSF_WRITE(port)
Definition: iosf.c:36
void iosf_ssus_write(int reg, uint32_t val)
Definition: iosf.c:266
void iosf_ccu_write(int reg, uint32_t val)
Definition: iosf.c:126
uint32_t iosf_ccu_read(int reg)
Definition: iosf.c:121
static uint32_t read_iosf_reg(int reg)
Definition: iosf.c:12
void iosf_porta2_write(int reg, uint32_t val)
Definition: iosf.c:256
void iosf_usbphy_write(int reg, uint32_t val)
Definition: iosf.c:96
uint32_t iosf_aunit_read(int reg)
Definition: iosf.c:151
void iosf_port58_write(int reg, uint32_t val)
Definition: iosf.c:226
void iosf_ushphy_write(int reg, uint32_t val)
Definition: iosf.c:106
void iosf_score_write(int reg, uint32_t val)
Definition: iosf.c:136
uint32_t iosf_ssus_read(int reg)
Definition: iosf.c:261
void iosf_scc_write(int reg, uint32_t val)
Definition: iosf.c:146
void iosf_bunit_write(int reg, uint32_t val)
Definition: iosf.c:44
uint32_t iosf_port5a_read(int reg)
Definition: iosf.c:241
uint32_t iosf_port46_read(int reg)
Definition: iosf.c:191
uint32_t iosf_port58_read(int reg)
Definition: iosf.c:221
void iosf_dunit_write(int reg, uint32_t val)
Definition: iosf.c:66
uint32_t iosf_cunit_read(int reg)
Definition: iosf.c:71
@ PMC
Definition: cse_layout.h:21
static __always_inline uint32_t pci_s_read_config32(pci_devfn_t dev, uint16_t reg)
Definition: pci_io_cfg.h:92
static __always_inline void pci_s_write_config32(pci_devfn_t dev, uint16_t reg, uint32_t value)
Definition: pci_io_cfg.h:110
unsigned int uint32_t
Definition: stdint.h:14
u8 val
Definition: sys.c:300