1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/bin/bash
- echo "OrangePi-i96 fixup GPIO pins"
- echo "Version 1.0"
- PORTC_GPIO_MASK=0
- PORTA_GPIO_MASK=0x7e508000
- PORTB_GPIO_MASK=0
- PORTD_GPIO_MASK=0xc
- PORTB_GPIO_MASK_NO_CTSRTS=0x0x300
- PORTC_SF_MASK=0xfffffe3f
- PORTA_SF_MASK=0xffff91a0
- PORTB_SF_MASK=0xfffffc3f
- PORTD_SF_MASK=0xFFFFFFFF
- PORTC_IOMUX=0x11a09008
- PORTA_IOMUX=0x11a0900c
- PORTB_IOMUX=0x11a09010
- PORTD_IOMUX=0x11a09014
- DEVMEM=''
- if [[ -x /usr/bin/devmem2 ]]
- then
- DEVMEM='/usr/bin/devmem2'
- elif [[ -x /usr/local/bin/devmem2 ]]
- then
- DEVMEM='/usr/localbin/devmem2'
- elif [[ -x /usr/local/bin/devmem2.py ]]
- then
- DEVMEM='/usr/local/bin/devmem2.py'
- else
- echo "devmem2 not installed, no fixup done"
- return 1
- fi
- get_word() {
- A=`$DEVMEM $1`
- A=${A#*: }
- echo $A
- }
- or_bits() {
- echo "===" $1 "==="
- READ_VALUE=`get_word $2`
- WRITE_VALUE=$(($READ_VALUE | $3))
- $DEVMEM $2 w $WRITE_VALUE >> /dev/null
- echo "read:" $READ_VALUE " write:" `printf '0x%x' $WRITE_VALUE` "readback: " `get_word $2`
- }
- or_bits "PORTC set GPIO" $PORTC_IOMUX $PORTC_GPIO_MASK
- or_bits "PORTA set GPIO" $PORTA_IOMUX $PORTA_GPIO_MASK
- or_bits "PORTB set GPIO" $PORTB_IOMUX $PORTB_GPIO_MASK
- or_bits "PORTD set GPIO" $PORTD_IOMUX $PORTD_GPIO_MASK
- and_bits() {
- echo "===" $1 "==="
- READ_VALUE=`get_word $2`
- WRITE_VALUE=$(($READ_VALUE & $3))
- $DEVMEM $2 w $WRITE_VALUE >> /dev/null
- echo "read:" $READ_VALUE " write:" `printf '0x%x' $WRITE_VALUE` "readback: " `get_word $2`
- }
- and_bits "PORTC set SPECIAL FUNCTION" $PORTC_IOMUX $PORTC_SF_MASK
- and_bits "PORTA set SPECIAL FUNCTION" $PORTA_IOMUX $PORTA_SF_MASK
- and_bits "PORTB set SPECIAL FUNCTION" $PORTB_IOMUX $PORTB_SF_MASK
|