diff options
author | Carlos Song <carlos.song@nxp.com> | 2023-07-26 17:22:38 +0800 |
---|---|---|
committer | Wolfram Sang <wsa@kernel.org> | 2023-08-14 15:21:49 +0200 |
commit | b610c4bbd153c2cde548db48559e170905d7c369 (patch) | |
tree | c931ecd8eb4772d2d546399c1536dedd2b62cf05 /drivers/i2c | |
parent | 2ccdd1b13c591d306f0401d98dedc4bdcd02b421 (diff) | |
download | lwn-b610c4bbd153c2cde548db48559e170905d7c369.tar.gz lwn-b610c4bbd153c2cde548db48559e170905d7c369.zip |
i2c: imx-lpi2c: return -EINVAL when i2c peripheral clk doesn't work
On MX8X platforms, the default clock rate is 0 if without explicit
clock setting in dts nodes. I2c can't work when i2c peripheral clk
rate is 0.
Add a i2c peripheral clk rate check before configuring the clock
register. When i2c peripheral clk rate is 0 and directly return
-EINVAL.
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Acked-by: Dong Aisheng <Aisheng.dong@nxp.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-imx-lpi2c.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c index c3287c887c6f..150d923ca7f1 100644 --- a/drivers/i2c/busses/i2c-imx-lpi2c.c +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c @@ -209,6 +209,9 @@ static int lpi2c_imx_config(struct lpi2c_imx_struct *lpi2c_imx) lpi2c_imx_set_mode(lpi2c_imx); clk_rate = clk_get_rate(lpi2c_imx->clks[0].clk); + if (!clk_rate) + return -EINVAL; + if (lpi2c_imx->mode == HS || lpi2c_imx->mode == ULTRA_FAST) filt = 0; else |