media_entity_cleanup(&sd->entity);//销毁级联的entity pad//set private datav4l2_set_subdevdata(&dev->sd, dev);//如果是i2c client设备,还可以用如下api设置 private datastaticinlinevoidi2c_set_clientdata(structi2c_client *dev,void*data){ dev_set_drvdata(&dev->dev, data); }staticinlinevoid*...
v4l2_get_subdevdata(sd); struct camera *priv = to_camera(sd); unsigned int val = 0; int ret = 0; dev_dbg(&client->dev, "%s: 0x%llx\n", __func__, reg->reg); ret = regmap_read(priv->regmap, reg->reg & 0xffff, &val); if...
对于常用的i2c_client结构体,i2c_set_clientdata函数可用于保存一个v4l2_subdev指针,i2c_get_clientdata可以获取一个v4l2_subdev指针;对于其他总线可能需要使用其他相关函数。 [include/media/v4l2-subdev.h]// 将i2c_client的指针保存到v4l2_subdev结构体的dev_priv成员中staticinlinevoidv4l2_set_subdevdata(structv4l2...
设置/获取subdev私有数据 static inline void v4l2_set_subdevdata(struct v4l2_subdev *sd, void *p) { sd->dev_priv = p; } static inline void *v4l2_get_subdevdata(const struct v4l2_subdev *sd) { return sd->dev_priv; } 设置/获取host私有数据 static inline void v4l2_set_subdev_hostdata(struc...
建议使用v4l2_set_subdevdata()将这个结构体的指针保存在v4l2_subdev的私有数据域(dev_priv)中。可以更方便的通过v4l2_subdev找到实际的低层总线特定设备数据。 对于常用的i2c_client结构体,i2c_set_clientdata函数可用于保存一个v4l2_subdev指针,i2c_get_clientdata可以获取一个v4l2_subdev指针;对于其他总线可能需要使用...
struct i2c_client *client = v4l2_get_subdevdata(subdev); struct <sensor> *sensor = client_to_<sensor>(client); struct vvcam_sccb_data_s reg; uint32_t value = 0; long ret = 0; if(!sensor){ return -EINVAL; } switch (cmd) { ...
v4l2_set_subdevdata(&priv->subdev, p); strncpy(priv->, dev_name(&pdev->dev), V4L2_SUBDEV_NAME_SIZE); ret = v4l2_device_register_subdev(&ici->v4l2_dev, &priv->subdev); if (ret) goto evdrs; return ret; evdrs: platform_set_drvdata(pdev, NULL); ...
control's drvdata points to the subdev */ platform_set_drvdata(pdev, &priv->subdev); /* Set the control device reference */ icd->control = &pdev->dev; ici = to_soc_camera_host(icd->parent); v4l2_subdev_init(&priv->subdev, &platform_subdev_ops); v4l2_set_subdevdata(&priv->subd...
{ - struct i2c_client *client = v4l2_get_subdevdata(sd); struct au8522_state *state = to_state(sd); - if (!v4l2_chip_match_i2c_client(client, ®->match)) - return -EINVAL; - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; reg->val = au8522_readreg(state, reg->reg & 0x...
问在设置V4L2处理程序后添加自定义V4L2控件ENV4L2英文全称是Video for Linux2,它是专门为视频设备设计的...