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:
Linus Torvalds
2007-11-27 14:20:35 -08:00
6 changed files with 53 additions and 18 deletions

View File

@@ -286,7 +286,7 @@ config KEYBOARD_MAPLE
config KEYBOARD_BFIN
tristate "Blackfin BF54x keypad support"
depends on BF54x
depends on (BF54x && !BF544)
help
Say Y here if you want to use the BF54x keypad.

View File

@@ -75,16 +75,32 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
for (i = 0; i < pdata->nbuttons; 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;
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) {
error = irq;
printk(KERN_ERR
"gpio-keys: "
"Unable to get irq number for GPIO %d,"
"error %d\n",
pr_err("gpio-keys: Unable to get irq number"
" for GPIO %d, error %d\n",
button->gpio, error);
gpio_free(button->gpio);
goto fail;
}
@@ -94,9 +110,9 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
button->desc ? button->desc : "gpio_keys",
pdev);
if (error) {
printk(KERN_ERR
"gpio-keys: Unable to claim irq %d; error %d\n",
pr_err("gpio-keys: Unable to claim irq %d; error %d\n",
irq, error);
gpio_free(button->gpio);
goto fail;
}
@@ -108,8 +124,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
error = input_register_device(input);
if (error) {
printk(KERN_ERR
"gpio-keys: Unable to register input device, "
pr_err("gpio-keys: Unable to register input device, "
"error: %d\n", error);
goto fail;
}
@@ -119,8 +134,10 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
return 0;
fail:
while (--i >= 0)
while (--i >= 0) {
free_irq(gpio_to_irq(pdata->buttons[i].gpio), pdev);
gpio_free(pdata->buttons[i].gpio);
}
platform_set_drvdata(pdev, NULL);
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++) {
int irq = gpio_to_irq(pdata->buttons[i].gpio);
free_irq(irq, pdev);
gpio_free(pdata->buttons[i].gpio);
}
input_unregister_device(input);

View File

@@ -110,6 +110,14 @@ static struct dmi_system_id __initdata i8042_dmi_noloop_table[] = {
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"),
},
},
{ }
};