From: Edward Blair <edward.blair@gmail.com>
To: linux-i2c@vger.kernel.org, linux-usb@vger.kernel.org
Cc: heikki.krogerus@linux.intel.com, gregkh@linuxfoundation.org,
wsa+renesas@sang-engineering.com, westeri@kernel.org,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
Edward Blair <edward.blair@gmail.com>
Subject: [PATCH 0/2] Add UCSI I2C transport driver for ITE885x USB-C controllers
Date: Sat, 14 Mar 2026 01:31:54 +0000 [thread overview]
Message-ID: <20260314013157.7181-1-edward.blair@gmail.com> (raw)
ASUS Z690/Z790/X670E motherboards use ITE8853 (and related ITE8800-ITE8805)
USB Type-C controllers that implement UCSI over I2C. These are currently
unsupported in Linux, causing a boot error:
i2c i2c-1: Failed to register i2c client ITE8853:00 at 0x40 (-16)
The BIOS on these boards declares two ACPI devices for the same physical
hardware at the same I2C address: a generic UCSI device (MSFT8000) and a
vendor-specific device (ITE8853). The generic device registers first during
ACPI enumeration, blocking the vendor-specific one with -EBUSY. The ITE8853
ACPI device carries the GPIO interrupt resource needed for proper operation,
while MSFT8000 does not.
Patch 1 fixes the i2c ACPI enumeration to skip known generic devices when a
vendor-specific sibling exists at the same address. This is a general fix
that could benefit other platforms with the same BIOS pattern.
Patch 2 adds the ITE885x UCSI transport driver, modeled after ucsi_stm32g0.c.
The only device-specific quirk is that PPM_RESET is handled internally by the
ITE8853 and must not be sent over I2C.
Tested on ASUS ROG Strix Z790-E Gaming WiFi:
- Boot error eliminated
- /sys/class/typec/port0 registered successfully
- UCSI commands complete within one polling cycle (~50ms)
- USB-C device attach/detach detected with partner enumeration
- USB Power Delivery negotiation functional
- SuperSpeed Plus Gen 2x1 devices operational through UCSI-managed port
No MAINTAINERS entry is added as the driver falls under the existing
USB TYPEC UCSI section. Happy to add one if preferred.
Edward Blair (2):
i2c: acpi: skip generic I2C device when vendor-specific sibling exists
usb: typec: ucsi: add ITE885x I2C transport driver
drivers/i2c/i2c-core-acpi.c | 88 +++++++++
drivers/usb/typec/ucsi/Kconfig | 11 ++
drivers/usb/typec/ucsi/Makefile | 1 +
drivers/usb/typec/ucsi/ucsi_ite.c | 285 ++++++++++++++++++++++++++++++
4 files changed, 385 insertions(+)
create mode 100644 drivers/usb/typec/ucsi/ucsi_ite.c
--
2.53.0
next reply other threads:[~2026-03-14 1:32 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-14 1:31 Edward Blair [this message]
2026-03-14 1:31 ` [PATCH 1/2] i2c: acpi: skip generic I2C device when vendor-specific sibling exists Edward Blair
2026-03-16 13:12 ` Mika Westerberg
2026-03-16 14:32 ` Edward Blair
2026-03-16 14:45 ` Mika Westerberg
2026-03-16 15:04 ` Edward Blair
2026-03-16 14:07 ` Heikki Krogerus
2026-03-14 1:31 ` [PATCH 2/2] usb: typec: ucsi: add ITE885x I2C transport driver Edward Blair
2026-03-16 14:57 ` Heikki Krogerus
2026-03-16 15:01 ` Edward Blair
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=20260314013157.7181-1-edward.blair@gmail.com \
--to=edward.blair@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=westeri@kernel.org \
--cc=wsa+renesas@sang-engineering.com \
/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.