MCPcopy Create free account
hub / github.com/F-Stack/f-stack / aw_mc_mp_start_cpu

Function aw_mc_mp_start_cpu

freebsd/arm/allwinner/aw_mp.c:203–247  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

201}
202
203static void
204aw_mc_mp_start_cpu(bus_space_handle_t cpuscfg, bus_space_handle_t cpuxcfg,
205 bus_space_handle_t prcm, int cluster, int cpu)
206{
207 uint32_t val;
208 int i;
209
210 /* Assert core reset */
211 val = bus_space_read_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_RST(cluster));
212 val &= ~(1 << cpu);
213 bus_space_write_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_RST(cluster), val);
214
215 /* Assert power-on reset */
216 val = bus_space_read_4(fdtbus_bs_tag, cpuscfg, CPUS_CL_RST(cluster));
217 val &= ~(1 << cpu);
218 bus_space_write_4(fdtbus_bs_tag, cpuscfg, CPUS_CL_RST(cluster), val);
219
220 /* Disable automatic L1 cache invalidate at reset */
221 val = bus_space_read_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_CTRL0(cluster));
222 val &= ~(1 << cpu);
223 bus_space_write_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_CTRL0(cluster), val);
224
225 /* Release power clamp */
226 for (i = 0; i <= CPU_PWR_CLAMP_STEPS; i++)
227 bus_space_write_4(fdtbus_bs_tag, prcm,
228 PRCM_CL_PWR_CLAMP(cluster, cpu), 0xff >> i);
229 while (bus_space_read_4(fdtbus_bs_tag, prcm,
230 PRCM_CL_PWR_CLAMP(cluster, cpu)) != 0)
231 ;
232
233 /* Clear power-off gating */
234 val = bus_space_read_4(fdtbus_bs_tag, prcm, PRCM_CL_PWROFF(cluster));
235 val &= ~(1 << cpu);
236 bus_space_write_4(fdtbus_bs_tag, prcm, PRCM_CL_PWROFF(cluster), val);
237
238 /* De-assert power-on reset */
239 val = bus_space_read_4(fdtbus_bs_tag, cpuscfg, CPUS_CL_RST(cluster));
240 val |= (1 << cpu);
241 bus_space_write_4(fdtbus_bs_tag, cpuscfg, CPUS_CL_RST(cluster), val);
242
243 /* De-assert core reset */
244 val = bus_space_read_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_RST(cluster));
245 val |= (1 << cpu);
246 bus_space_write_4(fdtbus_bs_tag, cpuxcfg, CPUX_CL_RST(cluster), val);
247}
248
249static void
250aw_mc_mp_start_ap(bus_space_handle_t cpuscfg, bus_space_handle_t cpuxcfg,

Callers 1

aw_mc_mp_start_apFunction · 0.85

Calls 2

bus_space_read_4Function · 0.85
bus_space_write_4Function · 0.85

Tested by

no test coverage detected