Lines Matching full:cluster

29  * settings for RPU cluster mode which
30 * reflects possible values of xlnx,cluster-mode dt-property
87 /* In lockstep mode cluster combines each 64KB TCM and makes 128KB TCM */
119 * @dev: r5f subsystem cluster device node
120 * @mode: cluster mode of type zynqmp_r5_cluster_mode
121 * @core_count: number of r5 cores used for this cluster mode
306 * set RPU cluster and TCM operation mode
309 * @fw_reg_val: value expected by firmware to configure RPU cluster mode
699 * allocate and add remoteproc carveouts for TCM memory based on cluster mode
705 struct zynqmp_r5_cluster *cluster; in add_tcm_banks() local
715 cluster = dev_get_drvdata(dev->parent); in add_tcm_banks()
716 if (!cluster) { in add_tcm_banks()
726 if (cluster->mode == SPLIT_MODE) in add_tcm_banks()
728 else if (cluster->mode == LOCKSTEP_MODE) in add_tcm_banks()
887 * @cluster: pointer to zynqmp_r5_cluster type object
891 static int zynqmp_r5_get_tcm_node(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_get_tcm_node() argument
894 struct device *dev = cluster->dev; in zynqmp_r5_get_tcm_node()
899 if (cluster->mode == SPLIT_MODE) { in zynqmp_r5_get_tcm_node()
908 tcm_bank_count = tcm_bank_count / cluster->core_count; in zynqmp_r5_get_tcm_node()
916 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_get_tcm_node()
917 r5_core = cluster->r5_cores[i]; in zynqmp_r5_get_tcm_node()
945 * @cluster: pointer to zynqmp_r5_cluster type object
946 * @fw_reg_val: value expected by firmware to configure RPU cluster mode
951 static int zynqmp_r5_core_init(struct zynqmp_r5_cluster *cluster, in zynqmp_r5_core_init() argument
955 struct device *dev = cluster->dev; in zynqmp_r5_core_init()
959 ret = zynqmp_r5_get_tcm_node(cluster); in zynqmp_r5_core_init()
965 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_core_init()
966 r5_core = cluster->r5_cores[i]; in zynqmp_r5_core_init()
978 dev_err(dev, "failed to set r5 cluster mode %d, err %d\n", in zynqmp_r5_core_init()
979 cluster->mode, ret); in zynqmp_r5_core_init()
991 * @cluster: pointer to zynqmp_r5_cluster type object
995 static int zynqmp_r5_cluster_init(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_cluster_init() argument
998 struct device *dev = cluster->dev; in zynqmp_r5_cluster_init()
1009 ret = of_property_read_u32(dev_node, "xlnx,cluster-mode", &cluster_mode); in zynqmp_r5_cluster_init()
1017 dev_err(dev, "Invalid xlnx,cluster-mode property\n"); in zynqmp_r5_cluster_init()
1032 dev_err(dev, "driver does not support cluster mode %d\n", cluster_mode); in zynqmp_r5_cluster_init()
1109 cluster->mode = cluster_mode; in zynqmp_r5_cluster_init()
1110 cluster->core_count = core_count; in zynqmp_r5_cluster_init()
1111 cluster->r5_cores = r5_cores; in zynqmp_r5_cluster_init()
1113 ret = zynqmp_r5_core_init(cluster, fw_reg_val, tcm_mode); in zynqmp_r5_cluster_init()
1116 cluster->core_count = 0; in zynqmp_r5_cluster_init()
1117 cluster->r5_cores = NULL; in zynqmp_r5_cluster_init()
1149 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_cluster_exit() local
1153 cluster = platform_get_drvdata(pdev); in zynqmp_r5_cluster_exit()
1154 if (!cluster) in zynqmp_r5_cluster_exit()
1157 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_cluster_exit()
1158 r5_core = cluster->r5_cores[i]; in zynqmp_r5_cluster_exit()
1166 kfree(cluster->r5_cores); in zynqmp_r5_cluster_exit()
1167 kfree(cluster); in zynqmp_r5_cluster_exit()
1176 * @pdev: domain platform device for R5 cluster
1182 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_remoteproc_probe() local
1186 cluster = kzalloc(sizeof(*cluster), GFP_KERNEL); in zynqmp_r5_remoteproc_probe()
1187 if (!cluster) in zynqmp_r5_remoteproc_probe()
1190 cluster->dev = dev; in zynqmp_r5_remoteproc_probe()
1195 kfree(cluster); in zynqmp_r5_remoteproc_probe()
1200 platform_set_drvdata(pdev, cluster); in zynqmp_r5_remoteproc_probe()
1202 ret = zynqmp_r5_cluster_init(cluster); in zynqmp_r5_remoteproc_probe()
1204 kfree(cluster); in zynqmp_r5_remoteproc_probe()