Hans de Goede
cec4c3810b
Input: silead - add workaround for x86 BIOS-es which bring the chip up in a stuck state
...
[ Upstream commit e479187748a8f151a85116a7091c599b121fdea5 ]
Some buggy BIOS-es bring up the touchscreen-controller in a stuck
state where it blocks the I2C bus. Specifically this happens on
the Jumper EZpad 7 tablet model.
After much poking at this problem I have found that the following steps
are necessary to unstuck the chip / bus:
1. Turn off the Silead chip.
2. Try to do an I2C transfer with the chip, this will fail in response to
which the I2C-bus-driver will call: i2c_recover_bus() which will unstuck
the I2C-bus. Note the unstuck-ing of the I2C bus only works if we first
drop the chip of the bus by turning it off.
3. Turn the chip back on.
On the x86/ACPI systems were this problem is seen, step 1. and 3. require
making ACPI calls and dealing with ACPI Power Resources. This commit adds
a workaround which runtime-suspends the chip to turn it off, leaving it up
to the ACPI subsystem to deal with all the ACPI specific details.
There is no good way to detect this bug, so the workaround gets activated
by a new "silead,stuck-controller-bug" boolean device-property. Since this
is only used on x86/ACPI, this will be set by model specific device-props
set by drivers/platform/x86/touchscreen_dmi.c. Therefor this new
device-property is not documented in the DT-bindings.
Dmesg will contain the following messages on systems where the workaround
is activated:
[ 54.309029] silead_ts i2c-MSSL1680:00: [Firmware Bug]: Stuck I2C bus: please ignore the next 'controller timed out' error
[ 55.373593] i2c_designware 808622C1:04: controller timed out
[ 55.582186] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x80360000
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210405202745.16777-1-hdegoede@redhat.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-22 11:38:28 +02:00
..
accessibility
acpi
ACPI: scan: Fix a memory leak in an error handling path
2021-05-19 10:08:30 +02:00
amba
amba: Fix resource leak for drivers without .remove
2021-03-04 10:26:32 +01:00
android
ata
ata: libahci_platform: fix IRQ check
2021-05-14 09:44:24 +02:00
atm
atm: idt77252: fix null-ptr-dereference
2021-03-30 14:35:21 +02:00
auxdisplay
auxdisplay: ht16k33: Fix refresh rate handling
2021-03-04 10:26:30 +01:00
base
PM: runtime: Fix unpaired parent child_count for force_resume
2021-05-19 10:08:20 +02:00
bcma
block
nbd: Fix NULL pointer in flush_workqueue
2021-05-19 10:08:30 +02:00
bluetooth
Bluetooth: hci_h5: Set HCI_QUIRK_SIMULTANEOUS_DISCOVERY for btrtl
2021-03-07 12:20:44 +01:00
bus
bus: qcom: Put child node before return
2021-05-14 09:44:19 +02:00
cdrom
char
tpm, tpm_tis: Reserve locality in tpm_tis_resume()
2021-05-19 10:08:20 +02:00
clk
clk: exynos7: Mark aclk_fsys1_200 as critical
2021-05-19 10:08:33 +02:00
clocksource
clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined
2021-03-04 10:26:29 +01:00
connector
counter
counter: stm32-timer-cnt: fix ceiling miss-alignment with reload register
2021-04-14 08:24:09 +02:00
cpufreq
cpufreq: armada-37xx: Fix determining base CPU frequency
2021-05-14 09:44:21 +02:00
cpuidle
crypto
crypto: qat - Fix a double free in adf_create_ring
2021-05-14 09:44:20 +02:00
dax
dca
devfreq
PM / devfreq: Use more accurate returned new_freq as resume_freq
2021-05-14 09:44:20 +02:00
dio
dma
dmaengine: dw-edma: Fix crash on loading/unloading driver
2021-05-22 11:38:28 +02:00
dma-buf
dmabuf: fix use-after-free of dmabuf's file->f_inode
2021-01-12 20:16:23 +01:00
edac
eisa
extcon
extcon: arizona: Fix various races on driver unbind
2021-05-11 14:04:09 +02:00
firewire
firewire: nosy: Fix a use-after-free bug in nosy_ioctl()
2021-04-07 14:47:43 +02:00
firmware
firmware: qcom-scm: Fix QCOM_SCM configuration
2021-05-14 09:44:22 +02:00
fpga
fsi
gnss
gpio
gpio: omap: Save and restore sysconfig
2021-04-28 13:19:14 +02:00
gpu
drm/i915: Avoid div-by-zero on gen2
2021-05-19 10:08:29 +02:00
greybus
hid
HID: plantronics: Workaround for double volume key presses
2021-05-14 09:44:26 +02:00
hsi
HSI: core: fix resource leaks in hsi_add_client_from_dt()
2021-05-14 09:44:25 +02:00
hv
Drivers: hv: vmbus: Increase wait time for VMbus unload
2021-05-14 09:44:22 +02:00
hwmon
hwmon: (occ) Fix poll rate limiting
2021-05-19 10:08:30 +02:00
hwspinlock
hwtracing
intel_th: pci: Add Alder Lake-M support
2021-05-11 14:04:15 +02:00
i2c
i2c: bail out early when RDWR parameters are wrong
2021-05-19 10:08:21 +02:00
i3c
Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register"
2021-05-14 09:44:15 +02:00
ide
scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
2021-01-12 20:16:09 +01:00
idle
iio
iio: tsl2583: Fix division by a zero lux_val
2021-05-19 10:08:31 +02:00
infiniband
RDMA/bnxt_re: Fix a double free in bnxt_qplib_alloc_res
2021-05-14 09:44:32 +02:00
input
Input: silead - add workaround for x86 BIOS-es which bring the chip up in a stuck state
2021-05-22 11:38:28 +02:00
interconnect
interconnect: core: fix error return code of icc_link_destroy()
2021-04-16 11:46:37 +02:00
iommu
iommu/amd: Remove performance counter pre-initialization test
2021-05-19 10:08:22 +02:00
ipack
irqchip
irqchip/gic-v3: Fix OF_BAD_ADDR error handling
2021-05-14 09:44:20 +02:00
isdn
isdn: capi: fix mismatched prototypes
2021-05-22 11:38:27 +02:00
leds
leds: trigger: fix potential deadlock with libata
2021-02-03 23:25:58 +01:00
lightnvm
lightnvm: fix memory leak when submit fails
2021-01-27 11:47:53 +01:00
macintosh
mailbox
mcb
md
md: Fix missing unused status line of /proc/mdstat
2021-05-14 09:44:13 +02:00
media
media: v4l2-ctrls.c: fix race condition in hdl->requests list
2021-05-14 09:44:24 +02:00
memory
memory: pl353: fix mask of ECC page_size config register
2021-05-14 09:44:19 +02:00
memstick
message
mfd
mfd: stm32-timers: Avoid clearing auto reload register
2021-05-14 09:44:25 +02:00
misc
kgdb: fix gcc-11 warning on indentation
2021-05-22 11:38:27 +02:00
mmc
mmc: sdhci-pci: Add PCI IDs for Intel LKF
2021-05-11 14:04:10 +02:00
mtd
mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init
2021-05-14 09:44:20 +02:00
mux
net
virtio_net: Do not pull payload in skb->head
2021-05-22 11:38:28 +02:00
nfc
nfc: pn533: prevent potential memory corruption
2021-05-14 09:44:27 +02:00
ntb
nubus
nvdimm
libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC
2021-04-21 12:56:16 +02:00
nvme
nvme: do not try to reconfigure APST when the controller is not live
2021-05-19 10:08:33 +02:00
nvmem
nvmem: core: skip child nodes not matching binding
2021-03-04 10:26:37 +01:00
of
Revert "fdt: Properly handle "no-map" field in the memory region"
2021-05-14 09:44:33 +02:00
opp
oprofile
parisc
parport
pci
ACPI / hotplug / PCI: Fix reference count leak in enable_slot()
2021-05-22 11:38:28 +02:00
pcmcia
perf
perf/arm_pmu_platform: Fix error handling
2021-05-11 14:04:06 +02:00
phy
phy: marvell: ARMADA375_USBCLUSTER_PHY should not default to y, unconditionally
2021-05-14 09:44:19 +02:00
pinctrl
pinctrl: ingenic: Improve unreachable code generation
2021-05-22 11:38:27 +02:00
platform
platform/x86: pmc_atom: Match all Beckhoff Automation baytrail boards with critclk_systems DMI table
2021-05-14 09:44:22 +02:00
pnp
power
power: supply: s3c_adc_battery: fix possible use-after-free in s3c_adc_bat_remove()
2021-05-11 14:04:11 +02:00
powercap
pps
ps3
ptp
pwm
pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare()
2021-03-04 10:26:36 +01:00
rapidio
ras
RAS/CEC: Correct ce_add_elem()'s returned values
2021-04-14 08:24:18 +02:00
regulator
regulator: bd9571mwv: Fix AVS and DVFS voltage range
2021-04-14 08:24:13 +02:00
remoteproc
reset
rpmsg
rpmsg: qcom_glink_native: fix error return code of qcom_glink_rx_data()
2021-05-19 10:08:25 +02:00
rtc
rtc: ds1307: Fix wday settings for rx8130
2021-05-19 10:08:26 +02:00
s390
s390/dasd: fix hanging IO request during DASD driver unbind
2021-03-17 17:03:48 +01:00
sbus
scsi
scsi: ibmvfc: Fix invalid state machine BUG_ON()
2021-05-14 09:44:25 +02:00
sfi
sh
siox
slimbus
soc
soc: aspeed: fix a ternary sign expansion bug
2021-05-14 09:44:23 +02:00
soundwire
soundwire: stream: fix memory leak in stream config error path
2021-05-14 09:44:19 +02:00
spi
spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware()
2021-05-14 09:44:21 +02:00
spmi
spmi: spmi-pmic-arb: Fix hw_irq overflow
2021-03-04 10:26:49 +01:00
ssb
staging
media: omap4iss: return error code when omap4iss_get() failed
2021-05-14 09:44:23 +02:00
target
scsi: target: pscsi: Fix warning in pscsi_complete_cmd()
2021-05-11 14:04:08 +02:00
tc
tee
tee: optee: do not check memref size on return from Secure World
2021-05-11 14:04:06 +02:00
thermal
thermal/core/fair share: Lock the thermal zone while looping over instances
2021-05-19 10:08:32 +02:00
thunderbolt
tty
serial: core: return early on unsupported ioctls
2021-05-14 09:44:22 +02:00
uio
usb
usb: sl811-hcd: improve misleading indentation
2021-05-22 11:38:27 +02:00
vfio
vfio/mdev: Do not allow a mdev_type to have a NULL parent pointer
2021-05-14 09:44:24 +02:00
vhost
vhost: Fix vhost_vq_reset()
2021-04-07 14:47:39 +02:00
video
fbdev: zero-fill colormap in fbcmap.c
2021-05-11 14:04:04 +02:00
virt
virt: vbox: Do not use wait_event_interruptible when called from kernel context
2021-03-04 10:26:10 +01:00
virtio
visorbus
vlynq
vme
w1
watchdog
watchdog: mei_wdt: request stop on unregister
2021-03-04 10:26:47 +01:00
xen
xen/events: fix setting irq affinity
2021-04-16 11:46:39 +02:00
zorro
Kconfig
Makefile