MIPS平台suspend/resume时GPIO状态统制

MIPS平台suspend/resume时GPIO状态控制这两天在调一款触摸屏的驱动,在调试过程中发现,在休眠的时候,所用到

MIPS平台suspend/resume时GPIO状态控制

         这两天在调一款触摸屏的驱动,在调试过程中发现,在休眠的时候,所用到的几个GPIO引脚的状态会自动变为低电平,在唤醒后又会回到高电平。但是在代码里并没有显式地去拉低/拉高。很明显这不是我们想要的,如果这样的话,GPIO的状态都无法自己控制,还怎么调呢?

         问了下板子的FAE,GPIO的状态在休眠时,是预定义的。代码在

arch/mips/jz4770/boards/gps1/gps1-pm.c

其中gps1是板子类型

 98 void jzsoc_do_sleep(unsigned long *ptr) 99 {100     unsigned char i;101 102     /* Print messages of GPIO registers for debug */103     print_gpio();104     /* Save GPIO registers */105 106     for(i = 0; i < GPIO_PORT_NUM; i++) {107         *ptr++ = REG_GPIO_PXINT(i);108         *ptr++ = REG_GPIO_PXMSK(i);109         *ptr++ = REG_GPIO_PXPAT1(i);110         *ptr++ = REG_GPIO_PXPAT0(i);111         *ptr++ = REG_GPIO_PXPEN(i);112     }113 114     for(i = 0; i < GPIO_PORT_NUM; i++) {115         __gpio_group_as_output_low(i, gpio_output_low[i]);116         __gpio_group_as_output_high(i, gpio_output_high[i]);117         __gpio_group_as_input_pull(i, gpio_intput_pull[i]);118         __gpio_group_as_input_nopull(i, gpio_intput_nopull[i]);119     }

如果我们想需要手动进行管理需要的GPIO口,只需要将预设的状态改为GSS_IGNORE即可。