From afd85ad7498ddc7da4ab85727b67098b9f7319c2 Mon Sep 17 00:00:00 2001 From: Aanchal Chaurasia Date: Mon, 2 Feb 2026 03:00:38 +0530 Subject: [PATCH 1/4] Add test script to validate USB UAC The shell script verifies the enumeration of USB Audio Class devices. Signed-off-by: Aanchal Chaurasia --- Runner/suites/Kernel/Baseport/usb_uac/run.sh | 98 ++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 Runner/suites/Kernel/Baseport/usb_uac/run.sh diff --git a/Runner/suites/Kernel/Baseport/usb_uac/run.sh b/Runner/suites/Kernel/Baseport/usb_uac/run.sh new file mode 100755 index 00000000..9fa8ea3d --- /dev/null +++ b/Runner/suites/Kernel/Baseport/usb_uac/run.sh @@ -0,0 +1,98 @@ +#!/bin/sh + +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause +# Validate USB Audio Class (UAC) device detection +# Requires at least one USB Audio peripheral (e.g., USB headset, microphone, sound card) connected to a USB Host port. + +TESTNAME="usb_uac" + +# Robustly find and source init_env +SCRIPT_DIR="$( + cd "$(dirname "$0")" || exit 1 + pwd +)" + +# Default result file (works even before functestlib is available) +# shellcheck disable=SC2034 +RES_FILE="$SCRIPT_DIR/${TESTNAME}.res" + +INIT_ENV="" +SEARCH="$SCRIPT_DIR" +while [ "$SEARCH" != "/" ]; do + if [ -f "$SEARCH/init_env" ]; then + INIT_ENV="$SEARCH/init_env" + break + fi + SEARCH=$(dirname "$SEARCH") +done + +if [ -z "$INIT_ENV" ]; then + echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2 + echo "$TESTNAME SKIP" >"$RES_FILE" 2>/dev/null || true + exit 0 +fi + +# Only source if not already loaded (idempotent) +if [ -z "${__INIT_ENV_LOADED:-}" ]; then + # shellcheck disable=SC1090 + . "$INIT_ENV" + __INIT_ENV_LOADED=1 +fi +# Always source functestlib.sh, using $TOOLS exported by init_env +# shellcheck disable=SC1090,SC1091 +. "$TOOLS/functestlib.sh" + +# Resolve test path and cd (single SKIP/exit path) +SKIP_REASON="" +test_path=$(find_test_case_by_name "$TESTNAME") +if [ -z "$test_path" ] || [ ! -d "$test_path" ]; then + SKIP_REASON="$TESTNAME SKIP - test path not found" +elif ! cd "$test_path"; then + SKIP_REASON="$TESTNAME SKIP - cannot cd into $test_path" +else + RES_FILE="$test_path/${TESTNAME}.res" +fi + +if [ -n "$SKIP_REASON" ]; then + log_skip "$SKIP_REASON" + echo "$TESTNAME SKIP" >"$RES_FILE" 2>/dev/null || true + exit 0 +fi + +log_info "-----------------------------------------------------------------------------------------" +log_info "-------------------Starting $TESTNAME Testcase----------------------------" +log_info "=== Test Initialization ===" + +# Check if grep is installed, else skip test +deps_list="grep sed sort wc" +if ! check_dependencies "$deps_list"; then + log_skip "$TESTNAME SKIP - missing dependencies: $deps_list" + echo "$TESTNAME SKIP" >"$RES_FILE" + exit 0 +fi + +# Count uniques devices with bInterfaceClass = 01 (UAC) under /sys/bus/usb/devices +audio_device_count=0 +log_info "=== USB Audio device Detection ===" +audio_device_count=$( + for f in /sys/bus/usb/devices/*/bInterfaceClass; do + [ -r "$f" ] || continue + if grep -qx '01' "$f"; then + d=${f%/bInterfaceClass} + echo "${d##*/}" + fi + done 2>/dev/null | sed 's/:.*$//' | sort -u | wc -l | tr -d '[:space:]' + ) + +log_info "Number of USB audio devices found: $audio_device_count" + +if [ "$audio_device_count" -gt 0 ]; then + log_pass "$TESTNAME : Test Passed - USB Audio device(s) detected" + echo "$TESTNAME PASS" > "$RES_FILE" + exit 0 +else + log_fail "$TESTNAME : Test Failed - No 'USB Audio Device' found" + echo "$TESTNAME FAIL" > "$RES_FILE" + exit 0 +fi From d650cb339df87ddda5c62b6b4f12133c2e58bc0c Mon Sep 17 00:00:00 2001 From: Aanchal Chaurasia Date: Mon, 2 Feb 2026 03:01:33 +0530 Subject: [PATCH 2/4] Add documentation for Runner/../usb_uac/run.sh Added setup information and basic requirements. This informs the tester of the hardware setup requirement before starting test. Signed-off-by: Aanchal Chaurasia --- .../suites/Kernel/Baseport/usb_uac/README.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Runner/suites/Kernel/Baseport/usb_uac/README.md diff --git a/Runner/suites/Kernel/Baseport/usb_uac/README.md b/Runner/suites/Kernel/Baseport/usb_uac/README.md new file mode 100644 index 00000000..2fb2036b --- /dev/null +++ b/Runner/suites/Kernel/Baseport/usb_uac/README.md @@ -0,0 +1,34 @@ +``` +Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +SPDX-License-Identifier: BSD-3-Clause +``` + +# USB Audio Class Validation + +## Overview + +This shell script executes on the DUT (Device-Under-Test) and verifies enumeration of connected USB Audio Class (UAC) Devices. + +--- + +## Setup + +- Connect USB Audio peripheral(s) to USB port(s) on DUT. +- Only applicable for USB ports that support Host Mode functionality. +- USB Audio peripherals examples: USB headset, microphone, sound card, etc. + +--- + +## Usage +### Instructions: +1. **Copy the test suite to the target device** using `scp` or any preferred method. +2. **Navigate to the test directory** on the target device. +3. **Run the test script** using the test runner or directly. + +--- + +### Quick Example +``` +cd Runner +./run-test.sh usb_uac +``` From e4b2b0cc6715df1783727d460b20fe50d1192291 Mon Sep 17 00:00:00 2001 From: Aanchal Chaurasia Date: Mon, 2 Feb 2026 03:02:49 +0530 Subject: [PATCH 3/4] Add test definition for usb_uac Individual test definition is meant to be used for debugging the test script running in LAVA. Signed-off-by: Aanchal Chaurasia --- .../suites/Kernel/Baseport/usb_uac/usb_uac.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml diff --git a/Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml b/Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml new file mode 100644 index 00000000..b324c6be --- /dev/null +++ b/Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml @@ -0,0 +1,16 @@ +metadata: + name: usb_uac + format: "Lava-Test Test Definition 1.0" + description: "This shell script executes on the DUT (Device-Under-Test) and verifies enumeration of connected USB Audio Class (UAC) Devices." + os: + - linux + scope: + - functional + +run: + steps: + - REPO_PATH=$PWD + - cd Runner/suites/Kernel/Baseport/USB/usb_uac + - ./run.sh || true + - $REPO_PATH/Runner/utils/send-to-lava.sh usb_uac.res + From 9f1040f2f523f870709396df08cc9add99d14e52 Mon Sep 17 00:00:00 2001 From: Aanchal Chaurasia Date: Tue, 17 Feb 2026 11:28:51 +0530 Subject: [PATCH 4/4] Move Baseport/usb_uac to Baseport/USB/usb_uac Move files from ../Baseport/usb_uac to ../Baseport/USB/usb_uac for a cleaner directory structure Signed-off-by: Aanchal Chaurasia --- Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/README.md | 0 Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/run.sh | 0 Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/usb_uac.yaml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/README.md (100%) rename Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/run.sh (100%) rename Runner/suites/Kernel/Baseport/{ => USB}/usb_uac/usb_uac.yaml (100%) diff --git a/Runner/suites/Kernel/Baseport/usb_uac/README.md b/Runner/suites/Kernel/Baseport/USB/usb_uac/README.md similarity index 100% rename from Runner/suites/Kernel/Baseport/usb_uac/README.md rename to Runner/suites/Kernel/Baseport/USB/usb_uac/README.md diff --git a/Runner/suites/Kernel/Baseport/usb_uac/run.sh b/Runner/suites/Kernel/Baseport/USB/usb_uac/run.sh similarity index 100% rename from Runner/suites/Kernel/Baseport/usb_uac/run.sh rename to Runner/suites/Kernel/Baseport/USB/usb_uac/run.sh diff --git a/Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml b/Runner/suites/Kernel/Baseport/USB/usb_uac/usb_uac.yaml similarity index 100% rename from Runner/suites/Kernel/Baseport/usb_uac/usb_uac.yaml rename to Runner/suites/Kernel/Baseport/USB/usb_uac/usb_uac.yaml