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); }
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"); } }