OSDN Git Service

i2c: aspeed: Fix initial values of master and slave state
authorJae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Mon, 2 Jul 2018 21:20:28 +0000 (14:20 -0700)
committerWolfram Sang <wsa@the-dreams.de>
Fri, 20 Jul 2018 22:23:19 +0000 (00:23 +0200)
This patch changes the order of enum aspeed_i2c_master_state and
enum aspeed_i2c_slave_state defines to make their initial value to
ASPEED_I2C_MASTER_INACTIVE and ASPEED_I2C_SLAVE_STOP respectively.
In case of multi-master use, if a slave data comes ahead of the
first master xfer, master_state starts from an invalid state so
this change fixes the issue.

Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-aspeed.c

index e3007c1..e056a31 100644 (file)
 #define ASPEED_I2CD_DEV_ADDR_MASK                      GENMASK(6, 0)
 
 enum aspeed_i2c_master_state {
+       ASPEED_I2C_MASTER_INACTIVE,
        ASPEED_I2C_MASTER_START,
        ASPEED_I2C_MASTER_TX_FIRST,
        ASPEED_I2C_MASTER_TX,
        ASPEED_I2C_MASTER_RX_FIRST,
        ASPEED_I2C_MASTER_RX,
        ASPEED_I2C_MASTER_STOP,
-       ASPEED_I2C_MASTER_INACTIVE,
 };
 
 enum aspeed_i2c_slave_state {
+       ASPEED_I2C_SLAVE_STOP,
        ASPEED_I2C_SLAVE_START,
        ASPEED_I2C_SLAVE_READ_REQUESTED,
        ASPEED_I2C_SLAVE_READ_PROCESSED,
        ASPEED_I2C_SLAVE_WRITE_REQUESTED,
        ASPEED_I2C_SLAVE_WRITE_RECEIVED,
-       ASPEED_I2C_SLAVE_STOP,
 };
 
 struct aspeed_i2c_bus {