From: Greg Kroah-Hartman Date: Mon, 12 Oct 2020 08:21:19 +0000 (+0200) Subject: drop queue-5.8/i2c-imx-fix-reset-of-i2sr_ial-flag.patch X-Git-Tag: v4.4.239~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca34054431275615a0b18ab5418a2fcbf8919312;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-5.8/i2c-imx-fix-reset-of-i2sr_ial-flag.patch --- diff --git a/queue-5.8/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-5.8/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index 9f3244998dd..00000000000 --- a/queue-5.8/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,71 +0,0 @@ -From fa4d30556883f2eaab425b88ba9904865a4d00f3 Mon Sep 17 00:00:00 2001 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Christian Eggers - -commit fa4d30556883f2eaab425b88ba9904865a4d00f3 upstream. - -According to the "VFxxx Controller Reference Manual" (and the comment -block starting at line 97), Vybrid requires writing a one for clearing -an interrupt flag. Syncing the method for clearing I2SR_IIF in -i2c_imx_isr(). - -Signed-off-by: Christian Eggers -Fixes: 4b775022f6fd ("i2c: imx: add struct to hold more configurable quirks") -Reviewed-by: Uwe Kleine-König -Cc: stable@vger.kernel.org -Signed-off-by: Wolfram Sang -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/i2c/busses/i2c-imx.c | 20 +++++++++++++++----- - 1 file changed, 15 insertions(+), 5 deletions(-) - ---- a/drivers/i2c/busses/i2c-imx.c -+++ b/drivers/i2c/busses/i2c-imx.c -@@ -412,6 +412,19 @@ static void i2c_imx_dma_free(struct imx_ - dma->chan_using = NULL; - } - -+static void i2c_imx_clear_irq(struct imx_i2c_struct *i2c_imx, unsigned int bits) -+{ -+ unsigned int temp; -+ -+ /* -+ * i2sr_clr_opcode is the value to clear all interrupts. Here we want to -+ * clear only , so we write ~i2sr_clr_opcode with just -+ * toggled. This is required because i.MX needs W1C and Vybrid uses W0C. -+ */ -+ temp = ~i2c_imx->hwdata->i2sr_clr_opcode ^ bits; -+ imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); -+} -+ - static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool atomic) - { - unsigned long orig_jiffies = jiffies; -@@ -424,8 +437,7 @@ static int i2c_imx_bus_busy(struct imx_i - - /* check for arbitration lost */ - if (temp & I2SR_IAL) { -- temp &= ~I2SR_IAL; -- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); -+ i2c_imx_clear_irq(i2c_imx, I2SR_IAL); - return -EAGAIN; - } - -@@ -623,9 +635,7 @@ static irqreturn_t i2c_imx_isr(int irq, - if (temp & I2SR_IIF) { - /* save status register */ - i2c_imx->i2csr = temp; -- temp &= ~I2SR_IIF; -- temp |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IIF); -- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); -+ i2c_imx_clear_irq(i2c_imx, I2SR_IIF); - wake_up(&i2c_imx->queue); - return IRQ_HANDLED; - } diff --git a/queue-5.8/series b/queue-5.8/series index b2441752f5a..05b9f0b30bb 100644 --- a/queue-5.8/series +++ b/queue-5.8/series @@ -27,7 +27,6 @@ nvme-core-put-ctrl-ref-when-module-ref-get-fail.patch macsec-avoid-use-after-free-in-macsec_handle_frame.patch risc-v-make-sure-memblock-reserves-the-memory-containing-dt.patch gpiolib-disable-compat-read-code-in-uml-case.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch mm-khugepaged-fix-filemap-page_to_pgoff-page-offset.patch net-introduce-helper-sendpage_ok-in-include-linux-net.h.patch tcp-use-sendpage_ok-to-detect-misused-.sendpage.patch