From: Jaewon Kim <hidden> Date: 2014-09-11 12:54:31
This series adds max77693 haptic driver.
The max77693 is a Multifunction device with PMIC, CHARGER, LED,
MUIC, HAPTIC and this series is haptic device driver in MAX77693.
The haptic driver use regmap method for i2c communication and
support force feedback framework in input device.
Changes in v4:
- mfd : fix tabbing in mfd_cell
- driver : move regulator enable/disable to input open()/close()
- driver : add resume function
Changes in v3:
- driver : remove mutex in workqueue
- driver : mv max77693_haptic_set_duty_cyle() to workqueue.
- driver : remove max77693_haptic_remove[]
- driver : add suspend() function to turn-off entering suspend.
Changes in v2:
- split to documentation and mfd patchs.
- Documentation : change explanation of haptic
- Documentation : remove pwm-names propertie in example
Jaewon Kim (4):
mfd: max77693: Initialize haptic register map
Input: misc: Add haptic driver on max77693
mfd: max77693: add haptic of_compatible in mfd_cell
mfd: max77693: Update DT binding to support haptic
Documentation/devicetree/bindings/mfd/max77693.txt | 18 +
drivers/input/misc/Kconfig | 12 +
drivers/input/misc/Makefile | 1 +
drivers/input/misc/max77693-haptic.c | 354 ++++++++++++++++++++
drivers/mfd/max77693.c | 26 +-
include/linux/mfd/max77693-private.h | 9 +
6 files changed, 416 insertions(+), 4 deletions(-)
create mode 100644 drivers/input/misc/max77693-haptic.c
--
1.7.9.5
From: Jaewon Kim <hidden> Date: 2014-09-11 12:54:47
This patch add haptic of_compatible in order to use the haptic
device driver using Devicetree.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
drivers/mfd/max77693.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
From: Jaewon Kim <hidden> Date: 2014-09-11 12:55:30
This patch add max77693-haptic device driver to support the haptic controller
on MAX77693. The MAX77693 is a Multifunction device with PMIC, CHARGER, LED,
MUIC, HAPTIC and the patch is haptic device driver in the MAX77693. This driver
support external pwm and LRA(Linear Resonant Actuator) motor. User can control
the haptic driver by using force feedback framework.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
drivers/input/misc/Kconfig | 12 ++
drivers/input/misc/Makefile | 1 +
drivers/input/misc/max77693-haptic.c | 354 ++++++++++++++++++++++++++++++++++
include/linux/mfd/max77693-private.h | 9 +
4 files changed, 376 insertions(+)
create mode 100644 drivers/input/misc/max77693-haptic.c
@@ -0,0 +1,354 @@+/*+*max77693-haptic.c-MAXIMMAX77693Hapticdevicedriver+*+*Copyright(C)2014SamsungElectronics+*JaewonKim<jaewon02.kim@samsung.com>+*+*Thisprogramisnotprovided/ownedbyMaximIntegratedProducts.+*+*Thisprogramisfreesoftware;youcanredistributeitand/ormodify+*itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby+*theFreeSoftwareFoundation;eitherversion2oftheLicense,or+*(atyouroption)anylaterversion.+*/++#include<linux/err.h>+#include<linux/init.h>+#include<linux/i2c.h>+#include<linux/regmap.h>+#include<linux/input.h>+#include<linux/module.h>+#include<linux/platform_device.h>+#include<linux/pwm.h>+#include<linux/slab.h>+#include<linux/workqueue.h>+#include<linux/regulator/consumer.h>+#include<linux/mfd/max77693.h>+#include<linux/mfd/max77693-private.h>++#define MAX_MAGNITUDE_SHIFT 16++enummax77693_haptic_motor_type{+MAX77693_HAPTIC_ERM=0,+MAX77693_HAPTIC_LRA,+};++enummax77693_haptic_pulse_mode{+MAX77693_HAPTIC_EXTERNAL_MODE=0,+MAX77693_HAPTIC_INTERNAL_MODE,+};++enummax77693_haptic_pwm_divisor{+MAX77693_HAPTIC_PWM_DIVISOR_32=0,+MAX77693_HAPTIC_PWM_DIVISOR_64,+MAX77693_HAPTIC_PWM_DIVISOR_128,+MAX77693_HAPTIC_PWM_DIVISOR_256,+};++structmax77693_haptic{+structregmap*regmap_pmic;+structregmap*regmap_haptic;+structdevice*dev;+structinput_dev*input_dev;+structpwm_device*pwm_dev;+structregulator*motor_reg;++boolenabled;+boolsuspend_state;+unsignedintmagnitude;+unsignedintpwm_duty;+enummax77693_haptic_motor_typetype;+enummax77693_haptic_pulse_modemode;+enummax77693_haptic_pwm_divisorpwm_divisor;++structwork_structwork;+};++staticintmax77693_haptic_set_duty_cycle(structmax77693_haptic*haptic)+{+intret;+intdelta=(haptic->pwm_dev->period+haptic->pwm_duty)/2;++ret=pwm_config(haptic->pwm_dev,delta,haptic->pwm_dev->period);+if(ret){+dev_err(haptic->dev,"cannot configuration pwm\n");+returnret;+}++return0;+}++staticintmax77693_haptic_configure(structmax77693_haptic*haptic,+boolenable)+{+intret;+unsignedintvalue;++value=((haptic->type<<MAX77693_CONFIG2_MODE)|+(enable<<MAX77693_CONFIG2_MEN)|+(haptic->mode<<MAX77693_CONFIG2_HTYP)|+(haptic->pwm_divisor));++ret=regmap_write(haptic->regmap_haptic,+MAX77693_HAPTIC_REG_CONFIG2,value);+if(ret){+dev_err(haptic->dev,"cannot write haptic regmap\n");+returnret;+}++return0;+}++staticintmax77693_haptic_lowsys(structmax77693_haptic*haptic,+boolenable)+{+intret;++ret=regmap_update_bits(haptic->regmap_pmic,+MAX77693_PMIC_REG_LSCNFG,+MAX77693_PMIC_LOW_SYS_MASK,+enable<<MAX77693_PMIC_LOW_SYS_SHIFT);+if(ret){+dev_err(haptic->dev,"cannot update pmic regmap\n");+returnret;+}++return0;+}++staticvoidmax77693_haptic_enable(structmax77693_haptic*haptic)+{+intret;++if(haptic->enabled)+return;++ret=pwm_enable(haptic->pwm_dev);+if(ret){+dev_err(haptic->dev,"cannot enable haptic pwm device");+return;+}++ret=max77693_haptic_lowsys(haptic,true);+if(ret)+gotoerr_enable_lowsys;++ret=max77693_haptic_configure(haptic,true);+if(ret)+gotoerr_enable_config;++haptic->enabled=true;++return;++err_enable_config:+max77693_haptic_lowsys(haptic,false);+err_enable_lowsys:+pwm_disable(haptic->pwm_dev);+}++staticvoidmax77693_haptic_disable(structmax77693_haptic*haptic)+{+intret;++if(!haptic->enabled)+return;++ret=max77693_haptic_configure(haptic,false);+if(ret)+return;++ret=max77693_haptic_lowsys(haptic,false);+if(ret)+gotoerr_disable_lowsys;++pwm_disable(haptic->pwm_dev);+haptic->enabled=false;++return;++err_disable_lowsys:+max77693_haptic_configure(haptic,true);+}++staticvoidmax77693_haptic_play_work(structwork_struct*work)+{+structmax77693_haptic*haptic=+container_of(work,structmax77693_haptic,work);+intret;++ret=max77693_haptic_set_duty_cycle(haptic);+if(ret){+dev_err(haptic->dev,"cannot set duty cycle\n");+return;+}++if(haptic->magnitude)+max77693_haptic_enable(haptic);+else+max77693_haptic_disable(haptic);+}++staticintmax77693_haptic_play_effect(structinput_dev*dev,void*data,+structff_effect*effect)+{+structmax77693_haptic*haptic=input_get_drvdata(dev);+uint64_tperiod_mag_multi;++haptic->magnitude=effect->u.rumble.strong_magnitude;+if(!haptic->magnitude)+haptic->magnitude=effect->u.rumble.weak_magnitude;++/*+*Themagnitudecomesfromforce-feedbackinterface.+*Theformulaconvertmagnitudetopwm_dutyasfollowing:+*-pwm_duty=(magnitude*pwm_period)/MAX_MAGNITUDE(0xFFFF)+*/+period_mag_multi=(int64_t)(haptic->pwm_dev->period*+haptic->magnitude);+haptic->pwm_duty=(unsignedint)(period_mag_multi>>+MAX_MAGNITUDE_SHIFT);++schedule_work(&haptic->work);++return0;+}++staticintmax77693_haptic_open(structinput_dev*dev)+{+structmax77693_haptic*haptic=input_get_drvdata(dev);+intret;++ret=regulator_enable(haptic->motor_reg);+if(ret){+dev_err(haptic->dev,"cannot enable regulator\n");+returnret;+}++return0;+}++staticvoidmax77693_haptic_close(structinput_dev*dev)+{+structmax77693_haptic*haptic=input_get_drvdata(dev);+intret;++cancel_work_sync(&haptic->work);+max77693_haptic_disable(haptic);++ret=regulator_disable(haptic->motor_reg);+if(ret)+dev_err(haptic->dev,"cannot disable regulator\n");+}++staticintmax77693_haptic_probe(structplatform_device*pdev)+{+structmax77693_dev*max77693=dev_get_drvdata(pdev->dev.parent);+structmax77693_haptic*haptic;+intret=0;++haptic=devm_kzalloc(&pdev->dev,sizeof(*haptic),GFP_KERNEL);+if(!haptic)+return-ENOMEM;++haptic->regmap_pmic=max77693->regmap;+haptic->regmap_haptic=max77693->regmap_haptic;+haptic->dev=&pdev->dev;+haptic->type=MAX77693_HAPTIC_LRA;+haptic->mode=MAX77693_HAPTIC_EXTERNAL_MODE;+haptic->pwm_divisor=MAX77693_HAPTIC_PWM_DIVISOR_128;+haptic->suspend_state=false;++INIT_WORK(&haptic->work,max77693_haptic_play_work);++/* Get pwm and regulatot for haptic device */+haptic->pwm_dev=devm_pwm_get(&pdev->dev,NULL);+if(IS_ERR(haptic->pwm_dev)){+dev_err(&pdev->dev,"failed to get pwm device\n");+returnPTR_ERR(haptic->pwm_dev);+}++haptic->motor_reg=devm_regulator_get(&pdev->dev,"haptic");+if(IS_ERR(haptic->motor_reg)){+dev_err(&pdev->dev,"failed to get regulator\n");+returnPTR_ERR(haptic->motor_reg);+}++/* Initialize input device for haptic device */+haptic->input_dev=devm_input_allocate_device(&pdev->dev);+if(!haptic->input_dev){+dev_err(&pdev->dev,"failed to allocate input device\n");+return-ENOMEM;+}++haptic->input_dev->name="max77693-haptic";+haptic->input_dev->id.version=1;+haptic->input_dev->dev.parent=&pdev->dev;+haptic->input_dev->open=max77693_haptic_open;+haptic->input_dev->close=max77693_haptic_close;+input_set_drvdata(haptic->input_dev,haptic);+input_set_capability(haptic->input_dev,EV_FF,FF_RUMBLE);++ret=input_ff_create_memless(haptic->input_dev,NULL,+max77693_haptic_play_effect);+if(ret){+dev_err(&pdev->dev,"failed to create force-feedback\n");+returnret;+}++ret=input_register_device(haptic->input_dev);+if(ret){+dev_err(&pdev->dev,"failed to register input device\n");+returnret;+}++platform_set_drvdata(pdev,haptic);++return0;+}++#ifdef CONFIG_PM_SLEEP+staticintmax77693_haptic_suspend(structdevice*dev)+{+structplatform_device*pdev=to_platform_device(dev);+structmax77693_haptic*haptic=platform_get_drvdata(pdev);++if(haptic->enabled){+max77693_haptic_disable(haptic);+haptic->suspend_state=true;+}++return0;+}++staticintmax77693_haptic_resume(structdevice*dev)+{+structplatform_device*pdev=to_platform_device(dev);+structmax77693_haptic*haptic=platform_get_drvdata(pdev);++if(haptic->suspend_state){+max77693_haptic_enable(haptic);+haptic->suspend_state=false;+}++return0;+}+#endif++staticSIMPLE_DEV_PM_OPS(max77693_haptic_pm_ops,+max77693_haptic_suspend,max77693_haptic_resume);++staticstructplatform_drivermax77693_haptic_driver={+.driver={+.name="max77693-haptic",+.owner=THIS_MODULE,+.pm=&max77693_haptic_pm_ops,+},+.probe=max77693_haptic_probe,+};+module_platform_driver(max77693_haptic_driver);++MODULE_AUTHOR("Jaewon Kim <jaewon02.kim@samsung.com>");+MODULE_DESCRIPTION("MAXIM MAX77693 Haptic driver");+MODULE_ALIAS("platform:max77693-haptic");+MODULE_LICENSE("GPL");
From: Jaewon Kim <hidden> Date: 2014-09-11 12:55:32
This patch add haptic DT binding documentation and example
to support haptic driver in max77693 Multifunction device.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
Documentation/devicetree/bindings/mfd/max77693.txt | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
@@ -27,6 +27,17 @@ Optional properties: [*] refer Documentation/devicetree/bindings/regulator/regulator.txt+- haptic : The haptic of max77693 have to be instantiated under subnod+ named "haptic" using the following haptic format in example.+ Haptic sensation from motor can be changed by changing a period cycle in pwms.++ Required properties:+ - compatible : Must be "maxim,max77693-hpatic"+ - haptic-supply : power supply for haptic motor+ [*] refer Documentation/devicetree/bindings/regulator/regulator.txt+ - pwms : phandle to the physical PWM device,+ [*] refer Documentation/devicetree/bindings/pwm/pwm.txt+ Example: max77693@66 { compatible = "maxim,max77693";
On Thu, Sep 11, 2014 at 09:54:20PM +0900, Jaewon Kim wrote:
This patch add max77693-haptic device driver to support the haptic controller
on MAX77693. The MAX77693 is a Multifunction device with PMIC, CHARGER, LED,
MUIC, HAPTIC and the patch is haptic device driver in the MAX77693. This driver
support external pwm and LRA(Linear Resonant Actuator) motor. User can control
the haptic driver by using force feedback framework.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
How do we want to merge this?
--
Dmitry
From: Jaewon Kim <hidden> Date: 2014-09-12 01:38:46
Hello Dmity Torokhov.
2014년 09월 12일 02:10에 Dmitry Torokhov 이(가) 쓴 글:
On Thu, Sep 11, 2014 at 09:54:20PM +0900, Jaewon Kim wrote:
quoted
This patch add max77693-haptic device driver to support the haptic controller
on MAX77693. The MAX77693 is a Multifunction device with PMIC, CHARGER, LED,
MUIC, HAPTIC and the patch is haptic device driver in the MAX77693. This driver
support external pwm and LRA(Linear Resonant Actuator) motor. User can control
the haptic driver by using force feedback framework.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
How do we want to merge this?
thanks for review.
Please merge this input device patch only.
Another patchs will be merged by lee jones.
thanks
Jaewon Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Sep 12, 2014 at 10:38:41AM +0900, Jaewon Kim wrote:
Hello Dmity Torokhov.
2014년 09월 12일 02:10에 Dmitry Torokhov 이(가) 쓴 글:
quoted
On Thu, Sep 11, 2014 at 09:54:20PM +0900, Jaewon Kim wrote:
quoted
This patch add max77693-haptic device driver to support the haptic controller
on MAX77693. The MAX77693 is a Multifunction device with PMIC, CHARGER, LED,
MUIC, HAPTIC and the patch is haptic device driver in the MAX77693. This driver
support external pwm and LRA(Linear Resonant Actuator) motor. User can control
the haptic driver by using force feedback framework.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
How do we want to merge this?
thanks for review.
Please merge this input device patch only.
Another patchs will be merged by lee jones.
Queued fro the next merge window (with some minor edits).
--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Lee Jones <hidden> Date: 2014-09-15 23:00:49
On Thu, 11 Sep 2014, Jaewon Kim wrote:
quoted hunk
This patch add haptic DT binding documentation and example
to support haptic driver in max77693 Multifunction device.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
Documentation/devicetree/bindings/mfd/max77693.txt | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
@@ -27,6 +27,17 @@ Optional properties: [*] refer Documentation/devicetree/bindings/regulator/regulator.txt+- haptic : The haptic of max77693 have to be instantiated under subnod
Perhaps a description as to what "The haptic" is might be handy?
s/have/has
s/subnod/subnode
What do you mean by "under" a subnode? Do you mean "as a" subnode?
+ named "haptic" using the following haptic format in example.
What is the "haptic format"? It just looks like a normal node to me.
+ Haptic sensation from motor can be changed by changing a period cycle in pwms.
Is "Haptic sensation" a technical term?
s/from motor/from a motor/
s/changed by changing/changed by varying/
s/period cycle/duty cycle/
s/in pwms/in the pwms property/
+
+ Required properties:
+ - compatible : Must be "maxim,max77693-hpatic"
+ - haptic-supply : power supply for haptic motor
s/for haptic/for the haptic/
+ [*] refer Documentation/devicetree/bindings/regulator/regulator.txt
+ - pwms : phandle to the physical PWM device,
From: Jaewon Kim <hidden> Date: 2014-09-16 08:00:11
Dear Lee Jones,
2014년 09월 16일 08:00에 Lee Jones 이(가) 쓴 글:
On Thu, 11 Sep 2014, Jaewon Kim wrote:
quoted
This patch add haptic DT binding documentation and example
to support haptic driver in max77693 Multifunction device.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
Documentation/devicetree/bindings/mfd/max77693.txt | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
@@ -27,6 +27,17 @@ Optional properties: [*] refer Documentation/devicetree/bindings/regulator/regulator.txt+- haptic : The haptic of max77693 have to be instantiated under subnod
Perhaps a description as to what "The haptic" is might be handy?
Ok, I will add description about haptic.
s/have/has
s/subnod/subnode
What do you mean by "under" a subnode? Do you mean "as a" subnode?
quoted
+ named "haptic" using the following haptic format in example.
What is the "haptic format"? It just looks like a normal node to me.
quoted
+ Haptic sensation from motor can be changed by changing a period cycle in pwms.
Is "Haptic sensation" a technical term?
s/from motor/from a motor/
s/changed by changing/changed by varying/
s/period cycle/duty cycle/
s/in pwms/in the pwms property/
How is it if I change in this way?
haptic : Referring to the term Haptic, It is the use of advanced
vibration patterns
and waveforms to convey information to a user or operator.
MAX77693 uses PWM and MOTOR in order to give Haptic.
The Haptic from a motor can be changed by varying a period/duty
cycle in pwms.
quoted
+
+ Required properties:
+ - compatible : Must be "maxim,max77693-hpatic"
+ - haptic-supply : power supply for haptic motor
s/for haptic/for the haptic/
quoted
+ [*] refer Documentation/devicetree/bindings/regulator/regulator.txt
+ - pwms : phandle to the physical PWM device,
It's not just the phandle though is it?
Do you want more description?
Or it mean the wrong?
Thank you for feedback.
And plz review "[PATCH v4 3/4] mfd: max77693: add haptic of_compatible
in mfd_cell".
thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Lee Jones <hidden> Date: 2014-09-16 22:41:07
On Tue, 16 Sep 2014, Jaewon Kim wrote:
2014년 09월 16일 08:00에 Lee Jones 이(가) 쓴 글:
quoted
On Thu, 11 Sep 2014, Jaewon Kim wrote:
quoted
This patch add haptic DT binding documentation and example
to support haptic driver in max77693 Multifunction device.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
Documentation/devicetree/bindings/mfd/max77693.txt | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
@@ -27,6 +27,17 @@ Optional properties: [*] refer Documentation/devicetree/bindings/regulator/regulator.txt+- haptic : The haptic of max77693 have to be instantiated under subnod
Perhaps a description as to what "The haptic" is might be handy?
Ok, I will add description about haptic.
quoted
s/have/has
s/subnod/subnode
What do you mean by "under" a subnode? Do you mean "as a" subnode?
I see what you did here now. You copied this from the discription
above. That will also need to be changed.
quoted
quoted
+ named "haptic" using the following haptic format in example.
What is the "haptic format"? It just looks like a normal node to me.
quoted
+ Haptic sensation from motor can be changed by changing a period cycle in pwms.
Is "Haptic sensation" a technical term?
s/from motor/from a motor/
s/changed by changing/changed by varying/
s/period cycle/duty cycle/
s/in pwms/in the pwms property/
How is it if I change in this way?
haptic : Referring to the term Haptic, It is the use of advanced
vibration patterns
and waveforms to convey information to a user or operator.
MAX77693 uses PWM and MOTOR in order to give Haptic.
The Haptic from a motor can be changed by varying a period/duty
cycle in pwms.
Hmm... How about:
The MAX77693 haptic device utilises a PWM controlled motor to provide
users with tactile feedback. PWM period and duty-cycle are varied in
order to provide the approprite level of feedback.
quoted
quoted
+
+ Required properties:
+ - compatible : Must be "maxim,max77693-hpatic"
+ - haptic-supply : power supply for haptic motor
s/for haptic/for the haptic/
quoted
+ [*] refer Documentation/devicetree/bindings/regulator/regulator.txt
+ - pwms : phandle to the physical PWM device,
Thank you for feedback.
And plz review "[PATCH v4 3/4] mfd: max77693: add haptic
of_compatible in mfd_cell".
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Lee Jones <hidden> Date: 2014-09-16 22:42:10
On Thu, 11 Sep 2014, Jaewon Kim wrote:
This patch add haptic of_compatible in order to use the haptic
device driver using Devicetree.
Signed-off-by: Jaewon Kim <redacted>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
drivers/mfd/max77693.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html