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_GAINV4L2_CID_CCS_ANALOGUE_EXPONENTIAL_GAIN 控制元件分別設定 linearexponent 因子

3.5.3. 陰影校正

CCS 標準支援鏡頭陰影校正。可以使用 V4L2_CID_CCS_SHADING_CORRECTION 控制該功能。此外,可以使用 V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL 更改亮度校正級別,其中值 0 表示不進行校正,而 128 表示將角落的亮度校正為比中心低 10%。

需要啟用陰影校正,亮度校正級別才能生效。

版權 © 2020 Intel Corporation