Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: tsc2007 - fix locking in hrtimer handler
  Input: atkbd - add force release keys quirk for Amilo Xi 3650
  Input: ff-memless - fix signed to unsigned bit overflow
  Input: joydev - blacklist digitizers
This commit is contained in:
Linus Torvalds 2009-05-12 11:21:24 -07:00
commit 3b4334e200
4 changed files with 27 additions and 4 deletions

View File

@ -226,7 +226,7 @@ static int get_compatible_type(struct ff_device *ff, int effect_type)
*/ */
static void ml_combine_effects(struct ff_effect *effect, static void ml_combine_effects(struct ff_effect *effect,
struct ml_effect_state *state, struct ml_effect_state *state,
int gain) unsigned int gain)
{ {
struct ff_effect *new = state->effect; struct ff_effect *new = state->effect;
unsigned int strong, weak, i; unsigned int strong, weak, i;

View File

@ -843,7 +843,13 @@ static const struct input_device_id joydev_blacklist[] = {
INPUT_DEVICE_ID_MATCH_KEYBIT, INPUT_DEVICE_ID_MATCH_KEYBIT,
.evbit = { BIT_MASK(EV_KEY) }, .evbit = { BIT_MASK(EV_KEY) },
.keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) }, .keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) },
}, /* Avoid itouchpads, touchscreens and tablets */ }, /* Avoid itouchpads and touchscreens */
{
.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
INPUT_DEVICE_ID_MATCH_KEYBIT,
.evbit = { BIT_MASK(EV_KEY) },
.keybit = { [BIT_WORD(BTN_DIGI)] = BIT_MASK(BTN_DIGI) },
}, /* Avoid tablets, digitisers and similar devices */
{ } /* Terminating entry */ { } /* Terminating entry */
}; };

View File

@ -894,6 +894,13 @@ static unsigned int atkbd_amilo_pa1510_forced_release_keys[] = {
0xb0, 0xae, -1U 0xb0, 0xae, -1U
}; };
/*
* Amilo Xi 3650 key release for light touch bar not working
*/
static unsigned int atkbd_amilo_xi3650_forced_release_keys[] = {
0x67, 0xed, 0x90, 0xa2, 0x99, 0xa4, 0xae, 0xb0, -1U
};
/* /*
* atkbd_set_keycode_table() initializes keyboard's keycode table * atkbd_set_keycode_table() initializes keyboard's keycode table
* according to the selected scancode set * according to the selected scancode set
@ -1560,6 +1567,15 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
.callback = atkbd_setup_forced_release, .callback = atkbd_setup_forced_release,
.driver_data = atkbd_amilo_pa1510_forced_release_keys, .driver_data = atkbd_amilo_pa1510_forced_release_keys,
}, },
{
.ident = "Fujitsu Amilo Xi 3650",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 3650"),
},
.callback = atkbd_setup_forced_release,
.driver_data = atkbd_amilo_xi3650_forced_release_keys,
},
{ } { }
}; };

View File

@ -200,8 +200,9 @@ static int tsc2007_read_values(struct tsc2007 *tsc)
static enum hrtimer_restart tsc2007_timer(struct hrtimer *handle) static enum hrtimer_restart tsc2007_timer(struct hrtimer *handle)
{ {
struct tsc2007 *ts = container_of(handle, struct tsc2007, timer); struct tsc2007 *ts = container_of(handle, struct tsc2007, timer);
unsigned long flags;
spin_lock_irq(&ts->lock); spin_lock_irqsave(&ts->lock, flags);
if (unlikely(!ts->get_pendown_state() && ts->pendown)) { if (unlikely(!ts->get_pendown_state() && ts->pendown)) {
struct input_dev *input = ts->input; struct input_dev *input = ts->input;
@ -222,7 +223,7 @@ static enum hrtimer_restart tsc2007_timer(struct hrtimer *handle)
tsc2007_send_event(ts); tsc2007_send_event(ts);
} }
spin_unlock_irq(&ts->lock); spin_unlock_irqrestore(&ts->lock, flags);
return HRTIMER_NORESTART; return HRTIMER_NORESTART;
} }