Need to read back from registers for manual mode rather than
using the metrics table.
Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1164
Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
        if (!speed)
                return -EINVAL;
 
-       return arcturus_get_smu_metrics_data(smu,
-                                            METRICS_CURR_FANSPEED,
-                                            speed);
+       switch (smu_v11_0_get_fan_control_mode(smu)) {
+       case AMD_FAN_CTRL_AUTO:
+               return arcturus_get_smu_metrics_data(smu,
+                                                    METRICS_CURR_FANSPEED,
+                                                    speed);
+       default:
+               return smu_v11_0_get_fan_speed_rpm(smu, speed);
+       }
 }
 
 static int arcturus_get_fan_parameters(struct smu_context *smu)
 
        if (!speed)
                return -EINVAL;
 
-       return navi10_get_smu_metrics_data(smu,
-                                          METRICS_CURR_FANSPEED,
-                                          speed);
+       switch (smu_v11_0_get_fan_control_mode(smu)) {
+       case AMD_FAN_CTRL_AUTO:
+               return navi10_get_smu_metrics_data(smu,
+                                                  METRICS_CURR_FANSPEED,
+                                                  speed);
+       default:
+               return smu_v11_0_get_fan_speed_rpm(smu, speed);
+       }
 }
 
 static int navi10_get_fan_parameters(struct smu_context *smu)
 
        if (!speed)
                return -EINVAL;
 
-       return sienna_cichlid_get_smu_metrics_data(smu,
-                                                  METRICS_CURR_FANSPEED,
-                                                  speed);
+       switch (smu_v11_0_get_fan_control_mode(smu)) {
+       case AMD_FAN_CTRL_AUTO:
+               return sienna_cichlid_get_smu_metrics_data(smu,
+                                                          METRICS_CURR_FANSPEED,
+                                                          speed);
+       default:
+               return smu_v11_0_get_fan_speed_rpm(smu, speed);
+       }
 }
 
 static int sienna_cichlid_get_fan_parameters(struct smu_context *smu)