2.18. V4L2 闪光灯功能和数据结构

struct v4l2_flash_ctrl_data

闪光灯控制初始化数据,根据 LED 闪光灯类驱动程序在 v4l2_flash_config 中声明的功能进行填充

定义:

struct v4l2_flash_ctrl_data {
    struct v4l2_ctrl_config config;
    u32 cid;
};

成员

config

控制的初始化数据

cid

如果 config 字段已初始化,则包含 v4l2 闪光灯控制 ID,否则为 0

struct v4l2_flash_ops

V4L2 闪光灯操作

定义:

struct v4l2_flash_ops {
    int (*external_strobe_set)(struct v4l2_flash *v4l2_flash, bool enable);
    enum led_brightness (*intensity_to_led_brightness) (struct v4l2_flash *v4l2_flash, s32 intensity);
    s32 (*led_brightness_to_intensity) (struct v4l2_flash *v4l2_flash, enum led_brightness);
};

成员

external_strobe_set

通过硬件引脚状态断言设置闪光灯选通。

intensity_to_led_brightness

以设备特定的方式将强度转换为亮度

led_brightness_to_intensity

以设备特定的方式将亮度转换为强度。

struct v4l2_flash_config

V4L2 闪光灯子设备初始化数据

定义:

struct v4l2_flash_config {
    char dev_name[32];
    struct led_flash_setting intensity;
    u32 flash_faults;
    unsigned int has_external_strobe:1;
};

成员

dev_name

媒体实体的名称,在系统中是唯一的

intensity

LED 的非闪光灯选通约束

flash_faults

LED 闪光灯类设备可以报告的闪光灯故障的位掩码;相应的 LED_FAULT* 位定义在头文件 <linux/led-class-flash.h> 中可用

has_external_strobe

外部选通功能

struct v4l2_flash

闪光灯子设备上下文

定义:

struct v4l2_flash {
    struct led_classdev_flash *fled_cdev;
    struct led_classdev *iled_cdev;
    const struct v4l2_flash_ops *ops;
    struct v4l2_subdev sd;
    struct v4l2_ctrl_handler hdl;
    struct v4l2_ctrl **ctrls;
};

成员

fled_cdev

此子设备控制的 LED 闪光灯类设备

iled_cdev

表示与 LED 闪光灯类设备关联的指示灯 LED 的 LED 类设备

ops

V4L2 特定闪光灯操作

sd

V4L2 子设备

hdl

闪光灯控制处理程序

ctrls

指向控制的指针数组,其值定义子设备状态

struct v4l2_flash *v4l2_subdev_to_v4l2_flash(struct v4l2_subdev *sd)

从嵌入其中的 struct v4l2_subdev 返回 struct v4l2_flash

参数

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指针

struct v4l2_flash *v4l2_ctrl_to_v4l2_flash(struct v4l2_ctrl *c)

从嵌入其中的 struct v4l2_ctrl 返回 struct v4l2_flash

参数

struct v4l2_ctrl *c

指向 struct v4l2_ctrl 的指针

struct v4l2_flash *v4l2_flash_init(struct device *dev, struct fwnode_handle *fwn, struct led_classdev_flash *fled_cdev, const struct v4l2_flash_ops *ops, struct v4l2_flash_config *config)

初始化 V4L2 闪光灯 LED 子设备

参数

struct device *dev

闪光灯设备,例如 I2C 设备

struct fwnode_handle *fwn

LED 的 fwnode_handle,如果与设备的相同,则可以为 NULL

struct led_classdev_flash *fled_cdev

要包装的 LED 闪光灯类设备

const struct v4l2_flash_ops *ops

V4L2 闪光灯设备操作

struct v4l2_flash_config *config

V4L2 闪光灯子设备的初始化数据

描述

创建包装给定 LED 子系统设备的 V4L2 闪光灯子设备。ops 指针由 V4L2 闪光灯框架存储。一旦此函数返回,将不保留对 config 及其内容的引用。

返回

一个有效的指针,或者,当发生错误时,返回值使用 ERR_PTR() 进行编码。使用 IS_ERR() 进行检查,并使用 PTR_ERR() 获取数值返回值。

struct v4l2_flash *v4l2_flash_indicator_init(struct device *dev, struct fwnode_handle *fwn, struct led_classdev *iled_cdev, struct v4l2_flash_config *config)

初始化 V4L2 指示器子设备

参数

struct device *dev

闪光灯设备,例如 I2C 设备

struct fwnode_handle *fwn

LED 的 fwnode_handle,如果与设备的相同,则可以为 NULL

struct led_classdev *iled_cdev

代表指示器 LED 的 LED 闪光类设备

struct v4l2_flash_config *config

V4L2 闪光灯子设备的初始化数据

描述

创建包装给定 LED 子系统设备的 V4L2 闪光灯子设备。ops 指针由 V4L2 闪光灯框架存储。一旦此函数返回,将不保留对 config 及其内容的引用。

返回

一个有效的指针,或者,当发生错误时,返回值使用 ERR_PTR() 进行编码。使用 IS_ERR() 进行检查,并使用 PTR_ERR() 获取数值返回值。

void v4l2_flash_release(struct v4l2_flash *v4l2_flash)

释放 V4L2 闪光子设备

参数

struct v4l2_flash *v4l2_flash

要释放的 V4L2 闪光子设备

描述

释放 V4L2 闪光子设备。