static void __init mmp2_init_gpio(void) { int i; /* enable GPIO clock */ __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_MMP2_GPIO); /* unmask GPIO edge detection for all 6 banks -- APMASKx */ for (i = 0; i < 6; i++) __raw_writel(0xffffffff, APMASK(i)); pxa_init_gpio(IRQ_MMP2_GPIO, 0, 167, NULL); }
static void __init pxa168_init_gpio(void) { int i; /* enable GPIO clock */ __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_PXA168_GPIO); /* unmask GPIO edge detection for all 4 banks - APMASKx */ for (i = 0; i < 4; i++) __raw_writel(0xffffffff, APMASK(i)); pxa_init_gpio(IRQ_PXA168_GPIOX, 0, 127, NULL); }
static int pxa168_pm_enter_sleep(struct pxa168_pm_regs *pm_regs) { int i; pm_regs->data_pool = (unsigned char *)0xC0000000; pxa168_sysbus_save(pm_regs); /* should set:modeSaveFlags, areaAddress, flushFunc, psprAddress, * extendedChecksumByteCount */ pm_regs->pm_data.modeSaveFlags = 0x3f; /* PM_MODE_SAVE_FLAG_SVC; */ pm_regs->pm_data.flushFunc = flush_cpu_cache; pm_regs->pm_data.areaAddress = (unsigned int)&(pm_regs->pm_data); pm_regs->pm_data.extendedChecksumByteCount = sizeof(struct pxa168_pm_regs) - sizeof(struct pm_save_data); printk("ext size:%d, save size%d\n", pm_regs->pm_data.extendedChecksumByteCount, sizeof(struct pm_save_data)); pm_regs->word0 = __raw_readl(pm_regs->data_pool); pm_regs->word1 = __raw_readl(pm_regs->data_pool + 4); pm_regs->word2 = __raw_readl(pm_regs->data_pool + 8); /* Write resume back address to SDRAM */ __raw_writel(virt_to_phys(pxa168_cpu_resume), pm_regs->data_pool); __raw_writel(virt_to_phys(&(pm_regs->pm_data)), pm_regs->data_pool + 4); /* Write Hibernate mode indicator to SDRAM */ if(cpu_is_pxa168_S0()) __raw_writel(0xa, pm_regs->data_pool + 8); else __raw_writel(0x55AA55AA, pm_regs->data_pool + 8); pxa168_cpu_sleep((unsigned int)&(pm_regs->pm_data), virt_to_phys(&(pm_regs->pm_data))); /* come back */ __raw_writel(pm_regs->word0, pm_regs->data_pool); __raw_writel(pm_regs->word1, pm_regs->data_pool + 4); __raw_writel(pm_regs->word2, pm_regs->data_pool + 8); pxa168_sysbus_restore(pm_regs); /* unmask GPIO edge detection for all 4 banks - APMASKx */ for (i = 0; i < 4; i++) __raw_writel(0xffffffff, APMASK(i)); //printk("*** made it back from sleep\n"); return 0; }