@ -785,8 +785,8 @@ static void ni_apply_state_adjust_rules(struct radeon_device *rdev,
struct ni_ps * ps = ni_get_ps ( rps ) ;
struct radeon_clock_and_voltage_limits * max_limits ;
bool disable_mclk_switching ;
u32 mclk , sclk ;
u16 vddc , vddc i;
u32 mclk ;
u16 vddci ;
u32 max_sclk_vddc , max_mclk_vddci , max_mclk_vddc ;
int i ;
@ -839,24 +839,14 @@ static void ni_apply_state_adjust_rules(struct radeon_device *rdev,
/* XXX validate the min clocks required for display */
/* adjust low state */
if ( disable_mclk_switching ) {
mclk = ps - > performance_levels [ ps - > performance_level_count - 1 ] . mclk ;
sclk = ps - > performance_levels [ 0 ] . sclk ;
vddc = ps - > performance_levels [ 0 ] . vddc ;
vddci = ps - > performance_levels [ ps - > performance_level_count - 1 ] . vddci ;
} else {
sclk = ps - > performance_levels [ 0 ] . sclk ;
mclk = ps - > performance_levels [ 0 ] . mclk ;
vddc = ps - > performance_levels [ 0 ] . vddc ;
vddci = ps - > performance_levels [ 0 ] . vddci ;
ps - > performance_levels [ 0 ] . mclk =
ps - > performance_levels [ ps - > performance_level_count - 1 ] . mclk ;
ps - > performance_levels [ 0 ] . vddci =
ps - > performance_levels [ ps - > performance_level_count - 1 ] . vddci ;
}
/* adjusted low state */
ps - > performance_levels [ 0 ] . sclk = sclk ;
ps - > performance_levels [ 0 ] . mclk = mclk ;
ps - > performance_levels [ 0 ] . vddc = vddc ;
ps - > performance_levels [ 0 ] . vddci = vddci ;
btc_skip_blacklist_clocks ( rdev , max_limits - > sclk , max_limits - > mclk ,
& ps - > performance_levels [ 0 ] . sclk ,
& ps - > performance_levels [ 0 ] . mclk ) ;
@ -868,11 +858,15 @@ static void ni_apply_state_adjust_rules(struct radeon_device *rdev,
ps - > performance_levels [ i ] . vddc = ps - > performance_levels [ i - 1 ] . vddc ;
}
/* adjust remaining states */
if ( disable_mclk_switching ) {
mclk = ps - > performance_levels [ 0 ] . mclk ;
vddci = ps - > performance_levels [ 0 ] . vddci ;
for ( i = 1 ; i < ps - > performance_level_count ; i + + ) {
if ( mclk < ps - > performance_levels [ i ] . mclk )
mclk = ps - > performance_levels [ i ] . mclk ;
if ( vddci < ps - > performance_levels [ i ] . vddci )
vddci = ps - > performance_levels [ i ] . vddci ;
}
for ( i = 0 ; i < ps - > performance_level_count ; i + + ) {
ps - > performance_levels [ i ] . mclk = mclk ;