Skip to content

Instantly share code, notes, and snippets.

@chertov
Last active July 2, 2019 08:00
Show Gist options
  • Save chertov/26f0a1b8ddeb948126c8fbf426913591 to your computer and use it in GitHub Desktop.
Save chertov/26f0a1b8ddeb948126c8fbf426913591 to your computer and use it in GitHub Desktop.
Monitor pins
#!/bin/sh
muxctrl_reg01=004 # 0: SENSOR_RSTN, 1: GPIO0_5
# muxctrl_reg02=008 # 000: GPIO0_6, 001: FLASH_TRIG, 010: SFC_EMMC_BOOT_MODE, 011: SPI1_CSN1, 100: VI_VS_BT1120
muxctrl_reg03=00C # 000: GPIO0_7, 001: SHUTTER_TRIG, 010: SFC_DEVICE_MODE, 100: VI_HS_BT1120
# muxctrl_reg04=010 # 000: GPIO2_0, 001: RMII_CLK, 011: VO_CLK, 100: SDIO1_CCLK_OUT
# muxctrl_reg05=014 # 000: GPIO2_1, 001: RMII_TX_EN, 011: VO_VS, 100: SDIO1_CARD_DETECT
# muxctrl_reg06=018 # 000: GPIO2_2, 001: RMII_TXD0, 011: VO_DATA5, 100: SDIO1_CWPR
# muxctrl_reg07=01C # 000: GPIO2_3, 001: RMII_TXD1, 011: VO_DE, 100: SDIO1_CDATA1
# muxctrl_reg08=020 # 000: GPIO2_4, 001: RMII_RX_DV, 011: VO_DATA7, 100: SDIO1_CDATA0
# muxctrl_reg09=024 # 000: GPIO2_5, 001: RMII_RXD0, 011: VO_DATA2, 100: SDIO1_CDATA3
# muxctrl_reg10=028 # 000: GPIO2_6, 001: RMII_RXD1, 011: VO_DATA3, 100: SDIO1_CCMD
# muxctrl_reg11=02C # 000: GPIO2_7, 001: EPHY_RST, 010: BOOT_SEL, 011: VO_HS, 100: SDIO1_CARD_POWER_EN
# muxctrl_reg12=030 # 00: GPIO0_3, 01: SPI1_CSN1, 11: VO_DATA0
# muxctrl_reg13=034 # 000: GPIO3_0, 001: EPHY_CLK, 011: VO_DATA1, 100: SDIO1_CDATA2
# muxctrl_reg14=038 # 00: GPIO3_1, 01: MDCK, 10: BOOTROM_SEL, 11: VO_DATA6
# muxctrl_reg15=03C # 00: GPIO3_2, 01: MDIO, 11: VO_DATA4
# muxctrl_reg16=040 # 00: GPIO3_3, 01: SPI0_SCLK, 10: I2C0_SCL
# muxctrl_reg17=044 # 00: GPIO3_4, 01: SPI0_SDO, 10: I2C0_SDA
# muxctrl_reg18=048 # 0: GPIO3_5, 1: SPI0_SDI
# muxctrl_reg19=04C # 0: GPIO3_6, 1: SPI0_CSN
# muxctrl_reg20=050 # 00: GPIO3_7, 01: SPI1_SCLK, 10: I2C1_SCL
# muxctrl_reg21=054 # 00: GPIO4_0, 01: SPI1_SDO, 10: I2C1_SDA
# muxctrl_reg22=058 # 0: GPIO4_1, 1: SPI1_SDI
# muxctrl_reg23=05C # 0: GPIO4_2, 1: SPI1_CSN0
muxctrl_reg24=060 # 0: GPIO4_3, 1: I2C2_SDA
muxctrl_reg25=064 # 0: GPIO4_4, 1: I2C2_SCL
muxctrl_reg26=068 # 0: GPIO4_5, 1: USB_OVRCUR
muxctrl_reg27=06C # 0: GPIO4_6, 1: USB_PWREN
muxctrl_reg28=070 # 000: GPIO0_0, 001: IR_IN, 010: TEMPER_DQ
muxctrl_reg29=074 # 000: GPIO0_1, 010: TEMPER_DQ
muxctrl_reg30=078 # 000: GPIO0_2, 010: TEMPER_DQ
# muxctrl_reg31=07C # 000: GPIO1_0, 001: VI_DATA13, 011: I2S_BCLK_TX, 100: PWM0
# muxctrl_reg32=080 # 000: GPIO1_1, 001: VI_DATA10, 011: I2S_SD_TX, 100: UART1_TXD
# muxctrl_reg33=080 # 000: GPIO1_2, 001: VI_DATA12, 011: I2S_MCLK, 100: UART1_CTSN
# muxctrl_reg34=088 # 000: GPIO1_3, 001: VI_DATA11, 011: I2S_WS_TX, 100: UART2_RXD
# muxctrl_reg35=08C # 000: GPIO1_4, 001: VI_DATA15, 010: VI_VS_SEN, 011: I2S_WS_RX, 100: UART1_RXD
# muxctrl_reg36=090 # 000: GPIO1_5, 001: VI_DATA14, 010: VI_HS_SEN, 011: I2S_BCLK_RX, 100: UART1_RTSN
# muxctrl_reg37=094 # 000: GPIO1_6, 001: VI_DATA9, 011: I2S_SD_RX, 100: UART2_TXD
# muxctrl_reg38=098 # 000: GPIO1_7, 001: SDIO0_CARD_POWER_EN
# muxctrl_reg39=09C # 0: GPIO4_7, 1: SDIO0_CARD_DETECT
# muxctrl_reg40=0A0 # 0: GPIO5_0, 1: SDIO0_CWPR
# muxctrl_reg41=0A4 # 0: GPIO5_1, 1: SDIO0_CCLK_OUT
# muxctrl_reg42=0A8 # 0: GPIO5_2, 1: SDIO0_CCMD
# muxctrl_reg43=0AC # 0: GPIO5_3, 1: SDIO0_CDATA0
# muxctrl_reg44=0B0 # 00: TEST_CLK, 01: SDIO0_CDATA1, 10: GPIO5_4
# muxctrl_reg45=0B4 # 0: GPIO5_5, 1: SDIO0_CDATA2
# muxctrl_reg46=0B8 # 0: GPIO5_6, 1: SDIO0_CDATA3
# muxctrl_reg47=0BC # 00: GPIO5_7, 01: EMMC_DATA6, 10: I2S_SD_TX, 11: UART1_RTSN
# muxctrl_reg48=0C0 # 00: GPIO6_0, 01: EMMC_DATA5, 10: I2S_WS_TX, 11: UART1_RXD
# muxctrl_reg49=0C4 # 00: GPIO6_1, 01: EMMC_DATA7, 10: I2S_MCLK, 11: UART1_CTSN
# muxctrl_reg50=0C8 # 00: GPIO6_2, 01: EMMC_DS, 10: I2S_SD_RX, 11: UART1_TXD
# muxctrl_reg51=0CC # 00: GPIO6_3, 01: EMMC_DATA1, 11: UART2_RXD
# muxctrl_reg52=0D0 # 00: GPIO6_4, 01: EMMC_DATA2, 10: I2S_BCLK_TX, 11: UART2_TXD
# muxctrl_reg53=0D4 # 00: GPIO6_5, 01: JTAG_TRSTN, 10: SPI1_CSN1, 11: I2S_MCLK
# muxctrl_reg54=0D8 # 000: GPIO6_6, 001: JTAG_TCK, 010: SPI1_SCLK ,011: I2S_WS_TX 100: I2C1_SCL
# muxctrl_reg55=0DC # 00: GPIO6_7, 01: JTAG_TMS, 10: SPI1_CSN0, 11: I2S_SD_TX
# muxctrl_reg56=0E0 # 000: GPIO7_0, 001: JTAG_TDO, 010: SPI1_SDO, 011: I2S_SD_RX, 100: I2C1_SDA
# muxctrl_reg57=0E4 # 00: GPIO7_1, 01: JTAG_TDI, 10: SPI1_SDI, 11: I2S_BCLK_TX
muxctrl_reg58=0E8 # 00: PMC_PWM, 01: GPIO7_2, 10: PWM0
muxctrl_reg59=0EC # 0: PWM1, 1: GPIO7_3
# muxctrl_reg60=0F0 # 00: PWM2, 01: GPIO7_4, 10: SPI1_CSN1
muxctrl_reg61=0F4 # 0: PWM3, 1: GPIO7_5
muxctrl_reg62=0F8 # 0: SAR_ADC_CH0, 1: GPIO7_6
muxctrl_reg63=0FC # 0: SAR_ADC_CH1, 1: GPIO7_7
muxctrl_reg64=100 # 0: SAR_ADC_CH2, 1: GPIO8_0
muxctrl_reg65=104 # 0: SAR_ADC_CH3, 1: GPIO8_1
iomux=0x200F
devmem "${iomux}0${muxctrl_reg01}" 32 0x1 # 0: SENSOR_RSTN, 1: GPIO0_5
devmem "${iomux}0${muxctrl_reg03}" 32 0x0 # 000: GPIO0_7, 001: SHUTTER_TRIG, 010: SFC_DEVICE_MODE, 100: VI_HS_BT1120
devmem "${iomux}0${muxctrl_reg24}" 32 0x0 # 0: GPIO4_3, 1: I2C2_SDA
devmem "${iomux}0${muxctrl_reg25}" 32 0x0 # 0: GPIO4_4, 1: I2C2_SCL
devmem "${iomux}0${muxctrl_reg26}" 32 0x0 # 0: GPIO4_5, 1: USB_OVRCUR
devmem "${iomux}0${muxctrl_reg27}" 32 0x0 # 0: GPIO4_6, 1: USB_PWREN
devmem "${iomux}0${muxctrl_reg28}" 32 0x0 # 000: GPIO0_0, 001: IR_IN, 010: TEMPER_DQ
devmem "${iomux}0${muxctrl_reg29}" 32 0x0 # 000: GPIO0_1, 010: TEMPER_DQ
devmem "${iomux}0${muxctrl_reg30}" 32 0x0 # 000: GPIO0_2, 010: TEMPER_DQ
devmem "${iomux}0${muxctrl_reg58}" 32 0x1 # 00: PMC_PWM, 01: GPIO7_2, 10: PWM0
devmem "${iomux}0${muxctrl_reg59}" 32 0x1 # 0: PWM1, 1: GPIO7_3
devmem "${iomux}0${muxctrl_reg61}" 32 0x1 # 0: PWM3, 1: GPIO7_5
devmem "${iomux}0${muxctrl_reg62}" 32 0x1 # 0: SAR_ADC_CH0, 1: GPIO7_6
devmem "${iomux}0${muxctrl_reg63}" 32 0x1 # 0: SAR_ADC_CH1, 1: GPIO7_7
devmem "${iomux}0${muxctrl_reg64}" 32 0x1 # 0: SAR_ADC_CH2, 1: GPIO8_0
devmem "${iomux}0${muxctrl_reg65}" 32 0x1 # 0: SAR_ADC_CH3, 1: GPIO8_1
# dir=0400
# iomux=0x200F0000
# ioctl=0x200F0800
# set -- 1 2 3 4 5 6 7 8 9 10 11 12 13
# while [ $# -gt 0 ]
# do
# echo $1
# shift;
# done
pin_max=0
# prepare the pins
for pin in $(seq 0 1 1000); do
if [ ! -d /sys/class/gpio/gpio${pin} ]; then
echo "${GPIO}" > /sys/class/gpio/export
fi
echo "in" > /sys/class/gpio/gpio"${pin}"/direction
if [ $? -eq 0 ]; then pin_max=${pin}; else break; fi
done
set -e
echo "pin_max: ${pin_max}"
gpio0=0x2014
gpio1=0x2015
gpio2=0x2016
gpio3=0x2017
gpio4=0x2018
gpio5=0x2019
gpio6=0x201A
gpio7=0x201B
gpio8=0x201C
# bit mask
# 004 = 0000000100
# 008 = 0000001000
# 010 = 0000010000
# 020 = 0000100000
# 040 = 0001000000
# 080 = 0010000000
# 100 = 0100000000
# 200 = 1000000000
# 3FC = 1111111100
str=""
print_pins() {
# gpio=${gpio0}
# str="${str}gpio0: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio1}
# str="${str}gpio1: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio2}
# str="${str}gpio2: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio3}
# str="${str}gpio3: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio4}
# str="${str}gpio4: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio5}
# str="${str}gpio5: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio6}
# str="${str}gpio6: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio7}
# str="${str}gpio7: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# gpio=${gpio}
# str="${str}gpio8: p0:$(devmem ${gpio}0${004}) p1:$(devmem ${gpio}0${008}) p2:$(devmem ${gpio}0${010}) p3:$(devmem ${gpio}0${020}) p4:$(devmem ${gpio}0${040}) p5:$(devmem ${gpio}0${080}) p6:$(devmem ${gpio}0${100}) p7:$(devmem ${gpio}0${200})\n"
# val=$(devmem ${gpio1})
# BIN=$(echo "obase=2; ibase=16; ${val}" | bc )
str="${str}gpio0: $(devmem ${gpio0}03FC 8)\n"
str="${str}gpio1: $(devmem ${gpio1}03FC 8)\n"
str="${str}gpio2: $(devmem ${gpio2}03FC 8)\n"
str="${str}gpio3: $(devmem ${gpio3}03FC 8)\n"
str="${str}gpio4: $(devmem ${gpio4}03FC 8)\n"
str="${str}gpio5: $(devmem ${gpio5}03FC 8)\n"
str="${str}gpio6: $(devmem ${gpio6}03FC 8)\n"
str="${str}gpio7: $(devmem ${gpio7}03FC 8)\n" # C0:11000000 80:10000000
str="${str}gpio8: $(devmem ${gpio8}03FC 8)\n"
}
str=""
port=0
print_pin() {
local linux_pin=$1
pin=$((${linux_pin}%8))
value=`cat /sys/class/gpio/gpio${linux_pin}/value`
linux_pin=$(printf "%02d" ${linux_pin})
if [ 0 == ${pin} ]; then str="${str}gpio${port}: "; fi
str="${str}g${port}_${pin}(${linux_pin}):${value} "
if [ 7 == ${pin} ]; then str="$str\n"; port=$((port+1)); fi
}
for try in $(seq 1 1 100000); do
str=""
print_pins
str="${str}\n"
port=0
for i in $(seq 0 1 ${pin_max}); do print_pin ${i}; done
printf "\033c\ntry: ${try}\n\n${str}"
# sleep 1
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment