[PATCH 1/3] drm/amdgpu: add IP helpers for wait_for_idle and is_idle
zhoucm1
david1.zhou at amd.com
Fri Jun 24 02:40:16 UTC 2016
On 2016年06月23日 23:54, Alex Deucher wrote:
> Helpers to to call the IP functions for the selected IP.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Reviewed-by: Chunming zhou <david1.zhou at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 30 ++++++++++++++++++++++++++++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 0868bfc..019f255 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -187,6 +187,10 @@ int amdgpu_set_clockgating_state(struct amdgpu_device *adev,
> int amdgpu_set_powergating_state(struct amdgpu_device *adev,
> enum amd_ip_block_type block_type,
> enum amd_powergating_state state);
> +int amdgpu_wait_for_idle(struct amdgpu_device *adev,
> + enum amd_ip_block_type block_type);
> +bool amdgpu_is_idle(struct amdgpu_device *adev,
> + enum amd_ip_block_type block_type);
>
> struct amdgpu_ip_block_version {
> enum amd_ip_block_type type;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 5cba14d..ac606b9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1102,6 +1102,36 @@ int amdgpu_set_powergating_state(struct amdgpu_device *adev,
> return r;
> }
>
> +int amdgpu_wait_for_idle(struct amdgpu_device *adev,
> + enum amd_ip_block_type block_type)
> +{
> + int i, r;
> +
> + for (i = 0; i < adev->num_ip_blocks; i++) {
> + if (adev->ip_blocks[i].type == block_type) {
> + r = adev->ip_blocks[i].funcs->wait_for_idle((void *)adev);
> + if (r)
> + return r;
> + break;
> + }
> + }
> + return 0;
> +
> +}
> +
> +bool amdgpu_is_idle(struct amdgpu_device *adev,
> + enum amd_ip_block_type block_type)
> +{
> + int i;
> +
> + for (i = 0; i < adev->num_ip_blocks; i++) {
> + if (adev->ip_blocks[i].type == block_type)
> + return adev->ip_blocks[i].funcs->is_idle((void *)adev);
> + }
> + return true;
> +
> +}
> +
> const struct amdgpu_ip_block_version * amdgpu_get_ip_block(
> struct amdgpu_device *adev,
> enum amd_ip_block_type type)
More information about the amd-gfx
mailing list