Re: [PATCH v2 0/2] Add UCSI I2C transport driver for ITE885x USB-C controllers
From: Edward Blair
Date: Thu Aug 27 2026 - 21:06:19 EST
Let's try that again.. without gmail's html...
Thanks, that makes sense. I can rework patch 1 to add MSFT8000 to
ignore_serial_bus_ids[] in acpi_device_enumeration_by_parent(). This
keeps the ACPI device present while preventing its SerialBus resources
from being instantiated as bus clients.
If that sounds reasonable, it seems like a good middle ground between
v1 and v2: it preserves v1's enumeration behaviour while handling the
device generically in the ACPI core, without the ITE-specific x86
status override added in v2.
Thanks,
Edward
On Fri, 28 Aug 2026 at 01:58, Edward Blair <edward.blair@xxxxxxxxx> wrote:
>
> Thanks, that makes sense. I can rework patch 1 to add MSFT8000 to ignore_serial_bus_ids[] in acpi_device_enumeration_by_parent(). This keeps the ACPI device present while preventing its SerialBus resources from being instantiated as bus clients.
>
> If that sounds reasonable, it seems like a good middle ground between v1 and v2: it preserves v1's enumeration behaviour while handling the device generically in the ACPI core, without the ITE-specific x86 status override added in v2.
>
> Thanks,
> Edward
>
> On Thu, 27 Aug 2026 at 23:30, Armin Wolf <W_Armin@xxxxxx> wrote:
>>
>> Am 25.08.26 um 22:14 schrieb Edward Blair:
>>
>> > Some ASUS desktop boards describe the same ITE USB-C controller twice
>> > in ACPI: as an MSFT8000 Resource Hub Proxy and as an ITE885x device at
>> > the same I2C address. If the RhProxy node claims the address first, the
>> > ITE device cannot be registered. Only the ITE node provides the
>> > interrupt required by this transport.
>> >
>> > Patch 1 marks the RhProxy node absent only when its I2C resource exactly
>> > matches a supported ITE node which also has an interrupt.
>>
>> AFAIK the MSFT8000 device is used to grant userspace applications under Windows
>> access to I2C, SPI, UART and GPIO resources. Since we already provide those functions
>> natively i suggest that we generally ignore MSFT8000 devices when checking for resource
>> conflicts.
>>
>> Thanks,
>> Armin Wolf
>>
>> > Patch 2 adds the ITE885x UCSI transport. These controllers use
>> > ITE-specific offsets for CCI, MESSAGE_IN, CONTROL and interrupt
>> > handling. They do not expose a VERSION register or accept PPM_RESET
>> > over I2C.
>> >
>> > The register layout and reset behaviour were checked against the ITE
>> > Windows driver supplied for this board.
>> >
>> > Tested on an ASUS ROG Strix Z790-E Gaming WiFi with ITE8853:
>> >
>> > - Built and booted on x86_64.
>> > - ucsi_ite bound to ITE8853:00 without the previous -EBUSY failure.
>> > - /sys/class/typec/port0 was registered.
>> > - USB-C attachment detection worked.
>> > - No UCSI, ITE or Type-C initialization errors were logged.
>> >
>> > Suspend/resume and the ITE8800 through ITE8805 IDs have not been tested.
>> >
>> > Changes since v1:
>> >
>> > - Move the duplicate-device quirk from the I2C core to the ACPI x86
>> > status-override code, as suggested by Mika and Heikki.
>> > - Correctly identify MSFT8000 as a Resource Hub Proxy.
>> > - Restrict the quirk to exact matching I2C resources.
>> > - Use devm_request_threaded_irq(), as suggested by Heikki.
>> > - Rebase onto Linux 7.2 and update for the current UCSI API.
>> > - Read and cache complete UCSI events before acknowledging them.
>> > - Match the vendor transport's MESSAGE_IN and PPM_RESET behaviour.
>> >
>> > Link: https://lore.kernel.org/all/20260314013157.7181-1-edward.blair@xxxxxxxxx/
>> >
>> > Edward Blair (2):
>> > ACPI: x86: hide duplicate RhProxy node for ITE UCSI controllers
>> > usb: typec: ucsi: add ITE885x I2C transport driver
>> >
>> > drivers/acpi/x86/utils.c | 151 ++++++++++++
>> > drivers/usb/typec/ucsi/Kconfig | 11 +
>> > drivers/usb/typec/ucsi/Makefile | 1 +
>> > drivers/usb/typec/ucsi/ucsi_ite.c | 395 ++++++++++++++++++++++++++++++
>> > 4 files changed, 558 insertions(+)
>> > create mode 100644 drivers/usb/typec/ucsi/ucsi_ite.c
>> >
>> >
>> > base-commit: 66498c75b4f8017f62d720d9b59675bdf3abce91