1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/include
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
..
bhp sys/bhp_msg: add IPC based Bottom Half Processor 2022-08-19 12:01:30 +02:00
can drivers/mcp2515: apply the filter to a target mailbox 2022-06-30 10:07:24 +02:00
checksum sys/checksum: update CRC-16 documentation 2022-10-07 13:01:38 +02:00
coding sys/coding: add XOR based coding module 2023-02-06 16:21:57 +01:00
congure congure_abe: initial import of TCP ABE congestion control 2022-10-17 16:44:39 +02:00
cppunit core/irq: Add C++ wrapper 2023-01-13 13:58:07 +01:00
crypto sys/crypto: make AES_KEY struct private 2023-02-20 18:22:00 +01:00
ecc doc: fix unbalaced grouping 2022-09-14 15:05:25 +02:00
embUnit sys/embUnit: replace RIOT_FILE_RELATIVE with __FILE__ 2022-11-19 01:48:42 +01:00
entropy_source sys/entropy_source: add new module for entropy sources 2020-12-01 15:51:40 +01:00
event makefiles/pseudomodules: remove deprecated event_thread_lowest module 2023-05-19 16:15:10 +02:00
fido2 fido2/ctap: uncrustify files 2022-09-23 16:42:52 +02:00
fs cpu/native: add host fs access via VFS 2023-04-26 00:53:14 +02:00
hashes sys/hashes: remove deprecated ase cmac hashing 2023-05-19 16:01:12 +02:00
isrpipe
net Merge #19876 #19878 #19888 2023-08-21 17:33:13 +00:00
riotboot bootloaders: fix bootloader button logic 2023-03-08 13:07:42 +01:00
senml sys/phydat: Fix unit confusion 2023-02-23 16:44:24 +01:00
suit sys/suit: Introduce functions to provide a manifest in memory 2023-05-27 21:01:18 +02:00
sys sys/bus: add system buses 2020-11-12 22:50:53 +01:00
test_utils sys/test_utils: mark expect() condition as likely true 2023-01-18 01:17:31 +01:00
usb Implement USB_FEATURE_DEVICE_REMOTE_WAKEUP handling 2023-07-05 23:40:07 +01:00
xtimer doc: fix unbalaced grouping 2022-09-14 15:05:25 +02:00
ztimer treewide: fix path to ztimer test applications 2023-05-13 19:08:38 +02:00
ztimer64 ztimer(64): make xtimer_compat documetation visible (defgroup) 2022-08-09 14:26:49 +02:00
analog_util.h
app_metadata.h treewide: Remove excessive newlines 2021-08-13 19:50:38 +02:00
architecture.h debug: add DEBUG_BREAKPOINT() macro 2023-04-27 13:19:17 +02:00
atomic_utils.h core/lib: Add macros/utils.h header 2023-01-07 09:47:44 +01:00
auto_init_utils.h sys/includes: replace kernel_defines.h 2022-11-22 13:39:35 +01:00
auto_init.h pkg/lwip: Start rework of netif initialisation 2021-08-20 14:56:46 +02:00
base64.h
bcd.h
benchmark.h sys/benchmark: make use of ztimer stopwatch 2023-03-06 14:31:09 +01:00
bhp.h sys/bhp: add initial support for generic Bottom Half Processor 2022-08-11 10:57:53 +02:00
bit.h sys/bit: add bit_checkXX() functions 2021-06-02 14:07:17 +02:00
bitfield.h sys/bitfield: don't set unrelated bits in bf_{set, clear}_all() 2023-03-17 00:08:10 +01:00
bloom.h codespell: fix remaining issues 2022-09-16 14:00:35 +02:00
byteorder.h cpu/msp430: reorganize code 2023-06-19 17:14:57 +02:00
c11_atomics_compat.hpp doc: Improve C++ documentation 2021-12-15 18:58:23 +01:00
cb_mux.h
chunked_ringbuffer.h sys/chunked_ringbuffer: move config to CONFIG_ namespace 2022-03-04 09:35:39 +01:00
clif.h sys/clif: Fixing out of bounds read under certain conditions 2023-02-23 15:45:03 +01:00
clk.h sys: introduce coreclk utility function 2021-12-15 12:41:36 +01:00
color.h
congure.h congure_test: initial import of CongURE test framework 2021-02-26 10:08:12 +01:00
cppunit.hpp core/irq: Add C++ wrapper 2023-01-13 13:58:07 +01:00
dbgpin.h sys/includes: replace kernel_defines.h 2022-11-22 13:39:35 +01:00
debug_irq_disable.h cpu/cortexm_common: measure time spent with IRQ disabled 2022-11-24 21:27:20 +01:00
div.h
eepreg.h
embUnit.h sys/include: remove kernel_defines.h where not needed 2022-11-22 13:39:35 +01:00
entropy_source.h sys/entropy_source: add new module for entropy sources 2020-12-01 15:51:40 +01:00
event.h sys/event: ensure that a queue has a waiter before waiting for flags 2022-04-14 17:10:24 +02:00
evtimer_mbox.h evtimer: add mbox support 2020-08-21 15:19:22 +02:00
evtimer_msg.h
evtimer.h sys/evtimer: remove support for xtimer backend 2023-05-24 09:53:33 +02:00
flash_utils.h sys/flash_utils: add helpers for placing variables in flash 2023-02-27 12:31:03 +01:00
fmt_table.h
fmt.h sys/fmt: add print_bytes_hex() 2022-11-15 22:05:42 +01:00
frac.h sys: fix remaining broken paths to tests 2023-05-13 19:08:39 +02:00
fuzzing.h fuzzing: Add uri_parser fuzzer setup 2022-12-19 13:03:45 +01:00
hashes.h treewide: Remove excessive newlines 2021-08-13 19:50:38 +02:00
imath.h imath: add powi() function 2023-06-05 19:09:11 +02:00
iolist.h sys/iolist: introduce iolist_to_buffer() 2022-05-02 23:23:52 +02:00
irq.hpp core/irq: Add C++ wrapper 2023-01-13 13:58:07 +01:00
isrpipe.h sys/isrpipe: add isrpipe_write 2021-12-07 13:00:58 +01:00
luid.h sys/luid: add luid_netdev_get_eui48() & luid_netdev_get_eui64() 2020-08-18 11:45:45 +02:00
matstat.h
memarray.h memarray: Add extend and reduce functions 2021-01-15 11:39:08 +01:00
mineplex.h
od.h sys/od: allow to specify address offset with od_hex_dump_ext() 2021-01-11 14:35:40 +01:00
phydat.h sys/phydat: use flash_utils 2023-02-27 12:31:03 +01:00
pipe.h
pm_layered.h sys/pm_layered: align pm_blocker_t for speed 2022-11-04 16:50:52 +01:00
progress_bar.h sys/progress_bar: add Konfig configuration 2021-04-07 12:05:00 +02:00
ps.h treewide: Remove excessive newlines 2021-08-13 19:50:38 +02:00
ptrtag.h sys: Add helpers for pointer tagging 2020-11-17 10:10:28 +01:00
puf_sram.h sys: fix remaining broken paths to tests 2023-05-13 19:08:39 +02:00
random.h random: use void * in random_bytes() 2022-07-26 19:46:14 +02:00
rtc_utils.h sys/rtc_utils: small doc fix of rtc_mktime 2022-06-12 15:49:01 +02:00
saul_reg.h drivers/saul: use const qualifier for data to write 2022-05-23 08:35:27 +02:00
sched_round_robin.h sys/sched_round_robin: Add a round robin scheduler module 2021-11-11 13:18:52 +01:00
schedstatistics.h schedstatistics: Convert to ztimer 2021-12-07 16:31:15 +01:00
sema_inv.h sys/sema_inv: add inverse Semaphore 2021-01-17 00:17:58 +01:00
sema.h sys/sema: use sema_ztimer64 to implement old sema api 2022-03-10 14:19:44 +01:00
senml.h sys/includes: replace kernel_defines.h 2022-11-22 13:39:35 +01:00
seq.h
shell_lock.h sys/shell_lock: lock shell on EOF 2023-05-26 15:04:36 +02:00
shell.h shell_lock: don't set CONFIG_SHELL_SHUTDOWN_ON_EXIT 2023-05-26 15:04:35 +02:00
stdio_base.h sys/includes: replace kernel_defines.h 2022-11-22 13:39:35 +01:00
stdio_nimble.h doc: sort all stdio implementations into sys_stdio group 2023-01-13 11:08:22 +01:00
stdio_rtt.h sys/stdio_rtt: move documentation in doc.txt 2023-02-05 15:49:20 +01:00
stdio_semihosting.h doc: sort all stdio implementations into sys_stdio group 2023-01-13 11:08:22 +01:00
stdio_uart.h doc: sort all stdio implementations into sys_stdio group 2023-01-13 11:08:22 +01:00
string_utils.h sys/string_utils: add memchk() 2023-05-30 20:39:10 +02:00
suit.h suit: replace SUIT_URL_MAX with CONFIG_SOCK_URLPATH_MAXLEN 2022-06-01 13:00:51 +02:00
time_units.h sys/include/time_units.h: add more constants 2022-05-05 11:31:45 +02:00
timex.h sys: factor out US_PER_SEC etc from timex.h into time_units.h 2021-12-15 14:33:20 +01:00
tiny_strerror.h sys/tiny_strerror: add tiny_strerror_minimal 2022-10-18 23:30:15 +02:00
tm.h sys/include: remove kernel_defines.h where not needed 2022-11-22 13:39:35 +01:00
trace.h
trickle.h sys/trickle: Remove xtimer and only use ztimer 2023-03-17 12:04:44 +01:00
tsrb.h sys/tsrb: add tsrb_clear 2021-12-06 11:53:59 +01:00
unaligned.h sys/unaligned: Add 64 bit version 2020-08-14 12:21:24 +02:00
universal_address.h treewide: Remove excessive newlines 2021-08-13 19:50:38 +02:00
uri_parser.h sys/uri_parser: Adding the port as uint16 2022-09-08 11:32:49 +02:00
usb_board_reset_internal.h
usb_board_reset.h
usb.h sys/usb: Add PID/VID check in macro 2023-05-31 12:55:53 +02:00
ut_process.h ut_process: initial import of a URI template processor 2021-09-16 18:18:48 +02:00
utlist.h sys/utlist: include stddef.h 2022-02-12 18:30:58 +01:00
uuid.h treewide: Remove excessive newlines 2021-08-13 19:50:38 +02:00
vfs_default.h drivers/mtd: add SDMMC support 2023-08-08 09:09:12 +02:00
vfs_util.h sys/vfs_util: add recursive unlink 2022-08-03 22:09:21 +02:00
vfs.h sys/vfs: add force option to vfs_umount() 2023-02-28 17:24:03 +01:00
volatile_utils.h sys/atomic_utils: return previous value 2020-12-16 18:09:35 +01:00
xtimer.h sys/xtimer: improve documentation 2023-05-30 17:32:48 +02:00
zptr.h sys/zptr: fix typos 2020-10-02 08:15:00 +02:00
ztimer64.h sys/ztimer: add ztimer64_xtimer_compat 2022-02-24 09:10:58 +01:00
ztimer.h Merge #19392 #19398 #19399 2023-03-16 12:09:46 +00:00