Merge branch 'i2c/for-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
[linux-2.6-microblaze.git] / drivers / i2c / busses / i2c-at91.h
index f57a6ca..eae673a 100644 (file)
@@ -36,6 +36,7 @@
 #define        AT91_TWI_SVDIS          BIT(5)  /* Slave Transfer Disable */
 #define        AT91_TWI_QUICK          BIT(6)  /* SMBus quick command */
 #define        AT91_TWI_SWRST          BIT(7)  /* Software Reset */
+#define        AT91_TWI_CLEAR          BIT(15) /* Bus clear command */
 #define        AT91_TWI_ACMEN          BIT(16) /* Alternative Command Mode Enable */
 #define        AT91_TWI_ACMDIS         BIT(17) /* Alternative Command Mode Disable */
 #define        AT91_TWI_THRCLR         BIT(24) /* Transmit Holding Register Clear */
@@ -69,6 +70,8 @@
 #define        AT91_TWI_NACK           BIT(8)  /* Not Acknowledged */
 #define        AT91_TWI_EOSACC         BIT(11) /* End Of Slave Access */
 #define        AT91_TWI_LOCK           BIT(23) /* TWI Lock due to Frame Errors */
+#define        AT91_TWI_SCL            BIT(24) /* TWI SCL status */
+#define        AT91_TWI_SDA            BIT(25) /* TWI SDA status */
 
 #define        AT91_TWI_INT_MASK \
        (AT91_TWI_TXCOMP | AT91_TWI_RXRDY | AT91_TWI_TXRDY | AT91_TWI_NACK \
@@ -81,7 +84,8 @@
 #define        AT91_TWI_THR            0x0034  /* Transmit Holding Register */
 
 #define        AT91_TWI_ACR            0x0040  /* Alternative Command Register */
-#define        AT91_TWI_ACR_DATAL(len) ((len) & 0xff)
+#define        AT91_TWI_ACR_DATAL_MASK GENMASK(15, 0)
+#define        AT91_TWI_ACR_DATAL(len) ((len) & AT91_TWI_ACR_DATAL_MASK)
 #define        AT91_TWI_ACR_DIR        BIT(8)
 
 #define AT91_TWI_FILTR         0x0044
@@ -118,6 +122,7 @@ struct at91_twi_pdata {
        bool has_dig_filtr;
        bool has_adv_dig_filtr;
        bool has_ana_filtr;
+       bool has_clear_cmd;
        struct at_dma_slave dma_slave;
 };
 
@@ -152,9 +157,6 @@ struct at91_twi_dev {
        struct at91_twi_dma dma;
        bool slave_detected;
        struct i2c_bus_recovery_info rinfo;
-       struct pinctrl *pinctrl;
-       struct pinctrl_state *pinctrl_pins_default;
-       struct pinctrl_state *pinctrl_pins_gpio;
 #ifdef CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL
        unsigned smr;
        struct i2c_client *slave;