Commit e66582f9 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/radeon: add get_allowed_info_register for cayman/TN



Registers that can be fetched from the info ioctl.

Tested-by: default avatarMarek Olšák <marek.olsak@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ff609975
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -828,6 +828,35 @@ out:
	return err;
}

/**
 * cayman_get_allowed_info_register - fetch the register for the info ioctl
 *
 * @rdev: radeon_device pointer
 * @reg: register offset in bytes
 * @val: register value
 *
 * Returns 0 for success or -EINVAL for an invalid register
 *
 */
int cayman_get_allowed_info_register(struct radeon_device *rdev,
				     u32 reg, u32 *val)
{
	switch (reg) {
	case GRBM_STATUS:
	case GRBM_STATUS_SE0:
	case GRBM_STATUS_SE1:
	case SRBM_STATUS:
	case SRBM_STATUS2:
	case (DMA_STATUS_REG + DMA0_REGISTER_OFFSET):
	case (DMA_STATUS_REG + DMA1_REGISTER_OFFSET):
	case UVD_STATUS:
		*val = RREG32(reg);
		return 0;
	default:
		return -EINVAL;
	}
}

int tn_get_temp(struct radeon_device *rdev)
{
	u32 temp = RREG32_SMC(TN_CURRENT_GNB_TEMP) & 0x7ff;
+1 −0
Original line number Diff line number Diff line
@@ -1086,6 +1086,7 @@
#define UVD_UDEC_DBW_ADDR_CONFIG			0xEF54
#define UVD_RBC_RB_RPTR					0xF690
#define UVD_RBC_RB_WPTR					0xF694
#define UVD_STATUS					0xf6bc

/*
 * PM4
+2 −0
Original line number Diff line number Diff line
@@ -1668,6 +1668,7 @@ static struct radeon_asic cayman_asic = {
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
	.get_xclk = &rv770_get_xclk,
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
	.get_allowed_info_register = cayman_get_allowed_info_register,
	.gart = {
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
		.get_page_entry = &rs600_gart_get_page_entry,
@@ -1772,6 +1773,7 @@ static struct radeon_asic trinity_asic = {
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
	.get_xclk = &r600_get_xclk,
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
	.get_allowed_info_register = cayman_get_allowed_info_register,
	.gart = {
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
		.get_page_entry = &rs600_gart_get_page_entry,
+2 −0
Original line number Diff line number Diff line
@@ -651,6 +651,8 @@ uint32_t cayman_dma_get_wptr(struct radeon_device *rdev,
			     struct radeon_ring *ring);
void cayman_dma_set_wptr(struct radeon_device *rdev,
			 struct radeon_ring *ring);
int cayman_get_allowed_info_register(struct radeon_device *rdev,
				     u32 reg, u32 *val);

int ni_dpm_init(struct radeon_device *rdev);
void ni_dpm_setup_asic(struct radeon_device *rdev);