Masalah Implementasi untuk Driver Pengontrol GPIO
Ekstensi kerangka kerja GPIO (GpioClx) menyediakan antarmuka driver perangkat (DDI) yang fleksibel. DDI ini memungkinkan pengembang untuk memilih di antara antarmuka panggilan balik alternatif. Pengembang driver harus menerapkan serangkaian fungsi panggilan balik peristiwa yang paling cocok untuk arsitektur perangkat keras dari perangkat pengontrol GPIO target.
Misalnya, jika driver pengontrol GPIO mendukung membaca dari dan menulis ke pin I/O GPIO, pengembang dapat memilih untuk mengimplementasikan salah satu pasang fungsi panggilan balik berikut:
CLIENT_ReadGpioPins dan CLIENT_WriteGpioPinsCLIENT_ReadGpioPinsUsingMask dan CLIENT_WriteGpioPinsUsingMask Fungsi CLIENT_ReadGpioPins dan CLIENT_WriteGpioPins menerima nomor bank, array nomor pin GPIO, dan buffer data untuk nilai bit yang akan dibaca dari atau ditulis ke pin ini. Jika hanya sejumlah kecil pin GPIO yang biasanya diakses dalam operasi baca atau tulis, sepasang panggilan balik ini mungkin menghasilkan implementasi terbaik. Implementasi ini biasanya digunakan untuk pengontrol GPIO yang pendaftaran perangkat kerasnya tidak dipetakan memori. Namun, jika beberapa pin GPIO cenderung diakses selama operasi baca atau tulis, atau jika perangkat keras pengontrol GPIO dapat secara efisien mengakses beberapa pin GPIO secara paralel, sepasang fungsi panggilan balik lainnya mungkin menghasilkan implementasi yang lebih baik.
Fungsi panggilan balik CLIENT_ReadGpioPinsUsingMask dan CLIENT_WriteGpioPinsUsingMask dapat membaca atau menulis bank hingga 64 pin dalam satu panggilan. Fungsi CLIENT_ReadGpioPinsUsingMask membaca nilai pin GPIO ke dalam masker 64-bit. Fungsi CLIENT_WriteGpioPinsUsingMask menggunakan dua masker 64-bit. Satu masker menunjukkan pin GPIO mana yang akan diatur, dan masker lainnya menunjukkan pin GPIO mana yang akan dihapus. Implementasi ini biasanya digunakan untuk pengontrol GPIO yang dipetakan memori.