#!/bin/sh # B10A read-only probe: power_supply/extcon/regulator state + PM8916 charger/BMS/VADC/PON register dump. # Only reads (regmap debugfs positioned reads, sysfs/proc reads). No writes to any device register. grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug R=/sys/kernel/debug/regmap/0-00/registers echo "== B10A-PROBE-START $(date -u +%s) up $(cut -d' ' -f1 /proc/uptime)" uname -a echo "== power_supply"; ls -la /sys/class/power_supply/ 2>&1 for d in /sys/class/power_supply/*; do [ -e "$d/uevent" ] && { echo "-- $d"; cat "$d/uevent"; }; done echo "== extcon"; for e in /sys/class/extcon/*; do echo "-- $e $(cat $e/name 2>/dev/null)"; cat $e/state 2>/dev/null; done echo "== thermal"; for t in /sys/class/thermal/thermal_zone*; do echo "$t $(cat $t/type) $(cat $t/temp 2>/dev/null)"; done echo "== hwmon"; for h in /sys/class/hwmon/*; do echo "$h $(cat $h/name)"; done echo "== iio"; ls /sys/bus/iio/devices 2>&1 echo "== regmaps"; ls /sys/kernel/debug/regmap/ echo "== regulator_summary"; cat /sys/kernel/debug/regulator/regulator_summary 2>&1 | head -60 echo "== udc"; for u in /sys/class/udc/*; do echo "$u state=$(cat $u/state 2>/dev/null) speed=$(cat $u/current_speed 2>/dev/null)"; done echo "== dmesg-power"; dmesg | grep -i -E "charg|batt|bms|vbus|usb_vbus|extcon|power_supply|ci_hdrc|pm8916|pon|uvlo|thermal|tsens|spmi" | head -80 echo "== interrupts"; grep -i -E "pm8916|spmi|pon|usb|chg|bat" /proc/interrupts for blk in 0100 0800 0900 1000 1200 1300 1600 2400 2800 3100 3400 4000 a300; do echo "== REG $blk"; dd if=$R bs=9 skip=$((0x$blk)) count=256 2>/dev/null done echo "== B10A-PROBE-END"