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

Commit 0995ce77 authored by Mukesh Kumar Savaliya's avatar Mukesh Kumar Savaliya
Browse files

i2c: i2c-msm-v2: Set frequency parameters to INT and validate



This change ensures the no value in the DT gets validated correctly
and works well with default data.

Change-Id: I45fcf3b06c17adbe4b81523de3c55c5014aa8b9c
Signed-off-by: default avatarMukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
parent 8fafa9b5
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -435,13 +435,13 @@ static int i2c_msm_set_mstr_clk_ctl(struct i2c_msm_ctrl *ctrl, int fs_div,


	/*
	/*
	 * find matching freq and set divider values unless they are forced
	 * find matching freq and set divider values unless they are forced
	 * from parametr list
	 * from parameter list
	 */
	 */
	for (i = 0; i < ARRAY_SIZE(i2c_msm_clk_div_map); ++i, ++itr) {
	for (i = 0; i < ARRAY_SIZE(i2c_msm_clk_div_map); ++i, ++itr) {
		if (ctrl->rsrcs.clk_freq_out == itr->clk_freq_out) {
		if (ctrl->rsrcs.clk_freq_out == itr->clk_freq_out) {
			if (!fs_div)
			if (fs_div < 0)
				fs_div = itr->fs_div;
				fs_div = itr->fs_div;
			if (!ht_div)
			if (ht_div < 0)
				ht_div = itr->ht_div;
				ht_div = itr->ht_div;
			break;
			break;
		}
		}
@@ -450,7 +450,7 @@ static int i2c_msm_set_mstr_clk_ctl(struct i2c_msm_ctrl *ctrl, int fs_div,
	/* For non-standard clock freq, clk divider value
	/* For non-standard clock freq, clk divider value
	 * fs_div should be supplied by client through device tree
	 * fs_div should be supplied by client through device tree
	 */
	 */
	if (!fs_div) {
	if (fs_div < 0) {
		dev_err(ctrl->dev, "Missing clk divider value in DT for %dKHz\n",
		dev_err(ctrl->dev, "Missing clk divider value in DT for %dKHz\n",
			(ctrl->rsrcs.clk_freq_out / 1000));
			(ctrl->rsrcs.clk_freq_out / 1000));
		return -EINVAL;
		return -EINVAL;
@@ -2484,7 +2484,7 @@ static int i2c_msm_dt_to_pdata_populate(struct i2c_msm_ctrl *ctrl,
static int i2c_msm_rsrcs_process_dt(struct i2c_msm_ctrl *ctrl,
static int i2c_msm_rsrcs_process_dt(struct i2c_msm_ctrl *ctrl,
					struct platform_device *pdev)
					struct platform_device *pdev)
{
{
	u32 fs_clk_div, ht_clk_div, noise_rjct_scl, noise_rjct_sda;
	int fs_clk_div, ht_clk_div, noise_rjct_scl, noise_rjct_sda;
	int ret;
	int ret;


	struct i2c_msm_dt_to_pdata_map map[] = {
	struct i2c_msm_dt_to_pdata_map map[] = {
@@ -2502,9 +2502,9 @@ static int i2c_msm_rsrcs_process_dt(struct i2c_msm_ctrl *ctrl,
	{"qcom,noise-rjct-sda",		&noise_rjct_sda,
	{"qcom,noise-rjct-sda",		&noise_rjct_sda,
							DT_OPT,  DT_U32,  0},
							DT_OPT,  DT_U32,  0},
	{"qcom,high-time-clk-div",	&ht_clk_div,
	{"qcom,high-time-clk-div",	&ht_clk_div,
							DT_OPT,  DT_U32,  0},
							DT_OPT,  DT_U32,  -1},
	{"qcom,fs-clk-div",		&fs_clk_div,
	{"qcom,fs-clk-div",		&fs_clk_div,
							DT_OPT,  DT_U32,  0},
							DT_OPT,  DT_U32,  -1},
	{NULL,  NULL,					0,       0,       0},
	{NULL,  NULL,					0,       0,       0},
	};
	};