在proting GT系列touch的时候遇到了touch的irq gpio在system 醒着的时候电压只有1.2v,正常是1.8v,于是觉得很奇怪,通常的irq gpio被配置成input,但是到底是pull up还是down还是别的状态需要ic厂商来确认,没有办法参考别的touch的配置,厂商告诉我需要配置成float+input,于是就在lk里干了
先定义好要用的irq
#define TOUCH_ID_PIN3 65
然后
gpio_tlmm_config(TOUCH_ID_PIN3, 0, GPIO_INPUT, GPIO_NO_PULL, GPIO_16MA, GPIO_ENABLE);
配置成input,这个GPIO_NO_PULL就是float模式
这个gpio_tlmm_config
void gpio_tlmm_config(uint32_t gpio, uint8_t func,
uint8_t dir, uint8_t pull,
uint8_t drvstr, uint32_t enable)
{
uint32_t val = 0;
val |= pull;
val |= func << 2;
val |= drvstr << 6;
val |= enable << 9;
writel(val, (uint32_t *)GPIO_CONFIG_ADDR(gpio));
return;
}
就是去写控制这个gpio的register映射在内存的地址喽,这样一搞,ok了,这点p事居然花了我一周,我也是醉了