Accessing this map via I²C is the key to configuration, calibration, and raw data acquisition. This article provides an exhaustive deep dive into the GT911 register map, from basic addressing to advanced gesture recognition.
Contains touch status and X/Y coordinates for up to 5 points. Command Register Used for testing, calibration, and entering sleep modes. 0x8800 – 0x897F Key Information Reads data from capacitive virtual keys (if implemented). 1. Configuration Registers (0x8040 – 0x813F)
ESD protection mechanism; drivers should write this value and check it regularly to ensure the chip hasn't reset due to electrostatic discharge. 2. Configuration Registers (0x8047 – 0x80FF)
This block defines the "personality" of the touch panel. It contains parameters for screen resolution (X/Y output), touch thresholds (the sensitivity to a finger press), and noise suppression limits. Modifying these registers allows the controller to adapt to different physical glass thicknesses or environmental interference.
int X = ( (regs[0x8012] & 0x0F) << 8 ) | regs[0x8011]; int Y = ( (regs[0x8014] & 0x0F) << 8 ) | regs[0x8013];
However, Goodix operated under a strict "NDA-only" policy for their datasheets. The official register map was a guarded secret, available only to large manufacturers. This is the story of how that map was drawn.
If Bit 7 is 0 , abort the read cycle and wait for the next interrupt.
1 means new touch data is ready; 0 means data is old or unread.
A 16-bit value specifying the horizontal resolution of the LCD screen (Low Byte at 0x8048 , High Byte at 0x8049 ).
bytes sequentially from 0x814F to fetch the raw pixel locations.
Detect a state change on the physical INT pin (configured to trigger on the edge specified in 0x804D ). Read Status: Perform an I2C read from address 0x8140 .
This comprehensive guide breaks down the memory architecture of the GT911, exploring the crucial register segments required to write a high-performance touch driver from scratch. Hardware Layer: Addressing and Timings
Perform a sequential I2C burst read starting from 0x8150 for (
Controls touch orientation, swapping X/Y axes, and mirroring options. Bit 3: Swap X and Y axes. Bit 2: Reverse X axis direction. Bit 1: Reverse Y axis direction.
By adjusting the "Large Area Touch" thresholds in the configuration block, one can program the GT911 to ignore a resting palm while still tracking a fingertip.
The breakthrough came from the open-source community. As Android devices began shipping with Goodix controllers, Linux kernel developers needed drivers. Through leaks, NDA breaches, and sheer persistence, the register map began to surface in public source code.