zephyrproject-rtos / zephyr

Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
https://docs.zephyrproject.org
Apache License 2.0
10.51k stars 6.43k forks source link

cst816s not working with Waveshare 1.69inch Touch LCD Module #75514

Open ljunquera opened 2 months ago

ljunquera commented 2 months ago

Describe the bug I am using a Waveshare 1.69inch Touch LCD Module 1 which states it uses a cst816s driver for touch, yet in my testing swipes and button presses are not being recognized properly. I don't see any one (1) events which seem to indicate a release.

There are numerous examples for other platforms using this Waveshare: Raspberry Pi Pico User Guide, ESP32S3 User Guide, STM32 User Guide, and Arduino User Guide. I was looking to create one for Zephyr. They have samples for each and cst816 reference documentation.

Please also mention any information which could help others to understand the problem you're facing:

To Reproduce Steps to reproduce the behavior:

  1. I have changed the lvgl sample to test for swipes.
  2. I have added printk statements to the cst816 driver:
    if (pressed) {
        printk("pressed event: %d, row: %d, col: %d\n", event, row, col);
        input_report_abs(dev, INPUT_ABS_X, col, false, K_FOREVER);
        input_report_abs(dev, INPUT_ABS_Y, row, false, K_FOREVER);
        input_report_key(dev, INPUT_BTN_TOUCH, 1, true, K_FOREVER);
    } else {
        printk("not pressed event: %d, row: %d, col: %d\n", event, row, col);
        input_report_key(dev, INPUT_BTN_TOUCH, 0, true, K_FOREVER);
    }
    1. In the driver I have #define CST816S_CHIP_ID 0xB5 and commented out //#define CST816S_CHIP_ID 0xB4 which is a recent change.

Expected behavior

Impact Show stopper currently

Logs and console output This is a button press (with printk in interrupt):

cst816s_isr_handler
cst816s_isr_handler
pressed event: 0, row: 86, col: 109
pressed event: 0, row: 86, col: 109
cst816s_isr_handler
cst816s_isr_handler
pressed event: 2, row: 86, col: 109
pressed event: 2, row: 86, col: 109
cst816s_isr_handler
cst816s_isr_handler
pressed event: 2, row: 86, col: 109
[00:00:05.567,932] <err> cst816s: Could not read x data

This is a swipe from the left most of the screen to the right in the midpoint vertically of a 240x280 screen (removed the pintk from interrup):

*** Booting nRF Connect SDK v3.5.99-ncs1-1 ***
pressed event: 0, row: 129, col: 20
pressed event: 0, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 2, row: 129, col: 20
pressed event: 0, row: 189, col: 200
pressed event: 0, row: 189, col: 200
pressed event: 2, row: 189, col: 200
pressed event: 2, row: 189, col: 200
pressed event: 2, row: 189, col: 201
pressed event: 2, row: 189, col: 201
pressed event: 2, row: 188, col: 203
pressed event: 2, row: 188, col: 203
pressed event: 2, row: 187, col: 205
pressed event: 2, row: 187, col: 205
[00:00:01.794,952] <dbg> app: on_lvgl_screen_gesture_event_callback: Gesture event detected 12
[00:00:01.794,982] <dbg> app: handle_screen_gesture: BOTTOM gesture detected

Environment (please complete the following information):

**Additional Information -Waveshare provided me with some documentation on cst816d and cst816t, but support said the driver was cst816s.

fabiobaltieri commented 2 months ago

I don't have any hardware to check these, @joelguittet could you verify that release events work on your boards?

@ljunquera that [00:00:05.567,932] <err> cst816s: Could not read x data may be the handler failing on the release event, can you try to figure out more about the error? Is it a NACK from the device?

ljunquera commented 2 months ago

I can send you a device if you want.

fabiobaltieri commented 2 months ago

I can send you a device if you want.

I'd rather you send me a PR with the fix instead. :-)

ljunquera commented 2 months ago

How can I get you more information? I can use a logic analyzer or add more debug statements?

fabiobaltieri commented 2 months ago

Sure grab a trace or add some prints, printing the i2c error code in the log could be a start. That said, this is a contributed driver so you'll have to contribute the fix yourself (or find some other contributor to do it).

ljunquera commented 1 month ago

@fabiobaltieri do you know anybody who would be interested in contracting to do this?

ljunquera commented 1 month ago

Here are some testing results which were similar to the waveshare but with P169H002-CTP, which I think the Waveshare used: Testing Image small

Gesture Results
1 pressed event: 0, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 2, row: 33, col: 52
pressed event: 0, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 69
pressed event: 2, row: 278, col: 68
2 pressed event: 0, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118v
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 2, row: 33, col: 118
pressed event: 0, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
pressed event: 2, row: 278, col: 104
3 pressed event: 0, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 2, row: 51, col: 183
pressed event: 0, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
pressed event: 2, row: 278, col: 188
4 pressed event: 0, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 151, col: 218
pressed event: 2, row: 150, col: 218
pressed event: 0, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 94, col: 157
pressed event: 2, row: 93, col: 157
pressed event: 2, row: 92, col: 157
pressed event: 2, row: 91, col: 156
pressed event: 0, row: 81, col: 80
pressed event: 2, row: 81, col: 80
pressed event: 2, row: 81, col: 80
pressed event: 2, row: 81, col: 80
pressed event: 2, row: 81, col: 80
pressed event: 2, row: 81, col: 80
pressed event: 2, row: 80, col: 79
pressed event: 2, row: 79, col: 78
pressed event: 2, row: 78, col: 77
pressed event: 2, row: 77, col: 75
5 pressed event: 0, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 2, row: 160, col: 214
pressed event: 0, row: 122, col: 125
pressed event: 2, row: 122, col: 125
pressed event: 2, row: 122, col: 125
pressed event: 2, row: 122, col: 125
pressed event: 2, row: 123, col: 124
pressed event: 2, row: 125, col: 123
pressed event: 2, row: 127, col: 122
pressed event: 2, row: 129, col: 121
pressed event: 2, row: 131, col: 120
pressed event: 2, row: 133, col: 119
pressed event: 0, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
pressed event: 2, row: 160, col: 0
6 pressed event: 0, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 2, row: 241, col: 214
pressed event: 0, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 2, row: 251, col: 155
pressed event: 0, row: 213, col: 77
pressed event: 2, row: 213, col: 77
pressed event: 2, row: 213, col: 77
pressed event: 2, row: 213, col: 77
pressed event: 2, row: 213, col: 77
pressed event: 2, row: 214, col: 77
pressed event: 2, row: 216, col: 77
pressed event: 2, row: 218, col: 77
pressed event: 2, row: 220, col: 77
pressed event: 2, row: 222, col: 77
7 pressed event: 0, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 2, row: 224, col: 186
pressed event: 0, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
pressed event: 2, row: 1, col: 155
8 pressed event: 0, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 2, row: 240, col: 122
pressed event: 0, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
pressed event: 2, row: 1, col: 148
9 pressed event: 0, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 2, row: 260, col: 45
pressed event: 0, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
pressed event: 2, row: 1, col: 87
10 pressed event: 0, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 2, row: 179, col: 7
pressed event: 0, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 2, row: 238, col: 89
pressed event: 0, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
pressed event: 2, row: 238, col: 171
11 pressed event: 0, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 2, row: 144, col: 7
pressed event: 0, row: 161, col: 111
pressed event: 2, row: 161, col: 111
pressed event: 2, row: 161, col: 111
pressed event: 2, row: 161, col: 111
pressed event: 2, row: 160, col: 111
pressed event: 2, row: 159, col: 111
pressed event: 2, row: 158, col: 111
pressed event: 2, row: 157, col: 111
pressed event: 2, row: 156, col: 111
pressed event: 2, row: 156, col: 111
pressed event: 0, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
pressed event: 2, row: 156, col: 237
12 pressed event: 0, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 2, row: 54, col: 6
pressed event: 0, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
pressed event: 2, row: 90, col: 120
13 pressed event: 0, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
pressed event: 2, row: 82, col: 47
14 . pressed event: 0, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
pressed event: 2, row: 104, col: 176
15 pressed event: 0, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
pressed event: 2, row: 163, col: 116
16 pressed event: 0, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
pressed event: 2, row: 228, col: 42
17 pressed event: 0, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
pressed event: 2, row: 238, col: 154
fabiobaltieri commented 1 month ago

@fabiobaltieri do you know anybody who would be interested in contracting to do this?

Not really, try asking in #job-posting on http://chat.zephyrproject.org/

ljunquera commented 1 month ago

It's possible it might be the cst816t. Just a guess but I see that one referenced on one of their pages. Here is a reference to a library I found as well.