blob: 1e4402238b8dabd6e7fa0b63cb52a05158bf2f67 [file] [log] [blame]
# led output register
led=0x90470000
red=13
blue=12
# select register, sets gpio or pwm mode
select=0x90470058
mode_gpio=0
mode_pwm=1
# pwm
pwm_ctrl=0x90458000
# pwm 5 is mapped to red (gpio 13)
red_pwm_hi=0x90458030
red_pwm_lo=0x90458034
# pwm 4 is mapped to blue (gpio 12)
blue_pwm_hi=0x90458028
blue_pwm_lo=0x9045802c
setreg()
{
devmem $1 32 $2 > /dev/null
}
getreg()
{
devmem $1
}
hex()
{
printf "0x%08x" $1
}
select()
{
pin=$1
val=$2
shift=$((2 * $pin))
g=$(getreg $select)
v=$(( ($g & ~(3 << $shift)) | ($val << $shift) ))
h=$(hex $v)
setreg $select $h
}
getreg $pwm_ctrl
setreg $pwm_ctrl 0x800000ff
getreg $pwm_ctrl
select $red $mode_pwm
select $blue $mode_pwm
# max
max=0x800003ff # ~952Hz
val=0x3ff
while true; do
echo -n 'Enter duty cycle 0-100 -> '
read duty
min=$(($val * $duty / 100))
echo $duty
setreg $blue_pwm_lo $(hex $(($min)))
setreg $blue_pwm_hi $max
setreg $red_pwm_lo $val
setreg $red_pwm_hi $max
done
#select $red $mode_gpio
#select $blue $mode_gpio