1# STM32 HAL Ethernet driver configuration options
2
3# Copyright (c) 2017 Erwin Rol <erwin@erwinrol.com>
4# Copyright (c) 2020 Alexander Kozhinov <AlexanderKozhinov@yandex.com>
5# SPDX-License-Identifier: Apache-2.0
6
7menuconfig ETH_STM32_HAL
8	bool "STM32 HAL Ethernet driver"
9	default y
10	depends on DT_HAS_ST_STM32_ETHERNET_ENABLED
11	select USE_STM32_HAL_ETH
12	select NOCACHE_MEMORY if SOC_SERIES_STM32H7X && CPU_CORTEX_M7
13	select HWINFO
14	imply CRC
15	help
16	  Enable STM32 HAL based Ethernet driver. It is available for
17	  all Ethernet enabled variants of the F2, F4, F7 and H7 series.
18
19if ETH_STM32_HAL
20
21choice ETH_STM32_HAL_API_VERSION
22	prompt "STM32Cube HAL Ethernet version"
23
24config ETH_STM32_HAL_API_V2
25	bool "Use new HAL driver"
26	depends on SOC_SERIES_STM32H7X || SOC_SERIES_STM32H5X || SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X
27	help
28	  Use the new HAL driver instead of the legacy one.
29
30config ETH_STM32_HAL_API_V1
31	bool "Use new HAL driver"
32	depends on !SOC_SERIES_STM32H5X
33	select DEPRECATED if SOC_SERIES_STM32H7X || SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X
34	help
35	  Driver version based on legacy HAL version. Deprecated unless using STM32F2 series.
36
37endchoice
38
39config ETH_STM32_HAL_RX_THREAD_STACK_SIZE
40	int "RX thread stack size"
41	default 1500
42	help
43	  RX thread stack size
44
45config ETH_STM32_HAL_RX_THREAD_PRIO
46	int "RX thread priority"
47	default 2
48	help
49	  RX thread priority
50
51config ETH_STM32_HAL_USE_DTCM_FOR_DMA_BUFFER
52	bool "Use DTCM for DMA buffers"
53	default y
54	depends on SOC_SERIES_STM32F7X
55	help
56	  When this option is activated, the buffers for DMA transfer are
57	  moved from SRAM to the DTCM (Data Tightly Coupled Memory).
58
59config ETH_STM32_HAL_PHY_ADDRESS
60	int "Phy address"
61	default 0
62	help
63	  The phy address to use.
64
65choice
66	prompt "Mac address definition method"
67	optional
68	help
69	  The driver supports 2 methods to define 3 last bytes of MAC address
70	  1. Statically defined by user
71	  2. Generated dynamically at each boot
72
73	  Note: Configuring this methods using Kconfig is now deprecated in favor
74	  of device tree based configuration.
75
76config ETH_STM32_HAL_RANDOM_MAC
77	bool "Random MAC address (DEPRECATED)"
78	depends on ENTROPY_GENERATOR
79	select DEPRECATED
80	help
81	  Generate a random MAC address dynamically.
82	  Deprecated in favor of device tree property "zephyr,random-mac-address"
83
84config ETH_STM32_HAL_USER_STATIC_MAC
85	bool "User defined MAC address (DEPRECATED)"
86	select DEPRECATED
87	help
88	  3 last bytes of MAC address are defined by user thanks to
89	  ETH_STM32_HAL_MAC3, ETH_STM32_HAL_MAC4 and ETH_STM32_HAL_MAC5.
90	  Deprecated in favor of device tree property "local-mac-address"
91
92endchoice
93
94if ETH_STM32_HAL_USER_STATIC_MAC
95
96config ETH_STM32_HAL_MAC3
97	hex "MAC Address Byte 3 (DEPRECATED)"
98	default 0
99	range 0 0xff
100	help
101	  This is the byte 3 of the MAC address.
102
103config ETH_STM32_HAL_MAC4
104	hex "MAC Address Byte 4 (DEPRECATED)"
105	default 0
106	range 0 0xff
107	help
108	  This is the byte 4 of the MAC address.
109
110config ETH_STM32_HAL_MAC5
111	hex "MAC Address Byte 5 (DEPRECATED)"
112	default 0
113	range 0 0xff
114	help
115	  This is the byte 5 of the MAC address.
116
117endif # ETH_STM32_HAL_USER_STATIC_MAC
118
119config ETH_STM32_HAL_MII
120	bool "Use MII interface"
121	help
122	  Use the MII physical interface instead of RMII.
123
124config ETH_STM32_CARRIER_CHECK_RX_IDLE_TIMEOUT_MS
125	int "Carrier check timeout period (ms)"
126	default 500
127	range 100 30000
128	help
129	  Set the RX idle timeout period in milliseconds after which the
130	  PHY's carrier status is re-evaluated.
131
132config ETH_STM32_AUTO_NEGOTIATION_ENABLE
133	bool "Autonegotiation mode"
134	default y
135	help
136	  Enable this if using autonegotiation
137
138config ETH_STM32_HW_CHECKSUM
139	bool "Use TX and RX hardware checksum"
140	depends on !SOC_SERIES_STM32H5X
141	help
142	  Enable receive and transmit checksum offload to enhance throughput
143	  performances.
144	  See reference manual for more information on this feature.
145
146if !ETH_STM32_AUTO_NEGOTIATION_ENABLE
147
148config ETH_STM32_SPEED_10M
149	bool "Set speed to 10 Mbps when autonegotiation is disabled"
150	help
151	  Set this if using 10 Mbps and when autonegotiation is disabled, otherwise speed
152	  is 100 Mbps
153
154config ETH_STM32_MODE_HALFDUPLEX
155	bool "Half duplex mode"
156	help
157	  Set this if using half duplex when autonegotiation is disabled otherwise
158	  duplex mode is full duplex
159
160endif # !ETH_STM32_AUTO_NEGOTIATION_ENABLE
161
162if SOC_SERIES_STM32F7X || SOC_SERIES_STM32H7X || SOC_SERIES_STM32H5X
163
164config PTP_CLOCK_STM32_HAL
165	bool "STM32 HAL PTP clock driver support"
166	default y
167	depends on PTP_CLOCK || NET_L2_PTP
168	help
169	  Enable STM32 PTP clock support.
170
171config ETH_STM32_HAL_PTP_CLOCK_SRC_HZ
172	int "Frequency of the clock source for the PTP timer"
173	default 50000000
174	depends on PTP_CLOCK_STM32_HAL
175	help
176	  Set the frequency in Hz sourced to the PTP timer.
177	  If the value is set properly, the timer will be accurate.
178
179config ETH_STM32_HAL_PTP_CLOCK_ADJ_MIN_PCT
180	int "Lower bound of clock frequency adjustment (in percent)"
181	default 90
182	depends on PTP_CLOCK_STM32_HAL
183	help
184	  Specifies lower bound of PTP clock rate adjustment.
185
186config ETH_STM32_HAL_PTP_CLOCK_ADJ_MAX_PCT
187	int "Upper bound of clock frequency adjustment (in percent)"
188	default 110
189	depends on PTP_CLOCK_STM32_HAL
190	help
191	  Specifies upper bound of PTP clock rate adjustment.
192
193config ETH_STM32_HAL_PTP_CLOCK_INIT_PRIO
194	int
195	default 85
196	depends on PTP_CLOCK_STM32_HAL
197	help
198	  STM32 PTP Clock initialization priority level. There is
199	  a dependency from the network stack that this device
200	  initializes before network stack (NET_INIT_PRIO).
201
202endif # SOC_SERIES_STM32F7X || SOC_SERIES_STM32H7X || SOC_SERIES_STM32H5X
203
204config ETH_STM32_MULTICAST_FILTER
205	bool "Multicast hash filter support"
206	help
207	  Enable support for multicast hash filtering in the MAC.
208	  Once enabled the ethernet MAC performs imperfect filtering
209	  based on a computed hash of the destination MAC address of
210	  the multicast address. Only multicast with the computed
211	  hash set in the multicast table will be received and all
212	  other multicast is dropped by the MAC. If disabled then all
213	  multicast is received by the MAC.
214
215endif # ETH_STM32_HAL
216