3. MIPI CCS 摄像头传感器驱动程序

MIPI CCS 摄像头传感器驱动程序是针对符合 MIPI CCS 标准的摄像头传感器的通用驱动程序。它公开了三个子设备,分别代表像素阵列、分块器和缩放器。

由于各个设备的功能各不相同,驱动程序会根据硬件中存在的功能公开接口。

另请参阅 CCS 驱动程序内核文档

3.1. 像素阵列子设备

像素阵列子设备代表摄像头传感器的像素矩阵,以及许多兼容设备中存在的模拟裁剪功能。模拟裁剪使用实体的源焊盘 (0) 上的 V4L2_SEL_TGT_CROP 进行配置。像素矩阵的大小可以通过获取 V4L2_SEL_TGT_NATIVE_SIZE 目标来获得。

3.2. 分块器

分块器子设备代表传感器上的分块功能。为此,在接收焊盘 (0) 上支持选择目标 V4L2_SEL_TGT_COMPOSE

此外,如果设备没有缩放器或数字裁剪功能,则源焊盘 (1) 会公开另一个数字裁剪选择矩形,该矩形只能在线和帧的末尾进行裁剪。

3.3. 缩放器

缩放器子设备代表传感器的数字裁剪和缩放功能。当支持数字裁剪时,V4L2 选择目标 V4L2_SEL_TGT_CROP 用于在接收焊盘 (0) 上配置数字裁剪。缩放也使用接收焊盘 (0) 上的选择目标 V4L2_SEL_TGT_COMPOSE 进行配置。

此外,如果存在缩放器子设备,其源焊盘 (1) 会公开另一个数字裁剪选择矩形,该矩形只能在线和帧的末尾进行裁剪。

3.4. 数字和模拟裁剪

数字裁剪功能是指通过有效地丢弃某些数据来实现的裁剪。另一方面,模拟裁剪意味着永远不会检索裁剪的信息。对于摄像头传感器,永远不会从指定裁剪的配置选择矩形之外的像素矩阵读取模拟数据。这种差异会对设备时序产生影响,并且很可能也会影响功耗。

3.5. 私有控制

MIPI CCS 驱动程序在 V4L2_CID_USER_BASE_CCS 下实现了一些私有控制,用于控制符合 MIPI CCS 标准的摄像头传感器。

3.5.1. 模拟增益模型

CCS 定义了一个模拟增益模型,其中可以使用以下公式计算增益

增益 = 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 定义了另一个称为替代模拟增益的模拟增益模型。在这种情况下,计算实际增益的公式由线性和指数部分组成

增益 = 线性 * 2 ^ 指数

可以使用 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