| .. | .. |
|---|
| 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) |
|---|