drm/amdgpu: Send STOP for the last byte of msg only
authorAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Sat, 23 Jan 2021 04:25:31 +0000 (23:25 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 1 Jul 2021 04:24:40 +0000 (00:24 -0400)
Let's just ignore the I2C_M_STOP hint from upper
layer for SMU I2C code as there is no clean
mapping between single per I2C message STOP flag
at the kernel I2C layer and the SMU, per each byte
STOP flag. We will just by default set it at the
end of the SMU I2C message.

Cc: Jean Delvare <jdelvare@suse.de>
Cc: Alexander Deucher <Alexander.Deucher@amd.com>
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Cc: Lijo Lazar <Lijo.Lazar@amd.com>
Cc: Stanley Yang <Stanley.Yang@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Suggested-by: Lazar Lijo <Lijo.Lazar@amd.com>
Signed-off-by: Luben Tuikov <luben.tuikov@amd.com>
Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
Acked-by: Alexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c
drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c

index 65b35dc821232f1a7efb944635ec6c46295a7b31..efbb24ae4ad3040e1b8686ef1c7da83d1dc680b6 100644 (file)
@@ -1981,9 +1981,9 @@ static int arcturus_i2c_xfer(struct i2c_adapter *i2c_adap,
                                cmd->CmdConfig |= I2C_CMD_WRITE;
                                cmd->RegisterAddr = msg->buf[j];
                        }
-                       if ((msg[i].flags & I2C_M_STOP) ||
-                           (!remaining_bytes))
+                       if (!remaining_bytes)
                                cmd->CmdConfig |= CMDCONFIG_STOP_MASK;
+
                        if ((j == 0) && !(msg[i].flags & I2C_M_NOSTART))
                                cmd->CmdConfig |= CMDCONFIG_RESTART_BIT;
                }
index 560eff524a1595dce2150253b5abec25fe6e8219..1741598bc9feafaa2bbff5fcc1d0f1576117d809 100644 (file)
@@ -2780,9 +2780,9 @@ static int navi10_i2c_xfer(struct i2c_adapter *i2c_adap,
                                cmd->CmdConfig |= I2C_CMD_WRITE;
                                cmd->RegisterAddr = msg->buf[j];
                        }
-                       if ((msg[i].flags & I2C_M_STOP) ||
-                           (!remaining_bytes))
+                       if (!remaining_bytes)
                                cmd->CmdConfig |= CMDCONFIG_STOP_MASK;
+
                        if ((j == 0) && !(msg[i].flags & I2C_M_NOSTART))
                                cmd->CmdConfig |= CMDCONFIG_RESTART_BIT;
                }
index 93acf3f869227a9f6d723738abd4a3d095956818..7c266420e31cc7645107b4216004649c9cde209e 100644 (file)
@@ -3487,9 +3487,9 @@ static int sienna_cichlid_i2c_xfer(struct i2c_adapter *i2c_adap,
                                cmd->CmdConfig |= CMDCONFIG_READWRITE_MASK;
                                cmd->ReadWriteData = msg->buf[j];
                        }
-                       if ((msg[i].flags & I2C_M_STOP) ||
-                           (!remaining_bytes))
+                       if (!remaining_bytes)
                                cmd->CmdConfig |= CMDCONFIG_STOP_MASK;
+
                        if ((j == 0) && !(msg[i].flags & I2C_M_NOSTART))
                                cmd->CmdConfig |= CMDCONFIG_RESTART_BIT;
                }