HI,
I've been trying to make my Elan trackpad work but I failed
So here is what I did :
first It’s ELAN061B
I applied the windows 10 + the patch for Skylake+ to DSDT . ( I followed Rehabman's guide on how to patch DSDT)
Identified the device ACPI ID in windows =
TPD0
In IORegExplorer the APIC PIN number is =
53
So it not less than or equal
0x2F
I2C Serial Bus is correctly labeled I can find
SBFB
Code:
Scope (_SB.PCI0.I2C1)
{
Device (TPD0)
{
Name (HID2, Zero)
Name (SBFB, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, _Y30, Exclusive,
)
})
Name (SBFI, ResourceTemplate ()
{
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, _Y31)
{
0x00000000,
}
})
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
So I suppose I don’t have to
rename or remove anything .
- the device is configured to support GPIO pins.
Code:
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
The name is in the root not _CRS method so it’s
root pinned
pin list is zero :
So it’s not
well pinned
I guess step 2c then .
-
Code:
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
If (LEqual (TPTY, One))
{
Store (0x15, BADR)
Store (One, HID2)
}
If (LEqual (TPTY, 0x02))
{
Store (0x2C, BADR)
Store (0x20, HID2)
}
If (LEqual (TPTY, 0x03))
{
Store (0x2A, BADR)
Store (0x20, HID2)
}
If (LLess (OSYS, 0x07DC))
{
Return (SBFI)
}
If (LEqual (TPDM, Zero))
{
Return (ConcatenateResTemplate (SBFB, SBFG))
}
Return (ConcatenateResTemplate (SBFB, SBFI))
}
Returns :
Return (ConcatenateResTemplate (SBFB, SBFI))
So it’s definitely
not well-pinned
Step 2d manually pinning the device.
the device hexadecimal is
53
In the first list :
#define GPP_C11_IRQ 0x53
In the second list :
#define GPP_C11 59
So the decimal GPIO PIN number is
59
Decimal 59 = 3B hexadecimal
3B is not in the range of 0x5c and 0x77 inclusive
It indeed appears twice in the first list :
#define GPP_F11_IRQ 0x3b
#define GPP_B11_IRQ 0x3b
First case :
#define GPP_F11 131
Decimal 131 = 83 hex
Pin list should be
0x83 right . Did that it did not work.
Second case :
#define GPP_B11 35
Decimal 35 = 23 hex
Changed pin list to 0x23 it did not work either .
Tried all those proposed numbers, not working too . 0x17, 0x1B, 0x34 and 0x55.
I changed the _CRS method to
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (ConcatenateResTemplate (SBFB, SBFG))
}
Not sure if I should remove everything except the return statement .
Copied kexts to Clover/kexts/Other
First I tried:
VoodooI2C + VoodooI2CHID .
Then
VoodooI2C + VoodooI2CElan
and finally
VoodooI2C + VoodooI2CElan + VoodooI2CHID
None of the combinations worked .
Now I think the damn device is not compatible or I missed something .
I googled the device name : ELAN061B google shows zero results !
one more thing I don't know if I should remove VoodooPS2controller or not, it's the only thing that makes the keyboard work.
In windows device manger, it’s and ELAN pointing device .
Any suggestions .
Thanks in Advance