Skip to content

drivers: usb: udc: Add SAM USBHS driver#101731

Merged
kartben merged 5 commits intozephyrproject-rtos:mainfrom
nandojve:sam/usb_usbhs
Mar 13, 2026
Merged

drivers: usb: udc: Add SAM USBHS driver#101731
kartben merged 5 commits intozephyrproject-rtos:mainfrom
nandojve:sam/usb_usbhs

Conversation

@nandojve
Copy link
Copy Markdown
Member

@nandojve nandojve commented Jan 4, 2026

Summary

Add USB Device Controller (UDC) driver for SAM E70/S70/V70/V71 USBHS peripheral, enabling USB device_next stack support for these MCUs.

  • New UDC driver: drivers/usb/udc/udc_sam_usbhs.c
  • Supports High-Speed (480 Mbps) and Full-Speed (12 Mbps)
  • PIO-based transfers (DMA support planned for future)
  • USB-IF test mode support for compliance testing
  • Remote wakeup support

Test Plan

  • CDC ACM sample tested on sam_v71_xult
  • Enumeration works on both HS and FS modes
  • usbtest validation passed
  • Data transfer bidirectional working

Fixes: #74663

@nandojve nandojve added this to the v4.4.0 milestone Jan 4, 2026
@henrikbrixandersen
Copy link
Copy Markdown
Member

@nandojve Nice work, thanks! I have just tested this on the CANbardo board - works without a hitch. I have yet to review the code.

@nandojve
Copy link
Copy Markdown
Member Author

nandojve commented Jan 5, 2026

@nandojve Nice work, thanks! I have just tested this on the CANbardo board - works without a hitch. I have yet to review the code.

Hi @henrikbrixandersen ,

Nice to read! Don't waist time reviewing the code yet. I will do some rewriting. I notice that 1 line of code can change quite lot the performance so it needs some restructure. However, it is always nice to share because someone can always find some spot.

@henrikbrixandersen
Copy link
Copy Markdown
Member

henrikbrixandersen commented Jan 5, 2026

@nandojve Feel free to cherry-pick c5e9ee0 (from https://github.com/henrikbrixandersen/zephyr/tree/pr_101731_canbardo) on top of your branch. This will aid me in verifying your changes.

@nandojve
Copy link
Copy Markdown
Member Author

nandojve commented Jan 5, 2026

@nandojve Feel free to cherry-pick c5e9ee0 (from https://github.com/henrikbrixandersen/zephyr/tree/pr_101731_canbardo) on top of your branch. This will aid me in verifying your changes.

I'll pick it!
Thank you!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jan 9, 2026

The following west manifest projects have changed revision in this Pull Request:

Name Old Revision New Revision Diff
hal_atmel zephyrproject-rtos/hal_atmel@065e57c zephyrproject-rtos/hal_atmel@8cd5750 (master) zephyrproject-rtos/hal_atmel@065e57c5..8cd57504

All manifest checks OK

Note: This message is automatically posted and updated by the Manifest GitHub Action.

@github-actions github-actions Bot added manifest manifest-hal_atmel DNM (manifest) This PR should not be merged (controlled by action-manifest) labels Jan 9, 2026
@nandojve nandojve marked this pull request as ready for review January 9, 2026 17:19
@zephyrbot zephyrbot added area: Samples Samples area: USB Universal Serial Bus platform: Microchip SAM Microchip SAM Platform (formerly Atmel SAM) area: Boards/SoCs labels Jan 9, 2026
Copy link
Copy Markdown
Member

@henrikbrixandersen henrikbrixandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Initial pass:

Comment thread drivers/usb/udc/Kconfig.sam_usbhs Outdated
Comment thread drivers/usb/udc/udc_sam_usbhs.c Outdated
Comment thread drivers/usb/udc/udc_sam_usbhs.c Outdated
@github-actions github-actions Bot removed the DNM (manifest) This PR should not be merged (controlled by action-manifest) label Jan 10, 2026
Copy link
Copy Markdown
Contributor

@jfischer-no jfischer-no left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise LGTM

Comment thread dts/bindings/usb/atmel,sam-usbhs.yaml Outdated
- "fifo": Dual-Port RAM (DPRAM) for endpoint FIFOs

The SAM USBHS has 10 hardware endpoints (EP0-EP9). EP0 is the
bidirectional control endpoint. The remaining endpoints are
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is nothing like "bidirectional control endpoint" in USB spec. I see it used more often, and it is really annoying. Please do not use it in the code or devicetree comments.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dropped bidirectional word

Comment thread dts/bindings/usb/atmel,sam-usbhs.yaml Outdated
Comment on lines +44 to +48
num-bidir-endpoints:
const: 1
description: |
Number of bidirectional endpoints. For SAM USBHS, only EP0 is truly
bidirectional. Non-EP0 endpoints are direction-constrained by hardware.
Copy link
Copy Markdown
Contributor

@jfischer-no jfischer-no Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You do not need this property, include usb-controller.yaml instead. A USB device must have control IN/OUT endpoints.

Copy link
Copy Markdown
Member Author

@nandojve nandojve Mar 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dropped num-bidir-endpoints (num of bidirectional endpoints). Almost (if not) all drivers are using it include the driver you wrote for sam0.

zephyr_library_sources_ifdef(CONFIG_UDC_RENESAS_RA udc_renesas_ra.c)
zephyr_library_sources_ifdef(CONFIG_UDC_MAX32 udc_max32.c)
zephyr_library_sources_ifdef(CONFIG_UDC_SAM0 udc_sam0.c)
zephyr_library_sources_ifdef(CONFIG_UDC_SAM_USBHS udc_sam_usbhs.c)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixes: #74663

Please remove it from commit message.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is how we link a issue to a PR. It is documented in adding links. This is Zephyr only and it is correct.

@nandojve
Copy link
Copy Markdown
Member Author

rebase to solve conflicts after #103703

@jfischer-no
Copy link
Copy Markdown
Contributor

I tested it with sam_e70_xplained, and it does not seem to work. Default build does get in the address state, and not able to perform any control transfer to the host. Forced to the full-speed, the controller seems to work, but fails to pass test 14/21.
@nandojve @henrikbrixandersen How was it tested?

nandojve and others added 5 commits March 12, 2026 18:23
Add missing macros to allow same70 usbhs driver build.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
Add Atmel SAM USBHS driver for SAM E70/S70/V70/V71 family. The driver
was tested using CDC-ACM and testusb samples.

Fixes: zephyrproject-rtos#74663

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
Add USB device next (usbd) feature support for the SAM V71
Xplained Ultra board. Add the revison B board to USB sample
integration platforms.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
Add USB device next (usbd) feature support for the SAM E70 Xplained
board.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
List USB device controller as a supported feature in order to increase test
coverage.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
@nandojve
Copy link
Copy Markdown
Member Author

Hi @jfischer-no ,

I tested it with sam_e70_xplained, and it does not seem to work. Default build does get in the address state, and not able to perform any control transfer to the host. Forced to the full-speed, the controller seems to work, but fails to pass test 14/21. @nandojve @henrikbrixandersen How was it tested?

I'm not sure why this is happening to you. I just build and run in V71 and it seems that everything is fine.

[ 3958.616670] usb 9-1: new high-speed USB device number 3 using xhci_hcd
[ 3958.757712] usb 9-1: New USB device found, idVendor=2fe3, idProduct=0009, bcdDevice= 4.03
[ 3958.757718] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3958.757720] usb 9-1: Product: Zephyr testusb sample
[ 3958.757721] usb 9-1: Manufacturer: Zephyr Project
[ 3958.757722] usb 9-1: SerialNumber: 003134534B484A483034303130303138
[ 3958.760892] usbtest 9-1:1.0: Linux gadget zero
[ 3958.760896] usbtest 9-1:1.0: high-speed {control in/out bulk-in bulk-out} tests (+alt)
[ 3958.761116] usbtest 9-1:1.1: Linux gadget zero
[ 3958.761118] usbtest 9-1:1.1: high-speed {control in/out int-in int-out} tests (+alt)
[ 3958.761310] usbtest 9-1:1.2: Linux gadget zero
[ 3958.761313] usbtest 9-1:1.2: high-speed {control in/out iso-in iso-out} tests (+alt)

$ sudo ./testusb -v 512 -D /dev/bus/usb/009/003
./testusb: /dev/bus/usb/009/003 may see only control tests
high speed	/dev/bus/usb/009/003	0
/dev/bus/usb/009/003 test 0,    0.000006 secs
/dev/bus/usb/009/003 test 1,    0.441105 secs
/dev/bus/usb/009/003 test 2,    0.418498 secs
/dev/bus/usb/009/003 test 3,    0.151261 secs
/dev/bus/usb/009/003 test 4,    0.210730 secs
/dev/bus/usb/009/003 test 5,    9.428364 secs
/dev/bus/usb/009/003 test 6,   13.415915 secs
/dev/bus/usb/009/003 test 7,    4.808556 secs
/dev/bus/usb/009/003 test 8,    6.800738 secs
/dev/bus/usb/009/003 test 9,    4.592050 secs
/dev/bus/usb/009/003 test 10,   21.002133 secs
/dev/bus/usb/009/003 test 11,    9.593004 secs
/dev/bus/usb/009/003 test 12,   10.639120 secs
/dev/bus/usb/009/003 test 13,    7.125249 secs
/dev/bus/usb/009/003 test 14,    1.500239 secs
/dev/bus/usb/009/003 test 17,    0.438577 secs
/dev/bus/usb/009/003 test 18,    0.418428 secs
/dev/bus/usb/009/003 test 19,    0.430639 secs
/dev/bus/usb/009/003 test 20,    0.410579 secs
/dev/bus/usb/009/003 test 21,    1.500111 secs
/dev/bus/usb/009/003 test 24,   13.239355 secs
/dev/bus/usb/009/003 test 27,    9.358318 secs
/dev/bus/usb/009/003 test 28,   13.144901 secs
/dev/bus/usb/009/003 test 29,    1.374946 secs

sudo dmesg -c
[ 3996.729222] usbtest 9-1:1.0: TEST 0:  NOP
[ 3996.729970] usbtest 9-1:1.0: TEST 1:  write 1024 bytes 1000 times
[ 3997.171935] usbtest 9-1:1.0: TEST 2:  read 1024 bytes 1000 times
[ 3997.591437] usbtest 9-1:1.0: TEST 3:  write/512 0..1024 bytes 1000 times
[ 3997.743436] usbtest 9-1:1.0: TEST 4:  read/512 0..1024 bytes 1000 times
[ 3997.955061] usbtest 9-1:1.0: TEST 5:  write 1000 sglists 32 entries of 1024 bytes
[ 4007.384194] usbtest 9-1:1.0: TEST 6:  read 1000 sglists 32 entries of 1024 bytes
[ 4020.800860] usbtest 9-1:1.0: TEST 7:  write/512 1000 sglists 32 entries 0..1024 bytes
[ 4025.610243] usbtest 9-1:1.0: TEST 8:  read/512 1000 sglists 32 entries 0..1024 bytes
[ 4032.411721] usbtest 9-1:1.0: TEST 9:  ch9 (subset) control tests, 1000 times
[ 4037.004401] usbtest 9-1:1.0: TEST 10:  queue 32 control calls, 1000 times
[ 4058.007199] usbtest 9-1:1.0: TEST 11:  unlink 1000 reads of 1024
[ 4058.848192] usbtest 9-1:1.0: unlink retry
[ 4061.880191] usbtest 9-1:1.0: unlink retry
[ 4062.920200] usbtest 9-1:1.0: unlink retry
[ 4064.256194] usbtest 9-1:1.0: unlink retry
[ 4067.601164] usbtest 9-1:1.0: TEST 12:  unlink 1000 writes of 1024
[ 4078.240992] usbtest 9-1:1.0: TEST 13:  set/clear 1000 halts
[ 4085.367076] usbtest 9-1:1.0: TEST 14:  1000 ep0out, 1..1024 vary 512
[ 4086.869445] usbtest 9-1:1.0: TEST 17:  write odd addr 1024 bytes 1000 times core map
[ 4087.308943] usbtest 9-1:1.0: TEST 18:  read odd addr 1024 bytes 1000 times core map
[ 4087.728323] usbtest 9-1:1.0: TEST 19:  write odd addr 1024 bytes 1000 times premapped
[ 4088.159815] usbtest 9-1:1.0: TEST 20:  read odd addr 1024 bytes 1000 times premapped
[ 4088.571315] usbtest 9-1:1.0: TEST 21:  1000 ep0out odd addr, 1..1024 vary 512
[ 4090.073688] usbtest 9-1:1.0: TEST 24:  unlink from 1000 queues of 32 1024-byte writes
[ 4103.315378] usbtest 9-1:1.0: TEST 27: bulk write 31Mbytes
[ 4112.674595] usbtest 9-1:1.0: TEST 28: bulk read 31Mbytes
[ 4125.820420] usbtest 9-1:1.0: TEST 29: Clear toggle between bulk writes 1000 times
[ 4203.997512] usb 9-1: USB disconnect, device number 3

[ 4206.012476] usb 9-1: new full-speed USB device number 4 using xhci_hcd
[ 4206.181049] usb 9-1: New USB device found, idVendor=2fe3, idProduct=0009, bcdDevice= 4.03
[ 4206.181055] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4206.181057] usb 9-1: Product: Zephyr testusb sample
[ 4206.181058] usb 9-1: Manufacturer: Zephyr Project
[ 4206.181060] usb 9-1: SerialNumber: 003134534B484A483034303130303138
[ 4206.192120] usbtest 9-1:1.0: Linux gadget zero
[ 4206.192123] usbtest 9-1:1.0: full-speed {control in/out bulk-in bulk-out} tests (+alt)
[ 4206.192258] usbtest 9-1:1.1: Linux gadget zero
[ 4206.192259] usbtest 9-1:1.1: full-speed {control in/out int-in int-out} tests (+alt)
[ 4206.192377] usbtest 9-1:1.2: Linux gadget zero
[ 4206.192379] usbtest 9-1:1.2: full-speed {control in/out iso-in iso-out} tests (+alt)

$ sudo ./testusb -v 512 -D /dev/bus/usb/009/004
./testusb: /dev/bus/usb/009/004 may see only control tests
full speed	/dev/bus/usb/009/004	0
/dev/bus/usb/009/004 test 0,    0.000005 secs
/dev/bus/usb/009/004 test 1,    1.287039 secs
/dev/bus/usb/009/004 test 2,    1.045827 secs
/dev/bus/usb/009/004 test 3,    0.649190 secs
/dev/bus/usb/009/004 test 4,    0.544383 secs
/dev/bus/usb/009/004 test 5,   37.908149 secs
/dev/bus/usb/009/004 test 6,   33.278872 secs
/dev/bus/usb/009/004 test 7,   19.530196 secs
/dev/bus/usb/009/004 test 8,   17.712640 secs
/dev/bus/usb/009/004 test 9,   22.035955 secs
/dev/bus/usb/009/004 test 10,  107.999626 secs
/dev/bus/usb/009/004 test 11,    3.840403 secs
/dev/bus/usb/009/004 test 12,    3.912775 secs
/dev/bus/usb/009/004 test 13,   32.000422 secs
/dev/bus/usb/009/004 test 14,    7.501008 secs
/dev/bus/usb/009/004 test 17,    1.249939 secs
/dev/bus/usb/009/004 test 18,    1.062828 secs
/dev/bus/usb/009/004 test 19,    1.249953 secs
/dev/bus/usb/009/004 test 20,    1.062865 secs
/dev/bus/usb/009/004 test 21,    7.501050 secs
/dev/bus/usb/009/004 test 24,   37.499771 secs
/dev/bus/usb/009/004 test 27,   37.646954 secs
/dev/bus/usb/009/004 test 28,   34.132905 secs
/dev/bus/usb/009/004 test 29,    4.000142 secs

$ sudo dmesg -c
[ 4220.773983] usbtest 9-1:1.0: TEST 0:  NOP
[ 4220.775975] usbtest 9-1:1.0: TEST 1:  write 1024 bytes 1000 times
[ 4222.063950] usbtest 9-1:1.0: TEST 2:  read 1024 bytes 1000 times
[ 4223.110943] usbtest 9-1:1.0: TEST 3:  write/512 0..1024 bytes 1000 times
[ 4223.760948] usbtest 9-1:1.0: TEST 4:  read/512 0..1024 bytes 1000 times
[ 4224.306939] usbtest 9-1:1.0: TEST 5:  write 1000 sglists 32 entries of 1024 bytes
[ 4262.215797] usbtest 9-1:1.0: TEST 6:  read 1000 sglists 32 entries of 1024 bytes
[ 4295.495664] usbtest 9-1:1.0: TEST 7:  write/512 1000 sglists 32 entries 0..1024 bytes
[ 4315.027598] usbtest 9-1:1.0: TEST 8:  read/512 1000 sglists 32 entries 0..1024 bytes
[ 4332.741513] usbtest 9-1:1.0: TEST 9:  ch9 (subset) control tests, 1000 times
[ 4354.779457] usbtest 9-1:1.0: TEST 10:  queue 32 control calls, 1000 times
[ 4462.781023] usbtest 9-1:1.0: TEST 11:  unlink 1000 reads of 1024
[ 4466.622951] usbtest 9-1:1.0: TEST 12:  unlink 1000 writes of 1024
[ 4470.536939] usbtest 9-1:1.0: TEST 13:  set/clear 1000 halts
[ 4502.538811] usbtest 9-1:1.0: TEST 14:  1000 ep0out, 1..1024 vary 512
[ 4510.045794] usbtest 9-1:1.0: TEST 17:  write odd addr 1024 bytes 1000 times core map
[ 4511.296775] usbtest 9-1:1.0: TEST 18:  read odd addr 1024 bytes 1000 times core map
[ 4512.360770] usbtest 9-1:1.0: TEST 19:  write odd addr 1024 bytes 1000 times premapped
[ 4513.611761] usbtest 9-1:1.0: TEST 20:  read odd addr 1024 bytes 1000 times premapped
[ 4514.675754] usbtest 9-1:1.0: TEST 21:  1000 ep0out odd addr, 1..1024 vary 512
[ 4522.182769] usbtest 9-1:1.0: TEST 24:  unlink from 1000 queues of 32 1024-byte writes
[ 4559.687579] usbtest 9-1:1.0: TEST 27: bulk write 31Mbytes
[ 4597.335431] usbtest 9-1:1.0: TEST 28: bulk read 31Mbytes
[ 4631.469302] usbtest 9-1:1.0: TEST 29: Clear toggle between bulk writes 1000 times

Is by any chance you forget to run a west update ?

I'll push again my another machine with latest main, just in case, with the same hash I tested few minutes ago.

@henrikbrixandersen
Copy link
Copy Markdown
Member

I tested it with sam_e70_xplained, and it does not seem to work. Default build does get in the address state, and not able to perform any control transfer to the host. Forced to the full-speed, the controller seems to work, but fails to pass test 14/21. @nandojve @henrikbrixandersen How was it tested?

I have solely tested on the canbardo board, as that is the only one I have with this SoC family.

I've previously ran some of the device_next tests and samples on it with success. I have just now tested my downstream CANnectivity firmware on the same board using this PR as base with success:

Local build command:

  • $ west build -b canbardo/same70n20b ../custom/cannectivity/app/ -- -DFILE_SUFFIX=usbd_next

Zephyr/CANnectivity console:

*** Booting Zephyr OS build v4.3.0-7965-g8e05be02ff49 ***
*** CANnectivity firmware v1.3.0-10-gc68b589d3aac ***
[00:00:00.000,000] <dbg> gs_usb: gs_usb_register_channel: channel 0 features = 0x00002d33
[00:00:00.000,000] <dbg> gs_usb: gs_usb_register_channel: channel 1 features = 0x00002d33
[00:00:00.001,000] <dbg> gs_usb: gs_usb_init: initialized class instance 0x2040041c, interface number 0
[00:00:00.001,000] <dbg> gs_usb: gs_usb_init: initialized class instance 0x2040041c, interface number 0
[00:00:00.001,000] <inf> main: CANnectivity firmware initialized with 2 channels
[00:00:00.293,000] <dbg> gs_usb: gs_usb_enable: enabled
[00:00:06.859,000] <dbg> termination: cannectivity_get_termination: get termination for channel 0: on
[00:00:06.861,000] <dbg> termination: cannectivity_get_termination: get termination for channel 1: on

Linux dmesg:

[97684.304338] usb 1-4.1: USB disconnect, device number 10
[97692.533271] usb 1-4.1: new high-speed USB device number 12 using xhci_hcd
[97692.608897] usb 1-4.1: New USB device found, idVendor=1209, idProduct=ca01, bcdDevice= 1.04
[97692.608904] usb 1-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[97692.608906] usb 1-4.1: Product: CANnectivity USB to CAN adapter
[97692.608908] usb 1-4.1: Manufacturer: CANnectivity
[97692.608909] usb 1-4.1: SerialNumber: 003233534A35594D3130303331303430
[97692.611544] gs_usb 1-4.1:1.0: Configuring for 2 interfaces

I have also just tested the CDC-ACM sample from Zephyr on the same board:

Local build command:

  • west build -b canbardo/same70n20b samples/subsys/usb/cdc_acm

Zephyr console:

*** Booting Zephyr OS build v4.3.0-7965-g8e05be02ff49 ***
[00:00:00.000,000] <inf> cdc_acm_echo: USBD message: Device suspended
[00:00:00.000,000] <inf> cdc_acm_echo: USBD message: Device resumed
[00:00:00.000,000] <inf> cdc_acm_echo: USB device support enabled
[00:00:00.000,000] <inf> cdc_acm_echo: Wait for DTR
[00:00:00.003,000] <inf> cdc_acm_echo: USBD message: Device suspended
[00:00:00.387,000] <inf> cdc_acm_echo: USBD message: Device resumed
[00:00:00.389,000] <inf> cdc_acm_echo: USBD message: Bus reset
[00:00:00.442,000] <inf> cdc_acm_echo: USBD message: New device configuration
[00:00:05.353,000] <inf> cdc_acm_echo: USBD message: CDC ACM line coding
[00:00:05.353,000] <inf> cdc_acm_echo: Baudrate 9600

Linux dmesg:

[98120.190450] usb 1-4.1: new high-speed USB device number 13 using xhci_hcd
[98120.265722] usb 1-4.1: New USB device found, idVendor=2fe3, idProduct=0001, bcdDevice= 4.03
[98120.265732] usb 1-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[98120.265733] usb 1-4.1: Product: USBD CDC ACM sample
[98120.265735] usb 1-4.1: Manufacturer: Zephyr Project
[98120.265735] usb 1-4.1: SerialNumber: 003233534A35594D3130303331303430
[98120.268715] cdc_acm 1-4.1:1.0: ttyACM0: USB ACM device

Let me know if you need me to provide other outputs or try different things.

@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown
Member

@henrikbrixandersen henrikbrixandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retested with latest push on the canbardo board.

@jfischer-no
Copy link
Copy Markdown
Contributor

I tested it with sam_e70_xplained, and it does not seem to work. Default build does get in the address state, and not able to perform any control transfer to the host. Forced to the full-speed, the controller seems to work, but fails to pass test 14/21. @nandojve @henrikbrixandersen How was it tested?

I'm not sure why this is happening to you. I just build and run in V71 and it seems that everything is fine.

Not sure what is wrong with sam_e70_xplained. It also does not work with the legacy stack in main.

@kartben kartben merged commit bd186d4 into zephyrproject-rtos:main Mar 13, 2026
35 of 36 checks passed
@nandojve nandojve deleted the sam/usb_usbhs branch March 13, 2026 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: Boards/SoCs area: Devicetree Binding PR modifies or adds a Device Tree binding area: Samples Samples area: USB Universal Serial Bus manifest manifest-hal_atmel platform: Microchip SAM Microchip SAM Platform (formerly Atmel SAM)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

drivers: usb: Port usb_dc_sam_usbhs to UDC API

5 participants