All of lore.kernel.org
 help / color / mirror / Atom feed
* [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration
@ 2022-06-21 12:39 Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 1/6] dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz Dario Binacchi
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Dmitry Torokhov, Krzysztof Kozlowski,
	Marco Felsch, Michael Trimarchi, Oliver Graute, Rob Herring,
	devicetree, linux-input

The series was born from the analysis and mitigation of a crc problem
raised by an M06 type device. The added sysfs attributes were helpful
in debugging the problem. Patches that change the report rate on driver
probing, mitigated crc errors on kernel bootup. The patch to get/set
report rate by sysfs for an M12 device, has been tested.

Changes in v4:
- Add Rob Herring 'Acked-by' tag.

Changes in v3:
- Add hz unit suffix.
- Add '|' to description.
- Check the lower and upper limits of the report-rate-hz value
- Convert the M06 report-rate-hz value

Changes in v2:
- Add Oliver Graute's 'Acked-by' tag to:
  * Input: edt-ft5x06 - show model name by sysfs
  * Input: edt-ft5x06 - show firmware version by sysfs
- Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.

Dario Binacchi (6):
  dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
  Input: edt-ft5x06 - get/set M12 report rate by sysfs
  Input: edt-ft5x06 - set report rate by dts property
  Input: edt-ft5x06 - show model name by sysfs
  Input: edt-ft5x06 - show firmware version by sysfs
  Input: edt-ft5x06 - show crc and header errors by sysfs

 .../input/touchscreen/edt-ft5x06.yaml         |   8 ++
 drivers/input/touchscreen/edt-ft5x06.c        | 103 ++++++++++++++++--
 2 files changed, 103 insertions(+), 8 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 1/6] dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 2/6] Input: edt-ft5x06 - get/set M12 report rate by sysfs Dario Binacchi
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Rob Herring, Dmitry Torokhov,
	Krzysztof Kozlowski, Rob Herring, devicetree, linux-input

It allows to change the M06/M12 default scan rate.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Acked-by: Rob Herring <robh@kernel.org>

---

Changes in v4:
- Add Rob Herring 'Acked-by' tag.

Changes in v3:
- Add hz unit suffix.
- Add '|' to description.

 .../devicetree/bindings/input/touchscreen/edt-ft5x06.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.yaml b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.yaml
index 2e8da7470513..46bc8c028fe6 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.yaml
+++ b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.yaml
@@ -85,6 +85,14 @@ properties:
     minimum: 0
     maximum: 80
 
+  report-rate-hz:
+    description: |
+                 Allows setting the scan rate in Hertz.
+                  M06 supports range from 30 to 140 Hz.
+                  M12 supports range from 1 to 255 Hz.
+    minimum: 1
+    maximum: 255
+
   touchscreen-size-x: true
   touchscreen-size-y: true
   touchscreen-fuzz-x: true
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 2/6] Input: edt-ft5x06 - get/set M12 report rate by sysfs
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 1/6] dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property Dario Binacchi
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Dmitry Torokhov, Marco Felsch,
	Oliver Graute, linux-input

Add support for reading/writing scan rate (SC) register for M12 by
sysfs. The register value is equal to the SC (Hz), unlike M06, where
instead it is equal to SC / 10.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Tested-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---

(no changes since v1)

 drivers/input/touchscreen/edt-ft5x06.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index bb2e1cbffba7..77f061af5c61 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -47,6 +47,8 @@
 #define M09_REGISTER_NUM_X		0x94
 #define M09_REGISTER_NUM_Y		0x95
 
+#define M12_REGISTER_REPORT_RATE	0x88
+
 #define EV_REGISTER_THRESHOLD		0x40
 #define EV_REGISTER_GAIN		0x41
 #define EV_REGISTER_OFFSET_Y		0x45
@@ -523,9 +525,9 @@ static EDT_ATTR(offset_y, S_IWUSR | S_IRUGO, NO_REGISTER, NO_REGISTER,
 /* m06: range 20 to 80, m09: range 0 to 30, m12: range 1 to 255... */
 static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
 		M09_REGISTER_THRESHOLD, EV_REGISTER_THRESHOLD, 0, 255);
-/* m06: range 3 to 14, m12: (0x64: 100Hz) */
+/* m06: range 3 to 14, m12: range 1 to 255 */
 static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
-		NO_REGISTER, NO_REGISTER, 0, 255);
+		M12_REGISTER_REPORT_RATE, NO_REGISTER, 0, 255);
 
 static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_gain.dattr.attr,
@@ -1030,7 +1032,8 @@ static void edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
 	case EDT_M09:
 	case EDT_M12:
 		reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
-		reg_addr->reg_report_rate = NO_REGISTER;
+		reg_addr->reg_report_rate = tsdata->version == EDT_M12 ?
+			M12_REGISTER_REPORT_RATE : NO_REGISTER;
 		reg_addr->reg_gain = M09_REGISTER_GAIN;
 		reg_addr->reg_offset = M09_REGISTER_OFFSET;
 		reg_addr->reg_offset_x = NO_REGISTER;
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 1/6] dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 2/6] Input: edt-ft5x06 - get/set M12 report rate by sysfs Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-29  5:04   ` Dmitry Torokhov
  2022-06-21 12:39 ` [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs Dario Binacchi
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Dmitry Torokhov, Marco Felsch,
	Oliver Graute, linux-input

It allows to change the M06/M12 default scan rate on driver probing.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

(no changes since v3)

Changes in v3:
- Check the lower and upper limits of the report-rate-hz value
- Convert the M06 report-rate-hz value

 drivers/input/touchscreen/edt-ft5x06.c | 30 ++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 77f061af5c61..843e8b0522f7 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -1084,6 +1084,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 	struct input_dev *input;
 	unsigned long irq_flags;
 	int error;
+	u32 report_rate;
 	char fw_version[EDT_NAME_LEN];
 
 	dev_dbg(&client->dev, "probing for EDT FT5x06 I2C\n");
@@ -1213,6 +1214,35 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 	edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
 	edt_ft5x06_ts_get_parameters(tsdata);
 
+	if (tsdata->reg_addr.reg_report_rate != NO_REGISTER &&
+	    !of_property_read_u32(client->dev.of_node, "report-rate-hz",
+				  &report_rate)) {
+		tsdata->report_rate = report_rate;
+		if (tsdata->version == EDT_M06) {
+			if (report_rate < 30)
+				report_rate = 30;
+			else if (report_rate > 140)
+				report_rate = 140;
+		} else if (report_rate < 1) {
+			report_rate = 1;
+		} else if (report_rate > 255)
+			report_rate = 255;
+
+		if (report_rate != tsdata->report_rate)
+			dev_warn(&client->dev,
+				 "report-rate %dHz is unsupported, use %dHz\n",
+				 tsdata->report_rate, report_rate);
+
+		if (tsdata->version == EDT_M06)
+			report_rate /= 10;
+
+		tsdata->report_rate = report_rate;
+
+		edt_ft5x06_register_write(tsdata,
+					  tsdata->reg_addr.reg_report_rate,
+					  tsdata->report_rate);
+	}
+
 	dev_dbg(&client->dev,
 		"Model \"%s\", Rev. \"%s\", %dx%d sensors\n",
 		tsdata->name, fw_version, tsdata->num_x, tsdata->num_y);
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
                   ` (2 preceding siblings ...)
  2022-06-21 12:39 ` [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-29  5:07   ` Dmitry Torokhov
  2022-06-21 12:39 ` [RESEND PATCH v4 5/6] Input: edt-ft5x06 - show firmware version " Dario Binacchi
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Oliver Graute,
	Dmitry Torokhov, Marco Felsch, linux-input

The model name was printed only if debug mode was enabled. Now you can
always get it from sysfs.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Acked-by: Oliver Graute <oliver.graute@kococonnector.com>
---

(no changes since v1)

 drivers/input/touchscreen/edt-ft5x06.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 843e8b0522f7..89157deebfcb 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -529,6 +529,17 @@ static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
 static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
 		M12_REGISTER_REPORT_RATE, NO_REGISTER, 0, 255);
 
+static ssize_t model_show(struct device *dev, struct device_attribute *attr,
+			  char *buf)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+
+	return scnprintf(buf, PAGE_SIZE, "%s\n", tsdata->name);
+}
+
+static DEVICE_ATTR_RO(model);
+
 static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_gain.dattr.attr,
 	&edt_ft5x06_attr_offset.dattr.attr,
@@ -536,6 +547,7 @@ static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_offset_y.dattr.attr,
 	&edt_ft5x06_attr_threshold.dattr.attr,
 	&edt_ft5x06_attr_report_rate.dattr.attr,
+	&dev_attr_model.attr,
 	NULL
 };
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 5/6] Input: edt-ft5x06 - show firmware version by sysfs
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
                   ` (3 preceding siblings ...)
  2022-06-21 12:39 ` [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-21 12:39 ` [RESEND PATCH v4 6/6] Input: edt-ft5x06 - show crc and header errors " Dario Binacchi
  2022-06-29  5:08 ` [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dmitry Torokhov
  6 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Oliver Graute,
	Dmitry Torokhov, Marco Felsch, linux-input

The firmware version was printed only if debug mode was enabled. Now you
can always get it from sysfs.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Acked-by: Oliver Graute <oliver.graute@kococonnector.com>
---

(no changes since v1)

 drivers/input/touchscreen/edt-ft5x06.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 89157deebfcb..bab92344b2ea 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -129,6 +129,7 @@ struct edt_ft5x06_ts_data {
 	int max_support_points;
 
 	char name[EDT_NAME_LEN];
+	char fw_version[EDT_NAME_LEN];
 
 	struct edt_reg_addr reg_addr;
 	enum edt_ver version;
@@ -540,6 +541,17 @@ static ssize_t model_show(struct device *dev, struct device_attribute *attr,
 
 static DEVICE_ATTR_RO(model);
 
+static ssize_t fw_version_show(struct device *dev,
+			       struct device_attribute *attr, char *buf)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+
+	return scnprintf(buf, PAGE_SIZE, "%s\n", tsdata->fw_version);
+}
+
+static DEVICE_ATTR_RO(fw_version);
+
 static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_gain.dattr.attr,
 	&edt_ft5x06_attr_offset.dattr.attr,
@@ -548,6 +560,7 @@ static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_threshold.dattr.attr,
 	&edt_ft5x06_attr_report_rate.dattr.attr,
 	&dev_attr_model.attr,
+	&dev_attr_fw_version.attr,
 	NULL
 };
 
@@ -834,13 +847,13 @@ static void edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata)
 #endif /* CONFIG_DEBUGFS */
 
 static int edt_ft5x06_ts_identify(struct i2c_client *client,
-					struct edt_ft5x06_ts_data *tsdata,
-					char *fw_version)
+				  struct edt_ft5x06_ts_data *tsdata)
 {
 	u8 rdbuf[EDT_NAME_LEN];
 	char *p;
 	int error;
 	char *model_name = tsdata->name;
+	char *fw_version = tsdata->fw_version;
 
 	/* see what we find if we assume it is a M06 *
 	 * if we get less than EDT_NAME_LEN, we don't want
@@ -1097,7 +1110,6 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 	unsigned long irq_flags;
 	int error;
 	u32 report_rate;
-	char fw_version[EDT_NAME_LEN];
 
 	dev_dbg(&client->dev, "probing for EDT FT5x06 I2C\n");
 
@@ -1210,7 +1222,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 	tsdata->input = input;
 	tsdata->factory_mode = false;
 
-	error = edt_ft5x06_ts_identify(client, tsdata, fw_version);
+	error = edt_ft5x06_ts_identify(client, tsdata);
 	if (error) {
 		dev_err(&client->dev, "touchscreen probe failed\n");
 		return error;
@@ -1257,7 +1269,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 
 	dev_dbg(&client->dev,
 		"Model \"%s\", Rev. \"%s\", %dx%d sensors\n",
-		tsdata->name, fw_version, tsdata->num_x, tsdata->num_y);
+		tsdata->name, tsdata->fw_version, tsdata->num_x, tsdata->num_y);
 
 	input->name = tsdata->name;
 	input->id.bustype = BUS_I2C;
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 6/6] Input: edt-ft5x06 - show crc and header errors by sysfs
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
                   ` (4 preceding siblings ...)
  2022-06-21 12:39 ` [RESEND PATCH v4 5/6] Input: edt-ft5x06 - show firmware version " Dario Binacchi
@ 2022-06-21 12:39 ` Dario Binacchi
  2022-06-29  5:08 ` [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dmitry Torokhov
  6 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-21 12:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Michael Trimarchi, Dmitry Torokhov, Marco Felsch,
	Oliver Graute, linux-input

M06 sends packets with header and crc for data verification. Now you can
check at runtime how many packets have been dropped.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

(no changes since v2)

Changes in v2:
- Add Oliver Graute's 'Acked-by' tag to:
  * Input: edt-ft5x06 - show model name by sysfs
  * Input: edt-ft5x06 - show firmware version by sysfs
- Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.

 drivers/input/touchscreen/edt-ft5x06.c | 30 ++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index bab92344b2ea..3deb66d67469 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -133,6 +133,8 @@ struct edt_ft5x06_ts_data {
 
 	struct edt_reg_addr reg_addr;
 	enum edt_ver version;
+	unsigned int crc_errors;
+	unsigned int header_errors;
 };
 
 struct edt_i2c_chip_data {
@@ -181,6 +183,7 @@ static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06_ts_data *tsdata,
 		crc ^= buf[i];
 
 	if (crc != buf[buflen-1]) {
+		tsdata->crc_errors++;
 		dev_err_ratelimited(&tsdata->client->dev,
 				    "crc error: 0x%02x expected, got 0x%02x\n",
 				    crc, buf[buflen-1]);
@@ -238,6 +241,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
 	if (tsdata->version == EDT_M06) {
 		if (rdbuf[0] != 0xaa || rdbuf[1] != 0xaa ||
 			rdbuf[2] != datalen) {
+			tsdata->header_errors++;
 			dev_err_ratelimited(dev,
 					"Unexpected header: %02x%02x%02x!\n",
 					rdbuf[0], rdbuf[1], rdbuf[2]);
@@ -552,6 +556,30 @@ static ssize_t fw_version_show(struct device *dev,
 
 static DEVICE_ATTR_RO(fw_version);
 
+/* m06 only */
+static ssize_t header_errors_show(struct device *dev,
+				  struct device_attribute *attr, char *buf)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+
+	return scnprintf(buf, PAGE_SIZE, "%d\n", tsdata->header_errors);
+}
+
+static DEVICE_ATTR_RO(header_errors);
+
+/* m06 only */
+static ssize_t crc_errors_show(struct device *dev,
+			       struct device_attribute *attr, char *buf)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+
+	return scnprintf(buf, PAGE_SIZE, "%d\n", tsdata->crc_errors);
+}
+
+static DEVICE_ATTR_RO(crc_errors);
+
 static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_gain.dattr.attr,
 	&edt_ft5x06_attr_offset.dattr.attr,
@@ -561,6 +589,8 @@ static struct attribute *edt_ft5x06_attrs[] = {
 	&edt_ft5x06_attr_report_rate.dattr.attr,
 	&dev_attr_model.attr,
 	&dev_attr_fw_version.attr,
+	&dev_attr_header_errors.attr,
+	&dev_attr_crc_errors.attr,
 	NULL
 };
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property
  2022-06-21 12:39 ` [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property Dario Binacchi
@ 2022-06-29  5:04   ` Dmitry Torokhov
  0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2022-06-29  5:04 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: linux-kernel, Michael Trimarchi, Marco Felsch, Oliver Graute,
	linux-input

Hi Dario,

On Tue, Jun 21, 2022 at 02:39:34PM +0200, Dario Binacchi wrote:
> It allows to change the M06/M12 default scan rate on driver probing.
> 
> Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> 
> ---
> 
> (no changes since v3)
> 
> Changes in v3:
> - Check the lower and upper limits of the report-rate-hz value
> - Convert the M06 report-rate-hz value
> 
>  drivers/input/touchscreen/edt-ft5x06.c | 30 ++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
> index 77f061af5c61..843e8b0522f7 100644
> --- a/drivers/input/touchscreen/edt-ft5x06.c
> +++ b/drivers/input/touchscreen/edt-ft5x06.c
> @@ -1084,6 +1084,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
>  	struct input_dev *input;
>  	unsigned long irq_flags;
>  	int error;
> +	u32 report_rate;
>  	char fw_version[EDT_NAME_LEN];
>  
>  	dev_dbg(&client->dev, "probing for EDT FT5x06 I2C\n");
> @@ -1213,6 +1214,35 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
>  	edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
>  	edt_ft5x06_ts_get_parameters(tsdata);
>  
> +	if (tsdata->reg_addr.reg_report_rate != NO_REGISTER &&
> +	    !of_property_read_u32(client->dev.of_node, "report-rate-hz",

Unless there is a strong reason to use of-specific version of properties
API, generic device property API is preferred. I changed this to
device_property_read_u32().


> +				  &report_rate)) {
> +		tsdata->report_rate = report_rate;
> +		if (tsdata->version == EDT_M06) {
> +			if (report_rate < 30)
> +				report_rate = 30;
> +			else if (report_rate > 140)
> +				report_rate = 140;

We have a nice macro clamp_val() for this.

> +		} else if (report_rate < 1) {
> +			report_rate = 1;
> +		} else if (report_rate > 255)
> +			report_rate = 255;

Same here. I made the change and applied.

> +
> +		if (report_rate != tsdata->report_rate)
> +			dev_warn(&client->dev,
> +				 "report-rate %dHz is unsupported, use %dHz\n",
> +				 tsdata->report_rate, report_rate);
> +
> +		if (tsdata->version == EDT_M06)
> +			report_rate /= 10;
> +
> +		tsdata->report_rate = report_rate;
> +
> +		edt_ft5x06_register_write(tsdata,
> +					  tsdata->reg_addr.reg_report_rate,
> +					  tsdata->report_rate);
> +	}
> +
>  	dev_dbg(&client->dev,
>  		"Model \"%s\", Rev. \"%s\", %dx%d sensors\n",
>  		tsdata->name, fw_version, tsdata->num_x, tsdata->num_y);
> -- 
> 2.32.0
> 

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs
  2022-06-21 12:39 ` [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs Dario Binacchi
@ 2022-06-29  5:07   ` Dmitry Torokhov
  0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2022-06-29  5:07 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: linux-kernel, Michael Trimarchi, Oliver Graute, Marco Felsch,
	linux-input

Hi Dario,

On Tue, Jun 21, 2022 at 02:39:35PM +0200, Dario Binacchi wrote:
> The model name was printed only if debug mode was enabled. Now you can
> always get it from sysfs.
> 
> Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> Acked-by: Oliver Graute <oliver.graute@kococonnector.com>
> ---
> 
> (no changes since v1)
> 
>  drivers/input/touchscreen/edt-ft5x06.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
> index 843e8b0522f7..89157deebfcb 100644
> --- a/drivers/input/touchscreen/edt-ft5x06.c
> +++ b/drivers/input/touchscreen/edt-ft5x06.c
> @@ -529,6 +529,17 @@ static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
>  static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
>  		M12_REGISTER_REPORT_RATE, NO_REGISTER, 0, 255);
>  
> +static ssize_t model_show(struct device *dev, struct device_attribute *attr,
> +			  char *buf)
> +{
> +	struct i2c_client *client = to_i2c_client(dev);
> +	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
> +
> +	return scnprintf(buf, PAGE_SIZE, "%s\n", tsdata->name);

There is sysfs_emit() that is preferred to be used in sysfs handlers.
Same comment applies to the patches following this one.

I made the change and applied.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration
  2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
                   ` (5 preceding siblings ...)
  2022-06-21 12:39 ` [RESEND PATCH v4 6/6] Input: edt-ft5x06 - show crc and header errors " Dario Binacchi
@ 2022-06-29  5:08 ` Dmitry Torokhov
  6 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2022-06-29  5:08 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: linux-kernel, Krzysztof Kozlowski, Marco Felsch,
	Michael Trimarchi, Oliver Graute, Rob Herring, devicetree,
	linux-input

On Tue, Jun 21, 2022 at 02:39:31PM +0200, Dario Binacchi wrote:
> The series was born from the analysis and mitigation of a crc problem
> raised by an M06 type device. The added sysfs attributes were helpful
> in debugging the problem. Patches that change the report rate on driver
> probing, mitigated crc errors on kernel bootup. The patch to get/set
> report rate by sysfs for an M12 device, has been tested.
> 
> Changes in v4:
> - Add Rob Herring 'Acked-by' tag.
> 
> Changes in v3:
> - Add hz unit suffix.
> - Add '|' to description.
> - Check the lower and upper limits of the report-rate-hz value
> - Convert the M06 report-rate-hz value
> 
> Changes in v2:
> - Add Oliver Graute's 'Acked-by' tag to:
>   * Input: edt-ft5x06 - show model name by sysfs
>   * Input: edt-ft5x06 - show firmware version by sysfs
> - Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.
> 
> Dario Binacchi (6):
>   dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
>   Input: edt-ft5x06 - get/set M12 report rate by sysfs
>   Input: edt-ft5x06 - set report rate by dts property
>   Input: edt-ft5x06 - show model name by sysfs
>   Input: edt-ft5x06 - show firmware version by sysfs
>   Input: edt-ft5x06 - show crc and header errors by sysfs
> 
>  .../input/touchscreen/edt-ft5x06.yaml         |   8 ++
>  drivers/input/touchscreen/edt-ft5x06.c        | 103 ++++++++++++++++--
>  2 files changed, 103 insertions(+), 8 deletions(-)

Applied the lot with a few small adjustments, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration
@ 2022-06-07  9:55 Dario Binacchi
  0 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-06-07  9:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Dmitry Torokhov, Krzysztof Kozlowski,
	Marco Felsch, Michael Trimarchi, Oliver Graute, Rob Herring,
	devicetree, linux-input

The series was born from the analysis and mitigation of a crc problem
raised by an M06 type device. The added sysfs attributes were helpful
in debugging the problem. Patches that change the report rate on driver
probing, mitigated crc errors on kernel bootup. The patch to get/set
report rate by sysfs for an M12 device, has been tested.

Changes in v4:
- Add Rob Herring 'Acked-by' tag.

Changes in v3:
- Add hz unit suffix.
- Add '|' to description.
- Check the lower and upper limits of the report-rate-hz value
- Convert the M06 report-rate-hz value

Changes in v2:
- Add Oliver Graute's 'Acked-by' tag to:
  * Input: edt-ft5x06 - show model name by sysfs
  * Input: edt-ft5x06 - show firmware version by sysfs
- Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.

Dario Binacchi (6):
  dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
  Input: edt-ft5x06 - get/set M12 report rate by sysfs
  Input: edt-ft5x06 - set report rate by dts property
  Input: edt-ft5x06 - show model name by sysfs
  Input: edt-ft5x06 - show firmware version by sysfs
  Input: edt-ft5x06 - show crc and header errors by sysfs

 .../input/touchscreen/edt-ft5x06.yaml         |   8 ++
 drivers/input/touchscreen/edt-ft5x06.c        | 103 ++++++++++++++++--
 2 files changed, 103 insertions(+), 8 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration
@ 2022-05-05 15:56 Dario Binacchi
  0 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-05-05 15:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Dmitry Torokhov, Krzysztof Kozlowski,
	Marco Felsch, Michael Trimarchi, Oliver Graute, Rob Herring,
	Stephan Gerhold, devicetree, linux-input

The series was born from the analysis and mitigation of a crc problem
raised by an M06 type device. The added sysfs attributes were helpful
in debugging the problem. Patches that change the report rate on driver
probing, mitigated crc errors on kernel bootup. The patch to get/set
report rate by sysfs for an M12 device, has been tested.

Changes in v4:
- Add Rob Herring 'Acked-by' tag.

Changes in v3:
- Add hz unit suffix.
- Add '|' to description.
- Check the lower and upper limits of the report-rate-hz value
- Convert the M06 report-rate-hz value

Changes in v2:
- Add Oliver Graute's 'Acked-by' tag to:
  * Input: edt-ft5x06 - show model name by sysfs
  * Input: edt-ft5x06 - show firmware version by sysfs
- Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.

Dario Binacchi (6):
  dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
  Input: edt-ft5x06 - get/set M12 report rate by sysfs
  Input: edt-ft5x06 - set report rate by dts property
  Input: edt-ft5x06 - show model name by sysfs
  Input: edt-ft5x06 - show firmware version by sysfs
  Input: edt-ft5x06 - show crc and header errors by sysfs

 .../input/touchscreen/edt-ft5x06.yaml         |   8 ++
 drivers/input/touchscreen/edt-ft5x06.c        | 103 ++++++++++++++++--
 2 files changed, 103 insertions(+), 8 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration
@ 2022-04-21 18:59 Dario Binacchi
  0 siblings, 0 replies; 13+ messages in thread
From: Dario Binacchi @ 2022-04-21 18:59 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dario Binacchi, Dmitry Torokhov, Krzysztof Kozlowski,
	Marco Felsch, Michael Trimarchi, Oliver Graute, Rob Herring,
	Stephan Gerhold, devicetree, linux-input

The series was born from the analysis and mitigation of a crc problem
raised by an M06 type device. The added sysfs attributes were helpful
in debugging the problem. Patches that change the report rate on driver
probing, mitigated crc errors on kernel bootup. The patch to get/set
report rate by sysfs for an M12 device, has been tested.

Changes in v4:
- Add Rob Herring 'Acked-by' tag.

Changes in v3:
- Add hz unit suffix.
- Add '|' to description.
- Check the lower and upper limits of the report-rate-hz value
- Convert the M06 report-rate-hz value

Changes in v2:
- Add Oliver Graute's 'Acked-by' tag to:
  * Input: edt-ft5x06 - show model name by sysfs
  * Input: edt-ft5x06 - show firmware version by sysfs
- Fix yaml file. Tested with `make DT_CHECKER_FLAGS=-m dt_binding_check'.

Dario Binacchi (6):
  dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz
  Input: edt-ft5x06 - get/set M12 report rate by sysfs
  Input: edt-ft5x06 - set report rate by dts property
  Input: edt-ft5x06 - show model name by sysfs
  Input: edt-ft5x06 - show firmware version by sysfs
  Input: edt-ft5x06 - show crc and header errors by sysfs

 .../input/touchscreen/edt-ft5x06.yaml         |   8 ++
 drivers/input/touchscreen/edt-ft5x06.c        | 103 ++++++++++++++++--
 2 files changed, 103 insertions(+), 8 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-06-29  5:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-21 12:39 [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dario Binacchi
2022-06-21 12:39 ` [RESEND PATCH v4 1/6] dt-bindings: input: touchscreen: edt-ft5x06: add report-rate-hz Dario Binacchi
2022-06-21 12:39 ` [RESEND PATCH v4 2/6] Input: edt-ft5x06 - get/set M12 report rate by sysfs Dario Binacchi
2022-06-21 12:39 ` [RESEND PATCH v4 3/6] Input: edt-ft5x06 - set report rate by dts property Dario Binacchi
2022-06-29  5:04   ` Dmitry Torokhov
2022-06-21 12:39 ` [RESEND PATCH v4 4/6] Input: edt-ft5x06 - show model name by sysfs Dario Binacchi
2022-06-29  5:07   ` Dmitry Torokhov
2022-06-21 12:39 ` [RESEND PATCH v4 5/6] Input: edt-ft5x06 - show firmware version " Dario Binacchi
2022-06-21 12:39 ` [RESEND PATCH v4 6/6] Input: edt-ft5x06 - show crc and header errors " Dario Binacchi
2022-06-29  5:08 ` [RESEND PATCH v4 0/6] Input: edt-ft5x06 - Improve configuration Dmitry Torokhov
  -- strict thread matches above, loose matches on Subject: below --
2022-06-07  9:55 Dario Binacchi
2022-05-05 15:56 Dario Binacchi
2022-04-21 18:59 Dario Binacchi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.