Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft, Windows'taki genel amaçlı G/Ç (GPIO) sürücü yığını ile platform üretici yazılımı arasında cihaza özgü çeşitli iletişimleri desteklemek için ACPI ad alanında GPIO denetleyicisi altına dahil edilebilecek bir Device-Specific Yöntemi (_DSM) tanımlar.
Şu anda bu yöntem iki işlevi tanımlar:
İşlev Dizini 0: Tüm _DSM yöntemlerinin sağlaması gereken Standart Sorgu İşlevi.
İşlev Dizini 1: ActiveBoth Polarity İşlevi, GPIO yığınını, denetleyicide mantık düşük olduğu iddia edilmeyen activeBoth pinlerinin bilgisini sağlar. GPIO yığını, ActiveBoth pinlerinin düşük mantıkla onaylandığını varsayar, bu nedenle bu işlev platformun belirli raptiyeler için bu varsayılanı geçersiz kılmasına olanak tanır.
GUID tanımı
GPIO denetleyicisi _DSM yönteminin GUID değeri şu şekilde tanımlanır:
{4F248F40-D5E2-499F-834C-27758EA1CD3F}
İşlev 0
Her _DSM 0. işlev, desteklenen işlev dizinleri kümesini döndüren ve her zaman gerekli olan bir sorgu işlevidir. İşlev 0'ın tanımı için, ACPI 5.0 belirtimi "_DSM (Cihaza Özgü Yöntem)" başlıklı 9.14.1 bölümüne bakın.
İşlev 1
GPIO denetleyicisi _DSM yönteminin İşlev 1 parametreleri aşağıdaki gibi tanımlanır:
Tartışmalar
Arg0: GPIO denetleyici _DSM için UUID
// GUID: {4F248F40-D5E2-499F-834C-27758EA1CD3F}DEFINE_GUID (GPIO_CONTROLLER _DSM_GUID,0x4f248f40, 0xd5e2, 0x499f, 0x83, 0x4c, 0x27, 0x75, 0x8e, 0xa1, 0xcd. 0x3f);Arg1: Düzeltme Kimliği
#define GPIO_CONTROLLER _DSM_REVISION_ID 0Arg2: ActiveBoth için İşlev dizini onaylanan kutup:
#define GPIO_CONTROLLER_DSM_ACTIVE_BOTH_POLARITY_FUNCTION_INDEX 1Arg3: Paketi boş (kullanılmaz)
Dönmek
Her biri GPIO denetleyicisindeki bir raptiyenin denetleyici göreli pin numarası olan tamsayı paketi:
ActiveBoth kesmesi olarak tanımlanmış ve
Onaylanan durumu mantığı düşük değildir (başka bir deyişle, yüksek mantıktır).
Örneğin, bir itme düğmesi cihazına öykünmüş bir ActiveBoth pini bağlıysa, kullanıcı düğmeye bastığında, pin onaylanan durumunu (pin'te mantıksal yüksek giriş düzeyi) girer ve kullanıcı düğmeyi basılı tutarken onaylanan durumda kalır. Kullanıcı düğmeyi serbest bıraktığında, sabitleme durumu birleştirilmemiş (mantıksal düşük giriş düzeyi) olarak değişir.
ASL kod örneği
Aşağıdaki ASL kod örneği, ActiveHigh'nin ilk kutupsallığına sahip bir GPIO pinleri kümesini tanımlar.
//
// _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})
}
}