
uio_map_info ()
{
    local mapX="$1/maps/$2"
    local name="$(< ${mapX}/name)"
    local addr="$(< ${mapX}/addr)"
    local size="$(< ${mapX}/size)"
    local offset="$(< ${mapX}/offset)"
    echo " $2 name    $name"
    echo " $2 addr    $addr"
    echo " $2 size    $size"
    echo " $2 offset  $offset"
}

uio_info ()
{
    local uioX="/sys/class/uio/$1"
    local dev="$(< ${uioX}/dev)"
    local name="$(< ${uioX}/name)"
    local version="$(< ${uioX}/version)"
    echo "dev       $dev"
    echo "name      $name"
    echo "version   $version"
    for m in $(ls "$uioX/maps")
    do
        uio_map_info "$uioX" "$m"
    done
}

for i in $(ls /sys/class/uio)
do
    echo
    echo ===== $i =====
    uio_info $i
done

