Example #1
0
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);
}
Example #3
0
/**
 * 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;
}
Example #4
0
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;
}
Example #5
0
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");
}
Example #8
0
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;
}
Example #11
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;
}
Example #12
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;
}
Example #14
0
static int sa1100_gpio_get(struct gpio_chip *chip, unsigned offset)
{
	return GPLR & GPIO_GPIO(offset);
}
Example #15
0
static int puv3_gpio_get(struct gpio_chip *chip, unsigned offset)
{
	return readl(GPIO_GPLR) & GPIO_GPIO(offset);
}