aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2012-12-14 11:57:36 -0500
committerAlex Deucher <alexander.deucher@amd.com>2013-06-27 10:49:17 -0400
commit29a152218980fee821da952cb4edea2e3231ee0c (patch)
treeabef5398674ab0eeaef42e8a4bb2c68043d73c4a /drivers
parent6bd1c3853210e36569601096e2344f8258fd516d (diff)
drm/radeon: add support for thermal sensor on tn
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/radeon/ni.c8
-rw-r--r--drivers/gpu/drm/radeon/nid.h3
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h1
4 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 84583302b081..f88946160854 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -692,6 +692,14 @@ out:
692 return err; 692 return err;
693} 693}
694 694
695int tn_get_temp(struct radeon_device *rdev)
696{
697 u32 temp = RREG32_SMC(TN_CURRENT_GNB_TEMP) & 0x7ff;
698 int actual_temp = (temp / 8) - 49;
699
700 return actual_temp * 1000;
701}
702
695/* 703/*
696 * Core functions 704 * Core functions
697 */ 705 */
diff --git a/drivers/gpu/drm/radeon/nid.h b/drivers/gpu/drm/radeon/nid.h
index e226faf16fea..7b8da5214729 100644
--- a/drivers/gpu/drm/radeon/nid.h
+++ b/drivers/gpu/drm/radeon/nid.h
@@ -489,6 +489,9 @@
489# define CACHE_FLUSH_AND_INV_EVENT_TS (0x14 << 0) 489# define CACHE_FLUSH_AND_INV_EVENT_TS (0x14 << 0)
490# define CACHE_FLUSH_AND_INV_EVENT (0x16 << 0) 490# define CACHE_FLUSH_AND_INV_EVENT (0x16 << 0)
491 491
492/* TN SMU registers */
493#define TN_CURRENT_GNB_TEMP 0x1F390
494
492/* 495/*
493 * UVD 496 * UVD
494 */ 497 */
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 9f5426388cf7..0a39680ed166 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -1897,6 +1897,7 @@ static struct radeon_asic trinity_asic = {
1897 .set_pcie_lanes = NULL, 1897 .set_pcie_lanes = NULL,
1898 .set_clock_gating = NULL, 1898 .set_clock_gating = NULL,
1899 .set_uvd_clocks = &sumo_set_uvd_clocks, 1899 .set_uvd_clocks = &sumo_set_uvd_clocks,
1900 .get_temperature = &tn_get_temp,
1900 }, 1901 },
1901 .pflip = { 1902 .pflip = {
1902 .pre_page_flip = &evergreen_pre_page_flip, 1903 .pre_page_flip = &evergreen_pre_page_flip,
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index 74f04a8c7db4..0879f3be8cbc 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -492,6 +492,7 @@ void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable);
492void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode); 492void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode);
493int evergreen_get_temp(struct radeon_device *rdev); 493int evergreen_get_temp(struct radeon_device *rdev);
494int sumo_get_temp(struct radeon_device *rdev); 494int sumo_get_temp(struct radeon_device *rdev);
495int tn_get_temp(struct radeon_device *rdev);
495 496
496/* 497/*
497 * cayman 498 * cayman