|
@@ -4569,7 +4569,7 @@ static int cam_smmu_get_subregions_memory_info(
|
|
|
subregions->subregion_info.iova_len = subregion_len;
|
|
|
subregions->subregion_info.iova_start = subregion_start;
|
|
|
break;
|
|
|
- case CAM_SMMU_SUBREGION_HWMUTEX:
|
|
|
+ case CAM_SMMU_SUBREGION_SYNX_HWMUTEX:
|
|
|
if (subregion_mask & BIT(subregion_id))
|
|
|
goto repeated_subregion;
|
|
|
|
|
@@ -4579,8 +4579,21 @@ static int cam_smmu_get_subregions_memory_info(
|
|
|
rc = of_property_read_u32(sub_node,
|
|
|
"phy-addr", (uint32_t *)&subregions->subregion_info.phy_addr);
|
|
|
if (rc < 0) {
|
|
|
- CAM_ERR(CAM_SMMU,
|
|
|
- "Failed to read phy addr");
|
|
|
+ CAM_ERR(CAM_SMMU, "Failed to read phy addr");
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CAM_SMMU_SUBREGION_IPC_HWMUTEX:
|
|
|
+ if (subregion_mask & BIT(subregion_id))
|
|
|
+ goto repeated_subregion;
|
|
|
+
|
|
|
+ subregions->subregion_id = subregion_id;
|
|
|
+ subregions->subregion_info.iova_len = subregion_len;
|
|
|
+ subregions->subregion_info.iova_start = subregion_start;
|
|
|
+ rc = of_property_read_u32(sub_node,
|
|
|
+ "phy-addr", (uint32_t *)&subregions->subregion_info.phy_addr);
|
|
|
+ if (rc < 0) {
|
|
|
+ CAM_ERR(CAM_SMMU, "Failed to read phy addr");
|
|
|
goto err;
|
|
|
}
|
|
|
break;
|
|
@@ -4594,8 +4607,21 @@ static int cam_smmu_get_subregions_memory_info(
|
|
|
rc = of_property_read_u32(sub_node,
|
|
|
"phy-addr", (uint32_t *)&subregions->subregion_info.phy_addr);
|
|
|
if (rc < 0) {
|
|
|
- CAM_ERR(CAM_SMMU,
|
|
|
- "Failed to read phy addr");
|
|
|
+ CAM_ERR(CAM_SMMU, "Failed to read phy addr");
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CAM_SMMU_SUBREGION_GLOBAL_CNTR:
|
|
|
+ if (subregion_mask & BIT(subregion_id))
|
|
|
+ goto repeated_subregion;
|
|
|
+
|
|
|
+ subregions->subregion_id = subregion_id;
|
|
|
+ subregions->subregion_info.iova_len = subregion_len;
|
|
|
+ subregions->subregion_info.iova_start = subregion_start;
|
|
|
+ rc = of_property_read_u32(sub_node,
|
|
|
+ "phy-addr", (uint32_t *)&subregions->subregion_info.phy_addr);
|
|
|
+ if (rc < 0) {
|
|
|
+ CAM_ERR(CAM_SMMU, "Failed to read phy addr");
|
|
|
goto err;
|
|
|
}
|
|
|
break;
|