Lines Matching full:cores

94  * @cores: list of R5 cores within the cluster
101 struct list_head cores; member
185 /* assert local reset on all applicable cores */ in k3_r5_lockstep_reset()
186 list_for_each_entry(core, &cluster->cores, elem) { in k3_r5_lockstep_reset()
196 /* disable PSC modules on all applicable cores */ in k3_r5_lockstep_reset()
197 list_for_each_entry(core, &cluster->cores, elem) { in k3_r5_lockstep_reset()
211 list_for_each_entry_continue_reverse(core, &cluster->cores, elem) { in k3_r5_lockstep_reset()
217 core = list_last_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_lockstep_reset()
219 list_for_each_entry_from_reverse(core, &cluster->cores, elem) { in k3_r5_lockstep_reset()
233 /* enable PSC modules on all applicable cores */ in k3_r5_lockstep_release()
234 list_for_each_entry_reverse(core, &cluster->cores, elem) { in k3_r5_lockstep_release()
246 /* deassert local reset on all applicable cores */ in k3_r5_lockstep_release()
247 list_for_each_entry_reverse(core, &cluster->cores, elem) { in k3_r5_lockstep_release()
259 list_for_each_entry_continue(core, &cluster->cores, elem) { in k3_r5_lockstep_release()
263 core = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_lockstep_release()
265 list_for_each_entry_from(core, &cluster->cores, elem) { in k3_r5_lockstep_release()
288 * The R5F cores have controls for both a reset and a halt/run. The code
291 * applicable cores to allow loading into the TCMs. The .prepare() ops is
293 * by the .start() ops after loading to actually let the R5 cores run.
296 * execute code, but combines the TCMs from both cores. The resets for both
297 * cores need to be released to make this possible, as the TCMs are in general
315 * R5 cores require to be powered on sequentially, core0 should be in in k3_r5_rproc_prepare()
324 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_prepare()
325 core1 = list_last_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_prepare()
347 dev_err(dev, "unable to enable cores for TCM loading, ret = %d\n", in k3_r5_rproc_prepare()
388 * resets on all applicable cores for the rproc device (depending on LockStep
390 * cores. The cores themselves are only halted in the .stop() ops, and the
395 * both cores. The access is made possible only with releasing the resets for
396 * both cores, but with only Core0 unhalted. This function re-uses the same
410 * Ensure power-down of cores is sequential in split mode. Core1 must in k3_r5_rproc_unprepare()
416 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_unprepare()
417 core1 = list_last_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_unprepare()
434 dev_err(dev, "unable to disable cores, ret = %d\n", ret); in k3_r5_rproc_unprepare()
454 * unhalt both the cores to start the execution - Core1 needs to be unhalted
482 /* unhalt/run all applicable cores */ in k3_r5_rproc_start()
484 list_for_each_entry_reverse(core, &cluster->cores, elem) { in k3_r5_rproc_start()
498 list_for_each_entry_continue(core, &cluster->cores, elem) { in k3_r5_rproc_start()
510 * of cores the operations are performed are also in general reverse to that
536 /* halt all applicable cores */ in k3_r5_rproc_stop()
538 list_for_each_entry(core, &cluster->cores, elem) { in k3_r5_rproc_stop()
554 list_for_each_entry_from_reverse(core, &cluster->cores, elem) { in k3_r5_rproc_stop()
623 * the cores are halted before the .prepare() step.
634 * The function behavior is different based on the cluster mode. The R5F cores
639 * both the cores with the same settings, before reconfiguing again for
654 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_configure()
694 * permitted cores in k3_r5_rproc_configure()
729 * cores are programmed symmetrically in LockStep. LockStep in k3_r5_rproc_configure()
732 list_for_each_entry(temp, &cluster->cores, elem) { in k3_r5_rproc_configure()
767 * cores are usable in Split-mode, but only the Core0 TCMs can be used in
789 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_adjust_tcm_sizes()
828 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_rproc_configure_mode()
850 * Skip the waiting mechanism for sequential power-on of cores if the in k3_r5_rproc_configure_mode()
941 * The R5F cores can place ATCM & BTCM anywhere in its address in k3_r5_core_of_get_internal_memories()
1032 core1 = list_last_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_cluster_rproc_init()
1033 list_for_each_entry(core, &cluster->cores, elem) { in k3_r5_cluster_rproc_init()
1110 list_for_each_entry(core, &cluster->cores, elem) { in k3_r5_cluster_rproc_init()
1195 list_first_entry(&cluster->cores, struct k3_r5_core, elem) : in k3_r5_cluster_rproc_exit()
1196 list_last_entry(&cluster->cores, struct k3_r5_core, elem); in k3_r5_cluster_rproc_exit()
1198 list_for_each_entry_from_reverse(core, &cluster->cores, elem) { in k3_r5_cluster_rproc_exit()
1293 list_for_each_entry_safe_reverse(core, temp, &cluster->cores, elem) { in k3_r5_cluster_of_exit()
1328 list_add_tail(&core->elem, &cluster->cores); in k3_r5_cluster_of_init()
1359 INIT_LIST_HEAD(&cluster->cores); in k3_r5_probe()
1391 "MCU cluster requires both R5F cores to be enabled but num_cores is set to = %d\n", in k3_r5_probe()