forked from Minki/linux
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: adds the context menu key (HUT GenDesc 0x84) Input: add definitions for frame forward and frame back keys Input: bf54x-keys - keypad does not exist on BF544 parts Input: gpio-keys - request and configure GPIOs Input: i8042 - add i8042.noloop quirk for MS Virtual Machine Sonypi: use synchronize_irq instead of sycnronize_sched sonypi: fit input devices into sysfs tree sony-laptop: fit input devices into sysfs tree
This commit is contained in:
commit
febb187761
@ -1163,7 +1163,7 @@ static struct acpi_driver sonypi_acpi_driver = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int __devinit sonypi_create_input_devices(void)
|
static int __devinit sonypi_create_input_devices(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct input_dev *jog_dev;
|
struct input_dev *jog_dev;
|
||||||
struct input_dev *key_dev;
|
struct input_dev *key_dev;
|
||||||
@ -1177,6 +1177,7 @@ static int __devinit sonypi_create_input_devices(void)
|
|||||||
jog_dev->name = "Sony Vaio Jogdial";
|
jog_dev->name = "Sony Vaio Jogdial";
|
||||||
jog_dev->id.bustype = BUS_ISA;
|
jog_dev->id.bustype = BUS_ISA;
|
||||||
jog_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
jog_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
||||||
|
jog_dev->dev.parent = &pdev->dev;
|
||||||
|
|
||||||
jog_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
|
jog_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
|
||||||
jog_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_MIDDLE);
|
jog_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_MIDDLE);
|
||||||
@ -1191,6 +1192,7 @@ static int __devinit sonypi_create_input_devices(void)
|
|||||||
key_dev->name = "Sony Vaio Keys";
|
key_dev->name = "Sony Vaio Keys";
|
||||||
key_dev->id.bustype = BUS_ISA;
|
key_dev->id.bustype = BUS_ISA;
|
||||||
key_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
key_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
||||||
|
key_dev->dev.parent = &pdev->dev;
|
||||||
|
|
||||||
/* Initialize the Input Drivers: special keys */
|
/* Initialize the Input Drivers: special keys */
|
||||||
key_dev->evbit[0] = BIT_MASK(EV_KEY);
|
key_dev->evbit[0] = BIT_MASK(EV_KEY);
|
||||||
@ -1385,7 +1387,7 @@ static int __devinit sonypi_probe(struct platform_device *dev)
|
|||||||
|
|
||||||
if (useinput) {
|
if (useinput) {
|
||||||
|
|
||||||
error = sonypi_create_input_devices();
|
error = sonypi_create_input_devices(dev);
|
||||||
if (error) {
|
if (error) {
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"sonypi: failed to create input devices\n");
|
"sonypi: failed to create input devices\n");
|
||||||
@ -1432,7 +1434,7 @@ static int __devexit sonypi_remove(struct platform_device *dev)
|
|||||||
{
|
{
|
||||||
sonypi_disable();
|
sonypi_disable();
|
||||||
|
|
||||||
synchronize_sched(); /* Allow sonypi interrupt to complete. */
|
synchronize_irq(sonypi_device.irq);
|
||||||
flush_scheduled_work();
|
flush_scheduled_work();
|
||||||
|
|
||||||
if (useinput) {
|
if (useinput) {
|
||||||
|
@ -286,7 +286,7 @@ config KEYBOARD_MAPLE
|
|||||||
|
|
||||||
config KEYBOARD_BFIN
|
config KEYBOARD_BFIN
|
||||||
tristate "Blackfin BF54x keypad support"
|
tristate "Blackfin BF54x keypad support"
|
||||||
depends on BF54x
|
depends on (BF54x && !BF544)
|
||||||
help
|
help
|
||||||
Say Y here if you want to use the BF54x keypad.
|
Say Y here if you want to use the BF54x keypad.
|
||||||
|
|
||||||
|
@ -75,16 +75,32 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
for (i = 0; i < pdata->nbuttons; i++) {
|
for (i = 0; i < pdata->nbuttons; i++) {
|
||||||
struct gpio_keys_button *button = &pdata->buttons[i];
|
struct gpio_keys_button *button = &pdata->buttons[i];
|
||||||
int irq = gpio_to_irq(button->gpio);
|
int irq;
|
||||||
unsigned int type = button->type ?: EV_KEY;
|
unsigned int type = button->type ?: EV_KEY;
|
||||||
|
|
||||||
|
error = gpio_request(button->gpio, button->desc ?: "gpio_keys");
|
||||||
|
if (error < 0) {
|
||||||
|
pr_err("gpio-keys: failed to request GPIO %d,"
|
||||||
|
" error %d\n", button->gpio, error);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
error = gpio_direction_input(button->gpio);
|
||||||
|
if (error < 0) {
|
||||||
|
pr_err("gpio-keys: failed to configure input"
|
||||||
|
" direction for GPIO %d, error %d\n",
|
||||||
|
button->gpio, error);
|
||||||
|
gpio_free(button->gpio);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
irq = gpio_to_irq(button->gpio);
|
||||||
if (irq < 0) {
|
if (irq < 0) {
|
||||||
error = irq;
|
error = irq;
|
||||||
printk(KERN_ERR
|
pr_err("gpio-keys: Unable to get irq number"
|
||||||
"gpio-keys: "
|
" for GPIO %d, error %d\n",
|
||||||
"Unable to get irq number for GPIO %d,"
|
|
||||||
"error %d\n",
|
|
||||||
button->gpio, error);
|
button->gpio, error);
|
||||||
|
gpio_free(button->gpio);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,9 +110,9 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
|
|||||||
button->desc ? button->desc : "gpio_keys",
|
button->desc ? button->desc : "gpio_keys",
|
||||||
pdev);
|
pdev);
|
||||||
if (error) {
|
if (error) {
|
||||||
printk(KERN_ERR
|
pr_err("gpio-keys: Unable to claim irq %d; error %d\n",
|
||||||
"gpio-keys: Unable to claim irq %d; error %d\n",
|
|
||||||
irq, error);
|
irq, error);
|
||||||
|
gpio_free(button->gpio);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,8 +124,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
error = input_register_device(input);
|
error = input_register_device(input);
|
||||||
if (error) {
|
if (error) {
|
||||||
printk(KERN_ERR
|
pr_err("gpio-keys: Unable to register input device, "
|
||||||
"gpio-keys: Unable to register input device, "
|
|
||||||
"error: %d\n", error);
|
"error: %d\n", error);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -119,8 +134,10 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
while (--i >= 0)
|
while (--i >= 0) {
|
||||||
free_irq(gpio_to_irq(pdata->buttons[i].gpio), pdev);
|
free_irq(gpio_to_irq(pdata->buttons[i].gpio), pdev);
|
||||||
|
gpio_free(pdata->buttons[i].gpio);
|
||||||
|
}
|
||||||
|
|
||||||
platform_set_drvdata(pdev, NULL);
|
platform_set_drvdata(pdev, NULL);
|
||||||
input_free_device(input);
|
input_free_device(input);
|
||||||
@ -139,6 +156,7 @@ static int __devexit gpio_keys_remove(struct platform_device *pdev)
|
|||||||
for (i = 0; i < pdata->nbuttons; i++) {
|
for (i = 0; i < pdata->nbuttons; i++) {
|
||||||
int irq = gpio_to_irq(pdata->buttons[i].gpio);
|
int irq = gpio_to_irq(pdata->buttons[i].gpio);
|
||||||
free_irq(irq, pdev);
|
free_irq(irq, pdev);
|
||||||
|
gpio_free(pdata->buttons[i].gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
input_unregister_device(input);
|
input_unregister_device(input);
|
||||||
|
@ -110,6 +110,14 @@ static struct dmi_system_id __initdata i8042_dmi_noloop_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
|
DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "Microsoft Virtual Machine",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_VERSION, "VS2005R2"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ static void sony_laptop_report_input_event(u8 event)
|
|||||||
dprintk("unknown input event %.2x\n", event);
|
dprintk("unknown input event %.2x\n", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sony_laptop_setup_input(void)
|
static int sony_laptop_setup_input(struct acpi_device *acpi_device)
|
||||||
{
|
{
|
||||||
struct input_dev *jog_dev;
|
struct input_dev *jog_dev;
|
||||||
struct input_dev *key_dev;
|
struct input_dev *key_dev;
|
||||||
@ -379,6 +379,7 @@ static int sony_laptop_setup_input(void)
|
|||||||
key_dev->name = "Sony Vaio Keys";
|
key_dev->name = "Sony Vaio Keys";
|
||||||
key_dev->id.bustype = BUS_ISA;
|
key_dev->id.bustype = BUS_ISA;
|
||||||
key_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
key_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
||||||
|
key_dev->dev.parent = &acpi_device->dev;
|
||||||
|
|
||||||
/* Initialize the Input Drivers: special keys */
|
/* Initialize the Input Drivers: special keys */
|
||||||
set_bit(EV_KEY, key_dev->evbit);
|
set_bit(EV_KEY, key_dev->evbit);
|
||||||
@ -410,6 +411,7 @@ static int sony_laptop_setup_input(void)
|
|||||||
jog_dev->name = "Sony Vaio Jogdial";
|
jog_dev->name = "Sony Vaio Jogdial";
|
||||||
jog_dev->id.bustype = BUS_ISA;
|
jog_dev->id.bustype = BUS_ISA;
|
||||||
jog_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
jog_dev->id.vendor = PCI_VENDOR_ID_SONY;
|
||||||
|
key_dev->dev.parent = &acpi_device->dev;
|
||||||
|
|
||||||
jog_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
|
jog_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
|
||||||
jog_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_MIDDLE);
|
jog_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_MIDDLE);
|
||||||
@ -1006,7 +1008,7 @@ static int sony_nc_add(struct acpi_device *device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* setup input devices and helper fifo */
|
/* setup input devices and helper fifo */
|
||||||
result = sony_laptop_setup_input();
|
result = sony_laptop_setup_input(device);
|
||||||
if (result) {
|
if (result) {
|
||||||
printk(KERN_ERR DRV_PFX
|
printk(KERN_ERR DRV_PFX
|
||||||
"Unabe to create input devices.\n");
|
"Unabe to create input devices.\n");
|
||||||
@ -1034,7 +1036,7 @@ static int sony_nc_add(struct acpi_device *device)
|
|||||||
sony_backlight_device->props.brightness =
|
sony_backlight_device->props.brightness =
|
||||||
sony_backlight_get_brightness
|
sony_backlight_get_brightness
|
||||||
(sony_backlight_device);
|
(sony_backlight_device);
|
||||||
sony_backlight_device->props.max_brightness =
|
sony_backlight_device->props.max_brightness =
|
||||||
SONY_MAX_BRIGHTNESS - 1;
|
SONY_MAX_BRIGHTNESS - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2453,7 +2455,7 @@ static int sony_pic_add(struct acpi_device *device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* setup input devices and helper fifo */
|
/* setup input devices and helper fifo */
|
||||||
result = sony_laptop_setup_input();
|
result = sony_laptop_setup_input(device);
|
||||||
if (result) {
|
if (result) {
|
||||||
printk(KERN_ERR DRV_PFX
|
printk(KERN_ERR DRV_PFX
|
||||||
"Unabe to create input devices.\n");
|
"Unabe to create input devices.\n");
|
||||||
|
@ -530,6 +530,11 @@ struct input_absinfo {
|
|||||||
#define KEY_DOLLAR 0x1b2
|
#define KEY_DOLLAR 0x1b2
|
||||||
#define KEY_EURO 0x1b3
|
#define KEY_EURO 0x1b3
|
||||||
|
|
||||||
|
#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */
|
||||||
|
#define KEY_FRAMEFORWARD 0x1b5
|
||||||
|
|
||||||
|
#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */
|
||||||
|
|
||||||
#define KEY_DEL_EOL 0x1c0
|
#define KEY_DEL_EOL 0x1c0
|
||||||
#define KEY_DEL_EOS 0x1c1
|
#define KEY_DEL_EOS 0x1c1
|
||||||
#define KEY_INS_LINE 0x1c2
|
#define KEY_INS_LINE 0x1c2
|
||||||
|
Loading…
Reference in New Issue
Block a user