Hello,

I tried to apply the I2C probe from Pilot6 link above 
(https://github.com/bentiss/SimplePeripheralBusProbe). 

Unfortunatelly I couldn't make it work. I was able to overload my DSDT
table and compile it (using Intel iasl.exe as Microsoft's asl.exe
generated a file which produced lots of errors at compile time). And
then I even got the I2C Probe device in my Device Manager (installed the
binary inf/sys driver that you can download from the releases page, no
compilation needed). But I couldn't manage to modify the DSDT table file
for this particular device, in order to bypass the ELAN touchpad/numpad
through the I2C probe.

Maybe someone with some experience in this I2C stuff can help me to
modify that DSDT table file properly. This is the section I suppose
refers to the ELAN touchpad (the complete file has nearly 70.000 lines):

 Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (SBFB, ResourceTemplate ()
            {
                I2cSerialBusV2 (0x004C, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                    0x00, ResourceConsumer, _Y34, Exclusive,
                    )
            })
            Name (SBFI, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
                {
                    0x0000005F,
                }
            })
            CreateWordField (SBFB, \_SB.PCI0.I2C1.ETPD._Y34._ADR, BADR)  // 
_ADR: Address
            Name (_ADR, One)  // _ADR: Address
            Name (ETPH, Package (0x01)
            {
                "ELAN1404"
            })
            Name (FTPH, Package (0x05)
            {
                "FTE1001", 
                "FTE1200", 
                "FTE1200", 
                "FTE1300", 
                "FTE1300"
            })
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If ((TPDI & 0x04))
                {
                    BADR = 0x15
                    Return (DerefOf (ETPH [TPHI]))
                }

                If ((TPDI & 0x10))
                {
                    BADR = 0x15
                    Return (DerefOf (FTPH [TPHI]))
                }

                Return ("ELAN1000")
            }

            Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // 
_CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* 
HID I2C Device */))
                {
                    If ((Arg2 == Zero))
                    {
                        If ((Arg1 == One))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                           
  // .
                            })
                        }
                        Else
                        {
                            Return (Buffer (One)
                            {
                                 0x00                                           
  // .
                            })
                        }
                    }

                    If ((Arg2 == One))
                    {
                        Return (One)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                             // .
                    })
                }
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((TPIF != One) || (DSYN && One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Return (ConcatenateResTemplate (SBFB, SBFI))
            }
        }
    }

    If (CondRefOf (\_SB.PCI0.RP21))
    {
        Scope (_SB.PCI0.RP21)
        {
            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (GPRW (0x69, 0x04))
            }
        }
    } 


As you may see, the _CRS method is different and more complex that the
example provided in SimplePeripheralBusProbe main page, as it returns:
ConcatenateResTemplate (SBFB, SBFI). The I2cSerialBusV2 (not
I2cSerialBus) stuff is defined within the SBFB block. Tried to modify
that single block to bypass the trackpad this way:

First I defined the probe device in the same scope:


Scope (_SB.PCI0.I2C1)
    {
Device(SPB1)
{
    Name(_HID, "PROBE01")
    Name(_UID, 1)
        Method(_CRS, 0x0, NotSerialized)
    {
        Name (RBUF, ResourceTemplate ()
        {
              I2cSerialBusV2 (0x004C, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                    0x00, ResourceConsumer, _Y34, Exclusive,
                    )        })
        Return(RBUF)
    }
}


Then modified the SBFB section of the ETPD device (which I suppose stand for 
Elan TrackPad Device).
 
...
Device (ETPD)
        {
            Name (SBFB, ResourceTemplate ()
            {
                I2cSerialBusV2 (0x004C, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PCI0.SPB1",
                    0x00, ResourceConsumer, _Y34, Exclusive,
                    )
                 ......

But what about the other part of the resource definition (SBFI)? I kept
it unmmodified....

With this modifications in the table, the probe device appears in Device
Manager after reboot (also the trackpad device stopped working, showing
an encouraging error message stating that that device depends on the
other probe device which didn't have a driver yet. That error was
naturally fixed after installing the probe device driver, but then I got
another error, and of course the trackpad and numpad did not work
anymore. The trackpad device shows this error in device manager:
Unexpected HID Descriptor.

So I had to revert all this stuff to get my trackpad working again in
Windows. As I said if someone helps me modify the code above properly I
would try again. I've already spent many hours on this with no luck, and
do not have more time to keep trying without further guidance.

Regards,

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1810183

Title:
  numpad on touchpad doesn't work in ASUS Zenbook 14

Status in Linux:
  New
Status in linux package in Ubuntu:
  Confirmed

Bug description:
  I have Asus Zenbook 14 UX433FA which I have installed Ubuntu 18.10 alongside 
windows 10. 
  The numeric keypads are within the touchpad and are supposed to be turned on 
by a button on the touchpad. This works well in Windows but doesn't work in 
Ubuntu. 
  I have tried to search for any related problems/solutions online but I 
haven't been able to.
  I will appreciate any suggestion or help.
  Thanks,
  --- 
  ProblemType: Bug
  ApportVersion: 2.20.10-0ubuntu13.1
  Architecture: amd64
  CurrentDesktop: ubuntu:GNOME
  DistroRelease: Ubuntu 18.10
  InstallationDate: Installed on 2018-12-30 (4 days ago)
  InstallationMedia: Ubuntu 18.10 "Cosmic Cuttlefish" - Release amd64 
(20181017.3)
  Package: linux (not installed)
  Tags:  cosmic
  Uname: Linux 4.19.11-041911-generic x86_64
  UnreportableReason: The running kernel is not an Ubuntu kernel
  UpgradeStatus: No upgrade log present (probably fresh install)
  UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo
  _MarkForUpload: True
  --- 
  ProblemType: Bug
  ApportVersion: 2.20.10-0ubuntu13.1
  Architecture: amd64
  CurrentDesktop: ubuntu:GNOME
  DistroRelease: Ubuntu 18.10
  InstallationDate: Installed on 2018-12-30 (4 days ago)
  InstallationMedia: Ubuntu 18.10 "Cosmic Cuttlefish" - Release amd64 
(20181017.3)
  Package: linux (not installed)
  Tags:  cosmic
  Uname: Linux 4.18.10-041810-generic x86_64
  UnreportableReason: The running kernel is not an Ubuntu kernel
  UpgradeStatus: No upgrade log present (probably fresh install)
  UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo
  _MarkForUpload: True

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/1810183/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to