Lines Matching defs:cluster

74  * @cores: list of R5 cores within the cluster
119 * @cluster: cached pointer to parent cluster structure
129 struct k3_r5_cluster *cluster;
249 static int k3_r5_lockstep_reset(struct k3_r5_cluster *cluster)
255 list_for_each_entry(core, &cluster->cores, elem) {
266 list_for_each_entry(core, &cluster->cores, elem) {
279 list_for_each_entry_continue_reverse(core, &cluster->cores, elem) {
284 core = list_last_entry(&cluster->cores, struct k3_r5_core, elem);
286 list_for_each_entry_from_reverse(core, &cluster->cores, elem) {
294 static int k3_r5_lockstep_release(struct k3_r5_cluster *cluster)
300 list_for_each_entry_reverse(core, &cluster->cores, elem) {
312 list_for_each_entry_reverse(core, &cluster->cores, elem) {
324 list_for_each_entry_continue(core, &cluster->cores, elem) {
328 core = list_first_entry(&cluster->cores, struct k3_r5_core, elem);
330 list_for_each_entry_from(core, &cluster->cores, elem) {
362 struct k3_r5_cluster *cluster = kproc->cluster;
367 ret = (cluster->mode == CLUSTER_MODE_LOCKSTEP) ?
368 k3_r5_lockstep_release(cluster) : k3_r5_split_release(core);
401 struct k3_r5_cluster *cluster = kproc->cluster;
406 ret = (cluster->mode == CLUSTER_MODE_LOCKSTEP) ?
407 k3_r5_lockstep_reset(cluster) : k3_r5_split_reset(core);
429 struct k3_r5_cluster *cluster = kproc->cluster;
474 if (cluster->mode == CLUSTER_MODE_LOCKSTEP) {
475 list_for_each_entry_reverse(core, &cluster->cores, elem) {
489 list_for_each_entry_continue(core, &cluster->cores, elem) {
520 struct k3_r5_cluster *cluster = kproc->cluster;
525 if (cluster->mode == CLUSTER_MODE_LOCKSTEP) {
526 list_for_each_entry(core, &cluster->cores, elem) {
544 list_for_each_entry_from_reverse(core, &cluster->cores, elem) {
633 * Each R5FSS has a cluster-level setting for configuring the processor
649 * DT are adjusted accordingly as per the permitted cluster mode. All cluster
653 * The function behavior is different based on the cluster mode. The R5F cores
663 struct k3_r5_cluster *cluster = kproc->cluster;
672 core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem);
673 core = (cluster->mode == CLUSTER_MODE_LOCKSTEP) ? core0 : kproc->core;
684 if (!lockstep_en && cluster->mode == CLUSTER_MODE_LOCKSTEP) {
685 dev_err(cluster->dev, "lockstep mode not permitted, force configuring for split-mode\n");
686 cluster->mode = CLUSTER_MODE_SPLIT;
717 if (cluster->mode == CLUSTER_MODE_LOCKSTEP) {
723 list_for_each_entry(temp, &cluster->cores, elem) {
860 struct k3_r5_cluster *cluster = platform_get_drvdata(pdev);
869 core1 = list_last_entry(&cluster->cores, struct k3_r5_core, elem);
870 list_for_each_entry(core, &cluster->cores, elem) {
892 kproc->cluster = cluster;
919 if (cluster->mode == CLUSTER_MODE_LOCKSTEP)
934 if (cluster->mode == CLUSTER_MODE_SPLIT && core == core1) {
945 struct k3_r5_cluster *cluster = platform_get_drvdata(pdev);
955 core = (cluster->mode == CLUSTER_MODE_LOCKSTEP) ?
956 list_first_entry(&cluster->cores, struct k3_r5_core, elem) :
957 list_last_entry(&cluster->cores, struct k3_r5_core, elem);
959 list_for_each_entry_from_reverse(core, &cluster->cores, elem) {
1260 struct k3_r5_cluster *cluster = platform_get_drvdata(pdev);
1264 list_for_each_entry_safe_reverse(core, temp, &cluster->cores, elem) {
1273 struct k3_r5_cluster *cluster = platform_get_drvdata(pdev);
1301 list_add_tail(&core->elem, &cluster->cores);
1315 struct k3_r5_cluster *cluster;
1319 cluster = devm_kzalloc(dev, sizeof(*cluster), GFP_KERNEL);
1320 if (!cluster)
1323 cluster->dev = dev;
1324 cluster->mode = CLUSTER_MODE_LOCKSTEP;
1325 INIT_LIST_HEAD(&cluster->cores);
1327 ret = of_property_read_u32(np, "ti,cluster-mode", &cluster->mode);
1329 dev_err(dev, "invalid format for ti,cluster-mode, ret = %d\n",
1336 dev_err(dev, "MCU cluster requires both R5F cores to be enabled, num_cores = %d\n",
1341 platform_set_drvdata(pdev, cluster);