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
This commit is contained in:
@ -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.
|
||||||
|
|
||||||
|
11
Documentation/devicetree/bindings/input/fsl-mma8450.txt
Normal file
11
Documentation/devicetree/bindings/input/fsl-mma8450.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
* 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,
|
|||||||
|
|
||||||
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 @@ fail3:
|
|||||||
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)
|
|||||||
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 @@
|
|||||||
* 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 @@
|
|||||||
#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)
|
|||||||
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 @@
|
|||||||
#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 @@
|
|||||||
#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[] = {
|
|||||||
};
|
};
|
||||||
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 @@
|
|||||||
#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)
|
|||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user