diff options
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.patch | 71 |
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 + |