Commit 0ea64844 authored by Linus Torvalds's avatar Linus Torvalds

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: ad7879 - fix deficient device disable
  Input: gpio_keys - fix two typos in devicetree documentation
  Input: mma8450 - add device tree probe support
  Input: gpio_keys - return proper error code if memory allocation fails
  Input: lm8323 - add missing device_remove_file for dev_attr_time
  Input: tegra-kbc - fix computation of polling time
  Input: kxtj9 - explicitly include module.h
  Input: psmouse - hgpk.c needs module.h
parents 35e51fe8 4fecc208
...@@ -10,7 +10,7 @@ Optional properties: ...@@ -10,7 +10,7 @@ Optional properties:
Each button (key) is represented as a sub-node of "gpio-keys": Each button (key) is represented as a sub-node of "gpio-keys":
Subnode properties: Subnode properties:
- gpios: OF devcie-tree gpio specificatin. - gpios: OF device-tree gpio specification.
- label: Descriptive name of the key. - label: Descriptive name of the key.
- linux,code: Keycode to emit. - linux,code: Keycode to emit.
......
* Freescale MMA8450 3-Axis Accelerometer
Required properties:
- compatible : "fsl,mma8450".
Example:
accelerometer: mma8450@1c {
compatible = "fsl,mma8450";
reg = <0x1c>;
};
...@@ -483,7 +483,7 @@ static int gpio_keys_get_devtree_pdata(struct device *dev, ...@@ -483,7 +483,7 @@ static int gpio_keys_get_devtree_pdata(struct device *dev,
buttons = kzalloc(pdata->nbuttons * (sizeof *buttons), GFP_KERNEL); buttons = kzalloc(pdata->nbuttons * (sizeof *buttons), GFP_KERNEL);
if (!buttons) if (!buttons)
return -ENODEV; return -ENOMEM;
pp = NULL; pp = NULL;
i = 0; i = 0;
......
...@@ -754,8 +754,11 @@ static int __devinit lm8323_probe(struct i2c_client *client, ...@@ -754,8 +754,11 @@ static int __devinit lm8323_probe(struct i2c_client *client,
device_remove_file(&client->dev, &dev_attr_disable_kp); device_remove_file(&client->dev, &dev_attr_disable_kp);
fail2: fail2:
while (--pwm >= 0) while (--pwm >= 0)
if (lm->pwm[pwm].enabled) if (lm->pwm[pwm].enabled) {
device_remove_file(lm->pwm[pwm].cdev.dev,
&dev_attr_time);
led_classdev_unregister(&lm->pwm[pwm].cdev); led_classdev_unregister(&lm->pwm[pwm].cdev);
}
fail1: fail1:
input_free_device(idev); input_free_device(idev);
kfree(lm); kfree(lm);
...@@ -775,8 +778,10 @@ static int __devexit lm8323_remove(struct i2c_client *client) ...@@ -775,8 +778,10 @@ static int __devexit lm8323_remove(struct i2c_client *client)
device_remove_file(&lm->client->dev, &dev_attr_disable_kp); device_remove_file(&lm->client->dev, &dev_attr_disable_kp);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
if (lm->pwm[i].enabled) if (lm->pwm[i].enabled) {
device_remove_file(lm->pwm[i].cdev.dev, &dev_attr_time);
led_classdev_unregister(&lm->pwm[i].cdev); led_classdev_unregister(&lm->pwm[i].cdev);
}
kfree(lm); kfree(lm);
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -37,7 +38,7 @@ ...@@ -37,7 +38,7 @@
#define KBC_ROW_SCAN_DLY 5 #define KBC_ROW_SCAN_DLY 5
/* KBC uses a 32KHz clock so a cycle = 1/32Khz */ /* KBC uses a 32KHz clock so a cycle = 1/32Khz */
#define KBC_CYCLE_USEC 32 #define KBC_CYCLE_MS 32
/* KBC Registers */ /* KBC Registers */
...@@ -647,7 +648,7 @@ static int __devinit tegra_kbc_probe(struct platform_device *pdev) ...@@ -647,7 +648,7 @@ static int __devinit tegra_kbc_probe(struct platform_device *pdev)
debounce_cnt = min(pdata->debounce_cnt, KBC_MAX_DEBOUNCE_CNT); debounce_cnt = min(pdata->debounce_cnt, KBC_MAX_DEBOUNCE_CNT);
scan_time_rows = (KBC_ROW_SCAN_TIME + debounce_cnt) * num_rows; scan_time_rows = (KBC_ROW_SCAN_TIME + debounce_cnt) * num_rows;
kbc->repoll_dly = KBC_ROW_SCAN_DLY + scan_time_rows + pdata->repeat_cnt; kbc->repoll_dly = KBC_ROW_SCAN_DLY + scan_time_rows + pdata->repeat_cnt;
kbc->repoll_dly = ((kbc->repoll_dly * KBC_CYCLE_USEC) + 999) / 1000; kbc->repoll_dly = DIV_ROUND_UP(kbc->repoll_dly, KBC_CYCLE_MS);
input_dev->name = pdev->name; input_dev->name = pdev->name;
input_dev->id.bustype = BUS_HOST; input_dev->id.bustype = BUS_HOST;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/input/kxtj9.h> #include <linux/input/kxtj9.h>
#include <linux/input-polldev.h> #include <linux/input-polldev.h>
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/input-polldev.h> #include <linux/input-polldev.h>
#include <linux/of_device.h>
#define MMA8450_DRV_NAME "mma8450" #define MMA8450_DRV_NAME "mma8450"
...@@ -229,10 +230,17 @@ static const struct i2c_device_id mma8450_id[] = { ...@@ -229,10 +230,17 @@ static const struct i2c_device_id mma8450_id[] = {
}; };
MODULE_DEVICE_TABLE(i2c, mma8450_id); MODULE_DEVICE_TABLE(i2c, mma8450_id);
static const struct of_device_id mma8450_dt_ids[] = {
{ .compatible = "fsl,mma8450", },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(i2c, mma8450_dt_ids);
static struct i2c_driver mma8450_driver = { static struct i2c_driver mma8450_driver = {
.driver = { .driver = {
.name = MMA8450_DRV_NAME, .name = MMA8450_DRV_NAME,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = mma8450_dt_ids,
}, },
.probe = mma8450_probe, .probe = mma8450_probe,
.remove = __devexit_p(mma8450_remove), .remove = __devexit_p(mma8450_remove),
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#define DEBUG #define DEBUG
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/module.h>
#include <linux/serio.h> #include <linux/serio.h>
#include <linux/libps2.h> #include <linux/libps2.h>
#include <linux/delay.h> #include <linux/delay.h>
......
...@@ -249,12 +249,14 @@ static void __ad7879_enable(struct ad7879 *ts) ...@@ -249,12 +249,14 @@ static void __ad7879_enable(struct ad7879 *ts)
static void __ad7879_disable(struct ad7879 *ts) static void __ad7879_disable(struct ad7879 *ts)
{ {
u16 reg = (ts->cmd_crtl2 & ~AD7879_PM(-1)) |
AD7879_PM(AD7879_PM_SHUTDOWN);
disable_irq(ts->irq); disable_irq(ts->irq);
if (del_timer_sync(&ts->timer)) if (del_timer_sync(&ts->timer))
ad7879_ts_event_release(ts); ad7879_ts_event_release(ts);
ad7879_write(ts, AD7879_REG_CTRL2, AD7879_PM(AD7879_PM_SHUTDOWN)); ad7879_write(ts, AD7879_REG_CTRL2, reg);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment