diff options
Diffstat (limited to 'target/linux/generic/backport-5.4/803-v5.8-i2c-pxa-use-official-address-byte-helper.patch')
-rw-r--r-- | target/linux/generic/backport-5.4/803-v5.8-i2c-pxa-use-official-address-byte-helper.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.4/803-v5.8-i2c-pxa-use-official-address-byte-helper.patch b/target/linux/generic/backport-5.4/803-v5.8-i2c-pxa-use-official-address-byte-helper.patch new file mode 100644 index 0000000000..8aaa6c9b3c --- /dev/null +++ b/target/linux/generic/backport-5.4/803-v5.8-i2c-pxa-use-official-address-byte-helper.patch @@ -0,0 +1,64 @@ +From: Russell King <rmk+kernel@armlinux.org.uk> +Bcc: linux@mail.armlinux.org.uk +Cc: linux-i2c@vger.kernel.org +Subject: [PATCH 01/17] i2c: pxa: use official address byte helper +MIME-Version: 1.0 +Content-Disposition: inline +Content-Transfer-Encoding: 8bit +Content-Type: text/plain; charset="utf-8" + +i2c-pxa was created before i2c_8bit_addr_from_msg() was implemented, +and used its own i2c_pxa_addr_byte() which is functionally the same. +Sadly, it was never updated to use this new helper. Switch it over. + +Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> +--- + drivers/i2c/busses/i2c-pxa.c | 21 +++++++-------------- + 1 file changed, 7 insertions(+), 14 deletions(-) + +diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c +index 2c3c3d6935c0..966000923e8e 100644 +--- a/drivers/i2c/busses/i2c-pxa.c ++++ b/drivers/i2c/busses/i2c-pxa.c +@@ -675,16 +675,6 @@ static void i2c_pxa_slave_stop(struct pxa_i2c *i2c) + * PXA I2C Master mode + */ + +-static inline unsigned int i2c_pxa_addr_byte(struct i2c_msg *msg) +-{ +- unsigned int addr = (msg->addr & 0x7f) << 1; +- +- if (msg->flags & I2C_M_RD) +- addr |= 1; +- +- return addr; +-} +- + static inline void i2c_pxa_start_message(struct pxa_i2c *i2c) + { + u32 icr; +@@ -693,8 +683,8 @@ static inline void i2c_pxa_start_message(struct pxa_i2c *i2c) + /* + * Step 1: target slave address into IDBR + */ +- writel(i2c_pxa_addr_byte(i2c->msg), _IDBR(i2c)); +- i2c->req_slave_addr = i2c_pxa_addr_byte(i2c->msg); ++ i2c->req_slave_addr = i2c_8bit_addr_from_msg(i2c->msg); ++ writel(i2c->req_slave_addr, _IDBR(i2c)); + + /* + * Step 2: initiate the write. +@@ -1006,8 +999,8 @@ static void i2c_pxa_irq_txempty(struct pxa_i2c *i2c, u32 isr) + /* + * Write the next address. + */ +- writel(i2c_pxa_addr_byte(i2c->msg), _IDBR(i2c)); +- i2c->req_slave_addr = i2c_pxa_addr_byte(i2c->msg); ++ i2c->req_slave_addr = i2c_8bit_addr_from_msg(i2c->msg); ++ writel(i2c->req_slave_addr, _IDBR(i2c)); + + /* + * And trigger a repeated start, and send the byte. +-- +2.20.1 + |