|
@@ -48,6 +48,12 @@ enum {
|
|
|
MUX_TYPE_SD_PC_SG_SG,
|
|
|
};
|
|
|
|
|
|
+enum {
|
|
|
+ GE0_CLK125,
|
|
|
+ GE2_CLK125,
|
|
|
+ GE1_CLK125,
|
|
|
+};
|
|
|
+
|
|
|
int checkboard(void)
|
|
|
{
|
|
|
#ifndef CONFIG_QSPI_BOOT
|
|
@@ -177,7 +183,6 @@ int board_early_init_f(void)
|
|
|
|
|
|
#ifdef CONFIG_TSEC_ENET
|
|
|
out_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
|
|
|
- out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE2_CLK125);
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_FSL_IFC
|
|
@@ -241,6 +246,32 @@ void board_init_f(ulong dummy)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+void config_etseccm_source(int etsec_gtx_125_mux)
|
|
|
+{
|
|
|
+ struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
|
|
|
+
|
|
|
+ switch (etsec_gtx_125_mux) {
|
|
|
+ case GE0_CLK125:
|
|
|
+ out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE0_CLK125);
|
|
|
+ debug("etseccm set to GE0_CLK125\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ case GE2_CLK125:
|
|
|
+ out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE2_CLK125);
|
|
|
+ debug("etseccm set to GE2_CLK125\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ case GE1_CLK125:
|
|
|
+ out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE1_CLK125);
|
|
|
+ debug("etseccm set to GE1_CLK125\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ printf("Error! trying to set etseccm to invalid value\n");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
int config_board_mux(int ctrl_type)
|
|
|
{
|
|
|
u8 reg12, reg14;
|
|
@@ -250,6 +281,7 @@ int config_board_mux(int ctrl_type)
|
|
|
|
|
|
switch (ctrl_type) {
|
|
|
case MUX_TYPE_CAN:
|
|
|
+ config_etseccm_source(GE2_CLK125);
|
|
|
reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_CAN);
|
|
|
break;
|
|
|
case MUX_TYPE_IIC2:
|
|
@@ -259,6 +291,7 @@ int config_board_mux(int ctrl_type)
|
|
|
reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_RGMII);
|
|
|
break;
|
|
|
case MUX_TYPE_SAI:
|
|
|
+ config_etseccm_source(GE2_CLK125);
|
|
|
reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_SAI);
|
|
|
break;
|
|
|
case MUX_TYPE_SDHC:
|