4ac3411f09
Without the IRQF_ONESHOT flag in devm_request_threaded_irq() call I get following error: genirq: Threaded irq requested with handler=NULL and !ONESHOT for irq 56 gpio-keys gpio-keys: failed to request irq:56 for gpio:20 >From kernel/irq/manage.c: The interrupt was requested with handler = NULL, so we use the default primary handler for it. But it does not have the oneshot flag set. In combination with level interrupts this is deadly, because the default primary handler just wakes the thread, then the irq lines is reenabled, but the device still has the level irq asserted. Rinse and repeat.... While this works for edge type interrupts, we play it safe and reject unconditionally because we can't say for sure which type this interrupt really has. The type flags are unreliable as the underlying chip implementation can override them. Signed-off-by: Petr Štetiar <ynezz@true.cz> SVN-Revision: 48894
50 lines
1.2 KiB
Makefile
50 lines
1.2 KiB
Makefile
#
|
|
# Copyright (C) 2008-2012 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
|
|
PKG_NAME:=gpio-button-hotplug
|
|
PKG_RELEASE:=2
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define KernelPackage/gpio-button-hotplug
|
|
SUBMENU:=Other modules
|
|
TITLE:=Simple GPIO Button Hotplug driver
|
|
FILES:=$(PKG_BUILD_DIR)/gpio-button-hotplug.ko
|
|
AUTOLOAD:=$(call AutoLoad,30,gpio-button-hotplug,1)
|
|
KCONFIG:=
|
|
endef
|
|
|
|
define KernelPackage/gpio-button-hotplug/description
|
|
This is a replacement for the following in-kernel drivers:
|
|
1) gpio_keys (KEYBOARD_GPIO)
|
|
2) gpio_keys_polled (KEYBOARD_GPIO_POLLED)
|
|
|
|
Instead of generating input events (like in-kernel drivers do) it generates
|
|
uevent-s and broadcasts them. This allows disabling input subsystem which is
|
|
an overkill for OpenWrt simple needs.
|
|
endef
|
|
|
|
MAKE_OPTS:= \
|
|
ARCH="$(LINUX_KARCH)" \
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
|
SUBDIRS="$(PKG_BUILD_DIR)"
|
|
|
|
define Build/Prepare
|
|
mkdir -p $(PKG_BUILD_DIR)
|
|
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
|
endef
|
|
|
|
define Build/Compile
|
|
$(MAKE) -C "$(LINUX_DIR)" \
|
|
$(MAKE_OPTS) \
|
|
modules
|
|
endef
|
|
|
|
$(eval $(call KernelPackage,gpio-button-hotplug))
|