Exemplo n.º 1
0
void keyExtiFirstInit(void)
{
	INIT_WORK(&pGlobalHardwareInfo->FlyKeyEncoderInfo.encoder_work, workFlyKeyEncoder);

	SOC_IO_Input(ENCODER_L1_G,ENCODER_L1_I,0);
	SOC_IO_Input(ENCODER_L2_G,ENCODER_L2_I,0);
	SOC_IO_Input(ENCODER_R1_G,ENCODER_R1_I,0);
	SOC_IO_Input(ENCODER_R2_G,ENCODER_R2_I,0);
	SOC_IO_ISR_Add(ENCODER_ISR_L1,IRQ_TYPE_EDGE_BOTH,EncoderL1_io_isr,pGlobalHardwareInfo);
	SOC_IO_ISR_Add(ENCODER_ISR_L2,IRQ_TYPE_EDGE_BOTH,EncoderL2_io_isr,pGlobalHardwareInfo);
	SOC_IO_ISR_Add(ENCODER_ISR_R1,IRQ_TYPE_EDGE_BOTH,EncoderR1_io_isr,pGlobalHardwareInfo);
	SOC_IO_ISR_Add(ENCODER_ISR_R2,IRQ_TYPE_EDGE_BOTH,EncoderR2_io_isr,pGlobalHardwareInfo);
	SOC_IO_ISR_Enable(ENCODER_ISR_L1);
	SOC_IO_ISR_Enable(ENCODER_ISR_L2);
	SOC_IO_ISR_Enable(ENCODER_ISR_R1);
	SOC_IO_ISR_Enable(ENCODER_ISR_R2);

}
Exemplo n.º 2
0
static int knob_probe(void)
{
	int button_en = 1, ret;

	printk(KERN_CRIT "button_init\n");

	knob_fifo_buffer = (char *)kmalloc(KNOB_SIZE, GFP_KERNEL);
	if(!knob_fifo_buffer){
		printk("fifo buffer kmalloc failed\n");
		return -1;
	}
	ret = knob_kfifo_init(&knob_fifo_data, knob_fifo_buffer, KNOB_SIZE, 1);
	if(ret < 0){
		printk("kfifo init failed ret = %d\n", ret);
		return ret;
	}
	spin_lock_init(&knob_lock);
	sema_init(&knob_sem, 1);
	init_waitqueue_head(&knob_queue);
	
	if(button_en)
	{
		printk("init work\n");
		INIT_WORK(&work_left_button1, work_left_button1_fn);
		INIT_WORK(&work_left_button2, work_left_button2_fn);

		INIT_WORK(&work_right_button1, work_right_button1_fn);
		INIT_WORK(&work_right_button2, work_right_button2_fn);
		printk("request gpio\n");
		SOC_IO_Input(BUTTON_LEFT_1, BUTTON_LEFT_1, 0);
		SOC_IO_Input(BUTTON_LEFT_2, BUTTON_LEFT_2, 0);
		SOC_IO_Input(BUTTON_RIGHT_1, BUTTON_RIGHT_1, 0);
		SOC_IO_Input(BUTTON_RIGHT_2, BUTTON_RIGHT_2, 0);
		printk("request irq\n");
		SOC_IO_ISR_Add(BUTTON_LEFT_1, IRQF_TRIGGER_RISING, irq_left_button1, "hdj");
		SOC_IO_ISR_Add(BUTTON_LEFT_2, IRQF_TRIGGER_FALLING, irq_left_button2, "hdj");
		SOC_IO_ISR_Add(BUTTON_RIGHT_1, IRQF_TRIGGER_RISING, irq_right_button1, "hdj");
		SOC_IO_ISR_Add(BUTTON_RIGHT_2, IRQF_TRIGGER_FALLING, irq_right_button2, "hdj");
		
	}
}