#!/bin/sh # dump some usb registers # usbreg.sh check_platform() { local _hw _hw=`grep '^Hardware' /proc/cpuinfo` [ "${_hw#*AM33XX}" = "$_hw" ] || { PLATFORM="am335x"; return 0; } [ "${_hw#*AM43}" = "$_hw" ] || { PLATFORM="am437x"; return 0; } [ "${_hw#*DRA74X}" = "$_hw" ] || { PLATFORM="am57x"; return 0; } PLATFORM="unkown" return 1 } [ "$1" = "" ] && { echo ' bus #0:' $0 0 echo ' bus #1:' $0 1 exit 0 } bus=$1 [ "$bus" = "0" ] || [ "$bus" = "1" ] || { echo "Error: unknown bus number"; exit 1; } check_platform case $PLATFORM in am335x) bus_ent=musb-hdrc.${bus}.auto ;; am437x) bus_ent=`printf "%x" $((0x48390000+${bus}*0x40000))`.usb ;; am57x) bus_ent=`printf "%x" $((0x48890000+${bus}*0x40000))`.usb ;; *) echo "Error: unknown platform" exit 2 ;; esac entry=/sys/kernel/debug/${bus_ent}/regdump [ -f $entry ] || { echo "$entry not found"; exit 3; } case $PLATFORM in am335x) grep 'Power\|DevCtl' $entry ;; *) grep GCTL $entry grep DCTL $entry grep 'OCFG\|OCTL\|OSTS' $entry ;; esac