drm/radeon/kms: handle NI thermal controller
authorAlex Deucher <alexdeucher@gmail.com>
Fri, 7 Jan 2011 02:19:22 +0000 (21:19 -0500)
committerDave Airlie <airlied@redhat.com>
Fri, 7 Jan 2011 04:11:29 +0000 (14:11 +1000)
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_atombios.c
drivers/gpu/drm/radeon/radeon_pm.c

index 73730fd..5598f95 100644 (file)
@@ -739,6 +739,7 @@ enum radeon_int_thermal_type {
        THERMAL_TYPE_RV770,
        THERMAL_TYPE_EVERGREEN,
        THERMAL_TYPE_SUMO,
+       THERMAL_TYPE_NI,
 };
 
 struct radeon_voltage {
index a2dfe25..03f1c9a 100644 (file)
@@ -1891,6 +1891,7 @@ static const char *pp_lib_thermal_controller_names[] = {
        "Evergreen",
        "emc2103",
        "Sumo",
+       "Northern Islands",
 };
 
 union power_info {
@@ -2154,6 +2155,11 @@ static void radeon_atombios_add_pplib_thermal_controller(struct radeon_device *r
                                 (controller->ucFanParameters &
                                  ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with");
                        rdev->pm.int_thermal_type = THERMAL_TYPE_SUMO;
+               } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_NISLANDS) {
+                       DRM_INFO("Internal thermal controller %s fan control\n",
+                                (controller->ucFanParameters &
+                                 ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with");
+                       rdev->pm.int_thermal_type = THERMAL_TYPE_NI;
                } else if ((controller->ucType ==
                            ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO) ||
                           (controller->ucType ==
index 0afd26c..7ad2e1a 100644 (file)
@@ -440,6 +440,7 @@ static ssize_t radeon_hwmon_show_temp(struct device *dev,
                temp = rv770_get_temp(rdev);
                break;
        case THERMAL_TYPE_EVERGREEN:
+       case THERMAL_TYPE_NI:
                temp = evergreen_get_temp(rdev);
                break;
        case THERMAL_TYPE_SUMO: