Hi Daniel, On Fri, Oct 16, 2009 at 03:03:15PM +0200, Daniel Mack wrote: > > +#ifdef CONFIG_LEDS_ALIX2_BUTTON > +static void alix_button_poll(struct input_polled_dev *ipdev) > +{ > + unsigned int val = !(inl(gpio_base + 0x30) & (1 << 1)); > + > + if (val == alix_button_last) > + return; You can probably let input core filter out duplicate events... > + > + input_report_key(ipdev->input, BTN_MISC, val); BTN_MISC is expected to be used by joysticks or poniting devices, I'd recomment KEY_PROG1 for a key. > + input_sync(ipdev->input); > + alix_button_last = val; > +} > +#endif > + > static int __init alix_led_probe(struct platform_device *pdev) > { > int i; > @@ -89,6 +110,35 @@ static int __init alix_led_probe(struct platform_device *pdev) > if (ret < 0) > goto fail; > } > + > +#ifdef CONFIG_LEDS_ALIX2_BUTTON > + /* enable button input */ > + outl(1 << 1, gpio_base + 0x20); > + > + /* enable pullup on input pin */ > + outl(1 << 1, gpio_base + 0x18); > + > + alix_button_last = 0; > + ipdev = input_allocate_polled_device(); > + if (!ipdev) > + goto fail; > + > + ipdev->poll = alix_button_poll; > + ipdev->poll_interval = POLL_INTERVAL_DEFAULT; > + ipdev->input->name = "ALIX2 button"; > + ipdev->input->phys = "alix2/input0"; > + ipdev->input->id.bustype = BUS_HOST; > + > + set_bit(EV_KEY, ipdev->input->evbit); > + ipdev->input->keybit[BIT_WORD(BTN_MISC)] = BIT_MASK(BTN_MISC); > + > + ret = input_register_polled_device(ipdev); > + if (ret) { > + input_free_polled_device(ipdev); > + goto fail; > + } > +#endif Fells like you want to make it a function (and a stub if not configured)... -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html