drm/amdgpu/powerplay: factor out some pptable helpers
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 9 Oct 2018 21:03:53 +0000 (16:03 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Oct 2018 19:49:44 +0000 (14:49 -0500)
Move copy_array helpers to smu_helper.c and share between
vega12 and vega20.

Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/hwmgr/smu_helper.c
drivers/gpu/drm/amd/powerplay/hwmgr/smu_helper.h
drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c
drivers/gpu/drm/amd/powerplay/hwmgr/vega20_processpptables.c

index 8ad4e6960efd0727310ff037d465b3398f142080..4714b5b598255b1cad2790b76011f02e98afd704 100644 (file)
@@ -39,6 +39,50 @@ uint16_t convert_to_vddc(uint8_t vid)
        return (uint16_t) ((6200 - (vid * 25)) / VOLTAGE_SCALE);
 }
 
+int phm_copy_clock_limits_array(
+       struct pp_hwmgr *hwmgr,
+       uint32_t **pptable_info_array,
+       const uint32_t *pptable_array,
+       uint32_t power_saving_clock_count)
+{
+       uint32_t array_size, i;
+       uint32_t *table;
+
+       array_size = sizeof(uint32_t) * power_saving_clock_count;
+       table = kzalloc(array_size, GFP_KERNEL);
+       if (NULL == table)
+               return -ENOMEM;
+
+       for (i = 0; i < power_saving_clock_count; i++)
+               table[i] = le32_to_cpu(pptable_array[i]);
+
+       *pptable_info_array = table;
+
+       return 0;
+}
+
+int phm_copy_overdrive_settings_limits_array(
+       struct pp_hwmgr *hwmgr,
+       uint32_t **pptable_info_array,
+       const uint32_t *pptable_array,
+       uint32_t od_setting_count)
+{
+       uint32_t array_size, i;
+       uint32_t *table;
+
+       array_size = sizeof(uint32_t) * od_setting_count;
+       table = kzalloc(array_size, GFP_KERNEL);
+       if (NULL == table)
+               return -ENOMEM;
+
+       for (i = 0; i < od_setting_count; i++)
+               table[i] = le32_to_cpu(pptable_array[i]);
+
+       *pptable_info_array = table;
+
+       return 0;
+}
+
 uint32_t phm_set_field_to_u32(u32 offset, u32 original_data, u32 field, u32 size)
 {
        u32 mask = 0;
index 5454289d5226c768a7ee69b280d9165e19fbb568..ad33983a8064e9608c21c5607adb6f3298ad78e5 100644 (file)
@@ -47,6 +47,18 @@ struct watermarks {
        uint32_t     padding[7];
 };
 
+int phm_copy_clock_limits_array(
+       struct pp_hwmgr *hwmgr,
+       uint32_t **pptable_info_array,
+       const uint32_t *pptable_array,
+       uint32_t power_saving_clock_count);
+
+int phm_copy_overdrive_settings_limits_array(
+       struct pp_hwmgr *hwmgr,
+       uint32_t **pptable_info_array,
+       const uint32_t *pptable_array,
+       uint32_t od_setting_count);
+
 extern int phm_wait_for_register_unequal(struct pp_hwmgr *hwmgr,
                                        uint32_t index,
                                        uint32_t value, uint32_t mask);
index 3203cd2d20293306396741f6a6e3f06a474648c0..9817f7a5ed29603f90fd18a02b8e8e982f182cfa 100644 (file)
@@ -99,50 +99,6 @@ static int set_platform_caps(struct pp_hwmgr *hwmgr, uint32_t powerplay_caps)
        return 0;
 }
 
-static int copy_clock_limits_array(
-       struct pp_hwmgr *hwmgr,
-       uint32_t **pptable_info_array,
-       const uint32_t *pptable_array)
-{
-       uint32_t array_size, i;
-       uint32_t *table;
-
-       array_size = sizeof(uint32_t) * ATOM_VEGA12_PPCLOCK_COUNT;
-
-       table = kzalloc(array_size, GFP_KERNEL);
-       if (NULL == table)
-               return -ENOMEM;
-
-       for (i = 0; i < ATOM_VEGA12_PPCLOCK_COUNT; i++)
-               table[i] = le32_to_cpu(pptable_array[i]);
-
-       *pptable_info_array = table;
-
-       return 0;
-}
-
-static int copy_overdrive_settings_limits_array(
-               struct pp_hwmgr *hwmgr,
-               uint32_t **pptable_info_array,
-               const uint32_t *pptable_array)
-{
-       uint32_t array_size, i;
-       uint32_t *table;
-
-       array_size = sizeof(uint32_t) * ATOM_VEGA12_ODSETTING_COUNT;
-
-       table = kzalloc(array_size, GFP_KERNEL);
-       if (NULL == table)
-               return -ENOMEM;
-
-       for (i = 0; i < ATOM_VEGA12_ODSETTING_COUNT; i++)
-               table[i] = le32_to_cpu(pptable_array[i]);
-
-       *pptable_info_array = table;
-
-       return 0;
-}
-
 static int append_vbios_pptable(struct pp_hwmgr *hwmgr, PPTable_t *ppsmc_pptable)
 {
        struct pp_atomfwctrl_smc_dpm_parameters smc_dpm_table;
@@ -258,8 +214,14 @@ static int init_powerplay_table_information(
        hwmgr->platform_descriptor.overdriveLimit.memoryClock =
                le32_to_cpu(powerplay_table->ODSettingsMax[ATOM_VEGA12_ODSETTING_UCLKFMAX]);
 
-       copy_overdrive_settings_limits_array(hwmgr, &pptable_information->od_settings_max, powerplay_table->ODSettingsMax);
-       copy_overdrive_settings_limits_array(hwmgr, &pptable_information->od_settings_min, powerplay_table->ODSettingsMin);
+       phm_copy_overdrive_settings_limits_array(hwmgr,
+                                                &pptable_information->od_settings_max,
+                                                powerplay_table->ODSettingsMax,
+                                                ATOM_VEGA12_ODSETTING_COUNT);
+       phm_copy_overdrive_settings_limits_array(hwmgr,
+                                                &pptable_information->od_settings_min,
+                                                powerplay_table->ODSettingsMin,
+                                                ATOM_VEGA12_ODSETTING_COUNT);
 
        /* hwmgr->platformDescriptor.minOverdriveVDDC = 0;
        hwmgr->platformDescriptor.maxOverdriveVDDC = 0;
@@ -287,8 +249,8 @@ static int init_powerplay_table_information(
                                PHM_PlatformCaps_PowerControl);
        }
 
-       copy_clock_limits_array(hwmgr, &pptable_information->power_saving_clock_max, powerplay_table->PowerSavingClockMax);
-       copy_clock_limits_array(hwmgr, &pptable_information->power_saving_clock_min, powerplay_table->PowerSavingClockMin);
+       phm_copy_clock_limits_array(hwmgr, &pptable_information->power_saving_clock_max, powerplay_table->PowerSavingClockMax, ATOM_VEGA12_PPCLOCK_COUNT);
+       phm_copy_clock_limits_array(hwmgr, &pptable_information->power_saving_clock_min, powerplay_table->PowerSavingClockMin, ATOM_VEGA12_PPCLOCK_COUNT);
 
        pptable_information->smc_pptable = (PPTable_t *)kmalloc(sizeof(PPTable_t), GFP_KERNEL);
        if (pptable_information->smc_pptable == NULL)
index 956aa6aff28de95625a19e443ceb00779c64035a..32fe38452094e7d0fafcee653421e6c397d0bacd 100644 (file)
@@ -661,50 +661,6 @@ static int set_platform_caps(struct pp_hwmgr *hwmgr, uint32_t powerplay_caps)
        return 0;
 }
 
-static int copy_clock_limits_array(
-       struct pp_hwmgr *hwmgr,
-       uint32_t **pptable_info_array,
-       const uint32_t *pptable_array,
-       uint32_t power_saving_clock_count)
-{
-       uint32_t array_size, i;
-       uint32_t *table;
-
-       array_size = sizeof(uint32_t) * power_saving_clock_count;
-       table = kzalloc(array_size, GFP_KERNEL);
-       if (NULL == table)
-               return -ENOMEM;
-
-       for (i = 0; i < power_saving_clock_count; i++)
-               table[i] = le32_to_cpu(pptable_array[i]);
-
-       *pptable_info_array = table;
-
-       return 0;
-}
-
-static int copy_overdrive_settings_limits_array(
-               struct pp_hwmgr *hwmgr,
-               uint32_t **pptable_info_array,
-               const uint32_t *pptable_array,
-               uint32_t od_setting_count)
-{
-       uint32_t array_size, i;
-       uint32_t *table;
-
-       array_size = sizeof(uint32_t) * od_setting_count;
-       table = kzalloc(array_size, GFP_KERNEL);
-       if (NULL == table)
-               return -ENOMEM;
-
-       for (i = 0; i < od_setting_count; i++)
-               table[i] = le32_to_cpu(pptable_array[i]);
-
-       *pptable_info_array = table;
-
-       return 0;
-}
-
 static int copy_overdrive_feature_capabilities_array(
                struct pp_hwmgr *hwmgr,
                uint8_t **pptable_info_array,
@@ -859,11 +815,11 @@ static int init_powerplay_table_information(
                                &pptable_information->od_feature_capabilities,
                                powerplay_table->OverDrive8Table.ODFeatureCapabilities,
                                od_feature_count);
-               copy_overdrive_settings_limits_array(hwmgr,
+               phm_copy_overdrive_settings_limits_array(hwmgr,
                                &pptable_information->od_settings_max,
                                powerplay_table->OverDrive8Table.ODSettingsMax,
                                od_setting_count);
-               copy_overdrive_settings_limits_array(hwmgr,
+               phm_copy_overdrive_settings_limits_array(hwmgr,
                                &pptable_information->od_settings_min,
                                powerplay_table->OverDrive8Table.ODSettingsMin,
                                od_setting_count);
@@ -890,11 +846,11 @@ static int init_powerplay_table_information(
                         ATOM_VEGA20_PPCLOCK_COUNT) ?
                        ATOM_VEGA20_PPCLOCK_COUNT :
                        le32_to_cpu(powerplay_table->PowerSavingClockTable.PowerSavingClockCount);
-               copy_clock_limits_array(hwmgr,
+               phm_copy_clock_limits_array(hwmgr,
                                &pptable_information->power_saving_clock_max,
                                powerplay_table->PowerSavingClockTable.PowerSavingClockMax,
                                power_saving_clock_count);
-               copy_clock_limits_array(hwmgr,
+               phm_copy_clock_limits_array(hwmgr,
                                &pptable_information->power_saving_clock_min,
                                powerplay_table->PowerSavingClockTable.PowerSavingClockMin,
                                power_saving_clock_count);