* Interrupt service routine. This gets called whenever an I2C slave interrupt
  * occurs.
  */
-
-static int i2c_dw_irq_handler_slave(struct dw_i2c_dev *dev)
+static irqreturn_t i2c_dw_isr_slave(int this_irq, void *dev_id)
 {
+       struct dw_i2c_dev *dev = dev_id;
        u32 raw_stat, stat, enabled, tmp;
        u8 val = 0, slave_activity;
 
        slave_activity = ((tmp & DW_IC_STATUS_SLAVE_ACTIVITY) >> 6);
 
        if (!enabled || !(raw_stat & ~DW_IC_INTR_ACTIVITY) || !dev->slave)
-               return 0;
+               return IRQ_NONE;
 
        stat = i2c_dw_read_clear_intrbits_slave(dev);
        dev_dbg(dev->dev,
        if (stat & DW_IC_INTR_STOP_DET)
                i2c_slave_event(dev->slave, I2C_SLAVE_STOP, &val);
 
-       return 1;
-}
-
-static irqreturn_t i2c_dw_isr_slave(int this_irq, void *dev_id)
-{
-       struct dw_i2c_dev *dev = dev_id;
-       int ret;
-
-       ret = i2c_dw_irq_handler_slave(dev);
-
-       return IRQ_RETVAL(ret);
+       return IRQ_HANDLED;
 }
 
 static const struct i2c_algorithm i2c_dw_algo = {