Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov: "A fix for a panic in gpio-keys driver when set up with absolute events, a fixup to the new zforce driver and a new keycode definition" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: allocate absinfo data when setting ABS capability Input: define KEY_WWAN for Wireless WAN Input: zforce - fix possible driver hang during suspend
This commit is contained in:
commit
6b8c982d41
|
@ -1871,6 +1871,10 @@ void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EV_ABS:
|
case EV_ABS:
|
||||||
|
input_alloc_absinfo(dev);
|
||||||
|
if (!dev->absinfo)
|
||||||
|
return;
|
||||||
|
|
||||||
__set_bit(code, dev->absbit);
|
__set_bit(code, dev->absbit);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -455,7 +455,18 @@ static void zforce_complete(struct zforce_ts *ts, int cmd, int result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static irqreturn_t zforce_interrupt(int irq, void *dev_id)
|
static irqreturn_t zforce_irq(int irq, void *dev_id)
|
||||||
|
{
|
||||||
|
struct zforce_ts *ts = dev_id;
|
||||||
|
struct i2c_client *client = ts->client;
|
||||||
|
|
||||||
|
if (ts->suspended && device_may_wakeup(&client->dev))
|
||||||
|
pm_wakeup_event(&client->dev, 500);
|
||||||
|
|
||||||
|
return IRQ_WAKE_THREAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
static irqreturn_t zforce_irq_thread(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
struct zforce_ts *ts = dev_id;
|
struct zforce_ts *ts = dev_id;
|
||||||
struct i2c_client *client = ts->client;
|
struct i2c_client *client = ts->client;
|
||||||
|
@ -465,12 +476,10 @@ static irqreturn_t zforce_interrupt(int irq, void *dev_id)
|
||||||
u8 *payload;
|
u8 *payload;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When suspended, emit a wakeup signal if necessary and return.
|
* When still suspended, return.
|
||||||
* Due to the level-interrupt we will get re-triggered later.
|
* Due to the level-interrupt we will get re-triggered later.
|
||||||
*/
|
*/
|
||||||
if (ts->suspended) {
|
if (ts->suspended) {
|
||||||
if (device_may_wakeup(&client->dev))
|
|
||||||
pm_wakeup_event(&client->dev, 500);
|
|
||||||
msleep(20);
|
msleep(20);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
@ -763,8 +772,8 @@ static int zforce_probe(struct i2c_client *client,
|
||||||
* Therefore we can trigger the interrupt anytime it is low and do
|
* Therefore we can trigger the interrupt anytime it is low and do
|
||||||
* not need to limit it to the interrupt edge.
|
* not need to limit it to the interrupt edge.
|
||||||
*/
|
*/
|
||||||
ret = devm_request_threaded_irq(&client->dev, client->irq, NULL,
|
ret = devm_request_threaded_irq(&client->dev, client->irq,
|
||||||
zforce_interrupt,
|
zforce_irq, zforce_irq_thread,
|
||||||
IRQF_TRIGGER_LOW | IRQF_ONESHOT,
|
IRQF_TRIGGER_LOW | IRQF_ONESHOT,
|
||||||
input_dev->name, ts);
|
input_dev->name, ts);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
|
@ -464,7 +464,8 @@ struct input_keymap_entry {
|
||||||
#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */
|
#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */
|
||||||
#define KEY_DISPLAY_OFF 245 /* display device to off state */
|
#define KEY_DISPLAY_OFF 245 /* display device to off state */
|
||||||
|
|
||||||
#define KEY_WIMAX 246
|
#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
|
||||||
|
#define KEY_WIMAX KEY_WWAN
|
||||||
#define KEY_RFKILL 247 /* Key that controls all radios */
|
#define KEY_RFKILL 247 /* Key that controls all radios */
|
||||||
|
|
||||||
#define KEY_MICMUTE 248 /* Mute / unmute the microphone */
|
#define KEY_MICMUTE 248 /* Mute / unmute the microphone */
|
||||||
|
|
Loading…
Reference in a new issue