@ -663,9 +663,14 @@ static void scc_mgr_apply_group_dqs_io_and_oct_out1(uint32_t write_group,
scc_mgr_load_dqs_for_write_group ( write_group ) ;
}
/* apply a delay to the entire output side: DQ, DM, DQS, OCT */
/**
* scc_mgr_apply_group_all_out_delay_add ( ) - Apply a delay to the entire output side : DQ , DM , DQS , OCT
* @ write_group : Write group
* @ delay : Delay value
*
* Apply a delay to the entire output side : DQ , DM , DQS , OCT .
*/
static void scc_mgr_apply_group_all_out_delay_add ( const u32 write_group ,
const u32 group_bgn ,
const u32 delay )
{
u32 i , new_delay ;
@ -678,36 +683,30 @@ static void scc_mgr_apply_group_all_out_delay_add(const u32 write_group,
for ( i = 0 ; i < RW_MGR_NUM_DM_PER_WRITE_GROUP ; i + + )
scc_mgr_load_dm ( i ) ;
/* dqs shift */
new_delay = READ_SCC_DQS_IO_OUT2_DELAY ;
new_delay + = delay ;
/* DQS shift */
new_delay = READ_SCC_DQS_IO_OUT2_DELAY + delay ;
if ( new_delay > IO_IO_OUT2_DELAY_MAX ) {
debug_cond ( DLEVEL = = 1 , " %s:%d (%u, %u, %u) DQS: %u > %d => %d; "
" adding %u to OUT1 \n " , __func__ , __LINE__ ,
write_group , group_bgn , delay , new_delay ,
IO_IO_OUT2_DELAY_MAX , IO_IO_OUT2_DELAY_MAX ,
debug_cond ( DLEVEL = = 1 ,
" %s:%d (%u, %u) DQS: %u > %d; adding %u to OUT1\n " ,
__func__ , __LINE__ , write_group , delay , new_delay ,
IO_IO_OUT2_DELAY_MAX ,
new_delay - IO_IO_OUT2_DELAY_MAX ) ;
scc_mgr_set_dqs_out1_delay ( new_delay -
IO_IO_OUT2_DELAY_MAX ) ;
new_delay = IO_IO_OUT2_DELAY_MAX ;
new_delay - = IO_IO_OUT2_DELAY_MAX ;
scc_mgr_set_dqs_out1_delay ( new_delay ) ;
}
scc_mgr_load_dqs_io ( ) ;
/* oct shift */
new_delay = READ_SCC_OCT_OUT2_DELAY ;
new_delay + = delay ;
/* OCT shift */
new_delay = READ_SCC_OCT_OUT2_DELAY + delay ;
if ( new_delay > IO_IO_OUT2_DELAY_MAX ) {
debug_cond ( DLEVEL = = 1 , " %s:%d (%u, %u, %u) DQS: %u > %d => %d; "
" adding %u to OUT1 \n " , __func__ , __LINE__ ,
write_group , group_bgn , delay , new_ delay,
IO_IO_OUT2_DELAY_MAX , IO_IO_OUT2_DELAY_MAX ,
debug_cond ( DLEVEL = = 1 ,
" %s:%d (%u, %u) DQS: %u > %d; adding %u to OUT1\n " ,
__func__ , __LINE__ , write_group , delay ,
new_delay , IO_IO_OUT2_DELAY_MAX ,
new_delay - IO_IO_OUT2_DELAY_MAX ) ;
scc_mgr_set_oct_out1_delay ( write_group , new_delay -
IO_IO_OUT2_DELAY_MAX ) ;
new_delay = IO_IO_OUT2_DELAY_MAX ;
new_delay - = IO_IO_OUT2_DELAY_MAX ;
scc_mgr_set_oct_out1_delay ( write_group , new_delay ) ;
}
scc_mgr_load_dqs_for_write_group ( write_group ) ;
@ -724,8 +723,7 @@ static void scc_mgr_apply_group_all_out_delay_add_all_ranks(
for ( r = 0 ; r < RW_MGR_MEM_NUMBER_OF_RANKS ;
r + = NUM_RANKS_PER_SHADOW_REG ) {
scc_mgr_apply_group_all_out_delay_add ( write_group ,
group_bgn , delay ) ;
scc_mgr_apply_group_all_out_delay_add ( write_group , delay ) ;
writel ( 0 , & sdr_scc_mgr - > update ) ;
}
}