All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: linux-input@vger.kernel.org
Subject: Re: [PATCH resend] Input: silead - Add workaround for x86 BIOS-es which bring the Silead chip up in a stuck state
Date: Fri, 9 Apr 2021 22:30:36 -0700	[thread overview]
Message-ID: <YHE3/Lfmk1BFeCKP@google.com> (raw)
In-Reply-To: <20210405202745.16777-1-hdegoede@redhat.com>

On Mon, Apr 05, 2021 at 10:27:45PM +0200, Hans de Goede wrote:
> 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>

Applied, thank you.

-- 
Dmitry

      reply	other threads:[~2021-04-10  5:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-05 20:27 [PATCH resend] Input: silead - Add workaround for x86 BIOS-es which bring the Silead chip up in a stuck state Hans de Goede
2021-04-10  5:30 ` Dmitry Torokhov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YHE3/Lfmk1BFeCKP@google.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=hdegoede@redhat.com \
    --cc=linux-input@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.