Commit 5e75c5f5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: gpio_mouse - use standard driver registration method
  Input: mark serio and i8042 as suspended when hibernating too
  Input: add support for generic GPIO-based matrix keypad
  Input: arrange keyboards alphabetically
  Input: gpio-keys - avoid possibility of sleeping in timer function
  Input: gpio-keys - revert 'change timer to workqueue'
  Input: dm355evm_keys - fix kconfig symbol names
  Input: wacom - add DTF720a support and fix rotation on Intuos3
  Input: i8042 - more reset quirks for MSI Wind-clone netbooks
parents d6d46551 eeafa5ef
Loading
Loading
Loading
Loading
+151 −143
Original line number Diff line number Diff line
@@ -12,6 +12,42 @@ menuconfig INPUT_KEYBOARD

if INPUT_KEYBOARD

config KEYBOARD_AAED2000
	tristate "AAED-2000 keyboard"
	depends on MACH_AAED2000
	select INPUT_POLLDEV
	default y
	help
	  Say Y here to enable the keyboard on the Agilent AAED-2000
	  development board.

	  To compile this driver as a module, choose M here: the
	  module will be called aaed2000_kbd.

config KEYBOARD_AMIGA
	tristate "Amiga keyboard"
	depends on AMIGA
	help
	  Say Y here if you are running Linux on any AMIGA and have a keyboard
	  attached.

	  To compile this driver as a module, choose M here: the
	  module will be called amikbd.

config ATARI_KBD_CORE
	bool

config KEYBOARD_ATARI
	tristate "Atari keyboard"
	depends on ATARI
	select ATARI_KBD_CORE
	help
	  Say Y here if you are running Linux on any Atari and have a keyboard
	  attached.

	  To compile this driver as a module, choose M here: the
	  module will be called atakbd.

config KEYBOARD_ATKBD
	tristate "AT keyboard" if EMBEDDED || !X86
	default y
@@ -68,69 +104,14 @@ config KEYBOARD_ATKBD_RDI_KEYCODES
	  right-hand column will be interpreted as the key shown in the
	  left-hand column.

config KEYBOARD_SUNKBD
	tristate "Sun Type 4 and Type 5 keyboard"
	select SERIO
	help
	  Say Y here if you want to use a Sun Type 4 or Type 5 keyboard,
	  connected either to the Sun keyboard connector or to an serial
	  (RS-232) port via a simple adapter.

	  To compile this driver as a module, choose M here: the
	  module will be called sunkbd.

config KEYBOARD_LKKBD
	tristate "DECstation/VAXstation LK201/LK401 keyboard"
	select SERIO
	help
	  Say Y here if you want to use a LK201 or LK401 style serial
	  keyboard. This keyboard is also useable on PCs if you attach
	  it with the inputattach program. The connector pinout is
	  described within lkkbd.c.

	  To compile this driver as a module, choose M here: the
	  module will be called lkkbd.

config KEYBOARD_LOCOMO
	tristate "LoCoMo Keyboard Support"
	depends on SHARP_LOCOMO && INPUT_KEYBOARD
	help
	  Say Y here if you are running Linux on a Sharp Zaurus Collie or Poodle based PDA

	  To compile this driver as a module, choose M here: the
	  module will be called locomokbd.

config KEYBOARD_XTKBD
	tristate "XT keyboard"
	select SERIO
	help
	  Say Y here if you want to use the old IBM PC/XT keyboard (or
	  compatible) on your system. This is only possible with a
	  parallel port keyboard adapter, you cannot connect it to the
	  keyboard port on a PC that runs Linux.

	  To compile this driver as a module, choose M here: the
	  module will be called xtkbd.

config KEYBOARD_NEWTON
	tristate "Newton keyboard"
	select SERIO
	help
	  Say Y here if you have a Newton keyboard on a serial port.

	  To compile this driver as a module, choose M here: the
	  module will be called newtonkbd.

config KEYBOARD_STOWAWAY
	tristate "Stowaway keyboard"
	select SERIO
config KEYBOARD_BFIN
	tristate "Blackfin BF54x keypad support"
	depends on (BF54x && !BF544)
	help
	  Say Y here if you have a Stowaway keyboard on a serial port.
	  Stowaway compatible keyboards like Dicota Input-PDA keyboard
	  are also supported by this driver.
	  Say Y here if you want to use the BF54x keypad.

	  To compile this driver as a module, choose M here: the
	  module will be called stowaway.
	  module will be called bf54x-keys.

config KEYBOARD_CORGI
	tristate "Corgi keyboard"
@@ -143,61 +124,50 @@ config KEYBOARD_CORGI
	  To compile this driver as a module, choose M here: the
	  module will be called corgikbd.

config KEYBOARD_SPITZ
	tristate "Spitz keyboard"
	depends on PXA_SHARPSL
	default y
config KEYBOARD_LKKBD
	tristate "DECstation/VAXstation LK201/LK401 keyboard"
	select SERIO
	help
	  Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000,
	  SL-C3000 and Sl-C3100 series of PDAs.
	  Say Y here if you want to use a LK201 or LK401 style serial
	  keyboard. This keyboard is also useable on PCs if you attach
	  it with the inputattach program. The connector pinout is
	  described within lkkbd.c.

	  To compile this driver as a module, choose M here: the
	  module will be called spitzkbd.
	  module will be called lkkbd.

config KEYBOARD_TOSA
	tristate "Tosa keyboard"
	depends on MACH_TOSA
	default y
config KEYBOARD_EP93XX
	tristate "EP93xx Matrix Keypad support"
	depends on ARCH_EP93XX
	help
	  Say Y here to enable the keyboard on the Sharp Zaurus SL-6000x (Tosa)
	  Say Y here to enable the matrix keypad on the Cirrus EP93XX.

	  To compile this driver as a module, choose M here: the
	  module will be called tosakbd.
	  module will be called ep93xx_keypad.

config KEYBOARD_TOSA_USE_EXT_KEYCODES
	bool "Tosa keyboard: use extended keycodes"
	depends on KEYBOARD_TOSA
	default n
config KEYBOARD_GPIO
	tristate "GPIO Buttons"
	depends on GENERIC_GPIO
	help
	  Say Y here to enable the tosa keyboard driver to generate extended
	  (>= 127) keycodes. Be aware, that they can't be correctly interpreted
	  by either console keyboard driver or by Kdrive keybd driver.

	  Say Y only if you know, what you are doing!
	  This driver implements support for buttons connected
	  to GPIO pins of various CPUs (and some other chips).

config KEYBOARD_AMIGA
	tristate "Amiga keyboard"
	depends on AMIGA
	help
	  Say Y here if you are running Linux on any AMIGA and have a keyboard
	  attached.
	  Say Y here if your device has buttons connected
	  directly to such GPIO pins.  Your board-specific
	  setup logic must also provide a platform device,
	  with configuration data saying which GPIOs are used.

	  To compile this driver as a module, choose M here: the
	  module will be called amikbd.
	  module will be called gpio_keys.

config ATARI_KBD_CORE
	bool

config KEYBOARD_ATARI
	tristate "Atari keyboard"
	depends on ATARI
	select ATARI_KBD_CORE
config KEYBOARD_MATRIX
	tristate "GPIO driven matrix keypad support"
	depends on GENERIC_GPIO
	help
	  Say Y here if you are running Linux on any Atari and have a keyboard
	  attached.
	  Enable support for GPIO driven matrix keypad.

	  To compile this driver as a module, choose M here: the
	  module will be called atakbd.
	  module will be called matrix_keypad.

config KEYBOARD_HIL_OLD
	tristate "HP HIL keyboard support (simple driver)"
@@ -261,20 +231,39 @@ config KEYBOARD_LM8323
	  To compile this driver as a module, choose M here: the
	  module will be called lm8323.

config KEYBOARD_OMAP
	tristate "TI OMAP keypad support"
	depends on (ARCH_OMAP1 || ARCH_OMAP2)
config KEYBOARD_LOCOMO
	tristate "LoCoMo Keyboard Support"
	depends on SHARP_LOCOMO
	help
	  Say Y here if you want to use the OMAP keypad.
	  Say Y here if you are running Linux on a Sharp Zaurus Collie or Poodle based PDA

	  To compile this driver as a module, choose M here: the
	  module will be called omap-keypad.
	  module will be called locomokbd.

config KEYBOARD_MAPLE
	tristate "Maple bus keyboard"
	depends on SH_DREAMCAST && MAPLE
	help
	  Say Y here if you have a Dreamcast console running Linux and have
	  a keyboard attached to its Maple bus.

	  To compile this driver as a module, choose M here: the
	  module will be called maple_keyb.

config KEYBOARD_NEWTON
	tristate "Newton keyboard"
	select SERIO
	help
	  Say Y here if you have a Newton keyboard on a serial port.

	  To compile this driver as a module, choose M here: the
	  module will be called newtonkbd.

config KEYBOARD_PXA27x
	tristate "PXA27x/PXA3xx keypad support"
	depends on PXA27x || PXA3xx
	help
	  Enable support for PXA27x/PXA3xx keypad controller
	  Enable support for PXA27x/PXA3xx keypad controller.

	  To compile this driver as a module, choose M here: the
	  module will be called pxa27x_keypad.
@@ -288,51 +277,38 @@ config KEYBOARD_PXA930_ROTARY
	  To compile this driver as a module, choose M here: the
	  module will be called pxa930_rotary.

config KEYBOARD_AAED2000
	tristate "AAED-2000 keyboard"
	depends on MACH_AAED2000
	select INPUT_POLLDEV
config KEYBOARD_SPITZ
	tristate "Spitz keyboard"
	depends on PXA_SHARPSL
	default y
	help
	  Say Y here to enable the keyboard on the Agilent AAED-2000
	  development board.

	  To compile this driver as a module, choose M here: the
	  module will be called aaed2000_kbd.

config KEYBOARD_GPIO
	tristate "GPIO Buttons"
	depends on GENERIC_GPIO
	help
	  This driver implements support for buttons connected
	  to GPIO pins of various CPUs (and some other chips).

	  Say Y here if your device has buttons connected
	  directly to such GPIO pins.  Your board-specific
	  setup logic must also provide a platform device,
	  with configuration data saying which GPIOs are used.
	  Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000,
	  SL-C3000 and Sl-C3100 series of PDAs.

	  To compile this driver as a module, choose M here: the
	  module will be called gpio-keys.
	  module will be called spitzkbd.

config KEYBOARD_MAPLE
	tristate "Maple bus keyboard"
	depends on SH_DREAMCAST && MAPLE
config KEYBOARD_STOWAWAY
	tristate "Stowaway keyboard"
	select SERIO
	help
	  Say Y here if you have a Dreamcast console running Linux and have
	  a keyboard attached to its Maple bus.
	  Say Y here if you have a Stowaway keyboard on a serial port.
	  Stowaway compatible keyboards like Dicota Input-PDA keyboard
	  are also supported by this driver.

	  To compile this driver as a module, choose M here: the
	  module will be called maple_keyb.
	  module will be called stowaway.

config KEYBOARD_BFIN
	tristate "Blackfin BF54x keypad support"
	depends on (BF54x && !BF544)
config KEYBOARD_SUNKBD
	tristate "Sun Type 4 and Type 5 keyboard"
	select SERIO
	help
	  Say Y here if you want to use the BF54x keypad.
	  Say Y here if you want to use a Sun Type 4 or Type 5 keyboard,
	  connected either to the Sun keyboard connector or to an serial
	  (RS-232) port via a simple adapter.

	  To compile this driver as a module, choose M here: the
	  module will be called bf54x-keys.
	  module will be called sunkbd.

config KEYBOARD_SH_KEYSC
	tristate "SuperH KEYSC keypad support"
@@ -344,13 +320,45 @@ config KEYBOARD_SH_KEYSC
	  To compile this driver as a module, choose M here: the
	  module will be called sh_keysc.

config KEYBOARD_EP93XX
	tristate "EP93xx Matrix Keypad support"
	depends on ARCH_EP93XX
config KEYBOARD_OMAP
	tristate "TI OMAP keypad support"
	depends on (ARCH_OMAP1 || ARCH_OMAP2)
	help
	  Say Y here to enable the matrix keypad on the Cirrus EP93XX.
	  Say Y here if you want to use the OMAP keypad.

	  To compile this driver as a module, choose M here: the
	  module will be called ep93xx_keypad.
	  module will be called omap-keypad.

config KEYBOARD_TOSA
	tristate "Tosa keyboard"
	depends on MACH_TOSA
	default y
	help
	  Say Y here to enable the keyboard on the Sharp Zaurus SL-6000x (Tosa)

	  To compile this driver as a module, choose M here: the
	  module will be called tosakbd.

config KEYBOARD_TOSA_USE_EXT_KEYCODES
	bool "Tosa keyboard: use extended keycodes"
	depends on KEYBOARD_TOSA
	help
	  Say Y here to enable the tosa keyboard driver to generate extended
	  (>= 127) keycodes. Be aware, that they can't be correctly interpreted
	  by either console keyboard driver or by Kdrive keybd driver.

	  Say Y only if you know, what you are doing!

config KEYBOARD_XTKBD
	tristate "XT keyboard"
	select SERIO
	help
	  Say Y here if you want to use the old IBM PC/XT keyboard (or
	  compatible) on your system. This is only possible with a
	  parallel port keyboard adapter, you cannot connect it to the
	  keyboard port on a PC that runs Linux.

	  To compile this driver as a module, choose M here: the
	  module will be called xtkbd.

endif
+17 −16
Original line number Diff line number Diff line
@@ -4,29 +4,30 @@

# Each configuration option enables a list of files.

obj-$(CONFIG_KEYBOARD_ATKBD)		+= atkbd.o
obj-$(CONFIG_KEYBOARD_SUNKBD)		+= sunkbd.o
obj-$(CONFIG_KEYBOARD_LKKBD)		+= lkkbd.o
obj-$(CONFIG_KEYBOARD_XTKBD)		+= xtkbd.o
obj-$(CONFIG_KEYBOARD_AAED2000)		+= aaed2000_kbd.o
obj-$(CONFIG_KEYBOARD_AMIGA)		+= amikbd.o
obj-$(CONFIG_KEYBOARD_ATARI)		+= atakbd.o
obj-$(CONFIG_KEYBOARD_LOCOMO)		+= locomokbd.o
obj-$(CONFIG_KEYBOARD_NEWTON)		+= newtonkbd.o
obj-$(CONFIG_KEYBOARD_STOWAWAY)		+= stowaway.o
obj-$(CONFIG_KEYBOARD_ATKBD)		+= atkbd.o
obj-$(CONFIG_KEYBOARD_BFIN)		+= bf54x-keys.o
obj-$(CONFIG_KEYBOARD_CORGI)		+= corgikbd.o
obj-$(CONFIG_KEYBOARD_SPITZ)		+= spitzkbd.o
obj-$(CONFIG_KEYBOARD_TOSA)		+= tosakbd.o
obj-$(CONFIG_KEYBOARD_EP93XX)		+= ep93xx_keypad.o
obj-$(CONFIG_KEYBOARD_GPIO)		+= gpio_keys.o
obj-$(CONFIG_KEYBOARD_HIL)		+= hil_kbd.o
obj-$(CONFIG_KEYBOARD_HIL_OLD)		+= hilkbd.o
obj-$(CONFIG_KEYBOARD_HP6XX)		+= jornada680_kbd.o
obj-$(CONFIG_KEYBOARD_HP7XX)		+= jornada720_kbd.o
obj-$(CONFIG_KEYBOARD_LKKBD)		+= lkkbd.o
obj-$(CONFIG_KEYBOARD_LM8323)		+= lm8323.o
obj-$(CONFIG_KEYBOARD_LOCOMO)		+= locomokbd.o
obj-$(CONFIG_KEYBOARD_MAPLE)		+= maple_keyb.o
obj-$(CONFIG_KEYBOARD_MATRIX)		+= matrix_keypad.o
obj-$(CONFIG_KEYBOARD_NEWTON)		+= newtonkbd.o
obj-$(CONFIG_KEYBOARD_OMAP)		+= omap-keypad.o
obj-$(CONFIG_KEYBOARD_PXA27x)		+= pxa27x_keypad.o
obj-$(CONFIG_KEYBOARD_PXA930_ROTARY)	+= pxa930_rotary.o
obj-$(CONFIG_KEYBOARD_AAED2000)		+= aaed2000_kbd.o
obj-$(CONFIG_KEYBOARD_GPIO)		+= gpio_keys.o
obj-$(CONFIG_KEYBOARD_HP6XX)		+= jornada680_kbd.o
obj-$(CONFIG_KEYBOARD_HP7XX)		+= jornada720_kbd.o
obj-$(CONFIG_KEYBOARD_MAPLE)		+= maple_keyb.o
obj-$(CONFIG_KEYBOARD_BFIN)		+= bf54x-keys.o
obj-$(CONFIG_KEYBOARD_SH_KEYSC)		+= sh_keysc.o
obj-$(CONFIG_KEYBOARD_EP93XX)		+= ep93xx_keypad.o
obj-$(CONFIG_KEYBOARD_SPITZ)		+= spitzkbd.o
obj-$(CONFIG_KEYBOARD_STOWAWAY)		+= stowaway.o
obj-$(CONFIG_KEYBOARD_SUNKBD)		+= sunkbd.o
obj-$(CONFIG_KEYBOARD_TOSA)		+= tosakbd.o
obj-$(CONFIG_KEYBOARD_XTKBD)		+= xtkbd.o
+24 −9
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@
struct gpio_button_data {
	struct gpio_keys_button *button;
	struct input_dev *input;
	struct delayed_work work;
	struct timer_list timer;
	struct work_struct work;
};

struct gpio_keys_drvdata {
@@ -40,7 +41,7 @@ struct gpio_keys_drvdata {
static void gpio_keys_report_event(struct work_struct *work)
{
	struct gpio_button_data *bdata =
		container_of(work, struct gpio_button_data, work.work);
		container_of(work, struct gpio_button_data, work);
	struct gpio_keys_button *button = bdata->button;
	struct input_dev *input = bdata->input;
	unsigned int type = button->type ?: EV_KEY;
@@ -50,17 +51,25 @@ static void gpio_keys_report_event(struct work_struct *work)
	input_sync(input);
}

static void gpio_keys_timer(unsigned long _data)
{
	struct gpio_button_data *data = (struct gpio_button_data *)_data;

	schedule_work(&data->work);
}

static irqreturn_t gpio_keys_isr(int irq, void *dev_id)
{
	struct gpio_button_data *bdata = dev_id;
	struct gpio_keys_button *button = bdata->button;
	unsigned long delay;

	BUG_ON(irq != gpio_to_irq(button->gpio));

	delay = button->debounce_interval ?
			msecs_to_jiffies(button->debounce_interval) : 0;
	schedule_delayed_work(&bdata->work, delay);
	if (button->debounce_interval)
		mod_timer(&bdata->timer,
			jiffies + msecs_to_jiffies(button->debounce_interval));
	else
		schedule_work(&bdata->work);

	return IRQ_HANDLED;
}
@@ -107,7 +116,9 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)

		bdata->input = input;
		bdata->button = button;
		INIT_DELAYED_WORK(&bdata->work, gpio_keys_report_event);
		setup_timer(&bdata->timer,
			    gpio_keys_timer, (unsigned long)bdata);
		INIT_WORK(&bdata->work, gpio_keys_report_event);

		error = gpio_request(button->gpio, button->desc ?: "gpio_keys");
		if (error < 0) {
@@ -166,7 +177,9 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
 fail2:
	while (--i >= 0) {
		free_irq(gpio_to_irq(pdata->buttons[i].gpio), &ddata->data[i]);
		cancel_delayed_work_sync(&ddata->data[i].work);
		if (pdata->buttons[i].debounce_interval)
			del_timer_sync(&ddata->data[i].timer);
		cancel_work_sync(&ddata->data[i].work);
		gpio_free(pdata->buttons[i].gpio);
	}

@@ -190,7 +203,9 @@ static int __devexit gpio_keys_remove(struct platform_device *pdev)
	for (i = 0; i < pdata->nbuttons; i++) {
		int irq = gpio_to_irq(pdata->buttons[i].gpio);
		free_irq(irq, &ddata->data[i]);
		cancel_delayed_work_sync(&ddata->data[i].work);
		if (pdata->buttons[i].debounce_interval)
			del_timer_sync(&ddata->data[i].timer);
		cancel_work_sync(&ddata->data[i].work);
		gpio_free(pdata->buttons[i].gpio);
	}

+453 −0

File added.

Preview size limit exceeded, changes collapsed.

+5 −6
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ static void gpio_mouse_scan(struct input_polled_dev *dev)
	input_sync(input);
}

static int __init gpio_mouse_probe(struct platform_device *pdev)
static int __devinit gpio_mouse_probe(struct platform_device *pdev)
{
	struct gpio_mouse_platform_data *pdata = pdev->dev.platform_data;
	struct input_polled_dev *input_poll;
@@ -170,10 +170,8 @@ static int __devexit gpio_mouse_remove(struct platform_device *pdev)
	return 0;
}

/* work with hotplug and coldplug */
MODULE_ALIAS("platform:gpio_mouse");

static struct platform_driver gpio_mouse_device_driver = {
	.probe		= gpio_mouse_probe,
	.remove		= __devexit_p(gpio_mouse_remove),
	.driver		= {
		.name	= "gpio_mouse",
@@ -183,8 +181,7 @@ static struct platform_driver gpio_mouse_device_driver = {

static int __init gpio_mouse_init(void)
{
	return platform_driver_probe(&gpio_mouse_device_driver,
			gpio_mouse_probe);
	return platform_driver_register(&gpio_mouse_device_driver);
}
module_init(gpio_mouse_init);

@@ -197,3 +194,5 @@ module_exit(gpio_mouse_exit);
MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>");
MODULE_DESCRIPTION("GPIO mouse driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:gpio_mouse"); /* work with hotplug and coldplug */
Loading