* [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver
@ 2023-03-23 13:51 Maximilian Weigand
2023-03-23 13:52 ` [PATCH 1/6] Input: cyttsp5: fix array length Maximilian Weigand
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:51 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
While working on some intermittent module-loading problems of the
cyttsp5 module on the Pine64 PineNote it was found that the device tree
example of the cypress,tt21000 was in error regarding the interrupt
type (IRQ_TYPE_EDGE_FALLING should be used instead of IRQ_TYPE_LEVEL_LOW).
This lead to the proper implementation of device sleep states, which is
required to ensure proper functioning of the touchscreen after resume
when the correct interrupt type IRQ_TYPE_FALLING_EDGE is used. Sleep and
wakeup commands to the touchscreen were derived from the GPL-2 android
driver by Cypress Semiconductor (copyright note for Cypress
Semiconductor is already in the current driver).
The first two patches fix small issues with the code found during
development of the suspend functionality.
Maximilian Weigand (6):
Input: cyttsp5: fix array length
Input: cyttsp5: remove unused code
devicetree: input: cypress,tt21000: fix interrupt type in dts example
Input: cyttsp5: properly initialize the device as a pm wakeup device
devicetree: input: cypress,tt21000: add wakeup-source entry to
documentation
Input: cyttsp5: implement proper sleep and wakeup procedures
.../input/touchscreen/cypress,tt21000.yaml | 4 +-
drivers/input/touchscreen/cyttsp5.c | 138 +++++++++++++++++-
2 files changed, 136 insertions(+), 6 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/6] Input: cyttsp5: fix array length
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-23 13:52 ` [PATCH 2/6] Input: cyttsp5: remove unused code Maximilian Weigand
` (4 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
The cmd array should be initialized with the proper command size and not
with the actual command value that is sent to the touchscreen.
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
drivers/input/touchscreen/cyttsp5.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
index 16caffa35dd9..42c7b44e37f8 100644
--- a/drivers/input/touchscreen/cyttsp5.c
+++ b/drivers/input/touchscreen/cyttsp5.c
@@ -559,7 +559,7 @@ static int cyttsp5_hid_output_get_sysinfo(struct cyttsp5 *ts)
static int cyttsp5_hid_output_bl_launch_app(struct cyttsp5 *ts)
{
int rc;
- u8 cmd[HID_OUTPUT_BL_LAUNCH_APP];
+ u8 cmd[HID_OUTPUT_BL_LAUNCH_APP_SIZE];
u16 crc;
put_unaligned_le16(HID_OUTPUT_BL_LAUNCH_APP_SIZE, cmd);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/6] Input: cyttsp5: remove unused code
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
2023-03-23 13:52 ` [PATCH 1/6] Input: cyttsp5: fix array length Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-23 15:18 ` kernel test robot
2023-03-27 15:17 ` kernel test robot
2023-03-23 13:52 ` [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example Maximilian Weigand
` (3 subsequent siblings)
5 siblings, 2 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
The removed lines were remnants of the android driver of the touch
screen and are not used in the current driver.
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
drivers/input/touchscreen/cyttsp5.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
index 42c7b44e37f8..8b0c6975c6ec 100644
--- a/drivers/input/touchscreen/cyttsp5.c
+++ b/drivers/input/touchscreen/cyttsp5.c
@@ -600,13 +600,9 @@ static int cyttsp5_get_hid_descriptor(struct cyttsp5 *ts,
struct cyttsp5_hid_desc *desc)
{
struct device *dev = ts->dev;
- __le16 hid_desc_register = cpu_to_le16(HID_DESC_REG);
int rc;
u8 cmd[2];
- /* Set HID descriptor register */
- memcpy(cmd, &hid_desc_register, sizeof(hid_desc_register));
-
rc = cyttsp5_write(ts, HID_DESC_REG, NULL, 0);
if (rc) {
dev_err(dev, "Failed to get HID descriptor, rc=%d\n", rc);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
2023-03-23 13:52 ` [PATCH 1/6] Input: cyttsp5: fix array length Maximilian Weigand
2023-03-23 13:52 ` [PATCH 2/6] Input: cyttsp5: remove unused code Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-24 9:41 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
2023-03-23 13:52 ` [PATCH 4/6] Input: cyttsp5: properly initialize the device as a pm wakeup device Maximilian Weigand
` (2 subsequent siblings)
5 siblings, 2 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
Triggering the interrupt of the IRQ_TYPE_LEVEL_LOW type can lead to
probing issues with the device for the current driver (encountered on
the Pine64 PineNote). Basically the interrupt would be triggered before
certain commands were sent to the device, leading to a race between the
device responding fast enough and the irq handler fetching a data frame
from it. Actually all devices currently using the driver already use a
falling edge trigger.
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
.../devicetree/bindings/input/touchscreen/cypress,tt21000.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml b/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
index 1959ec394768..a77203c78d6e 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
+++ b/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
@@ -83,7 +83,7 @@ examples:
pinctrl-names = "default";
pinctrl-0 = <&tp_reset_ds203>;
interrupt-parent = <&pio>;
- interrupts = <1 5 IRQ_TYPE_LEVEL_LOW>;
+ interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>;
vdd-supply = <®_touch>;
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/6] Input: cyttsp5: properly initialize the device as a pm wakeup device
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
` (2 preceding siblings ...)
2023-03-23 13:52 ` [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-23 13:52 ` [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation Maximilian Weigand
2023-03-23 13:52 ` [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures Maximilian Weigand
5 siblings, 0 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
When used as a wakeup source the driver should be properly registered
with the pm system using device_init_wakeup.
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
drivers/input/touchscreen/cyttsp5.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
index 8b0c6975c6ec..01dd10a596ab 100644
--- a/drivers/input/touchscreen/cyttsp5.c
+++ b/drivers/input/touchscreen/cyttsp5.c
@@ -830,6 +830,9 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
return error;
}
+ if (device_property_read_bool(dev, "wakeup-source"))
+ device_init_wakeup(dev, true);
+
error = cyttsp5_startup(ts);
if (error) {
dev_err(ts->dev, "Fail initial startup r=%d\n", error);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
` (3 preceding siblings ...)
2023-03-23 13:52 ` [PATCH 4/6] Input: cyttsp5: properly initialize the device as a pm wakeup device Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-24 9:42 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
2023-03-23 13:52 ` [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures Maximilian Weigand
5 siblings, 2 replies; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
The touchscreen can be used to wake up systems from sleep and therefore
the wakeup-source entry should be included in the documentation.
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
.../devicetree/bindings/input/touchscreen/cypress,tt21000.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml b/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
index a77203c78d6e..e2da13b7991d 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
+++ b/Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
@@ -40,6 +40,8 @@ properties:
linux,keycodes:
description: EV_ABS specific event code generated by the axis.
+ wakeup-source: true
+
patternProperties:
"^button@[0-9]+$":
type: object
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
` (4 preceding siblings ...)
2023-03-23 13:52 ` [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation Maximilian Weigand
@ 2023-03-23 13:52 ` Maximilian Weigand
2023-03-27 18:11 ` kernel test robot
5 siblings, 1 reply; 14+ messages in thread
From: Maximilian Weigand @ 2023-03-23 13:52 UTC (permalink / raw)
To: Linus Walleij, Dmitry Torokhov, linux-input, linux-kernel, devicetree
Cc: Maximilian Weigand, Alistair Francis
The touchscreen can be put into a deep sleep state that prevents it from
emitting touch irqs. Put the touchscreen into deep sleep during suspend
if it is not marked as a wakeup source.
This also fixes a problem with the touchscreen getting unresponsive after
system resume because it pulled the interrupt line low during sleep in
response to a touch event, thereby effectively disabling the interrupt
handling (which triggers on the falling edge).
Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
---
drivers/input/touchscreen/cyttsp5.c | 129 +++++++++++++++++++++++++++-
1 file changed, 128 insertions(+), 1 deletion(-)
diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
index 01dd10a596ab..3e8387f6347c 100644
--- a/drivers/input/touchscreen/cyttsp5.c
+++ b/drivers/input/touchscreen/cyttsp5.c
@@ -43,6 +43,7 @@
#define HID_DESC_REG 0x1
#define HID_INPUT_REG 0x3
#define HID_OUTPUT_REG 0x4
+#define HID_COMMAND_REG 0x5
#define REPORT_ID_TOUCH 0x1
#define REPORT_ID_BTN 0x3
@@ -68,6 +69,7 @@
#define HID_APP_OUTPUT_REPORT_ID 0x2F
#define HID_BL_RESPONSE_REPORT_ID 0x30
#define HID_BL_OUTPUT_REPORT_ID 0x40
+#define HID_RESPONSE_REPORT_ID 0xF0
#define HID_OUTPUT_RESPONSE_REPORT_OFFSET 2
#define HID_OUTPUT_RESPONSE_CMD_OFFSET 4
@@ -78,9 +80,15 @@
#define HID_SYSINFO_BTN_MASK GENMASK(7, 0)
#define HID_SYSINFO_MAX_BTN 8
+#define HID_CMD_SET_POWER 0x8
+
+#define HID_POWER_ON 0x0
+#define HID_POWER_SLEEP 0x1
+
#define CY_HID_OUTPUT_TIMEOUT_MS 200
#define CY_HID_OUTPUT_GET_SYSINFO_TIMEOUT_MS 3000
#define CY_HID_GET_HID_DESCRIPTOR_TIMEOUT_MS 4000
+#define CY_HID_SET_POWER_TIMEOUT 500
/* maximum number of concurrent tracks */
#define TOUCH_REPORT_SIZE 10
@@ -100,6 +108,14 @@
#define TOUCH_REPORT_USAGE_PG_MIN 0xFF010063
#define TOUCH_COL_USAGE_PG 0x000D0022
+#define SET_CMD_LOW(byte, bits) \
+ ((byte) = (((byte) & 0xF0) | ((bits) & 0x0F)))
+#define SET_CMD_HIGH(byte, bits)\
+ ((byte) = (((byte) & 0x0F) | ((bits) & 0xF0)))
+#define SET_CMD_OPCODE(byte, opcode) SET_CMD_LOW(byte, opcode)
+#define SET_CMD_REPORT_TYPE(byte, type) SET_CMD_HIGH(byte, ((type) << 4))
+#define SET_CMD_REPORT_ID(byte, id) SET_CMD_LOW(byte, id)
+
/* System Information interface definitions */
struct cyttsp5_sensing_conf_data_dev {
u8 electrodes_x;
@@ -179,6 +195,7 @@ struct cyttsp5_hid_desc {
struct cyttsp5 {
struct device *dev;
struct completion cmd_done;
+ struct completion cmd_command_done;
struct cyttsp5_sysinfo sysinfo;
struct cyttsp5_hid_desc hid_desc;
u8 cmd_buf[CYTTSP5_PREALLOCATED_CMD_BUFFER];
@@ -191,6 +208,7 @@ struct cyttsp5 {
struct regmap *regmap;
struct touchscreen_properties prop;
struct regulator *vdd;
+ bool is_wakeup_source;
};
/*
@@ -556,6 +574,84 @@ static int cyttsp5_hid_output_get_sysinfo(struct cyttsp5 *ts)
return cyttsp5_get_sysinfo_regs(ts);
}
+static int cyttsp5_enter_sleep(struct cyttsp5 *ts)
+{
+ int rc;
+ u8 cmd[2];
+ u16 crc;
+
+ memset(cmd, 0, sizeof(cmd));
+
+ SET_CMD_REPORT_TYPE(cmd[0], 0);
+ SET_CMD_REPORT_ID(cmd[0], HID_POWER_SLEEP);
+ SET_CMD_OPCODE(cmd[1], HID_CMD_SET_POWER);
+
+ rc = cyttsp5_write(ts, HID_COMMAND_REG, cmd, 2);
+ if (rc) {
+ dev_err(ts->dev, "Failed to write command %d", rc);
+ return rc;
+ }
+
+ rc = wait_for_completion_interruptible_timeout(&ts->cmd_command_done,
+ msecs_to_jiffies(CY_HID_SET_POWER_TIMEOUT));
+ if (rc <= 0) {
+ dev_err(ts->dev, "HID output cmd execution timed out\n");
+ rc = -ETIMEDOUT;
+ return rc;
+ }
+
+ /* validate */
+ if ((ts->response_buf[2] != HID_RESPONSE_REPORT_ID)
+ || ((ts->response_buf[3] & 0x3) != HID_POWER_SLEEP)
+ || ((ts->response_buf[4] & 0xF) != HID_CMD_SET_POWER)) {
+ rc = -EINVAL;
+ dev_err(ts->dev, "Validation of the sleep response failed\n");
+ return rc;
+ }
+
+ return 0;
+
+}
+
+static int cyttsp5_wakeup(struct cyttsp5 *ts)
+{
+ int rc;
+ u8 cmd[2];
+ u16 crc;
+
+ memset(cmd, 0, sizeof(cmd));
+
+ SET_CMD_REPORT_TYPE(cmd[0], 0);
+ SET_CMD_REPORT_ID(cmd[0], HID_POWER_ON);
+ SET_CMD_OPCODE(cmd[1], HID_CMD_SET_POWER);
+
+ rc = cyttsp5_write(ts, HID_COMMAND_REG, cmd, 2);
+ if (rc) {
+ dev_err(ts->dev, "Failed to write command %d", rc);
+ return rc;
+ }
+
+ rc = wait_for_completion_interruptible_timeout(&ts->cmd_command_done,
+ msecs_to_jiffies(CY_HID_SET_POWER_TIMEOUT));
+ if (rc <= 0) {
+ dev_err(ts->dev, "HID output cmd execution timed out\n");
+ rc = -ETIMEDOUT;
+ return rc;
+ }
+
+ /* validate */
+ if ((ts->response_buf[2] != HID_RESPONSE_REPORT_ID)
+ || ((ts->response_buf[3] & 0x3) != HID_POWER_ON)
+ || ((ts->response_buf[4] & 0xF) != HID_CMD_SET_POWER)) {
+ rc = -EINVAL;
+ dev_err(ts->dev, "Validation of the sleep response failed\n");
+ return rc;
+ }
+
+ return 0;
+
+}
+
static int cyttsp5_hid_output_bl_launch_app(struct cyttsp5 *ts)
{
int rc;
@@ -670,6 +766,10 @@ static irqreturn_t cyttsp5_handle_irq(int irq, void *handle)
case HID_BTN_REPORT_ID:
cyttsp5_btn_attention(ts->dev);
break;
+ case HID_RESPONSE_REPORT_ID:
+ memcpy(ts->response_buf, ts->input_buf, size);
+ complete(&ts->cmd_command_done);
+ break;
default:
/* It is not an input but a command response */
memcpy(ts->response_buf, ts->input_buf, size);
@@ -784,6 +884,7 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
dev_set_drvdata(dev, ts);
init_completion(&ts->cmd_done);
+ init_completion(&ts->cmd_command_done);
/* Power up the device */
ts->vdd = devm_regulator_get(dev, "vdd");
@@ -830,8 +931,11 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
return error;
}
- if (device_property_read_bool(dev, "wakeup-source"))
+ if (device_property_read_bool(dev, "wakeup-source")) {
device_init_wakeup(dev, true);
+ ts->is_wakeup_source = true;
+ } else
+ ts->is_wakeup_source = false;
error = cyttsp5_startup(ts);
if (error) {
@@ -884,6 +988,29 @@ static const struct i2c_device_id cyttsp5_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, cyttsp5_i2c_id);
+static int __maybe_unused cyttsp5_suspend(struct device *dev)
+{
+ struct cyttsp5 *ts = dev_get_drvdata(dev);
+
+ if (!ts->is_wakeup_source)
+ cyttsp5_enter_sleep(ts);
+ return 0;
+}
+
+static int __maybe_unused cyttsp5_resume(struct device *dev)
+{
+ struct cyttsp5 *ts = dev_get_drvdata(dev);
+ struct i2c_client *client = to_i2c_client(dev);
+ int error;
+
+ if (!ts->is_wakeup_source)
+ cyttsp5_wakeup(ts);
+
+ return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(cyttsp5_pm, cyttsp5_suspend, cyttsp5_resume);
+
static struct i2c_driver cyttsp5_i2c_driver = {
.driver = {
.name = CYTTSP5_NAME,
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 2/6] Input: cyttsp5: remove unused code
2023-03-23 13:52 ` [PATCH 2/6] Input: cyttsp5: remove unused code Maximilian Weigand
@ 2023-03-23 15:18 ` kernel test robot
2023-03-27 15:17 ` kernel test robot
1 sibling, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-03-23 15:18 UTC (permalink / raw)
To: Maximilian Weigand, Linus Walleij, Dmitry Torokhov, linux-input,
linux-kernel, devicetree
Cc: oe-kbuild-all, Maximilian Weigand, Alistair Francis
Hi Maximilian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on dtor-input/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20230323135205.1160879-3-mweigand%40mweigand.net
patch subject: [PATCH 2/6] Input: cyttsp5: remove unused code
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20230323/202303232302.FB64fi39-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/4358a60821eb8149dabed197c09d3c0eab63bf38
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
git checkout 4358a60821eb8149dabed197c09d3c0eab63bf38
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 olddefconfig
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/input/touchscreen/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303232302.FB64fi39-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/input/touchscreen/cyttsp5.c: In function 'cyttsp5_get_hid_descriptor':
>> drivers/input/touchscreen/cyttsp5.c:604:12: warning: unused variable 'cmd' [-Wunused-variable]
604 | u8 cmd[2];
| ^~~
vim +/cmd +604 drivers/input/touchscreen/cyttsp5.c
5b0c03e24a061f Alistair Francis 2022-10-31 598
5b0c03e24a061f Alistair Francis 2022-10-31 599 static int cyttsp5_get_hid_descriptor(struct cyttsp5 *ts,
5b0c03e24a061f Alistair Francis 2022-10-31 600 struct cyttsp5_hid_desc *desc)
5b0c03e24a061f Alistair Francis 2022-10-31 601 {
5b0c03e24a061f Alistair Francis 2022-10-31 602 struct device *dev = ts->dev;
5b0c03e24a061f Alistair Francis 2022-10-31 603 int rc;
5b0c03e24a061f Alistair Francis 2022-10-31 @604 u8 cmd[2];
5b0c03e24a061f Alistair Francis 2022-10-31 605
5b0c03e24a061f Alistair Francis 2022-10-31 606 rc = cyttsp5_write(ts, HID_DESC_REG, NULL, 0);
5b0c03e24a061f Alistair Francis 2022-10-31 607 if (rc) {
5b0c03e24a061f Alistair Francis 2022-10-31 608 dev_err(dev, "Failed to get HID descriptor, rc=%d\n", rc);
5b0c03e24a061f Alistair Francis 2022-10-31 609 return rc;
5b0c03e24a061f Alistair Francis 2022-10-31 610 }
5b0c03e24a061f Alistair Francis 2022-10-31 611
5b0c03e24a061f Alistair Francis 2022-10-31 612 rc = wait_for_completion_interruptible_timeout(&ts->cmd_done,
5b0c03e24a061f Alistair Francis 2022-10-31 613 msecs_to_jiffies(CY_HID_GET_HID_DESCRIPTOR_TIMEOUT_MS));
5b0c03e24a061f Alistair Francis 2022-10-31 614 if (rc <= 0) {
5b0c03e24a061f Alistair Francis 2022-10-31 615 dev_err(ts->dev, "HID get descriptor timed out\n");
5b0c03e24a061f Alistair Francis 2022-10-31 616 rc = -ETIMEDOUT;
5b0c03e24a061f Alistair Francis 2022-10-31 617 return rc;
5b0c03e24a061f Alistair Francis 2022-10-31 618 }
5b0c03e24a061f Alistair Francis 2022-10-31 619
5b0c03e24a061f Alistair Francis 2022-10-31 620 memcpy(desc, ts->response_buf, sizeof(*desc));
5b0c03e24a061f Alistair Francis 2022-10-31 621
5b0c03e24a061f Alistair Francis 2022-10-31 622 /* Check HID descriptor length and version */
5b0c03e24a061f Alistair Francis 2022-10-31 623 if (le16_to_cpu(desc->hid_desc_len) != sizeof(*desc) ||
5b0c03e24a061f Alistair Francis 2022-10-31 624 le16_to_cpu(desc->bcd_version) != HID_VERSION) {
5b0c03e24a061f Alistair Francis 2022-10-31 625 dev_err(dev, "Unsupported HID version\n");
5b0c03e24a061f Alistair Francis 2022-10-31 626 return -ENODEV;
5b0c03e24a061f Alistair Francis 2022-10-31 627 }
5b0c03e24a061f Alistair Francis 2022-10-31 628
5b0c03e24a061f Alistair Francis 2022-10-31 629 return 0;
5b0c03e24a061f Alistair Francis 2022-10-31 630 }
5b0c03e24a061f Alistair Francis 2022-10-31 631
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example
2023-03-23 13:52 ` [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example Maximilian Weigand
@ 2023-03-24 9:41 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
1 sibling, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2023-03-24 9:41 UTC (permalink / raw)
To: Maximilian Weigand, Linus Walleij, Dmitry Torokhov, linux-input,
linux-kernel, devicetree
Cc: Alistair Francis
On 23/03/2023 14:52, Maximilian Weigand wrote:
> Triggering the interrupt of the IRQ_TYPE_LEVEL_LOW type can lead to
> probing issues with the device for the current driver (encountered on
> the Pine64 PineNote). Basically the interrupt would be triggered before
> certain commands were sent to the device, leading to a race between the
> device responding fast enough and the irq handler fetching a data frame
> from it. Actually all devices currently using the driver already use a
Use subject prefixes matching the subsystem (which you can get for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching). "dt-bindings", not "devicetree"
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC. It might happen, that command when run on an older
kernel, gives you outdated entries. Therefore please be sure you base
your patches on recent Linux kernel.
> falling edge trigger.
>
> Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
> Reviewed-by: Alistair Francis <alistair@alistair23.me>
Usually reviews are public.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation
2023-03-23 13:52 ` [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation Maximilian Weigand
@ 2023-03-24 9:42 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
1 sibling, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2023-03-24 9:42 UTC (permalink / raw)
To: Maximilian Weigand, Linus Walleij, Dmitry Torokhov, linux-input,
linux-kernel, devicetree
Cc: Alistair Francis
On 23/03/2023 14:52, Maximilian Weigand wrote:
> The touchscreen can be used to wake up systems from sleep and therefore
> the wakeup-source entry should be included in the documentation.
Use subject prefixes matching the subsystem (which you can get for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching).
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC. It might happen, that command when run on an older
kernel, gives you outdated entries. Therefore please be sure you base
your patches on recent Linux kernel.
>
> Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
> Reviewed-by: Alistair Francis <alistair@alistair23.me>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/6] Input: cyttsp5: remove unused code
2023-03-23 13:52 ` [PATCH 2/6] Input: cyttsp5: remove unused code Maximilian Weigand
2023-03-23 15:18 ` kernel test robot
@ 2023-03-27 15:17 ` kernel test robot
1 sibling, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-03-27 15:17 UTC (permalink / raw)
To: Maximilian Weigand, Linus Walleij, Dmitry Torokhov, linux-input,
linux-kernel, devicetree
Cc: llvm, oe-kbuild-all, Maximilian Weigand, Alistair Francis
Hi Maximilian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on dtor-input/next]
[also build test WARNING on dtor-input/for-linus linus/master v6.3-rc4 next-20230327]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20230323135205.1160879-3-mweigand%40mweigand.net
patch subject: [PATCH 2/6] Input: cyttsp5: remove unused code
config: i386-randconfig-a011-20230327 (https://download.01.org/0day-ci/archive/20230327/202303272323.nRNi9Sso-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/4358a60821eb8149dabed197c09d3c0eab63bf38
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
git checkout 4358a60821eb8149dabed197c09d3c0eab63bf38
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/input/touchscreen/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303272323.nRNi9Sso-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/input/touchscreen/cyttsp5.c:604:5: warning: unused variable 'cmd' [-Wunused-variable]
u8 cmd[2];
^
1 warning generated.
vim +/cmd +604 drivers/input/touchscreen/cyttsp5.c
5b0c03e24a061f Alistair Francis 2022-10-31 598
5b0c03e24a061f Alistair Francis 2022-10-31 599 static int cyttsp5_get_hid_descriptor(struct cyttsp5 *ts,
5b0c03e24a061f Alistair Francis 2022-10-31 600 struct cyttsp5_hid_desc *desc)
5b0c03e24a061f Alistair Francis 2022-10-31 601 {
5b0c03e24a061f Alistair Francis 2022-10-31 602 struct device *dev = ts->dev;
5b0c03e24a061f Alistair Francis 2022-10-31 603 int rc;
5b0c03e24a061f Alistair Francis 2022-10-31 @604 u8 cmd[2];
5b0c03e24a061f Alistair Francis 2022-10-31 605
5b0c03e24a061f Alistair Francis 2022-10-31 606 rc = cyttsp5_write(ts, HID_DESC_REG, NULL, 0);
5b0c03e24a061f Alistair Francis 2022-10-31 607 if (rc) {
5b0c03e24a061f Alistair Francis 2022-10-31 608 dev_err(dev, "Failed to get HID descriptor, rc=%d\n", rc);
5b0c03e24a061f Alistair Francis 2022-10-31 609 return rc;
5b0c03e24a061f Alistair Francis 2022-10-31 610 }
5b0c03e24a061f Alistair Francis 2022-10-31 611
5b0c03e24a061f Alistair Francis 2022-10-31 612 rc = wait_for_completion_interruptible_timeout(&ts->cmd_done,
5b0c03e24a061f Alistair Francis 2022-10-31 613 msecs_to_jiffies(CY_HID_GET_HID_DESCRIPTOR_TIMEOUT_MS));
5b0c03e24a061f Alistair Francis 2022-10-31 614 if (rc <= 0) {
5b0c03e24a061f Alistair Francis 2022-10-31 615 dev_err(ts->dev, "HID get descriptor timed out\n");
5b0c03e24a061f Alistair Francis 2022-10-31 616 rc = -ETIMEDOUT;
5b0c03e24a061f Alistair Francis 2022-10-31 617 return rc;
5b0c03e24a061f Alistair Francis 2022-10-31 618 }
5b0c03e24a061f Alistair Francis 2022-10-31 619
5b0c03e24a061f Alistair Francis 2022-10-31 620 memcpy(desc, ts->response_buf, sizeof(*desc));
5b0c03e24a061f Alistair Francis 2022-10-31 621
5b0c03e24a061f Alistair Francis 2022-10-31 622 /* Check HID descriptor length and version */
5b0c03e24a061f Alistair Francis 2022-10-31 623 if (le16_to_cpu(desc->hid_desc_len) != sizeof(*desc) ||
5b0c03e24a061f Alistair Francis 2022-10-31 624 le16_to_cpu(desc->bcd_version) != HID_VERSION) {
5b0c03e24a061f Alistair Francis 2022-10-31 625 dev_err(dev, "Unsupported HID version\n");
5b0c03e24a061f Alistair Francis 2022-10-31 626 return -ENODEV;
5b0c03e24a061f Alistair Francis 2022-10-31 627 }
5b0c03e24a061f Alistair Francis 2022-10-31 628
5b0c03e24a061f Alistair Francis 2022-10-31 629 return 0;
5b0c03e24a061f Alistair Francis 2022-10-31 630 }
5b0c03e24a061f Alistair Francis 2022-10-31 631
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures
2023-03-23 13:52 ` [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures Maximilian Weigand
@ 2023-03-27 18:11 ` kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-03-27 18:11 UTC (permalink / raw)
To: Maximilian Weigand, Linus Walleij, Dmitry Torokhov, linux-input,
linux-kernel, devicetree
Cc: llvm, oe-kbuild-all, Maximilian Weigand, Alistair Francis
Hi Maximilian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on dtor-input/next]
[also build test WARNING on dtor-input/for-linus linus/master v6.3-rc4 next-20230327]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20230323135205.1160879-7-mweigand%40mweigand.net
patch subject: [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures
config: i386-randconfig-a011-20230327 (https://download.01.org/0day-ci/archive/20230328/202303280119.UlD7s4Rk-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/9988f8132aa9a4e8c9f0eb3093b06a9f02d90ec9
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Maximilian-Weigand/Input-cyttsp5-fix-array-length/20230323-215957
git checkout 9988f8132aa9a4e8c9f0eb3093b06a9f02d90ec9
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/input/touchscreen/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303280119.UlD7s4Rk-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/input/touchscreen/cyttsp5.c:581:6: warning: unused variable 'crc' [-Wunused-variable]
u16 crc;
^
drivers/input/touchscreen/cyttsp5.c:620:6: warning: unused variable 'crc' [-Wunused-variable]
u16 crc;
^
drivers/input/touchscreen/cyttsp5.c:700:5: warning: unused variable 'cmd' [-Wunused-variable]
u8 cmd[2];
^
>> drivers/input/touchscreen/cyttsp5.c:1004:6: warning: unused variable 'error' [-Wunused-variable]
int error;
^
>> drivers/input/touchscreen/cyttsp5.c:1003:21: warning: unused variable 'client' [-Wunused-variable]
struct i2c_client *client = to_i2c_client(dev);
^
5 warnings generated.
vim +/crc +581 drivers/input/touchscreen/cyttsp5.c
576
577 static int cyttsp5_enter_sleep(struct cyttsp5 *ts)
578 {
579 int rc;
580 u8 cmd[2];
> 581 u16 crc;
582
583 memset(cmd, 0, sizeof(cmd));
584
585 SET_CMD_REPORT_TYPE(cmd[0], 0);
586 SET_CMD_REPORT_ID(cmd[0], HID_POWER_SLEEP);
587 SET_CMD_OPCODE(cmd[1], HID_CMD_SET_POWER);
588
589 rc = cyttsp5_write(ts, HID_COMMAND_REG, cmd, 2);
590 if (rc) {
591 dev_err(ts->dev, "Failed to write command %d", rc);
592 return rc;
593 }
594
595 rc = wait_for_completion_interruptible_timeout(&ts->cmd_command_done,
596 msecs_to_jiffies(CY_HID_SET_POWER_TIMEOUT));
597 if (rc <= 0) {
598 dev_err(ts->dev, "HID output cmd execution timed out\n");
599 rc = -ETIMEDOUT;
600 return rc;
601 }
602
603 /* validate */
604 if ((ts->response_buf[2] != HID_RESPONSE_REPORT_ID)
605 || ((ts->response_buf[3] & 0x3) != HID_POWER_SLEEP)
606 || ((ts->response_buf[4] & 0xF) != HID_CMD_SET_POWER)) {
607 rc = -EINVAL;
608 dev_err(ts->dev, "Validation of the sleep response failed\n");
609 return rc;
610 }
611
612 return 0;
613
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example
2023-03-23 13:52 ` [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example Maximilian Weigand
2023-03-24 9:41 ` Krzysztof Kozlowski
@ 2023-03-29 8:43 ` Linus Walleij
1 sibling, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2023-03-29 8:43 UTC (permalink / raw)
To: Maximilian Weigand
Cc: Dmitry Torokhov, linux-input, linux-kernel, devicetree, Alistair Francis
On Thu, Mar 23, 2023 at 2:52 PM Maximilian Weigand
<mweigand@mweigand.net> wrote:
> Triggering the interrupt of the IRQ_TYPE_LEVEL_LOW type can lead to
> probing issues with the device for the current driver (encountered on
> the Pine64 PineNote). Basically the interrupt would be triggered before
> certain commands were sent to the device, leading to a race between the
> device responding fast enough and the irq handler fetching a data frame
> from it. Actually all devices currently using the driver already use a
> falling edge trigger.
>
> Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
> Reviewed-by: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation
2023-03-23 13:52 ` [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation Maximilian Weigand
2023-03-24 9:42 ` Krzysztof Kozlowski
@ 2023-03-29 8:43 ` Linus Walleij
1 sibling, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2023-03-29 8:43 UTC (permalink / raw)
To: Maximilian Weigand
Cc: Dmitry Torokhov, linux-input, linux-kernel, devicetree, Alistair Francis
On Thu, Mar 23, 2023 at 2:52 PM Maximilian Weigand
<mweigand@mweigand.net> wrote:
> The touchscreen can be used to wake up systems from sleep and therefore
> the wakeup-source entry should be included in the documentation.
>
> Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
> Reviewed-by: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-03-29 8:44 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-23 13:51 [PATCH 0/6] Small fixes to the cyttsp5 touchscreen driver Maximilian Weigand
2023-03-23 13:52 ` [PATCH 1/6] Input: cyttsp5: fix array length Maximilian Weigand
2023-03-23 13:52 ` [PATCH 2/6] Input: cyttsp5: remove unused code Maximilian Weigand
2023-03-23 15:18 ` kernel test robot
2023-03-27 15:17 ` kernel test robot
2023-03-23 13:52 ` [PATCH 3/6] devicetree: input: cypress,tt21000: fix interrupt type in dts example Maximilian Weigand
2023-03-24 9:41 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
2023-03-23 13:52 ` [PATCH 4/6] Input: cyttsp5: properly initialize the device as a pm wakeup device Maximilian Weigand
2023-03-23 13:52 ` [PATCH 5/6] devicetree: input: cypress,tt21000: add wakeup-source entry to documentation Maximilian Weigand
2023-03-24 9:42 ` Krzysztof Kozlowski
2023-03-29 8:43 ` Linus Walleij
2023-03-23 13:52 ` [PATCH 6/6] Input: cyttsp5: implement proper sleep and wakeup procedures Maximilian Weigand
2023-03-27 18:11 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).