From 2294035acb128bbdcd59f395f7d5f35b62ea021e Mon Sep 17 00:00:00 2001 From: Anders Roxell Date: Wed, 11 Sep 2024 11:30:58 +0200 Subject: [PATCH] automated: linux: add peripheral usb-gadget-framwork This commit introduces a new framework for testing USB gadget functionalities. The addition includes support for configuring a mass storage and testing USB peripheral devices within the test environment. Signed-off-by: Anders Roxell --- .../linux/peripherals/usb-gadget-framwork.sh | 47 +++++++++++++++++++ .../peripherals/usb-gadget-framwork.yaml | 22 +++++++++ 2 files changed, 69 insertions(+) create mode 100755 automated/linux/peripherals/usb-gadget-framwork.sh create mode 100644 automated/linux/peripherals/usb-gadget-framwork.yaml diff --git a/automated/linux/peripherals/usb-gadget-framwork.sh b/automated/linux/peripherals/usb-gadget-framwork.sh new file mode 100755 index 000000000..1a2031806 --- /dev/null +++ b/automated/linux/peripherals/usb-gadget-framwork.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2024 Linaro Ltd. + +# shellcheck disable=SC1091 +. ../../lib/sh-test-lib +OUTPUT="$(pwd)/output" +RESULT_FILE="${OUTPUT}/result.txt" +export RESULT_FILE + +! check_root && error_msg "This script must be run as root" +create_out_dir "${OUTPUT}" +info_msg "Output directory: ${OUTPUT}" + +# CONFIG_USB_GADGET=y +# CONFIG_USB_CONFIGFS=y +# CONFIG_USB_DUMMY_HCD=m +# CONFIG_USB_F_MASS_STORAGE=m + +eval "modprobe dummy_hcd" +check_return "modprobe dummy_hcd" + +#Setup USB Gadget in ConfigFS +mkdir /sys/kernel/config/usb_gadget/g1 +cd /sys/kernel/config/usb_gadget/g1 || exit +echo 0x1d6b > idVendor # Linux Foundation +echo 0x0104 > idProduct # Multifunction Composite Gadget +mkdir strings/0x409 +echo "0123456789" > strings/0x409/serialnumber +echo "My Gadget" > strings/0x409/manufacturer +echo "Test Device" > strings/0x409/product + +eval "dd bs=1M count=16 if=/dev/zero of=/tmp/lun0.img" +check_return "dd bs=1M count=16 if=/dev/zero of=/tmp/lun0.img" + +# Create function and configure endpoint (e.g., mass storage, serial) +mkdir -p functions/mass_storage.0 + +eval "echo /tmp/lun0.img > functions/mass_storage.0/lun.0/file" +check_return "echo /tmp/lun0.img > functions/mass_storage.0/lun.0/file" + +# Bind the gadget to the virtual controller +mkdir configs/c.1 +ln -s functions/mass_storage.0 configs/c.1/ +eval "echo dummy_udc.0 > UDC" +check_return "echo dummy_udc.0 > UDC" +cd - || exit diff --git a/automated/linux/peripherals/usb-gadget-framwork.yaml b/automated/linux/peripherals/usb-gadget-framwork.yaml new file mode 100644 index 000000000..4f3ee244c --- /dev/null +++ b/automated/linux/peripherals/usb-gadget-framwork.yaml @@ -0,0 +1,22 @@ +metadata: + format: Lava-Test Test Definition 1.0 + name: module-tests + description: | + USB Gadget Framwork test + maintainer: + - anders.roxell@linaro.org + os: + - debian + - ubuntu + - openembedded + scope: + - functional + devices: + - rockpi4 + - x86 + +run: + steps: + - cd ./automated/linux/peripherals/ + - ./usb-gadget-framwork.sh + - ../../utils/send-to-lava.sh ./output/result.txt