先来命令行,这种最方便
节点位置:./sys/devices/platform/1000b000.pinctrl/mt_gpio
查看cat mt_gpio你会发现一串9位数字. 至于是什么,得看文档,本人就不重复了.
现在操作一下文档里讲不清楚的地方.
#设置为普通IO
echo mode 81 0 > mt_gpio
echo mode 84 0 > mt_gpio
#设置为输出
echo dir 81 1 > mt_gpio
echo dir 84 1 > mt_gpio
#输出低电平
echo out 81 0 > mt_gpio
echo out 84 0 > mt_gpio
#驱动能力
echo driving 81 7 > mt_gpio
echo driving 84 7 > mt_gpio
然后是写代码设置,为啥要写代码?因为kenerl太晚了
//preloader位置
vendor/autochips/proprietary/bootable/bootloader/preloader/platform/kunt11/src/core/main.c 这里也可以操作gpio. 这里是最早的
稍晚一点是LK
lk设置GPIO
./mediatek/proprietary/bootable/bootloader/lk/platform/kunt11/mt_gpio_init.c
代码如下
mt_set_gpio_mode(81, 0);
mt_set_gpio_dir(0x80000000 + 81, 1);
mt_set_gpio_out(0x80000000 + 81, GPIO_OUT_ZERO);
mt_set_gpio_mode(0x80000000 + 81, 0);
mt_set_gpio_drving(81,7 );
mt_set_gpio_mode(84, 0);
mt_set_gpio_dir(0x80000000 + 84, 1);
mt_set_gpio_out(0x80000000 + 84, GPIO_OUT_ZERO);
mt_set_gpio_mode(0x80000000 + 84, 0);
mt_set_gpio_drving(84,7 );
至于为啥有些要加0x800000有些不加 ,这个我没验证.有没有误人子弟不知道,都是追代码得到的
至于复用功能和状态,据我测试cd /sys/devices/platform/1000b000.pinctrl是查看不到的.我怀疑跟杰发自己实现的那一套有关.
以上.