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

Commit 45b30105 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Automatic merge of 'for-linus' branch from

parents 6cf2b3fc 7d6064d4
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -68,23 +68,3 @@ config GAMEPORT_CS461X
	depends on PCI

endif

# Yes, SOUND_GAMEPORT looks a bit odd. Yes, it ends up being turned on
# in every .config. Please don't touch it. It is here to handle an
# unusual dependency between GAMEPORT and sound drivers.
#
# Some sound drivers call gameport functions. If GAMEPORT is
# not selected, empty stubs are provided for the functions and all is
# well.
# If GAMEPORT is built in, everything is fine.
# If GAMEPORT is a module, however, it would need to be loaded for the
# sound driver to be able to link properly. Therefore, the sound
# driver must be a module as well in that case. Since there's no way
# to express that directly in Kconfig, we use SOUND_GAMEPORT to
# express it. SOUND_GAMEPORT boils down to "if GAMEPORT is 'm',
# anything that depends on SOUND_GAMEPORT must be 'm' as well. if
# GAMEPORT is 'y' or 'n', it can be anything".
config SOUND_GAMEPORT
	tristate
	default m if GAMEPORT=m
	default y
+1 −1
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ static struct input_handle *joydev_connect(struct input_handler *handler, struct
			joydev->nkey++;
		}

	for (i = 0; i < BTN_JOYSTICK - BTN_MISC + 1; i++)
	for (i = 0; i < BTN_JOYSTICK - BTN_MISC; i++)
		if (test_bit(i + BTN_MISC, dev->keybit)) {
			joydev->keymap[i] = joydev->nkey;
			joydev->keypam[joydev->nkey] = i + BTN_MISC;
+5 −2
Original line number Diff line number Diff line
@@ -518,13 +518,16 @@ static int psmouse_probe(struct psmouse *psmouse)
/*
 * First, we check if it's a mouse. It should send 0x00 or 0x03
 * in case of an IntelliMouse in 4-byte mode or 0x04 for IM Explorer.
 * Sunrex K8561 IR Keyboard/Mouse reports 0xff on second and subsequent
 * ID queries, probably due to a firmware bug.
 */

	param[0] = 0xa5;
	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
		return -1;

	if (param[0] != 0x00 && param[0] != 0x03 && param[0] != 0x04)
	if (param[0] != 0x00 && param[0] != 0x03 &&
	    param[0] != 0x04 && param[0] != 0xff)
		return -1;

/*
@@ -972,7 +975,7 @@ static int psmouse_set_maxproto(const char *val, struct kernel_param *kp)
		return -EINVAL;

	if (!strncmp(val, "any", 3)) {
		*((unsigned int *)kp->arg) = -1UL;
		*((unsigned int *)kp->arg) = -1U;
		return 0;
	}

+5 −34
Original line number Diff line number Diff line
@@ -143,39 +143,6 @@ static int synaptics_identify(struct psmouse *psmouse)
	return -1;
}

static void print_ident(struct synaptics_data *priv)
{
	printk(KERN_INFO "Synaptics Touchpad, model: %ld\n", SYN_ID_MODEL(priv->identity));
	printk(KERN_INFO " Firmware: %ld.%ld\n", SYN_ID_MAJOR(priv->identity),
	       SYN_ID_MINOR(priv->identity));
	if (SYN_MODEL_ROT180(priv->model_id))
		printk(KERN_INFO " 180 degree mounted touchpad\n");
	if (SYN_MODEL_PORTRAIT(priv->model_id))
		printk(KERN_INFO " portrait touchpad\n");
	printk(KERN_INFO " Sensor: %ld\n", SYN_MODEL_SENSOR(priv->model_id));
	if (SYN_MODEL_NEWABS(priv->model_id))
		printk(KERN_INFO " new absolute packet format\n");
	if (SYN_MODEL_PEN(priv->model_id))
		printk(KERN_INFO " pen detection\n");

	if (SYN_CAP_EXTENDED(priv->capabilities)) {
		printk(KERN_INFO " Touchpad has extended capability bits\n");
		if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap))
			printk(KERN_INFO " -> %d multi-buttons, i.e. besides standard buttons\n",
			       (int)(SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)));
		if (SYN_CAP_MIDDLE_BUTTON(priv->capabilities))
			printk(KERN_INFO " -> middle button\n");
		if (SYN_CAP_FOUR_BUTTON(priv->capabilities))
			printk(KERN_INFO " -> four buttons\n");
		if (SYN_CAP_MULTIFINGER(priv->capabilities))
			printk(KERN_INFO " -> multifinger detection\n");
		if (SYN_CAP_PALMDETECT(priv->capabilities))
			printk(KERN_INFO " -> palm detection\n");
		if (SYN_CAP_PASS_THROUGH(priv->capabilities))
			printk(KERN_INFO " -> pass-through port\n");
	}
}

static int synaptics_query_hardware(struct psmouse *psmouse)
{
	int retries = 0;
@@ -666,7 +633,11 @@ int synaptics_init(struct psmouse *psmouse)

	priv->pkt_type = SYN_MODEL_NEWABS(priv->model_id) ? SYN_NEWABS : SYN_OLDABS;

	print_ident(priv);
	printk(KERN_INFO "Synaptics Touchpad, model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx\n",
		SYN_ID_MODEL(priv->identity),
		SYN_ID_MAJOR(priv->identity), SYN_ID_MINOR(priv->identity),
		priv->model_id, priv->capabilities, priv->ext_cap);

	set_input_params(&psmouse->dev, priv);

	psmouse->protocol_handler = synaptics_process_byte;
+26 −6
Original line number Diff line number Diff line
@@ -88,9 +88,11 @@ static struct dmi_system_id __initdata i8042_dmi_noloop_table[] = {
};

/*
 * Some Fujitsu notebooks are ahving trouble with touhcpads if
 * Some Fujitsu notebooks are having trouble with touchpads if
 * active multiplexing mode is activated. Luckily they don't have
 * external PS/2 ports so we can safely disable it.
 * ... apparently some Toshibas don't like MUX mode either and
 * die horrible death on reboot.
 */
static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
	{
@@ -114,6 +116,13 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S Series"),
		},
	},
	{
		.ident = "Fujitsu Lifebook S6230",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
		},
	},
	{
		.ident = "Fujitsu T70H",
		.matches = {
@@ -121,6 +130,13 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"),
		},
	},
	{
		.ident = "Toshiba P10",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"),
		},
	},
	{ }
};

@@ -215,19 +231,23 @@ static struct pnp_driver i8042_pnp_aux_driver = {

static void i8042_pnp_exit(void)
{
	if (i8042_pnp_kbd_registered)
	if (i8042_pnp_kbd_registered) {
		i8042_pnp_kbd_registered = 0;
		pnp_unregister_driver(&i8042_pnp_kbd_driver);
	}

	if (i8042_pnp_aux_registered)
	if (i8042_pnp_aux_registered) {
		i8042_pnp_aux_registered = 0;
		pnp_unregister_driver(&i8042_pnp_aux_driver);
	}
}

static int i8042_pnp_init(void)
{
	int result_kbd, result_aux;

	if (i8042_nopnp) {
		printk("i8042: PNP detection disabled\n");
		printk(KERN_INFO "i8042: PNP detection disabled\n");
		return 0;
	}

@@ -241,7 +261,7 @@ static int i8042_pnp_init(void)
#if defined(__ia64__)
		return -ENODEV;
#else
		printk(KERN_WARNING "PNP: No PS/2 controller found. Probing ports directly.\n");
		printk(KERN_INFO "PNP: No PS/2 controller found. Probing ports directly.\n");
		return 0;
#endif
	}
@@ -265,7 +285,7 @@ static int i8042_pnp_init(void)
		i8042_pnp_kbd_irq = i8042_kbd_irq;
	}

	if (result_aux > 0 && !i8042_pnp_aux_irq) {
	if (!i8042_pnp_aux_irq) {
		printk(KERN_WARNING "PNP: PS/2 controller doesn't have AUX irq; using default %#x\n", i8042_aux_irq);
		i8042_pnp_aux_irq = i8042_aux_irq;
	}
Loading