mirror of https://gitee.com/openkylin/linux.git
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:
commit
0ea648441a
|
@ -10,7 +10,7 @@ Optional properties:
|
|||
Each button (key) is represented as a sub-node of "gpio-keys":
|
||||
Subnode properties:
|
||||
|
||||
- gpios: OF devcie-tree gpio specificatin.
|
||||
- gpios: OF device-tree gpio specification.
|
||||
- label: Descriptive name of the key.
|
||||
- linux,code: Keycode to emit.
|
||||
|
||||
|
|
|
@ -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);
|
||||
if (!buttons)
|
||||
return -ENODEV;
|
||||
return -ENOMEM;
|
||||
|
||||
pp = NULL;
|
||||
i = 0;
|
||||
|
|
|
@ -754,8 +754,11 @@ static int __devinit lm8323_probe(struct i2c_client *client,
|
|||
device_remove_file(&client->dev, &dev_attr_disable_kp);
|
||||
fail2:
|
||||
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);
|
||||
}
|
||||
fail1:
|
||||
input_free_device(idev);
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
kfree(lm);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -37,7 +38,7 @@
|
|||
#define KBC_ROW_SCAN_DLY 5
|
||||
|
||||
/* KBC uses a 32KHz clock so a cycle = 1/32Khz */
|
||||
#define KBC_CYCLE_USEC 32
|
||||
#define KBC_CYCLE_MS 32
|
||||
|
||||
/* 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);
|
||||
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->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->id.bustype = BUS_HOST;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <linux/i2c.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/input/kxtj9.h>
|
||||
#include <linux/input-polldev.h>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/input-polldev.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#define MMA8450_DRV_NAME "mma8450"
|
||||
|
||||
|
@ -229,10 +230,17 @@ static const struct i2c_device_id 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 = {
|
||||
.driver = {
|
||||
.name = MMA8450_DRV_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = mma8450_dt_ids,
|
||||
},
|
||||
.probe = mma8450_probe,
|
||||
.remove = __devexit_p(mma8450_remove),
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define DEBUG
|
||||
#include <linux/slab.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/serio.h>
|
||||
#include <linux/libps2.h>
|
||||
#include <linux/delay.h>
|
||||
|
|
|
@ -249,12 +249,14 @@ static void __ad7879_enable(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);
|
||||
|
||||
if (del_timer_sync(&ts->timer))
|
||||
ad7879_ts_event_release(ts);
|
||||
|
||||
ad7879_write(ts, AD7879_REG_CTRL2, AD7879_PM(AD7879_PM_SHUTDOWN));
|
||||
ad7879_write(ts, AD7879_REG_CTRL2, reg);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue