Commit 15439dd3 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Merge branch 'for-linus' into next

Conflicts:

	drivers/input/mouse/appletouch.c
parents 39ab9dde 90d95ef6
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
@@ -138,6 +138,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;
@@ -145,18 +148,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)
@@ -493,8 +500,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
@@ -15,7 +15,6 @@ if INPUT_MISC
config INPUT_PCSPKR
	tristate "PC Speaker support"
	depends on PCSPKR_PLATFORM
	depends on SND_PCSP=n
	help
	  Say Y here if you want the standard PC Speaker to be used for
	  bells and whistles.
+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>
+41 −8
Original line number Diff line number Diff line
@@ -564,6 +564,21 @@ static void atp_close(struct input_dev *input)
	dev->open = 0;
}

static int atp_handle_geyser(struct atp *dev)
{
	struct usb_device *udev = dev->udev;

	if (dev->type != ATP_FOUNTAIN) {
		/* switch to raw sensor mode */
		if (atp_geyser_init(udev))
			return -EIO;

		printk(KERN_INFO "appletouch: Geyser mode initialized.\n");
	}

	return 0;
}

static int atp_probe(struct usb_interface *iface,
		     const struct usb_device_id *id)
{
@@ -608,14 +623,6 @@ static int atp_probe(struct usb_interface *iface,
	else
		dev->datalen = 64;

	if (dev->type != ATP_FOUNTAIN) {
		/* switch to raw sensor mode */
		if (atp_geyser_init(udev))
			goto err_free_devs;

		printk(KERN_INFO "appletouch: Geyser mode initialized.\n");
	}

	dev->urb = usb_alloc_urb(0, GFP_KERNEL);
	if (!dev->urb)
		goto err_free_devs;
@@ -629,6 +636,10 @@ static int atp_probe(struct usb_interface *iface,
			 usb_rcvintpipe(udev, int_in_endpointAddr),
			 dev->data, dev->datalen, atp_complete, dev, 1);

	error = atp_handle_geyser(dev);
	if (error)
		goto err_free_buffer;

	usb_make_path(udev, dev->phys, sizeof(dev->phys));
	strlcat(dev->phys, "/input0", sizeof(dev->phys));

@@ -721,6 +732,20 @@ static void atp_disconnect(struct usb_interface *iface)
	printk(KERN_INFO "input: appletouch disconnected\n");
}

static int atp_recover(struct atp *dev)
{
	int error;

	error = atp_handle_geyser(dev);
	if (error)
		return error;

	if (dev->open && usb_submit_urb(dev->urb, GFP_ATOMIC))
		return -EIO;

	return 0;
}

static int atp_suspend(struct usb_interface *iface, pm_message_t message)
{
	struct atp *dev = usb_get_intfdata(iface);
@@ -741,12 +766,20 @@ static int atp_resume(struct usb_interface *iface)
	return 0;
}

static int atp_reset_resume(struct usb_interface *iface)
{
	struct atp *dev = usb_get_intfdata(iface);

	return atp_recover(dev);
}

static struct usb_driver atp_driver = {
	.name		= "appletouch",
	.probe		= atp_probe,
	.disconnect	= atp_disconnect,
	.suspend	= atp_suspend,
	.resume		= atp_resume,
	.reset_resume	= atp_reset_resume,
	.id_table	= atp_table,
};

Loading