diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc index ab5a9e947..be4b7d5e5 100644 --- a/ARM.CMSIS.pdsc +++ b/ARM.CMSIS.pdsc @@ -16,6 +16,8 @@ Active development ... + - CMSIS-Driver: 2.12.0 + - Added Gigabit Ethernet support to the Ethernet driver API CMSIS-Core(M): 5.6.0 @@ -493,7 +495,7 @@ - + Ethernet MAC (Media Access Control) and PHY (Physical layer) Driver API @@ -501,14 +503,14 @@ - + Ethernet MAC (Media Access Control) Driver API - + Ethernet PHY (Physical layer) Driver API @@ -780,20 +782,20 @@ - + Access to #include Driver_ETH_PHY/MAC.h files and code templates for custom implementation - + Access to #include Driver_ETH_MAC.h file and code template for custom implementation - + Access to #include Driver_ETH_PHY.h file and code template for custom implementation diff --git a/CMSIS/Documentation/Doxygen/Driver/Driver.dxy.in b/CMSIS/Documentation/Doxygen/Driver/Driver.dxy.in index 503833e50..b1329381a 100644 --- a/CMSIS/Documentation/Doxygen/Driver/Driver.dxy.in +++ b/CMSIS/Documentation/Doxygen/Driver/Driver.dxy.in @@ -47,7 +47,7 @@ PROJECT_NAME = "CMSIS-Driver" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "Version 2.11.0" +PROJECT_NUMBER = "Version 2.12.0" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH.c b/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH.c index 2714a3011..d32f39f9b 100644 --- a/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH.c +++ b/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH.c @@ -220,5 +220,11 @@ The function \ref ARM_ETH_MAC_GetCapabilities retrieves the media interface type \sa ARM_ETH_PHY_SetInterface \def ARM_ETH_INTERFACE_SMII \sa ARM_ETH_PHY_SetInterface +\def ARM_ETH_INTERFACE_GMII +\sa ARM_ETH_PHY_SetInterface +\def ARM_ETH_INTERFACE_RGMII +\sa ARM_ETH_PHY_SetInterface +\def ARM_ETH_INTERFACE_SGMII +\sa ARM_ETH_PHY_SetInterface @} */ diff --git a/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH_PHY.c b/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH_PHY.c index 38f398b23..7298cb835 100644 --- a/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH_PHY.c +++ b/CMSIS/Documentation/Doxygen/Driver/src/Driver_ETH_PHY.c @@ -160,7 +160,10 @@ Parameter \em interface | Media Type :-----------------------------|:------------------------- \ref ARM_ETH_INTERFACE_MII | Media Independent Interface (MII) \ref ARM_ETH_INTERFACE_RMII | Reduced Media Independent Interface (RMII) -\ref ARM_ETH_INTERFACE_SMII | Serial Media Independent Interface (SMII); +\ref ARM_ETH_INTERFACE_SMII | Serial Media Independent Interface (SMII) +\ref ARM_ETH_INTERFACE_GMII | Gigabit Media Independent Interface (GMII) +\ref ARM_ETH_INTERFACE_RGMII | Reduced Gigabit Media Independent Interface (RGMII) +\ref ARM_ETH_INTERFACE_SGMII | Serial Gigabit Media Independent Interface (SGMII) \note Some \em interface values may be unsupported by a driver implementation. For example \ref ARM_ETH_INTERFACE_SMII may return \b ARM_DRIVER_ERROR_UNSUPPORTED. diff --git a/CMSIS/Documentation/Doxygen/Driver/src/history.md b/CMSIS/Documentation/Doxygen/Driver/src/history.md index b43b97b72..a34921608 100644 --- a/CMSIS/Documentation/Doxygen/Driver/src/history.md +++ b/CMSIS/Documentation/Doxygen/Driver/src/history.md @@ -9,6 +9,12 @@ The table below provides information about the changes delivered with specific v Version Description + + 2.12.0 + + - Added Gigabit Ethernet support to the Ethernet driver API + + 2.11.0 diff --git a/CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c b/CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c index 2817b8cb1..ca5aec4fc 100644 --- a/CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c +++ b/CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2020 Arm Limited. All rights reserved. + * Copyright (c) 2013-2026 Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -18,7 +18,7 @@ #include "Driver_ETH_MAC.h" -#define ARM_ETH_MAC_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1, 0) /* driver version */ +#define ARM_ETH_MAC_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1, 1) /* driver version */ /* Driver Version */ static const ARM_DRIVER_VERSION DriverVersion = { @@ -127,7 +127,9 @@ static int32_t ARM_ETH_MAC_Control(uint32_t control, uint32_t arg) { case ARM_ETH_MAC_SPEED_10M: break; - case ARM_ETH_SPEED_100M: + case ARM_ETH_MAC_SPEED_100M: + break; + case ARM_ETH_MAC_SPEED_1G: break; default: return ARM_DRIVER_ERROR_UNSUPPORTED; @@ -137,19 +139,27 @@ static int32_t ARM_ETH_MAC_Control(uint32_t control, uint32_t arg) { case ARM_ETH_MAC_DUPLEX_FULL: break; + case ARM_ETH_MAC_DUPLEX_HALF: + break; + default: + return ARM_DRIVER_ERROR_UNSUPPORTED; } if (arg & ARM_ETH_MAC_LOOPBACK) { } - if ((arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_RX) || - (arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_TX)) + if (arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_RX) { return ARM_DRIVER_ERROR_UNSUPPORTED; } - if (!(arg & ARM_ETH_MAC_ADDRESS_BROADCAST)) + if (arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_TX) + { + return ARM_DRIVER_ERROR_UNSUPPORTED; + } + + if (arg & ARM_ETH_MAC_ADDRESS_BROADCAST) { } @@ -187,6 +197,7 @@ static int32_t ARM_ETH_MAC_Control(uint32_t control, uint32_t arg) default: return ARM_DRIVER_ERROR_UNSUPPORTED; } + return ARM_DRIVER_OK; } static int32_t ARM_ETH_MAC_ControlTimer(uint32_t control, ARM_ETH_MAC_TIME *time) diff --git a/CMSIS/Driver/DriverTemplates/Driver_ETH_PHY.c b/CMSIS/Driver/DriverTemplates/Driver_ETH_PHY.c index e496a28ae..051dbed7b 100644 --- a/CMSIS/Driver/DriverTemplates/Driver_ETH_PHY.c +++ b/CMSIS/Driver/DriverTemplates/Driver_ETH_PHY.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2020 Arm Limited. All rights reserved. + * Copyright (c) 2013-2026 Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -18,7 +18,7 @@ #include "Driver_ETH_PHY.h" -#define ARM_ETH_PHY_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1, 0) /* driver version */ +#define ARM_ETH_PHY_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1, 1) /* driver version */ /* Driver Version */ static const ARM_DRIVER_VERSION DriverVersion = { @@ -67,9 +67,18 @@ static int32_t ARM_ETH_PHY_SetInterface(uint32_t interface) break; case ARM_ETH_INTERFACE_RMII: break; + case ARM_ETH_INTERFACE_SMII: + break; + case ARM_ETH_INTERFACE_GMII: + break; + case ARM_ETH_INTERFACE_RGMII: + break; + case ARM_ETH_INTERFACE_SGMII: + break; default: return ARM_DRIVER_ERROR_UNSUPPORTED; } + return ARM_DRIVER_OK; } static int32_t ARM_ETH_PHY_SetMode(uint32_t mode) @@ -80,6 +89,8 @@ static int32_t ARM_ETH_PHY_SetMode(uint32_t mode) break; case ARM_ETH_PHY_SPEED_100M: break; + case ARM_ETH_PHY_SPEED_1G: + break; default: return ARM_DRIVER_ERROR_UNSUPPORTED; } @@ -90,6 +101,8 @@ static int32_t ARM_ETH_PHY_SetMode(uint32_t mode) break; case ARM_ETH_PHY_DUPLEX_FULL: break; + default: + return ARM_DRIVER_ERROR_UNSUPPORTED; } if (mode & ARM_ETH_PHY_AUTO_NEGOTIATE) @@ -103,6 +116,7 @@ static int32_t ARM_ETH_PHY_SetMode(uint32_t mode) if (mode & ARM_ETH_PHY_ISOLATE) { } + return ARM_DRIVER_OK; } static ARM_ETH_LINK_STATE ARM_ETH_PHY_GetLinkState(void) diff --git a/CMSIS/Driver/Include/Driver_ETH.h b/CMSIS/Driver/Include/Driver_ETH.h index d7bfaf4cb..562dbf825 100644 --- a/CMSIS/Driver/Include/Driver_ETH.h +++ b/CMSIS/Driver/Include/Driver_ETH.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2020 ARM Limited. All rights reserved. + * Copyright (c) 2013-2026 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -15,13 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * $Date: 24. January 2020 - * $Revision: V2.2 + * $Date: 9. September 2026 + * $Revision: V2.3 * * Project: Ethernet PHY and MAC Driver common definitions */ /* History: + * Version 2.3 + * Added Gigabit Ethernet support * Version 2.2 * Removed volatile from ARM_ETH_LINK_INFO * Version 2.1 @@ -46,13 +48,16 @@ #define ARM_ETH_INTERFACE_MII (0U) ///< Media Independent Interface (MII) #define ARM_ETH_INTERFACE_RMII (1U) ///< Reduced Media Independent Interface (RMII) #define ARM_ETH_INTERFACE_SMII (2U) ///< Serial Media Independent Interface (SMII) +#define ARM_ETH_INTERFACE_GMII (3U) ///< Gigabit Media Independent Interface (GMII) +#define ARM_ETH_INTERFACE_RGMII (4U) ///< Reduced Gigabit Media Independent Interface (RGMII) +#define ARM_ETH_INTERFACE_SGMII (5U) ///< Serial Gigabit Media Independent Interface (SGMII) /** \brief Ethernet link speed */ #define ARM_ETH_SPEED_10M (0U) ///< 10 Mbps link speed #define ARM_ETH_SPEED_100M (1U) ///< 100 Mbps link speed -#define ARM_ETH_SPEED_1G (2U) ///< 1 Gpbs link speed +#define ARM_ETH_SPEED_1G (2U) ///< 1 Gbps link speed /** \brief Ethernet duplex mode diff --git a/CMSIS/Driver/Include/Driver_ETH_MAC.h b/CMSIS/Driver/Include/Driver_ETH_MAC.h index 60f672c3c..deed17835 100644 --- a/CMSIS/Driver/Include/Driver_ETH_MAC.h +++ b/CMSIS/Driver/Include/Driver_ETH_MAC.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2020 ARM Limited. All rights reserved. + * Copyright (c) 2013-2026 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -15,13 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * $Date: 24. January 2020 - * $Revision: V2.2 + * $Date: 9. September 2026 + * $Revision: V2.3 * * Project: Ethernet MAC (Media Access Control) Driver definitions */ /* History: + * Version 2.3 + * Added Gigabit Ethernet support * Version 2.2 * Removed volatile from ARM_ETH_LINK_INFO * Version 2.1 @@ -61,7 +63,7 @@ extern "C" #include "Driver_ETH.h" -#define ARM_ETH_MAC_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,2) /* API version */ +#define ARM_ETH_MAC_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,3) /* API version */ #define _ARM_Driver_ETH_MAC_(n) Driver_ETH_MAC##n @@ -269,13 +271,13 @@ typedef struct _ARM_ETH_MAC_CAPABILITIES { uint32_t checksum_offload_tx_udp : 1; ///< 1 = UDP payload checksum generated on transmit uint32_t checksum_offload_tx_tcp : 1; ///< 1 = TCP payload checksum generated on transmit uint32_t checksum_offload_tx_icmp : 1; ///< 1 = ICMP payload checksum generated on transmit - uint32_t media_interface : 2; ///< Ethernet Media Interface type + uint32_t media_interface : 4; ///< Ethernet Media Interface type uint32_t mac_address : 1; ///< 1 = driver provides initial valid MAC address uint32_t event_rx_frame : 1; ///< 1 = callback event \ref ARM_ETH_MAC_EVENT_RX_FRAME generated uint32_t event_tx_frame : 1; ///< 1 = callback event \ref ARM_ETH_MAC_EVENT_TX_FRAME generated uint32_t event_wakeup : 1; ///< 1 = wakeup event \ref ARM_ETH_MAC_EVENT_WAKEUP generated uint32_t precision_timer : 1; ///< 1 = Precision Timer supported - uint32_t reserved : 15; ///< Reserved (must be zero) + uint32_t reserved : 13; ///< Reserved (must be zero) } ARM_ETH_MAC_CAPABILITIES; diff --git a/CMSIS/Driver/Include/Driver_ETH_PHY.h b/CMSIS/Driver/Include/Driver_ETH_PHY.h index cb7c0f566..a2b78ff53 100644 --- a/CMSIS/Driver/Include/Driver_ETH_PHY.h +++ b/CMSIS/Driver/Include/Driver_ETH_PHY.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2020 ARM Limited. All rights reserved. + * Copyright (c) 2013-2026 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -15,13 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * $Date: 24. January 2020 - * $Revision: V2.2 + * $Date: 9. September 2026 + * $Revision: V2.3 * * Project: Ethernet PHY (Physical Transceiver) Driver definitions */ /* History: + * Version 2.3 + * Added Gigabit Ethernet support * Version 2.2 * Removed volatile from ARM_ETH_LINK_INFO * Version 2.1 @@ -46,7 +48,7 @@ extern "C" #include "Driver_ETH.h" -#define ARM_ETH_PHY_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,2) /* API version */ +#define ARM_ETH_PHY_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,3) /* API version */ #define _ARM_Driver_ETH_PHY_(n) Driver_ETH_PHY##n