1) Domanda: Aumentano le prestazioni del sistema?
1) Risposta: Assolutamente no.
2) Domanda: Che vantaggi potrei trarre da queste SSDT?
2) Risposta: Come sopra, nessun vantaggio prestazionale, ma "agevola" la vita agli "smanettoni" di tabelle ACPI e facilita lo scambio nel caso esse siano ad esempio "iniezioni" di dispositivi simili (LAN, schede video, Contoller Audio ecc. ecc.)
3) Domanda: Come si usano?
3) Risposta: Le SSDT come il DSDT vengono preparate in "formato" .dsl vanno editate a seconda dei propri usi, verranno compilate allo stesso modo di come viene compilato il DSDT e verranno (se avete più di una tabella SSDT) rinominate in;
SSDT.aml SSDT-1.aml SSDT-2.aml ecc. ecc. fino a SSDT-29.aml
4) Domanda: Ho delle tabelle SSDT (GFX/AUDIO/ecc..) posso contribuire?
4) Risposta: Certamente, postale qui in formato .TXT e cercherò di includerle e catalogarle in questo primo post.
5) Domanda: Dove vanno messele tabelle SSDT?
5) Risposta: Le tabelle SSDT vanno messe nella stessa posizione ove è situato il DSDT.
Requisiti:
- Un bootloader che supporti il caricamento in fase di avvio delle SSDT opzionali.
Esempio Chameleon 2 RC5 ultime revisioni.
- Chameleon bootloader with SSDT and DSDT override, I written a patch for Chameleon which overrides default SSDT and DSDT
- Chameleon RC5 mode with mem detection enabled and automatic P-States & C-States generation for native power managment
- AnVAL (ACPI Loader)
- Chameleon RC5 Meklort's Branch
Ero da tempo alla ricerca della possibilità di poter caricare durante l'avvio tabelle aggiuntive oltre al classico DSDT,
che come conosciamo (e ODIAMO) tutti in molti casi deve essere istruito a dovere per darci le dovute soddisfazioni.
Non sarebbe piacevole avere un DSDT minimamente ritoccato (senza iniezioni varie), e poter agire su piccole parti di codice invece di migliaia, per le nostre prove o i vari settaggi?
Bene con le SSDT questo si puo' fare.
----------------------------------
RACCOLTA
Metodo DTGP (su modulo esterno) *new
Metodo DTGP >>
DTGP.TXT 944bytes
106 downloads*Piccola nota se usate questa tabella ed avete ancora dei "richiami" nel DSDT vi basterà aggiungere External (DTGP, MethodObj) in testa al codice del DSDT
AUDIO
- AD2000B >>
AD2000B.TXT 1.42K
54 downloads*sudo perl -pi -e 's|\x8b\x19\xd4\x11|\x9b\x98\xd4\x11|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
-----------------------------
- AD1988B >>
AD1988B.txt 1.74K
22 downloads-----------------------------
- ALC883 >>
ALC883.txt 1.43K
23 downloads*sudo perl -pi -e 's|\x85\x08\xec\x10|\x83\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
-----------------------------
- ALC888 >>
ALC888.txt 1.43K
51 downloads - ALC1200 >>
ALC1200.TXT 1.8K
47 downloads*sudo perl -pi -e 's|\x85\x08\xec\x10|\x88\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
-----------------------------
- ALC889 >>
ALC889.txt 1.93K
42 downloads-----------------------------
- ALC889A >>
ALC889A.TXT 1.93K
26 downloads-----------------------------
- ALC662 >>
ALC662.txt 1.93K
21 downloads*sudo perl -pi -e 's|\x85\x08\xec\x10|\x62\x06\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
-----------------------------
- Via VT1708S (mrmojorisin17) >>
VT1708S.txt 1.86K
31 downloads-----------------------------
-----------------------------
- ESB2 Full >>
ESB2f.TXT 3.51K
39 downloads - ESB2 Mini >>
ESB2m.TXT 573bytes
33 downloads - *ICH10 Full >>
ICH10.TXT 3.51K
78 downloads*Un modo elegante per risolvere le Icone arancioni è usare IOAHCIBlockstorageInjector e LegayAppleAHCIPort in Extra/Extensions.
Oppure usare i miei plist editati da sostituire direttamente negli kext in System/Library/Extensions.
AppleAHCIPort >> /System/Library/Extensions/AppleAHCIPort.kext/Contents/Info.plist
IOAHCIBlockStorage >> /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/Info.plist
- SBUS >>
SBUS.TXT 1.28K
73 downloads
- Intel pci8086,3a18 >>
pci8086_3a18.TXT 588bytes
39 downloads - Intel pci8086,3b02 >>
pci8086_3b02.TXT 588bytes
17 downloads
- UHCI e EHCI (ICH10) >>
UHCI_EHCI.TXT 8.79K
56 downloads - UHCI (ICH10) >>
UHCI.txt 5.56K
10 downloads - EHCI (ICH10) >>
EHCI.txt 3.33K
23 downloads
- Ethernet 0&1 Marvell 88E8086 >>
ETH0_1.TXT 4.08K
24 downloads - Ethernet 0 Marvell 88E8086 >>
ETH0.TXT 2.09K
14 downloads - Ethernet 0 Atheros L1E (mrmojorisin17) >>
ETH0_AtherosL1E.TXT 2.09K
35 downloads - Ethernet 1 Marvell 88E8086 >>
ETH1.TXT 2.09K
9 downloads
-----------------------------
- nVidia Quadro FX 5600 (0x10de 0x019d) >>
QuadroFX5600.TXT 4.26K
20 downloads - nVidia GeForce GTX 285 (0x10de 0x05e3) >>
GTX_285.TXT 4.23K
50 downloads - nVidia GeForce GTX 275 (0x10de 0x05e6) >>
GTX_275.TXT 4.23K
12 downloads - nVidia GeForce GTX 260 (0x10de 0x05e2) >>
GTX_260.TXT 4.23K
32 downloads - nVidia GeForce 8800 GT (0x10de 0x0611) >>
GF_8800_GT.TXT 4.35K
39 downloads - nVidia GeForce 9800 GTX+ (0x10de 0x0612) >>
GTX_9800.TXT 2.91K
28 downloads - nVidia GeForce GT 240 (0x10DE 0x0CA3) >>
GT_240_1GB.TXT 4.84K
37 downloads - nVidia GeForce GT 430 (0x10DE 0x0DE1) >>
GT_430.TXT 3.45K
21 downloads - nVidia GeForce GTX 470 (0x10DE 0x06CD) >>
GTX_470.TXT 3.47K
54 downloads - nVidia GeForce GTX 480 (0x10DE 0x06C0) >>
GTX_480.TXT 3.45K
50 downloads
-----------------------------
----------------------------------
Come funzionano???
Il funzionamento è identico sia in struttura che in sintassi al codice del DSDT.
Con la differenza che i Device vengono chiamati e considerati come oggetti esterni allo stesso modulo.
External (DTGP, MethodObj)
External (\_SB_.PCI0.XXX, DeviceObj)
Scope (\_SB.PCI0.XXX)
Name (_ADR, 0xXXXXXXXX)
Le XXX avranno valori differenti in ogni caso
----------------------------------
Esempio 1: SSDT AUDIO (AD2000b)
[size=1]DefinitionBlock ("SSDT.aml", "SSDT", 1, "APPLE", "HDEF", 0x00001000)
{
[color="#0000FF"]External (DTGP, MethodObj)[/color]
[color="#2E8B57"]External (\_SB_.PCI0, DeviceObj)[/color]
[color="#800080"]Scope (\_SB.PCI0)[/color]
{
Device (HDEF)
{
[color="#FF0000"]Name (_ADR, 0x001B0000)[/color]
OperationRegion (HDCS, PCI_Config, 0x54, 0x04)
Field (HDCS, DWordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
}
Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x10)
{
"subsystem-id", Buffer (0x04) { 0xA0, 0x00, 0x00, 0x00 },
"subsystem-vendor-id", Buffer (0x04) { 0x6B, 0x10, 0x00, 0x00 },
"codec-id", Buffer (0x04) { 0x9B, 0x98, 0xD4, 0x11 },
"layout-id", Buffer (0x04) { 0x0C, 0x00, 0x00, 0x00 },
"device-type", Buffer (0x17) { "Analog Devices AD2000B" },
"model", Buffer (0x08) { "AD2000B" },
"built-in", Buffer (One) { 0x00 },
"PinConfigurations", Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
}[/size]
External (DTGP, MethodObj) External (\_SB_.PCI0, DeviceObj)
Scope (\_SB.PCI0)
Name (_ADR, 0x0x001B0000)
Dall'esempio sopra vediamo che la parte di codice in BLU si riferisce al "richiamo" del già conosciuto e vecchio amico method DTGP, il richiamo al method 'e neccessario, dal momento che dobbiamo iniettare dei dati.
La parte di codice in VERDE si riferisce ad un "oggetto" esterno che viene richiamato nella tabella SSDT e VIOLA si riferisce alla "posizione" logica all'interno del DSDT principale dove il dispositivo che vogliamo montare/iniettare deve essere ubicato.
L'ADDRESS in ROSSO sarà in questo caso necessario in quanto parte che indirizza il dispositivo logico.(La stragrande maggioranza di voi sa che HDEF/AZAL si trova al 0x001B0000).
----------------------------------
ESEMPIO 2: SSDT SATA INTERNAL ESB2
[size=1]DefinitionBlock ("SSDT.aml", "SSDT", 1, "SataRe", "SataPri", 0x00001000)
{
[color="#0000FF"]External (DTGP, MethodObj)[/color]
[color="#2E8B57"]External (\_SB_.PCI0.SATA, DeviceObj)[/color]
[color="#800080"]Scope (\_SB.PCI0.SATA)[/color]
{
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x81, 0x26, 0x86, 0x80
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Device (PRT0)
{
Name (_ADR, Zero)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT1)
{
Name (_ADR, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 2"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT2)
{
Name (_ADR, 0x02)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 3"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT3)
{
Name (_ADR, 0x03)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 4"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT4)
{
Name (_ADR, 0x04)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 5"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT5)
{
Name (_ADR, 0x05)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Bay 6"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
}
[/size]
All'interno del nostro DSDT nella sua posizione (SATA) avremo semplicemente:
...codice...
Device (SATA)
{
Name (_ADR, 0x001F0002)
}
...codice...
da notare nella SSDT del SATA il codice in colore VERDE questa volta fa riferimento al dispositivo SATA già presente nel DSDT e non "creato" come nel precedente esempio (HDEF).
----------------------------------
ESEMPIO 3: SSDT USB
Simile come struttura alla SSDT del SATA ESB2.
[size=1]DefinitionBlock ("SSDT.aml", "SSDT", 1, "UHCI", "UHCIPri", 0x00001000)
{
[color="#0000FF"]External (DTGP, MethodObj)[/color]
[color="#2E8B57"] External (\_SB_.PCI0.UHC1, DeviceObj)
External (\_SB_.PCI0.UHC2, DeviceObj)
External (\_SB_.PCI0.UHC3, DeviceObj)
External (\_SB_.PCI0.UHC4, DeviceObj)
External (\_SB_.PCI0.UHC5, DeviceObj)
External (\_SB_.PCI0.UHC6, DeviceObj)
External (\_SB_.PCI0.EHC1, DeviceObj)
External (\_SB_.PCI0.EHC2, DeviceObj[/color])
[color="#800080"]Scope (\_SB.PCI0.UHC1)[/color]
{
OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
Field (U1CS, DWordAcc, NoLock, Preserve)
{
U1EN, 2
}
Name (_PRW, Package (0x02)
{
0x03,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U1EN)
}
Else
{
Store (Zero, U1EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x34, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.UHC2)[/color]
{
OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
Field (U2CS, DWordAcc, NoLock, Preserve)
{
U2EN, 2
}
Name (_PRW, Package (0x02)
{
0x04,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U2EN)
}
Else
{
Store (Zero, U2EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x35, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.UHC3)[/color]
{
OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
Field (U2CS, DWordAcc, NoLock, Preserve)
{
U3EN, 2
}
Name (_PRW, Package (0x02)
{
0x0C,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U3EN)
}
Else
{
Store (Zero, U3EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x36, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.UHC4)[/color]
{
OperationRegion (U4CS, PCI_Config, 0xC4, 0x04)
Field (U4CS, DWordAcc, NoLock, Preserve)
{
U4EN, 2
}
Name (_PRW, Package (0x02)
{
0x0E,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U4EN)
}
Else
{
Store (Zero, U4EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x37, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.UHC5)[/color]
{
OperationRegion (U5CS, PCI_Config, 0xC4, 0x04)
Field (U5CS, DWordAcc, NoLock, Preserve)
{
U5EN, 2
}
Name (_PRW, Package (0x02)
{
0x05,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U5EN)
}
Else
{
Store (Zero, U5EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x38, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.UHC6)[/color]
{
OperationRegion (U6CS, PCI_Config, 0xC4, 0x04)
Field (U6CS, DWordAcc, NoLock, Preserve)
{
U6EN, 2
}
Name (_PRW, Package (0x02)
{
0x20,
0x03
})
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U6EN)
}
Else
{
Store (Zero, U6EN)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x39, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"]Scope (\_SB.PCI0.EHC1)[/color]
{
OperationRegion (U7CS, PCI_Config, 0x54, 0x02)
Field (U7CS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
}
Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
OperationRegion (USBR, PCI_Config, 0x62, 0x02)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2)
}
If (LEqual (Arg0, One))
{
Store (0x01FF, URE2)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0C)
{
"AAPL,current-available",
0x05DC,
"AAPL,current-extra",
0x04B0,
"AAPL,current-in-sleep",
0x09C4,
"device-id",
Buffer (0x04)
{
0x3A, 0x3A, 0x00, 0x00
},
"AAPL,clock-id",
Buffer (One)
{
0x01
},
"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
[color="#800080"] Scope (\_SB.PCI0.EHC2)[/color]
{
OperationRegion (U7CS, PCI_Config, 0x54, 0x02)
Field (U7CS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
}
Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
OperationRegion (USBR, PCI_Config, 0x62, 0x02)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2)
}
If (LEqual (Arg0, One))
{
Store (0x01FF, URE2)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0C)
{
"AAPL,current-available",
0x05DC,
"AAPL,current-extra",
0x04B0,
"AAPL,current-in-sleep",
0x09C4,
"device-id",
Buffer (0x04)
{
0x3C, 0x3A, 0x00, 0x00
},
"AAPL,clock-id",
Buffer (One)
{
0x02
},
"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
[/size]
e all'interno del mio DSDT avrò solamente
[size=1]...codice...
Device (UHC1)
{
Name (_ADR, 0x001D0000)
}
Device (UHC2)
{
Name (_ADR, 0x001D0001)
}
Device (UHC3)
{
Name (_ADR, 0x001D0002)
}
Device (EHC1)
{
Name (_ADR, 0x001D0007)
}
Device (UHC4)
{
Name (_ADR, 0x001A0000)
}
Device (UHC5)
{
Name (_ADR, 0x001A0001)
}
Device (UHC6)
{
Name (_ADR, 0x001A0002)
}
Device (EHC2)
{
Name (_ADR, 0x001A0007)
}
...codice...[/size]
----------------------------------
ESEMPIO 4: SSDT GFX (QuadroFX5600 su address 0x00030000)
[size=1]DefinitionBlock ("SSDT.aml", "SSDT", 1, "GFX03", "Graphics03", 0x00001000)
{
[color="#0000FF"]External (DTGP, MethodObj) [/color]
[color="#2E8B57"]External (\_SB_.PCI0.PEG3.GFX3, DeviceObj)[/color]
[color="#800080"]Scope (\_SB.PCI0.PEG3.GFX3[/color])
{
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x1C)
{
"AAPL,slot-name", Buffer (0x0A) { "PCI-E 16x" },
"@0,compatible", Buffer (0x0B) { "NVDA,NVMac" },
"@0,device_type", Buffer (0x08) { "display" },
"@0,name", Buffer (0x0F) { "NVDA,Display-A" },
"@1,compatible", Buffer (0x0B) { "NVDA,NVMac" },
"@1,device_type", Buffer (0x08) { "display" },
"@1,name", Buffer (0x0F) { "NVDA,Display-B" },
"NVCAP", Buffer (0x18) { 0x04, 0x00,[b][i] ...codice... ...codice...[/i][/b], 0x00, 0x00 },
"NVPM", Buffer (0x1C) {
/* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0018 */ 0x00, 0x00, 0x00, 0x00 },
"VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x60 },
"device_type", Buffer (0x0C) { "NVDA,Parent" },
"model", Buffer (0x1C) { "Nvidia Quadro FX 5600 [G80]" },
"rom-revision", Buffer (0x0F) { "60.80.24.00.00" },
"reg",
Buffer (0x78) { 0x00, [i][b]...codice... ...codice...[/b][/i], 0x02, 0x00 }
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}[/size]
e nel DSDT
[size=1]...codice...
Device (PEG3) [color="#FF0000"]// Questo dispositivo l'ho rinominato in precedenza era P0P3[/color]
{
Name (_ADR, 0x00030000)
Device (GFX3) [color="#F4A460"]// Questo dispositivo l'ho creato non esisteva prima[/color]
{
Name (_ADR, 0x02000000) [color="#FF0000"]// questo sub address l'ho ricavato con LsPCI ed è della mia motherboard[/color]
} [color="#FF0000"]// Fine dispositivo creato[/color]
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR13)
}
Return (PR13)
}
}
...codice...[/size]
----------------------------------
ESEMPIO 5: SSDT SMBUS
[size=1]DefinitionBlock ("SSDT.aml", "SSDT", 1, "APPLE", "SBUS", 0x00001000)
{
[color="#0000FF"]External (DTGP, MethodObj)[/color]
[color="#2E8B57"]External (\_SB_.PCI0, DeviceObj)[/color]
[color="#800080"]Scope (\_SB.PCI0)[/color]
{
Device (SBUS)
{
[color="#FF0000"]Name (_ADR, 0x001F0003)[/color]
Device (BUS0)
{
Name (_CID, "smbus")
Name (_ADR, Zero)
Device (DVL0)
{
Name (_ADR, 0x57)
Name (_CID, "diagsvault")
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x03)
{
"address",
0x57,
Buffer (One)
{
0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
}
}
}[/size]
----------------------------------
continua...Fabio



Sign In
Create Account












