mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Massive overhaul(hopefully helps new users a bti)
This commit is contained in:
@@ -1,70 +1,18 @@
|
||||
# Fixing Trackpads
|
||||
# Fixing Trackpads (SSDT-GPI0/XOSI)
|
||||
|
||||
* [What this SSDT does](#what-this-ssdt-does)
|
||||
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||
|
||||
|
||||
## What this SSDT does
|
||||
|
||||
This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.
|
||||
|
||||
With most modern laptop DSDTs, there's a variable called `GPEN` or `GPHD` which are used for setting the status of the GPI0 device. For us, we want to enable the device.
|
||||
|
||||
## Finding our GPI0
|
||||
## Methods to make this SSDT
|
||||
|
||||
So first things we need to do is find out what variable is used to enable our GPI0 device, lets open up our decompiled SSDT and search for `Device (GPI0)`. Should give you a desult similar to this:
|
||||
For the trackpad fix, there are 2 methods you can choose from:
|
||||
|
||||

|
||||
|
||||
What we care about from this is the `_STA` method:
|
||||
|
||||
```
|
||||
Method (_STA, 0, NotSerialized)
|
||||
{
|
||||
If ((GPHD == One))
|
||||
{
|
||||
Return (0x03)
|
||||
}
|
||||
|
||||
Return (0x0F)
|
||||
}
|
||||
```
|
||||
|
||||
What we want is for this to always return `0x0F` when booting macOS, so we want to make an SSDT that will return `GPHD == Zero` in macOS.
|
||||
|
||||
**NOTE that you may have the other way around where GPHD needs to be set as `One` to return `0x0F`**. And your device name may also be different, don't throw random SSDTs in thinking it'll work
|
||||
|
||||
Once you found the variable and what it should be set to, grab a copy of [SSDT-GPI0.dsl](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPI0.dsl) and make the required edits. Then clean up with compiling it
|
||||
|
||||
## More examples
|
||||
|
||||

|
||||
|
||||
With this example, we can see that we need both `SBRG` and `GPEN` to return `One`. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return `One`:
|
||||
|
||||
```
|
||||
DefinitionBlock("", "SSDT", 2, "ACDT", "GPI0", 0)
|
||||
{
|
||||
External(GPEN, FieldUnitObj)
|
||||
External(SBRG, FieldUnitObj)
|
||||
|
||||
Scope (\)
|
||||
{
|
||||
If (_OSI ("Darwin"))
|
||||
{
|
||||
GPEN = One
|
||||
SBRG = One
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## GPIO Troubleshooting
|
||||
|
||||
So if you're still having issues enabling your trackpad in macOS, you can try removing SSDT-GPIO and instead swap for the following. Note that using these 2 will most likely break Windows and Linux so only use XOSI when troubleshooting:
|
||||
|
||||
* [SSDT-XOSI](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-XOSI.aml)
|
||||
|
||||
* XOSI Rename:
|
||||
|
||||
| Comment | String | Change _OSI to XOSI |
|
||||
| :--- | :--- | :--- |
|
||||
| Enabled | Boolean | YES |
|
||||
| Count | Number | 0 |
|
||||
| Limit | Number | 0 |
|
||||
| Find | Data | 5f4f5349 |
|
||||
| Replace | Data | 584f5349 |
|
||||
* [Prebuilt](/Laptops/trackpad-methods/prebuilt.md)
|
||||
* [Manual](/Laptops/trackpad-methods/manual.md)
|
||||
|
||||
Reference in New Issue
Block a user