Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft definieert een Device-Specific methode (_DSM) die kan worden opgenomen onder een GPIO-controller in de ACPI-naamruimte om verschillende apparaatklassespecifieke communicatie tussen de GPIO-stuurprogrammastack (general-purpose I/O) in Windows en de platformfirmware te ondersteunen.
Op dit moment definieert deze methode twee functies:
functie-index 0: de standaardqueryfunctie die alle _DSM methoden moet opgeven.
Functie-index 1: de ActiveBoth Polariteitsfunctie, die de GPIO-stack informeert van activeBoth-pinnen op de controller die niet zijn bevestigd logica laag. De GPIO-stack gaat ervan uit dat ActiveBoth-pinnen logica laag zijn, dus met deze functie kan het platform die standaard overschrijven voor specifieke pinnen.
GUID-definitie
De GUID voor de GPIO-controller _DSM methode is gedefinieerd als:
{4F248F40-D5E2-499F-834C-27758EA1CD3F}
Functie 0
Functie 0 van elke _DSM is een queryfunctie die de set ondersteunde functie-indexen retourneert en altijd vereist is. Zie voor de definitie van functie 0 sectie 9.14.1, "_DSM (apparaatspecifieke methode)", in de ACPI 5.0-specificatie.
Functie 1
De parameters voor functie 1 van de GPIO-controller _DSM methode worden als volgt gedefinieerd:
Argumenten
Arg0: UUID voor GPIO-controller _DSM
// GUID: {4F248F40-D5E2-499F-834C-27758EA1CD3F}DEFINE_GUID (GPIO_CONTROLLER _DSM_GUID,0x4f248f40, 0xd5e2, 0x499f, 0x83, 0x4c, 0x27, 0x75, 0x8e, 0xa1, 0xcd. 0x3f);Arg1: revisie-id
#define GPIO_CONTROLLER _DSM_REVISION_ID 0Arg2: Functie-index voor ActiveBoth bevestigde polariteit:
#define GPIO_CONTROLLER_DSM_ACTIVE_BOTH_POLARITY_FUNCTION_INDEX 1Arg3: pakket leeg (niet gebruikt)
Terug
Een pakket gehele getallen, dat elk het controller-relatieve pinnummer is van een speld op de GPIO-controller die:
Gedefinieerd als een ActiveBoth-interrupt en
Wiens assertieve status is niet logica laag (met andere woorden, is logica hoog).
Als een geëmuleerde ActiveBoth-pin bijvoorbeeld is verbonden met een drukknopapparaat, voert de pin de bevestigd status (logica-hoog invoerniveau op speld) in wanneer de gebruiker op de knop drukt en in de asserted status blijft terwijl de gebruiker de knop ingedrukt houdt. Wanneer de gebruiker de knop loslaat, verandert de pincodestatus in onbeheerde (invoerniveau van logica en laag).
Voorbeeld van ASL-code
In het volgende ASL-codevoorbeeld wordt een set GPIO-pinnen geïdentificeerd die de initiële polariteit van ActiveHigh hebben.
//
// _DSM - Device-Specific Method
//
// Arg0: UUID Unique function identifier
// Arg1: Integer Revision Level
// Arg2: Integer Function Index (0 = Return Supported Functions)
// Arg3: Package Parameters
//
Function(_DSM,{BuffObj, PkgObj, IntObj},{BuffObj, IntObj, IntObj, PkgObj})
{
//
// Switch based on which unique function identifier was passed in
//
//
// GPIO CLX UUID
//
If(LEqual(Arg0,ToUUID("4F248F40-D5E2-499F-834C-27758EA1CD3F")))
{
switch(Arg2)
{
//
// Function 0: Return supported functions, based on
// revision
//
case(0)
{
// Revision 0+: Functions 0 & 1 are supported
return (Buffer() {0x3})
}
//
// Function 1: For emulated ActiveBoth controllers,
// returns a package of controller-relative pin
// numbers. Each corresponding pin will have an
// initial polarity of ActiveHigh.
//
// A pin number of 0xffff is ignored.
//
case(1)
{
// Marks pins 0x28, 0x29 and 0x44 to be ActiveHigh.
Return (Package() {0x28, 0x29, 0x44})
}
//
// Unrecognized function for this revision
//
default
{
BreakPoint
}
}
}
else
{
//
// If this is not one of the UUIDs we recognize, then return
// a buffer with bit 0 set to 0 to indicate that no functions
// are supported for this UUID.
//
return (Buffer() {0})
}
}