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)