mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
2a4496b32a
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]( |
||
---|---|---|
.. | ||
bhp | ||
can | ||
checksum | ||
coding | ||
congure | ||
cppunit | ||
crypto | ||
ecc | ||
embUnit | ||
entropy_source | ||
event | ||
fido2 | ||
fs | ||
hashes | ||
isrpipe | ||
net | ||
riotboot | ||
senml | ||
suit | ||
sys | ||
test_utils | ||
usb | ||
xtimer | ||
ztimer | ||
ztimer64 | ||
analog_util.h | ||
app_metadata.h | ||
architecture.h | ||
atomic_utils.h | ||
auto_init_utils.h | ||
auto_init.h | ||
base64.h | ||
bcd.h | ||
benchmark.h | ||
bhp.h | ||
bit.h | ||
bitfield.h | ||
bloom.h | ||
byteorder.h | ||
c11_atomics_compat.hpp | ||
cb_mux.h | ||
chunked_ringbuffer.h | ||
clif.h | ||
clk.h | ||
color.h | ||
congure.h | ||
cppunit.hpp | ||
dbgpin.h | ||
debug_irq_disable.h | ||
div.h | ||
eepreg.h | ||
embUnit.h | ||
entropy_source.h | ||
event.h | ||
evtimer_mbox.h | ||
evtimer_msg.h | ||
evtimer.h | ||
flash_utils.h | ||
fmt_table.h | ||
fmt.h | ||
frac.h | ||
fuzzing.h | ||
hashes.h | ||
imath.h | ||
iolist.h | ||
irq.hpp | ||
isrpipe.h | ||
luid.h | ||
matstat.h | ||
memarray.h | ||
mineplex.h | ||
od.h | ||
phydat.h | ||
pipe.h | ||
pm_layered.h | ||
progress_bar.h | ||
ps.h | ||
ptrtag.h | ||
puf_sram.h | ||
random.h | ||
rtc_utils.h | ||
saul_reg.h | ||
sched_round_robin.h | ||
schedstatistics.h | ||
sema_inv.h | ||
sema.h | ||
senml.h | ||
seq.h | ||
shell_lock.h | ||
shell.h | ||
stdio_base.h | ||
stdio_nimble.h | ||
stdio_rtt.h | ||
stdio_semihosting.h | ||
stdio_uart.h | ||
string_utils.h | ||
suit.h | ||
time_units.h | ||
timex.h | ||
tiny_strerror.h | ||
tm.h | ||
trace.h | ||
trickle.h | ||
tsrb.h | ||
unaligned.h | ||
universal_address.h | ||
uri_parser.h | ||
usb_board_reset_internal.h | ||
usb_board_reset.h | ||
usb.h | ||
ut_process.h | ||
utlist.h | ||
uuid.h | ||
vfs_default.h | ||
vfs_util.h | ||
vfs.h | ||
volatile_utils.h | ||
xtimer.h | ||
zptr.h | ||
ztimer64.h | ||
ztimer.h |