#define smu_start_thermal_control(smu) \
        ((smu)->funcs->start_thermal_control? (smu)->funcs->start_thermal_control((smu)) : 0)
 #define smu_read_sensor(smu, sensor, data, size) \
-       ((smu)->funcs->read_sensor? (smu)->funcs->read_sensor((smu), (sensor), (data), (size)) : 0)
-#define smu_asic_read_sensor(smu, sensor, data, size) \
        ((smu)->ppt_funcs->read_sensor? (smu)->ppt_funcs->read_sensor((smu), (sensor), (data), (size)) : 0)
+#define smu_smc_read_sensor(smu, sensor, data, size) \
+       ((smu)->funcs->read_sensor? (smu)->funcs->read_sensor((smu), (sensor), (data), (size)) : -EINVAL)
 #define smu_get_power_profile_mode(smu, buf) \
        ((smu)->ppt_funcs->get_power_profile_mode ? (smu)->ppt_funcs->get_power_profile_mode((smu), buf) : 0)
 #define smu_set_power_profile_mode(smu, param, param_size) \
 
        struct smu_table_context *table_context = &smu->smu_table;
        PPTable_t *pptable = table_context->driver_pptable;
 
+       if(!data || !size)
+               return -EINVAL;
+
        switch (sensor) {
        case AMDGPU_PP_SENSOR_MAX_FAN_RPM:
                *(uint32_t *)data = pptable->FanMaximumRpm;
                *size = 4;
                break;
        default:
-               return -EINVAL;
+               ret = smu_smc_read_sensor(smu, sensor, data, size);
        }
 
        return ret;
 
                                 void *data, uint32_t *size)
 {
        int ret = 0;
+
+       if(!data || !size)
+               return -EINVAL;
+
        switch (sensor) {
        case AMDGPU_PP_SENSOR_GFX_MCLK:
                ret = smu_get_current_clk_freq(smu, SMU_UCLK, (uint32_t *)data);
                break;
        }
 
-       /* try get sensor data by asic */
-       if (ret)
-               ret = smu_asic_read_sensor(smu, sensor, data, size);
-
        if (ret)
                *size = 0;
 
 
        struct smu_table_context *table_context = &smu->smu_table;
        PPTable_t *pptable = table_context->driver_pptable;
 
+       if(!data || !size)
+               return -EINVAL;
+
        switch (sensor) {
        case AMDGPU_PP_SENSOR_MAX_FAN_RPM:
                *(uint32_t *)data = pptable->FanMaximumRpm;
                *size = 4;
                break;
        default:
-               return -EINVAL;
+               ret = smu_smc_read_sensor(smu, sensor, data, size);
        }
 
        return ret;