Bagikan melalui


Perangkat keras kamera

Penjelasan umum topologi

Dalam hal dukungan driver Windows, subsistem kamera berisi komponen off-System pada Chip (SoC) seperti sensor kamera, unit fokus otomatis opsional, dan lampu kilat—dan mungkin perangkat keras terkait lainnya. Perangkat keras kamera juga mencakup unit pemrosesan gambar on-SoC.

Perangkat keras pemrosesan gambar on-SoC harus dikelola daya oleh plug-in mesin daya (PEP) yang disediakan oleh vendor SoC. Perangkat keras pemrosesan gambar harus dijumlahkan sebagai satu perangkat di ACPI dan dikelola oleh driver Windows Driver Framework (WDF). Aktifkan manajemen sistem perangkat pemrosesan gambar diam habis waktu sehingga PEP dapat mengontrol jam dan topologi berbagi rel daya apa pun yang unik untuk SoC. Perangkat keras pemrosesan gambar on-SoC apa pun harus dimatikan setiap kali perangkat kamera dimatikan.

Beberapa desain SoC memiliki blok fungsi bersama yang melakukan pengambilan kamera dan pemrosesan gambar dan grafis lainnya. Dalam platform yang menggunakan SoC seperti itu, PEP yang disediakan oleh vendor SoC harus menghitung referensi penggunaan blok bersama ini dan mematikannya ketika semua klien menganggur.

Di beberapa platform, perangkat keras pemrosesan gambar on-SoC mungkin dibagikan antara dua perangkat kamera atau lebih. Dalam hal ini, perangkat keras pemrosesan gambar di-multipleks di antara perangkat kamera. Komponen setiap perangkat kamera harus dijelaskan secara independen di namespace ACPI dan harus dijumlahkan sebagai objek perangkat terpisah ke manajer Plug and Play Windows.

Platform yang memiliki dua (atau lebih) kamera tersemat diperlukan oleh Windows untuk dapat menggunakan (yaitu, mengalirkan konten dari) kedua (atau semua) kamera secara bersamaan dengan kombinasi mode dan resolusi apa pun yang didukung oleh kamera individual. Vendor SoC yang tidak dapat memenuhi persyaratan ini harus bekerja dengan Microsoft secara langsung untuk panduan tentang menerapkan driver dan firmware sistem mereka.

Konfigurasi daya yang didukung

Windows mendukung konfigurasi manajemen daya perangkat keras tunggal untuk perangkat kamera di platform siaga modern. Singkatnya, setiap sensor kamera harus terhubung ke System on a Chip (SoC) melalui tautan MIPI-CSI, dan secara opsional dapat dihubungkan ke bus I2C dan ke satu atau beberapa pin GPIO. Perangkat sensor kamera, lampu kilat opsional, dan komponen kamera off-SoC lainnya harus ditempatkan pada rel daya yang dapat dinyalakan dan dimatikan oleh firmware ACPI.

Jika, selain tautan MIPI-CSI, perangkat kamera memiliki pin I2C atau GPIO untuk mengontrol sensor kamera atau perangkat flash, pin ini harus dirutekan ke pin yang sesuai dari pengontrol I2C atau pengontrol GPIO pada SoC. Integrator sistem harus menghitung sumber daya I2C dan GPIO untuk sensor kamera dan perangkat flash dalam objek _CRS di bawah perangkat kamera di namespace ACPI.

Catatan Integrator sistem harus bekerja dengan pengembang driver subsistem kamera untuk menentukan bagaimana driver kamera mengharapkan sumber daya GPIO dan I2C dipesan. Misalnya, driver yang menerima dua sumber daya I2C membedakannya berdasarkan urutan kemunculannya dalam daftar sumber daya. Demikian pula, driver yang menerima tiga sumber daya GPIO mengharapkan sumber daya ini terdaftar dalam urutan tertentu. Integrator sistem harus menghitung sumber daya I2C dan GPIO dalam urutan yang sama dalam objek _CRS.

Sensor kamera dan perangkat flash harus ditempatkan pada rel daya yang dapat dihidupkan dan dimatikan dengan metode kontrol ACPI. Sebaiknya gunakan pin GPIO dari SoC untuk mengontrol perangkat keras power-switch. GPIO harus dijumlahkan di wilayah operasi GPIO sehingga statusnya dapat diubah dengan metode kontrol ACPI. Integrator sistem harus menjelaskan sumber daya daya untuk perangkat kamera (sensor, lampu kilat, atau komponen kamera lainnya) di namespace ACPI. Sumber daya ini harus menyertakan metode _ON dan metode _OFF untuk mengubah status sinyal GPIO yang dirutekan ke perangkat keras power-switch. Di bawah perangkat kamera di namespace ACPI, integrator sistem harus menyediakan objek _PR0 dan objek _PR3 yang merujuk ke sumber daya daya.

Ketika driver pengontrol kamera mendeteksi bahwa semua pin streaming telah memasuki status KSSTATE_STOP, ia menggunakan antarmuka privat untuk memberi tahu driver yang mengontrol komponen kamera off-SoC yang menangkap tidak lagi diperlukan. Pada gilirannya, driver ini memanggil metode IWDFDevice2::ResumeIdle untuk memberi tahu kerangka kerja driver bahwa perangkat keras mereka menganggur. Sebagai tanggapan, kerangka kerja driver memulai transisi ke D3, yang menyebabkan IRP D3 mengalir melalui tumpukan driver perangkat kamera. (IRP D3 adalah IRP IRP_MJ_POWER yang menentukan nilai enumerasi DEVICE_POWER_STATE PowerDeviceD3.) Driver Windows ACPI, Acpi.sys, akan mengamati D3 IRP dan menjalankan metode _OFF sumber daya yang diidentifikasi oleh objek _PR3 di bawah perangkat kamera di namespace ACPI.

Kalimat terakhir dalam paragraf sebelumnya mengasumsikan bahwa sumber daya daya tidak memberikan daya ke perangkat apa pun selain satu perangkat kamera. Jika perangkat lain memiliki referensi ke sumber daya daya ini, Acpi.sys akan menjalankan metode _OFF hanya setelah semua perangkat lain yang mereferensikan sumber daya daya telah beralih ke D3. Untuk informasi selengkapnya, lihat Mengaktifkan Transisi ke D3cold.

Mengembalikan perangkat keras kamera ke status daya aktif adalah proses yang sama. Ketika driver pengontrol kamera mendeteksi pin pengambilan aliran pertama untuk memasuki status KSSTATE_ACQUIRE, driver pengontrol kamera berkomunikasi dengan driver untuk komponen SoC dan off-SoC lain yang terdiri dari subsistem kamera. Sebagai tanggapan, driver yang mengontrol unit pemrosesan gambar on-SoC memanggil metode IWDFDevice2::StopIdle, yang menginformasikan PEP bahwa perangkat keras unit pemrosesan gambar harus dinyalakan. Driver pengontrol kamera memberi tahu driver yang mengontrol komponen kamera di luar SoC bahwa mereka harus kembali ke status aktif. Pada gilirannya, driver ini memanggil StopIdle untuk memberi tahu kerangka kerja driver bahwa perangkat keras tidak lagi menganggur, yang menyebabkan IRP D0 mengalir melalui tumpukan driver perangkat kamera. (IRP D0 adalah IRP IRP_MJ_POWER yang menentukan nilai enumerasi DEVICE_POWER_STATE PowerDeviceD0.) Acpi.sys merespons D0 IRP dengan menjalankan metode _ON sumber daya yang diidentifikasi oleh objek _PR0 di bawah perangkat kamera di namespace ACPI.

Jika platform memiliki beberapa perangkat kamera, setiap perangkat kamera harus memiliki rel daya dan sumber daya yang dapat dialihkan secara independen yang dijelaskan dalam namespace ACPI. Untuk setiap perangkat kamera di namespace ACPI, integrator sistem harus menyediakan objek _PLD yang menunjukkan apakah perangkat kamera berada di bagian depan atau belakang komputer. Jika perangkat kamera dibangun ke dalam tutup komputer berbentuk clamshell dan menghadap pengguna saat tutup terbuka, objek _PLD perangkat ini harus menunjukkan bahwa kamera berada di bagian depan platform. Jika perangkat kamera dibangun ke dalam tutup komputer berbentuk clamshell dan berhadapan dengan pengguna ketika tutup terbuka, objek _PLD perangkat ini harus menunjukkan bahwa kamera berada di bagian belakang sistem.

Kekhawatiran bangun

Piranti keras perangkat kamera tidak boleh mendukung bangun. Windows tidak mengharapkan perangkat kamera dapat membangunkan SoC dari status daya terendahnya selama siaga modern. Banyak ponsel memungkinkan SoC untuk bangun dari tidur ketika pengguna menekan tombol kamera. Tombol kamera diperlakukan oleh Windows sebagai perangkat input pengguna yang operasinya terpisah dari dan terlepas dari integrasi sitem atau manajemen daya perangkat kamera, sensornya, dan lampu kilat opsional.