aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch
diff options
context:
space:
mode:
authorRussell King <linux@armlinux.org.uk>2020-05-21 09:57:27 +0100
committerPetr Štetiar <ynezz@true.cz>2020-05-21 12:55:31 +0200
commit714199ec3461b2b5bac9796d4f5ee79f56d2eb00 (patch)
tree9d02420e261024062d56df1b12776d9594c38658 /target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch
parent72a1d5c3acd5b0bec46612f94bb8a82fe4d56179 (diff)
downloadupstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.tar.gz
upstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.tar.bz2
upstream-714199ec3461b2b5bac9796d4f5ee79f56d2eb00.zip
kernel: backport v5.8 i2c-pxa updates
Add i2c-pxa updates queued for v5.8, which add bus recovery to this driver; this is needed for the uDPU platform. Signed-off-by: Russell King <linux@armlinux.org.uk>
Diffstat (limited to 'target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch')
-rw-r--r--target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch135
1 files changed, 135 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch b/target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch
new file mode 100644
index 0000000000..a7bbdd9546
--- /dev/null
+++ b/target/linux/generic/backport-5.4/810-v5.8-i2c-pxa-move-private-definitions-to-i2c-pxa.c.patch
@@ -0,0 +1,135 @@
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Bcc: linux@mail.armlinux.org.uk
+Cc: linux-i2c@vger.kernel.org
+Subject: [PATCH 08/17] i2c: pxa: move private definitions to i2c-pxa.c
+MIME-Version: 1.0
+Content-Disposition: inline
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset="utf-8"
+
+Move driver-private definitions out of the i2c-pxa.h platform data
+header file into the driver itself. Nothing outside of the driver
+makes use of these constants.
+
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+---
+ drivers/i2c/busses/i2c-pxa.c | 43 ++++++++++++++++++++++++
+ include/linux/platform_data/i2c-pxa.h | 48 ---------------------------
+ 2 files changed, 43 insertions(+), 48 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
+index 05dbe6bf4633..482768a9fdd2 100644
+--- a/drivers/i2c/busses/i2c-pxa.c
++++ b/drivers/i2c/busses/i2c-pxa.c
+@@ -86,6 +86,49 @@
+ #define IWCR_HS_CNT2_SHIFT 10
+ #define IWCR_HS_CNT2_MASK (0x1F << IWCR_HS_CNT2_SHIFT)
+
++/* need a longer timeout if we're dealing with the fact we may well be
++ * looking at a multi-master environment
++ */
++#define DEF_TIMEOUT 32
++
++#define BUS_ERROR (-EREMOTEIO)
++#define XFER_NAKED (-ECONNREFUSED)
++#define I2C_RETRY (-2000) /* an error has occurred retry transmit */
++
++/* ICR initialize bit values
++ *
++ * 15 FM 0 (100 kHz operation)
++ * 14 UR 0 (No unit reset)
++ * 13 SADIE 0 (Disables the unit from interrupting on slave addresses
++ * matching its slave address)
++ * 12 ALDIE 0 (Disables the unit from interrupt when it loses arbitration
++ * in master mode)
++ * 11 SSDIE 0 (Disables interrupts from a slave stop detected, in slave mode)
++ * 10 BEIE 1 (Enable interrupts from detected bus errors, no ACK sent)
++ * 9 IRFIE 1 (Enable interrupts from full buffer received)
++ * 8 ITEIE 1 (Enables the I2C unit to interrupt when transmit buffer empty)
++ * 7 GCD 1 (Disables i2c unit response to general call messages as a slave)
++ * 6 IUE 0 (Disable unit until we change settings)
++ * 5 SCLE 1 (Enables the i2c clock output for master mode (drives SCL)
++ * 4 MA 0 (Only send stop with the ICR stop bit)
++ * 3 TB 0 (We are not transmitting a byte initially)
++ * 2 ACKNAK 0 (Send an ACK after the unit receives a byte)
++ * 1 STOP 0 (Do not send a STOP)
++ * 0 START 0 (Do not send a START)
++ */
++#define I2C_ICR_INIT (ICR_BEIE | ICR_IRFIE | ICR_ITEIE | ICR_GCD | ICR_SCLE)
++
++/* I2C status register init values
++ *
++ * 10 BED 1 (Clear bus error detected)
++ * 9 SAD 1 (Clear slave address detected)
++ * 7 IRF 1 (Clear IDBR Receive Full)
++ * 6 ITE 1 (Clear IDBR Transmit Empty)
++ * 5 ALD 1 (Clear Arbitration Loss Detected)
++ * 4 SSD 1 (Clear Slave Stop Detected)
++ */
++#define I2C_ISR_INIT 0x7FF /* status register init */
++
+ struct pxa_reg_layout {
+ u32 ibmr;
+ u32 idbr;
+diff --git a/include/linux/platform_data/i2c-pxa.h b/include/linux/platform_data/i2c-pxa.h
+index cb290092599c..5c08a6ff3444 100644
+--- a/include/linux/platform_data/i2c-pxa.h
++++ b/include/linux/platform_data/i2c-pxa.h
+@@ -7,54 +7,6 @@
+ #ifndef _I2C_PXA_H_
+ #define _I2C_PXA_H_
+
+-#if 0
+-#define DEF_TIMEOUT 3
+-#else
+-/* need a longer timeout if we're dealing with the fact we may well be
+- * looking at a multi-master environment
+-*/
+-#define DEF_TIMEOUT 32
+-#endif
+-
+-#define BUS_ERROR (-EREMOTEIO)
+-#define XFER_NAKED (-ECONNREFUSED)
+-#define I2C_RETRY (-2000) /* an error has occurred retry transmit */
+-
+-/* ICR initialize bit values
+-*
+-* 15. FM 0 (100 Khz operation)
+-* 14. UR 0 (No unit reset)
+-* 13. SADIE 0 (Disables the unit from interrupting on slave addresses
+-* matching its slave address)
+-* 12. ALDIE 0 (Disables the unit from interrupt when it loses arbitration
+-* in master mode)
+-* 11. SSDIE 0 (Disables interrupts from a slave stop detected, in slave mode)
+-* 10. BEIE 1 (Enable interrupts from detected bus errors, no ACK sent)
+-* 9. IRFIE 1 (Enable interrupts from full buffer received)
+-* 8. ITEIE 1 (Enables the I2C unit to interrupt when transmit buffer empty)
+-* 7. GCD 1 (Disables i2c unit response to general call messages as a slave)
+-* 6. IUE 0 (Disable unit until we change settings)
+-* 5. SCLE 1 (Enables the i2c clock output for master mode (drives SCL)
+-* 4. MA 0 (Only send stop with the ICR stop bit)
+-* 3. TB 0 (We are not transmitting a byte initially)
+-* 2. ACKNAK 0 (Send an ACK after the unit receives a byte)
+-* 1. STOP 0 (Do not send a STOP)
+-* 0. START 0 (Do not send a START)
+-*
+-*/
+-#define I2C_ICR_INIT (ICR_BEIE | ICR_IRFIE | ICR_ITEIE | ICR_GCD | ICR_SCLE)
+-
+-/* I2C status register init values
+- *
+- * 10. BED 1 (Clear bus error detected)
+- * 9. SAD 1 (Clear slave address detected)
+- * 7. IRF 1 (Clear IDBR Receive Full)
+- * 6. ITE 1 (Clear IDBR Transmit Empty)
+- * 5. ALD 1 (Clear Arbitration Loss Detected)
+- * 4. SSD 1 (Clear Slave Stop Detected)
+- */
+-#define I2C_ISR_INIT 0x7FF /* status register init */
+-
+ struct i2c_slave_client;
+
+ struct i2c_pxa_platform_data {
+--
+2.20.1
+