Commit 35ed2703 authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher

drm/amdgpu/pm: ADD I2C quirk adapter table

To be used by kernel clients of the adapter.

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: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Suggested-by: default avatarLazar Lijo <Lijo.Lazar@amd.com>
Signed-off-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Reviewed-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Reviewed-by: default avatarAlexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 14df5650
...@@ -2034,6 +2034,12 @@ static const struct i2c_algorithm arcturus_i2c_algo = { ...@@ -2034,6 +2034,12 @@ static const struct i2c_algorithm arcturus_i2c_algo = {
.functionality = arcturus_i2c_func, .functionality = arcturus_i2c_func,
}; };
static const struct i2c_adapter_quirks arcturus_i2c_control_quirks = {
.max_read_len = MAX_SW_I2C_COMMANDS,
.max_write_len = MAX_SW_I2C_COMMANDS,
};
static int arcturus_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control) static int arcturus_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control)
{ {
struct amdgpu_device *adev = to_amdgpu_device(control); struct amdgpu_device *adev = to_amdgpu_device(control);
...@@ -2043,6 +2049,7 @@ static int arcturus_i2c_control_init(struct smu_context *smu, struct i2c_adapter ...@@ -2043,6 +2049,7 @@ static int arcturus_i2c_control_init(struct smu_context *smu, struct i2c_adapter
control->class = I2C_CLASS_SPD | I2C_CLASS_HWMON; control->class = I2C_CLASS_SPD | I2C_CLASS_HWMON;
control->dev.parent = &adev->pdev->dev; control->dev.parent = &adev->pdev->dev;
control->algo = &arcturus_i2c_algo; control->algo = &arcturus_i2c_algo;
control->quirks = &arcturus_i2c_control_quirks;
snprintf(control->name, sizeof(control->name), "AMDGPU SMU"); snprintf(control->name, sizeof(control->name), "AMDGPU SMU");
res = i2c_add_adapter(control); res = i2c_add_adapter(control);
......
...@@ -2833,6 +2833,11 @@ static const struct i2c_algorithm navi10_i2c_algo = { ...@@ -2833,6 +2833,11 @@ static const struct i2c_algorithm navi10_i2c_algo = {
.functionality = navi10_i2c_func, .functionality = navi10_i2c_func,
}; };
static const struct i2c_adapter_quirks navi10_i2c_control_quirks = {
.max_read_len = MAX_SW_I2C_COMMANDS,
.max_write_len = MAX_SW_I2C_COMMANDS,
};
static int navi10_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control) static int navi10_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control)
{ {
struct amdgpu_device *adev = to_amdgpu_device(control); struct amdgpu_device *adev = to_amdgpu_device(control);
...@@ -2843,6 +2848,7 @@ static int navi10_i2c_control_init(struct smu_context *smu, struct i2c_adapter * ...@@ -2843,6 +2848,7 @@ static int navi10_i2c_control_init(struct smu_context *smu, struct i2c_adapter *
control->dev.parent = &adev->pdev->dev; control->dev.parent = &adev->pdev->dev;
control->algo = &navi10_i2c_algo; control->algo = &navi10_i2c_algo;
snprintf(control->name, sizeof(control->name), "AMDGPU SMU"); snprintf(control->name, sizeof(control->name), "AMDGPU SMU");
control->quirks = &navi10_i2c_control_quirks;
res = i2c_add_adapter(control); res = i2c_add_adapter(control);
if (res) if (res)
......
...@@ -3540,6 +3540,11 @@ static const struct i2c_algorithm sienna_cichlid_i2c_algo = { ...@@ -3540,6 +3540,11 @@ static const struct i2c_algorithm sienna_cichlid_i2c_algo = {
.functionality = sienna_cichlid_i2c_func, .functionality = sienna_cichlid_i2c_func,
}; };
static const struct i2c_adapter_quirks sienna_cichlid_i2c_control_quirks = {
.max_read_len = MAX_SW_I2C_COMMANDS,
.max_write_len = MAX_SW_I2C_COMMANDS,
};
static int sienna_cichlid_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control) static int sienna_cichlid_i2c_control_init(struct smu_context *smu, struct i2c_adapter *control)
{ {
struct amdgpu_device *adev = to_amdgpu_device(control); struct amdgpu_device *adev = to_amdgpu_device(control);
...@@ -3550,6 +3555,7 @@ static int sienna_cichlid_i2c_control_init(struct smu_context *smu, struct i2c_a ...@@ -3550,6 +3555,7 @@ static int sienna_cichlid_i2c_control_init(struct smu_context *smu, struct i2c_a
control->dev.parent = &adev->pdev->dev; control->dev.parent = &adev->pdev->dev;
control->algo = &sienna_cichlid_i2c_algo; control->algo = &sienna_cichlid_i2c_algo;
snprintf(control->name, sizeof(control->name), "AMDGPU SMU"); snprintf(control->name, sizeof(control->name), "AMDGPU SMU");
control->quirks = &sienna_cichlid_i2c_control_quirks;
res = i2c_add_adapter(control); res = i2c_add_adapter(control);
if (res) if (res)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment