[PATCH 2/4] board: freescale: t208xrdb: add rev D support for the non-DM_ETH mode
Camelia Groza
camelia.groza at oss.nxp.com
Thu Jun 10 14:39:37 CEST 2021
From: Camelia Groza <camelia.groza at nxp.com>
The T2080RDB boards revisions D and up have updated 10G Aquantia PHYs
connected to MAC1 and MAC2. The second Aquantia PHY is located at a
different address on the MDIO bus compared to rev C.
Account for these changes when initializing the board in the legacy
non-DM_ETH mode.
Signed-off-by: Camelia Groza <camelia.groza at nxp.com>
---
board/freescale/t208xrdb/eth_t208xrdb.c | 16 ++++++++++++++--
include/configs/T208xRDB.h | 8 +++++---
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/board/freescale/t208xrdb/eth_t208xrdb.c b/board/freescale/t208xrdb/eth_t208xrdb.c
index b0ff4b1f375a..d0329a87d281 100644
--- a/board/freescale/t208xrdb/eth_t208xrdb.c
+++ b/board/freescale/t208xrdb/eth_t208xrdb.c
@@ -26,6 +26,8 @@
#include <fsl_dtsec.h>
#include <asm/fsl_serdes.h>
+extern u8 get_hw_revision(void);
+
int board_eth_init(struct bd_info *bis)
{
#if defined(CONFIG_FMAN_ENET)
@@ -34,6 +36,7 @@ int board_eth_init(struct bd_info *bis)
struct memac_mdio_info tgec_mdio_info;
struct mii_dev *dev;
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+ int aq_phy_id_1, aq_phy_id_2;
u32 srds_s1;
srds_s1 = in_be32(&gur->rcwsr[4]) &
@@ -59,13 +62,22 @@ int board_eth_init(struct bd_info *bis)
fm_info_set_phy_address(FM1_DTSEC3, RGMII_PHY1_ADDR);
fm_info_set_phy_address(FM1_DTSEC4, RGMII_PHY2_ADDR);
+ /* The AQR PHY addresses differ between board revisions */
+ if (get_hw_revision() == 'C') {
+ aq_phy_id_1 = FM1_10GEC3_PHY_ADDR;
+ aq_phy_id_2 = FM1_10GEC4_PHY_ADDR;
+ } else {
+ aq_phy_id_1 = AQR113C_PHY_ADDR1;
+ aq_phy_id_2 = AQR113C_PHY_ADDR2;
+ }
+
switch (srds_s1) {
case 0x66:
case 0x6b:
fm_info_set_phy_address(FM1_10GEC1, CORTINA_PHY_ADDR1);
fm_info_set_phy_address(FM1_10GEC2, CORTINA_PHY_ADDR2);
- fm_info_set_phy_address(FM1_10GEC3, FM1_10GEC3_PHY_ADDR);
- fm_info_set_phy_address(FM1_10GEC4, FM1_10GEC4_PHY_ADDR);
+ fm_info_set_phy_address(FM1_10GEC3, aq_phy_id_1);
+ fm_info_set_phy_address(FM1_10GEC4, aq_phy_id_2);
break;
default:
printf("SerDes1 protocol 0x%x is not supported on T208xRDB\n",
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index e467ef453d2f..871f7db34501 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright 2014 Freescale Semiconductor, Inc.
- * Copyright 2020 NXP
+ * Copyright 2020-2021 NXP
*/
/*
@@ -537,8 +537,10 @@ unsigned long get_board_ddr_clk(void);
#define RGMII_PHY2_ADDR 0x02
#define CORTINA_PHY_ADDR1 0x0c /* Cortina CS4315 */
#define CORTINA_PHY_ADDR2 0x0d
-#define FM1_10GEC3_PHY_ADDR 0x00 /* Aquantia AQ1202 10G Base-T */
-#define FM1_10GEC4_PHY_ADDR 0x01
+#define FM1_10GEC3_PHY_ADDR 0x00 /* Aquantia AQ1202 10G Base-T used */
+#define FM1_10GEC4_PHY_ADDR 0x01 /* by board revision C */
+#define AQR113C_PHY_ADDR1 0x00 /* Aquantia AQR113C 10G Base-T used */
+#define AQR113C_PHY_ADDR2 0x08 /* by board revisions D and up. */
#endif
#ifdef CONFIG_FMAN_ENET
--
2.17.1
More information about the U-Boot
mailing list