@@ -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 */
95100typedef 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+
102110const 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)
664682int 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