Lines Matching full:cluster

33  * settings for RPU cluster mode which
34 * reflects possible values of xlnx,cluster-mode dt-property
122 /* In lockstep mode cluster uses each 64KB TCM from second core as well */
160 * struct zynqmp_r5_cluster - remoteproc cluster's internal data
162 * @dev: r5f subsystem cluster device node
163 * @mode: cluster mode of type zynqmp_r5_cluster_mode
164 * @core_count: number of r5 cores used for this cluster mode
1049 static int zynqmp_r5_get_tcm_node_from_dt(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_get_tcm_node_from_dt() argument
1061 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_get_tcm_node_from_dt()
1062 r5_core = cluster->r5_cores[i]; in zynqmp_r5_get_tcm_node_from_dt()
1152 * @cluster: pointer to zynqmp_r5_cluster type object
1156 static int zynqmp_r5_get_tcm_node(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_get_tcm_node() argument
1159 struct device *dev = cluster->dev; in zynqmp_r5_get_tcm_node()
1164 if (cluster->mode == SPLIT_MODE) { in zynqmp_r5_get_tcm_node()
1173 tcm_bank_count = tcm_bank_count / cluster->core_count; in zynqmp_r5_get_tcm_node()
1181 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_get_tcm_node()
1182 r5_core = cluster->r5_cores[i]; in zynqmp_r5_get_tcm_node()
1210 * @cluster: pointer to zynqmp_r5_cluster type object
1211 * @fw_reg_val: value expected by firmware to configure RPU cluster mode
1216 static int zynqmp_r5_core_init(struct zynqmp_r5_cluster *cluster, in zynqmp_r5_core_init() argument
1220 struct device *dev = cluster->dev; in zynqmp_r5_core_init()
1224 r5_core = cluster->r5_cores[0]; in zynqmp_r5_core_init()
1228 ret = zynqmp_r5_get_tcm_node_from_dt(cluster); in zynqmp_r5_core_init()
1230 ret = zynqmp_r5_get_tcm_node(cluster); in zynqmp_r5_core_init()
1237 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_core_init()
1238 r5_core = cluster->r5_cores[i]; in zynqmp_r5_core_init()
1276 * @cluster: pointer to zynqmp_r5_cluster type object
1280 static int zynqmp_r5_cluster_init(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_cluster_init() argument
1283 struct device *dev = cluster->dev; in zynqmp_r5_cluster_init()
1294 ret = of_property_read_u32(dev_node, "xlnx,cluster-mode", &cluster_mode); in zynqmp_r5_cluster_init()
1302 dev_err(dev, "Invalid xlnx,cluster-mode property\n"); in zynqmp_r5_cluster_init()
1315 dev_err(dev, "driver does not support cluster mode %d\n", cluster_mode); in zynqmp_r5_cluster_init()
1341 * For now, no more than two cores are expected per cluster in zynqmp_r5_cluster_init()
1409 cluster->mode = cluster_mode; in zynqmp_r5_cluster_init()
1410 cluster->core_count = core_count; in zynqmp_r5_cluster_init()
1411 cluster->r5_cores = r5_cores; in zynqmp_r5_cluster_init()
1413 ret = zynqmp_r5_core_init(cluster, fw_reg_val, tcm_mode); in zynqmp_r5_cluster_init()
1416 cluster->core_count = 0; in zynqmp_r5_cluster_init()
1417 cluster->r5_cores = NULL; in zynqmp_r5_cluster_init()
1449 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_cluster_exit() local
1453 cluster = platform_get_drvdata(pdev); in zynqmp_r5_cluster_exit()
1454 if (!cluster) in zynqmp_r5_cluster_exit()
1457 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_cluster_exit()
1458 r5_core = cluster->r5_cores[i]; in zynqmp_r5_cluster_exit()
1467 kfree(cluster->r5_cores); in zynqmp_r5_cluster_exit()
1468 kfree(cluster); in zynqmp_r5_cluster_exit()
1476 * @pdev: domain platform device for cluster
1483 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_remoteproc_shutdown() local
1488 cluster = platform_get_drvdata(pdev); in zynqmp_r5_remoteproc_shutdown()
1490 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_remoteproc_shutdown()
1491 r5_core = cluster->r5_cores[i]; in zynqmp_r5_remoteproc_shutdown()
1505 dev_err(cluster->dev, "failed to %s rproc %d\n", in zynqmp_r5_remoteproc_shutdown()
1516 * @pdev: domain platform device for R5 cluster
1522 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_remoteproc_probe() local
1526 cluster = kzalloc(sizeof(*cluster), GFP_KERNEL); in zynqmp_r5_remoteproc_probe()
1527 if (!cluster) in zynqmp_r5_remoteproc_probe()
1530 cluster->dev = dev; in zynqmp_r5_remoteproc_probe()
1535 kfree(cluster); in zynqmp_r5_remoteproc_probe()
1540 platform_set_drvdata(pdev, cluster); in zynqmp_r5_remoteproc_probe()
1542 ret = zynqmp_r5_cluster_init(cluster); in zynqmp_r5_remoteproc_probe()
1544 kfree(cluster); in zynqmp_r5_remoteproc_probe()