Lines Matching full:cluster
29 * settings for RPU cluster mode which
30 * reflects possible values of xlnx,cluster-mode dt-property
109 * @dev: r5f subsystem cluster device node
110 * @mode: cluster mode of type zynqmp_r5_cluster_mode
111 * @core_count: number of r5 cores used for this cluster mode
296 * set RPU cluster and TCM operation mode
299 * @fw_reg_val: value expected by firmware to configure RPU cluster mode
704 * allocate and add remoteproc carveouts for TCM memory based on cluster mode
710 struct zynqmp_r5_cluster *cluster; in add_tcm_banks() local
720 cluster = dev_get_drvdata(dev->parent); in add_tcm_banks()
721 if (!cluster) { in add_tcm_banks()
731 if (cluster->mode == SPLIT_MODE) in add_tcm_banks()
733 else if (cluster->mode == LOCKSTEP_MODE) in add_tcm_banks()
892 * @cluster: pointer to zynqmp_r5_cluster type object
896 static int zynqmp_r5_get_tcm_node(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_get_tcm_node() argument
898 struct device *dev = cluster->dev; in zynqmp_r5_get_tcm_node()
906 tcm_bank_count = tcm_bank_count / cluster->core_count; in zynqmp_r5_get_tcm_node()
914 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_get_tcm_node()
915 r5_core = cluster->r5_cores[i]; in zynqmp_r5_get_tcm_node()
943 * @cluster: pointer to zynqmp_r5_cluster type object
944 * @fw_reg_val: value expected by firmware to configure RPU cluster mode
949 static int zynqmp_r5_core_init(struct zynqmp_r5_cluster *cluster, in zynqmp_r5_core_init() argument
953 struct device *dev = cluster->dev; in zynqmp_r5_core_init()
957 ret = zynqmp_r5_get_tcm_node(cluster); in zynqmp_r5_core_init()
963 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_core_init()
964 r5_core = cluster->r5_cores[i]; in zynqmp_r5_core_init()
976 dev_err(dev, "failed to set r5 cluster mode %d, err %d\n", in zynqmp_r5_core_init()
977 cluster->mode, ret); in zynqmp_r5_core_init()
989 * @cluster: pointer to zynqmp_r5_cluster type object
993 static int zynqmp_r5_cluster_init(struct zynqmp_r5_cluster *cluster) in zynqmp_r5_cluster_init() argument
996 struct device *dev = cluster->dev; in zynqmp_r5_cluster_init()
1007 ret = of_property_read_u32(dev_node, "xlnx,cluster-mode", &cluster_mode); in zynqmp_r5_cluster_init()
1015 dev_err(dev, "Invalid xlnx,cluster-mode property\n"); in zynqmp_r5_cluster_init()
1030 dev_err(dev, "driver does not support cluster mode %d\n", cluster_mode); in zynqmp_r5_cluster_init()
1107 cluster->mode = cluster_mode; in zynqmp_r5_cluster_init()
1108 cluster->core_count = core_count; in zynqmp_r5_cluster_init()
1109 cluster->r5_cores = r5_cores; in zynqmp_r5_cluster_init()
1111 ret = zynqmp_r5_core_init(cluster, fw_reg_val, tcm_mode); in zynqmp_r5_cluster_init()
1114 cluster->core_count = 0; in zynqmp_r5_cluster_init()
1115 cluster->r5_cores = NULL; in zynqmp_r5_cluster_init()
1147 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_cluster_exit() local
1151 cluster = platform_get_drvdata(pdev); in zynqmp_r5_cluster_exit()
1152 if (!cluster) in zynqmp_r5_cluster_exit()
1155 for (i = 0; i < cluster->core_count; i++) { in zynqmp_r5_cluster_exit()
1156 r5_core = cluster->r5_cores[i]; in zynqmp_r5_cluster_exit()
1164 kfree(cluster->r5_cores); in zynqmp_r5_cluster_exit()
1165 kfree(cluster); in zynqmp_r5_cluster_exit()
1174 * @pdev: domain platform device for R5 cluster
1180 struct zynqmp_r5_cluster *cluster; in zynqmp_r5_remoteproc_probe() local
1184 cluster = kzalloc(sizeof(*cluster), GFP_KERNEL); in zynqmp_r5_remoteproc_probe()
1185 if (!cluster) in zynqmp_r5_remoteproc_probe()
1188 cluster->dev = dev; in zynqmp_r5_remoteproc_probe()
1193 kfree(cluster); in zynqmp_r5_remoteproc_probe()
1198 platform_set_drvdata(pdev, cluster); in zynqmp_r5_remoteproc_probe()
1200 ret = zynqmp_r5_cluster_init(cluster); in zynqmp_r5_remoteproc_probe()
1202 kfree(cluster); in zynqmp_r5_remoteproc_probe()