From 058d7dc7ba28a45ae6bb7f6ef12b978b31584406 Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Thu, 16 Dec 2010 14:28:06 -0600 Subject: [PATCH] powerpc/85xx: Cleanup SGMII detection and reporting Use new is_serdes_configured to determine if TSECs are in SGMII mode and report that on the various boards that use or can be configured in SGMII mode in board_eth_init() instead of in the PCI init code. Signed-off-by: Kumar Gala --- board/freescale/mpc8536ds/mpc8536ds.c | 27 +++++++++------------------ board/freescale/mpc8544ds/mpc8544ds.c | 20 +++++++++----------- board/freescale/mpc8572ds/mpc8572ds.c | 26 ++++++++++++-------------- board/freescale/p1_p2_rdb/p1_p2_rdb.c | 8 ++++---- board/freescale/p1_p2_rdb/pci.c | 3 --- board/freescale/p2020ds/p2020ds.c | 14 ++++++-------- 6 files changed, 40 insertions(+), 58 deletions(-) diff --git a/board/freescale/mpc8536ds/mpc8536ds.c b/board/freescale/mpc8536ds/mpc8536ds.c index cf92ba1211..bd80cb7765 100644 --- a/board/freescale/mpc8536ds/mpc8536ds.c +++ b/board/freescale/mpc8536ds/mpc8536ds.c @@ -194,7 +194,7 @@ void pci_init_board(void) { ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); struct fsl_pci_info pci_info[4]; - u32 devdisr, pordevsr, io_sel, sdrs2_io_sel; + u32 devdisr, pordevsr, io_sel; u32 porpllsr, pci_agent, pci_speed, pci_32, pci_arb, pci_clk_sel; int first_free_busno = 0; int num = 0; @@ -205,18 +205,8 @@ void pci_init_board(void) pordevsr = in_be32(&gur->pordevsr); porpllsr = in_be32(&gur->porpllsr); io_sel = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >> 19; - sdrs2_io_sel = (pordevsr & MPC85xx_PORDEVSR_SRDS2_IO_SEL) >> 27; - debug(" pci_init_board: devdisr=%x, sdrs2_io_sel=%x, io_sel=%x\n", - devdisr, sdrs2_io_sel, io_sel); - - if (sdrs2_io_sel == 7) - printf("Serdes2 disalbed\n"); - else if (sdrs2_io_sel == 4) { - printf("eTSEC1 is in sgmii mode.\n"); - printf("eTSEC3 is in sgmii mode.\n"); - } else if (sdrs2_io_sel == 6) - printf("eTSEC1 is in sgmii mode.\n"); + debug(" pci_init_board: devdisr=%x, io_sel=%x\n", devdisr, io_sel); puts("\n"); #ifdef CONFIG_PCIE3 @@ -354,14 +344,12 @@ int board_eth_init(bd_t *bis) { #ifdef CONFIG_TSEC_ENET struct tsec_info_struct tsec_info[2]; - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); int num = 0; - uint sdrs2_io_sel = - (gur->pordevsr & MPC85xx_PORDEVSR_SRDS2_IO_SEL) >> 27; #ifdef CONFIG_TSEC1 SET_STD_TSEC_INFO(tsec_info[num], 1); - if ((sdrs2_io_sel == 4) || (sdrs2_io_sel == 6)) { + if (is_serdes_configured(SGMII_TSEC1)) { + puts("eTSEC1 is in sgmii mode.\n"); tsec_info[num].phyaddr = 0; tsec_info[num].flags |= TSEC_SGMII; } @@ -369,7 +357,8 @@ int board_eth_init(bd_t *bis) #endif #ifdef CONFIG_TSEC3 SET_STD_TSEC_INFO(tsec_info[num], 3); - if (sdrs2_io_sel == 4) { + if (is_serdes_configured(SGMII_TSEC3)) { + puts("eTSEC3 is in sgmii mode.\n"); tsec_info[num].phyaddr = 1; tsec_info[num].flags |= TSEC_SGMII; } @@ -382,8 +371,10 @@ int board_eth_init(bd_t *bis) } #ifdef CONFIG_FSL_SGMII_RISER - if ((sdrs2_io_sel == 4) || (sdrs2_io_sel == 6)) + if (is_serdes_configured(SGMII_TSEC1) || + is_serdes_configured(SGMII_TSEC3)) { fsl_sgmii_riser_init(tsec_info, num); + } #endif tsec_eth_init(bis, tsec_info, num); diff --git a/board/freescale/mpc8544ds/mpc8544ds.c b/board/freescale/mpc8544ds/mpc8544ds.c index 3285ceaa1b..2b6900c081 100644 --- a/board/freescale/mpc8544ds/mpc8544ds.c +++ b/board/freescale/mpc8544ds/mpc8544ds.c @@ -119,12 +119,6 @@ void pci_init_board(void) debug (" pci_init_board: devdisr=%x, io_sel=%x\n", devdisr, io_sel); - if (io_sel & 1) { - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII1_DIS)) - printf("eTSEC1 is in sgmii mode.\n"); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) - printf("eTSEC3 is in sgmii mode.\n"); - } puts("\n"); #ifdef CONFIG_PCIE3 @@ -324,20 +318,22 @@ int board_eth_init(bd_t *bis) { #ifdef CONFIG_TSEC_ENET struct tsec_info_struct tsec_info[2]; - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); - uint io_sel = (gur->pordevsr & MPC85xx_PORDEVSR_IO_SEL) >> 19; int num = 0; #ifdef CONFIG_TSEC1 SET_STD_TSEC_INFO(tsec_info[num], 1); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII1_DIS)) + if (is_serdes_configured(SGMII_TSEC1)) { + puts("eTSEC1 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif #ifdef CONFIG_TSEC3 SET_STD_TSEC_INFO(tsec_info[num], 3); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) + if (is_serdes_configured(SGMII_TSEC3)) { + puts("eTSEC3 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif @@ -347,8 +343,10 @@ int board_eth_init(bd_t *bis) return 0; } - if (io_sel & 1) + if (is_serdes_configured(SGMII_TSEC1) || + is_serdes_configured(SGMII_TSEC3)) { fsl_sgmii_riser_init(tsec_info, num); + } tsec_eth_init(bis, tsec_info, num); diff --git a/board/freescale/mpc8572ds/mpc8572ds.c b/board/freescale/mpc8572ds/mpc8572ds.c index 15a4d316cc..c217c278ea 100644 --- a/board/freescale/mpc8572ds/mpc8572ds.c +++ b/board/freescale/mpc8572ds/mpc8572ds.c @@ -177,15 +177,6 @@ void pci_init_board(void) debug (" pci_init_board: devdisr=%x, io_sel=%x\n", devdisr, io_sel); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII1_DIS)) - printf("eTSEC1 is in sgmii mode.\n"); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) - printf("eTSEC2 is in sgmii mode.\n"); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) - printf("eTSEC3 is in sgmii mode.\n"); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII4_DIS)) - printf("eTSEC4 is in sgmii mode.\n"); - puts("\n"); #ifdef CONFIG_PCIE3 pcie_configured = is_serdes_configured(PCIE3); @@ -289,31 +280,38 @@ int board_early_init_r(void) int board_eth_init(bd_t *bis) { struct tsec_info_struct tsec_info[4]; - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); int num = 0; #ifdef CONFIG_TSEC1 SET_STD_TSEC_INFO(tsec_info[num], 1); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII1_DIS)) + if (is_serdes_configured(SGMII_TSEC1)) { + puts("eTSEC1 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif #ifdef CONFIG_TSEC2 SET_STD_TSEC_INFO(tsec_info[num], 2); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) + if (is_serdes_configured(SGMII_TSEC2)) { + puts("eTSEC2 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif #ifdef CONFIG_TSEC3 SET_STD_TSEC_INFO(tsec_info[num], 3); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) + if (is_serdes_configured(SGMII_TSEC3)) { + puts("eTSEC3 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif #ifdef CONFIG_TSEC4 SET_STD_TSEC_INFO(tsec_info[num], 4); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII4_DIS)) + if (is_serdes_configured(SGMII_TSEC4)) { + puts("eTSEC4 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif diff --git a/board/freescale/p1_p2_rdb/p1_p2_rdb.c b/board/freescale/p1_p2_rdb/p1_p2_rdb.c index 1c4c0200e8..440fcb924a 100644 --- a/board/freescale/p1_p2_rdb/p1_p2_rdb.c +++ b/board/freescale/p1_p2_rdb/p1_p2_rdb.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -166,10 +167,8 @@ int board_early_init_r(void) int board_eth_init(bd_t *bis) { struct tsec_info_struct tsec_info[4]; - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); int num = 0; char *tmp; - u32 pordevsr; unsigned int vscfw_addr; #ifdef CONFIG_TSEC1 @@ -182,9 +181,10 @@ int board_eth_init(bd_t *bis) #endif #ifdef CONFIG_TSEC3 SET_STD_TSEC_INFO(tsec_info[num], 3); - pordevsr = in_be32(&gur->pordevsr); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) + if (is_serdes_configured(SGMII_TSEC3)) { + puts("eTSEC3 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif if (!num) { diff --git a/board/freescale/p1_p2_rdb/pci.c b/board/freescale/p1_p2_rdb/pci.c index e95431b7a3..2034459b66 100644 --- a/board/freescale/p1_p2_rdb/pci.c +++ b/board/freescale/p1_p2_rdb/pci.c @@ -53,9 +53,6 @@ void pci_init_board(void) devdisr = in_be32(&gur->devdisr); pordevsr = in_be32(&gur->pordevsr); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) - printf("eTSEC2 is in sgmii mode.\n"); - puts("\n"); #ifdef CONFIG_PCIE2 pcie_configured = is_serdes_configured(PCIE2); diff --git a/board/freescale/p2020ds/p2020ds.c b/board/freescale/p2020ds/p2020ds.c index a40be13906..07b08014df 100644 --- a/board/freescale/p2020ds/p2020ds.c +++ b/board/freescale/p2020ds/p2020ds.c @@ -204,11 +204,6 @@ void pci_init_board(void) debug (" pci_init_board: devdisr=%x, io_sel=%x\n", devdisr, io_sel); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) - printf("eTSEC2 is in sgmii mode.\n"); - if (!(pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) - printf("eTSEC3 is in sgmii mode.\n"); - puts("\n"); #ifdef CONFIG_PCIE2 pcie_configured = is_serdes_configured(PCIE2); @@ -318,7 +313,6 @@ int board_early_init_r(void) int board_eth_init(bd_t *bis) { struct tsec_info_struct tsec_info[4]; - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); int num = 0; #ifdef CONFIG_TSEC1 @@ -327,14 +321,18 @@ int board_eth_init(bd_t *bis) #endif #ifdef CONFIG_TSEC2 SET_STD_TSEC_INFO(tsec_info[num], 2); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) + if (is_serdes_configured(SGMII_TSEC2)) { + puts("eTSEC2 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; + } num++; #endif #ifdef CONFIG_TSEC3 SET_STD_TSEC_INFO(tsec_info[num], 3); - if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) + if (is_serdes_configured(SGMII_TSEC3)) { + puts("eTSEC3 is in sgmii mode.\n"); tsec_info[num].flags |= TSEC_SGMII; +} num++; #endif -- 2.30.2