7.5. ioctl VIDIOC_DBG_G_CHIP_INFO¶
7.5.1. 名稱¶
VIDIOC_DBG_G_CHIP_INFO - 識別電視卡上的晶片
7.5.2. 概要¶
-
VIDIOC_DBG_G_CHIP_INFO¶
int ioctl(int fd, VIDIOC_DBG_G_CHIP_INFO, struct v4l2_dbg_chip_info *argp)
7.5.3. 引數¶
fd由
open()返回的檔案描述符。argp指向 struct
v4l2_dbg_chip_info的指標。
7.5.4. 描述¶
注意
這是一個 實驗性 API 元素 介面,將來可能會發生變化。
出於驅動程式除錯的目的,此 ioctl 允許測試應用程式查詢驅動程式關於電視卡上存在的晶片的資訊。 正規應用程式不得使用它。 當您發現特定於晶片的錯誤時,請聯絡 linux-media 郵件列表 (https://linuxtv.org/lists.php),以便可以修復它。
此外,必須使用 CONFIG_VIDEO_ADV_DEBUG 選項編譯 Linux 核心才能啟用此 ioctl。
要查詢驅動程式,應用程式必須初始化 struct v4l2_dbg_chip_info 的 match.type 和 match.addr 或 match.name 欄位,並使用指向此結構的指標呼叫 ioctl VIDIOC_DBG_G_CHIP_INFO。 成功後,驅動程式會將有關所選晶片的資訊儲存在 name 和 flags 欄位中。
當 match.type 為 V4L2_CHIP_MATCH_BRIDGE 時,match.addr 選擇電視卡上的第 n 個橋接“晶片”。 您可以透過從零開始並遞增 match.addr 1 來列舉所有晶片,直到 ioctl VIDIOC_DBG_G_CHIP_INFO 失敗並出現 EINVAL 錯誤程式碼。 數字零始終選擇橋接晶片本身,例如,連線到 PCI 或 USB 匯流排的晶片。 非零數字標識橋接晶片的特定部分,例如 AC97 暫存器塊。
當 match.type 為 V4L2_CHIP_MATCH_SUBDEV 時,match.addr 選擇第 n 個子裝置。 這允許您列舉所有子裝置。
成功後,name 欄位將包含晶片名稱,如果驅動程式支援從裝置讀取暫存器,則 flags 欄位將包含 V4L2_CHIP_FL_READABLE,如果驅動程式支援將暫存器寫入裝置,則 flags 欄位將包含 V4L2_CHIP_FL_WRITABLE。
我們建議使用 v4l2-dbg 實用程式,而不是直接呼叫此 ioctl。 它可以從 LinuxTV v4l-dvb 儲存庫獲得; 有關訪問說明,請參閱 https://linuxtv.org/repo/。
__u32 |
|
有關可能的型別列表,請參閱 晶片匹配型別。 |
union { |
(anonymous) |
|
__u32 |
|
按此數字匹配晶片,根據 |
char |
|
按此名稱匹配晶片,根據 |
} |
||
-
type v4l2_dbg_chip_info¶
|
如何匹配晶片,請參閱 struct v4l2_dbg_match。 |
|
char |
|
晶片的名稱。 |
__u32 |
|
由驅動程式設定。 如果設定了 |
__u32 |
|
保留欄位,應用程式和驅動程式都必須將其設定為 0。 |
|
0 |
匹配卡上的第 n 個晶片,零表示橋接晶片。 不匹配子裝置。 |
|
4 |
匹配第 n 個子裝置。 |
7.5.5. 返回值¶
成功時返回 0,出錯時返回 -1,並適當設定 errno 變數。 通用錯誤程式碼在 通用錯誤程式碼 章節中描述。
- EINVAL
match_type無效或無法匹配任何裝置。