static void jz_board_do_resume(unsigned long *ptr) { unsigned char i; /* Restore GPIO registers */ for(i = 1; i < GPIO_PORT_NUM; i++) { REG_GPIO_PXFUNS(i) = *ptr; REG_GPIO_PXFUNC(i) = ~(*ptr++); REG_GPIO_PXSELS(i) = *ptr; REG_GPIO_PXSELC(i) = ~(*ptr++); REG_GPIO_PXDIRS(i) = *ptr; REG_GPIO_PXDIRC(i) = ~(*ptr++); REG_GPIO_PXPES(i) = *ptr; REG_GPIO_PXPEC(i) = ~(*ptr++); REG_GPIO_PXIMS(i)=*ptr; REG_GPIO_PXIMC(i)=~(*ptr++); REG_GPIO_PXDATS(i)=*ptr; REG_GPIO_PXDATC(i)=~(*ptr++); REG_GPIO_PXTRGS(i)=*ptr; REG_GPIO_PXTRGC(i)=~(*ptr++); } /* Print messages of GPIO registers for debug */ for(i=0;i<GPIO_PORT_NUM;i++) { dprintk("resume dat:%x pin:%x fun:%x sel:%x dir:%x pull:%x msk:%x trg:%x\n", \ REG_GPIO_PXDAT(i),REG_GPIO_PXPIN(i),REG_GPIO_PXFUN(i),REG_GPIO_PXSEL(i), \ REG_GPIO_PXDIR(i),REG_GPIO_PXPE(i),REG_GPIO_PXIM(i),REG_GPIO_PXTRG(i)); } }
static void __init board_gpio_setup(void) { /* * Initialize SDRAM pins */ /* PORT A: D0 ~ D31 */ REG_GPIO_PXFUNS(0) = 0xffffffff; REG_GPIO_PXSELC(0) = 0xffffffff; /* PORT B: A0 ~ A16, DCS#, RAS#, CAS#, CKE#, RDWE#, CKO#, WE0# */ REG_GPIO_PXFUNS(1) = 0x81f9ffff; REG_GPIO_PXSELC(1) = 0x81f9ffff; /* PORT C: WE1#, WE2#, WE3# */ REG_GPIO_PXFUNS(2) = 0x07000000; REG_GPIO_PXSELC(2) = 0x07000000; /* * Initialize UART0 pins */ /* PORT D: TXD/RXD */ REG_GPIO_PXFUNS(3) = 0x06000000; REG_GPIO_PXSELS(3) = 0x06000000; /* * Initialize LED pins */ __gpio_as_lcd_18bit(); /* CS2# */ REG_GPIO_PXFUNS(1) = 0x04000000; REG_GPIO_PXSELC(1) = 0x04000000; __gpio_as_pcm(); }
void board_restore_gpio(unsigned int *ptr){ int i = 0; for(i = 0; i < GPIO_PORT_NUM; i++) { REG_GPIO_PXFUNS(i) = *ptr; REG_GPIO_PXFUNC(i) = ~(*ptr++); REG_GPIO_PXSELS(i) = *ptr; REG_GPIO_PXSELC(i) = ~(*ptr++); REG_GPIO_PXDIRS(i) = *ptr; REG_GPIO_PXDIRC(i) = ~(*ptr++); REG_GPIO_PXPES(i) = *ptr; REG_GPIO_PXPEC(i) = ~(*ptr++); REG_GPIO_PXIMS(i)=*ptr; REG_GPIO_PXIMC(i)=~(*ptr++); REG_GPIO_PXDATS(i)=*ptr; REG_GPIO_PXDATC(i)=~(*ptr++); REG_GPIO_PXTRGS(i)=*ptr; REG_GPIO_PXTRGC(i)=~(*ptr++); } return; }