Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3da40139 authored by Camera Software Integration's avatar Camera Software Integration Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: smmu: Fix the smmu create_handle function" into camera-kernel.lnx.4.0

parents 02d480f0 bf2282ba
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ static struct cam_iommu_cb_set iommu_cb_set;
static enum dma_data_direction cam_smmu_translate_dir(
	enum cam_smmu_map_dir dir);

static int cam_smmu_check_handle_unique(int hdl);
static bool cam_smmu_is_hdl_nonunique_or_null(int hdl);

static int cam_smmu_create_iommu_handle(int idx);

@@ -810,13 +810,12 @@ void cam_smmu_reset_iommu_table(enum cam_smmu_init_dir ops)
	}
}

static int cam_smmu_check_handle_unique(int hdl)
static bool cam_smmu_is_hdl_nonunique_or_null(int hdl)
{
	int i;

	if (hdl == HANDLE_INIT) {
		CAM_DBG(CAM_SMMU,
			"iommu handle is init number. Need to try again");
	if ((hdl == HANDLE_INIT) || (!hdl)) {
		CAM_DBG(CAM_SMMU, "iommu handle: %d is not valid", hdl);
		return 1;
	}

@@ -876,11 +875,12 @@ static int cam_smmu_create_add_handle_in_table(char *name,

			if (iommu_cb_set.cb_info[i].handle == HANDLE_INIT) {
				mutex_lock(&iommu_cb_set.cb_info[i].lock);
				/* make sure handle is unique */
				/* make sure handle is unique and non-zero*/
				do {
					handle =
						cam_smmu_create_iommu_handle(i);
				} while (cam_smmu_check_handle_unique(handle));
				} while (cam_smmu_is_hdl_nonunique_or_null(
						handle));

				/* put handle in the table */
				iommu_cb_set.cb_info[i].handle = handle;