1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/kconfigs/Kconfig.features
bors[bot] 2a4496b32a
Merge #19539 #19815 #19860 #19886
19539: drivers/periph_sdmmc: define a High-level SDIO/SD/MMC API and low-level SDMMC periperal driver interface r=benpicco a=gschorcht

### Contribution description

This PR provides a SDIO/SD/MMC Device API (SDMMC). It implements a SD host controller driver that provides a high-level functions using a low-level SDIO/SD/MMC peripheral driver for accessing

- MultiMediaCards (MMC) and Embedded MultiMediaCards (eMMC)
- SD Memory Cards (SD Cards) with Standard Capacity (SDSC), High Capacity (SDHC) or Extended Capacity (SDXC).

It supports:

- 1-bit, 4-bit and 8-bit data bus width
- Default Speed and High Speed
- Auto-CLK

The SDIO/SD/MMC device API (SDMMC) is divided into two parts:

1. The high-level API that implements the SD Host Controller driver and allows
   - to inititialize and identify different types of cards,
   - to access them either blockwise or bytewise,
   - to get information about the used card, and
   - to send single commands or application specific commands to the card.

2. The low-level SDIO/SD/MMC peripheral driver implements the low-level functions required by the high-level device API. It has to be implemented for each MCU.

### Limitations:

- Only one card per SDIO/SD/MMC device is supported.
- eMMCs specific features are not supported.
- UHS-I, UHS-II and UHS-III are not supported.

### Testing procedure

PR #19540, PR #19760 or PR #19786 is needed to test this PR.

### Issues/PRs references

Prerequisite for PR #19540
Prerequisite for PR #19760
Prerequisite for PR #19786

19815: cpu/sam0_common/periph/sdhc: busy waiting and clock fixes r=benpicco a=benpicco



19860: drivers/ft5x06: fix vendor ID for FT6xx6 and FTxxxx register addresses r=benpicco a=gschorcht

### Contribution description

This PR provides a fix of the vendor ID for FT6xx6 touch panel driver ICs and a fix of register addresses for FTxxxx.

According to the [Application Note for FT6x06 CTPM](https://cdn-shop.adafruit.com/datasheets/FT6x06_AN_public_ver0.1.3.pdf), the vendor ID of FT6x06 touch panel driver ICs is `0x11` instead of `0xcd`. Although there are no information found in the Web about the FT6x36, the FT6336U touch panel of a ESP32-S3 WT32 SC01 Plus is also working with `0x11` as vendor ID so that it seems that FT6x36 is also using `0x11` as vendor ID.

Figured out with a `stm32f723e-disco` board (revision D03). Without this PR, `tests/drivers/ft5x06` gives:
```
+------------Initializing------------+
[ft5x06] init: invalid vendor ID: '0x11' (expected: 0xcd)
[Error] Initialization failed
```
With this PR it works as expected.
```
+------------Initializing------------+
Initialization successful
main(): This is RIOT! (Version: 2023.10-devel-96-gbb9011-drivers/ft5x06_fix_vendor_id)
FT5x06 test application

+------------Initializing------------+
[ft5x06] init: configuring touchscreen interrupt
Initialization successful
1 touch detected
[ft5x06] read gesture_id '0x00'
Touch 1 - X: 151, Y:138
[ft5x06] read gesture_id '0x00'
```

Some background information found in the Web:

- According to the [STM32CubeF7](c20e6dd15b/Drivers/BSP/STM32F723E-Discovery/stm32f723e_discovery_ts.c (L24-L27)) the FRIDA LCD panel mounted on the `stm32f723e-disco` board either uses FT6x36 (prior revision D) or FT3x67 (revision D). However, the FT5x06 driver type for the card is defined as FT6x06, which does not seem correct: bb9011c3fb/boards/stm32f723e-disco/include/board.h (L59)
- According to the [STM32CubeF7](c20e6dd15b/Drivers/BSP/Components/ft6x06/ft6x06.h (L269-L270)), the vendor ID for FT6x36 should be `0xcd`. However, the FT6336U on ESP32-S3 WT32 SC01 Plus works with vendor ID `0x11`.
- The [Adafruit FT6206 library](95118cd983/Adafruit_FT6206.h (L28)) uses `0x11` as vendor id.
- The `stm32l496g-disco` board uses a FT6236 which has vendor ID `0xcd`.

So the information available on the web is confusing. Maybe, a better solution would be to accept `0x11` as well as `0xcd` as vendor ID for FT6xxx touch panels. Unfortunately, there are no documents available on the registers directly from FocalTech 😟 so it seems to be more speculation than knowledge.

### Testing procedure


### Issues/PRs references



19886: cpu/efm32: fix DAC configuration r=benpicco a=gschorcht

### Contribution description

The EFM32 MCU allows the reference voltage to be configured per DAC device, not per DAC channel. Also, the DAC reference voltage was defined in the configuration but not used anywhere.

At the moment we have only defined one board (`stwstk6220a`) that uses the DAC, so changing the configuration interface shouldn't be critical.

### Testing procedure

`tests/periph/dac` should still work for the `stwstk6220a`
```
BOARD=slwstk6220a make -j8 -C tests/periph/dac flash
```
I don't have a `stwstk6220a` board (EFM32 Series 0) so that I can't test it. I could only test it for the `sltb009a` board (EFM32 Series 1) with the change for VDAC in PR #19887.

### Issues/PRs references


Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
2023-08-23 16:55:09 +00:00

612 lines
15 KiB
Plaintext

# Copyright (c) 2020 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.
#
# Declaration of generic features that CPUs and boards may provide
config HAS_ARCH_8BIT
bool
help
Indicates that the CPU has a 8-bits architecture.
config HAS_ARCH_16BIT
bool
help
Indicates that the CPU has a 16-bits architecture.
config HAS_ARCH_32BIT
bool
help
Indicates that the CPU has a 32-bits architecture.
config HAS_ARCH_ARM
bool
help
Indicates that the current architecture is ARM.
config HAS_ARDUINO_ANALOG
bool
help
Indicates that Arduino analog pins mappings are provided.
config HAS_ARDUINO_DAC
bool
help
Indicates that Arduino DAC pins mappings are provided.
config HAS_ARDUINO_I2C
bool
help
Indicates that Arduino I²C bus mappings are provided.
config HAS_ARDUINO_PINS
bool
help
Indicates that Arduino digital pins mappings are provided.
config HAS_ARDUINO_PWM
bool
help
Indicates that Arduino digital pin to PWM mappings are provided.
config HAS_ARDUINO_SHIELD_ISP
bool
help
Indicates that the board is electrically and mechanically compatible
with shields that mate with the ISP header for SPI connectivity.
config HAS_ARDUINO_SHIELD_MEGA
bool
# The Arduino Mega 2560 is backward compatible with Arduino UNO shields. So
# any board compatible with Mega shields will automatically be compatible
# with UNO shields.
select HAS_ARDUINO_SHIELD_UNO
help
Indicates that the board is mechanically and electrically compatible
with shields developed for the Arduino Mega 2560. (Note: Not including
the ISP header, that requires HAS_ARDUINO_SHIELD_ISP in addition.)
config HAS_ARDUINO_SHIELD_NANO
bool
help
Indicates that the board is mechanically and electrically compatible
with shields developed for the Arduino Nano. (Note: Not including
the ISP header, that requires HAS_ARDUINO_SHIELD_ISP in addition.)
config HAS_ARDUINO_SHIELD_UNO
bool
help
Indicates that the board is mechanically and electrically compatible
with shields developed for the Arduino Nano. (Note: Not including
the ISP header, that requires HAS_ARDUINO_SHIELD_ISP in addition.)
config HAS_ARDUINO_SPI
bool
help
Indicates that Arduino SPI bus mappings are provided.
config HAS_ARDUINO_UART
bool
help
Indicates that Arduino UART device mappings are provided.
config HAS_BACKUP_RAM
bool
help
Indicates that Backup RAM is supported.
config HAS_BLE_ADV_EXT
bool
help
Indicates the current platform supports Bluetooth 5 Advertising
Extension
config HAS_BLE_NIMBLE
bool
help
Indicates that the NimBLE stack is supported on the current platform.
config HAS_BLE_NIMBLE_NETIF
bool
help
Indicates that NimBLE netif is supported on the current platform.
config HAS_BLE_PHY_2MBIT
bool
help
Indicates that the BLE radio supports the 2Mbit PHY mode
config HAS_BLE_PHY_CODED
bool
help
Indicates that the BLE radio supports the CODED PHY mode
config HAS_CPP
bool
help
Indicates that C++ is supported.
config HAS_CPU_CHECK_ADDRESS
bool
help
Indicates that address validity check is supported.
config HAS_DBGPIN
bool
help
Indicates that a platform provides the neccessary initialization hooks
for the dbgpin module.
config HAS_EMULATOR_RENODE
bool
help
Indicates that the platform is compatible with the Renode emulator.
config HAS_ETHERNET
bool
help
Indicates that Ethernet connectivity is present.
config HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
bool
help
Indicates that static memory sections can fundamentally be turned
into flash pages.
config HAS_HIGHLEVEL_STDIO
bool
help
Indicates that a high-level stdio method (such as CDC ACM) is used.
This requires a running thread and set-up and will not print during
a crash.
config HAS_LIBSTDCPP
bool
help
Indicates that in addition to C++ support an libstdc++ is available.
config HAS_NO_IDLE_THREAD
bool
help
Indicates that this MCU doesn't need the idle thread
config HAS_MOTOR_DRIVER
bool
help
Indicates that a motor_driver configuration is present.
config HAS_PERIPH_ADC
bool
help
Indicates that an ADC peripheral is present.
config HAS_PERIPH_CAN
bool
help
Indicates that a CAN peripheral is present.
config HAS_PERIPH_CORETIMER
bool
help
Indicates that the CLINT timer can be used as timer peripheral
config HAS_PERIPH_CPUID
bool
help
Indicates that a CPU ID peripheral is present.
config HAS_PERIPH_DAC
bool
help
Indicates that a DAC peripheral is present.
config HAS_PERIPH_DMA
bool
help
Indicates that a DMA peripheral is present.
config HAS_PERIPH_EEPROM
bool
help
Indicates that a EEPROM peripheral is present.
config HAS_PERIPH_ETH
bool
help
Indicates that an Ethernet peripheral is present.
config HAS_PERIPH_FLASHPAGE
bool
help
Indicates that a Flashpage peripheral is present.
config HAS_PERIPH_FLASHPAGE_PAGEWISE
bool
help
Indicates that the Flashpage peripheral supports pagewise writing.
config HAS_PERIPH_FLASHPAGE_RWEE
bool
help
Indicates that the Flashpage peripheral is of the Read While Write.
config HAS_PERIPH_GPIO
bool
help
Indicates that a GPIO peripheral is present.
config HAS_PERIPH_GPIO_IRQ
bool
help
Indicates that the GPIO peripheral supports external interrupts is
present.
config HAS_PERIPH_GPIO_FAST_READ
bool
help
Indicates that the GPIO peripheral supports a mode in which pin read
operations are faster, usually with a tradeoff against a different
property.
config HAS_PERIPH_GPIO_TAMPER_WAKE
bool
help
Indicates that Tamper Detection can be used to wake the CPU from
Deep Sleep.
config HAS_PERIPH_GPIO_LL
bool
help
Indicates that the gpio_ll driver is implemented for the MCU's GPIO
peripheral.
config HAS_PERIPH_GPIO_LL_IRQ
bool
help
Indicates that IRQ support for the gpio_ll driver is implemented for the
MCU's GPIO peripheral.
config HAS_PERIPH_GPIO_LL_IRQ_LEVEL_TRIGGERED_HIGH
bool
help
Indicates that IRQs can be triggered level based for signal high.
config HAS_PERIPH_GPIO_LL_IRQ_LEVEL_TRIGGERED_LOW
bool
help
Indicates that IRQs can be triggered level based for signal low.
config HAS_PERIPH_GPIO_LL_IRQ_UNMASK
bool
help
Indicates that the GPIO peripheral supports unmasking interrupts without
clearing pending IRQs that came in while masked.
config HAS_PERIPH_HWRNG
bool
help
Indicates that a Hardware Random Number Generator (HWRNG) peripheral is
present.
config HAS_PERIPH_I2C
bool
help
Indicates that an I2C peripheral is present.
config HAS_PERIPH_I2C_RECONFIGURE
bool
help
Indicates that the I2C peripheral allows pin reconfiguration peripheral
is present.
config HAS_PERIPH_ICS
bool
help
Indicates that an ICS peripheral is present.
config HAS_PERIPH_IR
bool
help
Indicates that an IR peripheral is present.
config HAS_PERIPH_LPUART
bool
help
Indicates that a low-power UART peripheral is present.
config HAS_PERIPH_LTDC
bool
select MODULE_PERIPH_LTDC if MODULE_DISP_DEV
help
Indicates that a LTDC peripheral is present.
config HAS_PERIPH_MCG
bool
help
Indicates that an MCG peripheral is present.
config HAS_PERIPH_CLIC
bool
help
Indicates that a RISC-V Core-local Interrupt Controller (CLIC) peripheral is present.
config HAS_PERIPH_PIO
bool
help
Indicates that Programmable IO (PIO) is supported by the CPU
config HAS_PERIPH_PLIC
bool
help
Indicates that a RISC-V Platform-local Interrupt Controller (PLIC) peripheral is present.
config HAS_PERIPH_PMP
bool
help
Indicates that a RISC-V physical memory protection (PMP) peripheral is present.
config HAS_PERIPH_PM
bool
help
Indicates that a Power Management (PM) peripheral is present.
config HAS_PERIPH_PTP
bool
help
Indicates that a PTP clock is present.
config HAS_PERIPH_PTP_SPEED_ADJUSTMENT
bool
help
Indicates that the PTP clock speed can be adjust. This can be used for clock drift correction and synchronization.
config HAS_PERIPH_PTP_TIMER
bool
help
Indicates that the PTP clock can be used as timer.
config HAS_PERIPH_PTP_TXRX_TIMESTAMPS
bool
help
Indicates that the PTP clock can provide exact time stamps of the
reception and transmission of frames.
config HAS_PERIPH_PWM
bool
help
Indicates that a PWM peripheral is present.
config HAS_PERIPH_QDEC
bool
help
Indicates that a QDEC peripheral is present.
config HAS_PERIPH_RTC
bool
help
Indicates that an RTC peripheral is present.
config HAS_PERIPH_RTC_MEM
bool
help
Indicates that the RTC peripheral provides storage memory for deep sleep.
config HAS_PERIPH_RTC_MS
bool
help
Indicates that the RTC peripheral can provide sub-second timestamps.
config HAS_PERIPH_RTT
bool
help
Indicates that an RTT peripheral is present.
config HAS_PERIPH_RTT_SET_COUNTER
bool
help
Indicates that the RTT peripheral implements rtt_set_counter().
config HAS_PERIPH_RTT_OVERFLOW
bool
help
Indicates that the RTT provides an overflow callback.
config HAS_PERIPH_SDMMC
bool
help
Indicates that an SDIO/SD/MMC peripheral is present and used by the
board. This feature shall be provided by the board configuration,
if available.
config HAS_PERIPH_SDMMC_8BIT
bool
help
Indicates that the SDIO/SD/MMC peripheral supports the 8-bit bus width
and at least one component of the board is connected with 8 data lines.
This feature shall be provided by the board configuration, if available.
config HAS_PERIPH_SDMMC_AUTO_CLK
bool
help
Indicates that the SDIO/SD/MMC peripheral supports the Auto-CLK
feature, i.e. the automatic activation and deactivation of the SD CLK
signal when required. This feature shall be provided by the MCU
if supported.
config HAS_PERIPH_SDMMC_AUTO_CMD12
bool
help
Indicates that the SDIO/SD/MMC peripheral supports the Auto-CMD12
feature, i.e. CMD12 is sent automatically to stop the transmission in
multiple block operations. This feature shall be provided by the MCU
if supported.
config HAS_PERIPH_SDMMC_CLK
bool
help
Indicates that the SDIO/SD/MMC peripheral has special clock
functionality used by the peripheral driver.
config HAS_PERIPH_SDMMC_HS
bool
help
Indicates that the SDIO/SD/MMC peripheral supports the high speed
access, that is 50 MHz for SD and 52 MHz for MMC. This feature shall be
provided by the MCU.
config HAS_PERIPH_SDMMC_MMC
bool
help
Indicates that the SDIO/SD/MMC peripheral supports MMC/eMMCs. This
feature shall be provided by the MCU.
config HAS_PERIPH_SPI
bool
help
Indicates that an SPI peripheral is present.
config HAS_PERIPH_SPI_ON_QSPI
bool
help
Indicates that the QSPI peripheral can be used in SPI mode.
config HAS_PERIPH_SPI_RECONFIGURE
bool
help
Indicates that the SPI peripheral allows pin reconfiguration.
config HAS_PERIPH_SPI_GPIO_MODE
bool
help
Indicates that the SPI peripheral supports configuring the GPIOs modes.
config HAS_PERIPH_TEMPERATURE
bool
help
Indicates that a Temperature peripheral is present.
config HAS_PERIPH_TIMER
bool
help
Indicates that a Timer peripheral is present.
config HAS_PERIPH_TIMER_PERIODIC
bool
help
Indicates that the Timer peripheral provides the periodic timeout
functionality.
config HAS_PERIPH_UART
bool
help
Indicates that an UART peripheral is present.
config HAS_PERIPH_UART_COLLISION
bool
help
Indicates that the UART peripheral supports hardware collision detection.
config HAS_PERIPH_UART_HW_FC
bool
help
Indicates that the UART peripheral supports hardware flow control.
config HAS_PERIPH_UART_MODECFG
bool
help
Indicates that the UART peripheral allows mode configuration.
config HAS_PERIPH_UART_NONBLOCKING
bool
help
Indicates that the UART peripheral allows non-blocking operations.
config HAS_PERIPH_UART_RECONFIGURE
bool
help
Indicates that the UART pins can be re-configured as GPIOs.
config HAS_PERIPH_UART_RXSTART_IRQ
bool
help
Indicates that the UART has an Interrupt for Start Condition detected.
config HAS_PERIPH_USBDEV
bool
help
Indicates that an USBDEV peripheral is present.
config HAS_PERIPH_USBDEV_HS
bool
help
Indicates that the USBDEV peripheral supports High-Speed.
config HAS_PERIPH_USBDEV_HS_UTMI
bool
help
Indicates that an USBDEV HS peripheral with internal UTMI+ HS PHY is present.
config HAS_PERIPH_USBDEV_HS_ULPI
bool
help
Indicates that an USBDEV HS peripheral with ULPI HS PHY is present.
config HAS_PERIPH_VBAT
bool
help
Indicates that backup battery monitoring is supported
config HAS_PERIPH_WDT
bool
help
Indicates that a Watchdog Timer (WDT) peripheral is present.
config HAS_PERIPH_WDT_CB
bool
help
Indicates that the WDT peripheral allows setting a callback.
config HAS_PICOLIBC
bool
help
Indicates that the picolibc C library is available for the platform.
config HAS_PIO_I2C
bool
help
Indicates that there is a PIO program to provide emulated I2C
config HAS_NEWLIB
bool
help
Indicates that the newlib C library is available for the platform.
config HAS_PUF_SRAM
bool
help
Indicates that the PUF-SRAM module has been tested on the platform.
config HAS_RIOTBOOT
bool
help
Indicates that the riotboot booloader is supported.
config HAS_RUST_TARGET
bool
help
Indicates that a Rust target definition ("triple") is known.
config HAS_SDCARD_SPI
bool
help
Indicates that an SD-Card SPI configuration is provided.
config HAS_SSP
bool
help
Indicates that Stack Smashing Protection is supported.