From: Greg Kroah-Hartman Date: Tue, 1 Dec 2020 08:45:11 +0000 (+0100) Subject: drop i2c-imx-fix-reset-of-i2sr_ial-flag.patch from everywhere X-Git-Tag: v4.4.247~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1a9eb4aa552aa11d49522f0a447f6df18f849232;p=thirdparty%2Fkernel%2Fstable-queue.git drop i2c-imx-fix-reset-of-i2sr_ial-flag.patch from everywhere --- diff --git a/queue-4.14/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-4.14/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index bc073156f27..00000000000 --- a/queue-4.14/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,69 +0,0 @@ -From foo@baz Sat Nov 28 03:53:05 PM CET 2020 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag - -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 -[sudip: adjust context] -Signed-off-by: Sudip Mukherjee -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 -@@ -413,6 +413,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) - { - unsigned long orig_jiffies = jiffies; -@@ -425,8 +438,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; - } - -@@ -595,9 +607,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-4.14/series b/queue-4.14/series index 42809c020c9..b2076770da6 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -9,7 +9,6 @@ btrfs-inode-verify-inode-mode-to-avoid-null-pointer-dereference.patch kvm-x86-fix-split-irqchip-vs-interrupt-injection-window-request.patch arm64-pgtable-fix-pte_accessible.patch arm64-pgtable-ensure-dirty-bit-is-preserved-across-pte_wrprotect.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch alsa-hda-hdmi-use-single-mutex-unlock-in-error-paths.patch alsa-hda-hdmi-fix-incorrect-locking-in-hdmi_pcm_close.patch hid-cypress-support-varmilo-keyboards-media-hotkeys.patch diff --git a/queue-4.19/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-4.19/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index 4c19bd11646..00000000000 --- a/queue-4.19/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,69 +0,0 @@ -From foo@baz Sat Nov 28 03:53:01 PM CET 2020 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag - -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 -[sudip: adjust context] -Signed-off-by: Sudip Mukherjee -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 -@@ -404,6 +404,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) - { - unsigned long orig_jiffies = jiffies; -@@ -416,8 +429,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; - } - -@@ -587,9 +599,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-4.19/series b/queue-4.19/series index 0ad72b0fbaa..4f1bbf5b9b8 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -9,7 +9,6 @@ kvm-x86-fix-split-irqchip-vs-interrupt-injection-window-request.patch arm64-pgtable-fix-pte_accessible.patch arm64-pgtable-ensure-dirty-bit-is-preserved-across-pte_wrprotect.patch drm-atomic_helper-stop-modesets-on-unregistered-connectors-harder.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch alsa-hda-hdmi-fix-incorrect-locking-in-hdmi_pcm_close.patch hid-cypress-support-varmilo-keyboards-media-hotkeys.patch hid-add-support-for-sega-saturn.patch diff --git a/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index e9ea86b275f..00000000000 --- a/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,69 +0,0 @@ -From foo@baz Sat Nov 28 03:53:42 PM CET 2020 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag - -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 -[sudip: adjust context] -Signed-off-by: Sudip Mukherjee -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 -@@ -420,6 +420,19 @@ static void i2c_imx_dma_free(struct imx_ - /** Functions for IMX I2C adapter driver *************************************** - *******************************************************************************/ - -+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) - { - unsigned long orig_jiffies = jiffies; -@@ -432,8 +445,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; - } - -@@ -595,9 +607,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-4.4/series b/queue-4.4/series index f01891f7979..f5b15150b7b 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -1,7 +1,6 @@ btrfs-tree-checker-enhance-chunk-checker-to-validate-chunk-profile.patch btrfs-inode-verify-inode-mode-to-avoid-null-pointer-dereference.patch kvm-x86-fix-split-irqchip-vs-interrupt-injection-window-request.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch hid-cypress-support-varmilo-keyboards-media-hotkeys.patch input-i8042-allow-insmod-to-succeed-on-devices-witho.patch hid-hid-sensor-hub-fix-issue-with-devices-with-no-re.patch diff --git a/queue-4.9/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-4.9/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index f24caaf8f29..00000000000 --- a/queue-4.9/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,69 +0,0 @@ -From foo@baz Sat Nov 28 03:53:09 PM CET 2020 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag - -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 -[sudip: adjust context] -Signed-off-by: Sudip Mukherjee -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 -@@ -413,6 +413,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) - { - unsigned long orig_jiffies = jiffies; -@@ -425,8 +438,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; - } - -@@ -595,9 +607,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-4.9/series b/queue-4.9/series index fbc1126609b..e1c60ddcb6f 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -6,7 +6,6 @@ btrfs-tree-checker-enhance-chunk-checker-to-validate-chunk-profile.patch btrfs-inode-verify-inode-mode-to-avoid-null-pointer-dereference.patch kvm-x86-fix-split-irqchip-vs-interrupt-injection-window-request.patch arm64-pgtable-fix-pte_accessible.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch alsa-hda-hdmi-use-single-mutex-unlock-in-error-paths.patch alsa-hda-hdmi-fix-incorrect-locking-in-hdmi_pcm_close.patch hid-cypress-support-varmilo-keyboards-media-hotkeys.patch diff --git a/queue-5.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-5.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch deleted file mode 100644 index b1ad42cbc37..00000000000 --- a/queue-5.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch +++ /dev/null @@ -1,69 +0,0 @@ -From foo@baz Sat Nov 28 03:52:58 PM CET 2020 -From: Christian Eggers -Date: Wed, 7 Oct 2020 10:45:22 +0200 -Subject: i2c: imx: Fix reset of I2SR_IAL flag - -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 -[sudip: adjust context] -Signed-off-by: Sudip Mukherjee -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 -@@ -414,6 +414,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) - { - unsigned long orig_jiffies = jiffies; -@@ -426,8 +439,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; - } - -@@ -597,9 +609,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.4/series b/queue-5.4/series index bdf3971b6ad..8a021eba365 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -18,7 +18,6 @@ kvm-x86-fix-split-irqchip-vs-interrupt-injection-window-request.patch trace-fix-potenial-dangerous-pointer.patch arm64-pgtable-fix-pte_accessible.patch arm64-pgtable-ensure-dirty-bit-is-preserved-across-pte_wrprotect.patch -i2c-imx-fix-reset-of-i2sr_ial-flag.patch hid-uclogic-add-id-for-trust-flex-design-tablet.patch hid-ite-replace-abs_misc-120-121-events-with-touchpa.patch hid-cypress-support-varmilo-keyboards-media-hotkeys.patch