aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/r600.c26
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h2
3 files changed, 32 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 2fcad344492f..8f6d862a1882 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -109,6 +109,32 @@ extern int evergreen_rlc_resume(struct radeon_device *rdev);
109extern void rv770_set_clk_bypass_mode(struct radeon_device *rdev); 109extern void rv770_set_clk_bypass_mode(struct radeon_device *rdev);
110 110
111/** 111/**
112 * r600_get_allowed_info_register - fetch the register for the info ioctl
113 *
114 * @rdev: radeon_device pointer
115 * @reg: register offset in bytes
116 * @val: register value
117 *
118 * Returns 0 for success or -EINVAL for an invalid register
119 *
120 */
121int r600_get_allowed_info_register(struct radeon_device *rdev,
122 u32 reg, u32 *val)
123{
124 switch (reg) {
125 case GRBM_STATUS:
126 case GRBM_STATUS2:
127 case R_000E50_SRBM_STATUS:
128 case DMA_STATUS_REG:
129 case UVD_STATUS:
130 *val = RREG32(reg);
131 return 0;
132 default:
133 return -EINVAL;
134 }
135}
136
137/**
112 * r600_get_xclk - get the xclk 138 * r600_get_xclk - get the xclk
113 * 139 *
114 * @rdev: radeon_device pointer 140 * @rdev: radeon_device pointer
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 558be7a88b2f..f2c343717c4b 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -940,6 +940,7 @@ static struct radeon_asic r600_asic = {
940 .mc_wait_for_idle = &r600_mc_wait_for_idle, 940 .mc_wait_for_idle = &r600_mc_wait_for_idle,
941 .get_xclk = &r600_get_xclk, 941 .get_xclk = &r600_get_xclk,
942 .get_gpu_clock_counter = &r600_get_gpu_clock_counter, 942 .get_gpu_clock_counter = &r600_get_gpu_clock_counter,
943 .get_allowed_info_register = r600_get_allowed_info_register,
943 .gart = { 944 .gart = {
944 .tlb_flush = &r600_pcie_gart_tlb_flush, 945 .tlb_flush = &r600_pcie_gart_tlb_flush,
945 .get_page_entry = &rs600_gart_get_page_entry, 946 .get_page_entry = &rs600_gart_get_page_entry,
@@ -1024,6 +1025,7 @@ static struct radeon_asic rv6xx_asic = {
1024 .mc_wait_for_idle = &r600_mc_wait_for_idle, 1025 .mc_wait_for_idle = &r600_mc_wait_for_idle,
1025 .get_xclk = &r600_get_xclk, 1026 .get_xclk = &r600_get_xclk,
1026 .get_gpu_clock_counter = &r600_get_gpu_clock_counter, 1027 .get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1028 .get_allowed_info_register = r600_get_allowed_info_register,
1027 .gart = { 1029 .gart = {
1028 .tlb_flush = &r600_pcie_gart_tlb_flush, 1030 .tlb_flush = &r600_pcie_gart_tlb_flush,
1029 .get_page_entry = &rs600_gart_get_page_entry, 1031 .get_page_entry = &rs600_gart_get_page_entry,
@@ -1116,6 +1118,7 @@ static struct radeon_asic rs780_asic = {
1116 .mc_wait_for_idle = &r600_mc_wait_for_idle, 1118 .mc_wait_for_idle = &r600_mc_wait_for_idle,
1117 .get_xclk = &r600_get_xclk, 1119 .get_xclk = &r600_get_xclk,
1118 .get_gpu_clock_counter = &r600_get_gpu_clock_counter, 1120 .get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1121 .get_allowed_info_register = r600_get_allowed_info_register,
1119 .gart = { 1122 .gart = {
1120 .tlb_flush = &r600_pcie_gart_tlb_flush, 1123 .tlb_flush = &r600_pcie_gart_tlb_flush,
1121 .get_page_entry = &rs600_gart_get_page_entry, 1124 .get_page_entry = &rs600_gart_get_page_entry,
@@ -1221,6 +1224,7 @@ static struct radeon_asic rv770_asic = {
1221 .mc_wait_for_idle = &r600_mc_wait_for_idle, 1224 .mc_wait_for_idle = &r600_mc_wait_for_idle,
1222 .get_xclk = &rv770_get_xclk, 1225 .get_xclk = &rv770_get_xclk,
1223 .get_gpu_clock_counter = &r600_get_gpu_clock_counter, 1226 .get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1227 .get_allowed_info_register = r600_get_allowed_info_register,
1224 .gart = { 1228 .gart = {
1225 .tlb_flush = &r600_pcie_gart_tlb_flush, 1229 .tlb_flush = &r600_pcie_gart_tlb_flush,
1226 .get_page_entry = &rs600_gart_get_page_entry, 1230 .get_page_entry = &rs600_gart_get_page_entry,
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index 4259daf94d91..3e1346d585b3 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -384,6 +384,8 @@ u32 r600_gfx_get_wptr(struct radeon_device *rdev,
384 struct radeon_ring *ring); 384 struct radeon_ring *ring);
385void r600_gfx_set_wptr(struct radeon_device *rdev, 385void r600_gfx_set_wptr(struct radeon_device *rdev,
386 struct radeon_ring *ring); 386 struct radeon_ring *ring);
387int r600_get_allowed_info_register(struct radeon_device *rdev,
388 u32 reg, u32 *val);
387/* r600 irq */ 389/* r600 irq */
388int r600_irq_process(struct radeon_device *rdev); 390int r600_irq_process(struct radeon_device *rdev);
389int r600_irq_init(struct radeon_device *rdev); 391int r600_irq_init(struct radeon_device *rdev);