~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/power_supply/test_power_supply_properties.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Copyright (c) 2022, 2024 Collabora Ltd
  5 #
  6 # This test validates the power supply uAPI: namely, the files in sysfs and
  7 # lines in uevent that expose the power supply properties.
  8 #
  9 # By default all power supplies available are tested. Optionally the name of a
 10 # power supply can be passed as a parameter to test only that one instead.
 11 DIR="$(dirname "$(readlink -f "$0")")"
 12 
 13 . "${DIR}"/../kselftest/ktap_helpers.sh
 14 
 15 . "${DIR}"/helpers.sh
 16 
 17 count_tests() {
 18         SUPPLIES=$1
 19 
 20         # This needs to be updated every time a new test is added.
 21         NUM_TESTS=33
 22 
 23         total_tests=0
 24 
 25         for i in $SUPPLIES; do
 26                 total_tests=$((total_tests + NUM_TESTS))
 27         done
 28 
 29         echo "$total_tests"
 30 }
 31 
 32 ktap_print_header
 33 
 34 SYSFS_SUPPLIES=/sys/class/power_supply/
 35 
 36 if [ $# -eq 0 ]; then
 37         supplies=$(ls "$SYSFS_SUPPLIES")
 38 else
 39         supplies=$1
 40 fi
 41 
 42 ktap_set_plan "$(count_tests "$supplies")"
 43 
 44 for DEVNAME in $supplies; do
 45         ktap_print_msg Testing device "$DEVNAME"
 46 
 47         if [ ! -d "$SYSFS_SUPPLIES"/"$DEVNAME" ]; then
 48                 ktap_test_fail "$DEVNAME".exists
 49                 ktap_exit_fail_msg Device does not exist
 50         fi
 51 
 52         ktap_test_pass "$DEVNAME".exists
 53 
 54         test_uevent_prop NAME "$DEVNAME"
 55 
 56         test_sysfs_prop type
 57         SUPPLY_TYPE=$(cat "$SYSFS_SUPPLIES"/"$DEVNAME"/type)
 58         # This fails on kernels < 5.8 (needs 2ad3d74e3c69f)
 59         test_uevent_prop TYPE "$SUPPLY_TYPE"
 60 
 61         test_sysfs_prop_optional usb_type
 62 
 63         test_sysfs_prop_optional_range online 0 2
 64         test_sysfs_prop_optional_range present 0 1
 65 
 66         test_sysfs_prop_optional_list status "Unknown","Charging","Discharging","Not charging","Full"
 67 
 68         # Capacity is reported as percentage, thus any value less than 0 and
 69         # greater than 100 are not allowed.
 70         test_sysfs_prop_optional_range capacity 0 100 "%"
 71 
 72         test_sysfs_prop_optional_list capacity_level "Unknown","Critical","Low","Normal","High","Full"
 73 
 74         test_sysfs_prop_optional model_name
 75         test_sysfs_prop_optional manufacturer
 76         test_sysfs_prop_optional serial_number
 77         test_sysfs_prop_optional_list technology "Unknown","NiMH","Li-ion","Li-poly","LiFe","NiCd","LiMn"
 78 
 79         test_sysfs_prop_optional cycle_count
 80 
 81         test_sysfs_prop_optional_list scope "Unknown","System","Device"
 82 
 83         test_sysfs_prop_optional input_current_limit "uA"
 84         test_sysfs_prop_optional input_voltage_limit "uV"
 85 
 86         # Technically the power-supply class does not limit reported values.
 87         # E.g. one could expose an RTC backup-battery, which goes below 1.5V or
 88         # an electric vehicle battery with over 300V. But most devices do not
 89         # have a step-up capable regulator behind the battery and operate with
 90         # voltages considered safe to touch, so we limit the allowed range to
 91         # 1.8V-60V to catch drivers reporting incorrectly scaled values. E.g. a
 92         # common mistake is reporting data in mV instead of µV.
 93         test_sysfs_prop_optional_range voltage_now 1800000 60000000 "uV"
 94         test_sysfs_prop_optional_range voltage_min 1800000 60000000 "uV"
 95         test_sysfs_prop_optional_range voltage_max 1800000 60000000 "uV"
 96         test_sysfs_prop_optional_range voltage_min_design 1800000 60000000 "uV"
 97         test_sysfs_prop_optional_range voltage_max_design 1800000 60000000 "uV"
 98 
 99         # current based systems
100         test_sysfs_prop_optional current_now "uA"
101         test_sysfs_prop_optional current_max "uA"
102         test_sysfs_prop_optional charge_now "uAh"
103         test_sysfs_prop_optional charge_full "uAh"
104         test_sysfs_prop_optional charge_full_design "uAh"
105 
106         # power based systems
107         test_sysfs_prop_optional power_now "uW"
108         test_sysfs_prop_optional energy_now "uWh"
109         test_sysfs_prop_optional energy_full "uWh"
110         test_sysfs_prop_optional energy_full_design "uWh"
111         test_sysfs_prop_optional energy_full_design "uWh"
112 done
113 
114 ktap_finished

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php