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即可。
