hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/i2c/busses/i2c-npcm7xx.c
....@@ -675,6 +675,7 @@
675675 {
676676 struct i2c_msg *msgs;
677677 int msgs_num;
678
+ bool do_complete = false;
678679
679680 msgs = bus->msgs;
680681 msgs_num = bus->msgs_num;
....@@ -701,23 +702,17 @@
701702 msgs[1].flags & I2C_M_RD)
702703 msgs[1].len = info;
703704 }
704
- if (completion_done(&bus->cmd_complete) == false)
705
- complete(&bus->cmd_complete);
706
- break;
707
-
705
+ do_complete = true;
706
+ break;
708707 case I2C_NACK_IND:
709708 /* MASTER transmit got a NACK before tx all bytes */
710709 bus->cmd_err = -ENXIO;
711
- if (bus->master_or_slave == I2C_MASTER)
712
- complete(&bus->cmd_complete);
713
-
710
+ do_complete = true;
714711 break;
715712 case I2C_BUS_ERR_IND:
716713 /* Bus error */
717714 bus->cmd_err = -EAGAIN;
718
- if (bus->master_or_slave == I2C_MASTER)
719
- complete(&bus->cmd_complete);
720
-
715
+ do_complete = true;
721716 break;
722717 case I2C_WAKE_UP_IND:
723718 /* I2C wake up */
....@@ -731,6 +726,8 @@
731726 if (bus->slave)
732727 bus->master_or_slave = I2C_SLAVE;
733728 #endif
729
+ if (do_complete)
730
+ complete(&bus->cmd_complete);
734731 }
735732
736733 static u8 npcm_i2c_fifo_usage(struct npcm_i2c *bus)