Skip to content

Commit 7e280fa

Browse files
committed
board: add individual link training for LTPI
train ltpi link based on platform. Tested: Verified in Qemu Signed-off-by: Rajaganesh Rathinasabapathi <[email protected]>
1 parent 01c166a commit 7e280fa

File tree

1 file changed

+94
-63
lines changed

1 file changed

+94
-63
lines changed

board/aspeed/evb_ast2700/evb_ast2700.c

Lines changed: 94 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -91,72 +91,81 @@ typedef enum {
9191
AMD_SP8_SLT_2P = 0x08,
9292
} BoardType;
9393

94+
enum {
95+
ONE_LINK = 0,
96+
TWO_LINK = 1
97+
};
98+
9499
/* SP7 Board info */
95100
typedef struct {
96101
const char *name;
97102
int id;
98103
BoardType type;
104+
int ltpi_type;
99105
} BoardInfo;
100106

101107
/* SP7 HPM boards (ordered by id)*/
108+
static u8 board_id = 0x80; // Default - Congo
109+
102110
const BoardInfo boards[] = {
103-
{"marley", 0x79, HCC_TYPE_2},
104-
{"marley", 0x7A, HCC_TYPE_2},
105-
{"marley", 0x7B, HCC_TYPE_2},
106-
{"mojanda", 0x7C, HCC_TYPE_2},
107-
{"mojanda", 0x7D, HCC_TYPE_2},
108-
{"mojanda", 0x7E, HCC_TYPE_2},
109-
{"congo", 0x80, HCC_TYPE_1},
110-
{"congo", 0x81, HCC_TYPE_1},
111-
{"morocco", 0x82, HCC_TYPE_2},
112-
{"morocco", 0x83, HCC_TYPE_2},
113-
{"kenya", 0x84, HCC_TYPE_1},
114-
{"nigeria", 0x85, HCC_TYPE_2},
115-
{"congo", 0x86, HCC_TYPE_1},
116-
{"morocco", 0x87, HCC_TYPE_2},
117-
{"senegal", 0x88, AMD_TYPE_SLT_1P},
118-
{"sahara", 0x89, AMD_TYPE_SLT_1P},
119-
{"malawi", 0x8A, AMD_TYPE_SLT_2P},
120-
{"zambia", 0x8B, AMD_TYPE_SLT_1P},
121-
{"zimbabwe", 0x8C, AMD_TYPE_SLT_1P},
122-
{"zanzibar", 0x8D, AMD_TYPE_SLT_1P},
123-
{"ghana", 0x8E, HCC_TYPE_2},
124-
{"morocco", 0x8F, HCC_TYPE_2},
125-
{"morocco", 0x90, HCC_TYPE_2},
126-
{"nigeria", 0x91, HCC_TYPE_2},
127-
{"nigeria", 0x92, HCC_TYPE_2},
128-
{"ghana", 0x93, HCC_TYPE_2},
129-
{"ghana", 0x94, HCC_TYPE_2},
130-
{"malawi", 0x95, AMD_TYPE_SLT_2P},
131-
{"malawi", 0x96, AMD_TYPE_SLT_2P},
132-
{"nigeria", 0x97, HCC_TYPE_2},
133-
{"nigeria", 0x98, HCC_TYPE_2},
134-
{"nigeria", 0x99, HCC_TYPE_2},
135-
{"morocco", 0x9A, HCC_TYPE_2},
136-
{"morocco", 0x9B, HCC_TYPE_2},
137-
{"morocco", 0x9C, HCC_TYPE_2},
138-
{"morocco", 0x9D, HCC_TYPE_2},
139-
{"zaire", 0x9E, AMD_TYPE_SLT_1P},
140-
{"eagle", 0x9F, HCC_TYPE_1},
141-
{"eagle", 0xA0, HCC_TYPE_1},
142-
{"eagle", 0xA1, HCC_TYPE_1},
143-
{"duck", 0xA2, AMD_SP8_SLT_2P},
144-
{"duck", 0xA3, AMD_SP8_SLT_2P},
145-
{"duck", 0xA4, AMD_SP8_SLT_2P},
146-
{"hornbill", 0xA5, HCC_TYPE_2},
147-
{"hornbill", 0xA6, HCC_TYPE_2},
148-
{"hornbill", 0xA7, HCC_TYPE_2},
149-
{"hornbill", 0xA8, HCC_TYPE_2},
150-
{"hornbill", 0xA9, HCC_TYPE_2},
151-
{"hornbill", 0xAA, HCC_TYPE_2},
152-
{"hornbill", 0xAB, HCC_TYPE_2},
153-
{"hornbill", 0xAC, HCC_TYPE_2},
154-
{"hornbill", 0xAD, HCC_TYPE_2},
155-
{"robin", 0xAE, AMD_SP8_SLT_1P},
156-
{"sandpiper", 0xAF, AMD_SP8_SLT_1P},
157-
{"marrakesh", 0xB0, AMD_TYPE_SLT_1P},
158-
{"falcon", 0xB2, HCC_TYPE_1},
159-
{"seagull", 0xB5, HCC_TYPE_2}
111+
/* Name ID Type LTPI Type */
112+
{ "marley", 0x79, HCC_TYPE_2, ONE_LINK },
113+
{ "marley", 0x7A, HCC_TYPE_2, ONE_LINK },
114+
{ "marley", 0x7B, HCC_TYPE_2, ONE_LINK },
115+
{ "mojanda", 0x7C, HCC_TYPE_2, ONE_LINK },
116+
{ "mojanda", 0x7D, HCC_TYPE_2, ONE_LINK },
117+
{ "mojanda", 0x7E, HCC_TYPE_2, ONE_LINK },
118+
{ "congo", 0x80, HCC_TYPE_1, ONE_LINK },
119+
{ "congo", 0x81, HCC_TYPE_1, ONE_LINK },
120+
{ "morocco", 0x82, HCC_TYPE_2, ONE_LINK },
121+
{ "morocco", 0x83, HCC_TYPE_2, ONE_LINK },
122+
{ "kenya", 0x84, HCC_TYPE_1, ONE_LINK },
123+
{ "nigeria", 0x85, HCC_TYPE_2, ONE_LINK },
124+
{ "congo", 0x86, HCC_TYPE_1, ONE_LINK },
125+
{ "morocco", 0x87, HCC_TYPE_2, ONE_LINK },
126+
{ "senegal", 0x88, AMD_TYPE_SLT_1P, ONE_LINK },
127+
{ "sahara", 0x89, AMD_TYPE_SLT_1P, ONE_LINK },
128+
{ "malawi", 0x8A, AMD_TYPE_SLT_2P, ONE_LINK },
129+
{ "zambia", 0x8B, AMD_TYPE_SLT_1P, ONE_LINK },
130+
{ "zimbabwe", 0x8C, AMD_TYPE_SLT_1P, ONE_LINK },
131+
{ "zanzibar", 0x8D, AMD_TYPE_SLT_1P, ONE_LINK },
132+
{ "ghana", 0x8E, HCC_TYPE_2, ONE_LINK },
133+
{ "morocco", 0x8F, HCC_TYPE_2, ONE_LINK },
134+
{ "morocco", 0x90, HCC_TYPE_2, ONE_LINK },
135+
{ "nigeria", 0x91, HCC_TYPE_2, ONE_LINK },
136+
{ "nigeria", 0x92, HCC_TYPE_2, ONE_LINK },
137+
{ "ghana", 0x93, HCC_TYPE_2, ONE_LINK },
138+
{ "ghana", 0x94, HCC_TYPE_2, ONE_LINK },
139+
{ "malawi", 0x95, AMD_TYPE_SLT_2P, ONE_LINK },
140+
{ "malawi", 0x96, AMD_TYPE_SLT_2P, ONE_LINK },
141+
{ "nigeria", 0x97, HCC_TYPE_2, ONE_LINK },
142+
{ "nigeria", 0x98, HCC_TYPE_2, ONE_LINK },
143+
{ "nigeria", 0x99, HCC_TYPE_2, ONE_LINK },
144+
{ "morocco", 0x9A, HCC_TYPE_2, ONE_LINK },
145+
{ "morocco", 0x9B, HCC_TYPE_2, ONE_LINK },
146+
{ "morocco", 0x9C, HCC_TYPE_2, ONE_LINK },
147+
{ "morocco", 0x9D, HCC_TYPE_2, ONE_LINK },
148+
{ "zaire", 0x9E, AMD_TYPE_SLT_1P, ONE_LINK },
149+
{ "eagle", 0x9F, HCC_TYPE_1, ONE_LINK },
150+
{ "eagle", 0xA0, HCC_TYPE_1, ONE_LINK },
151+
{ "eagle", 0xA1, HCC_TYPE_1, ONE_LINK },
152+
{ "duck", 0xA2, AMD_SP8_SLT_2P, ONE_LINK },
153+
{ "duck", 0xA3, AMD_SP8_SLT_2P, ONE_LINK },
154+
{ "duck", 0xA4, AMD_SP8_SLT_2P, ONE_LINK },
155+
{ "hornbill", 0xA5, HCC_TYPE_2, ONE_LINK },
156+
{ "hornbill", 0xA6, HCC_TYPE_2, ONE_LINK },
157+
{ "hornbill", 0xA7, HCC_TYPE_2, ONE_LINK },
158+
{ "hornbill", 0xA8, HCC_TYPE_2, ONE_LINK },
159+
{ "hornbill", 0xA9, HCC_TYPE_2, ONE_LINK },
160+
{ "hornbill", 0xAA, HCC_TYPE_2, ONE_LINK },
161+
{ "hornbill", 0xAB, HCC_TYPE_2, ONE_LINK },
162+
{ "hornbill", 0xAC, HCC_TYPE_2, ONE_LINK },
163+
{ "hornbill", 0xAD, HCC_TYPE_2, ONE_LINK },
164+
{ "robin", 0xAE, AMD_SP8_SLT_1P, ONE_LINK },
165+
{ "sandpiper", 0xAF, AMD_SP8_SLT_1P, ONE_LINK },
166+
{ "marrakesh", 0xB0, AMD_TYPE_SLT_1P, ONE_LINK },
167+
{ "falcon", 0xB2, HCC_TYPE_1, ONE_LINK },
168+
{ "seagull", 0xB5, HCC_TYPE_2, TWO_LINK }
160169
};
161170

162171
// mach aspeed cpu info
@@ -389,7 +398,6 @@ int set_board_info(const u8* scm_eeprom_buf, const u8* hpm_eeprom_buf)
389398
char board_rev_str[STR_BUF_LEN] = {0};
390399
char chassis_ser_num[STR_BUF_LEN] = {0};
391400
char hpm_csn_uniq_str[STR_BUF_LEN] = {0};
392-
u8 board_id = 0;
393401
u8 board_rev = 0;
394402
u8 hpm_mrc = 0;
395403

@@ -561,19 +569,29 @@ void power_on_hpm(int retry)
561569
printf("HPM devices out of reset\n");
562570

563571
}
564-
void train_ltpi(int retry)
572+
573+
void train_ltpi(int retry, int mode)
565574
{
566575
int i=0;
567576
char buf[8];
577+
char mode_flag[8] = "";
578+
char command[256];
568579

580+
/* Set mode flag based on link type */
581+
if (mode == ONE_LINK) {
582+
snprintf(mode_flag, sizeof(mode_flag), "-m 0 ");
583+
} else if (mode == TWO_LINK) {
584+
snprintf(mode_flag, sizeof(mode_flag), "-m 1 ");
585+
}
569586
/* start LTPI with operational and advertise timeouts */
570-
if(run_command("ltpi -T " OP_TIMEOUT_US " -t " ADVRT_TIMEOUT_US_1_1 " -p 1 ", 0) != 0)
587+
snprintf(command, sizeof(command), "ltpi -T " OP_TIMEOUT_US " -t " ADVRT_TIMEOUT_US_1_1 " -p 1 %s", mode_flag);
588+
if(run_command(command, 0) != 0)
571589
{
572590
for (i=0; i<retry; i++)
573591
{
574-
if(run_command("ltpi -T " OP_TIMEOUT_US " -t "ADVRT_TIMEOUT_US_1_1 " -p 1 ",0) == 0)
592+
if(run_command(command,0) == 0)
575593
{
576-
printf("LTPI link configured, proceeding to boot...\n");
594+
printf("LTPI link %d configured, proceeding to boot...\n", mode);
577595
break;
578596
}
579597
else
@@ -664,6 +682,8 @@ int read_eeprom_buffers(u8 *scm_eeprom_buf, u8 *hpm_eeprom_buf)
664682
int misc_init_r(void)
665683
{
666684
int ret;
685+
const char *fit_conf = NULL;
686+
int i, ltpi_type = ONE_LINK;
667687

668688
/* Identify SoC of DC-SCM card */
669689
env_soc_id();
@@ -719,7 +739,18 @@ int misc_init_r(void)
719739
power_on_hpm(HPM_STBY_EN_RETRY);
720740

721741
/* enable ltpi strap and train link */
722-
train_ltpi(LTPI_TRAIN_RETRY);
742+
for (i = 0; i < ARRAY_SIZE(boards); i++) {
743+
if (board_id == boards[i].id) {
744+
ltpi_type = boards[i].ltpi_type;
745+
break;
746+
}
747+
}
748+
749+
if (ltpi_type == ONE_LINK) {
750+
train_ltpi(LTPI_TRAIN_RETRY, 0);
751+
} else if (ltpi_type == TWO_LINK) {
752+
train_ltpi(LTPI_TRAIN_RETRY, 1);
753+
}
723754

724755
/* configure spi mux for edaf
725756
NOTE: do after running 'ltpi' as it reconfigures SCM GPIOs

0 commit comments

Comments
 (0)