This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: TDA4VM connect to external ethernet switch through MAC-to-MAC SGMII, but port can not link up

Part Number: TDA4VM

I used TDA4VM (serdes0 lane1) to connect a externel switch by MAC-to-MAC SGMII mode. My SDK version is 08.04. My code changes as follow:

Linux DTS:

diff --git a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
index ab3fe1ee4..87a0bafa3 100644
--- a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
+++ b/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
@@ -517,8 +517,7 @@ &usb_serdes_mux {
 };
diff --git a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/linux/board-support/linux-5.10.120+gitAUTOINC+9
5b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
index ab3fe1ee4..87a0bafa3 100644
--- a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
+++ b/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
@@ -517,8 +517,7 @@ &usb_serdes_mux {
 };
 
 &serdes_ln_ctrl {
-       idle-states = <J721E_SERDES0_LANE0_PCIE0_LANE0>, <J721E_SERDES0_LANE1_QSGMII_LANE2>,
-                     <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
+       idle-states = <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
                      <J721E_SERDES2_LANE0_PCIE2_LANE0>, <J721E_SERDES2_LANE1_PCIE2_LANE1>,
                      <J721E_SERDES3_LANE0_USB3_0_SWAP>, <J721E_SERDES3_LANE1_USB3_0>,
                      <J721E_SERDES4_LANE0_EDP_LANE0>, <J721E_SERDES4_LANE1_EDP_LANE1>,
@@ -991,9 +990,6 @@ &cmn_refclk1 {
 };
 
 &serdes0 {
-       assigned-clocks = <&serdes0 CDNS_SIERRA_PLL_CMNLC>, <&serdes0 CDNS_SIERRA_PLL_CMNLC1>;
-       assigned-clock-parents = <&wiz0_pll1_refclk>, <&wiz0_pll1_refclk>;
-
        serdes0_pcie_link: phy@0 {
                reg = <0>;
                cdns,num-lanes = <1>;
@@ -1001,15 +997,6 @@ serdes0_pcie_link: phy@0 {
                cdns,phy-type = <PHY_TYPE_PCIE>;
                resets = <&serdes_wiz0 1>;
        };
-
-       serdes0_qsgmii_link: phy@1 {
-               reg = <1>;
-               cdns,num-lanes = <1>;
-               #phy-cells = <0>;
-               cdns,phy-type = <PHY_TYPE_QSGMII>;
-               resets = <&serdes_wiz0 2>;
-       };
-
 };
 
 &serdes1 {
@@ -1038,15 +1025,6 @@ serdes2_pcie_link: phy@0 {
        };
 };
 
-&cpsw0 {
-       /*
-        * Disable cpsw0 since cpsw9g_virt_mac is the default Ethernet
-        * controller. cpsw0 is enabled with overlay for native
-        * Ethernet driver support.
-        */
-       status = "disabled";
-};
-
 &pcie0_rc {
        reset-gpios = <&exp1 6 GPIO_ACTIVE_HIGH>;
        phys = <&serdes0_pcie_link>;
@@ -1081,6 +1059,7 @@ &pcie0_ep {
        device-ids = /bits/ 16 <0xb00d>;
        msi_interrupts = /bits/ 8 <2>;
        msix_interrupts = /bits/ 16 <2>;
+       status = "disabled";
 };
 
 &pcie1_ep {
@@ -1225,3 +1204,7 @@ &main_ehrpwm4 {
 &main_ehrpwm5 {
        status = "disabled";
 };
+
+&serdes_wiz0 {
+       status = "disabled";
+};

diff --git a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
index 59b1042c4..432526ff1 100644
--- a/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
+++ b/linux/board-support/linux-5.10.120+gitAUTOINC+95b90aa828-g95b90aa828/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
@@ -46,27 +46,18 @@ serdes_ln_ctrl: mux@4080 {
                        compatible = "mmio-mux";
                        reg = <0x00004080 0x50>;
                        #mux-control-cells = <1>;
-                       mux-reg-masks = <0x4080 0x3>, <0x4084 0x3>, /* SERDES0 lane0/1 select */
-                                       <0x4090 0x3>, <0x4094 0x3>, /* SERDES1 lane0/1 select */
+                       mux-reg-masks = <0x4090 0x3>, <0x4094 0x3>, /* SERDES1 lane0/1 select */
                                        <0x40a0 0x3>, <0x40a4 0x3>, /* SERDES2 lane0/1 select */
                                        <0x40b0 0x3>, <0x40b4 0x3>, /* SERDES3 lane0/1 select */
                                        <0x40c0 0x3>, <0x40c4 0x3>, <0x40c8 0x3>, <0x40cc 0x3>;
                                        /* SERDES4 lane0/1/2/3 select */
-                       idle-states = <J721E_SERDES0_LANE0_PCIE0_LANE0>, <J721E_SERDES0_LANE1_PCIE0_LANE1>,
-                                     <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
+                       idle-states = <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
                                      <J721E_SERDES2_LANE0_PCIE2_LANE0>, <J721E_SERDES2_LANE1_PCIE2_LANE1>,
                                      <MUX_IDLE_AS_IS>, <J721E_SERDES3_LANE1_USB3_0>,
                                      <J721E_SERDES4_LANE0_EDP_LANE0>, <J721E_SERDES4_LANE1_EDP_LANE1>,
                                      <J721E_SERDES4_LANE2_EDP_LANE2>, <J721E_SERDES4_LANE3_EDP_LANE3>;
                };
 
-               cpsw0_phy_gmii_sel: phy@4044 {
-                       compatible = "ti,j721e-cpsw9g-phy-gmii-sel";
-                       ti,qsgmii-main-ports = <2>, <1>;
-                       reg = <0x4044 0x20>;
-                       #phy-cells = <1>;
-               };
-
                usb_serdes_mux: mux-controller@4000 {
                        compatible = "mmio-mux";
                        #mux-control-cells = <1>;
@@ -390,104 +381,6 @@ cpts@310d0000 {
                };
        };
 
-       cpsw0: ethernet@c000000 {
-               compatible = "ti,j721e-cpswxg-nuss";
-               #address-cells = <2>;
-               #size-cells = <2>;
-               reg = <0x00 0xc000000 0x00 0x200000>;
-               reg-names = "cpsw_nuss";
-               ranges = <0x00 0x00 0x00 0xc000000 0x00 0x200000>;
-               clocks = <&k3_clks 19 89>;
-               clock-names = "fck";
-               power-domains = <&k3_pds 19 TI_SCI_PD_EXCLUSIVE>;
-
-               dmas = <&main_udmap 0xca00>,
-                      <&main_udmap 0xca01>,
-                      <&main_udmap 0xca02>,
-                      <&main_udmap 0xca03>,
-                      <&main_udmap 0xca04>,
-                      <&main_udmap 0xca05>,
-                      <&main_udmap 0xca06>,
-                      <&main_udmap 0xca07>,
-                      <&main_udmap 0x4a00>;
-               dma-names = "tx0", "tx1", "tx2", "tx3",
-                           "tx4", "tx5", "tx6", "tx7",
-                           "rx";
-
-               ethernet-ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       cpsw0_port1: port@1 {
-                               reg = <1>;
-                               ti,mac-only;
-                               label = "port1";
-                       };
-
-                       cpsw0_port2: port@2 {
-                               reg = <2>;
-                               ti,mac-only;
-                               label = "port2";
-                       };
-
-                       cpsw0_port3: port@3 {
-                               reg = <3>;
-                               ti,mac-only;
-                               label = "port3";
-                       };
-
-                       cpsw0_port4: port@4 {
-                               reg = <4>;
-                               ti,mac-only;
-                               label = "port4";
-                       };
-
-                       cpsw0_port5: port@5 {
-                               reg = <5>;
-                               ti,mac-only;
-                               label = "port5";
-                       };
-
-                       cpsw0_port6: port@6 {
-                               reg = <6>;
-                               ti,mac-only;
-                               label = "port6";
-                       };
-
-                       cpsw0_port7: port@7 {
-                               reg = <7>;
-                               ti,mac-only;
-                               label = "port7";
-                       };
-
-                       cpsw0_port8: port@8 {
-                               reg = <8>;
-                               ti,mac-only;
-                               label = "port8";
-                       };
-               };
-
-               cpsw9g_mdio: mdio@f00 {
-                       compatible = "ti,cpsw-mdio","ti,davinci_mdio";
-                       reg = <0x00 0xf00 0x00 0x100>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clocks = <&k3_clks 19 89>;
-                       clock-names = "fck";
-                       bus_freq = <1000000>;
-               };
-
-               cpts@3d000 {
-                       compatible = "ti,j721e-cpts";
-                       reg = <0x00 0x3d000 0x00 0x400>;
-                       clocks = <&k3_clks 19 16>;
-                       clock-names = "cpts";
-                       interrupts-extended = <&gic500 GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "cpts";
-                       ti,cpts-ext-ts-inputs = <4>;
-                       ti,cpts-periodic-outputs = <2>;
-               };
-       };
-
        main_crypto: crypto@4e00000 {
                compatible = "ti,j721e-sa2ul";
                reg = <0x0 0x4e00000 0x0 0x1200>;

vision_app: 

enable_ethfw

diff --git a/rtos/vision_apps/utils/ethfw/src/app_ethfw_freertos.c b/rtos/vision_apps/utils/ethfw/src/app_ethfw_freertos.c
index cc484978a..33f3d7a5f 100644
--- a/rtos/vision_apps/utils/ethfw/src/app_ethfw_freertos.c
+++ b/rtos/vision_apps/utils/ethfw/src/app_ethfw_freertos.c
@@ -135,9 +135,6 @@ static Enet_MacPort gEthAppPorts[] =
     ENET_MAC_PORT_8, /* RGMII */
 #if defined(ENABLE_QSGMII_PORTS)
     ENET_MAC_PORT_2, /* QSGMII main */
-    ENET_MAC_PORT_5, /* QSGMII sub */
-    ENET_MAC_PORT_6, /* QSGMII sub */
-    ENET_MAC_PORT_7, /* QSGMII sub */
 #endif
 #elif defined(SOC_J784S4)
     ENET_MAC_PORT_1, /* QSGMII main */
@@ -310,7 +307,7 @@ int32_t appEthFwInit()
 #if defined(SOC_J721E)
     flags |= ETHFW_BOARD_GESI_ENABLE;
 #if defined(ENABLE_QSGMII_PORTS)
-    flags |= ETHFW_BOARD_QENET_ENABLE;
+    flags |= ETHFW_BOARD_ENET_BRIDGE_ENABLE;
 #endif
 #elif defined(SOC_J784S4)
     flags |= (ETHFW_BOARD_QENET_ENABLE | ETHFW_BOARD_SERDES_CONFIG);

PDK

diff --git a/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_ethernet_config.c b/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_ethernet_config.c
index 575b2e2db..cc8baba03 100755
--- a/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_ethernet_config.c
+++ b/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_ethernet_config.c
@@ -720,11 +720,11 @@ Board_STATUS Board_ethConfigCpsw9g(void)
         {
             if (1U == portNum)
             {
-                status = Board_cpsw9gEthConfig(portNum, QSGMII);
+                status = Board_cpsw9gEthConfig(portNum, SGMII);^M
             }
             else
             {
-                status = Board_cpsw9gEthConfig(portNum, QSGMII_SUB);
+                status = Board_cpsw9gEthConfig(portNum, SGMII);^M
             }
         }

diff --git a/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_serdes_cfg.c b/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_serdes_cfg.c
index c7ee7bddc..be54f7d18 100755
--- a/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_serdes_cfg.c
+++ b/rtos/pdk_jacinto_08_04_00_21/packages/ti/board/src/j721e_evm/board_serdes_cfg.c
@@ -55,8 +55,8 @@ static Board_STATUS Board_CfgSgmii(void)
     serdesLane0EnableParams.refClock          = CSL_SERDES_REF_CLOCK_100M;
     serdesLane0EnableParams.refClkSrc         = CSL_SERDES_REF_CLOCK_INT;
     serdesLane0EnableParams.linkRate          = CSL_SERDES_LINK_RATE_1p25G;
-    serdesLane0EnableParams.numLanes          = 0x2;
-    serdesLane0EnableParams.laneMask          = 0x3;
+    serdesLane0EnableParams.numLanes          = 0x1;^M
+    serdesLane0EnableParams.laneMask          = 0x2;^M
     serdesLane0EnableParams.SSC_mode          = CSL_SERDES_NO_SSC;
     serdesLane0EnableParams.phyType           = CSL_SERDES_PHY_TYPE_SGMII;
     serdesLane0EnableParams.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;

diff --git a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
index 1fb23b830..7a0c5640b 100755
--- a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
+++ b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
@@ -2304,6 +2304,7 @@ static int32_t CpswMacPort_configSgmii(CSL_CpsgmiiRegs *sgmiiRegs,
         do
         {
             CSL_SGMII_getStatus(sgmiiRegs, portNum, &sgmiiStatus);
+            sgmiiStatus.bIsLinkUp = 1;
         }
         while (sgmiiStatus.bIsLinkUp != 1U);

EthFw

diff --git a/rtos/ethfw/utils/board/src/j721e/board_j721e_evm.c b/rtos/ethfw/utils/board/src/j721e/board_j721e_evm.c
index d547a8773..e6ec4f081 100755
--- a/rtos/ethfw/utils/board/src/j721e/board_j721e_evm.c
+++ b/rtos/ethfw/utils/board/src/j721e/board_j721e_evm.c
@@ -367,7 +367,7 @@ static EthFwBoard_MacPortCfg gEthFw_enetBridgeMacPortCfg =
         .extendedCfg     = NULL,
         .extendedCfgSize = 0U,
     },
-    .sgmiiMode = ENET_MAC_SGMIIMODE_SGMII_AUTONEG_MASTER,
+    .sgmiiMode = ENET_MAC_SGMIIMODE_SGMII_FORCEDLINK,
     .linkCfg   = { ENET_SPEED_1GBIT, ENET_DUPLEX_FULL },
 };
 
@@ -659,13 +659,13 @@ static void EthFwBoard_configSerdesBridge(void)
 {
     Board_STATUS boardStatus;
 
-    if (gEthFwBoard.serdesAllowed)
+    //if (gEthFwBoard.serdesAllowed)
     {
         /* Configure SerDes clocks */
         EthFwBoard_configSierra0Clks();
 
         /* Configure SerDes for XAUI functionality */
-        boardStatus = Board_serdesCfgXaui();
+        boardStatus = Board_serdesCfgSgmii();
         EnetAppUtils_assert(boardStatus == BOARD_SOK);
     }
 }

  • Hi,

    Can you please share EthFw log for better understanding of what is issue.

    Also, can you please share below register dump to understand SerDes status.
    0x0500E000h -> PLL lock status (PHY_PMA_CMN_CTRL)
    0x05000408h -> SerDes TOP CTRL
    0x0500040Ch ->SerDes Reset
    0x050004C0h -> Lane control 1 
    0x050004C4h -> Lane divider 1
    0x050004C8h -> Lane align 1
    0x050004CCh -> Lane status 1

    Also, can you please dump following SGMII2 registers.
    0x0C000204h -> SGMII2 Soft Reset
    0x0C000210h -> SGMII2 Control reg
    0x0C000214h -> SGMII2 Status reg 
    0x0C000218h -> SGMII2 Advertise ability reg

    Best Regards,
    Sudheer

  • Hi SUdheer, thanks for your reply.

    The EthFw log is shown as follow.

    [MCU2_0]      3.381593 s: CIO: Init ... Done !!!
    [MCU2_0]      3.381665 s: ### CPU Frequency = 1000000000 Hz
    [MCU2_0]      3.381705 s: APP: Init ... !!!
    [MCU2_0]      3.381728 s: SCICLIENT: Init ... !!!
    [MCU2_0]      3.381982 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [MCU2_0]      3.382033 s: SCICLIENT: DMSC FW revision 0x8
    [MCU2_0]      3.382066 s: SCICLIENT: DMSC FW ABI revision 3.1
    [MCU2_0]      3.382101 s: SCICLIENT: Init ... Done !!!
    [MCU2_0]      3.382127 s: UDMA: Init ... !!!
    [MCU2_0]      3.383617 s: UDMA: Init ... Done !!!
    [MCU2_0]      3.383683 s: MEM: Init ... !!!
    [MCU2_0]      3.383728 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ d9000000 of size 16777216 bytes !!!
    [MCU2_0]      3.383805 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000000) @ 3600000 of size 262144 bytes !!!
    [MCU2_0]      3.383868 s: MEM: Init ... Done !!!
    [MCU2_0]      3.383893 s: IPC: Init ... !!!
    [MCU2_0]      3.383954 s: IPC: 6 CPUs participating in IPC !!!
    [MCU2_0]      3.384001 s: IPC: Waiting for HLOS to be ready ... !!!
    [MCU2_0]     13.231460 s: IPC: HLOS is ready !!!
    [MCU2_0]     13.246892 s: IPC: Init ... Done !!!
    [MCU2_0]     13.246961 s: APP: Syncing with 5 CPUs ... !!!
    [MCU2_0]     13.367524 s: APP: Syncing with 5 CPUs ... Done !!!
    [MCU2_0]     13.367766 s: REMOTE_SERVICE: Init ... !!!
    [MCU2_0]     13.369335 s: REMOTE_SERVICE: Init ... Done !!!
    [MCU2_0]     13.369399 s: ETHFW: Init ... !!!
    [MCU2_0]     13.375102 s: Warning: Using 6 MAC address(es) from static pool
    [MCU2_0]     13.375226 s: ETHFW: Shared multicasts (software fanout):
    [MCU2_0]     13.375271 s:   01:00:5e:00:00:01
    [MCU2_0]     13.375317 s:   01:00:5e:00:00:fb
    [MCU2_0]     13.375360 s:   01:00:5e:00:00:fc
    [MCU2_0]     13.375403 s:   33:33:00:00:00:01
    [MCU2_0]     13.375446 s:   33:33:ff:1d:92:c2
    [MCU2_0]     13.375489 s:   01:80:c2:00:00:00
    [MCU2_0]     13.375532 s:   01:80:c2:00:00:03
    [MCU2_0]     13.375577 s: ETHFW: Reserved multicasts:
    [MCU2_0]     13.375602 s:   01:80:c2:00:00:0e
    [MCU2_0]     13.375646 s:   01:1b:19:00:00:00
    [MCU2_0]     13.375905 s: EnetMcm: CPSW_9G on MAIN NAVSS
    [MCU2_0]     13.389762 s:
    [MCU2_0] ETHFW Version   : 0.02.00
    [MCU2_0]     13.389849 s: ETHFW Build Date: Sep 20, 2023
    [MCU2_0]     13.389885 s: ETHFW Build Time: 08:11:33
    [MCU2_0]     13.389913 s: ETHFW Commit SHA: 4d7fc81f
    [MCU2_0]     13.389985 s: ETHFW: Init ... DONE !!!
    [MCU2_0]     13.390018 s: ETHFW: Remove server Init ... !!!
    [MCU2_0]     13.390303 s: CpswProxyServer: Virtual port configuration:
    [MCU2_0]     13.390374 s:   mpu_1_0 <-> Switch port 0: mpu_1_0_ethswitch-device-0
    [MCU2_0]     13.390421 s:   mcu_2_1 <-> Switch port 1: mcu_2_1_ethswitch-device-1
    [MCU2_0]     13.390462 s:   mpu_1_0 <-> MAC port 1: mpu_1_0_ethmac-device-1
    [MCU2_0]     13.390502 s:   mcu_2_1 <-> MAC port 4: mcu_2_1_ethmac-device-4
    [MCU2_0]     13.391548 s: CpswProxyServer: initialization completed (core: mcu2_0)
    [MCU2_0]     13.391617 s: ETHFW: Remove server Init ... DONE !!!
    [MCU2_0]     13.392731 s: Starting lwIP, local interface IP is dhcp-enabled
    [MCU2_0]     13.399251 s: Host MAC address: 70:ff:76:1d:92:c3
    [MCU2_0]     13.403053 s: [LWIPIF_LWIP] Enet LLD netif initialized successfully
    [MCU2_0]     13.433586 s: [LWIPIF_LWIP_IC] Interface started successfully
    [MCU2_0]     13.433655 s: [LWIPIF_LWIP_IC] NETIF INIT SUCCESS
    [MCU2_0]     13.442116 s: FVID2: Init ... !!!
    [MCU2_0]     13.442215 s: FVID2: Init ... Done !!!
    [MCU2_0]     13.442267 s: DSS: Init ... !!!
    [MCU2_0]     13.442295 s: DSS: Display type is eDP !!!
    [MCU2_0]     13.442321 s: DSS: M2M Path is enabled !!!
    [MCU2_0]     13.442347 s: DSS: SoC init ... !!!
    [MCU2_0]     13.442370 s: SCICLIENT: Sciclient_pmSetModuleState module=152 state=2
    [MCU2_0]     13.442594 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.442637 s: SCICLIENT: Sciclient_pmSetModuleState module=297 state=2
    [MCU2_0]     13.442825 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.442862 s: SCICLIENT: Sciclient_pmSetModuleState module=151 state=2
    [MCU2_0]     13.443018 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.443156 s: SCICLIENT: Sciclient_pmSetModuleClkParent module=152 clk=9 parent=11
    [MCU2_0]     13.443322 s: SCICLIENT: Sciclient_pmSetModuleClkParent success
    [MCU2_0]     13.443364 s: SCICLIENT: Sciclient_pmSetModuleClkParent module=152 clk=13 parent=18
    [MCU2_0]     13.443492 s: SCICLIENT: Sciclient_pmSetModuleClkParent success
    [MCU2_0]     13.443526 s: SCICLIENT: Sciclient_pmSetModuleClkParent module=152 clk=1 parent=2
    [MCU2_0]     13.443630 s: SCICLIENT: Sciclient_pmSetModuleClkParent success
    [MCU2_0]     13.443667 s: SCICLIENT: Sciclient_pmSetModuleClkFreq module=152 clk=1 freq=148500000
    [MCU2_0]     13.444744 s: SCICLIENT: Sciclient_pmSetModuleClkFreq success
    [MCU2_0]     13.444797 s: SCICLIENT: Sciclient_pmModuleClkRequest module=152 clk=1 state=2 flag=0
    [MCU2_0]     13.444963 s: SCICLIENT: Sciclient_pmModuleClkRequest success
    [MCU2_0]     13.445101 s: DSS: SoC init ... Done !!!
    [MCU2_0]     13.445133 s: DSS: Board init ... !!!
    [MCU2_0]     13.445160 s: DSS: Board init ... Done !!!
    [MCU2_0]     13.492487 s: [LWIPIF_LWIP_IC] Interface started successfully
    [MCU2_0]     13.492570 s: [LWIPIF_LWIP_IC] NETIF INIT SUCCESS
    [MCU2_0]     13.492687 s: Added interface 'br4', IP is 0.0.0.0
    [MCU2_0]     13.509633 s: DSS: Init ... Done !!!
    [MCU2_0]     13.509702 s: VHWA: VPAC Init ... !!!
    [MCU2_0]     13.509729 s: SCICLIENT: Sciclient_pmSetModuleState module=290 state=2
    [MCU2_0]     13.509912 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.509953 s: VHWA: LDC Init ... !!!
    [MCU2_0]     13.513734 s: VHWA: LDC Init ... Done !!!
    [MCU2_0]     13.513803 s: VHWA: MSC Init ... !!!
    [MCU2_0]     13.527692 s: VHWA: MSC Init ... Done !!!
    [MCU2_0]     13.527761 s: VHWA: NF Init ... !!!
    [MCU2_0]     13.529760 s: VHWA: NF Init ... Done !!!
    [MCU2_0]     13.529827 s: VHWA: VISS Init ... !!!
    [MCU2_0]     13.542409 s: VHWA: VISS Init ... Done !!!
    [MCU2_0]     13.542478 s: VHWA: VPAC Init ... Done !!!
    [MCU2_0]     13.542523 s:  VX_ZONE_INIT:Enabled
    [MCU2_0]     13.542553 s:  VX_ZONE_ERROR:Enabled
    [MCU2_0]     13.542581 s:  VX_ZONE_WARNING:Enabled
    [MCU2_0]     13.544147 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target MCU2-0
    [MCU2_0]     13.544423 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target VPAC_NF
    [MCU2_0]     13.544658 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target VPAC_LDC1
    [MCU2_0]     13.545066 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target VPAC_MSC1
    [MCU2_0]     13.545332 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target VPAC_MSC2
    [MCU2_0]     13.545622 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target VPAC_VISS1
    [MCU2_0]     13.546038 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE1
    [MCU2_0]     13.546338 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE2
    [MCU2_0]     13.546602 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DISPLAY1
    [MCU2_0]     13.547005 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DISPLAY2
    [MCU2_0]     13.547263 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CSITX
    [MCU2_0]     13.547538 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE3
    [MCU2_0]     13.547952 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE4
    [MCU2_0]     13.548253 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE5
    [MCU2_0]     13.548525 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE6
    [MCU2_0]     13.548948 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE7
    [MCU2_0]     13.549242 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target CAPTURE8
    [MCU2_0]     13.549481 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DSS_M2M1
    [MCU2_0]     13.549903 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DSS_M2M2
    [MCU2_0]     13.550181 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DSS_M2M3
    [MCU2_0]     13.550428 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DSS_M2M4
    [MCU2_0]     13.550485 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    [MCU2_0]     13.550521 s: APP: OpenVX Target kernel init ... !!!
    [MCU2_0]     13.572180 s: APP: OpenVX Target kernel init ... Done !!!
    [MCU2_0]     13.572248 s: CSI2RX: Init ... !!!
    [MCU2_0]     13.572279 s: SCICLIENT: Sciclient_pmSetModuleState module=25 state=2
    [MCU2_0]     13.572410 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.572454 s: SCICLIENT: Sciclient_pmSetModuleState module=26 state=2
    [MCU2_0]     13.572590 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.572625 s: SCICLIENT: Sciclient_pmSetModuleState module=27 state=2
    [MCU2_0]     13.572901 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.572953 s: SCICLIENT: Sciclient_pmSetModuleState module=147 state=2
    [MCU2_0]     13.573064 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.573099 s: SCICLIENT: Sciclient_pmSetModuleState module=148 state=2
    [MCU2_0]     13.573197 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.574086 s: CSI2RX: Init ... Done !!!
    [MCU2_0]     13.574148 s: CSI2TX: Init ... !!!
    [MCU2_0]     13.574176 s: SCICLIENT: Sciclient_pmSetModuleState module=25 state=2
    [MCU2_0]     13.574297 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.574334 s: SCICLIENT: Sciclient_pmSetModuleState module=28 state=2
    [MCU2_0]     13.574482 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.574515 s: SCICLIENT: Sciclient_pmSetModuleState module=296 state=2
    [MCU2_0]     13.574691 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_0]     13.575314 s: CSI2TX: Init ... Done !!!
    [MCU2_0]     13.575376 s: ISS: Init ... !!!
    [MCU2_0]     13.575414 s: IssSensor_Init ... Done !!!
    [MCU2_0]     13.575502 s: IttRemoteServer_Init ... Done !!!
    [MCU2_0]     13.575678 s: VISS REMOTE SERVICE: Init ... !!!
    [MCU2_0]     13.575794 s: VISS REMOTE SERVICE: Init ... Done !!!
    [MCU2_0]     13.575832 s: UDMA Copy: Init ... !!!
    [MCU2_0]     13.577818 s: UDMA Copy: Init ... Done !!!
    [MCU2_0]     13.577937 s: APP: Init ... Done !!!
    [MCU2_0]     13.577977 s: APP: Run ... !!!
    [MCU2_0]     13.578002 s: IPC: Starting echo test ...
    [MCU2_0]     13.580980 s: APP: Run ... Done !!!
    [MCU2_0]     13.582605 s: IPC: Echo status: mpu1_0[x] mcu2_0[s] mcu2_1[.] C66X_1[P] C66X_2[.] C7X_1[.]
    [MCU2_0]     13.582733 s: IPC: Echo status: mpu1_0[x] mcu2_0[s] mcu2_1[P] C66X_1[P] C66X_2[.] C7X_1[.]
    [MCU2_0]     13.583121 s: IPC: Echo status: mpu1_0[x] mcu2_0[s] mcu2_1[P] C66X_1[P] C66X_2[P] C7X_1[.]
    [MCU2_0]     13.583369 s: IPC: Echo status: mpu1_0[x] mcu2_0[s] mcu2_1[P] C66X_1[P] C66X_2[P] C7X_1[P]
    [MCU2_0]     13.669858 s: Function:CpswProxyServer_attachExtHandlerCb,HostId:0,CpswType:6
    [MCU2_0]     13.877401 s: Function:CpswProxyServer_attachExtHandlerCb,HostId:0,CpswType:6
    [MCU2_0]     16.536298 s: Function:CpswProxyServer_registerMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:70:ff:76:1d:92:c2, FlowIdx:173, FlowIdxOffset:1
    [MCU2_0]     16.549897 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     16.550197 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     16.550480 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     16.578050 s: Function:CpswProxyServer_registerMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:70:ff:76:1d:92:c1, FlowIdx:172, FlowIdxOffset:0
    [MCU2_0]     16.581217 s: Cpsw_ioctlInternal: CPSW: Registered MAC address. ALE entry:10, Policer Entry:2
    [MCU2_0]     16.604011 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:33:33:0:0:0:1, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.605954 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:1:0:5e:0:0:1, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.607919 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:33:33:ff:1d:92:c1, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.756424 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     16.767776 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:1:80:c2:0:0:0, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.769755 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:1:80:c2:0:0:3, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.771637 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:1:80:c2:0:0:e, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     16.771781 s: CpswProxyServer_isRsvdMcast: Reserved mcast cannot be added to filter
    [MCU2_0]     16.959122 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     16.959406 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:33:33:0:0:0:fb, vlanId:0, FlowIdx:172, FlowIdOffset:0
    [MCU2_0]     17.565499 s: Function:CpswProxyServer_setPromiscModeHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6,mode:disable
    [MCU2_0]     17.796254 s: Function:CpswProxyServer_filterAddMacHandlerCb,HostId:0,Handle:a3988ad4,CoreKey:38acb7e6, MacAddress:33:33:0:1:0:3, vlanId:0, FlowIdx:172, FlowIdOffset:0
    

    The registers value is shown as follow.

    root@j7-evm:/opt# devmem2 0x500e000
    /dev/mem opened.
    Memory mapped at address 0xffff82d2e000.
    Read at address  0x0500E000 (0xffff82d2e000): 0x00002435
    root@j7-evm:/opt# devmem2 0x5000408
    /dev/mem opened.
    Memory mapped at address 0xffff9a7d2000.
    Read at address  0x05000408 (0xffff9a7d2408): 0x1A000000
    root@j7-evm:/opt# devmem2 0x500040C
    /dev/mem opened.
    Memory mapped at address 0xffff99203000.
    Read at address  0x0500040C (0xffff9920340c): 0xB1000000
    root@j7-evm:/opt# devmem2 0x50004C0
    /dev/mem opened.
    Memory mapped at address 0xffff91480000.
    Read at address  0x050004C0 (0xffff914804c0): 0x71800000
    root@j7-evm:/opt# devmem2 0x50004C4
    /dev/mem opened.
    Memory mapped at address 0xffffb3b9d000.
    Read at address  0x050004C4 (0xffffb3b9d4c4): 0x00010002
    root@j7-evm:/opt# devmem2 0x50004C8
    /dev/mem opened.
    Memory mapped at address 0xffffaabab000.
    Read at address  0x050004C8 (0xffffaabab4c8): 0x00000000
    root@j7-evm:/opt# devmem2 0x50004CC
    /dev/mem opened.
    Memory mapped at address 0xffffb6407000.
    Read at address  0x050004CC (0xffffb64074cc): 0x00000003
    root@j7-evm:/opt# devmem2 0xc000204
    /dev/mem opened.
    Memory mapped at address 0xffffb64b1000.
    Read at address  0x0C000204 (0xffffb64b1204): 0x00000000
    root@j7-evm:/opt# devmem2 0xc000210
    /dev/mem opened.
    Memory mapped at address 0xffffacf6d000.
    Read at address  0x0C000210 (0xffffacf6d210): 0x00000020
    root@j7-evm:/opt# devmem2 0xc000214
    /dev/mem opened.
    Memory mapped at address 0xffffb5bac000.
    Read at address  0x0C000214 (0xffffb5bac214): 0x00000030
    root@j7-evm:/opt# devmem2 0xc000218
    /dev/mem opened.
    Memory mapped at address 0xffffb0c44000.
    Read at address  0x0C000218 (0xffffb0c44218): 0x00009801
    

    Best Regards,

    Bin

  • Hi Bin,

    Registers dump seems to be fine, but Link is not up.

    Can you please revert back the following patch and share the EthFw log with us, Link should come up automatically it depends upon on PHY and negotiation with Link partner and CPSGMII.

    diff --git a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    index 1fb23b830..7a0c5640b 100755
    --- a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    +++ b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    @@ -2304,6 +2304,7 @@ static int32_t CpswMacPort_configSgmii(CSL_CpsgmiiRegs *sgmiiRegs,
             do
             {
                 CSL_SGMII_getStatus(sgmiiRegs, portNum, &sgmiiStatus);
    +            sgmiiStatus.bIsLinkUp = 1;
             }
             while (sgmiiStatus.bIsLinkUp != 1U);


    Also, if any other Ports were enabled, please make sure that those ports are active.

    Also, make sure that Link partner is Link up with switch/phy connected to TDA4VM.

    Can you please share more details about your test environment? If you are using two TDA4VM back to back for MAC-to-MAC testing then try SGMII mode as "ENET_MAC_SGMIIMODE_SGMII_AUTONEG_MASTER" at one end and "ENET_MAC_SGMIIMODE_SGMII_AUTONEG_SLAVE" on other end.

    Best Regards,
    Sudheer

  • Hi Sudheer,

    > Can you please revert back the following patch and share the EthFw log with us, Link should come up automatically it depends upon on PHY and negotiation with Link partner and CPSGMII. 

    I think it is a bug. Because it checks link status before setting the mac control register. The function CpswMacPort_configSgmii is called before 

    CSL_CPGMAC_SL_setMacControlReg.

    > Also, if any other Ports were enabled, please make sure that those ports are active.

    Sorry, I only connected this port on the hardware. Should I change the vision ethfw app code to comment other port?

    > Also, make sure that Link partner is Link up with switch/phy connected to TDA4VM

    Yes

    > Can you please share more details about your test environment? If you are using two TDA4VM back to back for MAC-to-MAC testing then try SGMII mode as "ENET_MAC_SGMIIMODE_SGMII_AUTONEG_MASTER" at one end and "ENET_MAC_SGMIIMODE_SGMII_AUTONEG_SLAVE" on other end.

    No, it is a customized board, not a TI EVM board. I connect the customized board with external ethernet switch.

    J3 is a connector to ethernet switch

  • Hi,

    I think it is a bug. Because it checks link status before setting the mac control register. The function CpswMacPort_configSgmii is called before 

    CSL_CPGMAC_SL_setMacControlReg

    No, Before MAC there is CPSGMII block which will get link status from PHY/Switch/Link Partner(if it is direct MAC).
    In MAC control we are setting EXT_EN, which will get the speed and duplexity from CPSGMII module.

    Please refer to below image for better understanding.


    CPSGMII module should get linkup from Switch in your case.
      

    > Also, if any other Ports were enabled, please make sure that those ports are active.

    Sorry, I only connected this port on the hardware. Should I change the vision ethfw app code to comment other port?

    Can you please comment out other ports, which are not used/connected.

    Best Regards,
    Sudheer

  • Hi, 

    Ok, I will change my code.

  • Can you please revert back the following patch and share the EthFw log with us, Link should come up automatically it depends upon on PHY and negotiation with Link partner and CPSGMII.

    I also comment the other unused ports.

    The Ethfw log is shown as follow.

    [MCU2_0]      3.698905 s: CIO: Init ... Done !!!
    [MCU2_0]      3.698977 s: ### CPU Frequency = 1000000000 Hz
    [MCU2_0]      3.699017 s: APP: Init ... !!!
    [MCU2_0]      3.699044 s: SCICLIENT: Init ... !!!
    [MCU2_0]      3.699306 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [MCU2_0]      3.699359 s: SCICLIENT: DMSC FW revision 0x8
    [MCU2_0]      3.699393 s: SCICLIENT: DMSC FW ABI revision 3.1
    [MCU2_0]      3.699429 s: SCICLIENT: Init ... Done !!!
    [MCU2_0]      3.699456 s: UDMA: Init ... !!!
    [MCU2_0]      3.700889 s: UDMA: Init ... Done !!!
    [MCU2_0]      3.700956 s: MEM: Init ... !!!
    [MCU2_0]      3.701003 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ d9000000 of size 16777216 bytes !!!
    [MCU2_0]      3.701081 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000000) @ 3600000 of size 262144 bytes !!!
    [MCU2_0]      3.701144 s: MEM: Init ... Done !!!
    [MCU2_0]      3.701168 s: IPC: Init ... !!!
    [MCU2_0]      3.701230 s: IPC: 6 CPUs participating in IPC !!!
    [MCU2_0]      3.701279 s: IPC: Waiting for HLOS to be ready ... !!!
    [MCU2_0]     13.953225 s: IPC: HLOS is ready !!!
    [MCU2_0]     13.968893 s: IPC: Init ... Done !!!
    [MCU2_0]     13.968964 s: APP: Syncing with 5 CPUs ... !!!
    [MCU2_0]     14.273574 s: APP: Syncing with 5 CPUs ... Done !!!
    [MCU2_0]     14.273792 s: REMOTE_SERVICE: Init ... !!!
    [MCU2_0]     14.275372 s: REMOTE_SERVICE: Init ... Done !!!
    [MCU2_0]     14.275436 s: ETHFW: Init ... !!!
    [MCU2_0]     14.281085 s: Warning: Using 6 MAC address(es) from static pool
    [MCU2_0]     14.281205 s: ETHFW: Shared multicasts (software fanout):
    [MCU2_0]     14.281255 s:   01:00:5e:00:00:01
    [MCU2_0]     14.281303 s:   01:00:5e:00:00:fb
    [MCU2_0]     14.281347 s:   01:00:5e:00:00:fc
    [MCU2_0]     14.281390 s:   33:33:00:00:00:01
    [MCU2_0]     14.281433 s:   33:33:ff:1d:92:c2
    [MCU2_0]     14.281476 s:   01:80:c2:00:00:00
    [MCU2_0]     14.281519 s:   01:80:c2:00:00:03
    [MCU2_0]     14.281563 s: ETHFW: Reserved multicasts:
    [MCU2_0]     14.281589 s:   01:80:c2:00:00:0e
    [MCU2_0]     14.281633 s:   01:1b:19:00:00:00
    [MCU2_0]     14.281883 s: EnetMcm: CPSW_9G on MAIN NAVSS
    [MCU2_1]      3.651768 s: CIO: Init ... Done !!!
    [MCU2_1]      3.651845 s: ### CPU Frequency = 1000000000 Hz
    [MCU2_1]      3.651891 s: APP: Init ... !!!
    [MCU2_1]      3.651919 s: SCICLIENT: Init ... !!!
    [MCU2_1]      3.652200 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [MCU2_1]      3.652265 s: SCICLIENT: DMSC FW revision 0x8
    [MCU2_1]      3.652302 s: SCICLIENT: DMSC FW ABI revision 3.1
    [MCU2_1]      3.652340 s: SCICLIENT: Init ... Done !!!
    [MCU2_1]      3.652368 s: UDMA: Init ... !!!
    [MCU2_1]      3.653984 s: UDMA: Init ... Done !!!
    [MCU2_1]      3.654049 s: MEM: Init ... !!!
    [MCU2_1]      3.654097 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ da000000 of size 16777216 bytes !!!
    [MCU2_1]      3.654185 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000001) @ 3640000 of size 262144 bytes !!!
    [MCU2_1]      3.654255 s: MEM: Init ... Done !!!
    [MCU2_1]      3.654286 s: IPC: Init ... !!!
    [MCU2_1]      3.654353 s: IPC: 6 CPUs participating in IPC !!!
    [MCU2_1]      3.654411 s: IPC: Waiting for HLOS to be ready ... !!!
    [MCU2_1]     14.258009 s: IPC: HLOS is ready !!!
    [MCU2_1]     14.273448 s: IPC: Init ... Done !!!
    [MCU2_1]     14.273520 s: APP: Syncing with 5 CPUs ... !!!
    [MCU2_1]     14.273573 s: APP: Syncing with 5 CPUs ... Done !!!
    [MCU2_1]     14.273611 s: REMOTE_SERVICE: Init ... !!!
    [MCU2_1]     14.275538 s: REMOTE_SERVICE: Init ... Done !!!
    [MCU2_1]     14.275615 s: FVID2: Init ... !!!
    [MCU2_1]     14.275690 s: FVID2: Init ... Done !!!
    [MCU2_1]     14.275727 s: VHWA: DMPAC: Init ... !!!
    [MCU2_1]     14.275754 s: SCICLIENT: Sciclient_pmSetModuleState module=48 state=2
    [MCU2_1]     14.276207 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_1]     14.276247 s: SCICLIENT: Sciclient_pmSetModuleState module=305 state=2
    [MCU2_1]     14.276723 s: SCICLIENT: Sciclient_pmSetModuleState success
    [MCU2_1]     14.276761 s: VHWA: DOF Init ... !!!
    [MCU2_1]     14.285561 s: VHWA: DOF Init ... Done !!!
    [MCU2_1]     14.285625 s: VHWA: SDE Init ... !!!
    [MCU2_1]     14.288307 s: VHWA: SDE Init ... Done !!!
    [MCU2_1]     14.288368 s: VHWA: DMPAC: Init ... Done !!!
    [MCU2_1]     14.288418 s:  VX_ZONE_INIT:Enabled
    [MCU2_1]     14.288449 s:  VX_ZONE_ERROR:Enabled
    [MCU2_1]     14.288476 s:  VX_ZONE_WARNING:Enabled
    [MCU2_1]     14.289679 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DMPAC_SDE
    [MCU2_1]     14.289934 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target DMPAC_DOF
    [MCU2_1]     14.290190 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:64] Added target MCU2-1
    [MCU2_1]     14.290252 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    [MCU2_1]     14.290291 s: APP: OpenVX Target kernel init ... !!!
    [MCU2_1]     14.290591 s: APP: OpenVX Target kernel init ... Done !!!
    [MCU2_1]     14.290635 s: UDMA Copy: Init ... !!!
    [MCU2_1]     14.292418 s: UDMA Copy: Init ... Done !!!
    [MCU2_1]     14.292485 s: APP: Init ... Done !!!
    [MCU2_1]     14.292517 s: APP: Run ... !!!
    [MCU2_1]     14.292542 s: IPC: Starting echo test ...
    [MCU2_1]     14.295101 s: APP: Run ... Done !!!
    [MCU2_1]     14.296311 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[s] C66X_1[P] C66X_2[.] C7X_1[.]
    [MCU2_1]     14.296434 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[s] C66X_1[P] C66X_2[P] C7X_1[.]
    [MCU2_1]     14.296535 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[s] C66X_1[P] C66X_2[P] C7X_1[P]
    [C6x_1 ]      3.763832 s: CIO: Init ... Done !!!
    [C6x_1 ]      3.763857 s: ### CPU Frequency = 1350000000 Hz
    [C6x_1 ]      3.763867 s: APP: Init ... !!!
    [C6x_1 ]      3.763875 s: SCICLIENT: Init ... !!!
    [C6x_1 ]      3.764104 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [C6x_1 ]      3.764116 s: SCICLIENT: DMSC FW revision 0x8
    [C6x_1 ]      3.764125 s: SCICLIENT: DMSC FW ABI revision 3.1
    [C6x_1 ]      3.764135 s: SCICLIENT: Init ... Done !!!
    [C6x_1 ]      3.764144 s: UDMA: Init ... !!!
    [C6x_1 ]      3.765793 s: UDMA: Init ... Done !!!
    [C6x_1 ]      3.765813 s: MEM: Init ... !!!
    [C6x_1 ]      3.765826 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ dc000000 of size 16777216 bytes !!!
    [C6x_1 ]      3.765844 s: MEM: Created heap (L2_MEM, id=2, flags=0x00000001) @ 800000 of size 229376 bytes !!!
    [C6x_1 ]      3.765859 s: MEM: Created heap (DDR_SCRATCH_MEM, id=4, flags=0x00000001) @ dd000000 of size 50331648 bytes !!!
    [C6x_1 ]      3.765875 s: MEM: Init ... Done !!!
    [C6x_1 ]      3.765883 s: IPC: Init ... !!!
    [C6x_1 ]      3.765903 s: IPC: 6 CPUs participating in IPC !!!
    [C6x_1 ]      3.765918 s: IPC: Waiting for HLOS to be ready ... !!!
    [C6x_1 ]     13.087056 s: IPC: HLOS is ready !!!
    [C6x_1 ]     13.091177 s: IPC: Init ... Done !!!
    [C6x_1 ]     13.091206 s: APP: Syncing with 5 CPUs ... !!!
    [C6x_1 ]     14.273572 s: APP: Syncing with 5 CPUs ... Done !!!
    [C6x_1 ]     14.273590 s: REMOTE_SERVICE: Init ... !!!
    [C6x_1 ]     14.274301 s: REMOTE_SERVICE: Init ... Done !!!
    [C6x_1 ]     14.274342 s:  VX_ZONE_INIT:Enabled
    [C6x_1 ]     14.274355 s:  VX_ZONE_ERROR:Enabled
    [C6x_1 ]     14.274364 s:  VX_ZONE_WARNING:Enabled
    [C6x_1 ]     14.275179 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    [C6x_1 ]     14.275193 s: APP: OpenVX Target kernel init ... !!!
    [C6x_1 ]     14.275528 s: APP: OpenVX Target kernel init ... Done !!!
    [C6x_1 ]     14.275548 s: UDMA Copy: Init ... !!!
    [C6x_1 ]     14.279383 s: UDMA Copy: Init ... Done !!!
    [C6x_1 ]     14.279401 s: APP: Init ... Done !!!
    [C6x_1 ]     14.279410 s: APP: Run ... !!!
    [C6x_1 ]     14.279418 s: IPC: Starting echo test ...
    [C6x_1 ]     14.280487 s: APP: Run ... Done !!!
    [C6x_1 ]     14.280791 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[s] C66X_2[x] C7X_1[P]
    [C6x_1 ]     14.281231 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[s] C66X_2[P] C7X_1[P]
    [C6x_1 ]     14.295640 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] C66X_1[s] C66X_2[P] C7X_1[P]
    [C6x_2 ]      3.850371 s: CIO: Init ... Done !!!
    [C6x_2 ]      3.850396 s: ### CPU Frequency = 1350000000 Hz
    [C6x_2 ]      3.850407 s: APP: Init ... !!!
    [C6x_2 ]      3.850415 s: SCICLIENT: Init ... !!!
    [C6x_2 ]      3.850629 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [C6x_2 ]      3.850641 s: SCICLIENT: DMSC FW revision 0x8
    [C6x_2 ]      3.850651 s: SCICLIENT: DMSC FW ABI revision 3.1
    [C6x_2 ]      3.850662 s: SCICLIENT: Init ... Done !!!
    [C6x_2 ]      3.850671 s: UDMA: Init ... !!!
    [C6x_2 ]      3.852284 s: UDMA: Init ... Done !!!
    [C6x_2 ]      3.852305 s: MEM: Init ... !!!
    [C6x_2 ]      3.852319 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ e0000000 of size 16777216 bytes !!!
    [C6x_2 ]      3.852338 s: MEM: Created heap (L2_MEM, id=2, flags=0x00000001) @ 800000 of size 229376 bytes !!!
    [C6x_2 ]      3.852353 s: MEM: Created heap (DDR_SCRATCH_MEM, id=4, flags=0x00000001) @ e1000000 of size 50331648 bytes !!!
    [C6x_2 ]      3.852370 s: MEM: Init ... Done !!!
    [C6x_2 ]      3.852379 s: IPC: Init ... !!!
    [C6x_2 ]      3.852399 s: IPC: 6 CPUs participating in IPC !!!
    [C6x_2 ]      3.852416 s: IPC: Waiting for HLOS to be ready ... !!!
    [C6x_2 ]     13.792051 s: IPC: HLOS is ready !!!
    [C6x_2 ]     13.795896 s: IPC: Init ... Done !!!
    [C6x_2 ]     13.795921 s: APP: Syncing with 5 CPUs ... !!!
    [C6x_2 ]     14.273572 s: APP: Syncing with 5 CPUs ... Done !!!
    [C6x_2 ]     14.273590 s: REMOTE_SERVICE: Init ... !!!
    [C6x_2 ]     14.274309 s: REMOTE_SERVICE: Init ... Done !!!
    [C6x_2 ]     14.274347 s:  VX_ZONE_INIT:Enabled
    [C6x_2 ]     14.274360 s:  VX_ZONE_ERROR:Enabled
    [C6x_2 ]     14.274370 s:  VX_ZONE_WARNING:Enabled
    [C6x_2 ]     14.275188 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    [C6x_2 ]     14.275203 s: APP: OpenVX Target kernel init ... !!!
    [C6x_2 ]     14.275539 s: APP: OpenVX Target kernel init ... Done !!!
    [C6x_2 ]     14.275559 s: UDMA Copy: Init ... !!!
    [C6x_2 ]     14.279717 s: UDMA Copy: Init ... Done !!!
    [C6x_2 ]     14.279737 s: APP: Init ... Done !!!
    [C6x_2 ]     14.279746 s: APP: Run ... !!!
    [C6x_2 ]     14.279755 s: IPC: Starting echo test ...
    [C6x_2 ]     14.280910 s: APP: Run ... Done !!!
    [C6x_2 ]     14.281239 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[s] C7X_1[.]
    [C6x_2 ]     14.281273 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[s] C7X_1[P]
    [C6x_2 ]     14.295666 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] C66X_1[P] C66X_2[s] C7X_1[P]
    [C7x_1 ]      4.407794 s: CIO: Init ... Done !!!
    [C7x_1 ]      4.407807 s: ### CPU Frequency = 1000000000 Hz
    [C7x_1 ]      4.407819 s: APP: Init ... !!!
    [C7x_1 ]      4.407826 s: SCICLIENT: Init ... !!!
    [C7x_1 ]      4.408037 s: SCICLIENT: DMSC FW version [8.4.1--v08.04.01 (Jolly Jellyfi]
    [C7x_1 ]      4.408051 s: SCICLIENT: DMSC FW revision 0x8
    [C7x_1 ]      4.408061 s: SCICLIENT: DMSC FW ABI revision 3.1
    [C7x_1 ]      4.408071 s: SCICLIENT: Init ... Done !!!
    [C7x_1 ]      4.408080 s: UDMA: Init ... !!!
    [C7x_1 ]      4.409353 s: UDMA: Init ... Done !!!
    [C7x_1 ]      4.409366 s: MEM: Init ... !!!
    [C7x_1 ]      4.409377 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ 117000000 of size 268435456 bytes !!!
    [C7x_1 ]      4.409397 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000001) @ 70020000 of size 8159232 bytes !!!
    [C7x_1 ]      4.409414 s: MEM: Created heap (L2_MEM, id=2, flags=0x00000001) @ 64800000 of size 458752 bytes !!!
    [C7x_1 ]      4.409432 s: MEM: Created heap (L1_MEM, id=3, flags=0x00000001) @ 64e00000 of size 16384 bytes !!!
    [C7x_1 ]      4.409449 s: MEM: Created heap (DDR_SCRATCH_MEM, id=4, flags=0x00000001) @ 100000000 of size 385875968 bytes !!!
    [C7x_1 ]      4.409467 s: MEM: Init ... Done !!!
    [C7x_1 ]      4.409475 s: IPC: Init ... !!!
    [C7x_1 ]      4.409489 s: IPC: 6 CPUs participating in IPC !!!
    [C7x_1 ]      4.409503 s: IPC: Waiting for HLOS to be ready ... !!!
    [C7x_1 ]     14.118535 s: IPC: HLOS is ready !!!
    [C7x_1 ]     14.120644 s: IPC: Init ... Done !!!
    [C7x_1 ]     14.120658 s: APP: Syncing with 5 CPUs ... !!!
    [C7x_1 ]     14.273576 s: APP: Syncing with 5 CPUs ... Done !!!
    [C7x_1 ]     14.273595 s: REMOTE_SERVICE: Init ... !!!
    [C7x_1 ]     14.273767 s: REMOTE_SERVICE: Init ... Done !!!
    [C7x_1 ]     14.273792 s:  VX_ZONE_INIT:Enabled
    [C7x_1 ]     14.273803 s:  VX_ZONE_ERROR:Enabled
    [C7x_1 ]     14.273813 s:  VX_ZONE_WARNING:Enabled
    [C7x_1 ]     14.273981 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1
    [C7x_1 ]     14.274084 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_2
    [C7x_1 ]     14.274193 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_3
    [C7x_1 ]     14.274264 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_4
    [C7x_1 ]     14.274331 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_5
    [C7x_1 ]     14.274408 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_6
    [C7x_1 ]     14.274527 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_7
    [C7x_1 ]     14.274606 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:59] Added target DSP_C7-1_PRI_8
    [C7x_1 ]     14.274628 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    [C7x_1 ]     14.274641 s: APP: OpenVX Target kernel init ... !!!
    [C7x_1 ]     14.274827 s: APP: OpenVX Target kernel init ... Done !!!
    [C7x_1 ]     14.274841 s: APP: Init ... Done !!!
    [C7x_1 ]     14.274851 s: APP: Run ... !!!
    [C7x_1 ]     14.274859 s: IPC: Starting echo test ...
    [C7x_1 ]     14.275032 s: APP: Run ... Done !!!
    [C7x_1 ]     14.280799 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[x] C7X_1[s]
    [C7x_1 ]     14.281246 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[P] C7X_1[s]
    [C7x_1 ]     14.295689 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] C66X_1[P] C66X_2[P] C7X_1[s]

    The register values is shown as follow.

    root@j7-evm:/opt# devmem2 0x500e000
    /dev/mem opened.
    Memory mapped at address 0xffffbd9c2000.
    Read at address  0x0500E000 (0xffffbd9c2000): 0x00002435
    root@j7-evm:/opt# devmem2 0x5000408
    /dev/mem opened.
    Memory mapped at address 0xffffbede0000.
    Read at address  0x05000408 (0xffffbede0408): 0x1A000000
    root@j7-evm:/opt# devmem2 0x500040C
    /dev/mem opened.
    Memory mapped at address 0xffffad232000.
    Read at address  0x0500040C (0xffffad23240c): 0xB1000000
    root@j7-evm:/opt# devmem2 0x50004C0
    /dev/mem opened.
    Memory mapped at address 0xffffadcaf000.
    Read at address  0x050004C0 (0xffffadcaf4c0): 0x71800000
    root@j7-evm:/opt# devmem2 0x50004C4
    /dev/mem opened.
    Memory mapped at address 0xffff898cb000.
    Read at address  0x050004C4 (0xffff898cb4c4): 0x00010002
    root@j7-evm:/opt# devmem2 0x50004C8
    /dev/mem opened.
    Memory mapped at address 0xffffba5c8000.
    Read at address  0x050004C8 (0xffffba5c84c8): 0x00000000
    root@j7-evm:/opt# devmem2 0x50004CC
    /dev/mem opened.
    Memory mapped at address 0xffffa97dc000.
    Read at address  0x050004CC (0xffffa97dc4cc): 0x00000003
    root@j7-evm:/opt# devmem2 0xc000204
    /dev/mem opened.
    Memory mapped at address 0xffffa445d000.
    Read at address  0x0C000204 (0xffffa445d204): 0x00000000
    root@j7-evm:/opt# devmem2 0xc000210
    /dev/mem opened.
    Memory mapped at address 0xffffa83c3000.
    Read at address  0x0C000210 (0xffffa83c3210): 0x00000020
    root@j7-evm:/opt# devmem2 0xc000214
    /dev/mem opened.
    Memory mapped at address 0xffff85ab0000.
    Read at address  0x0C000214 (0xffff85ab0214): 0x00000030
    root@j7-evm:/opt# devmem2 0xc000218
    /dev/mem opened.
    Memory mapped at address 0xffff83089000.
    Read at address  0x0C000218 (0xffff83089218): 0x00009801
    

  • Hi Sudheer,

    How to calculate the link rate of serdes based on SGMII configuration.

    Best Regards,
    Bin
  • Hi Bin,

    How to calculate the link rate of serdes based on SGMII configuration.

    You check get the link rate/speed from SGMII status register corresponding to the port used for SGMII mode.
    If PHY supports Negotiation with CPSGMII then speed/link rate will be as per PHY capable/Link up with link partner side.

    During the SerDes initialization, will be configuring the link rate as 1.25MHz, please refer to below.


    Best Regards,
    Sudheer

  • Hi Sudheer, 

    During the SerDes initialization, will be configuring the link rate as 1.25MHz, please refer to below.

    Sorry, it took me so long to reply because I was on vacation. I measured the signal with an oscilloscope and found that the serdes rate was not right. It was not 1.25Gbps. I also checked the serdes registers and their values were the same as the code configuration(ti-processor-sdk-rtos-j721e-evm-08_04_00_06/pdk_jacinto_08_04_00_21/packages/ti/csl/src/ip/serdes_cd/V0/csl_wiz16m_cs_refclk100MHz_20b_SGMII.c). 

  • Hi,

    Sorry, it took me so long to reply because I was on vacation. I measured the signal with an oscilloscope and found that the serdes rate was not right. It was not 1.25Gbps.

    Can you please share the image with us.
    We are configuring the SerDes in1.25MHz link rate as it is 8/10 encoding which result in 1Gbps link speed with peer end.

    As per register log, SerDes clock is configured and PLL is locked but we haven't seen Link up with external switch.

    Can you please confirm, is External switch SGMII is verified/confirmed in any of the possible way?


    Best Regards,
    Sudheer

  • Hi Sudheer,

    Thanks for your help. I have solved the issue now.

    Best Regards,

    Binzhong

  • Hi,

    Thanks for your help. I have solved the issue now.

    Its good to hear that your issue is resolved.
    Can you please share the details about, what was the issue and what changes resolved your issue.

    Best Regards,
    Sudheer

  • Hi Sudheer,

    Its good to hear that your issue is resolved.
    Can you please share the details about, what was the issue and what changes resolved your issue.

    There are some modifications as shown follow.

    (1) In the Board_CfgSgmii function, I modified the input parameters "serdesLane0EnableParams.numLanes ==> 2" of the function CSL_serdesDisablePllAndLanes. 

    (2) In the CpswMacPort_configSgmii function, I still keep the changes below. If not, the port could not link up when it was configured the force mode.

    diff --git a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    index 1fb23b830..7a0c5640b 100755
    --- a/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    +++ b/rtos/pdk_jacinto_08_04_00_21/packages/ti/drv/enet/src/mod/cpsw_macport.c
    @@ -2304,6 +2304,7 @@ static int32_t CpswMacPort_configSgmii(CSL_CpsgmiiRegs *sgmiiRegs,
             do
             {
                 CSL_SGMII_getStatus(sgmiiRegs, portNum, &sgmiiStatus);
    +            sgmiiStatus.bIsLinkUp = 1;
             }
             while (sgmiiStatus.bIsLinkUp != 1U);

    Best Regards,

    Binzhong

  • Hi,

    (1) In the Board_CfgSgmii function, I modified the input parameters "serdesLane0EnableParams.numLanes ==> 2" of the function CSL_serdesDisablePllAndLanes. 

    Thank you for sharing the details. It was a bug in SDK, we need to pass the Max lanes in SerDes as argument in CSL_serdesDisablePllAndLanes function call instead of num lanes enabled in SerDes.

    You change is valid one.

    Once again thank you so much for sharing the details.

    Best Regards,
    Sudheer