A jo kurva anyjat, sikerult mukodesre birni.
xiaomi-tulip:~$ sudo dmesg | grep nvt
doas (user@xiaomi-tulip) password:
[ 7.949189] novatek-nvt-ts 0-0001: probing in normal mode
[ 7.964626] novatek-nvt-ts 0-0001: supply vcc not found, using dummy regulator
[ 8.261380] novatek-nvt-ts 0-0001: Detected 1080x2280 touchscreen with 10 max touches
[ 12.534053] novatek-nvt-ts 0-0001: Error reading from 0x00: -6
xiaomi-tulip:~$
A sikeres patch:
--- a/drivers/input/touchscreen/novatek-nvt-ts.c 2025-10-20 14:02:37.000000000 +0200
+++ b/drivers/input/touchscreen/novatek-nvt-ts.c 2025-12-23 17:38:44.591294865 +0100
@@ -30,7 +30,7 @@
#define NVT_TS_PARAMS_WAKE_TYPE 0x0c
#define NVT_TS_PARAMS_CHIP_ID 0x0e
#define NVT_TS_PARAMS_SIZE 0x0f
-
+/* HACK FOR NOVATEK NT36672A */
#define NVT_TS_MAX_TOUCHES 10
#define NVT_TS_MAX_SIZE 4096
@@ -258,15 +258,35 @@
height = get_unaligned_be16(&data->buf[NVT_TS_PARAMS_HEIGHT]);
data->max_touches = data->buf[NVT_TS_PARAMS_MAX_TOUCH];
irq_type = data->buf[NVT_TS_PARAMS_IRQ_TYPE];
-
- if (width > NVT_TS_MAX_SIZE || height >= NVT_TS_MAX_SIZE ||
- data->max_touches > NVT_TS_MAX_TOUCHES ||
- irq_type >= ARRAY_SIZE(nvt_ts_irq_type) ||
- data->buf[NVT_TS_PARAMS_WAKE_TYPE] != chip->wake_type ||
- data->buf[NVT_TS_PARAMS_CHIP_ID] != chip->chip_id) {
- dev_err(dev, "Unsupported touchscreen parameters: %*ph\n",
- NVT_TS_PARAMS_SIZE, data->buf);
- return -EIO;
+ if (data->buf[11] != 0x01) {
+ if (width > NVT_TS_MAX_SIZE || height >= NVT_TS_MAX_SIZE ||
+ data->max_touches > NVT_TS_MAX_TOUCHES ||
+ irq_type >= ARRAY_SIZE(nvt_ts_irq_type) ||
+ data->buf[NVT_TS_PARAMS_WAKE_TYPE] != chip->wake_type ||
+ data->buf[NVT_TS_PARAMS_CHIP_ID] != chip->chip_id) {
+ dev_err(dev, "Unsupported touchscreen parameters: %*ph\n",
+ NVT_TS_PARAMS_SIZE, data->buf);
+ dev_err(dev, "width? %d", width > NVT_TS_MAX_SIZE);
+ dev_err(dev, "height? %d", height > NVT_TS_MAX_SIZE);
+ dev_err(dev, "irq_type? %d", irq_type >= ARRAY_SIZE(nvt_ts_irq_type));
+ dev_err(dev, "wake_type? %d", data->buf[NVT_TS_PARAMS_WAKE_TYPE] != chip->wake_type);
+ dev_err(dev, "chip_id? %d", data->buf[NVT_TS_PARAMS_CHIP_ID] != chip->chip_id);
+ return -EIO;
+ }
+ } else {
+ dev_dbg(dev, "!!! WAKE_TYPE HACK FOR NOVATEK NT36672A !!! wake_type? %d", data->buf[NVT_TS_PARAMS_WAKE_TYPE]);
+ if (width > NVT_TS_MAX_SIZE || height >= NVT_TS_MAX_SIZE ||
+ data->max_touches > NVT_TS_MAX_TOUCHES ||
+ irq_type >= ARRAY_SIZE(nvt_ts_irq_type) ||
+ data->buf[NVT_TS_PARAMS_CHIP_ID] != chip->chip_id) {
+ dev_err(dev, "Unsupported touchscreen parameters: %*ph\n",
+ NVT_TS_PARAMS_SIZE, data->buf);
+ dev_err(dev, "width? %d", width > NVT_TS_MAX_SIZE);
+ dev_err(dev, "height? %d", height > NVT_TS_MAX_SIZE);
+ dev_err(dev, "irq_type? %d", irq_type >= ARRAY_SIZE(nvt_ts_irq_type));
+ dev_err(dev, "chip_id? %d", data->buf[NVT_TS_PARAMS_CHIP_ID] != chip->chip_id);
+ return -EIO;
+ }
}
dev_info(dev, "Detected %dx%d touchscreen with %d max touches\n",
|