static int __init h4300_kbd_probe(struct platform_device * pdev) { int i, base_irq = asic3_irq_base(a3); if (!(h4300_kbd = input_allocate_device())) return -ENOMEM; setup_h4300kbd(); h4300_kbd->name = "HP iPAQ h4300 keyboard driver"; h4300_kbd->evbit[0] = BIT(EV_KEY) | BIT(EV_REP); h4300_kbd->keycode = h4300_keycode; h4300_kbd->keycodesize = sizeof(unsigned char); h4300_kbd->keycodemax = ARRAY_SIZE(h4300_keycode); for (i = 0; i < h4300_kbd->keycodemax; i++) if (h4300_keycode[i]) set_bit(h4300_keycode[i], h4300_kbd->keybit); request_irq(base_irq + H4000_KEYBOARD_IRQ, &h4300_keyboard, SA_SAMPLE_RANDOM, "Keyboard", NULL); input_register_device(h4300_kbd); return 0; }
static int h4300_kbd_remove(struct platform_device * pdev) { int irq_base = asic3_irq_base(a3); input_unregister_device(h4300_kbd); free_irq(irq_base + H4000_KEYBOARD_IRQ, NULL); return 0; }
static void snd_h4000_audio_hp_detection_on(void) { unsigned long flags; int irq; irq = asic3_irq_base(asic3) + H4000_HEADPHONE_IN_IRQ; request_irq(irq, snd_h4000_audio_hp_isr, SA_SAMPLE_RANDOM, "Earphone jack", NULL); local_irq_save(flags); snd_uda1380_hp_detected(&uda, snd_h4000_audio_hp_detect()); local_irq_restore(flags); }
static inline int snd_h4000_audio_hp_detect(void) { int irq, hp_in; irq = asic3_irq_base(asic3) + H4000_HEADPHONE_IN_IRQ; hp_in = ((asic3_get_gpio_status_d(asic3) & GPIOD_HEADPHONE_IN_N) == 0); if (hp_in) set_irq_type(irq, IRQT_RISING); else set_irq_type(irq, IRQT_FALLING); return hp_in; }
static void snd_htcathena_audio_hp_detection_on(void) { unsigned long flags; int irq; #if 0 irq = asic3_irq_base( &htcathena_asic3.dev ) + ASIC3_GPIOB_IRQ_BASE + GPIOB_EARPHONE_N; if (request_irq(irq, snd_htcathena_audio_hp_isr, SA_INTERRUPT | SA_SAMPLE_RANDOM, "HTC Athena Headphone Jack", NULL) != 0) return; set_irq_type(irq, IRQ_TYPE_EDGE_FALLING); #endif local_irq_save(flags); snd_ak4641_hp_detected(&ak, snd_htcathena_audio_hp_detect()); local_irq_restore(flags); }
static void snd_h4000_audio_hp_detection_off(void) { free_irq(asic3_irq_base(asic3) + H4000_HEADPHONE_IN_IRQ, NULL); }