Skip to contentSkip to conversation

da7280: haptic driver submission

PATCH Superseded Roy Im 2 participants 5 messages Aug 17, 2018

Subsystems (4)

v2 of 7 Superseded Latest is v7 →

lore
Share & tools
lore

Roy Im

author
#0 lore raw

v2 cover da7280: haptic driver submission

From: Roy Im <[email protected]>

This patch adds support for the Dialog DA7280 Haptic driver IC.

In this patch set the following is provided:

[PATCH V2 1/3] MAINTAINERS file update for DA7280
[PATCH V2 2/3] DA7280 DT Binding
[PATCH V2 3/3] DA7280 Driver

This patch applies against linux-next and v4.18

Thank you,
Roy Im, Dialog Semiconductor Ltd.

Roy Im (3):
MAINTAINERS: da7280 updates to the Dialog Semiconductor search terms
Documentation: devicetree: input: new binding for da7280
Input: new da7280 haptic driver

 .../devicetree/bindings/input/dlg,da7280.txt       |   91 ++
 MAINTAINERS                                        |    2 +
 drivers/input/misc/Kconfig                         |   12 +
 drivers/input/misc/Makefile                        |    1 +
 drivers/input/misc/da7280.c                        | 1451 ++++++++++++++++++++
 drivers/input/misc/da7280.h                        |  412 ++++++
 6 files changed, 1969 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/dlg,da7280.txt
 create mode 100644 drivers/input/misc/da7280.c
 create mode 100644 drivers/input/misc/da7280.h
Signature · 1 line
end-of-patch for PATCH V2
author
#1 lore raw

PATCH v2 1/3 MAINTAINERS: da7280 updates to the Dialog Semiconductor search terms

From: Roy Im <[email protected]>

This patch adds the da7280 bindings doc and driver to the Dialog Semiconductor support list.

---
v2: No changes

 MAINTAINERS |    2 ++
 1 file changed, 2 insertions(+)
MAINTAINERS +2 -0
index 544cac8..720f9fe 100644
@@ -4221,6 +4221,7 @@ S:	Supported
 F:	Documentation/hwmon/da90??
 F:	Documentation/devicetree/bindings/mfd/da90*.txt
 F:	Documentation/devicetree/bindings/input/da90??-onkey.txt
+F:	Documentation/devicetree/bindings/input/dlg,da72??.txt
 F:	Documentation/devicetree/bindings/thermal/da90??-thermal.txt
 F:	Documentation/devicetree/bindings/regulator/da92*.txt
 F:	Documentation/devicetree/bindings/watchdog/da90??-wdt.txt
@@ -4229,6 +4230,7 @@ F:	drivers/gpio/gpio-da90??.c
 F:	drivers/hwmon/da90??-hwmon.c
 F:	drivers/iio/adc/da91??-*.c
 F:	drivers/input/misc/da90??_onkey.c
+F:	drivers/input/misc/da72??.[ch]
 F:	drivers/input/touchscreen/da9052_tsi.c
 F:	drivers/leds/leds-da90??.c
 F:	drivers/mfd/da903x.c
Signature · 1 line
end-of-patch for PATCH V2
author
#2 lore raw

PATCH v2 2/3 Documentation: devicetree: input: new binding for da7280

In reply to Roy Im

from: Roy Im <[email protected]>

Add device tree binding information for DA7280 haptic driver. Example bindings for DA7280 are added.

---
v2: No changes

 .../devicetree/bindings/input/dlg,da7280.txt       |   91 ++++++++++++++++++++
 1 file changed, 91 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/dlg,da7280.txt
Documentation/devicetree/bindings/input/dlg,da7280.txt new file +91 -0
new file mode 100644
index 0000000..759bcfe
@@ -0,0 +1,91 @@
+Dialog Semiconductor DA7280 Haptics bindings
+
+Required properties:
+- compatible: Should be "dlg,da7280".
+- reg: Specifies the I2C slave address.
+
+- interrupt-parent : Specifies the phandle of the interrupt controller to
+  which the IRQs from DA7280 are delivered to.
+- interrupts: IRQ line info for DA7280.
+  (See Documentation/devicetree/bindings/interrupt-controller/
+   interrupts.txt for further information relating to interrupt properties)
+- dlg,vib-mode:
+  "LRA-MODE" - Linear Resonance Actuator mode.
+  "ERM-BAR" - Bar type Eccentric Rotating Mass mode.
+  "ERM-COIN" - Coin type Eccentric Rotating Mass mode.
+- dlg,play-mode: choose one in below five modes.
+  "DRO-MODE" - Direct register override mode.
+  "PWM-MODE" - PWM data source mode.
+	In this case, user is able to set duty to 0 ~ 0xffff(0% ~ 100%)
+  "RTWM-MODE" - Register triggered waveform memory mode.
+	In this case, when enable this mode the pattern assigned
+	to the PS_SEQ_ID will be played as much times as PS_SEQ_LOOP.
+  "ETWM-MODE" - Edge triggered waveform memory mode.
+	In this case, external GPI(N) control are required to enable/disable
+	and it needs to keep device enabled by sending magnitude (X > 0)
+	the pattern assigned to the GPI(N)_SEQUENCE_ID below.
+	For more details, please see the datasheet.
+- dlg,nom-microvolt: Nominal actuator voltage rating.
+- dlg,abs-max-microvolt: Absolute actuator maximum voltage rating.
+- dlg,imax-microamp: Actuator max current rating.
+- dlg,impd-micro-ohms: the impedance of the actuator in micro ohm,
+  as read from its datasheet.
+
+Optional properties:
+- pwms : phandle to the physical PWM(Pulse Width Modulation) device.
+  PWM properties should be named "pwms". And number of cell is different
+  for each pwm device.
+  (See Documentation/devicetree/bindings/pwm/pwm.txt
+   for further information relating to pwm properties)
+- dlg,ps-seq-id: the PS_SEQ_ID(pattern ID in waveform memory inside chip)
+  to play back when RTWM-MODE is enabled.
+- dlg,ps-seq-loop: the PS_SEQ_LOOP, Number of times the pre-stored sequence
+  pointed to	by PS_SEQ_ID or GPI(N)_SEQUENCE_ID is repeated.
+- dlg,gpiN-seq-id: the GPI(N)_SEQUENCE_ID, pattern to play
+  when gpi0 is triggered, 'N' must be 0~2.
+- dlg,gpiN-mode: the pattern mode which can select either
+  "Single-pattern" or "Multi-pattern", 'N' must be 0~2.
+- dlg,gpiN-polarity: gpiN polarity which can be chosen among "Rising-edge",
+  "Falling-edge" and "Both-edge", 'N' must be 0~2.
+  Haptic will work by this edge option in case of ETWM-MODE.
+
+- dlg,resonant-freq-hz: use in case of LRA-MODE, default 205Hz.
+  the freq range: 50Hz ~ 300Hz.
+  It will be set to 205Hz if the value is out of range.
+- dlg,bemf-sens-enable: Enable for internal loop computations.
+- dlg,freq-track-enable: Enable for resonant frequency tracking.
+- dlg,acc-enable: Enable for active acceleration.
+- dlg,rapid-stop-enable: Enable for rapid stop.
+- dlg,amp-pid-enable: Enable for the amplitude PID.
+- dlg,mem-array: use in case that memory registers should be updated,
+  Please fill the whole buffers(100 bytes) to avoid any error in driver.
+  For example,
+	dlg,mem-array = <
+		0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A
+		...
+		0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 0x7A
+		0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+		0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+	>;
+
+For further information, see device datasheet.
+
+======
+
+Example:
+
+	haptics: da7280-haptics@4A {
+		compatible = "dlg,da7280";
+		reg = <0x4A>;
+		interrupt-parent = <&gpio6>;
+		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+		dlg,vib-mode = "LRA-MODE";
+		dlg,play-mode = "DRO-MODE";
+		dlg,nom-microvolt = <2000000>;
+		dlg,abs-max-microvolt = <2000000>;
+		dlg,imax-microamp = <170000>;
+		dlg,resonant-freq-hz = <180>;
+		dlg,impd-micro-ohms = <10500000>;
+		dlg,freq-track-enable;
+		dlg,rapid-stop-enable;
+	};
Signature · 1 line
end-of-patch for PATCH V2
maintainer
#3 lore raw

Re: [PATCH V2 2/3] Documentation: devicetree: input: new binding for da7280

Hi, this email is from Rob's (experimental) review bot. I found a couple of common problems with your patch. Please see below.

Quoted 8 lines · Roy Im

from: Roy Im <[email protected]>

Add device tree binding information for DA7280 haptic driver. Example bindings for DA7280 are added.

The preferred subject prefix is "dt-bindings: <binding dir>: ...".

Quoted 8 lines

---
v2: No changes

 .../devicetree/bindings/input/dlg,da7280.txt       |   91 ++++++++++++++++++++
 1 file changed, 91 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/dlg,da7280.txt
author
#4 lore raw

PATCH v2 3/3 Input: new da7280 haptic driver

In reply to Roy Im

from: Roy Im <[email protected]>

Adds support for the Dialog DA7280 LRA/ERM Haptic Driver with multiple mode and integrated waveform memory and wideband support. It communicates via an I2C bus to the device.

---
v2: Fixed kbuild error/warning

 drivers/input/misc/Kconfig  |   12 +
 drivers/input/misc/Makefile |    1 +
 drivers/input/misc/da7280.c | 1451 +++++++++++++++++++++++++++++++++++++++++++
 drivers/input/misc/da7280.h |  412 ++++++++++++
 4 files changed, 1876 insertions(+)
 create mode 100644 drivers/input/misc/da7280.c
 create mode 100644 drivers/input/misc/da7280.h
drivers/input/misc/Kconfig +12 -0
index ca59a2b..6e0de69 100644
@@ -851,4 +851,16 @@ config INPUT_SC27XX_VIBRA
 	  To compile this driver as a module, choose M here. The module will
 	  be called sc27xx_vibra.
 
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on (INPUT && I2C && SYSFS) || PWM
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the haptics controller on
+	  Dialog DA7280 chip.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called da7280-haptic.
+
 endif
drivers/input/misc/Makefile +1 -0
index 9d0f9d1..d941348 100644
@@ -25,6 +25,7 @@ obj-$(CONFIG_INPUT_CMA3000)		+= cma3000_d0x.o
 obj-$(CONFIG_INPUT_CMA3000_I2C)		+= cma3000_d0x_i2c.o
 obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
 obj-$(CONFIG_INPUT_CPCAP_PWRBUTTON)	+= cpcap-pwrbutton.o
+obj-$(CONFIG_INPUT_DA7280_HAPTICS)	+= da7280.o
 obj-$(CONFIG_INPUT_DA9052_ONKEY)	+= da9052_onkey.o
 obj-$(CONFIG_INPUT_DA9055_ONKEY)	+= da9055_onkey.o
 obj-$(CONFIG_INPUT_DA9063_ONKEY)	+= da9063_onkey.o
drivers/input/misc/da7280.c new file +1451 -0

1,451 lines not on this page · raw message

drivers/input/misc/da7280.h new file +412 -0

412 lines not on this page · raw message

Signature · 1 line
end-of-patch for PATCH V2