.. | .. |
---|
675 | 675 | { |
---|
676 | 676 | struct i2c_msg *msgs; |
---|
677 | 677 | int msgs_num; |
---|
| 678 | + bool do_complete = false; |
---|
678 | 679 | |
---|
679 | 680 | msgs = bus->msgs; |
---|
680 | 681 | msgs_num = bus->msgs_num; |
---|
.. | .. |
---|
701 | 702 | msgs[1].flags & I2C_M_RD) |
---|
702 | 703 | msgs[1].len = info; |
---|
703 | 704 | } |
---|
704 | | - if (completion_done(&bus->cmd_complete) == false) |
---|
705 | | - complete(&bus->cmd_complete); |
---|
706 | | - break; |
---|
707 | | - |
---|
| 705 | + do_complete = true; |
---|
| 706 | + break; |
---|
708 | 707 | case I2C_NACK_IND: |
---|
709 | 708 | /* MASTER transmit got a NACK before tx all bytes */ |
---|
710 | 709 | bus->cmd_err = -ENXIO; |
---|
711 | | - if (bus->master_or_slave == I2C_MASTER) |
---|
712 | | - complete(&bus->cmd_complete); |
---|
713 | | - |
---|
| 710 | + do_complete = true; |
---|
714 | 711 | break; |
---|
715 | 712 | case I2C_BUS_ERR_IND: |
---|
716 | 713 | /* Bus error */ |
---|
717 | 714 | bus->cmd_err = -EAGAIN; |
---|
718 | | - if (bus->master_or_slave == I2C_MASTER) |
---|
719 | | - complete(&bus->cmd_complete); |
---|
720 | | - |
---|
| 715 | + do_complete = true; |
---|
721 | 716 | break; |
---|
722 | 717 | case I2C_WAKE_UP_IND: |
---|
723 | 718 | /* I2C wake up */ |
---|
.. | .. |
---|
731 | 726 | if (bus->slave) |
---|
732 | 727 | bus->master_or_slave = I2C_SLAVE; |
---|
733 | 728 | #endif |
---|
| 729 | + if (do_complete) |
---|
| 730 | + complete(&bus->cmd_complete); |
---|
734 | 731 | } |
---|
735 | 732 | |
---|
736 | 733 | static u8 npcm_i2c_fifo_usage(struct npcm_i2c *bus) |
---|