static void puv3_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { if (value) writel(GPIO_GPIO(offset), GPIO_GPSR); else writel(GPIO_GPIO(offset), GPIO_GPCR); }
static void sa1100_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { if (value) GPSR = GPIO_GPIO(offset); else GPCR = GPIO_GPIO(offset); }
/** * monitor_connected - connected to cable * * Return non-zero if via USB cable to USB Hub or Host */ int monitor_connected(void) { int rc = 1; /* * Architecture specific - determine connect status */ /* * SA-1100 * * Only pay attention to the status if we also can control the pullup. */ #if defined(CONFIG_SA1100_USBCABLE_GPIO) && defined(CONFIG_SA1100_CONNECT_GPIO) #ifdef CONFIG_SA1100_CONNECT_ACTIVE_HIGH rc = (GPLR & GPIO_GPIO(23)) != 0; printk(KERN_DEBUG"udc_connected: ACTIVE_HIGH: %d", rc); #else rc = (GPLR & GPIO_GPIO(23)) == 0; printk(KERN_DEBUG"udc_connected: ACTIVE_LOW: %d", rc); #endif #endif /* CONFIG_ARCH_SA1100 && CONFIG_SA1100_USBCABLE_GPIO */ printk(KERN_DEBUG"monitor_connected: %d\n", rc); return rc; }
static irqreturn_t jornada720_ts_interrupt(int irq, void *dev_id) { struct platform_device *pdev = dev_id; struct jornada_ts *jornada_ts = platform_get_drvdata(pdev); struct input_dev *input = jornada_ts->dev; int x, y; /* If GPIO_GPIO9 is set to high then report pen up */ if (GPLR & GPIO_GPIO(9)) { input_report_key(input, BTN_TOUCH, 0); input_sync(input); } else { jornada_ssp_start(); /* proper reply to request is always TXDUMMY */ if (jornada_ssp_inout(GETTOUCHSAMPLES) == TXDUMMY) { jornada720_ts_collect_data(jornada_ts); x = jornada720_ts_average(jornada_ts->x_data); y = jornada720_ts_average(jornada_ts->y_data); input_report_key(input, BTN_TOUCH, 1); input_report_abs(input, ABS_X, x); input_report_abs(input, ABS_Y, y); input_sync(input); } jornada_ssp_end(); } return IRQ_HANDLED; }
static void __init system3_init_irq(void) { int irq; DPRINTK( "%s\n", "START" ); /* SA1111 IRQ not routed to a GPIO. */ sa1111_init_irq(-1); /* setup extra IRQs */ irq = IRQ_SYSTEM3_SMC9196; irq_desc[irq].valid = 1; irq_desc[irq].probe_ok = 1; #if 0 /* Highspeed Serial Bus not yet used */ irq = PT_USAR_IRQ; irq_desc[irq].valid = 1; irq_desc[irq].probe_ok = 1; #endif /* IRQ by CPLD */ set_GPIO_IRQ_edge( GPIO_GPIO(25), GPIO_RISING_EDGE ); setup_arm_irq( IRQ_GPIO25, &system3_irq ); }
static int sa1100_direction_output(struct gpio_chip *chip, unsigned offset, int value) { unsigned long flags; local_irq_save(flags); sa1100_gpio_set(chip, offset, value); GPDR |= GPIO_GPIO(offset); local_irq_restore(flags); return 0; }
void cerf_kbd_init_hw(void) { printk("Starting Cerf PDA Keyboard Driver... "); k_setkeycode = cerf_setkeycode; k_getkeycode = cerf_getkeycode; k_translate = cerf_kbd_translate; k_unexpected_up = cerf_unexpected_up; k_leds = cerf_leds; GPDR &= ~(GPIO_GPIO(20) | GPIO_GPIO(21) | GPIO_GPIO(22) | GPIO_GPIO(23) | GPIO_GPIO(24)); kbd_timer.expires = 40 + jiffies; kbd_timer.data = 0x00000000; kbd_timer.function = (void(*)(unsigned long))&keyboard_interrupt; add_timer(&kbd_timer); printk("Done\r\n"); }
static int puv3_direction_output(struct gpio_chip *chip, unsigned offset, int value) { unsigned long flags; local_irq_save(flags); puv3_gpio_set(chip, offset, value); writel(readl(GPIO_GPDR) | GPIO_GPIO(offset), GPIO_GPDR); local_irq_restore(flags); return 0; }
static int shannon_pcmcia_hw_init(struct soc_pcmcia_socket *skt) { GAFR &= ~(GPIO_GPIO(SHANNON_GPIO_EJECT_0) | GPIO_GPIO(SHANNON_GPIO_EJECT_1) | GPIO_GPIO(SHANNON_GPIO_RDY_0) | GPIO_GPIO(SHANNON_GPIO_RDY_1)); if (skt->nr == 0) { skt->stat[SOC_STAT_CD].gpio = SHANNON_GPIO_EJECT_0; skt->stat[SOC_STAT_CD].name = "PCMCIA_CD_0"; skt->stat[SOC_STAT_RDY].gpio = SHANNON_GPIO_RDY_0; skt->stat[SOC_STAT_RDY].name = "PCMCIA_RDY_0"; } else { skt->stat[SOC_STAT_CD].gpio = SHANNON_GPIO_EJECT_1; skt->stat[SOC_STAT_CD].name = "PCMCIA_CD_1"; skt->stat[SOC_STAT_RDY].gpio = SHANNON_GPIO_RDY_1; skt->stat[SOC_STAT_RDY].name = "PCMCIA_RDY_1"; } return 0; }
static __init int pfs168_spi_init(void) { printk (KERN_INFO "PFS-168 SA-1110 SPI Driver v1.1\n"); pfs168_spi_init_dev(); misc_register(&pfs168_spi_dev); rxq = (struct pfs168_spi_queue *) kmalloc(sizeof(*rxq), GFP_KERNEL); memset(rxq, 0, sizeof(*rxq)); rxq->head = rxq->tail = 0; rxq->buf = rxq_buf; init_waitqueue_head(&rxq->proc_list); txq = (struct pfs168_spi_queue *) kmalloc(sizeof(*txq), GFP_KERNEL); memset(txq, 0, sizeof(*txq)); txq->head = txq->tail = 0; txq->buf = txq_buf; set_GPIO_IRQ_edge(GPIO_GPIO(14), GPIO_RISING_EDGE); return 0; }
/** * monitor_request_irq */ int monitor_request_irq(void) { #if defined(CONFIG_SA1100_USBCABLE_GPIO) int rc; printk(KERN_DEBUG"monitor_request_irq: %d %d\n", CONFIG_SA1100_USBCABLE_GPIO, SA1100_GPIO_TO_IRQ(CONFIG_SA1100_USBCABLE_GPIO)); if ((rc = request_irq(SA1100_GPIO_TO_IRQ(CONFIG_SA1100_USBCABLE_GPIO), monitor_int_hndlr, SA_SHIRQ, "USBD Monitor", &monitor))) { printk(KERN_DEBUG"monitor_request_irq: failed: %d\n", rc); return -EINVAL; } GPDR &= ~GPIO_GPIO(CONFIG_SA1100_USBCABLE_GPIO); set_GPIO_IRQ_edge(GPIO_GPIO(CONFIG_SA1100_USBCABLE_GPIO), GPIO_BOTH_EDGES); #endif return 0; }
static void __init h3100_map_io(void) { ipaqsa_map_io(); /* sa1100_register_uart(1, 1); */ /* Microcontroller */ /* Initialize h3100-specific values here */ GPCR = 0x0fffffff; /* All outputs are set low by default */ GPDR = GPIO_GPIO(GPIO_NR_H3600_COM_RTS) | GPIO_H3600_L3_CLOCK | GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA | GPIO_H3600_CLK_SET1 | GPIO_H3600_CLK_SET0 | H3100_DIRECT_EGPIO; /* Older bootldrs put GPIO2-9 in alternate mode on the assumption that they are used for video */ GAFR &= ~H3100_DIRECT_EGPIO; H3100_EGPIO = h3100_egpio; ipaq_model_ops = h3100_model_ops; }
static int pfs168_misc_opto1_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos) { char outputbuf[15]; int count; if (*ppos > 0) /* Assume reading completed in previous read*/ return 0; count = sprintf(outputbuf, "%1x\n", GPLR & GPIO_GPIO(0)); *ppos += count; if (count > nbytes) /* Assume output can be read at one time */ return -EINVAL; if (copy_to_user(buf, outputbuf, count)) return -EFAULT; return count; }
static int sa1100_gpio_get(struct gpio_chip *chip, unsigned offset) { return GPLR & GPIO_GPIO(offset); }
static int puv3_gpio_get(struct gpio_chip *chip, unsigned offset) { return readl(GPIO_GPLR) & GPIO_GPIO(offset); }