1 | // SPDX-License-Identifier: GPL-2.0 |
---|---|
2 | /* |
3 | * This file contains platform specific structure definitions |
4 | * and init function used by Alder Lake PCH. |
5 | * |
6 | * Copyright (c) 2022, Intel Corporation. |
7 | * All Rights Reserved. |
8 | * |
9 | */ |
10 | |
11 | #include "core.h" |
12 | |
13 | /* Alder Lake: PGD PFET Enable Ack Status Register(s) bitmap */ |
14 | static const struct pmc_bit_map adl_pfear_map[] = { |
15 | {"SPI/eSPI", BIT(2)}, |
16 | {"XHCI", BIT(3)}, |
17 | {"SPA", BIT(4)}, |
18 | {"SPB", BIT(5)}, |
19 | {"SPC", BIT(6)}, |
20 | {"GBE", BIT(7)}, |
21 | |
22 | {"SATA", BIT(0)}, |
23 | {"HDA_PGD0", BIT(1)}, |
24 | {"HDA_PGD1", BIT(2)}, |
25 | {"HDA_PGD2", BIT(3)}, |
26 | {"HDA_PGD3", BIT(4)}, |
27 | {"SPD", BIT(5)}, |
28 | {"LPSS", BIT(6)}, |
29 | |
30 | {"SMB", BIT(0)}, |
31 | {"ISH", BIT(1)}, |
32 | {"ITH", BIT(3)}, |
33 | |
34 | {"XDCI", BIT(1)}, |
35 | {"DCI", BIT(2)}, |
36 | {"CSE", BIT(3)}, |
37 | {"CSME_KVM", BIT(4)}, |
38 | {"CSME_PMT", BIT(5)}, |
39 | {"CSME_CLINK", BIT(6)}, |
40 | {"CSME_PTIO", BIT(7)}, |
41 | |
42 | {"CSME_USBR", BIT(0)}, |
43 | {"CSME_SUSRAM", BIT(1)}, |
44 | {"CSME_SMT1", BIT(2)}, |
45 | {"CSME_SMS2", BIT(4)}, |
46 | {"CSME_SMS1", BIT(5)}, |
47 | {"CSME_RTC", BIT(6)}, |
48 | {"CSME_PSF", BIT(7)}, |
49 | |
50 | {"CNVI", BIT(3)}, |
51 | {"HDA_PGD4", BIT(2)}, |
52 | {"HDA_PGD5", BIT(3)}, |
53 | {"HDA_PGD6", BIT(4)}, |
54 | {} |
55 | }; |
56 | |
57 | static const struct pmc_bit_map *ext_adl_pfear_map[] = { |
58 | /* |
59 | * Check intel_pmc_core_ids[] users of cnp_reg_map for |
60 | * a list of core SoCs using this. |
61 | */ |
62 | adl_pfear_map, |
63 | NULL |
64 | }; |
65 | |
66 | static const struct pmc_bit_map adl_ltr_show_map[] = { |
67 | {"SOUTHPORT_A", CNP_PMC_LTR_SPA}, |
68 | {"SOUTHPORT_B", CNP_PMC_LTR_SPB}, |
69 | {"SATA", CNP_PMC_LTR_SATA}, |
70 | {"GIGABIT_ETHERNET", CNP_PMC_LTR_GBE}, |
71 | {"XHCI", CNP_PMC_LTR_XHCI}, |
72 | {"SOUTHPORT_F", ADL_PMC_LTR_SPF}, |
73 | {"ME", CNP_PMC_LTR_ME}, |
74 | /* EVA is Enterprise Value Add, doesn't really exist on PCH */ |
75 | {"SATA1", CNP_PMC_LTR_EVA}, |
76 | {"SOUTHPORT_C", CNP_PMC_LTR_SPC}, |
77 | {"HD_AUDIO", CNP_PMC_LTR_AZ}, |
78 | {"CNV", CNP_PMC_LTR_CNV}, |
79 | {"LPSS", CNP_PMC_LTR_LPSS}, |
80 | {"SOUTHPORT_D", CNP_PMC_LTR_SPD}, |
81 | {"SOUTHPORT_E", CNP_PMC_LTR_SPE}, |
82 | {"SATA2", CNP_PMC_LTR_CAM}, |
83 | {"ESPI", CNP_PMC_LTR_ESPI}, |
84 | {"SCC", CNP_PMC_LTR_SCC}, |
85 | {"ISH", CNP_PMC_LTR_ISH}, |
86 | {"UFSX2", CNP_PMC_LTR_UFSX2}, |
87 | {"EMMC", CNP_PMC_LTR_EMMC}, |
88 | /* |
89 | * Check intel_pmc_core_ids[] users of cnp_reg_map for |
90 | * a list of core SoCs using this. |
91 | */ |
92 | {"WIGIG", ICL_PMC_LTR_WIGIG}, |
93 | {"THC0", TGL_PMC_LTR_THC0}, |
94 | {"THC1", TGL_PMC_LTR_THC1}, |
95 | {"SOUTHPORT_G", CNP_PMC_LTR_RESERVED}, |
96 | |
97 | /* Below two cannot be used for LTR_IGNORE */ |
98 | {"CURRENT_PLATFORM", CNP_PMC_LTR_CUR_PLT}, |
99 | {"AGGREGATED_SYSTEM", CNP_PMC_LTR_CUR_ASLT}, |
100 | {} |
101 | }; |
102 | |
103 | static const struct pmc_bit_map adl_clocksource_status_map[] = { |
104 | {"CLKPART1_OFF_STS", BIT(0)}, |
105 | {"CLKPART2_OFF_STS", BIT(1)}, |
106 | {"CLKPART3_OFF_STS", BIT(2)}, |
107 | {"CLKPART4_OFF_STS", BIT(3)}, |
108 | {"CLKPART5_OFF_STS", BIT(4)}, |
109 | {"CLKPART6_OFF_STS", BIT(5)}, |
110 | {"CLKPART7_OFF_STS", BIT(6)}, |
111 | {"CLKPART8_OFF_STS", BIT(7)}, |
112 | {"PCIE0PLL_OFF_STS", BIT(10)}, |
113 | {"PCIE1PLL_OFF_STS", BIT(11)}, |
114 | {"PCIE2PLL_OFF_STS", BIT(12)}, |
115 | {"PCIE3PLL_OFF_STS", BIT(13)}, |
116 | {"PCIE4PLL_OFF_STS", BIT(14)}, |
117 | {"PCIE5PLL_OFF_STS", BIT(15)}, |
118 | {"PCIE6PLL_OFF_STS", BIT(16)}, |
119 | {"USB2PLL_OFF_STS", BIT(18)}, |
120 | {"OCPLL_OFF_STS", BIT(22)}, |
121 | {"AUDIOPLL_OFF_STS", BIT(23)}, |
122 | {"GBEPLL_OFF_STS", BIT(24)}, |
123 | {"Fast_XTAL_Osc_OFF_STS", BIT(25)}, |
124 | {"AC_Ring_Osc_OFF_STS", BIT(26)}, |
125 | {"MC_Ring_Osc_OFF_STS", BIT(27)}, |
126 | {"SATAPLL_OFF_STS", BIT(29)}, |
127 | {"USB3PLL_OFF_STS", BIT(31)}, |
128 | {} |
129 | }; |
130 | |
131 | static const struct pmc_bit_map adl_power_gating_status_0_map[] = { |
132 | {"PMC_PGD0_PG_STS", BIT(0)}, |
133 | {"DMI_PGD0_PG_STS", BIT(1)}, |
134 | {"ESPISPI_PGD0_PG_STS", BIT(2)}, |
135 | {"XHCI_PGD0_PG_STS", BIT(3)}, |
136 | {"SPA_PGD0_PG_STS", BIT(4)}, |
137 | {"SPB_PGD0_PG_STS", BIT(5)}, |
138 | {"SPC_PGD0_PG_STS", BIT(6)}, |
139 | {"GBE_PGD0_PG_STS", BIT(7)}, |
140 | {"SATA_PGD0_PG_STS", BIT(8)}, |
141 | {"DSP_PGD0_PG_STS", BIT(9)}, |
142 | {"DSP_PGD1_PG_STS", BIT(10)}, |
143 | {"DSP_PGD2_PG_STS", BIT(11)}, |
144 | {"DSP_PGD3_PG_STS", BIT(12)}, |
145 | {"SPD_PGD0_PG_STS", BIT(13)}, |
146 | {"LPSS_PGD0_PG_STS", BIT(14)}, |
147 | {"SMB_PGD0_PG_STS", BIT(16)}, |
148 | {"ISH_PGD0_PG_STS", BIT(17)}, |
149 | {"NPK_PGD0_PG_STS", BIT(19)}, |
150 | {"PECI_PGD0_PG_STS", BIT(21)}, |
151 | {"XDCI_PGD0_PG_STS", BIT(25)}, |
152 | {"EXI_PGD0_PG_STS", BIT(26)}, |
153 | {"CSE_PGD0_PG_STS", BIT(27)}, |
154 | {"KVMCC_PGD0_PG_STS", BIT(28)}, |
155 | {"PMT_PGD0_PG_STS", BIT(29)}, |
156 | {"CLINK_PGD0_PG_STS", BIT(30)}, |
157 | {"PTIO_PGD0_PG_STS", BIT(31)}, |
158 | {} |
159 | }; |
160 | |
161 | static const struct pmc_bit_map adl_power_gating_status_1_map[] = { |
162 | {"USBR0_PGD0_PG_STS", BIT(0)}, |
163 | {"SMT1_PGD0_PG_STS", BIT(2)}, |
164 | {"CSMERTC_PGD0_PG_STS", BIT(6)}, |
165 | {"CSMEPSF_PGD0_PG_STS", BIT(7)}, |
166 | {"CNVI_PGD0_PG_STS", BIT(19)}, |
167 | {"DSP_PGD4_PG_STS", BIT(26)}, |
168 | {"SPG_PGD0_PG_STS", BIT(27)}, |
169 | {"SPE_PGD0_PG_STS", BIT(28)}, |
170 | {} |
171 | }; |
172 | |
173 | static const struct pmc_bit_map adl_power_gating_status_2_map[] = { |
174 | {"THC0_PGD0_PG_STS", BIT(7)}, |
175 | {"THC1_PGD0_PG_STS", BIT(8)}, |
176 | {"SPF_PGD0_PG_STS", BIT(14)}, |
177 | {} |
178 | }; |
179 | |
180 | static const struct pmc_bit_map adl_d3_status_0_map[] = { |
181 | {"ISH_D3_STS", BIT(2)}, |
182 | {"LPSS_D3_STS", BIT(3)}, |
183 | {"XDCI_D3_STS", BIT(4)}, |
184 | {"XHCI_D3_STS", BIT(5)}, |
185 | {"SPA_D3_STS", BIT(12)}, |
186 | {"SPB_D3_STS", BIT(13)}, |
187 | {"SPC_D3_STS", BIT(14)}, |
188 | {"SPD_D3_STS", BIT(15)}, |
189 | {"SPE_D3_STS", BIT(16)}, |
190 | {"DSP_D3_STS", BIT(19)}, |
191 | {"SATA_D3_STS", BIT(20)}, |
192 | {"DMI_D3_STS", BIT(22)}, |
193 | {} |
194 | }; |
195 | |
196 | static const struct pmc_bit_map adl_d3_status_1_map[] = { |
197 | {"GBE_D3_STS", BIT(19)}, |
198 | {"CNVI_D3_STS", BIT(27)}, |
199 | {} |
200 | }; |
201 | |
202 | static const struct pmc_bit_map adl_d3_status_2_map[] = { |
203 | {"CSMERTC_D3_STS", BIT(1)}, |
204 | {"CSE_D3_STS", BIT(4)}, |
205 | {"KVMCC_D3_STS", BIT(5)}, |
206 | {"USBR0_D3_STS", BIT(6)}, |
207 | {"SMT1_D3_STS", BIT(8)}, |
208 | {"PTIO_D3_STS", BIT(16)}, |
209 | {"PMT_D3_STS", BIT(17)}, |
210 | {} |
211 | }; |
212 | |
213 | static const struct pmc_bit_map adl_d3_status_3_map[] = { |
214 | {"THC0_D3_STS", BIT(14)}, |
215 | {"THC1_D3_STS", BIT(15)}, |
216 | {} |
217 | }; |
218 | |
219 | static const struct pmc_bit_map adl_vnn_req_status_0_map[] = { |
220 | {"ISH_VNN_REQ_STS", BIT(2)}, |
221 | {"ESPISPI_VNN_REQ_STS", BIT(18)}, |
222 | {"DSP_VNN_REQ_STS", BIT(19)}, |
223 | {} |
224 | }; |
225 | |
226 | static const struct pmc_bit_map adl_vnn_req_status_1_map[] = { |
227 | {"NPK_VNN_REQ_STS", BIT(4)}, |
228 | {"EXI_VNN_REQ_STS", BIT(9)}, |
229 | {"GBE_VNN_REQ_STS", BIT(19)}, |
230 | {"SMB_VNN_REQ_STS", BIT(25)}, |
231 | {"CNVI_VNN_REQ_STS", BIT(27)}, |
232 | {} |
233 | }; |
234 | |
235 | static const struct pmc_bit_map adl_vnn_req_status_2_map[] = { |
236 | {"CSMERTC_VNN_REQ_STS", BIT(1)}, |
237 | {"CSE_VNN_REQ_STS", BIT(4)}, |
238 | {"SMT1_VNN_REQ_STS", BIT(8)}, |
239 | {"CLINK_VNN_REQ_STS", BIT(14)}, |
240 | {"GPIOCOM4_VNN_REQ_STS", BIT(20)}, |
241 | {"GPIOCOM3_VNN_REQ_STS", BIT(21)}, |
242 | {"GPIOCOM2_VNN_REQ_STS", BIT(22)}, |
243 | {"GPIOCOM1_VNN_REQ_STS", BIT(23)}, |
244 | {"GPIOCOM0_VNN_REQ_STS", BIT(24)}, |
245 | {} |
246 | }; |
247 | |
248 | static const struct pmc_bit_map adl_vnn_req_status_3_map[] = { |
249 | {"GPIOCOM5_VNN_REQ_STS", BIT(11)}, |
250 | {} |
251 | }; |
252 | |
253 | static const struct pmc_bit_map adl_vnn_misc_status_map[] = { |
254 | {"CPU_C10_REQ_STS", BIT(0)}, |
255 | {"PCIe_LPM_En_REQ_STS", BIT(3)}, |
256 | {"ITH_REQ_STS", BIT(5)}, |
257 | {"CNVI_REQ_STS", BIT(6)}, |
258 | {"ISH_REQ_STS", BIT(7)}, |
259 | {"USB2_SUS_PG_Sys_REQ_STS", BIT(10)}, |
260 | {"PCIe_Clk_REQ_STS", BIT(12)}, |
261 | {"MPHY_Core_DL_REQ_STS", BIT(16)}, |
262 | {"Break-even_En_REQ_STS", BIT(17)}, |
263 | {"MPHY_SUS_REQ_STS", BIT(22)}, |
264 | {"xDCI_attached_REQ_STS", BIT(24)}, |
265 | {} |
266 | }; |
267 | |
268 | static const struct pmc_bit_map *adl_lpm_maps[] = { |
269 | adl_clocksource_status_map, |
270 | adl_power_gating_status_0_map, |
271 | adl_power_gating_status_1_map, |
272 | adl_power_gating_status_2_map, |
273 | adl_d3_status_0_map, |
274 | adl_d3_status_1_map, |
275 | adl_d3_status_2_map, |
276 | adl_d3_status_3_map, |
277 | adl_vnn_req_status_0_map, |
278 | adl_vnn_req_status_1_map, |
279 | adl_vnn_req_status_2_map, |
280 | adl_vnn_req_status_3_map, |
281 | adl_vnn_misc_status_map, |
282 | tgl_signal_status_map, |
283 | NULL |
284 | }; |
285 | |
286 | const struct pmc_reg_map adl_reg_map = { |
287 | .pfear_sts = ext_adl_pfear_map, |
288 | .slp_s0_offset = ADL_PMC_SLP_S0_RES_COUNTER_OFFSET, |
289 | .slp_s0_res_counter_step = TGL_PMC_SLP_S0_RES_COUNTER_STEP, |
290 | .ltr_show_sts = adl_ltr_show_map, |
291 | .msr_sts = msr_map, |
292 | .ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET, |
293 | .regmap_length = CNP_PMC_MMIO_REG_LEN, |
294 | .ppfear0_offset = CNP_PMC_HOST_PPFEAR0A, |
295 | .ppfear_buckets = CNP_PPFEAR_NUM_ENTRIES, |
296 | .pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET, |
297 | .pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT, |
298 | .ltr_ignore_max = ADL_NUM_IP_IGN_ALLOWED, |
299 | .lpm_num_modes = ADL_LPM_NUM_MODES, |
300 | .lpm_num_maps = ADL_LPM_NUM_MAPS, |
301 | .lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2, |
302 | .etr3_offset = ETR3_OFFSET, |
303 | .lpm_sts_latch_en_offset = ADL_LPM_STATUS_LATCH_EN_OFFSET, |
304 | .lpm_priority_offset = ADL_LPM_PRI_OFFSET, |
305 | .lpm_en_offset = ADL_LPM_EN_OFFSET, |
306 | .lpm_residency_offset = ADL_LPM_RESIDENCY_OFFSET, |
307 | .lpm_sts = adl_lpm_maps, |
308 | .lpm_status_offset = ADL_LPM_STATUS_OFFSET, |
309 | .lpm_live_status_offset = ADL_LPM_LIVE_STATUS_OFFSET, |
310 | .pson_residency_offset = TGL_PSON_RESIDENCY_OFFSET, |
311 | .pson_residency_counter_step = TGL_PSON_RES_COUNTER_STEP, |
312 | }; |
313 | |
314 | struct pmc_dev_info adl_pmc_dev = { |
315 | .map = &adl_reg_map, |
316 | .suspend = cnl_suspend, |
317 | .resume = cnl_resume, |
318 | }; |
319 |
Definitions
- adl_pfear_map
- ext_adl_pfear_map
- adl_ltr_show_map
- adl_clocksource_status_map
- adl_power_gating_status_0_map
- adl_power_gating_status_1_map
- adl_power_gating_status_2_map
- adl_d3_status_0_map
- adl_d3_status_1_map
- adl_d3_status_2_map
- adl_d3_status_3_map
- adl_vnn_req_status_0_map
- adl_vnn_req_status_1_map
- adl_vnn_req_status_2_map
- adl_vnn_req_status_3_map
- adl_vnn_misc_status_map
- adl_lpm_maps
- adl_reg_map
Improve your Profiling and Debugging skills
Find out more