1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00

Merge pull request #17739 from leandrolanzieri/drivers/model_kconfig_eth

drivers: model kconfig for Ethernet drivers
This commit is contained in:
Kevin "Tristate Tom" Weiss 2022-07-25 14:21:42 +02:00 committed by GitHub
commit aa268f0a0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 417 additions and 5 deletions

View File

@ -20,4 +20,6 @@ config BOARD_ESP32_ETHERNET_KIT_V1_0
select HAS_PERIPH_PWM
select HAS_PERIPH_SPI if !MODULE_ESP_JTAG
select HAVE_ESP_ETH
source "$(RIOTBOARD)/common/esp32/Kconfig"

View File

@ -21,4 +21,6 @@ config BOARD_ESP32_OLIMEX_EVB
select HAS_PERIPH_CAN
select HAS_PERIPH_IR
select HAVE_ESP_ETH
source "$(RIOTBOARD)/common/esp32/Kconfig"

View File

@ -27,5 +27,6 @@ config BOARD_NUCLEO_F207ZG
# Put other features for this board (in alphabetical order)
select HAS_RIOTBOOT
select HAVE_STM32_ETH
source "$(RIOTBOARD)/common/nucleo144/Kconfig"

View File

@ -28,5 +28,6 @@ config BOARD_NUCLEO_F746ZG
# Put other features for this board (in alphabetical order)
select HAS_RIOTBOOT
select HAVE_STM32_ETH
source "$(RIOTBOARD)/common/nucleo144/Kconfig"

View File

@ -33,5 +33,6 @@ config BOARD_NUCLEO_F767ZI
# Put other features for this board (in alphabetical order)
select HAS_RIOTBOOT
select HAVE_STM32_ETH
source "$(RIOTBOARD)/common/nucleo144/Kconfig"

View File

@ -27,6 +27,8 @@ config BOARD_SAME54_XPRO
select HAVE_SAUL_GPIO
select HAVE_MTD_SPI_NOR
select HAVE_AT24MAC
select HAVE_SAM0_ETH
select HAVE_SAM0_SDHC
# This specific board requires SPI_ON_QSPI for the MTD_SPI_NOR
select MODULE_PERIPH_SPI_ON_QSPI if MODULE_MTD_SPI_NOR

View File

@ -29,6 +29,7 @@ config BOARD_STM32F746G_DISCO
select BOARD_HAS_LSE
select HAVE_SAUL_GPIO
select HAVE_STM32_ETH
select HAVE_FT5X06
source "$(RIOTBOARD)/common/stm32/Kconfig"

View File

@ -24,6 +24,7 @@ ifneq (,$(filter esp_eth,$(USEMODULE)))
USEMODULE += esp_idf_spi_flash
USEMODULE += netdev_eth
USEMODULE += netopt
FEATURES_REQUIRED += periph_eth
USEMODULE += ztimer_msec
endif

25
cpu/esp32/esp-eth/Kconfig Normal file
View File

@ -0,0 +1,25 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ESP_ETH
bool "ESP32 Ethernet device"
depends on TEST_KCONFIG
depends on CPU_FAM_ESP32
depends on HAS_PERIPH_ETH
select MODULE_ESP_FREERTOS
select MODULE_ESP_IDF_ETH
select MODULE_ESP_IDF_ETH_PHY
select MODULE_NETDEV_ETH
select MODULE_NETOPT
select MODULE_ZTIMER
select MODULE_ZTIMER_MSEC
config HAVE_ESP_ETH
bool
select MODULE_ESP_ETH if MODULE_NETDEV_DEFAULT
help
Indicates that a ESP32 ethernet device is present.

View File

@ -25,6 +25,7 @@ config CPU_ARCH_NATIVE
# needed modules
select MODULE_PERIPH if TEST_KCONFIG
select MODULE_NATIVE_CLI_EUI_PROVIDER if MODULE_EUI_PROVIDER
config CPU_CORE_NATIVE
bool
@ -87,6 +88,7 @@ menu "Native modules"
depends on CPU_ARCH_NATIVE
rsource "backtrace/Kconfig"
rsource "cli_eui_provider/Kconfig"
endmenu # Native modules

View File

@ -0,0 +1,12 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_NATIVE_CLI_EUI_PROVIDER
bool "Command-line EUI provider"
depends on TEST_KCONFIG
depends on CPU_ARCH_NATIVE
select MODULE_L2UTIL

View File

@ -0,0 +1,22 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_SAM0_ETH
bool "SAM0 Ethernet GMAC peripheral"
depends on TEST_KCONFIG
depends on CPU_COMMON_SAM0
depends on HAS_PERIPH_ETH
select MODULE_NETDEV_ETH
select MODULE_NETOPT
select MODULE_IOLIST
select MODULE_PERIPH_ETH
config HAVE_SAM0_ETH
bool
select MODULE_SAM0_ETH if MODULE_NETDEV_DEFAULT
help
Indicates that a SAM0 ethernet peripheral is present.

View File

@ -0,0 +1,51 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig MODULE_STM32_ETH
bool
prompt "STM32 ethernet peripheral" if !(HAVE_STM32_ETH && MODULE_NETDEV_DEFAULT)
default (HAVE_STM32_ETH && MODULE_NETDEV_DEFAULT)
depends on TEST_KCONFIG
depends on CPU_STM32
depends on HAS_PERIPH_ETH
select MODULE_PERIPH_ETH
select MODULE_NETDEV_ETH
select MODULE_IOLIST
select MODULE_ZTIMER
select MODULE_ZTIMER_MSEC
if MODULE_STM32_ETH
config MODULE_STM32_ETH_AUTO
bool "Link auto-negotiation"
select MODULE_STM32_ETH_LINK_UP
help
Say y to enable link auto-negotiation. In general, it is highly
recommended to use auto-negotiation, as this can avoid various
communication issues on the PHY layer due to configuration mismatch of
the link partners. Note that this feature depends on the link state
events feature.
config MODULE_STM32_ETH_LINK_UP
bool "Link state events"
help
Say y to enable link events.
endif # MODULE_STM32_ETH
config MODULE_PERIPH_ETH
bool
depends on HAS_PERIPH_ETH
select MODULE_PERIPH_ETH_COMMON
config MODULE_PERIPH_ETH_COMMON
bool
config HAVE_STM32_ETH
bool
help
Indicates that a stm32 ethernet peripheral is present.

View File

@ -6,7 +6,6 @@
menu "Drivers"
rsource "netdev/Kconfig"
rsource "saul/Kconfig"
menu "Actuator Device Drivers"

View File

@ -5,22 +5,32 @@
# directory for more details.
menu "Network Device Drivers"
rsource "netdev/Kconfig"
rsource "at86rf215/Kconfig"
rsource "ata8520e/Kconfig"
rsource "can_trx/Kconfig"
rsource "cc110x/Kconfig"
rsource "$(RIOTCPU)/cc2538/radio/Kconfig"
rsource "$(RIOTCPU)/esp32/esp-eth/Kconfig"
rsource "$(RIOTCPU)/nrf5x_common/radio/Kconfig.nrf5x"
rsource "dose/Kconfig"
rsource "enc28j60/Kconfig"
rsource "encx24j600/Kconfig"
rsource "ethos/Kconfig"
rsource "mcp2515/Kconfig"
rsource "mrf24j40/Kconfig"
rsource "ncv7356/Kconfig"
rsource "pn532/Kconfig"
rsource "rn2xx3/Kconfig"
rsource "$(RIOTCPU)/sam0_common/sam0_eth/Kconfig"
rsource "slipdev/Kconfig"
rsource "$(RIOTCPU)/native/socket_zep/Kconfig"
rsource "$(RIOTCPU)/stm32/periph/Kconfig.eth"
rsource "sx126x/Kconfig"
rsource "sx127x/Kconfig"
rsource "sx1280/Kconfig"
rsource "tja1042/Kconfig"
rsource "w5100/Kconfig"
endmenu # Network Device Drivers

View File

@ -21,3 +21,45 @@ config DOSE_TIMEOUT_BYTES
the remote side died within a transaction.
endif # KCONFIG_USEMODULE_DOSE
menuconfig MODULE_DOSE
bool "Differentially Operated Serial Ethernet (DOSE)"
depends on TEST_KCONFIG
depends on HAS_PERIPH_GPIO
depends on HAS_PERIPH_GPIO_IRQ
depends on HAS_PERIPH_UART
select MODULE_PERIPH_GPIO
select MODULE_PERIPH_GPIO_IRQ
select MODULE_PERIPH_UART
select MODULE_PERIPH_UART_COLLISION if HAS_PERIPH_UART_COLLISION
select MODULE_PERIPH_UART_RXSTART_IRQ if HAS_PERIPH_UART_RXSTART_IRQ
select MODULE_CHUNKED_RINGBUFFER
select MODULE_EUI_PROVIDER
select MODULE_IOLIST
select MODULE_NETDEV_ETH
select MODULE_RANDOM
select MODULE_ZTIMER
select ZTIMER_USEC
help
Allows RIOT nodes to communicate by Ethernet over a serial bus.
if MODULE_DOSE
config MODULE_DOSE_WATCHDOG
bool "Use a watchdog timer"
depends on HAS_PERIPH_TIMER_PERIODIC
select MODULE_PERIPH_TIMER_PERIODIC
help
Say y to utilize a dedicated hardware timer (DOSE_TIMER_DEV which should
be configured in board.h) to periodically check if any interface does
not make progress receiving a frame and abort the RX process. This
speeds up the more critical RX path.
config DOSE_TIMEOUT_BYTES
int "Transaction timeout in bytes"
default 50
help
Timeout, in bytes at the set baudrate, to bring the driver back into idle state if
the remote side died within a transaction.
endif # MODULE_DOSE

25
drivers/enc28j60/Kconfig Normal file
View File

@ -0,0 +1,25 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ENC28J60
bool "ENC28J60 Ethernet Adapter"
depends on TEST_KCONFIG
depends on HAS_PERIPH_GPIO
depends on HAS_PERIPH_GPIO_IRQ
depends on HAS_PERIPH_SPI
select MODULE_PERIPH_GPIO
select MODULE_PERIPH_GPIO_IRQ
select MODULE_PERIPH_SPI
select MODULE_PERIPH_EUI_PROVIDER
select MODULE_NETDEV_ETH
select MODULE_XTIMER
config HAVE_ENC28J60
bool
select MODULE_ENC28J60 if MODULE_NETDEV_DEFAULT
help
Indicates that a ENC28J60 ethernet adapter is present.

View File

@ -0,0 +1,24 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ENCX24J600
bool "ENCX24J600 Ethernet Adapter"
depends on TEST_KCONFIG
depends on HAS_PERIPH_GPIO
depends on HAS_PERIPH_GPIO_IRQ
depends on HAS_PERIPH_SPI
select MODULE_PERIPH_GPIO
select MODULE_PERIPH_GPIO_IRQ
select MODULE_PERIPH_SPI
select MODULE_NETDEV_ETH
select MODULE_XTIMER
config HAVE_ENCX24J600
bool
select MODULE_ENCX24J600 if MODULE_NETDEV_DEFAULT
help
Indicates that a ENCX24J600 ethernet adapter is present.

21
drivers/ethos/Kconfig Normal file
View File

@ -0,0 +1,21 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ETHOS
bool "Ethernet-over-serial (ETHOS)"
depends on TEST_KCONFIG
depends on HAS_PERIPH_UART
select MODULE_PERIPH_UART
select MODULE_IOLIST
select MODULE_NETDEV_ETH
select MODULE_RANDOM
select MODULE_TSRB
config MODULE_ETHOS_STDIO
bool
select MODULE_ISRPIPE
depends on MODULE_ETHOS

View File

@ -1,13 +1,17 @@
# Copyright (c) 2022 Otto-von-Guericke-Universität Magdeburg
# 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
menu "Network Device Drivers"
if TEST_KCONFIG
config MODULE_NETDEV_DEFAULT
bool "Enable default network devices on the platform"
help
Say y to enable the drivers for the default network devices present on
your platform.
menu "IEEE 802.15.4 Device Drivers"
visible if MODULE_NETDEV_IEEE802154
@ -17,4 +21,24 @@ config MODULE_NETDEV_IEEE802154_RX_TIMESTAMP
endmenu # IEEE 802.15.4 Device Drivers
endmenu # Network Device Drivers
config MODULE_NETDEV
bool
select MODULE_EUI_PROVIDER
help
Network device driver API. Netdev is a generic low-level network
interface that provides a uniform API for network stacks to interact
with network device drivers.
config MODULE_NETDEV_ETH
bool
select MODULE_NETDEV
select MODULE_NETDEV_REGISTER
help
Common code for netdev ethernet drivers.
config MODULE_NETDEV_REGISTER
bool
help
Network device registration.
endif # TEST_KCONFIG

24
drivers/w5100/Kconfig Normal file
View File

@ -0,0 +1,24 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_W5100
bool "W5100 Ethernet Adapter"
depends on TEST_KCONFIG
depends on HAS_PERIPH_GPIO
depends on HAS_PERIPH_GPIO_IRQ
depends on HAS_PERIPH_SPI
select MODULE_PERIPH_GPIO
select MODULE_PERIPH_GPIO_IRQ
select MODULE_PERIPH_SPI
select MODULE_NETDEV_ETH
select MODULE_LUID
config HAVE_W5100
bool
select MODULE_W5100 if MODULE_NETDEV_DEFAULT
help
Indicates that a w5100 ethernet adapter is present.

View File

@ -13,8 +13,6 @@ choice STDIO_IMPLEMENTATION
default MODULE_STDIO_NATIVE if CPU_ARCH_NATIVE
default MODULE_STDIO_UART
# TODO: add MODULE_STDIO_ETHOS
config MODULE_STDIO_RTT
bool "JLink RTT"
select MODULE_ZTIMER
@ -40,6 +38,13 @@ config MODULE_STDIO_NATIVE
bool "Native"
depends on CPU_ARCH_NATIVE
config MODULE_STDIO_ETHOS
bool "ETHOS"
depends on MODULE_ETHOS
select MODULE_STDIN
select MODULE_ETHOS_STDIO
select USE_STDOUT_BUFFERED
endchoice
config MODULE_STDIN

View File

@ -9,6 +9,7 @@ menu "Networking"
rsource "application_layer/Kconfig"
rsource "ble/Kconfig"
rsource "credman/Kconfig"
rsource "crosslayer/Kconfig"
rsource "gnrc/Kconfig"
rsource "sock/Kconfig"
rsource "network_layer/Kconfig"

View File

@ -0,0 +1,8 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
rsource "netopt/Kconfig"

View File

@ -0,0 +1,12 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_NETOPT
bool
depends on TEST_KCONFIG
help
Functionalities to map netopt option numbers to strings.

View File

@ -10,6 +10,7 @@ menu "Test utilities"
rsource "dummy_thread/Kconfig"
rsource "interactive_sync/Kconfig"
rsource "netdev_eth_minimal/Kconfig"
rsource "print_stack_usage/Kconfig"
rsource "result_output/Kconfig"
endmenu # Test utilities

View File

@ -0,0 +1,16 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL
bool "Minimal netdev Ethernet device processing"
depends on TEST_KCONFIG
select MODULE_EVENT
select MODULE_EVENT_THREAD
select MODULE_L2UTIL
select MODULE_OD
select MODULE_OD_STRING
select MODULE_SHELL

11
tests/driver_dose/Kconfig Normal file
View File

@ -0,0 +1,11 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config APPLICATION
bool
default y
imply MODULE_DOSE_WATCHDOG if BOARD_SAMR21_XPRO || BOARD_SAME54_XPRO

View File

@ -19,4 +19,6 @@ endif
INCLUDES += -I$(APPDIR)
SHOULD_RUN_KCONFIG ?=
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,6 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_DOSE=y
# Should be autoselecting the MODULE_PRNG_HWRNG if possible
# Since the makefile cannot we have to override until end of migration
# Remove when TEST_KCONFIG is complete
CONFIG_MODULE_PRNG_MUSL_LCG=y

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_ENC28J60=y

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_ENCX24J600=y

View File

@ -0,0 +1,12 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config APPLICATION
bool
default y
depends on HAS_ARCH_ESP32
depends on HAS_PERIPH_ETH

View File

@ -11,4 +11,6 @@ FEATURES_REQUIRED += periph_eth
INCLUDES += -I$(APPDIR)
SHOULD_RUN_KCONFIG =?
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_ESP_ETH=y

View File

@ -0,0 +1,6 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_ETHOS=y
# Should be autoselecting the MODULE_PRNG_HWRNG if possible
# Since the makefile cannot we have to override until end of migration
# Remove when TEST_KCONFIG is complete
CONFIG_MODULE_PRNG_MUSL_LCG=y

View File

@ -0,0 +1,12 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config APPLICATION
bool
default y
depends on HAS_CPU_SAMD5X
depends on HAS_PERIPH_ETH # TODO: complete with other SAM0 CPUs that have ethernet

View File

@ -11,4 +11,6 @@ FEATURES_REQUIRED += cpu_samd5x # TODO: complete with other SAM0 CPUs that have
INCLUDES += -I$(APPDIR)
SHOULD_RUN_KCONFIG ?=
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_SAM0_ETH=y

View File

@ -0,0 +1,12 @@
# Copyright (c) 2022 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config APPLICATION
bool
default y
depends on HAS_CPU_STM32
depends on HAS_PERIPH_ETH

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_STM32_ETH=y

View File

@ -0,0 +1,2 @@
CONFIG_MODULE_TEST_UTILS_NETDEV_ETH_MINIMAL=y
CONFIG_MODULE_W5100=y