https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298558

--- Comment #1 from Please <[email protected]> ---
ig4: fix attach of ACPI-enumerated LPSS controllers

Intel LPSS I2C controllers enumerated through ACPI rather than PCI never
attach on Haswell and Broadwell, so every device behind those buses is
lost. On a Dell XPS 13 9343 that hides the I2C HID touchpad and leaves
only the PS/2 fallback, which the firmware does not restore after S3.

Three causes, all on the ACPI path:

Firmware may leave an LPSS function in D3, where its registers read as
all-ones and set_controller() fails with "controller error during
attach-1". Run _PS0 before mapping them. The PCI path does not need
this, which is why the gap went unnoticed.

INT33C2, INT33C3, INT3432 and INT3433 are Lynx Point-LP and Wildcat
Point-LP, which ig4_pci.c already classifies as IG4_HASWELL; the ACPI
path called everything but APMC0D0F an Atom SoC.

The functional clock stays gated until bit 0 of IG4_REG_CLK_PARMS is
set. Until then the controller accepts writes into the TX FIFO, never
drives the bus, raises no interrupts, and every transfer ends in
IIC_ETIMEOUT. Linux ungates the same bit in acpi_lpss.c. Doing it in
ig4iic_set_config() covers resume as well as attach.

With all three in place the touchpad attaches as iichid0/hmt1 with
multi-touch and survives suspend and resume.

PR:             298558
Reported by:    <name> <email>
Tested by:      <name> (XPS 13 9343, Broadwell-U, 15.1-RELEASE-p3)
MFC after:      1 week

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to