+++ /dev/null
-From cc7541d5ca5e81e749490a5ea65d1cede0dbaefb Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 7 Oct 2020 10:07:49 +0200
-Subject: i2c: meson: fix clock setting overwrite
-
-From: Jerome Brunet <jbrunet@baylibre.com>
-
-[ Upstream commit 28683e847e2f20eed22cdd24f185d7783db396d3 ]
-
-When the slave address is written in do_start(), SLAVE_ADDR is written
-completely. This may overwrite some setting related to the clock rate
-or signal filtering.
-
-Fix this by writing only the bits related to slave address. To avoid
-causing unexpected changed, explicitly disable filtering or high/low
-clock mode which may have been left over by the bootloader.
-
-Fixes: 30021e3707a7 ("i2c: add support for Amlogic Meson I2C controller")
-Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
-Signed-off-by: Wolfram Sang <wsa@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/i2c/busses/i2c-meson.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/i2c/busses/i2c-meson.c b/drivers/i2c/busses/i2c-meson.c
-index ef73a42577cc7..a85a40fdf2f6e 100644
---- a/drivers/i2c/busses/i2c-meson.c
-+++ b/drivers/i2c/busses/i2c-meson.c
-@@ -43,6 +43,12 @@
- #define REG_SLV_SCL_LOW GENMASK(27, 16)
- #define REG_SLV_SCL_LOW_EN BIT(28)
-
-+#define REG_SLV_ADDR GENMASK(7, 0)
-+#define REG_SLV_SDA_FILTER GENMASK(10, 8)
-+#define REG_SLV_SCL_FILTER GENMASK(13, 11)
-+#define REG_SLV_SCL_LOW GENMASK(27, 16)
-+#define REG_SLV_SCL_LOW_EN BIT(28)
-+
- #define I2C_TIMEOUT_MS 500
- #define FILTER_DELAY 15
-
-@@ -158,6 +164,9 @@ static void meson_i2c_set_clk_div(struct meson_i2c *i2c, unsigned int freq)
- /* Disable HIGH/LOW mode */
- meson_i2c_set_mask(i2c, REG_SLAVE_ADDR, REG_SLV_SCL_LOW_EN, 0);
-
-+ /* Disable HIGH/LOW mode */
-+ meson_i2c_set_mask(i2c, REG_SLAVE_ADDR, REG_SLV_SCL_LOW_EN, 0);
-+
- dev_dbg(i2c->dev, "%s: clk %lu, freq %u, div %u\n", __func__,
- clk_rate, freq, div);
- }
---
-2.25.1
-