-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Planned USB device/host support rework/enhancements #42066
Comments
For driver support, will you plan to enable Synopsys DWC USB2.0 OTG controller ? thx |
Do we need a separate tracking ticket for USB Host? |
No, not at this time. My plan is that host controller driver API immediately follows device controller API (+ device stack), details of host support come afterwards. |
@jfischer-no Is there any of this that can be parallelized if additional resources are made available? Also, what forum are we to use to have some open discussions about the API changes and requirements? |
Not yet. |
Plan updated. |
hello, i use usb audio these , and the usb audio leak some feature unit, like volume . It there have some plan to do this? |
@jfischer-no do you think we should push this to the v3.3 milestone? (it's currently tagged for v3.2) |
Hi, any estimate for when host support will be available ? |
+1 |
Yes, but it is not directly relevant to this topic.
ASAP! |
@MaureenHelm any interest from NXP to support the mcux usb host (and device) drivers for LPC and i.MXRT in zephyr? |
Wrt. Audio. Could someone please enlighten me on the status/plans for async USB support? We need the SoC to poll the PC host for new Audio data. |
I commented to a similar question above. It would be nice if you open a well-described enhancement issue or discussion, but it does not belong here!
It appeared to me in a dream that progress on NXP USB controller support is inversely proportional to how often you ask the same question in different topics. |
I don't work at NXP anymore. Please contact @dleach02 for NXP-related questions. |
If I look at the list of items for moving over to the new UDC it looks like mostly porting vendor's USB drivers. I think it makes sense to work in parallel on the host layer instead of serializing this effort. If we are blocked by other vendors conversions we may never get to the host work. We have needs for host support and the resources available to assist in this effort. Just need some guidance on how you want this done. |
is the USB-ip supposed to work with native_sim and the device_next stack? |
Please see #74141 |
Why not use TinyUSB instead of making a new stack? It has device and host support already. It has an OS abstraction layer as well. License is MIT. Both Espressif and Raspberry Pi use it in their SDKs already. |
Wonderful work from Ha Thach! Very simple callback-based API that is convenient to debug... Just follow the calls. I am not from Nordic and do not know the original rationale for a from-scratch implementation for Zephyr, but here are some clues that I am trying to guess:
Just my wild guesses! Related |
Some progress on UVC: #63421 (comment) |
@jfischer-no , we have moved this to be in the 4.0 Release Plan for the conversion of the USB Device. |
@jfischer-no, can you please share some insight on what the plans are for the remaining tasks related to USB Host. Should we create a separate RFC for this so we can track it for future Zephyr releases. |
No. As mentioned the beginning: |
@jfischer-no, we have moved this meta issue to be fixed in 4.0. How should we track the items that are not addressed in 4.0 release? |
The device_next stack now supports almost all classes that were covered by the legacy stack, and many controllers have been ported already. See zephyrproject-rtos#42066 for more info. Signed-off-by: Carles Cufi <[email protected]>
This is a meta issue for maintainers and developers of relevant subsystems to track progress on new USB support.
Introduction
Currently we have only USB device support in Zephyr OS. Existing USB device support has many disadvantages and issues, like missing support for multiple driver instances, no endpoint (request) buffers management, missing class instances management and possibility to configure/enable class instance at runtime, not a good notification channel to the user/application, messy callback architecture, no API to set/reconfigure idVendor/iSerialNumber/bcdDevice at runtime, confusing usb_dc_ep_read()/usb_dc_ep_write() API, and more.
There is no USB host support in the project. It is asked again and again for it and there was effort like #30361, but that is far from suitable. USB device stack would also benefit from the host support and allow self-contained tests with emulated device and host controllers, and better support for USBIP.
Since many problems with the USB device support are due to the way it is designed (imported in Zephyr OS), we would like to redesign USB device support. That means USB device controller driver API and USB device stack will be rewritten in parallel and independent to existing implementation. Due to the need for testing/validation, USB host controller driver API and some parts of higher level will also be implemented.
Rough plan
New USB device support (PR usb: add new (experimental) USB device support #38679)
usb_dc_numaker
toUDC API
#74660usb_dc_rpi_pico
toUDC API
#74666usb_dc_sam_usbhs
toUDC API
#74663usb_dc_sam0
toUDC API
#74667 (@jfischer-no WIP)usb_dc_sam_usbc
toUDC API
#74665USB host support (PR usb: add USB host controller API, support for virtual controller, and experimental host support #50985)
Choice of support of the legacy stack
a) Remove the legacy stack entirely after 4.0.0 (hard switch)
b) Keep the stack, but remove tests and samples
c) Keep the stack, keep tests and some samples, but deprecated and not building in CI
d) Keep the stack, keep tests and some samples, but deprecated. Have a special build in CI that does not fail with deprecation
Agreement to go with d), with samples for the legacy stack placed under a
legacy/
folder.Timeline for transitioning to USB device "next" support
Main "switch":
zephyr/subsys/usb/device_next/Kconfig
Line 5 in 745ace8
The text was updated successfully, but these errors were encountered: