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