(uint32_t *)data);
                *size = 4;
                break;
+       case AMDGPU_PP_SENSOR_GFX_MCLK:
+               ret = arcturus_get_current_clk_freq_by_table(smu, SMU_UCLK, (uint32_t *)data);
+               /* the output clock frequency in 10K unit */
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
+       case AMDGPU_PP_SENSOR_GFX_SCLK:
+               ret = arcturus_get_current_clk_freq_by_table(smu, SMU_GFXCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
        default:
                ret = smu_v11_0_read_sensor(smu, sensor, data, size);
        }
 
                ret = navi10_thermal_get_temperature(smu, sensor, (uint32_t *)data);
                *size = 4;
                break;
+       case AMDGPU_PP_SENSOR_GFX_MCLK:
+               ret = navi10_get_current_clk_freq_by_table(smu, SMU_UCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
+       case AMDGPU_PP_SENSOR_GFX_SCLK:
+               ret = navi10_get_current_clk_freq_by_table(smu, SMU_GFXCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
        default:
                ret = smu_v11_0_read_sensor(smu, sensor, data, size);
        }
 
                ret = renoir_get_gpu_temperature(smu, (uint32_t *)data);
                *size = 4;
                break;
+       case AMDGPU_PP_SENSOR_GFX_MCLK:
+               ret = renoir_get_current_clk_freq_by_table(smu, SMU_UCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
+       case AMDGPU_PP_SENSOR_GFX_SCLK:
+               ret = renoir_get_current_clk_freq_by_table(smu, SMU_GFXCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
        default:
                ret = smu_v12_0_read_sensor(smu, sensor, data, size);
        }
 
                ret = sienna_cichlid_thermal_get_temperature(smu, sensor, (uint32_t *)data);
                *size = 4;
                break;
+       case AMDGPU_PP_SENSOR_GFX_MCLK:
+               ret = sienna_cichlid_get_current_clk_freq_by_table(smu, SMU_UCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
+       case AMDGPU_PP_SENSOR_GFX_SCLK:
+               ret = sienna_cichlid_get_current_clk_freq_by_table(smu, SMU_GFXCLK, (uint32_t *)data);
+               *(uint32_t *)data *= 100;
+               *size = 4;
+               break;
        default:
                ret = smu_v11_0_read_sensor(smu, sensor, data, size);
        }
 
                return -EINVAL;
 
        switch (sensor) {
-       case AMDGPU_PP_SENSOR_GFX_MCLK:
-               ret = smu_v11_0_get_current_clk_freq(smu, SMU_UCLK, (uint32_t *)data);
-               *size = 4;
-               break;
-       case AMDGPU_PP_SENSOR_GFX_SCLK:
-               ret = smu_v11_0_get_current_clk_freq(smu, SMU_GFXCLK, (uint32_t *)data);
-               *size = 4;
-               break;
        case AMDGPU_PP_SENSOR_VDDGFX:
                ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
                *size = 4;
 
                return -EINVAL;
 
        switch (sensor) {
-       case AMDGPU_PP_SENSOR_GFX_MCLK:
-               ret = smu_v12_0_get_current_clk_freq(smu, SMU_UCLK, (uint32_t *)data);
-               *size = 4;
-               break;
-       case AMDGPU_PP_SENSOR_GFX_SCLK:
-               ret = smu_v12_0_get_current_clk_freq(smu, SMU_GFXCLK, (uint32_t *)data);
-               *size = 4;
-               break;
        default:
                ret = -EOPNOTSUPP;
                break;