static void ts_interrupt_main(struct corgi_ts *corgi_ts, int isTimer) { if ((GPLR(IRQ_TO_GPIO(corgi_ts->irq_gpio)) & GPIO_bit(IRQ_TO_GPIO(corgi_ts->irq_gpio))) == 0) { /* Disable Interrupt */ set_irq_type(corgi_ts->irq_gpio, IRQ_TYPE_NONE); if (read_xydata(corgi_ts)) { corgi_ts->pendown = 1; new_data(corgi_ts); } mod_timer(&corgi_ts->timer, jiffies + HZ / 100); } else { if (corgi_ts->pendown == 1 || corgi_ts->pendown == 2) { mod_timer(&corgi_ts->timer, jiffies + HZ / 100); corgi_ts->pendown++; return; } if (corgi_ts->pendown) { corgi_ts->tc.pressure = 0; new_data(corgi_ts); } /* Enable Falling Edge */ set_irq_type(corgi_ts->irq_gpio, IRQ_TYPE_EDGE_FALLING); corgi_ts->pendown = 0; } }
static int pxa2xx_mfp_suspend(struct sys_device *d, pm_message_t state) { int i; /* set corresponding PGSR bit of those marked MFP_LPM_KEEP_OUTPUT */ for (i = 0; i < pxa_last_gpio; i++) { if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && (GPDR(i) & GPIO_bit(i))) { if (GPLR(i) & GPIO_bit(i)) PGSR(i) |= GPIO_bit(i); else PGSR(i) &= ~GPIO_bit(i); } } for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { saved_gafr[0][i] = GAFR_L(i); saved_gafr[1][i] = GAFR_U(i); saved_gpdr[i] = GPDR(i * 32); saved_pgsr[i] = PGSR(i); GPDR(i * 32) = gpdr_lpm[i]; } return 0; }
static int palmtt3_tsc2101_pendown(void) { // FIXME PALMT3_GPIO_PENDOWN if ((GPLR(PALMTT3_GPIO_PENDOWN) & GPIO_bit(PALMTT3_GPIO_PENDOWN)) == 0) return 1; return 0; }
void pm_do_poweroff(void) { unsigned long start, flags; PWER &= ~0x8000ffff; local_irq_save(flags); printk("Poweroff, Begin to wait BP_RDY signal.\n"); pm_send_all(PM_SUSPEND, (void *)3); start = OSCR; *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = NO_FLAG; do { if( !(GPLR(GPIO_BP_RDY) & GPIO_bit(GPIO_BP_RDY))){ printk(KERN_DEBUG"got BP_RDY signal.\n"); GPDR(GPIO_WDI_AP) |= GPIO_bit(GPIO_WDI_AP); GPCR(GPIO_WDI_AP) = GPIO_bit(GPIO_WDI_AP); while(1); } if ((OSCR - start) >= POWER_OFF_TIMEOUT) { printk(KERN_DEBUG "timeout when power down\n"); mdelay(1); GPDR(GPIO_WDI_AP) |= GPIO_bit(GPIO_WDI_AP); GPCR(GPIO_WDI_AP) = GPIO_bit(GPIO_WDI_AP); while(1); } } while(1); pm_do_useroff(); printk(KERN_DEBUG "resume from useroff\n"); pm_send_all(PM_SUSPEND, (void *)0); local_irq_restore(flags); }
void turn_off_gpio(int gpio) { set_GPIO_mode(gpio | GPIO_OUT); GPCR(gpio) = GPIO_bit(gpio); if (GPLR(gpio) & GPIO_bit(gpio)) { PDEBUG("LED gpio %d on\n", gpio); } else { PDEBUG("LED gpio %d off\n", gpio); } }
static int pxa2xx_mfp_suspend(void) { int i; /* set corresponding PGSR bit of those marked MFP_LPM_KEEP_OUTPUT */ for (i = 0; i < pxa_last_gpio; i++) { if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && (GPDR(i) & GPIO_bit(i))) { if (GPLR(i) & GPIO_bit(i)) PGSR(gpio_to_bank(i)) |= GPIO_bit(i); else PGSR(gpio_to_bank(i)) &= ~GPIO_bit(i); } } for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { saved_gafr[0][i] = GAFR_L(i); saved_gafr[1][i] = GAFR_U(i); saved_gpdr[i] = GPDR(i * 32); saved_gplr[i] = GPLR(i * 32); saved_pgsr[i] = PGSR(i); GPSR(i * 32) = PGSR(i); GPCR(i * 32) = ~PGSR(i); } /* set GPDR bits taking into account MFP_LPM_KEEP_OUTPUT */ for (i = 0; i < pxa_last_gpio; i++) { if ((gpdr_lpm[gpio_to_bank(i)] & GPIO_bit(i)) || ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && (saved_gpdr[gpio_to_bank(i)] & GPIO_bit(i)))) GPDR(i) |= GPIO_bit(i); else GPDR(i) &= ~GPIO_bit(i); } return 0; }
unsigned long corgipm_read_devdata(int type) { switch(type) { case SHARPSL_STATUS_ACIN: return ((GPLR(CORGI_GPIO_AC_IN) & GPIO_bit(CORGI_GPIO_AC_IN)) != 0); case SHARPSL_STATUS_LOCK: return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batlock); case SHARPSL_STATUS_CHRGFULL: return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batfull); case SHARPSL_STATUS_FATAL: return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_fatal); case SHARPSL_ACIN_VOLT: return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT); case SHARPSL_BATT_TEMP: return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP); case SHARPSL_BATT_VOLT: default: return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT); } }
int dsp_open(struct inode *inode, struct file *file) { if (dsp_iopage) return 0; /* if (GPLR & GPIO_GPIO(1)) { OLD */ if (GPLR(0) & GPIO_bit(1)) { printk("btweb: no DSP device found, continuing anyways\n"); return -ENODEV; } dsp_iopage = (unsigned short *)ioremap(0x20000000, PAGE_SIZE); if (!dsp_iopage) { printk("btweb: ioremap failed\n"); return -ENODEV; } /* first open, force a reset */ dsp_reset(inode, file, 0, 0); return 0; }
static int tosa_udc_is_connected(void) { return ((GPLR(TOSA_GPIO_USB_IN) & GPIO_bit(TOSA_GPIO_USB_IN)) == 0); }
static int h1910_device_ready(struct mtd_info *mtd) { return (GPLR(55) & GPIO_bit(55)); }
static int corgi_mci_get_ro(struct device *dev) { return GPLR(CORGI_GPIO_nSD_WP) & GPIO_bit(CORGI_GPIO_nSD_WP); }
static int spitz_mci_get_ro(struct device *dev) { return GPLR(SPITZ_GPIO_nSD_WP) & GPIO_bit(SPITZ_GPIO_nSD_WP); }
static int poodle_mci_get_ro(struct device *dev) { return GPLR(POODLE_GPIO_nSD_WP) & GPIO_bit(POODLE_GPIO_nSD_WP); }