Ejemplo n.º 1
0
static irqreturn_t udc_hotplug_irq(int irq, void *dev_id)
{
        __gpio_ack_irq(UDC_HOTPLUG_PIN); /* clear interrupt pending status */

	del_timer(&udc_timer);
	init_timer(&udc_timer);
        udc_timer.function = udc_timer_routine;
	udc_timer.expires = jiffies + HZ/2; /* about 500 ms */
	add_timer(&udc_timer);

	return IRQ_HANDLED;
}
Ejemplo n.º 2
0
static void MMCGpioTask(void *arg)
{
	u8 err;
	cardstate = CARD_OUT;
	cardexsit = 1 ;
	while(1)
	{
//		__intc_mask_irq(48 + MMC_CD_PIN);
		printf("Looks like MMC gpio change! \n");
		if ( cardstate == CARD_OUT )     //card have inserted!
		{
			OSTimeDlyHMSM(0,0,0,500);
			if ( __gpio_get_pin(MMC_CD_PIN) == 0 ) //card readlly insert!
			{
				printf("Card readlly insert! \n");
				cardstate = CARD_IN;
				info_card_in();
				MMC_Initialize();
				__gpio_as_irq_rise_edge(MMC_CD_PIN);
			}
			else
				__gpio_as_irq_fall_edge(MMC_CD_PIN);
		}
		else                            //card have not inserted!
		{
			OSTimeDlyHMSM(0,0,0,500);
			if ( __gpio_get_pin(MMC_CD_PIN) == 1 ) //card readlly out!
			{
				printf("Card readlly out! \n");
				cardstate = CARD_OUT;
				info_card_out();
				__gpio_as_irq_fall_edge(MMC_CD_PIN);
			}
			else
				__gpio_as_irq_rise_edge(MMC_CD_PIN);

		}
		__gpio_ack_irq(MMC_CD_PIN);
		__intc_ack_irq(48 + MMC_CD_PIN);
		__gpio_unmask_irq(MMC_CD_PIN);
		OSSemPend(MMCGPIOEvent, 0, &err);
	}
}
Ejemplo n.º 3
0
static void tp_tint_irq(unsigned int irq)
{
	int key_num = 0, value0, value1;
	
	__gpio_ack_irq(TP_KEY_TINT);
	value0 = read_reg(0x75);
	value1 = read_reg(0x76);
	value0 &= ATA2508_SENSOR_MASK;
//	printf("\nthe value of reg 0x75 is 0x%02x\n", value0);
	if (value0 == 0) {
		printf("\nRelease key!\n");
		return;
	}
	while(value0 >> 1){
		value0 >>= 1;
		key_num++;
	}
	
	printf("\nPress key %d!\n", key_num);
}
Ejemplo n.º 4
0
static void mask_and_ack_gpio_irq(unsigned int irq)
{
	__gpio_mask_irq(irq - IRQ_GPIO_0);
	__gpio_ack_irq(irq - IRQ_GPIO_0);
}