diff options
Diffstat (limited to 'target/linux/generic/backport-5.4/814-v5.8-i2c-pxa-fix-i2c_pxa_wait_bus_not_busy-boundary-condi.patch')
-rw-r--r-- | target/linux/generic/backport-5.4/814-v5.8-i2c-pxa-fix-i2c_pxa_wait_bus_not_busy-boundary-condi.patch | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/target/linux/generic/backport-5.4/814-v5.8-i2c-pxa-fix-i2c_pxa_wait_bus_not_busy-boundary-condi.patch b/target/linux/generic/backport-5.4/814-v5.8-i2c-pxa-fix-i2c_pxa_wait_bus_not_busy-boundary-condi.patch deleted file mode 100644 index 2aadecc357..0000000000 --- a/target/linux/generic/backport-5.4/814-v5.8-i2c-pxa-fix-i2c_pxa_wait_bus_not_busy-boundary-condi.patch +++ /dev/null @@ -1,53 +0,0 @@ -From: Russell King <rmk+kernel@armlinux.org.uk> -Bcc: linux@mail.armlinux.org.uk -Cc: linux-i2c@vger.kernel.org -Subject: [PATCH 12/17] i2c: pxa: fix i2c_pxa_wait_bus_not_busy() boundary - condition -MIME-Version: 1.0 -Content-Disposition: inline -Content-Transfer-Encoding: 8bit -Content-Type: text/plain; charset="utf-8" - -Fix i2c_pxa_wait_bus_not_busy()'s boundary conditions, so that a -coincidental success and timeout results in the function returning -success. - -Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> ---- - drivers/i2c/busses/i2c-pxa.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - ---- a/drivers/i2c/busses/i2c-pxa.c -+++ b/drivers/i2c/busses/i2c-pxa.c -@@ -417,19 +417,26 @@ static void i2c_pxa_abort(struct pxa_i2c - static int i2c_pxa_wait_bus_not_busy(struct pxa_i2c *i2c) - { - int timeout = DEF_TIMEOUT; -+ u32 isr; - -- while (timeout-- && readl(_ISR(i2c)) & (ISR_IBB | ISR_UB)) { -- if ((readl(_ISR(i2c)) & ISR_SAD) != 0) -+ while (1) { -+ isr = readl(_ISR(i2c)); -+ if (!(isr & (ISR_IBB | ISR_UB))) -+ return 0; -+ -+ if (isr & ISR_SAD) - timeout += 4; - -+ if (!timeout--) -+ break; -+ - msleep(2); - show_state(i2c); - } - -- if (timeout < 0) -- show_state(i2c); -+ show_state(i2c); - -- return timeout < 0 ? I2C_RETRY : 0; -+ return I2C_RETRY; - } - - static int i2c_pxa_wait_master(struct pxa_i2c *i2c) |