Skip to contentSkip to conversation

da7280: haptic driver submission

PATCH Superseded Roy Im 2 participants 11 messages Jul 23, 2020 – Jul 24, 2020

Subsystems (5)

v17 of 20 Superseded Latest is v20 →

lore
Share & tools
lore

Roy Im

author
#0 lore raw

v17 cover da7280: haptic driver submission

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

In this patch set the following is provided:

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

This patch applies against linux-next and v5.8-rc6

Thank you,
Roy Im, Dialog Semiconductor Ltd.

Roy Im (3):
MAINTAINERS: da7280 updates to the Dialog Semiconductor search terms
dt-bindings: input: Add document bindings for DA7280
Input: new da7280 haptic driver

 .../devicetree/bindings/input/dlg,da7280.txt       |  109 ++
 MAINTAINERS                                        |    2 +
 drivers/input/misc/Kconfig                         |   13 +
 drivers/input/misc/Makefile                        |    1 +
 drivers/input/misc/da7280.c                        | 1840 ++++++++++++++++++++
 5 files changed, 1965 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/dlg,da7280.txt
 create mode 100644 drivers/input/misc/da7280.c
Signature · 1 line
end-of-patch for PATCH v17
author
#1 lore raw

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

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

---
v17: No changes.
v16: No changes.
v15: No changes.
v14: No changes.
v13: No changes.
v12: Corrected file list order.
v11: No changes.
v10: No changes.
v9: No changes.
v8: No changes.
v7: No changes.
v6: No changes.
v5: No changes.
v4: No changes.
v3: No changes.
v2: No changes.

 MAINTAINERS | 2 ++
 1 file changed, 2 insertions(+)
MAINTAINERS +2 -0
index d53db30..8e6f364 100644
@@ -5003,6 +5003,7 @@ M:	Support Opensource <[email protected]>
 S:	Supported
 W:	http://www.dialog-semiconductor.com/products
 F:	Documentation/devicetree/bindings/input/da90??-onkey.txt
+F:	Documentation/devicetree/bindings/input/dlg,da72??.txt
 F:	Documentation/devicetree/bindings/mfd/da90*.txt
 F:	Documentation/devicetree/bindings/regulator/da92*.txt
 F:	Documentation/devicetree/bindings/regulator/slg51000.txt
@@ -5013,6 +5014,7 @@ F:	Documentation/hwmon/da90??.rst
 F:	drivers/gpio/gpio-da90??.c
 F:	drivers/hwmon/da90??-hwmon.c
 F:	drivers/iio/adc/da91??-*.c
+F:	drivers/input/misc/da72??.[ch]
 F:	drivers/input/misc/da90??_onkey.c
 F:	drivers/input/touchscreen/da9052_tsi.c
 F:	drivers/leds/leds-da90??.c
Signature · 1 line
end-of-patch for PATCH v17
author
#2 lore raw

PATCH v17 2/3 dt-bindings: input: Add document bindings for DA7280

In reply to Roy Im

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

---
v17: No changes.
v16: No changes.
v15: No changes.
v14: No changes.
v13: No changes.
v12: No changes.
v11: No changes.
v10: No changes.
v9: No changes.
v8: Updated descriptions for new properties.
v7: No changes.
v6: No changes.
v5: Updated descriptions and fixed errors.
v4: Fixed commit message, properties.
v3: Fixed subject format.
v2: No changes

 .../devicetree/bindings/input/dlg,da7280.txt       | 109 +++++++++++++++++++++
 1 file changed, 109 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/dlg,da7280.txt
Documentation/devicetree/bindings/input/dlg,da7280.txt new file +109 -0
new file mode 100644
index 0000000..e6b719d
@@ -0,0 +1,109 @@
+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.
+
+- dlg,actuator-type: Set Actuator type. it should be one of:
+  "LRA" - Linear Resonance Actuator type.
+  "ERM-bar" - Bar type Eccentric Rotating Mass.
+  "ERM-coin" - Coin type Eccentric Rotating Mass.
+
+- dlg,const-op-mode: Haptic operation mode for FF_CONSTANT.
+  Possible values:
+	1 - Direct register override(DRO) mode triggered by i2c(default),
+	2 - PWM data source mode controlled by PWM duty,
+- dlg,periodic-op-mode: Haptic operation mode for FF_PERIODIC.
+  Possible values:
+	1 - Register triggered waveform memory(RTWM) mode, the pattern
+	    assigned to the PS_SEQ_ID played as much times as PS_SEQ_LOOP,
+	2 - Edge triggered waveform memory(ETWM) mode, external GPI(N)
+	    control are required to enable/disable and it needs to keep
+	    device enabled by sending magnitude (X > 0),
+	    the pattern is assigned to the GPI(N)_SEQUENCE_ID below.
+	The default value is 1 for both of the operation modes.
+	For more details, please see the datasheet.
+
+- dlg,nom-microvolt: Nominal actuator voltage rating.
+  Valid values: 0 - 6000000.
+- dlg,abs-max-microvolt: Absolute actuator maximum voltage rating.
+  Valid values: 0 - 6000000.
+- dlg,imax-microamp: Actuator max current rating.
+  Valid values: 0 - 252000.
+  Default: 130000.
+- dlg,impd-micro-ohms: the impedance of the actuator in micro ohms.
+  Valid values: 0 - 1500000000.
+
+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.
+  Valid range: 0 - 15.
+- 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.
+  Valid range: 0 - 15.
+- dlg,gpiN-seq-id: the GPI(N)_SEQUENCE_ID, pattern to play
+  when gpi0 is triggered, 'N' must be 0 - 2.
+  Valid range: 0 - 15.
+- 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.
+  the frequency range: 50 - 300.
+  Default: 205.
+
+- 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: Customized waveform memory(patterns) data downloaded to
+  the device during initialization. This is an array of 100 values(u8).
+
+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,actuator-type = "LRA";
+		dlg,dlg,const-op-mode = <1>;
+		dlg,dlg,periodic-op-mode = <1>;
+		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;
+		dlg,mem-array = <
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+ 		  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+		>;
+
+	};
Signature · 1 line
end-of-patch for PATCH v17
author
#3 lore raw

PATCH v17 3/3 Input: new da7280 haptic driver

In reply to Roy Im

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.

---
v17:
- fixed an issue.
v16:
- Corrected some code and updated description in Kconfig.
v15:
- Removed some defines and updated some comments.
v14:
- Updated pwm related code, alignments and comments.
v13:
- Updated some conditions in pwm function and alignments.
v12: No changes.
v11:
- Updated the pwm related code, comments and typo.
v10:
- Updated the pwm related function and added some comments.
v9:
- Removed the header file and put the definitions into the c file.
- Updated the pwm code and error logs with %pE
v8:
- Added changes to support FF_PERIODIC/FF_CUSTOM and FF_CONSTANT.
- Updated the dt-related code.
- Removed memless related functions.
v7:
- Added more attributes to handle one value per file.
- Replaced and updated the dt-related code and functions called.
- Fixed error/functions.
v6: No changes.
v5: Fixed errors in Kconfig file.
v4: Updated code as dt-bindings are changed.
v3: No changes.
v2: Fixed kbuild error/warning

 drivers/input/misc/Kconfig  |   13 +
 drivers/input/misc/Makefile |    1 +
 drivers/input/misc/da7280.c | 1840 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1854 insertions(+)
 create mode 100644 drivers/input/misc/da7280.c
drivers/input/misc/Kconfig +13 -0
index 362e8a0..06dc5a3 100644
@@ -869,4 +869,17 @@ config INPUT_STPMIC1_ONKEY
 	  To compile this driver as a module, choose M here: the
 	  module will be called stpmic1_onkey.
 
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on INPUT && I2C
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the Dialog DA7280 haptics driver.
+	  The haptics can be controlled by I2C communication,
+	  or by PWM input, or by GPI.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called da7280.
+
 endif
drivers/input/misc/Makefile +1 -0
index a48e5f2..9cfd6ab 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 +1840 -0

1,840 lines not on this page · raw message

Signature · 1 line
end-of-patch for PATCH v17
#4 lore raw

Re: [PATCH V17 3/3] Input: new da7280 haptic driver

Quoted 7 lines · Roy Im
drivers/input/misc/Kconfig +0 -0
index 362e8a0..06dc5a3 100644
@@ -869,4 +869,17 @@ config INPUT_STPMIC1_ONKEY
 	  To compile this driver as a module, choose M here: the
 	  module will be called stpmic1_onkey.

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 880

Quoted 10 lines
drivers/input/misc/Kconfig +9 -0
 
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on INPUT && I2C
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the Dialog DA7280 haptics driver.
+	  The haptics can be controlled by I2C communication,
+	  or by PWM input, or by GPI.

Is that GPIO.
?

Can the haptics be controlled only by PWM or only by GPI(O)?

Just curious: why is I2C required to build the driver if a user is only controlling the device by PWM or GPI?

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 885

Quoted 5 lines
drivers/input/misc/Kconfig +4 -0
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called da7280.
+
 endif

thanks.

Signature · 1 line
~Randy
author
#5 lore raw

RE: [PATCH V17 3/3] Input: new da7280 haptic driver

On Fri, July 24, 2020 5:51 AM, Randy Dunlap wrote

Quoted 9 lines · Roy Im
Quoted 8 lines
drivers/input/misc/Kconfig +0 -0
index 362e8a0..06dc5a3 100644
@@ -869,4 +869,17 @@ config INPUT_STPMIC1_ONKEY
 	  To compile this driver as a module, choose M here: the
 	  module will be called stpmic1_onkey.
 
Quoted 12 lines

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 880

Quoted 9 lines
drivers/input/misc/Kconfig +9 -0
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on INPUT && I2C
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the Dialog DA7280 haptics driver.
+	  The haptics can be controlled by I2C communication,
+	  or by PWM input, or by GPI.

Is that GPIO.
?

The Haptics can be working by GPI(if see from the haptic device), but from the Host it is GPO. Do you think the GPIO is correct?

Quoted 4 lines

Can the haptics be controlled only by PWM or only by GPI(O)?

Just curious: why is I2C required to build the driver if a user is only controlling the device by PWM or GPI?

I2C is required to control registers and it can be triggered by I2C or PWM or GPI(controlled by host outside this driver), so PWM and GPI are optional. With your comments, I think it's better to remove below lines(//remove) to avoid confusion and add PWM as below if you agree.

         // remove
	  The haptics can be controlled by I2C communication,
	  or by PWM input, or by GPI.
         // update, adding || PWM
         depends on (INPUT && I2C) || PWM
Quoted 11 lines

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 885

Quoted 7 lines
drivers/input/misc/Kconfig +4 -0
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called da7280.
+
 endif

thanks.
--
~Randy

Kind regards,
Roy

#6 lore raw

Re: [PATCH V17 3/3] Input: new da7280 haptic driver

Quoted 22 lines · Roy Im

On Fri, July 24, 2020 5:51 AM, Randy Dunlap wrote

Quoted 9 lines · Roy Im
Quoted 8 lines
drivers/input/misc/Kconfig +0 -0
index 362e8a0..06dc5a3 100644
@@ -869,4 +869,17 @@ config INPUT_STPMIC1_ONKEY
 	  To compile this driver as a module, choose M here: the
 	  module will be called stpmic1_onkey.
 
Quoted 12 lines

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 880

Quoted 9 lines
drivers/input/misc/Kconfig +9 -0
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on INPUT && I2C
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the Dialog DA7280 haptics driver.
+	  The haptics can be controlled by I2C communication,
+	  or by PWM input, or by GPI.

Is that GPIO.
?

Quoted 1 line

The Haptics can be working by GPI(if see from the haptic device), but from the Host it is GPO. Do you think the GPIO is correct?

To me it needs to represent what services/interfaces/facilities are used by this driver that are provided by the Linux kernel. If it uses Linux GPIO services, then it should say GPIO -- although I don't see it using any Linux GPIO services.

Quoted 5 lines
Quoted 4 lines

Can the haptics be controlled only by PWM or only by GPI(O)?

Just curious: why is I2C required to build the driver if a user is only controlling the device by PWM or GPI?

Quoted 7 lines

I2C is required to control registers and it can be triggered by I2C or PWM or GPI(controlled by host outside this driver), so PWM and GPI are optional. With your comments, I think it's better to remove below lines(//remove) to avoid confusion and add PWM as below if you agree.

         // remove
	  The haptics can be controlled by I2C communication,
	  or by PWM input, or by GPI.
         // update, adding || PWM
         depends on (INPUT && I2C) || PWM

Since <linux/pwm.h> provides stubs for when CONFIG_PWM is not enabled, it appears that "depends on PWM" is not required.

I'll leave it up to you. I was just trying to understand better. It may be that no changes are needed.

thanks.

Signature · 1 line
~Randy
author
#7 lore raw

RE: [PATCH V17 3/3] Input: new da7280 haptic driver

Friday, July 24, 2020 11:57 AM, Randy Dunlap wrote

Quoted 23 lines · Roy Im
Quoted 22 lines

On Fri, July 24, 2020 5:51 AM, Randy Dunlap wrote

Quoted 21 lines · Roy Im
Quoted 7 lines
drivers/input/misc/Kconfig +0 -0
index 362e8a0..06dc5a3 100644
@@ -869,4 +869,17 @@ config INPUT_STPMIC1_ONKEY
 	  To compile this driver as a module, choose M here: the
 	  module will be called stpmic1_onkey.

drivers/input/misc/Kconfig config INPUT_STPMIC1_ONKEY · line 880

Quoted 10 lines
drivers/input/misc/Kconfig +9 -0
 
+config INPUT_DA7280_HAPTICS
+	tristate "Dialog Semiconductor DA7280 haptics support"
+	depends on INPUT && I2C
+	select INPUT_FF_MEMLESS
+	select REGMAP_I2C
+	help
+	  Say Y to enable support for the Dialog DA7280 haptics driver.
+	  The haptics can be controlled by I2C communication,
+	  or by PWM input, or by GPI.

Is that GPIO.
?

Quoted 5 lines
Quoted 1 line

The Haptics can be working by GPI(if see from the haptic device), but from the Host it is GPO. Do you think the GPIO is

correct?

To me it needs to represent what services/interfaces/facilities are used by this driver that are provided by the Linux kernel. If it uses Linux GPIO services, then it should say GPIO -- although I don't see it using any Linux GPIO services.

OK, let me change to GPIO.

Quoted 16 lines
Quoted 7 lines
Quoted 5 lines

Can the haptics be controlled only by PWM or only by GPI(O)?

Just curious: why is I2C required to build the driver if a user is only controlling the device by PWM or GPI?

I2C is required to control registers and it can be triggered by I2C or PWM or GPI(controlled by host outside this driver),

so PWM and GPI are optional.

Quoted 1 line

With your comments, I think it's better to remove below lines(//remove) to avoid confusion and add PWM as below if

you agree.

Quoted 5 lines
         // remove
	  The haptics can be controlled by I2C communication,
	  or by PWM input, or by GPI.
         // update, adding || PWM
         depends on (INPUT && I2C) || PWM
Quoted 5 lines

Since <linux/pwm.h> provides stubs for when CONFIG_PWM is not enabled, it appears that "depends on PWM" is not required.

I'll leave it up to you. I was just trying to understand better. It may be that no changes are needed.

OK, thanks for your comments. To be clearer, I would like to update as below if you agree

	depends on INPUT && I2C

...
The haptics can be controlled by PWM or GPIO with I2C communication.

Quoted 5 lines

thanks.
--
~Randy

Kind regards,
Roy

#8 lore raw

Re: [PATCH V17 3/3] Input: new da7280 haptic driver

Quoted 6 lines · Roy Im

OK, thanks for your comments. To be clearer, I would like to update as below if you agree

	depends on INPUT && I2C

...
The haptics can be controlled by PWM or GPIO with I2C communication.

Yes, that sounds good. Thanks.

Signature · 1 line
~Randy
#9 lore raw

Re: [PATCH V17 3/3] Input: new da7280 haptic driver

In reply to Roy Im
Quoted 44 lines · Roy Im

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.

---

 drivers/input/misc/Kconfig  |   13 +
 drivers/input/misc/Makefile |    1 +
 drivers/input/misc/da7280.c | 1840 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1854 insertions(+)
 create mode 100644 drivers/input/misc/da7280.c
drivers/input/misc/da7280.c new file +20 -0
new file mode 100644
index 0000000..6e3ead5
@@ -0,0 +1,1840 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * DA7280 Haptic device driver
+ *
+ * Copyright (c) 2020 Dialog Semiconductor.
+ * Author: Roy Im <[email protected]>
+ */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/pwm.h>
+#include <linux/regmap.h>
+#include <linux/workqueue.h>
+#include <linux/uaccess.h>
+#include <linux/bitops.h>
+#include <linux/bitfield.h>
+

...

Quoted 12 lines
drivers/input/misc/da7280.c new file +12 -0
+static int da7280_haptic_set_pwm(struct da7280_haptic *haptics, bool enabled)
+{
+	struct pwm_state state;
+	u64 period_mag_multi;
+	int error;
+
+	if (!haptics->gain && enabled) {
+		dev_err(haptics->dev,
+			"Please set the gain first for the pwm mode\n");
+		return -EINVAL;
+	}
+

drivers/input/misc/da7280.c line 344

Quoted 10 lines
drivers/input/misc/da7280.c new file +10 -0
+	pwm_get_state(haptics->pwm_dev, &state);
+	state.enabled = enabled;
+	if (enabled) {
+		period_mag_multi = (u64)state.period * haptics->gain;
+		period_mag_multi >>= MAX_MAGNITUDE_SHIFT;
+
+		/* The interpretation of duty cycle depends on the acc_en,
+		 * it should be between 50% and 100% for acc_en = 0.
+		 * See datasheet 'PWM mode' section.
+		 */

from coding-style.rst:

/*
* This is the preferred style for multi-line
* comments in the Linux kernel source code.
* Please use it consistently.
*
* Description: A column of asterisks on the left side,
* with beginning and ending almost-blank lines. */

(except for networking code)

Please fix multiple locations.

thanks.

Signature · 1 line
~Randy
author
#10 lore raw

RE: [PATCH V17 3/3] Input: new da7280 haptic driver

Quoted 82 lines · Randy Dunlap
Quoted 43 lines · Roy Im

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.

---

 drivers/input/misc/Kconfig  |   13 +
 drivers/input/misc/Makefile |    1 +
 drivers/input/misc/da7280.c | 1840
+++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1854 insertions(+)
 create mode 100644 drivers/input/misc/da7280.c
drivers/input/misc/da7280.c new file +19 -0
new file mode 100644 index 0000000..6e3ead5
@@ -0,0 +1,1840 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * DA7280 Haptic device driver
+ *
+ * Copyright (c) 2020 Dialog Semiconductor.
+ * Author: Roy Im <[email protected]>  */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/pwm.h>
+#include <linux/regmap.h>
+#include <linux/workqueue.h>
+#include <linux/uaccess.h>
+#include <linux/bitops.h>
+#include <linux/bitfield.h>
+

...

Quoted 12 lines
drivers/input/misc/da7280.c new file +12 -0
+static int da7280_haptic_set_pwm(struct da7280_haptic *haptics, bool
+enabled) {
+	struct pwm_state state;
+	u64 period_mag_multi;
+	int error;
+
+	if (!haptics->gain && enabled) {
+		dev_err(haptics->dev,
+			"Please set the gain first for the pwm mode\n");
+		return -EINVAL;
+	}
+

drivers/input/misc/da7280.c line 344

Quoted 10 lines
drivers/input/misc/da7280.c new file +10 -0
+	pwm_get_state(haptics->pwm_dev, &state);
+	state.enabled = enabled;
+	if (enabled) {
+		period_mag_multi = (u64)state.period * haptics->gain;
+		period_mag_multi >>= MAX_MAGNITUDE_SHIFT;
+
+		/* The interpretation of duty cycle depends on the acc_en,
+		 * it should be between 50% and 100% for acc_en = 0.
+		 * See datasheet 'PWM mode' section.
+		 */

from coding-style.rst:

/*
* This is the preferred style for multi-line
* comments in the Linux kernel source code.
* Please use it consistently.
*
* Description: A column of asterisks on the left side,
* with beginning and ending almost-blank lines. */

Quoted 3 lines

(except for networking code)

Please fix multiple locations.

OK, I will fix them.

Quoted 5 lines

thanks.
--
~Randy

Kind regards,
Roy