Commit 4bdca205 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amdgpu: Add utility functions for xcp



Add utility functions to get details of xcp and iterate through
available xcps.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarLe Ma <le.ma@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent db3b5cb6
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -256,3 +256,15 @@ int amdgpu_xcp_get_partition(struct amdgpu_xcp_mgr *xcp_mgr,


	return id_mask;
	return id_mask;
}
}

int amdgpu_xcp_get_inst_details(struct amdgpu_xcp *xcp,
				enum AMDGPU_XCP_IP_BLOCK ip,
				uint32_t *inst_mask)
{
	if (!xcp->valid || !inst_mask || !(xcp->ip[ip].valid))
		return -EINVAL;

	*inst_mask = xcp->ip[ip].inst_mask;

	return 0;
}
+31 −0
Original line number Original line Diff line number Diff line
@@ -108,4 +108,35 @@ int amdgpu_xcp_switch_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, int mode);
int amdgpu_xcp_get_partition(struct amdgpu_xcp_mgr *xcp_mgr,
int amdgpu_xcp_get_partition(struct amdgpu_xcp_mgr *xcp_mgr,
			     enum AMDGPU_XCP_IP_BLOCK ip, int instance);
			     enum AMDGPU_XCP_IP_BLOCK ip, int instance);


int amdgpu_xcp_get_inst_details(struct amdgpu_xcp *xcp,
				enum AMDGPU_XCP_IP_BLOCK ip,
				uint32_t *inst_mask);

static inline int amdgpu_xcp_get_num_xcp(struct amdgpu_xcp_mgr *xcp_mgr)
{
	if (!xcp_mgr)
		return 1;
	else
		return xcp_mgr->num_xcps;
}

static inline struct amdgpu_xcp *
amdgpu_get_next_xcp(struct amdgpu_xcp_mgr *xcp_mgr, int *from)
{
	if (!xcp_mgr)
		return NULL;

	while (*from < MAX_XCP) {
		if (xcp_mgr->xcp[*from].valid)
			return &xcp_mgr->xcp[*from];
		++(*from);
	}

	return NULL;
}

#define for_each_xcp(xcp_mgr, xcp, i)                            \
	for (i = 0, xcp = amdgpu_get_next_xcp(xcp_mgr, &i); xcp; \
	     xcp = amdgpu_get_next_xcp(xcp_mgr, &i))

#endif
#endif