blob: 7234e47a1ac3f003d1814e536632ee6b9a328ce4 [file] [log] [blame]
Ryan Harkindd73c2a2018-04-20 11:40:36 +01001#!/bin/sh
2
Naresh Kamboju72fb6f42019-03-26 12:19:33 +05303# shellcheck disable=SC1091
Ryan Harkindd73c2a2018-04-20 11:40:36 +01004. ../../lib/sh-test-lib
5OUTPUT="$(pwd)/output"
Chase Qi3cbb5e02018-09-14 15:27:37 +08006export RESULT_FILE="${OUTPUT}/result.txt"
Ryan Harkindd73c2a2018-04-20 11:40:36 +01007TEST_SUITE="v4l2-compliance"
8
Chase Qi3cbb5e02018-09-14 15:27:37 +08009VIDEO_DEVICE="/dev/video0"
10VIDEO_DRIVER=""
11
Ryan Harkindd73c2a2018-04-20 11:40:36 +010012usage() {
Chase Qi3cbb5e02018-09-14 15:27:37 +080013 echo "Usage: $0 [-d <video device> -D <video driver>" 1>&2
Ryan Harkindd73c2a2018-04-20 11:40:36 +010014 exit 1
15}
16
Chase Qi3cbb5e02018-09-14 15:27:37 +080017while getopts "d:D:h" o; do
Ryan Harkindd73c2a2018-04-20 11:40:36 +010018 case "$o" in
19 d) VIDEO_DEVICE="${OPTARG}" ;;
Chase Qi3cbb5e02018-09-14 15:27:37 +080020 D) VIDEO_DRIVER="${OPTARG}" ;;
Ryan Harkindd73c2a2018-04-20 11:40:36 +010021 h|*) usage ;;
22 esac
23done
24
25echo VIDEO_DEVICE="${VIDEO_DEVICE}"
Chase Qi3cbb5e02018-09-14 15:27:37 +080026echo VIDEO_DRIVER="${VIDEO_DRIVER}"
Ryan Harkindd73c2a2018-04-20 11:40:36 +010027
28# Test run.
29create_out_dir "${OUTPUT}"
30
Chase Qi3cbb5e02018-09-14 15:27:37 +080031# Try to install v4l-utils when v4l2-compliance not found.
32# install_deps() skips installation on unsupported distro
33# like OE based builds by default.
Arthur Sheb0347402018-12-12 09:34:29 -080034which v4l2-compliance > /dev/null || install_deps "v4l-utils"
35which v4l2-compliance > /dev/null
Ryan Harkindd73c2a2018-04-20 11:40:36 +010036exit_on_fail "v4l2-existence-check"
37
Chase Qi3cbb5e02018-09-14 15:27:37 +080038if [ -n "${VIDEO_DRIVER}" ] && ! lsmod | grep "${VIDEO_DRIVER%.*}"; then
39 check_root || error_msg "Please run this script as root to modprobe driver module!"
40 ln -s "$(find "/lib/modules/$(uname -r)" -name "${VIDEO_DRIVER}*")" \
41 "/lib/modules/$(uname -r)"
42 depmod -a
43 modprobe "${VIDEO_DRIVER%.*}" no_error_inj=1
44 exit_on_fail "modprobe-${VIDEO_DRIVER%.*}"
45fi
46
Naresh Kamboju72fb6f42019-03-26 12:19:33 +053047if [ -n "${VIDEO_DEVICE}" ] && [ -e "${VIDEO_DEVICE}" ]; then
Ryan Harkindd73c2a2018-04-20 11:40:36 +010048 info_msg "Running v4l2-compliance device test..."
49 LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt"
50 test_cmd="v4l2-compliance -v -d ${VIDEO_DEVICE} 2>&1"
51 pipe0_status "${test_cmd}" "tee ${LOG_FILE}"
52 check_return "v4l2-compliance"
53else
54 info_msg "Skipping v4l2-compliance device test..."
55fi
56
Ryan Harkindd73c2a2018-04-20 11:40:36 +010057# Parse test log.
58grep -e FAIL -e OK "${LOG_FILE}" | \
59 sed -e 's/^[ \t]*//' \
60 -e 's/test //' \
61 -e 's/ (Not Supported)//' \
62 -e 's/ /_/g' \
63 -e 's/:_/ /' \
Naresh Kamboju72fb6f42019-03-26 12:19:33 +053064 -e 's/ OK/ pass/' \
65 -e 's/ FAIL/ fail/' \
Naresh Kamboju3aad7fc2019-03-27 21:31:54 +053066 -e 's/\//-/g' \
Chase Qi3cbb5e02018-09-14 15:27:37 +080067 >> "${RESULT_FILE}"