|
@@ -0,0 +1,77 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+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
|
|
|
+
|