Lines Matching +full:sync +full:- +full:freq

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2008-2012 Semihalf.
154 if ((cpus = OF_finddevice("/cpus")) != -1) { in mpc85xx_attach()
167 ccsr = -1; in mpc85xx_attach()
168 for (name = soc_name_guesses; *name != NULL && ccsr == -1; name++) in mpc85xx_attach()
170 if (ccsr == -1) { in mpc85xx_attach()
187 if (ccsr == -1) in mpc85xx_attach()
190 OF_getprop(ccsr, "#size-cells", &scells, sizeof(scells)); in mpc85xx_attach()
191 OF_getprop(ccsr, "#address-cells", &acells, sizeof(acells)); in mpc85xx_attach()
192 OF_searchprop(OF_parent(ccsr), "#address-cells", &pacells, in mpc85xx_attach()
226 pcell_t freq; in mpc85xx_timebase_freq() local
230 /* Backward compatibility. See 8-STABLE. */ in mpc85xx_timebase_freq()
239 if ((cpus = OF_finddevice("/cpus")) == -1) in mpc85xx_timebase_freq()
245 switch (OF_getproplen(child, "timebase-frequency")) { in mpc85xx_timebase_freq()
249 OF_getprop(child, "timebase-frequency", &tbase, sizeof(tbase)); in mpc85xx_timebase_freq()
256 OF_getprop(child, "timebase-frequency", &tbase, sizeof(tbase)); in mpc85xx_timebase_freq()
264 freq = 0; in mpc85xx_timebase_freq()
265 if (OF_getprop(child, "bus-frequency", (void *)&freq, in mpc85xx_timebase_freq()
266 sizeof(freq)) <= 0) in mpc85xx_timebase_freq()
269 if (freq == 0) in mpc85xx_timebase_freq()
277 ticks = freq / 32; in mpc85xx_timebase_freq()
279 ticks = freq / 8; in mpc85xx_timebase_freq()
293 cpuref->cr_cpuid = cpu; in mpc85xx_smp_first_cpu()
294 cpuref->cr_hwref = cpuref->cr_cpuid; in mpc85xx_smp_first_cpu()
296 printf("powerpc_smp_first_cpu: cpuid %d\n", cpuref->cr_cpuid); in mpc85xx_smp_first_cpu()
309 cpuref->cr_cpuid = cpu++; in mpc85xx_smp_next_cpu()
310 cpuref->cr_hwref = cpuref->cr_cpuid; in mpc85xx_smp_next_cpu()
312 printf("powerpc_smp_next_cpu: cpuid %d\n", cpuref->cr_cpuid); in mpc85xx_smp_next_cpu()
321 cpuref->cr_cpuid = mfspr(SPR_PIR); in mpc85xx_smp_get_bsp()
322 cpuref->cr_hwref = cpuref->cr_cpuid; in mpc85xx_smp_get_bsp()
339 for (i = 0, node = OF_child(node); i < pc->pc_cpuid; in mpc85xx_smp_start_cpu_epapr()
342 if (OF_getencprop(node, "cpu-release-addr", (pcell_t *)&rel_pa, in mpc85xx_smp_start_cpu_epapr()
343 sizeof(rel_pa)) == -1) { in mpc85xx_smp_start_cpu_epapr()
358 rel->pir = pc->pc_cpuid; __asm __volatile("sync" ::: "memory"); in mpc85xx_smp_start_cpu_epapr()
359 rel->entry_h = (bptr >> 32); __asm __volatile("sync" ::: "memory"); in mpc85xx_smp_start_cpu_epapr()
361 rel->entry_l = bptr & 0xffffffff; __asm __volatile("sync" ::: "memory"); in mpc85xx_smp_start_cpu_epapr()
365 pc->pc_cpuid, rel); in mpc85xx_smp_start_cpu_epapr()
388 cpuid = pc->pc_cpuid; in mpc85xx_smp_start_cpu()
391 printf("%s: CPU %d is disabled!\n", __func__, pc->pc_cpuid); in mpc85xx_smp_start_cpu()
392 return (-1); in mpc85xx_smp_start_cpu()
398 cpuid = pc->pc_cpuid + 24; in mpc85xx_smp_start_cpu()
403 * bp_kernload and bp_virtaddr are in the boot page. Sync the cache in mpc85xx_smp_start_cpu()
420 printf("SMP: CPU %d already out of hold-off state!\n", in mpc85xx_smp_start_cpu()
421 pc->pc_cpuid); in mpc85xx_smp_start_cpu()
453 (tgt << OCP85XX_TRGT_SHIFT_QORIQ) | (ffsl(PAGE_SIZE) - 2)); in mpc85xx_smp_start_cpu()
464 ccsr_write4(CCSR_CTBCKSELR, reg & ~(1 << pc->pc_cpuid)); in mpc85xx_smp_start_cpu()
468 ccsr_write4(CCSR_CTBENR, reg | (1 << pc->pc_cpuid)); in mpc85xx_smp_start_cpu()
479 * Release AP from hold-off state in mpc85xx_smp_start_cpu()
487 while (!pc->pc_awake && timeout--) in mpc85xx_smp_start_cpu()
503 if (!pc->pc_awake) in mpc85xx_smp_start_cpu()
504 panic("SMP: CPU %d didn't wake up.\n", pc->pc_cpuid); in mpc85xx_smp_start_cpu()
505 return ((pc->pc_awake) ? 0 : EBUSY); in mpc85xx_smp_start_cpu()
585 bus_write_4(sc->sc_mem, RCPM_CTBENR, 0); in mpc85xx_rcpm_freeze_timebase()
587 bus_write_4(sc->sc_mem, RCPM_CTBENR, (1 << maxcpu) - 1); in mpc85xx_rcpm_freeze_timebase()
593 if (!ofw_bus_is_compatible(dev, "fsl,qoriq-rcpm-1.0")) in mpc85xx_rcpm_probe()
611 sc->sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, in mpc85xx_rcpm_attach()
650 devdisr = bus_read_4(sc->sc_mem, GUTS_DEVDISR); in mpc85xx_guts_freeze_timebase()
652 bus_write_4(sc->sc_mem, GUTS_DEVDISR, in mpc85xx_guts_freeze_timebase()
655 bus_write_4(sc->sc_mem, GUTS_DEVDISR, in mpc85xx_guts_freeze_timebase()
662 if (!ofw_bus_is_compatible(dev, "fsl,mpc8572-guts") && in mpc85xx_guts_probe()
663 !ofw_bus_is_compatible(dev, "fsl,p1020-guts") && in mpc85xx_guts_probe()
664 !ofw_bus_is_compatible(dev, "fsl,p1021-guts") && in mpc85xx_guts_probe()
665 !ofw_bus_is_compatible(dev, "fsl,p1022-guts") && in mpc85xx_guts_probe()
666 !ofw_bus_is_compatible(dev, "fsl,p1023-guts") && in mpc85xx_guts_probe()
667 !ofw_bus_is_compatible(dev, "fsl,p2020-guts")) in mpc85xx_guts_probe()
685 sc->sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, in mpc85xx_guts_attach()