diff options
Diffstat (limited to 'drivers/platform/x86/intel-vbtn.c')
| -rw-r--r-- | drivers/platform/x86/intel-vbtn.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c index c13780b8dabb..06cd7e818ed5 100644 --- a/drivers/platform/x86/intel-vbtn.c +++ b/drivers/platform/x86/intel-vbtn.c @@ -17,6 +17,7 @@  /* When NOT in tablet mode, VGBS returns with the flag 0x40 */  #define TABLET_MODE_FLAG 0x40 +#define DOCK_MODE_FLAG   0x80  MODULE_LICENSE("GPL");  MODULE_AUTHOR("AceLan Kao"); @@ -38,6 +39,8 @@ static const struct key_entry intel_vbtn_keymap[] = {  	{ KE_IGNORE, 0xC7, { KEY_VOLUMEDOWN } },	/* volume-down key release */  	{ KE_KEY,    0xC8, { KEY_ROTATE_LOCK_TOGGLE } },	/* rotate-lock key press */  	{ KE_KEY,    0xC9, { KEY_ROTATE_LOCK_TOGGLE } },	/* rotate-lock key release */ +	{ KE_SW,     0xCA, { .sw = { SW_DOCK, 1 } } },		/* Docked */ +	{ KE_SW,     0xCB, { .sw = { SW_DOCK, 0 } } },		/* Undocked */  	{ KE_SW,     0xCC, { .sw = { SW_TABLET_MODE, 1 } } },	/* Tablet */  	{ KE_SW,     0xCD, { .sw = { SW_TABLET_MODE, 0 } } },	/* Laptop */  	{ KE_END }, @@ -121,6 +124,8 @@ static void detect_tablet_mode(struct platform_device *device)  	m = !(obj->integer.value & TABLET_MODE_FLAG);  	input_report_switch(priv->input_dev, SW_TABLET_MODE, m); +	m = (obj->integer.value & DOCK_MODE_FLAG) ? 1 : 0; +	input_report_switch(priv->input_dev, SW_DOCK, m);  out:  	kfree(vgbs_output.pointer);  }  |