mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
50cd32fbbf
19397: drivers/usbdev_synopsys_dwc2: fix and reenable DMA mode r=benpicco a=gschorcht ### Contribution description This PR fixes the DMA mode for all STM32 USB OTG HS cores (including that for STM32F4xx CID 1.xxx) and reenables it. It fixes remaining problems in issue #19359. This PR includes also includes some changes that are needed to use the DMA mode: - EP number is used as defined in CMSIS (if defined) for STM32 - `periph_usbdev_hs` feature is added in Kconfig - `periph_usbdev_hs` feature is added in board definition of `stm32f429i-disc1` - largest number of available EPs is used for STM32 instead of the smallest number (to be able to use all EPs of HS peripheral) - `stm32f429i-disco` is removed from blacklist in `tests/usbus_cdc_ecm` since it uses the HS peripheral ### Testing procedure The following tests should work ```python USEMODULE=stdio_cdc_acm BOARD=stm32f429i-disc1 make -j8 -C tests/usbus_cdc_ecm flash ``` <details> <summary>Test results</summary> ```python [526755.875691] usb 1-2.2: new full-speed USB device number 106 using xhci_hcd [526755.977853] usb 1-2.2: config 1 interface 3 altsetting 1 endpoint 0x84 has invalid maxpacket 512, setting to 64 [526755.977856] usb 1-2.2: config 1 interface 3 altsetting 1 endpoint 0x2 has invalid maxpacket 512, setting to 64 [526755.978762] usb 1-2.2: New USB device found, idVendor=1209, idProduct=7d01, bcdDevice= 1.00 [526755.978764] usb 1-2.2: New USB device strings: Mfr=3, Product=2, SerialNumber=4 [526755.978766] usb 1-2.2: Product: stm32f429i-disc1 [526755.978768] usb 1-2.2: Manufacturer: RIOT-os.org [526755.978769] usb 1-2.2: SerialNumber: 7C156425A950A8EB [526755.991190] cdc_acm 1-2.2:1.0: ttyACM1: USB ACM device [526755.998131] cdc_ether 1-2.2:1.2 usb0: register 'cdc_ether' at usb-0000:00:14.0-2.2, CDC Ethernet Device, a6:f6:4a:85:1d:c9 [526756.044150] cdc_ether 1-2.2:1.2 enp0s20f0u2u2i2: renamed from usb0 ``` </details> ```python USEMODULE='stdio_cdc_acm periph_usbdev_hs_utmi' BOARD=stm32f723e-disco make -j8 -C tests/usbus_cdc_ecm flash ``` <details> <summary>Test results</summary> ```python [528733.480207] usb 1-4.3.4: reset high-speed USB device number 32 using xhci_hcd [528733.707800] usb 1-4.4: new high-speed USB device number 111 using xhci_hcd [528733.808257] usb 1-4.4: config 1 interface 0 altsetting 0 endpoint 0x81 has an invalid bInterval 255, changing to 11 [528733.808260] usb 1-4.4: config 1 interface 1 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64 [528733.808263] usb 1-4.4: config 1 interface 1 altsetting 0 bulk endpoint 0x82 has invalid maxpacket 64 [528733.808642] usb 1-4.4: New USB device found, idVendor=1209, idProduct=7d01, bcdDevice= 1.00 [528733.808645] usb 1-4.4: New USB device strings: Mfr=3, Product=2, SerialNumber=4 [528733.808647] usb 1-4.4: Product: stm32f723e-disco [528733.808649] usb 1-4.4: Manufacturer: RIOT-os.org [528733.808651] usb 1-4.4: SerialNumber: A6BAC4E1B1E0806B [528733.811988] cdc_acm 1-4.4:1.0: ttyACM1: USB ACM device [528733.814456] cdc_ether 1-4.4:1.2 usb0: register 'cdc_ether' at usb-0000:00:14.0-4.4, CDC Ethernet Device, e6:75:97:3a:74:ba [528733.854371] cdc_ether 1-4.4:1.2 enp0s20f0u4u4i2: renamed from usb0 ``` </details> ```python USEMODULE='stdio_cdc_acm periph_usbdev_hs_ulpi' BOARD=stm32f746g-disco make -j8 -C tests/usbus_cdc_ecm flash ``` <details> <summary>Test results</summary> ```python [529000.944482] usb 1-4.3.4: reset high-speed USB device number 32 using xhci_hcd [529003.728260] usb 1-4.4: new high-speed USB device number 114 using xhci_hcd [529003.833107] usb 1-4.4: config 1 interface 0 altsetting 0 endpoint 0x81 has an invalid bInterval 255, changing to 11 [529003.833111] usb 1-4.4: config 1 interface 1 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64 [529003.833113] usb 1-4.4: config 1 interface 1 altsetting 0 bulk endpoint 0x82 has invalid maxpacket 64 [529003.833743] usb 1-4.4: New USB device found, idVendor=1209, idProduct=7d00, bcdDevice= 1.00 [529003.833747] usb 1-4.4: New USB device strings: Mfr=3, Product=2, SerialNumber=4 [529003.833749] usb 1-4.4: Product: stm32f746g-disco [529003.833751] usb 1-4.4: Manufacturer: RIOT-os.org [529003.833753] usb 1-4.4: SerialNumber: 66FE8934D1A363E0 [529003.837143] cdc_acm 1-4.4:1.0: ttyACM1: USB ACM device [529003.839755] cdc_ether 1-4.4:1.2 usb0: register 'cdc_ether' at usb-0000:00:14.0-4.4, CDC Ethernet Device, 6a:88:1f:1f:b1:f0 [529003.879025] cdc_ether 1-4.4:1.2 enp0s20f0u4u4i2: renamed from usb0``` ``` </details> ### Issues/PRs references Fixes #19359 19416: cpu/rpx0xx/cmsis: Update vendor header files r=benpicco a=maribu ### Contribution description Generated new vendor header files from upstream SVD files using: ./SVDConv "$PICO_SDK_DIR"/src/rp2040/hardware_regs/rp2040.svd \ --generate=header --fields=macro --fields=enum Note: The missing `--fields=struct` flag resulted in the header no longer containing bit-fields to represent different fields within registers. While this would generally ease writing code, the RP2040 has the unpleasant feature of corrupting the remaining bits of the register when a write access that is not word-sized occurs in the memory mapped I/O area. This could happen e.g. when a bit field is byte-sized and byte-aligned. ### Testing procedure No binary changes (hopefully). ### Issues/PRs references This adds a few additional vendor defines, notably for USB. If anyone were to implement USB, this would be a requirement. 19418: cpu/gd32v: fix gpio_read in periph_gpio r=benpicco a=gschorcht ### Contribution description This PR fixes a bug in `gpio_read` which made `gpio_read` completely unusable! A small bug with big consequences. In `gpio_read` the combined port | pin_num parameter `pin` was used instead of the pin number `pin_num` for the call of `_pin_is_input`. This caused the problem that for example instead of accessing GPIOA->CTL0 with address 0x40010800, address 0x60018c00 was accessed. As a result, a pin was randomly detected as input or output and thus a result was arbitrarily returned. Approx. 50% of all inputs always returned LOW. I found this error by coincidence when I tried to find out why the BOOT0 button on a Sipeed Longan Nano is not usable as a button in RIOT. ### Testing procedure Flash `tests/periph_gpio` ``` BOARD=sipeed-longan-nano make -j8 -C tests/periph_gpio flash ``` and use commands ``` init_in 0 8 read 0 8 ``` Without this PR, the pin is always LOW. With the PR, the pin should be HIGH when the BOOT button is pressed. ### Issues/PRs references 19419: boards/sipeed-longan-nano: add BOOT as user button r=benpicco a=gschorcht ### Contribution description This PR makes the BOOT button usable as a user button. ### Testing procedure The test requires PR #19418 to work. Flash and test: ``` BOARD=sipeed-longan-nano make -j8 -C tests/saul flash term ``` The output ``` Dev: BOOT Type: SENSE_BTN Data: 0 ``` should change to ``` Dev: BOOT Type: SENSE_BTN Data: 1 ``` when the BOOT button is pressed. ### Issues/PRs references Depends on PR #19418 Co-authored-by: Gunar Schorcht <gunar@schorcht.net> Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de> |
||
---|---|---|
.. | ||
ad7746 | ||
adcxx1c | ||
ads101x | ||
adt7310 | ||
adxl345 | ||
aip31068 | ||
apa102 | ||
apds99xx | ||
at | ||
at24cxxx | ||
at24mac | ||
at25xxx | ||
at30tse75x | ||
at86rf2xx | ||
at86rf215 | ||
ata8520e | ||
atwinc15x0 | ||
bh1750fvi | ||
bh1900nux | ||
bme680 | ||
bmp180 | ||
bmx055 | ||
bmx280 | ||
bq2429x | ||
can_trx | ||
cc1xxx_common | ||
cc110x | ||
cc2420 | ||
ccs811 | ||
cst816s | ||
dac_dds | ||
dcf77 | ||
dfplayer | ||
dht | ||
disp_dev | ||
dose | ||
ds18 | ||
ds75lx | ||
ds1307 | ||
ds3231 | ||
ds3234 | ||
dsp0401 | ||
dynamixel | ||
edbg_eui | ||
enc28j60 | ||
encx24j600 | ||
epd_bw_spi | ||
ethos | ||
feetech | ||
ft5x06 | ||
fxos8700 | ||
gp2y10xx | ||
grove_ledbar | ||
hd44780 | ||
hdc1000 | ||
hih6130 | ||
hm330x | ||
hmc5883l | ||
hsc | ||
hts221 | ||
ili9341 | ||
ina2xx | ||
ina3221 | ||
include | ||
io1_xplained | ||
ir_nec | ||
isl29020 | ||
isl29125 | ||
itg320x | ||
jc42 | ||
kw2xrf | ||
kw41zrf | ||
l3g4200d | ||
l3gxxxx | ||
lc709203f | ||
lcd | ||
lis2dh12 | ||
lis3dh | ||
lis3mdl | ||
lm75 | ||
lpd8808 | ||
lpsxxx | ||
lsm6dsl | ||
lsm303agr | ||
lsm303dlhc | ||
ltc4150 | ||
mag3110 | ||
matrix_keypad | ||
mcp47xx | ||
mcp2515 | ||
mfrc522 | ||
mhz19 | ||
mma8x5x | ||
mma7660 | ||
motor_driver | ||
mpl3115a2 | ||
mpu9x50 | ||
mq3 | ||
mrf24j40 | ||
mtd | ||
mtd_flashpage | ||
mtd_mapper | ||
mtd_mci | ||
mtd_sdcard | ||
mtd_spi_nor | ||
my9221 | ||
ncv7356 | ||
netdev | ||
netdev_ieee802154_submac | ||
nrf24l01p | ||
nrf24l01p_ng | ||
nvram | ||
nvram_spi | ||
opt3001 | ||
pca9633 | ||
pca9685 | ||
pcd8544 | ||
pcf857x | ||
periph_common | ||
ph_oem | ||
pir | ||
pn532 | ||
pulse_counter | ||
qmc5883l | ||
rgbled | ||
rn2xx3 | ||
rtt_rtc | ||
saul | ||
scd30 | ||
sdcard_spi | ||
sdp3x | ||
sds011 | ||
seesaw_soil | ||
servo | ||
sgp30 | ||
sht1x | ||
sht2x | ||
sht3x | ||
shtcx | ||
si70xx | ||
si114x | ||
si1133 | ||
slipdev | ||
sm_pwm_01c | ||
soft_spi | ||
soft_uart | ||
sps30 | ||
srf02 | ||
srf04 | ||
srf08 | ||
st7735 | ||
stmpe811 | ||
sx126x | ||
sx127x | ||
sx1280 | ||
tcs37727 | ||
tja1042 | ||
tmp00x | ||
touch_dev | ||
tps6274x | ||
tsl2561 | ||
tsl4531x | ||
uart_half_duplex | ||
usbdev_mock | ||
usbdev_synopsys_dwc2 | ||
vcnl40x0 | ||
veml6070 | ||
vl6180x | ||
w5100 | ||
ws281x | ||
xbee | ||
doc.txt | ||
Kconfig | ||
Kconfig.net | ||
Makefile | ||
Makefile.dep |