PDK-6948: Board: Enabled icss mdio init for am64x evm
authorM V Pratap Reddy <x0257344@ti.com>
Fri, 27 Nov 2020 09:48:49 +0000 (15:18 +0530)
committerM V Pratap Reddy <x0257344@ti.com>
Fri, 27 Nov 2020 10:02:07 +0000 (15:32 +0530)
 - Moved Board_STATUS variable definition from board.h to board_cfg.h.
   This will allow including board header files in board_cfg.h to avoid
   including the header files in every application.
   Change applies to all the platforms and should not break any
   functionality.

packages/ti/board/board.h
packages/ti/board/board_cfg.h
packages/ti/board/src/am64x_evm/board_ethernet_config.c
packages/ti/board/src/am64x_evm/board_init.c
packages/ti/board/src/am64x_evm/include/board_cfg.h
packages/ti/board/src/am64x_evm/include/board_ethernet_config.h
packages/ti/build/makerules/rules_ti_cgt_arm.mk

index c22ce59bbf952bf9b98ccaee72b874629744b06b..40c0e73c9549dc12b1bf0b0b136f0ec65a264ca9 100755 (executable)
@@ -119,15 +119,6 @@ extern "C" {
  * Return/Error values                                       *
  *************************************************************/
 
-/**
- * @brief   The return type for board library API calls
- *
- * @details Board library function calls will return this value, which contains
- *          information as to whether the function succeeded or encountered an
- *          error.
- */
-typedef int32_t Board_STATUS;
-
 #include <ti/board/board_cfg.h>
 
 /** Board status OK */
@@ -359,6 +350,7 @@ typedef uint32_t Board_initCfg;
 #define BOARD_INIT_CPSW9G_ETH_PHY       (1 << 26U)
 
 /* Configures ENET Control(mac mode, delay settings) for CPSW/ICCS ports */
+#define BOARD_INIT_ENETCTRL_CPSW3G      (1 << 27U)
 #define BOARD_INIT_ENETCTRL_CPSW2G      (1 << 27U)
 #define BOARD_INIT_ENETCTRL_CPSW9G      (1 << 28U)
 #define BOARD_INIT_ENETCTRL_ICSS        (1 << 29U)
index 480dc802f2c0376af3cda374875fa3ff02339fd6..815f7e04de7475dcae2c0df9353f39e6aeed9a7d 100644 (file)
 extern "C" {
 #endif
 
+#include <stdint.h>
+#include <ti/csl/hw_types.h>
+
+/**
+ * @brief   The return type for board library API calls
+ *
+ * @details Board library function calls will return this value, which contains
+ *          information as to whether the function succeeded or encountered an
+ *          error.
+ */
+typedef int32_t Board_STATUS;
+
 #if defined(evmAM335x)
 #include <ti/board/src/evmAM335x/include/board_cfg.h>
 
@@ -136,6 +148,7 @@ extern "C" {
 
 #elif defined (am64x_evm)
 #include <ti/board/src/am64x_evm/include/board_cfg.h>
+#include <ti/board/src/am64x_evm/include/board_pinmux.h>
 
 #elif defined (am64x_svb)
 #include <ti/board/src/am64x_svb/include/board_cfg.h>
index c1982296592649ce22b3f607e49cdc06467bd95e..58390fb6dd3aaf07bb3a1180c127dfcf2ffdea2c 100644 (file)
@@ -1,5 +1,5 @@
 /******************************************************************************\r
- * Copyright (c) 2019 Texas Instruments Incorporated - http://www.ti.com\r
+ * Copyright (c) 2020 Texas Instruments Incorporated - http://www.ti.com\r
  *\r
  *  Redistribution and use in source and binary forms, with or without\r
  *  modification, are permitted provided that the following conditions\r
 #include "board_ethernet_config.h"\r
 #include "board_internal.h"\r
 #include <ti/csl/soc.h>\r
+#include <ti/csl/csl_mdio.h>\r
+\r
+Board_MdioInfo_t  Board_gPruIcssMdioInfo[BOARD_ICSS_EMAC_PORT_MAX] =\r
+                       {{CSL_PRU_ICSSG1_PR1_MDIO_V1P7_MDIO_BASE, BOARD_ICSS_EMAC_PHY0_ADDR},\r
+                        {CSL_PRU_ICSSG1_PR1_MDIO_V1P7_MDIO_BASE, BOARD_ICSS_EMAC_PHY1_ADDR}\r
+                       };\r
+\r
+/**\r
+ * \brief  Function to initialize MDIO\r
+ *\r
+ * \param   baseAddr [IN]   MDIO base address\r
+ *\r
+ * \return  uint32_t\r
+            TRUE     Read is successful.\r
+ *          FALSE    Read is not acknowledged properly.\r
+ */\r
+static void Board_mdioInit(uint32_t baseAddr)\r
+{\r
+    HW_WR_REG32((baseAddr + BOARD_MDIO_CTRL_REG_OFFSET),\r
+                (CSL_FMKT(MDIO_CONTROL_REG_ENABLE, YES) |\r
+                CSL_FMK(MDIO_CONTROL_REG_CLKDIV,\r
+                BOARD_MDIO_CLK_DIV_CFG)));\r
+}\r
 \r
 /**\r
- * \brief  Board specific configurations for MCU Ethernet PHY\r
+ * \brief  Board specific configurations for CPSW Ethernet PHY\r
  *\r
  * This function takes care of configuring the internal delays for MCU gigabit\r
  * Ethernet PHY\r
- * \r
- * J7ES_TODO: Place holder. Needs update\r
  *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_mcuEthConfig(void)\r
+Board_STATUS Board_cpswEthPhyConfig(void)\r
 {\r
-       return BOARD_SOK;\r
+    return BOARD_SOK;\r
 }\r
 \r
 /**\r
  * \brief  Board specific configurations for ICSS EMAC Ethernet PHYs\r
  *\r
- * This function takes care of configuring the internal delays for ICSS \r
+ * This function takes care of configuring the internal delays for ICSS\r
  * Ethernet PHY\r
  *\r
- * J7ES_TODO: Place holder. Needs update\r
- *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_icssEthConfig(void)\r
+Board_STATUS Board_icssEthPhyConfig(void)\r
 {\r
-       return BOARD_SOK;\r
+    uint32_t baseAddr;\r
+    uint32_t index;\r
+    Board_STATUS status = BOARD_SOK;\r
+\r
+    for(index = 0; index < BOARD_ICSS_EMAC_PORT_MAX; index++)\r
+    {\r
+        baseAddr = Board_gPruIcssMdioInfo[index].mdioBaseAddrs;\r
+\r
+        Board_mdioInit(baseAddr);\r
+    }\r
+\r
+    return status;\r
 }\r
 \r
 /**\r
- * \brief  Board specific configurations for CPSW RGMII Ethernet\r
+ * \brief  Board specific configurations for CPSW Ethernet ports\r
  *\r
- * This function takes care of configuring the internal delays for CPSW9G \r
- * RGMII Ethernet PHY\r
+ * This function used to configures CPSW Ethernet controllers with the respective modes\r
  *\r
- * J7ES_TODO: Place holder. Needs update\r
- *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_rgmiiEthConfig(void)\r
+Board_STATUS Board_ethConfigCpsw(void)\r
 {\r
        return BOARD_SOK;\r
 }\r
 \r
 /**\r
- * \brief  Board specific configurations for SGMII Ethernet\r
- *\r
- * This function takes care of configuring the internal delays for \r
- * SGMII Ethernet PHY\r
+ * \brief  Board specific configurations for ICSS Ethernet ports\r
  *\r
- * J7ES_TODO: Place holder. Needs update\r
+ * This function used to configures ICSS Ethernet controllers with the respective modes\r
  *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_sgmiiEthConfig(void)\r
+Board_STATUS Board_ethConfigIcss(void)\r
 {\r
        return BOARD_SOK;\r
 }\r
index 2981dfab7e943d81f3ba7e5f3f09628b9bf30850..43b1685f95abcc5d04f9772aaa8af2c2c0f77b64 100644 (file)
@@ -54,6 +54,7 @@
  */\r
 \r
 #include "board_internal.h"\r
+#include "board_ethernet_config.h"\r
 #include <ti/drv/sciclient/sciclient.h>\r
 \r
 static bool gBoardSysInitDone = 0;\r
@@ -198,13 +199,23 @@ Board_STATUS Board_init(Board_initCfg cfg)
     if (ret != BOARD_SOK)\r
         return ret;\r
 \r
+    if (cfg & BOARD_INIT_ENETCTRL_CPSW3G)\r
+        ret = Board_ethConfigCpsw();\r
+    if (ret != BOARD_SOK)\r
+        return ret;\r
+\r
+    if (cfg & BOARD_INIT_ENETCTRL_ICSS)\r
+        ret = Board_ethConfigIcss();\r
+    if (ret != BOARD_SOK)\r
+        return ret;\r
+\r
     if (cfg & BOARD_INIT_ETH_PHY)\r
-        ret = Board_mcuEthConfig();\r
+        ret = Board_cpswEthPhyConfig();\r
     if (ret != BOARD_SOK)\r
         return ret;\r
 \r
     if (cfg & BOARD_INIT_ICSS_ETH_PHY)\r
-        ret = Board_icssEthConfig();\r
+        ret = Board_icssEthPhyConfig();\r
     if (ret != BOARD_SOK)\r
         return ret;\r
 \r
index 6448f6ca14cc69c7360cbf1472ebad826aea6099..16fba99d909c03b6212a67a2f539dd4052fe07b6 100644 (file)
@@ -45,8 +45,6 @@
 extern "C" {\r
 #endif\r
 \r
-#include <ti/board/src/am64x_evm/include/board_pinmux.h>\r
-\r
 /* Board ID information */\r
 #define BOARD_INFO_CPU_NAME     "am64x"\r
 #define BOARD_INFO_BOARD_NAME   "am64x_evm"\r
@@ -176,8 +174,8 @@ extern "C" {
 #define BOARD_USER_LED2                                 (1U) /* MCU GPIO0_1 */\r
 \r
 #define BOARD_ICSS_EMAC_PORT_START                      (0x0U)\r
-#define BOARD_ICSS_EMAC_PORT_END                        (0x5U)\r
-#define BOARD_ICSS_EMAC_PORT_MAX                        (0x6U)\r
+#define BOARD_ICSS_EMAC_PORT_END                        (0x1U)\r
+#define BOARD_ICSS_EMAC_PORT_MAX                        (0x2U)\r
 #define BOARD_MCU_EMAC_PORT_MAX                         (0x1U)\r
 #define BOARD_MCU_ETH_PORT                              (0x1U) //AM64x_TODO: need to update\r
 \r
@@ -185,6 +183,10 @@ extern "C" {
 /* ICSS2 EMAC PHY register address */\r
 #define BOARD_ICSS2_EMAC_PHY0_ADDR                      (0x0)\r
 #define BOARD_ICSS2_EMAC_PHY1_ADDR                      (0x3u)\r
+#define BOARD_ICSS_EMAC_PHY0_ADDR                       (0x3)\r
+#define BOARD_ICSS_EMAC_PHY1_ADDR                       (0xFu)\r
+#define BOARD_CPSW_EMAC_PHY0_ADDR                       (0x0)\r
+#define BOARD_CPSW_EMAC_PHY1_ADDR                       (0x3u)\r
 \r
 \r
 /* PRG1_RGMII2_RESETn */\r
index a155de2ccc539b0c5f21ec6eb73cc3f8bb71da81..be8e58e34b747849e7367bf710cf0454e8ed92dc 100644 (file)
 extern "C" {\r
 #endif\r
 \r
+typedef struct Board_MdioInfo_s\r
+{\r
+    uint32_t mdioBaseAddrs;\r
+    uint8_t  phyAddrs;\r
+} Board_MdioInfo_t;\r
+\r
+/**\r
+ * \brief  Board specific configurations for CPSW Ethernet PHY\r
+ *\r
+ * This function takes care of configuring the internal delays for MCU gigabit\r
+ * Ethernet PHY\r
+ *\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
+ */\r
+Board_STATUS Board_cpswEthPhyConfig(void);\r
+\r
 /**\r
  * \brief  Board specific configurations for ICSS EMAC Ethernet PHYs\r
  *\r
  * This function takes care of configuring the internal delays for ICSS\r
  * Ethernet PHY\r
  *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_icssEthConfig(void);\r
+Board_STATUS Board_icssEthPhyConfig(void);\r
 \r
 /**\r
- * \brief  Board specific configurations for MCU Ethernet PHY\r
+ * \brief  Board specific configurations for CPSW Ethernet ports\r
  *\r
- * This function takes care of configuring the internal delays for MCU gigabit\r
- * Ethernet PHY\r
+ * This function used to configures CPSW Ethernet controllers with the respective modes\r
  *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_mcuEthConfig(void);\r
+Board_STATUS Board_ethConfigCpsw(void);\r
 \r
 /**\r
- * \brief  Function to configure the Ethernet PHY speed\r
+ * \brief  Board specific configurations for ICSS Ethernet ports\r
  *\r
- * \param   port [IN]    Ethernet PHY Port number (check above table)\r
- * \param   speed [IN]   Speed selection\r
- *                       0 -  100 mpbs\r
- *                       1 -  1000 mpbs\r
+ * This function used to configures ICSS Ethernet controllers with the respective modes\r
  *\r
- * \return  none\r
+ * \return  BOARD_SOK in case of success or appropriate error code\r
  */\r
-Board_STATUS Board_ethPhySpeedConfig(int8_t port, uint8_t speed);\r
+Board_STATUS Board_ethConfigIcss(void);\r
 \r
 #ifdef __cplusplus\r
 }\r
index cc3135ffa4dbfe62bb67356968a28991d03f8688..046719bd3ed7642af62e9fc8214d363974abec51 100644 (file)
@@ -152,7 +152,7 @@ ifeq ($(BUILD_PROFILE_$(CORE)), release)
  ifeq ($(CGT_ISA),$(filter $(CGT_ISA), M4 R5 M3))
    LNKFLAGS_INTERNAL_BUILD_PROFILE = -qq --diag_warning=225 --diag_suppress=23000 $(LNKFLAGS_GLOBAL_$(CORE))
    ifeq ($(CGT_ISA),$(filter $(CGT_ISA), R5))
-#     CFLAGS_INTERNAL += -ms -O4 -s
+     CFLAGS_INTERNAL += -ms -O4 -s
    else
      CFLAGS_INTERNAL += -ms -O4 -op0 -os --optimize_with_debug --inline_recursion_limit=20
    endif