aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch
diff options
context:
space:
mode:
authorRussell King <linux@armlinux.org.uk>2020-05-21 09:57:27 +0100
committerPetr Štetiar <ynezz@true.cz>2020-05-21 12:55:31 +0200
commit714199ec3461b2b5bac9796d4f5ee79f56d2eb00 (patch)
tree9d02420e261024062d56df1b12776d9594c38658 /target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch
parent72a1d5c3acd5b0bec46612f94bb8a82fe4d56179 (diff)
downloadupstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.tar.gz
upstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.tar.bz2
upstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.zip
kernel: backport v5.8 i2c-pxa updates
Add i2c-pxa updates queued for v5.8, which add bus recovery to this driver; this is needed for the uDPU platform. Signed-off-by: Russell King <linux@armlinux.org.uk>
Diffstat (limited to 'target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch')
-rw-r--r--target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch b/target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch
new file mode 100644
index 0000000000..9d7c501640
--- /dev/null
+++ b/target/linux/generic/backport-5.4/808-v5.8-i2c-pxa-add-and-use-definitions-for-IBMR-register.patch
@@ -0,0 +1,71 @@
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Bcc: linux@mail.armlinux.org.uk
+Cc: linux-i2c@vger.kernel.org
+Subject: [PATCH 06/17] i2c: pxa: add and use definitions for IBMR register
+MIME-Version: 1.0
+Content-Disposition: inline
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset="utf-8"
+
+Add definitions for the bits in the IBMR register, and use them in the
+code. This improves readability.
+
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+---
+ drivers/i2c/busses/i2c-pxa.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
+index ea96dfa6b9d5..b3286d7ab75d 100644
+--- a/drivers/i2c/busses/i2c-pxa.c
++++ b/drivers/i2c/busses/i2c-pxa.c
+@@ -34,6 +34,9 @@
+ #include <linux/slab.h>
+
+ /* I2C register field definitions */
++#define IBMR_SDAS (1 << 0)
++#define IBMR_SCLS (1 << 1)
++
+ #define ICR_START (1 << 0) /* start bit */
+ #define ICR_STOP (1 << 1) /* stop bit */
+ #define ICR_ACKNAK (1 << 2) /* send ACK(0) or NAK(1) */
+@@ -335,7 +338,7 @@ static void i2c_pxa_abort(struct pxa_i2c *i2c)
+ return;
+ }
+
+- while ((i > 0) && (readl(_IBMR(i2c)) & 0x1) == 0) {
++ while ((i > 0) && (readl(_IBMR(i2c)) & IBMR_SDAS) == 0) {
+ unsigned long icr = readl(_ICR(i2c));
+
+ icr &= ~ICR_START;
+@@ -390,7 +393,8 @@ static int i2c_pxa_wait_master(struct pxa_i2c *i2c)
+ * quick check of the i2c lines themselves to ensure they've
+ * gone high...
+ */
+- if ((readl(_ISR(i2c)) & (ISR_UB | ISR_IBB)) == 0 && readl(_IBMR(i2c)) == 3) {
++ if ((readl(_ISR(i2c)) & (ISR_UB | ISR_IBB)) == 0 &&
++ readl(_IBMR(i2c)) == (IBMR_SCLS | IBMR_SDAS)) {
+ if (i2c_debug > 0)
+ dev_dbg(&i2c->adap.dev, "%s: done\n", __func__);
+ return 1;
+@@ -575,7 +579,7 @@ static void i2c_pxa_slave_start(struct pxa_i2c *i2c, u32 isr)
+ timeout = 0x10000;
+
+ while (1) {
+- if ((readl(_IBMR(i2c)) & 2) == 2)
++ if ((readl(_IBMR(i2c)) & IBMR_SCLS) == IBMR_SCLS)
+ break;
+
+ timeout--;
+@@ -638,7 +642,7 @@ static void i2c_pxa_slave_start(struct pxa_i2c *i2c, u32 isr)
+ timeout = 0x10000;
+
+ while (1) {
+- if ((readl(_IBMR(i2c)) & 2) == 2)
++ if ((readl(_IBMR(i2c)) & IBMR_SCLS) == IBMR_SCLS)
+ break;
+
+ timeout--;
+--
+2.20.1
+