Eugen Hristev
August 21, 2023
Reading time:
In Linux, the Industrial Input/Output subsystem manages devices like Analog to Digital Converters, Light sensors, accelerometers, etc.
On the other hand, the Input subsystem handles keyboards, mice, touchscreens, and any device that has a human interface.
What happens when you have a device that is in a sense ADC, and also a touchscreen? Basically, an ADC (hence an IIO device) that can be connected to a touchscreen (hence an input device), measures the position or the point where you touch with analog-to-digital conversion. The end result, the position itself, is the kind of information that is meaningful for the kernel as user interaction and as user input.
You could think of an MFD, a multi-function device, but this is not really the case. An MFD does two distinct things, unrelated, under the same umbrella. This ADC touchscreen does just one thing, getting touch information through an ADC interface.
The GRTS (generic resistive touchscreen) driver does the bridging between an ADC touchscreen and the input subsystem. What happens is that the ADC device registers channels for the touch position (X/Y coordinates, touch pressure), which are being read by the GRTS as a consumer for the IIO, and then the GRTS registers a touchscreen in the kernel, and reports touch data further on touch events.
GRTS is not a driver for a piece of hardware, but rather a middleman in the kernel, acting as a bridge between two subsystems. In Linux, you should not have an IIO driver that acts as a touchscreen or the other way around. Imagine what would happen if a PMIC driver would start registering a video display driver. Things would easily turn into a mess!
I wrote the GRTS driver in 2018 and I am still listed as an active maintainer for it. It appears it has also been used on imx6 since its inception.
13/09/2023
Text-to-speech (TTS) models are playing a transformative role, from enriching audiobooks to enhancing podcasts and even improving interactions…
21/08/2023
In Linux, the Industrial Input/Output subsystem manages devices like Analog to Digital Converters, Light sensors, accelerometers, etc. On…
10/08/2023
Collabora's main testing laboratory has grown to automate testing on over 150 devices of about 30 different types. The lab receives job…
09/08/2023
Rust is a modern language known for its memory safety, efficiency, and wide range of high-level features. But many beginners also run into…
03/08/2023
At Collabora, we're committed to bringing people together. That's why we're pushing state-of-the-art machine-learning techniques like Large…
31/07/2023
I have been working on getting U-boot upstream up to speed for the Radxa Rock-5B Rockchip RK3588 board. One of the cool features that I…
Comments (0)
Add a Comment