• Darren Powell's avatar
    amdgpu/pm: Powerplay API for smu , changes to clock and profile mode functions · 2ea092e5
    Darren Powell authored
    v3: updated to include new clocks vclk, dclk, od_vddgfx_offset, od_cclk
        Added forward declaration for function smu_force_smuclk_levels to resolve clash with other commits
        Resolved context clashes with other commits and v3 updates to patches 0003, 0004
    v2: fix errors flagged by checkpatch
    
    New Functions
      smu_bump_power_profile_mode() - changes profile mode assuming calling function already has mutex
      smu_force_ppclk_levels()      - accepts Powerplay enum pp_clock_type to specify clock to change
      smu_print_ppclk_levels()      - accepts Powerplay enum pp_clock_type to request clock levels
      amdgpu_get_pp_dpm_clock()     - accepts Powerplay enum pp_clock_type to request clock levels and allows
                                      all the amdgpu_get_pp_dpm_$CLK functions to have a single codepath
      amdgpu_set_pp_dpm_clock()     - accepts Powerplay enum pp_clock_type to set clock levels and allows
                                      all the amdgpu_set_pp_dpm_$CLK functions to have a single codepath
    
    Modified Functions
      smu_force_smuclk_levels        - changed function name to make clear difference to smu_force_ppclk_levels
      smu_force_ppclk_levels()       - modifed signature to implement Powerplay API force_clock_level
                                     - calls smu_force_smuclk_levels
      smu_print_smuclk_levels        - changed function name to make clear difference to smu_print_ppclk_levels
      smu_print_ppclk_levels()       - modifed signature to implement Powerplay API force_clock_level
                                     - calls smu_print_smuclk_levels
      smu_sys_get_gpu_metrics        - modifed arg0 to match Powerplay API get_gpu_metrics
      smu_get_power_profile_mode     - modifed arg0 to match Powerplay API get_power_profile_mode
      smu_set_power_profile_mode     - modifed arg0 to match Powerplay API set_power_profile_mode
                                     - removed arg lock_needed, mutex always locked, internal functions
                                       can call smu_bump if they already hold lock
      smu_switch_power_profile       - now calls smu_bump as already holds mutex lock
      smu_adjust_power_state_dynamic - now calls smu_bump as already holds mutex lock
      amdgpu_get_pp_od_clk_voltage   - uses smu_print_ppclk_levels
      amdgpu_{set,get}_pp_dpm_$CLK   - replace logic with call helper function amdgpu_{set,get}_pp_dpm_clock()
                                       CLK ={sclk, mclk, socclk, fclk, dcefclk, pci, vclkd, dclk}
    
    Other Changes
      added 5 smu Powerplay functions to swsmu_dpm_funcs
      removed special smu handling in pm functions and called through Powerplay API
    Signed-off-by: default avatarDarren Powell <darren.powell@amd.com>
    Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    2ea092e5
amdgpu_smu.c 68.7 KB