Commit Graph

493 Commits

Author SHA1 Message Date
Josuah Demangeon
b60609adea samples: usb: add new UVC sample
Following the addition of USB Video Class, this adds a sample that makes
use of the zephyr,camera chosen node of any board to stream the video
source to the host. A snippet video-sw-generator can be used to test
and debug devices without a zephyr,camera chosen node.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-27 12:25:41 +02:00
Tomasz Moń
e0c2372eeb samples: usb: uac2: Implement feedback on nRF54H20
Add configuration and feedback implementation necessary to run UAC2
samples on nRF54H20. Limit nRF54H20 to Full-Speed only operation because
the samples currently don't have necessary logic to support High-Speed.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-06-23 15:44:52 +01:00
Tomasz Moń
45f1222474 samples: usb: uac2: Make I2S buffers UDC compliant
Change I2S mem slabs to adhere to UDC padding and alignment requirements.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-06-23 15:44:52 +01:00
Tomasz Moń
810118d2c6 samples: usb: uac2: Leave cache management up to drivers
Do not call cache management functions in sample because it does not
work properly if driver uses bounce buffers.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-06-23 15:44:52 +01:00
John Lin
0fe7cbd0db samples: subsys: usb: mass: Include rpi_pico.overlay
Include rpi_pico.overlay from the rpi_pico_rp2040_w.overlay in order to
have `pico/rp2040/w` board to work out of the box.

Signed-off-by: John Lin <john.lin@beechwoods.com>
2025-06-21 13:14:21 +02:00
Johann Fischer
79a80730b2 usb: device_next: allow to use label as interface string descriptor
The intention was to use the "interface-name" string property in the
interface string descriptor, but using the label property is acceptable
again. Therefore, allow the use of the DT label property string in the
interface string descriptor.

Follow exactly the same approach as in the CDC ACM implementation
introduced in the commit b0791400f6
("usb: device_next: cdc_acm: allow setting the interface description").

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-06-11 08:18:30 +02:00
Johann Fischer
1c2d692d60 usb: device_next: use system workqueue in CDC ACM by default
Add Kconfig option to use dedicated workqueue in CDC ACM but use the
system work queue in CDC ACM by default.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-06-03 14:48:29 +01:00
Johann Fischer
ed4c27bd41 usb: device_next: allow BOS support to be disabled
Disabling it if not needed can save about 400 bytes of flash memory.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-06-03 14:48:29 +01:00
Neil Chen
13d8ca5d28 samples: usb: Exclude frdm_mcxa153 platform from dfu sample
Exclude the platform frdm_mcxa153 from dfu sample.

Signed-off-by: Neil Chen <cheng.chen_1@nxp.com>
2025-05-29 23:25:57 +02:00
Fabio Baltieri
6d8eb270fc samples: usb: add a cdc_acm_bridge sample
Add a sample for the UART bridge driver using a USB CDC-ACM UART and a
normal one. Demonstrates how to do settings propagation (bitrate
changes) and multiple instances.

The sample needs to know what specific UART are available on each board,
so unfortunately any additional board needs its own overlay.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-05-14 20:11:00 +01:00
Johann Fischer
07f196b33a sample: usb: add usbd test feature to samd21/samr21_xpro boards
Add usbd test feature to samd21/samr21_xpro boards.
Add samr21_xpro board to integration_platforms in a few samples.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-27 08:35:00 +02:00
Johann Fischer
5b385493b3 samples: usb: testusb: use new USB device stack
Rework sample to use new USB device stack.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-23 02:15:10 +02:00
Tomasz Moń
b3eb6f2d11 usb: device_next: Reduce code size on Full-Speed only configuration
Allow compiler optimizations to remove High-Speed handling code. Knowing
that maximum operating speed is Full-Speed allows to reduce bulk buffers
from 512 to 64 bytes. More RAM optimizations are possible but this
commit only gets the low hanging fruits.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Furkan Akkiz
98f14b3ef0 samples: subsys: usb: Enable samples for MAX32690EVKIT board
Add max32690evkit board to integration_platforms in a few samples.

Signed-off-by: Furkan Akkiz <hasanfurkan.akkiz@analog.com>
2025-04-09 19:31:24 +02:00
Benjamin Cabé
776c0cab9a doc: boards: nordic: Adopt zephyr:board directives
Migrate all Nordic boards to leverage the full extent of zephyr:board
directives.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-03-31 22:00:02 +02:00
Benedek Kupper
f5b3362c79 samples: usb: hid-keyboard: enable and use remote wakeup on button press
USB remote wakeup capability is a common feature of keyboards,
allowing them to wake up a suspended host. Currently there is no USB sample
that demonstrates remote wakeup, which makes basic evaluation of the
functionality non-trivial.

Modify the hid-keyboard sample with a minimalistic solution
of demonstrating remote wakeup capability. While it is not required to have
been configured prior to suspend to issue a wakeup request, from usability
perspective I'd say it makes sense.

Signed-off-by: Benedek Kupper <kupper.benedek@gmail.com>
2025-03-27 21:32:42 +01:00
Tomasz Moń
75109707e3 usb: device_next: Do not add serial number without HWINFO
For many devices iSerialNumber is not required. The only device class
currently supported in Zephyr that requires iSerialNumber is MSC. If the
serial number is not available then iSerialNumber must be 0. Failure to
read the string descriptor for non-zero iSerialNumber fails USB Command
Verifier Chapter 9 tests.

When USBD_DESC_SERIAL_NUMBER_DEFINE() was used without CONFIG_HWINFO
then it did lead to runtime failure when requesting the string (thus
failing certification).

Fail USBD_DESC_SERIAL_NUMBER_DEFINE() at build-time if CONFIG_HWINFO is
not set to prevent the surprise at runtime. Only define serial number
descriptors if CONFIG_HWINFO is enabled.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-03-26 16:18:56 +01:00
Mahesh Mahadevan
f48344364c sample: usb_dfu: Exclude NXP RT700 board
This board does not have Flash support enabled yet.
Re-enable this sample once Flash and MCUboot support is
added.

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
2025-03-07 19:48:38 +01:00
Alberto Escolar Piedras
6c38bc8ec4 boards native_posix: Remove twister support
native_posix is being removed as it has reached its end of life in 4.2,
after being deprecated since 4.0.

Remove the twister support for native_posix[//64] and therefore all
references to them from the testcases and samples yamls, so twister
does not error out.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-03-07 19:16:14 +01:00
Tomasz Moń
5595de3f68 samples: usb: uac2: Warn about Windows driver issues
The UAC2 samples do not work with Windows UAC2 driver because:
  * driver does not support implicit feedback
  * driver expects wMaxPacketSize equal 4 on Full-Speed device

The only correct place to solve these issues is the Windows UAC2 driver.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-03-05 21:52:00 +00:00
IBEN EL HADJ MESSAOUD Marwa
1a12889561 samples: usb: dfu-next: make the sample testable
Add a console harness to check that the example has
started successfully.

Signed-off-by: IBEN EL HADJ MESSAOUD Marwa <marwa.ibenelhadjmessaoud-ext@st.com>
2025-03-04 12:17:34 +00:00
Johann Fischer
9cb0fbf80d usb: device_next: fix Get Status request response
We need to track the self-powered status of the device independently of
the D6 bit in the bmAttributes value of the configuration descriptor
because the Get Status request about the self-powered status is valid in
address state and we support multiple configurations.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-28 14:51:53 +01:00
Benjamin Cabé
af28c00679 samples: doc: drop obsolete modemanager notice
As part of cleaning up usage of non-inclusive language in-tree,
I spotted an obsolete mention to a udev rule that ModemManager doesn't
use anymore. Drop it.
See commit 9639e52726854782508e35a75c6abf874bd9e608 in ModemManager
repo.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-02-19 18:48:15 +01:00
Johann Fischer
5914131852 samples: usb: clean up legacy USB CDC ACM console sample
Remove the configuration for the new USB device stack, as there is now a
separate sample that demonstrates how to use it with Kconfig option
CONFIG_CDC_ACM_SERIAL_INITIALIZE_AT_BOOT.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-12 02:22:18 +01:00
Johann Fischer
be5e666eb3 samples: usb: add console sample for the new USB device stack
Add sample to shows how to use the CDC ACM UART provided by the new
experimental USB device stack as a serial backend for the console.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-12 02:22:18 +01:00
Johann Fischer
4a3ce3334e samples: usb: midi: use correct Class Code triple
USB MIDI2 implementation has IAD and should use an appropriate triple to
indicate it.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-06 17:49:12 +01:00
Johann Fischer
2914174d27 doc: usb: minor fixes to improve consistency
Follow-up on newly introduced USB MIDI2 support.
Prefix with usbd_, use midi2 consistently.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-06 17:49:12 +01:00
Johann Fischer
694c342885 samples: usb: add sample for the new USB DFU implementation
The sample defines an image that uses RAMdisk and also provides an
option to enable USB DFU flash backend for the "slot-1" flash partition.
Assuming the user runs this sample from the slot-0 partition, uploading
to flash should work fine for evaluation purposes.

If the sample is built with CONFIG_BOOTLOADER_MCUBOOT=y, the sample will
mark the image in slot 1 as pending after an image download.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-04 11:55:25 +01:00
Johann Fischer
3bfe163811 usb: device_next: implement blocklist for classes
In the usbd_register_all_classes(), we may need to skip some instances
as they may have very specific function like USB DFU "DFU mode" which
should not be available by default.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-02-04 11:55:25 +01:00
Titouan Christophe
9be79bc145 samples: subsys: usb: midi: add new sample
Add a sample application that demonstrates how to use the new USB-MIDI 2.0
device class. This shows how to set up the device tree, how to exchange
MIDI data with the host, and how to use the data accessors provided by
the new API.

Signed-off-by: Titouan Christophe <moiandme@gmail.com>
2025-01-31 19:50:26 +01:00
Mahesh Mahadevan
85bdab00de soc: mimxrt1180: Add USB support
This was tested on the MIMXRT1180 EVK board

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
2025-01-30 18:29:33 +01:00
Johann Fischer
81dc390115 usb: device_next: add bulk transfers to loopback function
This allows us to use the testusb Linux kernel tool again. All tests
involving control and bulk transfers should pass. Additionally, add a
shell command that allows the user to manually enqueue bulk transfers.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-01-29 04:16:42 +01:00
Gerson Fernando Budke
9e08560f08 samples: usb: dfu: Exclude Atmel SAM
The dfu sample filter seems not to work. It should select only boards
when slot0_partition and slot1_partition are define.

filter:
    dt_label_with_parent_compat_enabled("slot0_partition",
					"fixed-partitions")
and dt_label_with_parent_compat_enabled("slot1_partition",
					"fixed-partitions")
and dt_chosen_enabled("zephyr,flash-controller")
and CONFIG_FLASH_HAS_DRIVER_ENABLED

This means that sam4l_ek, same54_xpro and samr21_xpro should never be
selected because the final devicetree is defined without those
partitions. See below fragment from same54_xpro:

nvmctrl: nvmctrl@41004000 {
	compatible = "atmel,sam0-nvmctrl";
	reg = < 0x41004000 0x22 >;
	interrupts = < 0x1d 0x0 >, < 0x1e 0x0 >;
	#address-cells = < 0x1 >;
	#size-cells = < 0x1 >;
	lock-regions = < 0x20 >;
	flash0: flash@0 {
		compatible = "soc-nv-flash";
		write-block-size = < 0x8 >;
		reg = < 0x0 0x100000 >;
		partitions {
			compatible = "fixed-partitions";
			#address-cells = < 0x1 >;
			#size-cells = < 0x1 >;
			storage_partition: partition@fc000 {
				label = "storage";
				reg = < 0xfc000 0x4000 >;
			};
		};
	};
};

This excludes same54_xpro and samr21_xpro to avoid ci issues until ci
filter is fixed.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2025-01-24 13:15:57 +01:00
Fabio Baltieri
b0791400f6 usb: device_next: cdc_acm: allow setting the interface description
Add a interface-name string for the CDC-ACM node, this allow setting a
string that is then set as iInterface, which can then be used downstream
in an udev rule such as:

SUBSYSTEM=="tty", ACTION=="add",
ATTRS{interface}=="my interface descriptor",
SYMLINK+="tty-my-device"

To create known aliases for these ports.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-01-24 01:14:28 +01:00
David Leach
d29e2f342d boards: nxp: add RT1060 EVKC support
MIMXRT1060 EVK rev C initial support files.

Signed-off-by: David Leach <david.leach@nxp.com>
2025-01-21 19:27:39 +01:00
Declan Snyder
8ed80ddb37 boards: mimxrt1060_evk: Convert to variants
Convert qspi and hyperflash to variants instead of revisions by popular
demand.

And convert evkb into a revision instead of a different board.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-12-20 22:59:59 +01:00
Declan Snyder
0cdb35d978 boards: mimxrt1050_evk: Switch to variants
Switch from using revisions for hyperflash/qspi to using variants, by
popular demand.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-12-20 22:59:59 +01:00
Johann Fischer
65a603f12e samples: webusb-next: fix USB function buffer alignment
Use proper macro for buffer definition.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2024-12-17 11:38:22 +00:00
Johann Fischer
704b36f78f usb: device_next: remove redundant memset() after net_buf_alloc.*()
With changes introduced in commit 6a3602a306
("net: buf: Clear `user_data` on allocation")
our memset() calls are redundant.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2024-12-17 11:38:22 +00:00
Neil Chen
d031444b73 samples: usb: Exclude frdm_mcxa156 platform from dfu sample
Exclude the platform frdm_mcxa156 from dfu sample.

Signed-off-by: Neil Chen <cheng.chen_1@nxp.com>
2024-12-16 10:52:51 +01:00
Neil Chen
ef4e2b2463 samples: usb: Exclude frdm_mcxc444 platform from dfu sample
frdm_mcxc444 does not support MCUboot. Exclude the platform from dfu
sample.

Signed-off-by: Neil Chen <cheng.chen_1@nxp.com>
2024-12-12 11:09:03 +01:00
Gerard Marull-Paretas
d4a67e321b samples, tests: remove usage of space-separated lists
Convert them to native YAML lists. Support for space-separated
lists was deprecated in Twister a long time ago.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2024-12-04 14:14:53 -05:00
ZhongYao Luo
188a42b117 usb: device: fix unaligned memory access in Audio class
Use UNALIGNED_*, sys_get_* to fix unaligned memory
access issues

Signed-off-by: ZhongYao Luo <LuoZhongYao@gmail.com>
2024-11-26 15:44:45 -05:00
Johann Fischer
1687e192b5 samples: usb: add new WebUSB sample
Add a WebUSB sample that uses the new USB device support.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2024-11-19 09:53:29 -05:00
Johann Fischer
2d90df407f samples: usb: add samples function to setup USB device only
Add a function similar to sample_usbd_init_device(), but one that does
not initialize the device. It allows the application to set additional
features, such as additional descriptors.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2024-11-19 09:53:29 -05:00
Michal Smola
c76b984aae samples: usb: Exclude frdm_mcxc242 platform from dfu sample
frdm_mcxc242 does not support MCUboot. Exclude the platform from dfu
sample.

Signed-off-by: Michal Smola <michal.smola@nxp.com>
2024-10-25 05:11:44 +01:00
Jukka Rissanen
cc7d932cce samples: usb: common: Add NCM when setting code triple
Add NCM class to sample usbd initialization and the code
triple is set properly.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
2024-10-17 15:38:00 -04:00
Andrej Butok
e53eec0851 yaml: use EXTRA_CONF_FILE in .yaml files
Use EXTRA_CONF_FILE in sample yaml files,
that replaced deprecated OVERLAY_CONFIG
since the Zephyr v3.4 release.

Signed-off-by: Andrej Butok <andrey.butok@nxp.com>
2024-10-17 09:45:25 +02:00
Benjamin Cabé
1db9b009a7 doc: samples: Adopt code-sample-category across tree
This commit uses the new .. zephyr:code-sample-category directive to
categorize code samples across the tree.
Updates existing legacy references to manually defined targets to now
use :zephyr:code-sample-category: role instead.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-09-23 12:00:00 +02:00
Benjamin Cabé
9a16b93868 samples: hello_world: use zephyr:code-sample directive
Adds missing code-sample directive to the Hello World sample in
preparation for upcoming changes to the Zephyr documentation that will
be leveraging the provided description and metadata.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-09-16 10:05:18 +02:00