Otherwise, you may get divided-by-zero error or corrput the SMU fan
control feature.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Tested-by: Slava Abramov <slava.abramov@amd.com>
Acked-by: Slava Abramov <slava.abramov@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
                        PHM_PlatformCaps_ThermalController
                  );
 
-       if (0 == powerplay_table->usFanTableOffset)
+       if (0 == powerplay_table->usFanTableOffset) {
+               hwmgr->thermal_controller.use_hw_fan_control = 1;
                return 0;
+       }
 
        fan_table = (const PPTable_Generic_SubTable_Header *)
                (((unsigned long)powerplay_table) +
 
        uint8_t ucType;
        uint8_t ucI2cLine;
        uint8_t ucI2cAddress;
+       uint8_t use_hw_fan_control;
        struct pp_fan_info fanInfo;
        struct pp_advance_fan_control_parameters advanceFanControlParameters;
 };
 
                return 0;
        }
 
+       /* use hardware fan control */
+       if (hwmgr->thermal_controller.use_hw_fan_control)
+               return 0;
+
        tmp64 = hwmgr->thermal_controller.advanceFanControlParameters.
                        usPWMMin * duty100;
        do_div(tmp64, 10000);