Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5dbbb60b authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: add IP helpers for wait_for_idle and is_idle



Helpers to to call the IP functions for the selected IP.

Reviewed-by: default avatarChunming zhou <david1.zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent bfa83355
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -187,6 +187,10 @@ int amdgpu_set_clockgating_state(struct amdgpu_device *adev,
int amdgpu_set_powergating_state(struct amdgpu_device *adev,
int amdgpu_set_powergating_state(struct amdgpu_device *adev,
				  enum amd_ip_block_type block_type,
				  enum amd_ip_block_type block_type,
				  enum amd_powergating_state state);
				  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 {
struct amdgpu_ip_block_version {
	enum amd_ip_block_type type;
	enum amd_ip_block_type type;
+30 −0
Original line number Original line Diff line number Diff line
@@ -1102,6 +1102,36 @@ int amdgpu_set_powergating_state(struct amdgpu_device *adev,
	return r;
	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(
const struct amdgpu_ip_block_version * amdgpu_get_ip_block(
					struct amdgpu_device *adev,
					struct amdgpu_device *adev,
					enum amd_ip_block_type type)
					enum amd_ip_block_type type)