Re: [PATCH v2 0/2] Add UCSI I2C transport driver for ITE885x USB-C controllers
Armin Wolf <[email protected]>
| Newsgroups | org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <[email protected]> |
Am 28.08.26 um 03:04 schrieb Edward Blair: > 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 Sound reasonable to me, just add a small comment explaining why MSFT8000 had to be added to that list. Thanks, Armin Wolf > > On Fri, 28 Aug 2026 at 01:58, Edward Blair <[email protected]> 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 <[email protected]> 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/[email protected]/ >>>> >>>> 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