mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 14:41:31 +00:00
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 8
The search_stop_check() always resets the bit_chk to a new value, so bit_chk will never survive between search_left_edge() and search_right_edge() invocation. There is thus no need to pass it into these functions, so make bit_chk local to them. Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
5d6db44485
commit
0c4be198f4
1 changed files with 15 additions and 18 deletions
|
@ -1841,7 +1841,6 @@ static u32 search_stop_check(const int write, const int d, const int rank_bgn,
|
||||||
* @write_group: Write Group
|
* @write_group: Write Group
|
||||||
* @read_group: Read Group
|
* @read_group: Read Group
|
||||||
* @test_bgn: Rank number to begin the test
|
* @test_bgn: Rank number to begin the test
|
||||||
* @bit_chk: Resulting bit mask after the test
|
|
||||||
* @sticky_bit_chk: Resulting sticky bit mask after the test
|
* @sticky_bit_chk: Resulting sticky bit mask after the test
|
||||||
* @left_edge: Left edge of the DQ/DQS phase
|
* @left_edge: Left edge of the DQ/DQS phase
|
||||||
* @right_edge: Right edge of the DQ/DQS phase
|
* @right_edge: Right edge of the DQ/DQS phase
|
||||||
|
@ -1851,14 +1850,14 @@ static u32 search_stop_check(const int write, const int d, const int rank_bgn,
|
||||||
*/
|
*/
|
||||||
static void search_left_edge(const int write, const int rank_bgn,
|
static void search_left_edge(const int write, const int rank_bgn,
|
||||||
const u32 write_group, const u32 read_group, const u32 test_bgn,
|
const u32 write_group, const u32 read_group, const u32 test_bgn,
|
||||||
u32 *bit_chk, u32 *sticky_bit_chk,
|
u32 *sticky_bit_chk,
|
||||||
int *left_edge, int *right_edge, const u32 use_read_test)
|
int *left_edge, int *right_edge, const u32 use_read_test)
|
||||||
{
|
{
|
||||||
const u32 delay_max = write ? IO_IO_OUT1_DELAY_MAX : IO_IO_IN_DELAY_MAX;
|
const u32 delay_max = write ? IO_IO_OUT1_DELAY_MAX : IO_IO_IN_DELAY_MAX;
|
||||||
const u32 dqs_max = write ? IO_IO_OUT1_DELAY_MAX : IO_DQS_IN_DELAY_MAX;
|
const u32 dqs_max = write ? IO_IO_OUT1_DELAY_MAX : IO_DQS_IN_DELAY_MAX;
|
||||||
const u32 per_dqs = write ? RW_MGR_MEM_DQ_PER_WRITE_DQS :
|
const u32 per_dqs = write ? RW_MGR_MEM_DQ_PER_WRITE_DQS :
|
||||||
RW_MGR_MEM_DQ_PER_READ_DQS;
|
RW_MGR_MEM_DQ_PER_READ_DQS;
|
||||||
u32 stop;
|
u32 stop, bit_chk;
|
||||||
int i, d;
|
int i, d;
|
||||||
|
|
||||||
for (d = 0; d <= dqs_max; d++) {
|
for (d = 0; d <= dqs_max; d++) {
|
||||||
|
@ -1870,14 +1869,14 @@ static void search_left_edge(const int write, const int rank_bgn,
|
||||||
writel(0, &sdr_scc_mgr->update);
|
writel(0, &sdr_scc_mgr->update);
|
||||||
|
|
||||||
stop = search_stop_check(write, d, rank_bgn, write_group,
|
stop = search_stop_check(write, d, rank_bgn, write_group,
|
||||||
read_group, bit_chk, sticky_bit_chk,
|
read_group, &bit_chk, sticky_bit_chk,
|
||||||
use_read_test);
|
use_read_test);
|
||||||
if (stop == 1)
|
if (stop == 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* stop != 1 */
|
/* stop != 1 */
|
||||||
for (i = 0; i < per_dqs; i++) {
|
for (i = 0; i < per_dqs; i++) {
|
||||||
if (*bit_chk & 1) {
|
if (bit_chk & 1) {
|
||||||
/*
|
/*
|
||||||
* Remember a passing test as
|
* Remember a passing test as
|
||||||
* the left_edge.
|
* the left_edge.
|
||||||
|
@ -1893,7 +1892,7 @@ static void search_left_edge(const int write, const int rank_bgn,
|
||||||
if (left_edge[i] == delay_max + 1)
|
if (left_edge[i] == delay_max + 1)
|
||||||
right_edge[i] = -(d + 1);
|
right_edge[i] = -(d + 1);
|
||||||
}
|
}
|
||||||
*bit_chk = *bit_chk >> 1;
|
bit_chk >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1952,7 +1951,6 @@ static void search_left_edge(const int write, const int rank_bgn,
|
||||||
* @read_group: Read Group
|
* @read_group: Read Group
|
||||||
* @start_dqs: DQS start phase
|
* @start_dqs: DQS start phase
|
||||||
* @start_dqs_en: DQS enable start phase
|
* @start_dqs_en: DQS enable start phase
|
||||||
* @bit_chk: Resulting bit mask after the test
|
|
||||||
* @sticky_bit_chk: Resulting sticky bit mask after the test
|
* @sticky_bit_chk: Resulting sticky bit mask after the test
|
||||||
* @left_edge: Left edge of the DQ/DQS phase
|
* @left_edge: Left edge of the DQ/DQS phase
|
||||||
* @right_edge: Right edge of the DQ/DQS phase
|
* @right_edge: Right edge of the DQ/DQS phase
|
||||||
|
@ -1963,14 +1961,14 @@ static void search_left_edge(const int write, const int rank_bgn,
|
||||||
static int search_right_edge(const int write, const int rank_bgn,
|
static int search_right_edge(const int write, const int rank_bgn,
|
||||||
const u32 write_group, const u32 read_group,
|
const u32 write_group, const u32 read_group,
|
||||||
const int start_dqs, const int start_dqs_en,
|
const int start_dqs, const int start_dqs_en,
|
||||||
u32 *bit_chk, u32 *sticky_bit_chk,
|
u32 *sticky_bit_chk,
|
||||||
int *left_edge, int *right_edge, const u32 use_read_test)
|
int *left_edge, int *right_edge, const u32 use_read_test)
|
||||||
{
|
{
|
||||||
const u32 delay_max = write ? IO_IO_OUT1_DELAY_MAX : IO_IO_IN_DELAY_MAX;
|
const u32 delay_max = write ? IO_IO_OUT1_DELAY_MAX : IO_IO_IN_DELAY_MAX;
|
||||||
const u32 dqs_max = write ? IO_IO_OUT1_DELAY_MAX : IO_DQS_IN_DELAY_MAX;
|
const u32 dqs_max = write ? IO_IO_OUT1_DELAY_MAX : IO_DQS_IN_DELAY_MAX;
|
||||||
const u32 per_dqs = write ? RW_MGR_MEM_DQ_PER_WRITE_DQS :
|
const u32 per_dqs = write ? RW_MGR_MEM_DQ_PER_WRITE_DQS :
|
||||||
RW_MGR_MEM_DQ_PER_READ_DQS;
|
RW_MGR_MEM_DQ_PER_READ_DQS;
|
||||||
u32 stop;
|
u32 stop, bit_chk;
|
||||||
int i, d;
|
int i, d;
|
||||||
|
|
||||||
for (d = 0; d <= dqs_max - start_dqs; d++) {
|
for (d = 0; d <= dqs_max - start_dqs; d++) {
|
||||||
|
@ -1991,7 +1989,7 @@ static int search_right_edge(const int write, const int rank_bgn,
|
||||||
writel(0, &sdr_scc_mgr->update);
|
writel(0, &sdr_scc_mgr->update);
|
||||||
|
|
||||||
stop = search_stop_check(write, d, rank_bgn, write_group,
|
stop = search_stop_check(write, d, rank_bgn, write_group,
|
||||||
read_group, bit_chk, sticky_bit_chk,
|
read_group, &bit_chk, sticky_bit_chk,
|
||||||
use_read_test);
|
use_read_test);
|
||||||
if (stop == 1) {
|
if (stop == 1) {
|
||||||
if (write && (d == 0)) { /* WRITE-ONLY */
|
if (write && (d == 0)) { /* WRITE-ONLY */
|
||||||
|
@ -2011,7 +2009,7 @@ static int search_right_edge(const int write, const int rank_bgn,
|
||||||
|
|
||||||
/* stop != 1 */
|
/* stop != 1 */
|
||||||
for (i = 0; i < per_dqs; i++) {
|
for (i = 0; i < per_dqs; i++) {
|
||||||
if (*bit_chk & 1) {
|
if (bit_chk & 1) {
|
||||||
/*
|
/*
|
||||||
* Remember a passing test as
|
* Remember a passing test as
|
||||||
* the right_edge.
|
* the right_edge.
|
||||||
|
@ -2052,10 +2050,10 @@ static int search_right_edge(const int write, const int rank_bgn,
|
||||||
__func__, __LINE__, d);
|
__func__, __LINE__, d);
|
||||||
debug_cond(DLEVEL == 2,
|
debug_cond(DLEVEL == 2,
|
||||||
"bit_chk_test=%i left_edge[%u]: %d ",
|
"bit_chk_test=%i left_edge[%u]: %d ",
|
||||||
*bit_chk & 1, i, left_edge[i]);
|
bit_chk & 1, i, left_edge[i]);
|
||||||
debug_cond(DLEVEL == 2, "right_edge[%u]: %d\n", i,
|
debug_cond(DLEVEL == 2, "right_edge[%u]: %d\n", i,
|
||||||
right_edge[i]);
|
right_edge[i]);
|
||||||
*bit_chk = *bit_chk >> 1;
|
bit_chk >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2205,7 +2203,6 @@ static uint32_t rw_mgr_mem_calibrate_vfifo_center(uint32_t rank_bgn,
|
||||||
* Store these as signed since there are comparisons with
|
* Store these as signed since there are comparisons with
|
||||||
* signed numbers.
|
* signed numbers.
|
||||||
*/
|
*/
|
||||||
uint32_t bit_chk;
|
|
||||||
uint32_t sticky_bit_chk;
|
uint32_t sticky_bit_chk;
|
||||||
int32_t left_edge[RW_MGR_MEM_DQ_PER_READ_DQS];
|
int32_t left_edge[RW_MGR_MEM_DQ_PER_READ_DQS];
|
||||||
int32_t right_edge[RW_MGR_MEM_DQ_PER_READ_DQS];
|
int32_t right_edge[RW_MGR_MEM_DQ_PER_READ_DQS];
|
||||||
|
@ -2231,14 +2228,14 @@ static uint32_t rw_mgr_mem_calibrate_vfifo_center(uint32_t rank_bgn,
|
||||||
|
|
||||||
/* Search for the left edge of the window for each bit */
|
/* Search for the left edge of the window for each bit */
|
||||||
search_left_edge(0, rank_bgn, write_group, read_group, test_bgn,
|
search_left_edge(0, rank_bgn, write_group, read_group, test_bgn,
|
||||||
&bit_chk, &sticky_bit_chk,
|
&sticky_bit_chk,
|
||||||
left_edge, right_edge, use_read_test);
|
left_edge, right_edge, use_read_test);
|
||||||
|
|
||||||
|
|
||||||
/* Search for the right edge of the window for each bit */
|
/* Search for the right edge of the window for each bit */
|
||||||
ret = search_right_edge(0, rank_bgn, write_group, read_group,
|
ret = search_right_edge(0, rank_bgn, write_group, read_group,
|
||||||
start_dqs, start_dqs_en,
|
start_dqs, start_dqs_en,
|
||||||
&bit_chk, &sticky_bit_chk,
|
&sticky_bit_chk,
|
||||||
left_edge, right_edge, use_read_test);
|
left_edge, right_edge, use_read_test);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/*
|
/*
|
||||||
|
@ -2922,13 +2919,13 @@ static uint32_t rw_mgr_mem_calibrate_writes_center(uint32_t rank_bgn,
|
||||||
|
|
||||||
/* Search for the left edge of the window for each bit */
|
/* Search for the left edge of the window for each bit */
|
||||||
search_left_edge(1, rank_bgn, write_group, 0, test_bgn,
|
search_left_edge(1, rank_bgn, write_group, 0, test_bgn,
|
||||||
&bit_chk, &sticky_bit_chk,
|
&sticky_bit_chk,
|
||||||
left_edge, right_edge, 0);
|
left_edge, right_edge, 0);
|
||||||
|
|
||||||
/* Search for the right edge of the window for each bit */
|
/* Search for the right edge of the window for each bit */
|
||||||
ret = search_right_edge(1, rank_bgn, write_group, 0,
|
ret = search_right_edge(1, rank_bgn, write_group, 0,
|
||||||
start_dqs, 0,
|
start_dqs, 0,
|
||||||
&bit_chk, &sticky_bit_chk,
|
&sticky_bit_chk,
|
||||||
left_edge, right_edge, 0);
|
left_edge, right_edge, 0);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
set_failing_group_stage(test_bgn + ret - 1, CAL_STAGE_WRITES,
|
set_failing_group_stage(test_bgn + ret - 1, CAL_STAGE_WRITES,
|
||||||
|
|
Loading…
Add table
Reference in a new issue