9.1.14. MIPI CCS 攝像頭感測器驅動程式¶
MIPI CCS 攝像頭感測器驅動程式是 MIPI CCS 相容攝像頭感測器的通用驅動程式。
另請參閱 CCS 驅動程式 UAPI 文件。
9.1.14.1. CCS 靜態資料¶
MIPI CCS 驅動程式支援所有相容裝置的 CCS 靜態資料,包括不僅相容 CCS 1.1 的裝置,還包括 CCS 1.0 和 SMIA(++)。對於 CCS,檔名格式為
ccs/ccs-sensor-vvvv-mmmm-rrrr.fw(感測器)和 ccs/ccs-module-vvvv-mmmm-rrrr.fw(模組)。
對於 SMIA++ 相容裝置,相應的檔名為
ccs/smiapp-sensor-vv-mmmm-rr.fw(感測器)和 ccs/smiapp-module-vv-mmmm-rrrr.fw(模組)。
對於 SMIA(非 ++)相容裝置,靜態資料檔名為
ccs/smia-sensor-vv-mmmm-rr.fw(感測器)。
vvvv 或 vv 分別表示 MIPI 和 SMIA 製造商 ID,mmmm 表示型號 ID,rrrr 或 rr 表示修訂號。
9.1.14.1.1. CCS 工具¶
CCS 工具是一組用於處理 CCS 靜態資料檔案的工具。CCS 工具包括人類可讀的 CCS 靜態資料 YAML 格式的定義,幷包含將其轉換為二進位制檔案的程式。
9.1.14.2. 暫存器定義生成器¶
ccs-regs.asc 檔案包含 MIPI CCS 暫存器定義,用於生成 C 原始碼檔案,以便用 C 語言編寫的程式可以更好地使用這些定義。由於生成的檔案之間存在許多依賴關係,請不要手動修改它們,因為這很容易出錯並且徒勞,而是更改生成它們的指令碼。
9.1.14.2.1. 用法¶
按照慣例,呼叫指令碼的方式如下,以更新 CCS 驅動程式定義
$ Documentation/driver-api/media/drivers/ccs/mk-ccs-regs -k \
-e drivers/media/i2c/ccs/ccs-regs.h \
-L drivers/media/i2c/ccs/ccs-limits.h \
-l drivers/media/i2c/ccs/ccs-limits.c \
-c Documentation/driver-api/media/drivers/ccs/ccs-regs.asc
9.1.15. CCS PLL 計算器¶
CCS PLL 計算器用於計算 PLL 配置,給定感測器的功能以及板配置和使用者指定的配置。由於包含所有這些配置的配置空間非常大,因此 PLL 計算器並非完全微不足道。然而,對於驅動程式來說,它相對簡單易用。
PLL 計算器實現的 PLL 模型對應於 MIPI CCS 1.1。
-
struct ccs_pll_branch_fr¶
CCS PLL 配置(前端)
定義:
struct ccs_pll_branch_fr {
u16 pre_pll_clk_div;
u16 pll_multiplier;
u32 pll_ip_clk_freq_hz;
u32 pll_op_clk_freq_hz;
};
成員
pre_pll_clk_divPLL 前時鐘分頻器
pll_multiplierPLL 倍頻器
pll_ip_clk_freq_hzPLL 輸入時鐘頻率
pll_op_clk_freq_hzPLL 輸出時鐘頻率
描述
CCS PLL 樹的單個分支前端。
-
struct ccs_pll_branch_bk¶
CCS PLL 配置(後端)
定義:
struct ccs_pll_branch_bk {
u16 sys_clk_div;
u16 pix_clk_div;
u32 sys_clk_freq_hz;
u32 pix_clk_freq_hz;
};
成員
sys_clk_div系統時鐘分頻器
pix_clk_div畫素時鐘分頻器
sys_clk_freq_hz系統時鐘頻率
pix_clk_freq_hz畫素時鐘頻率
描述
CCS PLL 樹的單個分支後端。
-
struct ccs_pll¶
完整 CCS PLL 配置
定義:
struct ccs_pll {
u8 bus_type;
u8 op_lanes;
u8 vt_lanes;
struct {
u8 lanes;
} csi2;
u8 binning_horizontal;
u8 binning_vertical;
u8 scale_m;
u8 scale_n;
u8 bits_per_pixel;
u8 op_bits_per_lane;
u16 flags;
u32 link_freq;
u32 ext_clk_freq_hz;
struct ccs_pll_branch_fr vt_fr;
struct ccs_pll_branch_bk vt_bk;
struct ccs_pll_branch_fr op_fr;
struct ccs_pll_branch_bk op_bk;
u32 pixel_rate_csi;
u32 pixel_rate_pixel_array;
};
成員
bus_type資料匯流排型別,CCS_PLL_BUS_TYPE_*(輸入)
op_lanes工作通道數(輸入)
vt_lanes影片時序通道數(輸入)
csi2CSI-2 相關引數
csi2.lanesCSI-2 資料通道數(輸入)
binning_horizontal水平合併因子(輸入)
binning_vertical垂直合併因子(輸入)
scale_m降頻因子,M 分量,[16, max](輸入)
scale_n降頻因子,N 分量,通常為 16(輸入)
bits_per_pixel輸出資料匯流排上每畫素的位數(輸入)
op_bits_per_lane每個 OP 通道的位數(輸入)
flagsCCS_PLL_FLAG_*(輸入)
link_freq選擇的鏈路頻率(輸入)
ext_clk_freq_hz外部時鐘頻率,即感測器的輸入時鐘(輸入)
vt_fr影片時序前端配置(輸出)
vt_bk影片時序後端配置(輸出)
op_fr工作時序前端配置(輸出)
op_bk工作時序後端配置(輸出)
pixel_rate_csi輸出資料匯流排上的畫素速率(輸出)
pixel_rate_pixel_array感測器畫素陣列中的標稱畫素速率(輸出)
描述
計算 CCS PLL 配置所需的所有資訊。
-
struct ccs_pll_branch_limits_fr¶
CCS PLL 前端限制
定義:
struct ccs_pll_branch_limits_fr {
u16 min_pre_pll_clk_div;
u16 max_pre_pll_clk_div;
u32 min_pll_ip_clk_freq_hz;
u32 max_pll_ip_clk_freq_hz;
u16 min_pll_multiplier;
u16 max_pll_multiplier;
u32 min_pll_op_clk_freq_hz;
u32 max_pll_op_clk_freq_hz;
};
成員
min_pre_pll_clk_div最小 PLL 前時鐘分頻器
max_pre_pll_clk_div最大 PLL 前時鐘分頻器
min_pll_ip_clk_freq_hz最小 PLL 輸入時鐘頻率
max_pll_ip_clk_freq_hz最大 PLL 輸入時鐘頻率
min_pll_multiplier最小 PLL 倍頻器
max_pll_multiplier最大 PLL 倍頻器
min_pll_op_clk_freq_hz最小 PLL 輸出時鐘頻率
max_pll_op_clk_freq_hz最大 PLL 輸出時鐘頻率
-
struct ccs_pll_branch_limits_bk¶
CCS PLL 後端限制
定義:
struct ccs_pll_branch_limits_bk {
u16 min_sys_clk_div;
u16 max_sys_clk_div;
u32 min_sys_clk_freq_hz;
u32 max_sys_clk_freq_hz;
u16 min_pix_clk_div;
u16 max_pix_clk_div;
u32 min_pix_clk_freq_hz;
u32 max_pix_clk_freq_hz;
};
成員
min_sys_clk_div最小系統時鐘分頻器
max_sys_clk_div最大系統時鐘分頻器
min_sys_clk_freq_hz最小系統時鐘頻率
max_sys_clk_freq_hz最大系統時鐘頻率
min_pix_clk_div最小畫素時鐘分頻器
max_pix_clk_div最大畫素時鐘分頻器
min_pix_clk_freq_hz最小畫素時鐘頻率
max_pix_clk_freq_hz最大畫素時鐘頻率
-
struct ccs_pll_limits¶
CCS PLL 限制
定義:
struct ccs_pll_limits {
u32 min_ext_clk_freq_hz;
u32 max_ext_clk_freq_hz;
struct ccs_pll_branch_limits_fr vt_fr;
struct ccs_pll_branch_limits_bk vt_bk;
struct ccs_pll_branch_limits_fr op_fr;
struct ccs_pll_branch_limits_bk op_bk;
u32 min_line_length_pck_bin;
u32 min_line_length_pck;
};
成員
min_ext_clk_freq_hz最小外部時鐘頻率
max_ext_clk_freq_hz最大外部時鐘頻率
vt_fr影片時序前端限制
vt_bk影片時序後端限制
op_fr工作時序前端限制
op_bk工作時序後端限制
min_line_length_pck_bin最小行長度(畫素,帶合併)
min_line_length_pck最小行長度(畫素,不帶合併)
-
int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *limits, struct ccs_pll *pll)¶
根據輸入引數計算 CCS PLL 配置
引數
struct device *dev裝置指標,用於列印訊息
const struct ccs_pll_limits *limits感測器特定的限制
struct ccs_pll *pll給定的 PLL 配置
描述
根據限制以及給定的裝置特定、系統特定或使用者配置的輸入資料計算 CCS PLL 配置。
版權所有 © 2020 英特爾公司