For PMIC need to operate the register.
cd /d/regmap/spmi0-00
echo 0xc046 > address //0xc046 =gpio1 0xc047=gpio2
echo 0x1 > count
echo 0x80 >data
如下方式可以操作没有没占用的GPIO,如果gpio有被其他模块占用,那么是无法export出来的
主芯片qcom MSMXXXX
GPIO_106
GPIO_17
1.给权限
adb root
adb shell
su
2.将gpio所有端口号以及功能列出
cat /sys/kernel/debug/gpio
ls
3.找到对应的GPIO:基地址+偏移地址(如1124+106=1230)并查看是否正确写入
cd /sys/class/gpio/
echo 1230 > export
ls
cd gpio1230/
ls
4.将方向由in改为out,并将值从0改为1.
cat direction
echo out > direction
cat direction
cat value
echo 1 > value
对于无法export的GPIO,只能通过一下方式调试:
1:please enable CONFIG_DEVMEM in kernel defconfig<-------------这一步是必须的
2: adb root | adb shell
3: devmem [gpio address] [length] [write-value] #write
devmem [gpio address] [length] #read
Length 4
Example 8350 :
Register: TLMM_GPIO_CFG107 | 0xF16B000 //EGPIO
Register: TLMM_GPIO_IN_OUT107 | 0xF16B004
devmem 0xF16C000 4 0x1200 <---------output enable EGPIO enable
devmem 0xF16C004 4 0x0 <---------output low
devmem 0xF16C004 4 0x2 <---------output high
Example 6350 :
1: confirm whether select the correct gpiochip
cat /sys/class/gpio/gpiochipxxxx
2: some GPIO maybe been used by other driver or module . suggest control GPIO physical register directly .
Register: TLMM_GPIO_CFG17 | 0xF111000
Register: TLMM_GPIO_IN_OUT17 | 0xF111004
devmem 0xF111000 0x1200 <---------output enable EGPIO enable
devmem 0xF111004 4 0x0 <---------output low
devmem 0xF111004 4 0x2 <---------output high
寄存器的描述和具体的地址需要查看对应的芯片的寄存器描述文档