Я работаю над встроенной системой Linux (Kernel-5.10.188), где есть сенсорный экран, чья сенсорная панель IC-ST1232.
Я хочу прочитать версию ST1232, прочитав его I2C Регистр 0x0, но я не смог сделать это в его зондировании следующим образом. его обработчик IRQ, который работал следующим образом. < /p>
Я не знаю, почему он не смог прочитать регистр i2c в функции _probe, в то время как он преуспел в обработчике прерываний, что я упустил при чтении регистра i2c?
Я работаю над встроенной системой Linux (Kernel-5.10.188), где есть сенсорный экран, чья сенсорная панель IC-ST1232.
Я хочу прочитать версию ST1232, прочитав его I2C Регистр 0x0, но я не смог сделать это в его зондировании следующим образом. его обработчик IRQ, который работал следующим образом. < /p> [code]--- a/kernel/kernel-5.10/drivers/input/touchscreen/st1232.c +++ b/kernel/kernel-5.10/drivers/input/touchscreen/st1232.c @@ -45,9 +45,36 @@ struct st1232_ts_data { struct gpio_desc *reset_gpio; const struct st_chip_info *chip_info; int read_buf_len; + u32 fw_rev; u8 *read_buf; };
+ error = st1232_ts_read_ver(ts); + memcpy(&ts->input_dev->id.version, &ts->fw_rev, 2); + printk("xxxxxxxxxxxxx fw_rev: 0x%x, error: %d\n", ts->fw_rev, error); return 0; } < /code> Я получил следующий журнал ядра. < /p> # dmesg | grep xxxx [ 1.150101] xxxxxxxxxxxxx fw_rev: 0x0, error: -145 [ 1.195555] xxxxxxxxxxxxx fw_rev: 0x6, error: 0 [/code] Я не знаю, почему он не смог прочитать регистр i2c в функции _probe, в то время как он преуспел в обработчике прерываний, что я упустил при чтении регистра i2c?