@ -1311,36 +1311,35 @@ static void rw_mgr_decr_vfifo(const u32 grp)
rw_mgr_incr_vfifo ( grp ) ;
}
static int find_vfifo_read ( uint32_t grp , uint32_t * bit_chk )
/**
* find_vfifo_failing_read ( ) - Push VFIFO to get a failing read
* @ grp : Read / Write group
*
* Push VFIFO until a failing read happens .
*/
static int find_vfifo_failing_read ( const u32 grp )
{
uint32_t v ;
uint32_t fail_cnt = 0 ;
uint32_t test_status ;
u32 v , ret , bit_chk , fail_cnt = 0 ;
for ( v = 0 ; v < VFIFO_SIZE ; v + + ) {
debug_cond ( DLEVEL = = 2 , " %s:%d find_dqs_en_phase : vfifo %u \n " ,
debug_cond ( DLEVEL = = 2 , " %s:%d: vfifo %u \n " ,
__func__ , __LINE__ , v ) ;
test_status = rw_mgr_mem_calibrate_read_test_all_ranks
( grp , 1 , PASS_ONE_BIT , bit_chk , 0 ) ;
if ( ! test_status ) {
ret = rw_mgr_mem_calibrate_read_test_all_ranks ( grp , 1 ,
PASS_ONE_BIT , & bit_chk , 0 ) ;
if ( ! ret ) {
fail_cnt + + ;
if ( fail_cnt = = 2 )
break ;
return v ;
}
/* fiddle with FIFO */
/* Fiddle with FIFO. */
rw_mgr_incr_vfifo ( grp ) ;
}
if ( v > = VFIFO_SIZE ) {
/* no failing read found!! Something must have gone wrong */
debug_cond ( DLEVEL = = 2 , " %s:%d find_dqs_en_phase: vfifo failed \n " ,
__func__ , __LINE__ ) ;
return 0 ;
} else {
return v ;
}
/* No failing read found! Something must have gone wrong. */
debug_cond ( DLEVEL = = 2 , " %s:%d: vfifo failed \n " , __func__ , __LINE__ ) ;
return 0 ;
}
/**
@ -1588,7 +1587,7 @@ static uint32_t rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase(uint32_t grp)
/* ********************************************************* */
/* * Step 1 : First push vfifo until we get a failing read * */
find_vfifo_read ( grp , & bit_chk ) ;
find_vfifo_failing_ read ( grp ) ;
/* ******************************************************** */
/* * step 2: find first working phase, increment in ptaps * */