i2c: designware: Remove common i2c_dw_disable_int()
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Mon, 7 Nov 2022 13:42:46 +0000 (15:42 +0200)
committerWolfram Sang <wsa@kernel.org>
Sat, 12 Nov 2022 06:38:11 +0000 (07:38 +0100)
Commit 90312351fd1e ("i2c: designware: MASTER mode as separated driver")
introduced disable_int pointer but there is no real use for it. Both
i2c-designware-master.c and i2c-designware-slave.c set it to the same
i2c_dw_disable_int() and scope is inside the same kernel module.

Since i2c_dw_disable_int() is just masking interrupts and the direct
DW_IC_INTR_MASK register write looks more clear in the code use that and
remove it from common code.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-designware-common.c
drivers/i2c/busses/i2c-designware-core.h
drivers/i2c/busses/i2c-designware-master.c
drivers/i2c/busses/i2c-designware-slave.c

index c023b69..a3240ec 100644 (file)
@@ -625,10 +625,5 @@ void i2c_dw_disable(struct dw_i2c_dev *dev)
        i2c_dw_release_lock(dev);
 }
 
-void i2c_dw_disable_int(struct dw_i2c_dev *dev)
-{
-       regmap_write(dev->map, DW_IC_INTR_MASK, 0);
-}
-
 MODULE_DESCRIPTION("Synopsys DesignWare I2C bus adapter core");
 MODULE_LICENSE("GPL");
index 457e696..49e5860 100644 (file)
@@ -232,7 +232,6 @@ struct reset_control;
  *     -1 if there is no semaphore.
  * @shared_with_punit: true if this bus is shared with the SoCs PUNIT
  * @disable: function to disable the controller
- * @disable_int: function to disable all interrupts
  * @init: function to initialize the I2C hardware
  * @set_sda_hold_time: callback to retrieve IP specific SDA hold timing
  * @mode: operation mode - DW_IC_MASTER or DW_IC_SLAVE
@@ -290,7 +289,6 @@ struct dw_i2c_dev {
        int                     semaphore_idx;
        bool                    shared_with_punit;
        void                    (*disable)(struct dw_i2c_dev *dev);
-       void                    (*disable_int)(struct dw_i2c_dev *dev);
        int                     (*init)(struct dw_i2c_dev *dev);
        int                     (*set_sda_hold_time)(struct dw_i2c_dev *dev);
        int                     mode;
@@ -331,7 +329,6 @@ int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev);
 int i2c_dw_set_fifo_size(struct dw_i2c_dev *dev);
 u32 i2c_dw_func(struct i2c_adapter *adap);
 void i2c_dw_disable(struct dw_i2c_dev *dev);
-void i2c_dw_disable_int(struct dw_i2c_dev *dev);
 
 static inline void __i2c_dw_enable(struct dw_i2c_dev *dev)
 {
index dfb499e..45f5691 100644 (file)
@@ -239,7 +239,7 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
                     msgs[dev->msg_write_idx].addr | ic_tar);
 
        /* Enforce disabled interrupts (due to HW issues) */
-       i2c_dw_disable_int(dev);
+       regmap_write(dev->map, DW_IC_INTR_MASK, 0);
 
        /* Enable the adapter */
        __i2c_dw_enable(dev);
@@ -299,7 +299,7 @@ static int amd_i2c_dw_xfer_quirk(struct i2c_adapter *adap, struct i2c_msg *msgs,
        dev->msgs = msgs;
        dev->msgs_num = num_msgs;
        i2c_dw_xfer_init(dev);
-       i2c_dw_disable_int(dev);
+       regmap_write(dev->map, DW_IC_INTR_MASK, 0);
 
        /* Initiate messages read/write transaction */
        for (msg_wrt_idx = 0; msg_wrt_idx < num_msgs; msg_wrt_idx++) {
@@ -770,7 +770,7 @@ tx_aborted:
        else if (unlikely(dev->flags & ACCESS_INTR_MASK)) {
                /* Workaround to trigger pending interrupt */
                regmap_read(dev->map, DW_IC_INTR_MASK, &stat);
-               i2c_dw_disable_int(dev);
+               regmap_write(dev->map, DW_IC_INTR_MASK, 0);
                regmap_write(dev->map, DW_IC_INTR_MASK, stat);
        }
 
@@ -871,7 +871,6 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
 
        dev->init = i2c_dw_init_master;
        dev->disable = i2c_dw_disable;
-       dev->disable_int = i2c_dw_disable_int;
 
        ret = i2c_dw_init_regmap(dev);
        if (ret)
@@ -910,7 +909,7 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
        if (ret)
                return ret;
 
-       i2c_dw_disable_int(dev);
+       regmap_write(dev->map, DW_IC_INTR_MASK, 0);
        i2c_dw_release_lock(dev);
 
        ret = devm_request_irq(dev->dev, dev->irq, i2c_dw_isr, irq_flags,
index 3c855cd..c6d2e4c 100644 (file)
@@ -87,7 +87,7 @@ static int i2c_dw_unreg_slave(struct i2c_client *slave)
 {
        struct dw_i2c_dev *dev = i2c_get_adapdata(slave->adapter);
 
-       dev->disable_int(dev);
+       regmap_write(dev->map, DW_IC_INTR_MASK, 0);
        dev->disable(dev);
        synchronize_irq(dev->irq);
        dev->slave = NULL;
@@ -232,7 +232,6 @@ int i2c_dw_probe_slave(struct dw_i2c_dev *dev)
 
        dev->init = i2c_dw_init_slave;
        dev->disable = i2c_dw_disable;
-       dev->disable_int = i2c_dw_disable_int;
 
        ret = i2c_dw_init_regmap(dev);
        if (ret)