summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 29060a0)
raw | patch | inline | side by side (parent: 29060a0)
author | Arun <auppuleti@ti.com> | |
Fri, 31 Jul 2015 20:19:49 +0000 (15:19 -0500) | ||
committer | Aravind Batni <aravindbr@ti.com> | |
Fri, 31 Jul 2015 20:38:03 +0000 (16:38 -0400) |
Signed-off-by: Arun <auppuleti@ti.com>
index b8451f010e2c27607307dbf4d0c363a0d2486f11..63089c900eddf14258c5fed4182cded3745446e4 100644 (file)
Binary files a/docs/ReleaseNotes_PA_LLD.doc and b/docs/ReleaseNotes_PA_LLD.doc differ
Binary files a/docs/ReleaseNotes_PA_LLD.doc and b/docs/ReleaseNotes_PA_LLD.doc differ
index 21e704b9fdeadd75b72a718d88e9f216de040604..9276c7db9891fbfb351aa888e5379bff5a33efa0 100644 (file)
Binary files a/docs/ReleaseNotes_PA_LLD.pdf and b/docs/ReleaseNotes_PA_LLD.pdf differ
Binary files a/docs/ReleaseNotes_PA_LLD.pdf and b/docs/ReleaseNotes_PA_LLD.pdf differ
diff --git a/example/emacExample/src/c66x/bios/cpsw_mgmt.c b/example/emacExample/src/c66x/bios/cpsw_mgmt.c
index 52594b23328327e1a8d1e95600c119a41caf88e8..94e09703b8f06eebeea571267d08622703dae25b 100644 (file)
#define PA_EMAC_EXAMPLE_REF_CLK_KHZ SERDES_REF_CLK_156250_KHZ\r
#endif\r
\r
+uint32_t gNum_Mac_Ports;\r
+\r
void cpsw_getStats(CSL_CPSW_STATS* stats, int clear)\r
{\r
\r
serdes_lane_enable_params.base_addr = CSL_NETCP_SERDES_CFG_REGS;\r
serdes_lane_enable_params.ref_clock = CSL_SERDES_REF_CLOCK_156p25M;\r
serdes_lane_enable_params.linkrate = CSL_SERDES_LINK_RATE_1p25G;\r
- serdes_lane_enable_params.num_lanes = NUM_MAC_PORTS;\r
+ serdes_lane_enable_params.num_lanes = gNum_Mac_Ports;\r
serdes_lane_enable_params.phy_type = SERDES_SGMII;\r
for(i=0; i< serdes_lane_enable_params.num_lanes; i++)\r
{\r
serdes_lane_enable_params.tx_coeff.tx_vreg[i] = 4;\r
}\r
\r
+ /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */\r
serdes_lane_enable_params.lane_mask = (1 << serdes_lane_enable_params.num_lanes) - 1;\r
- serdes_lane_enable_params.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
- \r
+ serdes_lane_enable_params.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
/* Att and Boost values are obtained through Serdes Diagnostic PRBS calibration test */\r
/* For higher speeds PHY-A, force attenuation and boost values */\r
serdes_lane_enable_params.forceattboost = CSL_SERDES_FORCE_ATT_BOOST_DISABLED;\r
\r
- /* SB CMU and COMLANE and Lane Setup */\r
+ /* CMU, COMLANE, and Lane Setup */\r
csl_retval = CSL_EthernetSerdesInit(serdes_lane_enable_params.base_addr,\r
serdes_lane_enable_params.ref_clock,\r
serdes_lane_enable_params.linkrate);\r
System_printf ("Invalid Serdes Init Params\n");\r
}\r
\r
- /* Common Init Mode */\r
- /* Iteration Mode needs to be set to Common Init Mode first with a lane_mask value equal to the total number of lanes being configured */\r
- /* The lane_mask is a don't care for Common Init as it operates on all lanes. It always sets it to 0xF internally in the API */\r
- serdes_lane_enable_params.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
- serdes_lane_enable_params.lane_mask = 0xF;\r
- lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params);\r
- if (lane_retval != 0)\r
- {\r
- System_printf ("Invalid Serdes Common Init\n");\r
- exit(0);\r
- }\r
- System_printf("SGMII Serdes Common Init Complete\n");\r
-\r
- /* Lane Init Mode */\r
- /* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
- iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT with the lane_mask equal to the specific lane being configured */\r
- /* For example, if lane 0 is being configured, lane mask needs to be set to 0x1. if lane 1 is being configured, lane mask needs to be 0x2 etc */\r
- serdes_lane_enable_params.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
- for(i=0; i< serdes_lane_enable_params.num_lanes; i++)\r
- {\r
- serdes_lane_enable_params.lane_mask = 1<<i;\r
+ /* Common Init Mode */\r
+ /* Iteration Mode needs to be set to Common Init Mode first */\r
+ serdes_lane_enable_params.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
+ lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params);\r
+ if (lane_retval != 0)\r
+ {\r
+ System_printf ("Invalid Serdes Common Init\n");\r
+ exit(0);\r
+ }\r
+ System_printf("SGMII Serdes Common Init Complete\n");\r
+\r
+ /* Lane Init Mode */\r
+ /* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
+ iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT */\r
+ serdes_lane_enable_params.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params);\r
if (lane_retval != 0)\r
{\r
System_printf ("Invalid Serdes Lane Enable Init\n");\r
exit(0);\r
}\r
- System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
- }\r
+ System_printf("SGMII Serdes Lanes Init Complete\n");\r
\r
\r
#elif defined(DEVICE_K2E)\r
CSL_SERDES_RESULT csl_retval;\r
CSL_SERDES_LANE_ENABLE_STATUS lane_retval = 0;\r
CSL_SERDES_STATUS pllstat;\r
- int numPort1 = (NUM_MAC_PORTS > 4)?4:NUM_MAC_PORTS;\r
- int numPort2 = (NUM_MAC_PORTS > 4)?NUM_MAC_PORTS - 4:0;\r
+ int numPort1 = (gNum_Mac_Ports > 4)?4:gNum_Mac_Ports;\r
+ int numPort2 = (gNum_Mac_Ports > 4)?gNum_Mac_Ports - 4:0;\r
\r
CSL_SERDES_LANE_ENABLE_PARAMS_T serdes_lane_enable_params1, serdes_lane_enable_params2;\r
\r
serdes_lane_enable_params1.tx_coeff.tx_att[i] = 12;\r
serdes_lane_enable_params1.tx_coeff.tx_vreg[i] = 4;\r
}\r
- serdes_lane_enable_params1.lane_mask = (1 << serdes_lane_enable_params1.num_lanes) - 1;;\r
+ /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */\r
+ serdes_lane_enable_params1.lane_mask = (1 << serdes_lane_enable_params1.num_lanes) - 1;\r
serdes_lane_enable_params1.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
\r
serdes_lane_enable_params2.base_addr = CSL_NETCP_SERDES_1_CFG_REGS;\r
serdes_lane_enable_params2.tx_coeff.tx_att[i] = 12;\r
serdes_lane_enable_params2.tx_coeff.tx_vreg[i] = 4;\r
}\r
-\r
+ /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */\r
serdes_lane_enable_params2.lane_mask = (1 << serdes_lane_enable_params2.num_lanes) - 1;;\r
serdes_lane_enable_params2.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
\r
}\r
\r
/* Common Init Mode */\r
- /* Iteration Mode needs to be set to Common Init Mode first with a lane_mask value equal to the total number of lanes being configured */\r
- /* The lane_mask is a don't care for Common Init as it operates on all lanes. It always sets it to 0xF internally in the API */\r
+ /* Iteration Mode needs to be set to Common Init Mode first */\r
serdes_lane_enable_params1.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
- serdes_lane_enable_params1.lane_mask = 0xF;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
if (lane_retval != 0)\r
{\r
\r
/* Lane Init Mode */\r
/* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
- iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT with the lane_mask equal to the specific lane being configured */\r
- /* For example, if lane 0 is being configured, lane mask needs to be set to 0x1. if lane 1 is being configured, lane mask needs to be 0x2 etc */\r
+ iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT */\r
serdes_lane_enable_params1.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
- for(i=0; i< serdes_lane_enable_params1.num_lanes; i++)\r
+ lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
+ if (lane_retval != 0)\r
{\r
- serdes_lane_enable_params1.lane_mask = 1<<i;\r
- lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
- if (lane_retval != 0)\r
- {\r
- System_printf ("Invalid Serdes Lane Enable Init\n");\r
- exit(0);\r
- }\r
- System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
+ System_printf ("Invalid Serdes Lane Enable Init\n");\r
+ exit(0);\r
}\r
+ System_printf("SGMII Serdes Lanes Init Complete\n");\r
\r
if(numPort2)\r
{\r
/* Common Init Mode */\r
- /* Iteration Mode needs to be set to Common Init Mode first with a lane_mask value equal to the total number of lanes being configured */\r
- /* The lane_mask is a don't care for Common Init as it operates on all lanes. It always sets it to 0xF internally in the API */\r
+ /* Iteration Mode needs to be set to Common Init Mode first */\r
serdes_lane_enable_params2.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
- serdes_lane_enable_params2.lane_mask = 0xF;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params2);\r
if (lane_retval != 0)\r
{\r
\r
/* Lane Init Mode */\r
/* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
- iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT with the lane_mask equal to the specific lane being configured */\r
- /* For example, if lane 0 is being configured, lane mask needs to be set to 0x1. if lane 1 is being configured, lane mask needs to be 0x2 etc */\r
+ iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT */\r
serdes_lane_enable_params2.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
- for(i=0; i< serdes_lane_enable_params2.num_lanes; i++)\r
+ lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params2);\r
+ if (lane_retval != 0)\r
{\r
- serdes_lane_enable_params2.lane_mask = 1<<i;\r
- lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params2);\r
- if (lane_retval != 0)\r
- {\r
- System_printf ("Invalid Serdes Lane Enable Init\n");\r
- exit(0);\r
- }\r
- System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
+ System_printf ("Invalid Serdes Lane Enable Init\n");\r
+ exit(0);\r
}\r
- }\r
+ System_printf("SGMII Serdes Lanes Init Complete\n");\r
+ }\r
\r
#elif defined(DEVICE_K2L)\r
CSL_SERDES_RESULT csl_retval;\r
CSL_SERDES_LANE_ENABLE_STATUS lane_retval = CSL_SERDES_LANE_ENABLE_NO_ERR;\r
uint32_t serdes_mux_ethernet_sel, i;\r
- int numPort1 = (NUM_MAC_PORTS > 2)?2:NUM_MAC_PORTS;\r
- int numPort2 = (NUM_MAC_PORTS > 2)?NUM_MAC_PORTS - 2:0;\r
+ int numPort1 = (gNum_Mac_Ports > 2)?2:gNum_Mac_Ports;\r
+ int numPort2 = (gNum_Mac_Ports > 2)?gNum_Mac_Ports - 2:0;\r
\r
CSL_SERDES_LANE_ENABLE_PARAMS_T serdes_lane_enable_params1, serdes_lane_enable_params2;\r
\r
serdes_lane_enable_params1.tx_coeff.tx_att[i] = 12;\r
serdes_lane_enable_params1.tx_coeff.tx_vreg[i] = 4;\r
}\r
- serdes_lane_enable_params1.lane_mask = (1 << serdes_lane_enable_params1.num_lanes) - 1;;\r
+ /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */\r
+ serdes_lane_enable_params1.lane_mask = (1 << serdes_lane_enable_params1.num_lanes) - 1;;\r
serdes_lane_enable_params1.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
\r
serdes_lane_enable_params2.base_addr = CSL_CSISC2_3_SERDES_CFG_REGS;\r
serdes_lane_enable_params2.tx_coeff.tx_att[i] = 12;\r
serdes_lane_enable_params2.tx_coeff.tx_vreg[i] = 4;\r
}\r
- serdes_lane_enable_params2.lane_mask = (1 << serdes_lane_enable_params2.num_lanes) - 1;;\r
+ /* if the system has 4 lanes, lane mask = 0xF. If the system has 2 lanes, lane mask = 0x3 etc */\r
+ serdes_lane_enable_params2.lane_mask = (1 << serdes_lane_enable_params2.num_lanes) - 1;;\r
serdes_lane_enable_params2.operating_mode = CSL_SERDES_FUNCTIONAL_MODE;\r
\r
\r
} \r
\r
/* Common Init Mode */\r
- /* Iteration Mode needs to be set to Common Init Mode first with a lane_mask value equal to the total number of lanes being configured */\r
- /* The lane_mask is a don't care for Common Init as it operates on all lanes. It always sets it to 0xF internally in the API */\r
+ /* Iteration Mode needs to be set to Common Init Mode first */\r
serdes_lane_enable_params1.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
- serdes_lane_enable_params1.lane_mask = 0xF;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
if (lane_retval != 0)\r
{\r
\r
/* Lane Init Mode */\r
/* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
- iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT with the lane_mask equal to the specific lane being configured */\r
- /* For example, if lane 0 is being configured, lane mask needs to be set to 0x1. if lane 1 is being configured, lane mask needs to be 0x2 etc */\r
+ iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT */\r
serdes_lane_enable_params1.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
- for(i=0; i< serdes_lane_enable_params1.num_lanes; i++)\r
+ lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
+ if (lane_retval != 0)\r
{\r
- serdes_lane_enable_params1.lane_mask = 1<<i;\r
- lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params1);\r
- if (lane_retval != 0)\r
- {\r
- System_printf ("Invalid Serdes Lane Enable Init\n");\r
- exit(0);\r
- }\r
- System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
+ System_printf ("Invalid Serdes Lane Enable Init\n");\r
+ exit(0);\r
}\r
+ System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
\r
- if(serdes_mux_ethernet_sel && numPort2)\r
- {\r
+ if(serdes_mux_ethernet_sel && numPort2)\r
+ {\r
/* Common Init Mode */\r
- /* Iteration Mode needs to be set to Common Init Mode first with a lane_mask value equal to the total number of lanes being configured */\r
- /* The lane_mask is a don't care for Common Init as it operates on all lanes. It always sets it to 0xF internally in the API */\r
+ /* Iteration Mode needs to be set to Common Init Mode first */\r
serdes_lane_enable_params2.iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT;\r
- serdes_lane_enable_params2.lane_mask = 0xF;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params2);\r
if (lane_retval != 0)\r
{\r
\r
/* Lane Init Mode */\r
/* Once CSL_SerdesLaneEnable is called with iteration_mode = CSL_SERDES_LANE_ENABLE_COMMON_INIT, the lanes needs to be enabled by setting\r
- iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT with the lane_mask equal to the specific lane being configured */\r
- /* For example, if lane 0 is being configured, lane mask needs to be set to 0x1. if lane 1 is being configured, lane mask needs to be 0x2 etc */\r
+ iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT */\r
serdes_lane_enable_params2.iteration_mode = CSL_SERDES_LANE_ENABLE_LANE_INIT;\r
- for(i=0; i< serdes_lane_enable_params2.num_lanes; i++)\r
- {\r
- serdes_lane_enable_params2.lane_mask = 1<<i;\r
lane_retval = CSL_SerdesLaneEnable(&serdes_lane_enable_params2);\r
if (lane_retval != 0)\r
{\r
System_printf ("Invalid Serdes Lane Enable Init\n");\r
exit(0);\r
}\r
- System_printf("SGMII Serdes Lane %d Init Complete\n", i);\r
- }\r
- }\r
+ System_printf("SGMII Serdes Lanes Init Complete\n");\r
+ }\r
\r
#endif\r
\r
{0x70, 0x71, 0x72, 0x73, 0x74, 0x75}, /* MAC address for (EMAC) Port 7 */\r
{0x80, 0x81, 0x82, 0x83, 0x84, 0x85} /* MAC address for (EMAC) Port 8 */\r
}; \r
- Uint32 portNum; \r
+ Uint32 portNum;\r
\r
\r
+ /* Set the global Num Mac Ports to 2 when running in non loopback mode */\r
+ if(cpswLpbkMode == CPSW_LOOPBACK_NONE)\r
+ {\r
+ gNum_Mac_Ports = 2;\r
+ }\r
+ /* Set global Num Mac Ports to total number of ports on the device (NUM_PORTS-1) */\r
+ else\r
+ {\r
+ gNum_Mac_Ports = NUM_PORTS - 1;\r
+ }\r
+\r
/* Initialize the SERDES modules */\r
Init_SGMII_SERDES();\r
\r
/* Initialize the SGMII/Sliver submodules for the\r
* two corresponding MAC ports.\r
*/\r
- for (macPortNum = 0; macPortNum < NUM_MAC_PORTS; macPortNum++)\r
+ for (macPortNum = 0; macPortNum < gNum_Mac_Ports; macPortNum++)\r
{\r
if (Init_SGMII (macPortNum))\r
return -1;\r
diff --git a/example/emacExample/src/c66x/bios/cpsw_mgmt.h b/example/emacExample/src/c66x/bios/cpsw_mgmt.h
index a1d678b355fb487f2ef746321adc75f2bbb48d50..dd1f5e1362cdd943da6c986f2a1ae3fe0efe20cd 100644 (file)
\r
#endif /* SIMULATOR_SUPPOR */\r
\r
-/** Number of MAC/GMII ports in the ethernet switch */\r
-#define NUM_MAC_PORTS (NUM_PORTS - 1)\r
\r
/* Define LoopBack modes */ \r
#define CPSW_LOOPBACK_NONE 0 /* No Loopback */\r
index 47cb4aa2badb69c522dba288c220197de55781d5..a1f5f7e9588da752066ebb0fbc3d8d174582e6c0 100644 (file)
void Cpsw_SingleCoreApp (void)
#endif
{
+ extern uint32_t gNum_Mac_Ports;
extern void view_ale_table(void);
uint32_t i;
int ct_show_ale = 0;
/* Run some data through and verify transfer worked */
System_printf ("Packet Transmission Start ... \n");
#ifndef __LINUX_USER_SPACE
- for (dest_emac_port_id = 0; dest_emac_port_id < (NUM_MAC_PORTS); dest_emac_port_id ++)
+ for (dest_emac_port_id = 0; dest_emac_port_id < (gNum_Mac_Ports); dest_emac_port_id ++)
{
#endif
for (i = 0; i < MAX_NUM_PACKETS; i ++)