Comments (9)
You can reproduce this issue manually by:
echo 1 | sudo tee /sys/kernel/debug/ipts/ipts_stop
echo 1 | sudo tee /sys/kernel/debug/ipts/ipts_start
from chromeos-kernel-linux-surface.
# evtest output on Arch Linux
$ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: Lid Switch
/dev/input/event1: Video Bus
/dev/input/event2: Surface Pro 3/4 Buttons
/dev/input/event3: PC Speaker
/dev/input/event4: HDA Intel PCH Mic
/dev/input/event5: HDA Intel PCH Headphone
/dev/input/event6: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event7: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event8: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event9: HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event10: HDA Intel PCH HDMI/DP,pcm=10
/dev/input/event11: ipts 1B96:005E
/dev/input/event12: ipts 1B96:005E
/dev/input/event13: ipts 1B96:005E UNKNOWN
/dev/input/event14: ipts 1B96:005E
/dev/input/event15: ipts 1B96:005E
/dev/input/event16: ipts 1B96:005E UNKNOWN
/dev/input/event17: ydotoold virtual device
/dev/input/event18: Simulated Right Button
/dev/input/event19: ipts 1B96:005E
/dev/input/event20: ipts 1B96:005E
/dev/input/event21: ipts 1B96:005E UNKNOWN
/dev/input/event22: Microsoft Surface Keyboard
/dev/input/event23: Microsoft Surface Keyboard Consumer Control
/dev/input/event24: Microsoft Surface Keyboard Touchpad
Select the device event number [0-24]: ^C
After ipts_stop
/ipts_start
cycle, old IPTS devices will not be removed. (11
to 16
)
This behavior might confuse the Chromium OS.
from chromeos-kernel-linux-surface.
Whereas unloading IPTS modules (sudo modprobe -r ipts_surface
) will remove old IPTS devices as expected.
from chromeos-kernel-linux-surface.
ipts_hid_init()
will be called fromipts_handle_resp()
[ipts-msg-handler.c] when we load intel_ipts module and it will register hid devices.ipts_hid_release()
will be called fromipts_mei_cl_remove()
[ipts-mei.c] when we unload intel_ipts module and it will unregister the hid devices. But not called fromipts_stop()
So, the possible ways to fix I think are:
- call
ipts_mei_cl_exit()
when the reset will take place instead of just callingipts_stop()
- move
ipts_hid_release()
fromipts_mei_cl_remove()
toipts_stop()
from chromeos-kernel-linux-surface.
The flow until ipts_hid_init()
will be called when we load intel_ipts module:
ipts_mei_cl_probe()
👇
init_work_func()
👇
ipts_start()
👇
send a commend: ipts_handle_cmd(ipts, TOUCH_SENSOR_NOTIFY_DEV_READY_CMD, NULL, 0);
👇
The response (TOUCH_SENSOR_NOTIFY_DEV_READY_RSP
) will be caught in ipts_handle_resp()
👇
send a commend: ipts_handle_cmd(ipts, TOUCH_SENSOR_GET_DEVICE_INFO_CMD, NULL, 0);
👇
The response (TOUCH_SENSOR_GET_DEVICE_INFO_RSP
) will be caught in ipts_handle_resp()
👇
in the switch statement, ipts_hid_init()
will be called
The flow until ipts_hid_release()
will be called when we unload intel_ipts module:
ipts_mei_cl_exit()
👇
mei_cldev_driver_unregister()
👇
ipts_mei_cl_remove()
👇
(ipts_stop()
will also be called, then) ipts_hid_release()
will be called
from chromeos-kernel-linux-surface.
So, more concisely,
ipts_mei_cl_probe()
👉ipts_start()
👉ipts_hid_init()
ipts_mei_cl_exit()
👉ipts_hid_release()
When considering the fact that ipts_start()
will finally call ipts_hid_init()
, I'd expect ipts_stop()
will also finally call ipts_hid_release()
, but it will not.
from chromeos-kernel-linux-surface.
I need to confirm next that moving ipts_hid_release()
from ipts_mei_cl_remove()
to ipts_stop()
will really fix this issue after the reset happened.
from chromeos-kernel-linux-surface.
Or adding ipts_hid_release()
to ipts_restart()
may be another option.
from chromeos-kernel-linux-surface.
Fortunately, I don't see this issue for a long time. Closing for now.
from chromeos-kernel-linux-surface.
Related Issues (20)
- sysfs sensor values not updated on Surface 3 HOT 2
- i2c_hid: sensor device: output "failed to retrieve report from device" repeatedly after suspend HOT 2
- GENTOO: built kernel package contains debug files HOT 1
- GPIO-related issues (touchscreen input & some tablet buttons not working) after chromeos-4.19 4.19.104 HOT 3
- Sensors not working; caused by "FROMLIST: Input: atkbd: Receive and use physcode->keycode mapping from FW" (?) HOT 4
- config-general-surface: ACPI error messages appear continuously on dmesg HOT 3
- config-minimal-surface: no text output on initramfs (when using with brunch) HOT 1
- wifi/bt unstable when using with iwl7000 HOT 18
- config-minimal-surface: can't sign kernel for secure boot HOT 1
- no vmlinuz in syslinux/ while applying kernel HOT 2
- chromeos-5.4: tpm_tis causes kernel oops HOT 4
- Direct firmware load for *firmware file* failed with error -2 HOT 1
- chromeos-4.19: can't enable DMA for surface3-spi
- chromeos-5.4: backlight not adjustable HOT 4
- Chrome OS Flex? HOT 1
- Auto-rotation not working HOT 2
- Auto mode change into tablet_mode not working HOT 2
- Taking a screenshot using Pow+VolDown not working HOT 3
- BYT/CHT: backlight not adjustable when i915 is built-in (driver initialization order, pwm vs i915) HOT 2
- chrome://flags/ page not working with hardware TPM
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chromeos-kernel-linux-surface.