Linux/linux 7574c0ddrivers/i2c i2c-core-acpi.c

i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present

Many cheap devices use Silead touchscreen controllers. Testing has shown
repeatedly that these touchscreen controllers work fine at 400KHz, but for
unknown reasons do not work properly at 100KHz. This has been seen on
both ARM and x86 devices using totally different i2c controllers.

On some devices the ACPI tables list another device at the same I2C-bus
as only being capable of 100KHz, testing has shown that these other
devices work fine at 400KHz (as can be expected of any recent I2C hw).

This commit makes i2c_acpi_find_bus_speed() always return 400KHz if a
Silead touchscreen controller is present, fixing the touchscreen not
working on devices which ACPI tables' wrongly list another device on the
same bus as only being capable of 100KHz.

Specifically this fixes the touchscreen on the Jumper EZpad 6 m4 not
working.

Reported-by: youling 257 <youling257 at gmail.com>
Tested-by: youling 257 <youling257 at gmail.com>
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
Reviewed-by: Jarkko Nikula <jarkko.nikula at linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg at linux.intel.com>
[wsa: rewording warning a little]
Signed-off-by: Wolfram Sang <wsa at the-dreams.de>
Cc: stable at kernel.org
DeltaFile
+27-1drivers/i2c/i2c-core-acpi.c
+27-11 files

UnifiedSplitRaw