Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk mendukung berbagai komunikasi khusus kelas perangkat antara tumpukan driver I/O (GPIO) tujuan umum di Windows dan firmware platform, Microsoft menentukan Metode Device-Specific (_DSM) yang dapat disertakan di bawah pengontrol GPIO di namespace ACPI.
Saat ini, metode ini mendefinisikan dua fungsi:
Indeks Fungsi 0: Fungsi Kueri Standar yang harus disediakan oleh semua metode _DSM.
Function Index 1: Fungsi Polaritas ActiveBoth, yang menginformasikan tumpukan GPIO dari pin ActiveBoth apa pun pada pengontrol yang tidak dinyatakan logika rendah. Tumpukan GPIO mengasumsikan bahwa pin ActiveBoth ditegaskan logika rendah, sehingga fungsi ini memungkinkan platform untuk mengambil alih default tersebut untuk pin tertentu.
Definisi GUID
GUID untuk metode _DSM pengontrol GPIO didefinisikan sebagai:
{4F248F40-D5E2-499F-834C-27758EA1CD3F}
Fungsi 0
Fungsi 0 dari setiap _DSM adalah fungsi kueri yang mengembalikan kumpulan indeks fungsi yang didukung, dan selalu diperlukan. Untuk definisi Fungsi 0, lihat bagian 9.14.1, "_DSM (Metode Khusus Perangkat)", dalam spesifikasi ACPI 5.0 .
Fungsi 1
Parameter untuk Fungsi 1 dari metode _DSM pengontrol GPIO didefinisikan sebagai berikut:
Argumen
Arg0: UUID untuk _DSM pengontrol GPIO
// GUID: {4F248F40-D5E2-499F-834C-27758EA1CD3F}DEFINE_GUID (GPIO_CONTROLLER _DSM_GUID,0x4f248f40, 0xd5e2, 0x499f, 0x83, 0x4c, 0x27, 0x75, 0x8e, 0xa1, 0xcd. 0x3f);Arg1: ID Revisi
#define GPIO_CONTROLLER _DSM_REVISION_ID 0Arg2: indeks Fungsi untuk polaritas yang dinyatakan ActiveBoth:
#define GPIO_CONTROLLER_DSM_ACTIVE_BOTH_POLARITY_FUNCTION_INDEX 1Arg3: paket kosong (tidak digunakan)
Pengembalian
Paket bilangan bulat, yang masing-masing adalah nomor pin relatif pengontrol dari pin pada pengontrol GPIO yaitu:
Didefinisikan sebagai interupsi ActiveBoth, dan
Yang statusnya dinyatakan tidak logika rendah (dengan kata lain, logika tinggi).
Misalnya, jika pin ActiveBoth yang ditiru terhubung ke perangkat pushbutton, pin memasuki status yang ditegaskan (tingkat input tinggi logika saat disematkan) ketika pengguna menekan tombol, dan tetap dalam status tegas saat pengguna menahan tombol. Saat pengguna merilis tombol, status pin berubah menjadi yang tidak ditetapkan (tingkat input logika rendah).
Contoh kode ASL
Contoh kode ASL berikut mengidentifikasi sekumpulan pin GPIO yang memiliki polaritas awal ActiveHigh.
//
// _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})
}
}