3. MIPI CCS 攝像頭感測器驅動¶
MIPI CCS 攝像頭感測器驅動是適用於符合 MIPI CCS 標準的攝像頭感測器的通用驅動程式。它公開了三個子裝置,分別代表畫素陣列、分檔器和縮放器。
由於各個裝置的功能各不相同,該驅動程式基於硬體中存在的功能公開介面。
另請參閱 CCS 驅動核心文件。
3.1. 畫素陣列子裝置¶
畫素陣列子裝置表示攝像頭感測器的畫素矩陣,以及許多相容裝置中存在的模擬裁剪功能。模擬裁剪使用實體源 pad (0) 上的 V4L2_SEL_TGT_CROP 進行配置。畫素矩陣的大小可以透過獲取 V4L2_SEL_TGT_NATIVE_SIZE 目標來獲得。
3.2. 分檔器¶
分檔器子裝置表示感測器上的分檔功能。為此,sink pad (0) 上支援選擇目標 V4L2_SEL_TGT_COMPOSE。
此外,如果裝置沒有縮放器或數字裁剪功能,則源 pad (1) 公開另一個數字裁剪選擇矩形,該矩形只能在行和幀的末尾進行裁剪。
3.3. 縮放器¶
縮放器子裝置表示感測器的數字裁剪和縮放功能。當支援數字裁剪時,V4L2 選擇目標 V4L2_SEL_TGT_CROP 用於配置 sink pad (0) 上的數字裁剪。縮放使用 sink pad (0) 上的選擇目標 V4L2_SEL_TGT_COMPOSE 進行配置。
此外,如果存在縮放器子裝置,則其源 pad (1) 會公開另一個數字裁剪選擇矩形,該矩形只能在行和幀的末尾進行裁剪。
3.4. 數字和模擬裁剪¶
數字裁剪功能是指透過丟棄某些資料來進行裁剪。另一方面,模擬裁剪意味著永遠不會檢索裁剪的資訊。對於攝像頭感測器,模擬資料永遠不會從配置的選擇矩形之外的畫素矩陣中讀取,該矩形指定裁剪。這種差異會影響裝置時序,並且可能還會影響功耗。
3.5. 私有控制¶
MIPI CCS 驅動程式在 V4L2_CID_USER_BASE_CCS 下實現了一些私有控制元件,用於控制 MIPI CCS 相容的攝像頭感測器。
3.5.1. 模擬增益模型¶
CCS 定義了一種模擬增益模型,其中可以使用以下公式計算增益
gain = m0 * x + c0 / (m1 * x + c1)
m0 或 c0 將為零。可以從以下控制元件獲取特定於裝置的常量
V4L2_CID_CCS_ANALOGUE_GAIN_M0 V4L2_CID_CCS_ANALOGUE_GAIN_M1 V4L2_CID_CCS_ANALOGUE_GAIN_C0 V4L2_CID_CCS_ANALOGUE_GAIN_C1
在這種情況下,模擬增益(公式中的 x)透過 V4L2_CID_ANALOGUE_GAIN 控制。
3.5.2. 備用模擬增益模型¶
CCS 定義了另一種名為備用模擬增益的模擬增益模型。在這種情況下,用於計算實際增益的公式包括線性和指數部分
gain = linear * 2 ^ exponent
可以使用 V4L2_CID_CCS_ANALOGUE_LINEAR_GAIN 和 V4L2_CID_CCS_ANALOGUE_EXPONENTIAL_GAIN 控制元件分別設定 linear 和 exponent 因子
3.5.3. 陰影校正¶
CCS 標準支援鏡頭陰影校正。可以使用 V4L2_CID_CCS_SHADING_CORRECTION 控制該功能。此外,可以使用 V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL 更改亮度校正級別,其中值 0 表示不進行校正,而 128 表示將角落的亮度校正為比中心低 10%。
需要啟用陰影校正,亮度校正級別才能生效。
版權 © 2020 Intel Corporation