drm/amd/powerplay: optimize i2c bus access implementation
The caller needs not care about the internal details how the powerplay API implemented. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Nirmoy Das <nirmoy.das@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
70bdb6ed22
commit
20d3c28ce4
@ -1247,3 +1247,18 @@ int amdgpu_dpm_set_clockgating_by_smu(struct amdgpu_device *adev,
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int amdgpu_dpm_smu_i2c_bus_access(struct amdgpu_device *adev,
|
||||
bool acquire)
|
||||
{
|
||||
void *pp_handle = adev->powerplay.pp_handle;
|
||||
const struct amd_pm_funcs *pp_funcs =
|
||||
adev->powerplay.pp_funcs;
|
||||
int ret = -EOPNOTSUPP;
|
||||
|
||||
if (pp_funcs && pp_funcs->smu_i2c_bus_access)
|
||||
ret = pp_funcs->smu_i2c_bus_access(pp_handle,
|
||||
acquire);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -545,4 +545,7 @@ int amdgpu_dpm_enable_mgpu_fan_boost(struct amdgpu_device *adev);
|
||||
int amdgpu_dpm_set_clockgating_by_smu(struct amdgpu_device *adev,
|
||||
uint32_t msg_id);
|
||||
|
||||
int amdgpu_dpm_smu_i2c_bus_access(struct amdgpu_device *adev,
|
||||
bool acquire);
|
||||
|
||||
#endif
|
||||
|
@ -508,14 +508,9 @@ static bool smu_v11_0_i2c_bus_lock(struct i2c_adapter *control)
|
||||
struct amdgpu_device *adev = to_amdgpu_device(control);
|
||||
|
||||
/* Send PPSMC_MSG_RequestI2CBus */
|
||||
if (!adev->powerplay.pp_funcs->smu_i2c_bus_access)
|
||||
goto Fail;
|
||||
|
||||
|
||||
if (!adev->powerplay.pp_funcs->smu_i2c_bus_access(adev->powerplay.pp_handle, true))
|
||||
if (!amdgpu_dpm_smu_i2c_bus_access(adev, true))
|
||||
return true;
|
||||
|
||||
Fail:
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -523,16 +518,10 @@ static bool smu_v11_0_i2c_bus_unlock(struct i2c_adapter *control)
|
||||
{
|
||||
struct amdgpu_device *adev = to_amdgpu_device(control);
|
||||
|
||||
/* Send PPSMC_MSG_RequestI2CBus */
|
||||
if (!adev->powerplay.pp_funcs->smu_i2c_bus_access)
|
||||
goto Fail;
|
||||
|
||||
/* Send PPSMC_MSG_ReleaseI2CBus */
|
||||
if (!adev->powerplay.pp_funcs->smu_i2c_bus_access(adev->powerplay.pp_handle,
|
||||
false))
|
||||
if (!amdgpu_dpm_smu_i2c_bus_access(adev, false))
|
||||
return true;
|
||||
|
||||
Fail:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user