Update stmpe.c accept chip ID 0x80 for STMPE610 variants#7068
Open
KingHavok wants to merge 1 commit intoraspberrypi:rpi-6.12.yfrom
Open
Update stmpe.c accept chip ID 0x80 for STMPE610 variants#7068KingHavok wants to merge 1 commit intoraspberrypi:rpi-6.12.yfrom
KingHavok wants to merge 1 commit intoraspberrypi:rpi-6.12.yfrom
Conversation
Some third-party STMPE610 clones (such as those used on Duinotech XC9022
2.8" TFT HATs sold by Jaycar Electronics) report a chip ID value of 0x80
instead of the expected 0x81. The current stmpe driver rejects these
devices with:
stmpe-spi spi0.1: unknown chip id: 0x80
probe with driver stmpe-spi failed with error -22
This prevents the touchscreen sub-driver (stmpe-ts) from binding, leaving
the resistive touch panel non-functional even though the hardware is
otherwise compatible.
The fix is trivial: relax the ID check in stmpe_probe_id() to also accept
0x80 as a valid chip ID. With this change applied, the touchscreen
initialises correctly and delivers input events as expected. Tested on a
Raspberry Pi 5 running Raspberry Pi OS Bookworm with an XC9022 HAT.
This quirk has no effect on genuine STMPE610 parts (which continue to
report 0x81) and should not impact other STMPE variants.
Contributor
|
If the ID value doesn't match then it isn't a STMPE610, and it should be using a compatible string that matches what it actually is rather than overloading the STMPE610 one. I would expect to see a new enum value defined in Ideally all this should go upstream to the mainline Linux kernel as we have made no downstream modifications to it so far, and accepting patches increases the maintenance burden. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some third-party STMPE610 clones (such as those used on Duinotech XC9022 2.8" TFT HATs sold by Jaycar Electronics) report a chip ID value of 0x80 instead of the expected 0x81. The current stmpe driver rejects these devices with:
This prevents the touchscreen sub-driver (stmpe-ts) from binding, leaving the resistive touch panel non-functional even though the hardware is otherwise compatible.
The fix is trivial: relax the ID check in stmpe_probe_id() to also accept 0x80 as a valid chip ID. With this change applied, the touchscreen initialises correctly and delivers input events as expected. Tested on a Raspberry Pi 5 running Raspberry Pi OS Bookworm with an XC9022 HAT.
This quirk should not impact other STMPE variants which continue to report 0x81.