aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch99
1 files changed, 0 insertions, 99 deletions
diff --git a/target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch b/target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch
deleted file mode 100644
index 97f1f78230..0000000000
--- a/target/linux/layerscape/patches-5.4/808-i2c-0006-MLK-20368-i2c-imx-Coverity-fix-divide-by-zero-warnin.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 2c2c7e16ad0401f85dd8ff9bc0789fa10e715c0e Mon Sep 17 00:00:00 2001
-From: Clark Wang <xiaoning.wang@nxp.com>
-Date: Tue, 15 Jan 2019 10:04:30 +0800
-Subject: [PATCH] MLK-20368 i2c-imx: Coverity: fix divide by zero warning
-
-"i2c_clk_rate / 2" might be zero when the i2c_clk_rate gets the clock is
-0 or 1, so add a judgment to avoid the denominator is equal to 0.
-
-Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
-[Arul: Add support to check return value everywhere in the driver]
-Signed-off-by: Arulpandiyan Vadivel <arulpandiyan_vadivel@mentor.com>
-
-Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
-(cherry picked from commit d382de595bffc0975ab7c0582e08dd4f7afc0c1a)
-(cherry picked from commit 456caa9ba270ca8f4f962918a0625d1a8348f316)
----
- drivers/i2c/busses/i2c-imx.c | 31 +++++++++++++++++++++++++------
- 1 file changed, 25 insertions(+), 6 deletions(-)
-
---- a/drivers/i2c/busses/i2c-imx.c
-+++ b/drivers/i2c/busses/i2c-imx.c
-@@ -514,16 +514,24 @@ static int i2c_imx_acked(struct imx_i2c_
- return 0;
- }
-
--static void i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
-+static int i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
- unsigned int i2c_clk_rate)
- {
- struct imx_i2c_clk_pair *i2c_clk_div = i2c_imx->hwdata->clk_div;
- unsigned int div;
- int i;
-
-- /* Divider value calculation */
- if (i2c_imx->cur_clk == i2c_clk_rate)
-- return;
-+ return 0;
-+
-+ /*
-+ * Keep the denominator of the following program
-+ * always NOT equal to 0.
-+ */
-+
-+ /* Divider value calculation */
-+ if (!(i2c_clk_rate / 2))
-+ return -EINVAL;
-
- i2c_imx->cur_clk = i2c_clk_rate;
-
-@@ -554,20 +562,23 @@ static void i2c_imx_set_clk(struct imx_i
- dev_dbg(&i2c_imx->adapter.dev, "IFDR[IC]=0x%x, REAL DIV=%d\n",
- i2c_clk_div[i].val, i2c_clk_div[i].div);
- #endif
-+
-+ return 0;
- }
-
- static int i2c_imx_clk_notifier_call(struct notifier_block *nb,
- unsigned long action, void *data)
- {
-+ int ret = 0;
- struct clk_notifier_data *ndata = data;
- struct imx_i2c_struct *i2c_imx = container_of(nb,
- struct imx_i2c_struct,
- clk_change_nb);
-
- if (action & POST_RATE_CHANGE)
-- i2c_imx_set_clk(i2c_imx, ndata->new_rate);
-+ ret = i2c_imx_set_clk(i2c_imx, ndata->new_rate);
-
-- return NOTIFY_OK;
-+ return notifier_from_errno(ret);
- }
-
- static int i2c_imx_start(struct imx_i2c_struct *i2c_imx)
-@@ -577,6 +588,10 @@ static int i2c_imx_start(struct imx_i2c_
-
- dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
-
-+ result = i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk));
-+ if (result)
-+ return result;
-+
- imx_i2c_write_reg(i2c_imx->ifdr, i2c_imx, IMX_I2C_IFDR);
- /* Enable I2C controller */
- imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR);
-@@ -1203,7 +1218,11 @@ static int i2c_imx_probe(struct platform
- i2c_imx->bitrate = pdata->bitrate;
- i2c_imx->clk_change_nb.notifier_call = i2c_imx_clk_notifier_call;
- clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb);
-- i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk));
-+ ret = i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk));
-+ if (ret < 0) {
-+ dev_err(&pdev->dev, "can't get I2C clock\n");
-+ goto clk_notifier_unregister;
-+ }
-
- /*
- * This limit caused by an i.MX7D hardware issue(e7805 in Errata).