2016-04-26 15:54:45

by Mika Westerberg

[permalink] [raw]
Subject: Re: OpRegion conflicts for Skylake LPSS

On Tue, Apr 26, 2016 at 02:44:13AM +0200, Ben Gamari wrote:
>
> While trying to troubleshoot some touchpad issues on a Dell Latitude
> E7470 (namely the touchpad being exposed only as a PS/2 device) I
> noticed that the intel-lpss driver (using a 4.6-rc4 kernel) fails to
> load with,
>
> ACPI Warning: SystemMemory range 0x00000000FE028000-0x00000000FE0281FF conflicts with OpRegion 0x00000000FE028000-0x00000000FE028207 (\_SB.PCI0.GEXP.BAR0) (20160108/utaddress-255)
> ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> intel-lpss: probe of INT3446:00 failed with error -16
>
> The DSDT OpRegion in question looks like this,
>
> Scope (_SB.PCI0)
> {
> Device (GEXP)
> {
> Name (_ADR, One) // _ADR: Address
> Name (_STA, 0x0B) // _STA: Status
> OperationRegion (BAR0, SystemMemory, SB04, 0x0208)
> Field (BAR0, DWordAcc, NoLock, Preserve)
> {
> ICON, 32,
> TAR, 32,
> Offset (0x10),
> DATA, 32,
> HCNT, 32,
> LCNT, 32,
> Offset (0x2C),
> , 5,
> ABRT, 1,
> Offset (0x40),
> RBCK, 32,
> Offset (0x54),
> CLR, 32,
> Offset (0x6C),
> ENB, 1,
> Offset (0x70),
> ACTV, 1,
> TFNF, 1,
> , 1,
> RFNE, 1,
> Offset (0x7C),
> HOLD, 32,
> Offset (0x9C),
> ENSB, 1,
> Offset (0x204),
> RST, 32
> }
>
> It looks very much like these are describing the same device. Perhaps
> the lpss driver should be binding to this ACPI node? Or perhaps this is
> a firmware issue? Any guidance would be greatly appreciated.

Can you send me full acpidump of that machine?


2016-04-26 21:11:04

by Ben Gamari

[permalink] [raw]
Subject: Re: OpRegion conflicts for Skylake LPSS

Mika Westerberg <[email protected]> writes:

> On Tue, Apr 26, 2016 at 02:44:13AM +0200, Ben Gamari wrote:
>>
snip

>> It looks very much like these are describing the same device. Perhaps
>> the lpss driver should be binding to this ACPI node? Or perhaps this is
>> a firmware issue? Any guidance would be greatly appreciated.
>
> Can you send me full acpidump of that machine?

It can be found at
https://github.com/bgamari/dell-e7470-dsdt/blob/master/acpi.log.

Cheers,

- Ben


Attachments:
signature.asc (472.00 B)

2016-04-29 07:30:37

by Ben Gamari

[permalink] [raw]
Subject: Re: OpRegion conflicts for Skylake LPSS

Ben Gamari <[email protected]> writes:

> [ Unknown signature status ]
> Mika Westerberg <[email protected]> writes:
>
>> On Tue, Apr 26, 2016 at 02:44:13AM +0200, Ben Gamari wrote:
>>>
> snip
>
>>> It looks very much like these are describing the same device. Perhaps
>>> the lpss driver should be binding to this ACPI node? Or perhaps this is
>>> a firmware issue? Any guidance would be greatly appreciated.
>>
>> Can you send me full acpidump of that machine?
>
> It can be found at
> https://github.com/bgamari/dell-e7470-dsdt/blob/master/acpi.log.
>
Did this provide any insight? Let me know if more information would be
helpful.

Also, is there a way to simply allow the driver subsystem to allow
probing to proceed despite this resource conflict so that I can resume
debugging my original input device issue?

Cheers,

- Ben


Attachments:
signature.asc (472.00 B)

2016-04-29 07:42:35

by Mika Westerberg

[permalink] [raw]
Subject: Re: OpRegion conflicts for Skylake LPSS

On Fri, Apr 29, 2016 at 09:30:27AM +0200, Ben Gamari wrote:
> Ben Gamari <[email protected]> writes:
>
> > [ Unknown signature status ]
> > Mika Westerberg <[email protected]> writes:
> >
> >> On Tue, Apr 26, 2016 at 02:44:13AM +0200, Ben Gamari wrote:
> >>>
> > snip
> >
> >>> It looks very much like these are describing the same device. Perhaps
> >>> the lpss driver should be binding to this ACPI node? Or perhaps this is
> >>> a firmware issue? Any guidance would be greatly appreciated.
> >>
> >> Can you send me full acpidump of that machine?
> >
> > It can be found at
> > https://github.com/bgamari/dell-e7470-dsdt/blob/master/acpi.log.
> >
> Did this provide any insight? Let me know if more information would be
> helpful.

Sorry about the delay.

The GEXP device is most probably a GPIO expander that is connected to
one of the I2C buses. And it indeed looks to use directly the I2C host
controller registers so kernel rightfully complains about that.

Are you able to run Windows on that machine? If yes, it would be nice to
know if the INT3446 I2C device is shown in the device manager.

> Also, is there a way to simply allow the driver subsystem to allow
> probing to proceed despite this resource conflict so that I can resume
> debugging my original input device issue?

Try to pass "acpi_enforce_resources=lax" in the kernel command line.

2016-04-30 22:48:09

by Ben Gamari

[permalink] [raw]
Subject: Re: OpRegion conflicts for Skylake LPSS

Mika Westerberg <[email protected]> writes:

> On Fri, Apr 29, 2016 at 09:30:27AM +0200, Ben Gamari wrote:
>> Ben Gamari <[email protected]> writes:
>>
>> > [ Unknown signature status ]
>> > Mika Westerberg <[email protected]> writes:
>> >
>> >> On Tue, Apr 26, 2016 at 02:44:13AM +0200, Ben Gamari wrote:
>> >>>
>> > snip
>> >
>> >>> It looks very much like these are describing the same device. Perhaps
>> >>> the lpss driver should be binding to this ACPI node? Or perhaps this is
>> >>> a firmware issue? Any guidance would be greatly appreciated.
>> >>
>> >> Can you send me full acpidump of that machine?
>> >
>> > It can be found at
>> > https://github.com/bgamari/dell-e7470-dsdt/blob/master/acpi.log.
>> >
>> Did this provide any insight? Let me know if more information would be
>> helpful.
>
> Sorry about the delay.
>
No worries.

> The GEXP device is most probably a GPIO expander that is connected to
> one of the I2C buses. And it indeed looks to use directly the I2C host
> controller registers so kernel rightfully complains about that.
>
> Are you able to run Windows on that machine? If yes, it would be nice to
> know if the INT3446 I2C device is shown in the device manager.
>
I had the original SSD that came with the machine with the original
Windows 7 installation intact. I popped it in and found no such device.
I then updated to Windows 10 (albeit still booting with the legacy BIOS,
not EFI) and found that once again there is no such device shown in
device manager.

>> Also, is there a way to simply allow the driver subsystem to allow
>> probing to proceed despite this resource conflict so that I can resume
>> debugging my original input device issue?
>
> Try to pass "acpi_enforce_resources=lax" in the kernel command line.

Thanks, indeed this allows the driver to load. Unfortunately it didn't
take long to encounter further issues.

The motivation for all of this is to get the touchpad into I2C mode, since
currently it is merely exposed as a simple PS/2 device. Unfortunately it
seems that even Windows 10 doesn't use the touchpad's I2C mode (although
I suppose it's possible that this is guarded on UEFI boot; moreover
Windows appears to have proper support for configurating this touchpad
in PS/2 mode, which is unfortunately an ALPS devices).

Looking at the DSDT it seems that enabling the I2C interface may require
the help of the embedded controller, the state of which is exposed in
the DSDT through a mysteriously-named SDS1 field. It looks like this
field could take on a number of values which identify a variety of
different touchpads. Given that it looks like GPIO pin states may be
determined by the value of this field I'm a bit reluctant to go fiddling
around with it.

I do wish that firmware weren't such a nightmare.

Cheers,

- Ben


Attachments:
signature.asc (472.00 B)