]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/portable/NetworkInterface/Zynq/x_emacpsif_physpeed.c
Update version number in +TCP code.
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-TCP / portable / NetworkInterface / Zynq / x_emacpsif_physpeed.c
index 12b8c60c8b9da9b4ccf0fe20cb0ef6fc31352b14..dd0cf0ab75723fef3e646efa46b1dc7fd359f519 100644 (file)
 #include <stdio.h>\r
 #include <stdlib.h>\r
 \r
-#include "Zynq/x_emacpsif.h"\r
-//#include "lwipopts.h"\r
-#include "xparameters_ps.h"\r
-#include "xparameters.h"\r
-\r
 /* FreeRTOS includes. */\r
 #include "FreeRTOS.h"\r
 #include "task.h"\r
 #include "queue.h"\r
 #include "semphr.h"\r
 \r
-///* FreeRTOS+TCP includes. */\r
 /* FreeRTOS+TCP includes. */\r
 #include "FreeRTOS_IP.h"\r
 #include "FreeRTOS_Sockets.h"\r
 #include "FreeRTOS_IP_Private.h"\r
 #include "NetworkBufferManagement.h"\r
 \r
+#include "Zynq/x_emacpsif.h"\r
+#include "xparameters_ps.h"\r
+#include "xparameters.h"\r
+\r
+\r
 int phy_detected = 0;\r
 \r
 /*** IMPORTANT: Define PEEP in xemacpsif.h and sys_arch_raw.c\r
@@ -99,6 +98,8 @@ int phy_detected = 0;
 \r
 #define IEEE_CONTROL_REG_OFFSET                                0\r
 #define IEEE_STATUS_REG_OFFSET                         1\r
+#define IEEE_PHYSID1_OFFSET                                    2\r
+#define IEEE_PHYSID2_OFFSET                                    3\r
 #define IEEE_AUTONEGO_ADVERTISE_REG                    4\r
 #define IEEE_PARTNER_ABILITIES_1_REG_OFFSET    5\r
 #define IEEE_1000_ADVERTISE_REG_OFFSET         9\r
@@ -135,9 +136,6 @@ int phy_detected = 0;
 #define IEEE_PAUSE_MASK                                                0x0400\r
 #define IEEE_AUTONEG_ERROR_MASK                                0x8000\r
 \r
-#define PHY_DETECT_REG  1\r
-#define PHY_DETECT_MASK 0x1808\r
-\r
 #define XEMACPS_GMII2RGMII_SPEED1000_FD                0x140\r
 #define XEMACPS_GMII2RGMII_SPEED100_FD         0x2100\r
 #define XEMACPS_GMII2RGMII_SPEED10_FD          0x100\r
@@ -163,19 +161,17 @@ int phy_detected = 0;
 \r
 static int detect_phy(XEmacPs *xemacpsp)\r
 {\r
-       u16 phy_reg;\r
-       u32 phy_addr;\r
-\r
-       for (phy_addr = 31; phy_addr > 0; phy_addr--) {\r
-               XEmacPs_PhyRead(xemacpsp, phy_addr, PHY_DETECT_REG,\r
-                                                       &phy_reg);\r
-\r
-               if ((phy_reg != 0xFFFF) &&\r
-                       ((phy_reg & PHY_DETECT_MASK) == PHY_DETECT_MASK)) {\r
-                       /* Found a valid PHY address */\r
-                       FreeRTOS_printf( ("XEmacPs detect_phy: PHY detected at address %d.\r\n",\r
-                                                                                                                                       phy_addr));\r
-                       FreeRTOS_printf( ("XEmacPs detect_phy: PHY detected.\n" ) );\r
+       u16 id_lower, id_upper;\r
+       u32 phy_addr, id;\r
+\r
+       for (phy_addr = 0; phy_addr < 32; phy_addr++) {\r
+               XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_PHYSID1_OFFSET, &id_lower);\r
+\r
+               if ((id_lower != ( u16 )0xFFFFu) && (id_lower != ( u16 )0x0u)) {\r
+\r
+                       XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_PHYSID2_OFFSET, &id_upper);\r
+                       id = ( ( ( uint32_t ) id_upper ) << 16 ) | ( id_lower & 0xFFF0 );\r
+                       FreeRTOS_printf( ("XEmacPs detect_phy: %04lX at address %d.\n", id, phy_addr ) );\r
                        phy_detected = phy_addr;\r
                        return phy_addr;\r
                }\r
@@ -238,7 +234,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
                if (partner_capabilities & IEEE_AN1_ABILITY_MASK_10MBPS)\r
                        return 10;\r
 \r
-               xil_printf("%s: unknown PHY link speed, setting TEMAC speed to be 10 Mbps\r\n",\r
+               xil_printf("%s: unknown PHY link speed, setting TEMAC speed to be 10 Mbps\n",\r
                                __FUNCTION__);\r
                return 10;\r
 \r
@@ -257,7 +253,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
                                case (IEEE_CTRL_LINKSPEED_10M):\r
                                        return 10;\r
                                default:\r
-                                       xil_printf("%s: unknown PHY link speed (%d), setting TEMAC speed to be 10 Mbps\r\n",\r
+                                       xil_printf("%s: unknown PHY link speed (%d), setting TEMAC speed to be 10 Mbps\n",\r
                                                        __FUNCTION__, phylinkspeed);\r
                                        return 10;\r
                        }\r
@@ -282,7 +278,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
 #else\r
        u32 phy_addr = detect_phy(xemacpsp);\r
 #endif\r
-       xil_printf("Start PHY autonegotiation \r\n");\r
+       xil_printf("Start PHY autonegotiation \n");\r
 \r
 #if XPAR_GIGE_PCS_PMA_CORE_PRESENT == 1\r
 #else\r
@@ -338,7 +334,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
                        break;\r
        }\r
 #endif\r
-       xil_printf("Waiting for PHY to complete autonegotiation.\r\n");\r
+       xil_printf("Waiting for PHY to complete autonegotiation.\n");\r
 \r
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_STATUS_REG_OFFSET, &status);\r
        while ( !(status & IEEE_STAT_AUTONEGOTIATE_COMPLETE) ) {\r
@@ -348,14 +344,14 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
                XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_COPPER_SPECIFIC_STATUS_REG_2,\r
                                                                                                                                        &temp);\r
                if (temp & IEEE_AUTONEG_ERROR_MASK) {\r
-                       xil_printf("Auto negotiation error \r\n");\r
+                       xil_printf("Auto negotiation error \n");\r
                }\r
 #endif\r
                XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_STATUS_REG_OFFSET,\r
                                                                                                                                &status);\r
                }\r
 \r
-       xil_printf("autonegotiation complete \r\n");\r
+       xil_printf("autonegotiation complete \n");\r
 \r
 #if XPAR_GIGE_PCS_PMA_CORE_PRESENT == 1\r
 #else\r
@@ -363,7 +359,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
 #endif\r
 \r
 #if XPAR_GIGE_PCS_PMA_CORE_PRESENT == 1\r
-       xil_printf("Waiting for Link to be up; Polling for SGMII core Reg \r\n");\r
+       xil_printf("Waiting for Link to be up; Polling for SGMII core Reg \n");\r
        XEmacPs_PhyRead(xemacpsp, phy_addr, 5, &temp);\r
        while(!(temp & 0x8000)) {\r
                XEmacPs_PhyRead(xemacpsp, phy_addr, 5, &temp);\r
@@ -380,7 +376,7 @@ unsigned get_IEEE_phy_speed(XEmacPs *xemacpsp)
                XEmacPs_PhyRead(xemacpsp, phy_addr, 0, &temp);\r
                return 10;\r
        } else {\r
-               xil_printf("get_IEEE_phy_speed(): Invalid speed bit value, Deafulting to Speed = 10 Mbps\r\n");\r
+               xil_printf("get_IEEE_phy_speed(): Invalid speed bit value, Deafulting to Speed = 10 Mbps\n");\r
                XEmacPs_PhyRead(xemacpsp, phy_addr, 0, &temp);\r
                XEmacPs_PhyWrite(xemacpsp, phy_addr, 0, 0x0100);\r
                return 10;\r
@@ -579,7 +575,7 @@ unsigned Phy_Setup (XEmacPs *xemacpsp)
                XEMACPS_GMII2RGMII_REG_NUM, convspeeddupsetting);\r
        }\r
 \r
-       xil_printf("link speed: %d\r\n", link_speed);\r
+       xil_printf("link speed: %d\n", link_speed);\r
        return link_speed;\r
 }\r
 \r