Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7536d7be 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: rename SW_RADIO to SW_RFKILL_ALL
  Input: gtco - fix double kfree in error handling path
  Input: pxa27x_keypad - miscellaneous fixes
  Input: atkbd - mark keyboard as disabled when suspending/unloading
  Input: apanel - remove duplicate include
  Input: wm9713 - support five wire panels
  Input: wm97xx-core - fix race on PHY init
  Input: wm97xx-core - fix driver name
  Input: wm97xx-core - report a phys for WM97xx touchscreens
  Input: i8042 - make sure Dritek quirk is invoked at resume
  Input: i8042 - add Dritek quirk for Acer TravelMate 660
parents 57f50ca1 5adad013
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -807,6 +807,8 @@ static int atkbd_activate(struct atkbd *atkbd)
static void atkbd_cleanup(struct serio *serio)
{
	struct atkbd *atkbd = serio_get_drvdata(serio);

	atkbd_disable(atkbd);
	ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT);
}

+25 −13
Original line number Diff line number Diff line
@@ -136,6 +136,9 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad)
		set_bit(code, input_dev->keybit);
	}

	for (i = 0; i < pdata->direct_key_num; i++)
		set_bit(pdata->direct_key_map[i], input_dev->keybit);

	keypad->rotary_up_key[0] = pdata->rotary0_up_key;
	keypad->rotary_up_key[1] = pdata->rotary1_up_key;
	keypad->rotary_down_key[0] = pdata->rotary0_down_key;
@@ -143,18 +146,22 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad)
	keypad->rotary_rel_code[0] = pdata->rotary0_rel_code;
	keypad->rotary_rel_code[1] = pdata->rotary1_rel_code;

	if (pdata->enable_rotary0) {
		if (pdata->rotary0_up_key && pdata->rotary0_down_key) {
			set_bit(pdata->rotary0_up_key, input_dev->keybit);
			set_bit(pdata->rotary0_down_key, input_dev->keybit);
		} else
			set_bit(pdata->rotary0_rel_code, input_dev->relbit);
	}

	if (pdata->enable_rotary1) {
		if (pdata->rotary1_up_key && pdata->rotary1_down_key) {
			set_bit(pdata->rotary1_up_key, input_dev->keybit);
			set_bit(pdata->rotary1_down_key, input_dev->keybit);
		} else
			set_bit(pdata->rotary1_rel_code, input_dev->relbit);
	}
}

static inline unsigned int lookup_matrix_keycode(
		struct pxa27x_keypad *keypad, int row, int col)
@@ -484,8 +491,13 @@ static int __devinit pxa27x_keypad_probe(struct platform_device *pdev)
	keypad->input_dev = input_dev;
	input_set_drvdata(input_dev, keypad);

	input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP) |
		BIT_MASK(EV_REL);
	input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
	if ((keypad->pdata->enable_rotary0 &&
			keypad->pdata->rotary0_rel_code) ||
	    (keypad->pdata->enable_rotary1 &&
			keypad->pdata->rotary1_rel_code)) {
		input_dev->evbit[0] |= BIT_MASK(EV_REL);
	}

	pxa27x_keypad_build_keycode(keypad);
	platform_set_drvdata(pdev, keypad);
+0 −1
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/input-polldev.h>
#include <linux/i2c.h>
#include <linux/workqueue.h>
+7 −0
Original line number Diff line number Diff line
@@ -330,6 +330,13 @@ static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 9110"),
		},
	},
	{
		.ident = "Acer TravelMate 660",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
		},
	},
	{
		.ident = "Acer TravelMate 2490",
		.matches = {
+25 −8
Original line number Diff line number Diff line
@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count)

#undef DELAY

#ifdef CONFIG_X86
static void i8042_dritek_enable(void)
{
	char param = 0x90;
	int error;

	error = i8042_command(&param, 0x1059);
	if (error)
		printk(KERN_WARNING
			"Failed to enable DRITEK extension: %d\n",
			error);
}
#endif

#ifdef CONFIG_PM
/*
 * Here we try to restore the original BIOS settings. We only want to
@@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev)
		return -EIO;
	}


#ifdef CONFIG_X86
	if (i8042_dritek)
		i8042_dritek_enable();
#endif

	if (i8042_mux_present) {
		if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())
			printk(KERN_WARNING
@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev)
	if (error)
		return error;

#ifdef CONFIG_X86
	if (i8042_dritek)
		i8042_dritek_enable();
#endif

	if (!i8042_noaux) {
		error = i8042_setup_aux();
		if (error && error != -ENODEV && error != -EBUSY)
@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev)
		if (error)
			goto out_fail;
	}
#ifdef CONFIG_X86
	if (i8042_dritek) {
		char param = 0x90;
		error = i8042_command(&param, 0x1059);
		if (error)
			goto out_fail;
	}
#endif
/*
 * Ok, everything is ready, let's register all serio ports
 */
Loading