2025-06-09 15:07:26 +02:00

70 lines
1.8 KiB
Bash

#!/bin/sh
SUBSYSTEM=$(uname -n || $HOSTNAME)
SUBSYSTEM=${SUBSYSTEM#*-}
HWIDX0=0
HWIDX1=0
HWIDX2=0
HWIDX3=0
HWIDX4=0
if [[ ! -e /dev/sysregs ]]; then
exit 1
fi
if [[ "$SUBSYSTEM" == "jacinto" ]]; then
# set variable gpios to input if necessary
if [[ $(cat /dev/sysregs/DSP_LED_DIR) -eq 0x00000000 ]]; then
SAVE_DSP_LED_DIR=$(cat /dev/sysregs/DSP_LED_DIR)
echo 0x00000001>/dev/sysregs/DSP_LED_DIR
fi
if [[ $(cat /dev/sysregs/ARM_LED_DIR) -eq 0x00000000 ]]; then
SAVE_ARM_LED_DIR=$(cat /dev/sysregs/ARM_LED_DIR)
echo 0x00000001>/dev/sysregs/ARM_LED_DIR
fi
# determine the hardware index
if [[ ! -e /dev/sysregs/HW_ID0 ]]; then
exit 1
fi
HWIDX0=$(($(cat /dev/sysregs/HW_ID0)))
HWIDX1=$(($(cat /dev/sysregs/HW_ID1)))
HWIDX2=$(($(cat /dev/sysregs/HW_ID2)))
HWIDX3=$(($(cat /dev/sysregs/HW_ID3)))
# ignore msb pin due to problems on rse targets
# HWIDX4=$(($(cat /dev/sysregs/HW_ID4)))
# check and reset gpios
if [[ -n $SAVE_DSP_LED_DIR ]]; then
if [[ $(cat /dev/sysregs/DSP_LED_DIR) -eq $SAVE_DSP_LED_DIR ]]; then
exit 1
fi
echo $SAVE_DSP_LED_DIR>/dev/sysregs/DSP_LED_DIR
fi
if [[ -n $SAVE_ARM_LED_DIR ]]; then
if [[ $(cat /dev/sysregs/ARM_LED_DIR) -eq $SAVE_ARM_LED_DIR ]]; then
exit 1
fi
echo $SAVE_ARM_LED_DIR>/dev/sysregs/ARM_LED_DIR
fi
elif [[ "$SUBSYSTEM" == "omap" ]]; then
# determine the hardware index
if [[ ! -e /dev/sysregs/HW_IDX0 ]]; then
exit 1
fi
HWIDX0=$(($(cat /dev/sysregs/HW_IDX0)))
HWIDX1=$(($(cat /dev/sysregs/HW_IDX1)))
HWIDX2=$(($(cat /dev/sysregs/HW_IDX2)))
HWIDX3=$(($(cat /dev/sysregs/HW_IDX3)))
if [[ -e /dev/sysregs/HW_IDX4 ]]; then
HWIDX4=$(($(cat /dev/sysregs/HW_IDX4)))
fi
else
exit 1
fi
echo $((2#$HWIDX4$HWIDX3$HWIDX2$HWIDX1$HWIDX0))
exit 0