这篇教程C++ v4l2_set_subdev_hostdata函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中v4l2_set_subdev_hostdata函数的典型用法代码示例。如果您正苦于以下问题:C++ v4l2_set_subdev_hostdata函数的具体用法?C++ v4l2_set_subdev_hostdata怎么用?C++ v4l2_set_subdev_hostdata使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了v4l2_set_subdev_hostdata函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: nxp_video_streamonstatic int nxp_video_streamon(struct file *file, void *fh, enum v4l2_buf_type i){ int ret; u32 pad; struct nxp_video *me = file->private_data; struct v4l2_subdev *subdev = _get_remote_subdev(me, i, &pad); void *hostdata_back; vmsg("%s: me %p, %s/n", __func__, me, me->name); if (me->vbq) { ret = vb2_streamon(me->vbq, i); if (ret < 0) { pr_err("%s: failed to vb2_streamon()/n", __func__); return ret; } } else { struct vb2_queue *vq = v4l2_m2m_get_vq(me->m2m_ctx, i); ret = vb2_streamon(vq, i); if (ret < 0) { pr_err("%s: m2m, failed to vb2_streamon()/n", __func__); return ret; } } /* for mlc subdev */ hostdata_back = v4l2_get_subdev_hostdata(subdev); v4l2_set_subdev_hostdata(subdev, me->name); ret = v4l2_subdev_call(subdev, video, s_stream, 1); v4l2_set_subdev_hostdata(subdev, hostdata_back); return ret;}
开发者ID:iTOP4418,项目名称:kernel-3.4.39,代码行数:33,
示例2: msm_csi_register_subdevsint msm_csi_register_subdevs(struct msm_cam_media_controller *p_mctl, int core_index, struct msm_cam_server_dev *server_dev){ int rc = -ENODEV; /* register csiphy subdev */ p_mctl->csiphy_sdev = server_dev->csiphy_device[core_index]; if (!p_mctl->csiphy_sdev) goto out; v4l2_set_subdev_hostdata(p_mctl->csiphy_sdev, p_mctl); /* register csid subdev */ p_mctl->csid_sdev = server_dev->csid_device[core_index]; if (!p_mctl->csid_sdev) goto out; v4l2_set_subdev_hostdata(p_mctl->csid_sdev, p_mctl); /* register ispif subdev */ p_mctl->ispif_sdev = server_dev->ispif_device[0]; if (!p_mctl->ispif_sdev) goto out; v4l2_set_subdev_hostdata(p_mctl->ispif_sdev, p_mctl); rc = 0; return rc;out: p_mctl->ispif_sdev = NULL; return rc;}
开发者ID:AmperificSuperKANG,项目名称:android_kernel_mako,代码行数:29,
示例3: fimc_is_get_sensor_name/* * Sensor subdevice helper functions */static struct v4l2_subdev *fimc_md_register_is_sensor(struct fimc_md *fmd, struct fimc_sensor_info *s_info, int index){ struct v4l2_subdev *sd = NULL; const char *sd_name; if (fmd->fimc_is == NULL) return NULL; sd = &fmd->fimc_is->sensor[index].subdev; /* Override FIMC-IS subdev name */ sd_name = fimc_is_get_sensor_name(s_info->pdata.is_sensor_info); pr_info("fimc_md_register_is_sensor : sd_name (%s)/n", sd_name); if (sd_name == NULL) { v4l2_err(sd, "Null FIMC-IS sensor name/n"); return NULL; } strlcpy(sd->name, sd_name, sizeof(sd->name)); v4l2_set_subdev_hostdata(sd, s_info); sd->grp_id = FIMC_IS_SENSOR_GROUP_ID; v4l2_info(&fmd->v4l2_dev, "Registered logical sensor subdevice %s/n", sd->name); return sd;}
开发者ID:253627764,项目名称:GT-I9500,代码行数:28,
示例4: camera_sensor_csi/* * Configure MIPI CSI physical parameters. * @port: ATOMISP_CAMERA_PORT_PRIMARY or ATOMISP_CAMERA_PORT_SECONDARY * @lanes: for ATOMISP_CAMERA_PORT_PRIMARY, there could be 2 or 4 lanes * for ATOMISP_CAMERA_PORT_SECONDARY, there is only one lane. * @format: MIPI CSI pixel format, see include/linux/atomisp_platform.h * @bayer_order: MIPI CSI bayer order, see include/linux/atomisp_platform.h */int camera_sensor_csi(struct v4l2_subdev *sd, u32 port, u32 lanes, u32 format, u32 bayer_order, int flag){ struct i2c_client *client = v4l2_get_subdevdata(sd); struct camera_mipi_info *csi = NULL; if (flag) { csi = kzalloc(sizeof(*csi), GFP_KERNEL); if (!csi) { dev_err(&client->dev, "out of memory/n"); return -ENOMEM; } csi->port = port; csi->num_lanes = lanes; csi->input_format = format; csi->raw_bayer_order = bayer_order; v4l2_set_subdev_hostdata(sd, (void *)csi); csi->metadata_format = ATOMISP_INPUT_FORMAT_EMBEDDED; csi->metadata_effective_width = NULL; dev_info(&client->dev, "camera pdata: port: %d lanes: %d order: %8.8x/n", port, lanes, bayer_order); } else { csi = v4l2_get_subdev_hostdata(sd); kfree(csi); } return 0;}
开发者ID:NicholasPace,项目名称:android_kernel_asus_moorefield-stock,代码行数:37,
示例5: register_fimc_entitystatic int register_fimc_entity(struct fimc_md *fmd, struct fimc_dev *fimc){ struct v4l2_subdev *sd; struct exynos_media_pipeline *ep; int ret; if (WARN_ON(fimc->id >= FIMC_MAX_DEVS || fmd->fimc[fimc->id])) return -EBUSY; sd = &fimc->vid_cap.subdev; sd->grp_id = GRP_ID_FIMC; ep = fimc_md_pipeline_create(fmd); if (!ep) return -ENOMEM; v4l2_set_subdev_hostdata(sd, ep); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, sd); if (!ret) { if (!fmd->pmf && fimc->pdev) fmd->pmf = &fimc->pdev->dev; fmd->fimc[fimc->id] = fimc; fimc->vid_cap.user_subdev_api = fmd->user_subdev_api; } else { v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.%d (%d)/n", fimc->id, ret); } return ret;}
开发者ID:020gzh,项目名称:linux,代码行数:30,
示例6: rvin_digital_notify_boundstatic int rvin_digital_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, struct v4l2_async_subdev *asd){ struct rvin_dev *vin = notifier_to_vin(notifier); int ret; v4l2_set_subdev_hostdata(subdev, vin); /* Find source and sink pad of remote subdevice */ ret = rvin_find_pad(subdev, MEDIA_PAD_FL_SOURCE); if (ret < 0) return ret; vin->digital.source_pad = ret; ret = rvin_find_pad(subdev, MEDIA_PAD_FL_SINK); vin->digital.sink_pad = ret < 0 ? 0 : ret; vin->digital.subdev = subdev; vin_dbg(vin, "bound subdev %s source pad: %u sink pad: %u/n", subdev->name, vin->digital.source_pad, vin->digital.sink_pad); return 0;}
开发者ID:mdamt,项目名称:linux,代码行数:27,
示例7: i2c_get_adapter/* * Sensor subdevice helper functions */static struct v4l2_subdev *fimc_md_register_sensor(struct fimc_md *fmd, struct fimc_sensor_info *s_info){ struct i2c_adapter *adapter; struct v4l2_subdev *sd = NULL; if (!s_info || !fmd) return NULL; adapter = i2c_get_adapter(s_info->pdata.i2c_bus_num); if (!adapter) { v4l2_warn(&fmd->v4l2_dev, "Failed to get I2C adapter %d, deferring probe/n", s_info->pdata.i2c_bus_num); return ERR_PTR(-EPROBE_DEFER); } sd = v4l2_i2c_new_subdev_board(&fmd->v4l2_dev, adapter, s_info->pdata.board_info, NULL); if (IS_ERR_OR_NULL(sd)) { i2c_put_adapter(adapter); v4l2_warn(&fmd->v4l2_dev, "Failed to acquire subdev %s, deferring probe/n", s_info->pdata.board_info->type); return ERR_PTR(-EPROBE_DEFER); } v4l2_set_subdev_hostdata(sd, s_info); sd->grp_id = SENSOR_GROUP_ID; v4l2_info(&fmd->v4l2_dev, "Registered sensor subdevice %s/n", s_info->pdata.board_info->type); return sd;}
开发者ID:AllenDou,项目名称:linux,代码行数:35,
示例8: register_fimc_lite_entity/* * MIPI-CSIS, FIMC and FIMC-LITE platform devices registration. */static int register_fimc_lite_entity(struct fimc_md *fmd, struct fimc_lite *fimc_lite){ struct v4l2_subdev *sd; struct exynos_media_pipeline *ep; int ret; if (WARN_ON(fimc_lite->index >= FIMC_LITE_MAX_DEVS || fmd->fimc_lite[fimc_lite->index])) return -EBUSY; sd = &fimc_lite->subdev; sd->grp_id = GRP_ID_FLITE; ep = fimc_md_pipeline_create(fmd); if (!ep) return -ENOMEM; v4l2_set_subdev_hostdata(sd, ep); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, sd); if (!ret) fmd->fimc_lite[fimc_lite->index] = fimc_lite; else v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.LITE%d/n", fimc_lite->index); return ret;}
开发者ID:020gzh,项目名称:linux,代码行数:31,
示例9: camera_sensor_csi/* * Configure MIPI CSI physical parameters. * @port: ATOMISP_CAMERA_PORT_PRIMARY or ATOMISP_CAMERA_PORT_SECONDARY * @lanes: for ATOMISP_CAMERA_PORT_PRIMARY, there could be 2 or 4 lanes * for ATOMISP_CAMERA_PORT_SECONDARY, there is only one lane. * @format: MIPI CSI pixel format, see include/linux/atomisp_platform.h * @bayer_order: MIPI CSI bayer order, see include/linux/atomisp_platform.h */int camera_sensor_csi(struct v4l2_subdev *sd, u32 port, u32 lanes, u32 format, u32 bayer_order, bool need_sof_signal, int flag){ struct i2c_client *client = v4l2_get_subdevdata(sd); struct camera_mipi_info *csi = NULL; if (flag) { csi = kzalloc(sizeof(*csi), GFP_KERNEL); if (!csi) { dev_err(&client->dev, "out of memory/n"); return -ENOMEM; } csi->port = port; csi->num_lanes = lanes; csi->input_format = format; csi->raw_bayer_order = bayer_order; csi->need_sof_signal = need_sof_signal; v4l2_set_subdev_hostdata(sd, (void *)csi); } else { csi = v4l2_get_subdev_hostdata(sd); kfree(csi); } return 0;}
开发者ID:kamarush,项目名称:ZTE_GXIn_Kernel-3.0.8,代码行数:34,
示例10: msm_axi_subdev_initint msm_axi_subdev_init(struct v4l2_subdev *sd, struct msm_cam_media_controller *mctl){ int rc = 0; struct axi_ctrl_t *axi_ctrl = v4l2_get_subdevdata(sd); v4l2_set_subdev_hostdata(sd, mctl); spin_lock_init(&axi_ctrl->tasklet_lock); INIT_LIST_HEAD(&axi_ctrl->tasklet_q); spin_lock_init(&axi_ctrl->share_ctrl->sd_notify_lock); axi_ctrl->share_ctrl->vfebase = ioremap(axi_ctrl->vfemem->start, resource_size(axi_ctrl->vfemem)); if (!axi_ctrl->share_ctrl->vfebase) { rc = -ENOMEM; pr_err("%s: vfe ioremap failed/n", __func__); goto remap_failed; } if (axi_ctrl->fs_vfe == NULL) { axi_ctrl->fs_vfe = regulator_get(&axi_ctrl->pdev->dev, "vdd"); if (IS_ERR(axi_ctrl->fs_vfe)) { pr_err("%s: Regulator FS_VFE get failed %ld/n", __func__, PTR_ERR(axi_ctrl->fs_vfe)); axi_ctrl->fs_vfe = NULL; goto fs_failed; } else if (regulator_enable(axi_ctrl->fs_vfe)) { pr_err("%s: Regulator FS_VFE enable failed/n", __func__); regulator_put(axi_ctrl->fs_vfe); axi_ctrl->fs_vfe = NULL; goto fs_failed; } } rc = msm_cam_clk_enable(&axi_ctrl->pdev->dev, vfe40_clk_info, axi_ctrl->vfe_clk, ARRAY_SIZE(vfe40_clk_info), 1); if (rc < 0) goto clk_enable_failed; msm_camio_bus_scale_cfg( mctl->sdata->pdata->cam_bus_scale_table, S_INIT); msm_camio_bus_scale_cfg( mctl->sdata->pdata->cam_bus_scale_table, S_PREVIEW); axi_ctrl->share_ctrl->register_total = VFE40_REGISTER_TOTAL; enable_irq(axi_ctrl->vfeirq->start); return rc;clk_enable_failed: regulator_disable(axi_ctrl->fs_vfe); regulator_put(axi_ctrl->fs_vfe); axi_ctrl->fs_vfe = NULL;fs_failed: iounmap(axi_ctrl->share_ctrl->vfebase); axi_ctrl->share_ctrl->vfebase = NULL;remap_failed: disable_irq(axi_ctrl->vfeirq->start); return rc;}
开发者ID:ChangYeoun,项目名称:10.1,代码行数:60,
示例11: i2c_get_adapter/* * Sensor subdevice helper functions */static struct v4l2_subdev *fimc_md_register_sensor(struct fimc_md *fmd, struct fimc_sensor_info *s_info){ struct i2c_adapter *adapter; struct v4l2_subdev *sd = NULL; if (!s_info || !fmd) return NULL; adapter = i2c_get_adapter(s_info->pdata->i2c_bus_num); if (!adapter) return NULL; sd = v4l2_i2c_new_subdev_board(&fmd->v4l2_dev, adapter, s_info->pdata->board_info, NULL); if (IS_ERR_OR_NULL(sd)) { i2c_put_adapter(adapter); v4l2_err(&fmd->v4l2_dev, "Failed to acquire subdev/n"); return NULL; } v4l2_set_subdev_hostdata(sd, s_info); sd->grp_id = SENSOR_GROUP_ID; v4l2_info(&fmd->v4l2_dev, "Registered sensor subdevice %s/n", s_info->pdata->board_info->type); return sd;}
开发者ID:openube,项目名称:android_kernel_sony_c2305,代码行数:29,
示例12: fimc_md_of_add_sensor/* Register I2C client subdev associated with @node. */static int fimc_md_of_add_sensor(struct fimc_md *fmd, struct device_node *node, int index){ struct fimc_sensor_info *si; struct i2c_client *client; struct v4l2_subdev *sd; int ret; if (WARN_ON(index >= ARRAY_SIZE(fmd->sensor))) return -EINVAL; si = &fmd->sensor[index]; client = of_find_i2c_device_by_node(node); if (!client) return -EPROBE_DEFER; device_lock(&client->dev); if (!client->driver || !try_module_get(client->driver->driver.owner)) { ret = -EPROBE_DEFER; v4l2_info(&fmd->v4l2_dev, "No driver found for %s/n", node->full_name); goto dev_put; } /* Enable sensor's master clock */ ret = __fimc_md_set_camclk(fmd, &si->pdata, true); if (ret < 0) goto mod_put; sd = i2c_get_clientdata(client); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, sd); __fimc_md_set_camclk(fmd, &si->pdata, false); if (ret < 0) goto mod_put; v4l2_set_subdev_hostdata(sd, &si->pdata); if (si->pdata.fimc_bus_type == FIMC_BUS_TYPE_ISP_WRITEBACK) sd->grp_id = GRP_ID_FIMC_IS_SENSOR; else sd->grp_id = GRP_ID_SENSOR; si->subdev = sd; v4l2_info(&fmd->v4l2_dev, "Registered sensor subdevice: %s (%d)/n", sd->name, fmd->num_sensors); fmd->num_sensors++;mod_put: module_put(client->driver->driver.owner);dev_put: device_unlock(&client->dev); put_device(&client->dev); return ret;}
开发者ID:garyvan,项目名称:openwrt-1.6,代码行数:56,
示例13: nxp_video_streamoffstatic int nxp_video_streamoff(struct file *file, void *fh, enum v4l2_buf_type i){ int ret; u32 pad; struct nxp_video *me; struct v4l2_subdev *subdev; void *hostdata_back; me = file->private_data; subdev = _get_remote_subdev(me, i, &pad); if (me->vbq) { ret = vb2_streamoff(me->vbq, i); if (ret < 0) { printk(KERN_ERR "%s: failed to vb2_streamoff() %s/n", __func__, me->name); return 0; } } else { struct vb2_queue *vq = v4l2_m2m_get_vq(me->m2m_ctx, i); ret = vb2_streamoff(vq, i); if (ret < 0) { pr_err(KERN_ERR "%s: m2m, failed to vb2_streamoff() %s/n", __func__, me->name); return 0; } } vmsg("%s %s/n", __func__, me->name); hostdata_back = v4l2_get_subdev_hostdata(subdev); v4l2_set_subdev_hostdata(subdev, me->name); ret = v4l2_subdev_call(subdev, video, s_stream, 0); v4l2_set_subdev_hostdata(subdev, hostdata_back); vmsg("%s: %s exit/n", __func__, me->name); return ret;}
开发者ID:iTOP4418,项目名称:kernel-3.4.39,代码行数:39,
示例14: v4l2_set_subdev_hostdatastatic struct v4l2_subdev *gsc_cap_register_sensor(struct gsc_dev *gsc, int i){ struct exynos_md *mdev = gsc->mdev[MDEV_CAPTURE]; struct v4l2_subdev *sd = NULL; sd = mdev->sensor_sd[i]; if (!sd) return NULL; v4l2_set_subdev_hostdata(sd, &gsc->cap.sensor[i]); return sd;}
开发者ID:ArthySundaram,项目名称:chromeos-kvm,代码行数:13,
示例15: msm_csi_register_subdevsint msm_csi_register_subdevs(struct msm_cam_media_controller *p_mctl, uint8_t csiphy_code_index, uint8_t csid_core_index, struct msm_cam_server_dev *server_dev){ int rc = -ENODEV; p_mctl->csic_sdev = server_dev->csic_device[csid_core_index]; if (!p_mctl->csic_sdev) goto out; v4l2_set_subdev_hostdata(p_mctl->csic_sdev, p_mctl); rc = 0; p_mctl->ispif_sdev = NULL; return rc;out: p_mctl->ispif_sdev = NULL; return rc;}
开发者ID:AbdulrahmanAmir,项目名称:Dorimanx-LG-G2-D802-Kernel,代码行数:19,
示例16: msm_vpe_subdev_initint msm_vpe_subdev_init(struct v4l2_subdev *sd, void *data, struct platform_device *pdev){ int rc = 0; CDBG("%s:begin", __func__); if (atomic_read(&vpe_init_done)) { pr_err("%s: VPE has been initialized", __func__); return -EBUSY; } atomic_set(&vpe_init_done, 1); rc = msm_vpe_resource_init(pdev); if (rc < 0) { atomic_set(&vpe_init_done, 0); return rc; } v4l2_set_subdev_hostdata(sd, data); spin_lock_init(&vpe_ctrl->lock); CDBG("%s:end", __func__); return rc;}
开发者ID:jld,项目名称:gp-keon-kernel,代码行数:21,
示例17: pr_infostatic struct v4l2_subdev *gsc_cap_register_sensor(struct gsc_dev *gsc, int i){ struct exynos_md *mdev = gsc->mdev[MDEV_CAPTURE]; struct v4l2_subdev *sd = NULL; sd = mdev->sensor_sd[i]; if (!sd) return NULL; if (sd->host_priv) { pr_info("~~~ Attention please! ~~~~/n"); dev_info(&gsc->pdev->dev, "%s(): sd(0x%p)'s host_priv has already/n" "been set to 0x%p in FIMC-LITE driver!!!/n" "Consequently I will NOT change it to 0x%p in case " "of FIMC-LITE driver being contaminated!!!/n", __func__, sd, sd->host_priv, &gsc->cap.sensor[i]); } else { v4l2_set_subdev_hostdata(sd, &gsc->cap.sensor[i]); } return sd;}
开发者ID:hedongjie,项目名称:m35x,代码行数:21,
示例18: fimc_lite_register_callbackstatic int fimc_lite_register_callback(struct device *dev, void *p){ struct fimc_lite *fimc = dev_get_drvdata(dev); struct fimc_md *fmd = p; int ret; if (fimc == NULL || fimc->index >= FIMC_LITE_MAX_DEVS) return 0; fimc->subdev.grp_id = FLITE_GROUP_ID; v4l2_set_subdev_hostdata(&fimc->subdev, (void *)&fimc_pipeline_ops); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, &fimc->subdev); if (ret) { v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC-LITE.%d (%d)/n", fimc->index, ret); return ret; } fmd->fimc_lite[fimc->index] = fimc; return 0;}
开发者ID:Forzaferrarileo,项目名称:linux,代码行数:23,
示例19: register_fimc_is_entitystatic int register_fimc_is_entity(struct fimc_md *fmd, struct fimc_is *is){ struct v4l2_subdev *sd = &is->isp.subdev; struct exynos_media_pipeline *ep; int ret; /* Allocate pipeline object for the ISP capture video node. */ ep = fimc_md_pipeline_create(fmd); if (!ep) return -ENOMEM; v4l2_set_subdev_hostdata(sd, ep); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, sd); if (ret) { v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC-ISP (%d)/n", ret); return ret; } fmd->fimc_is = is; return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:23,
示例20: i2c_get_adapter/* * Sensor subdevice helper functions */static struct v4l2_subdev *fimc_md_register_sensor(struct fimc_md *fmd, struct fimc_source_info *si){ struct i2c_adapter *adapter; struct v4l2_subdev *sd = NULL; if (!si || !fmd) return NULL; /* * If FIMC bus type is not Writeback FIFO assume it is same * as sensor_bus_type. */ si->fimc_bus_type = si->sensor_bus_type; adapter = i2c_get_adapter(si->i2c_bus_num); if (!adapter) { v4l2_warn(&fmd->v4l2_dev, "Failed to get I2C adapter %d, deferring probe/n", si->i2c_bus_num); return ERR_PTR(-EPROBE_DEFER); } sd = v4l2_i2c_new_subdev_board(&fmd->v4l2_dev, adapter, si->board_info, NULL); if (IS_ERR_OR_NULL(sd)) { i2c_put_adapter(adapter); v4l2_warn(&fmd->v4l2_dev, "Failed to acquire subdev %s, deferring probe/n", si->board_info->type); return ERR_PTR(-EPROBE_DEFER); } v4l2_set_subdev_hostdata(sd, si); sd->grp_id = GRP_ID_SENSOR; v4l2_info(&fmd->v4l2_dev, "Registered sensor subdevice %s/n", sd->name); return sd;}
开发者ID:garyvan,项目名称:openwrt-1.6,代码行数:40,
示例21: fimc_register_callback/* * MIPI CSIS and FIMC platform devices registration. */static int fimc_register_callback(struct device *dev, void *p){ struct fimc_dev *fimc = dev_get_drvdata(dev); struct v4l2_subdev *sd; struct fimc_md *fmd = p; int ret; if (fimc == NULL || fimc->id >= FIMC_MAX_DEVS) return 0; sd = &fimc->vid_cap.subdev; sd->grp_id = FIMC_GROUP_ID; v4l2_set_subdev_hostdata(sd, (void *)&fimc_pipeline_ops); ret = v4l2_device_register_subdev(&fmd->v4l2_dev, sd); if (ret) { v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.%d (%d)/n", fimc->id, ret); return ret; } fmd->fimc[fimc->id] = fimc; return 0;}
开发者ID:Forzaferrarileo,项目名称:linux,代码行数:27,
示例22: sensor_2p2_probe//.........这里部分代码省略......... device = &core->sensor[pdata->id]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { probe_err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); clear_bit(FIMC_IS_MODULE_GPIO_ON, &module->state); module->pdata = pdata; module->pdev = pdev; module->sensor_id = SENSOR_NAME_S5K2P2; module->subdev = subdev_module; module->device = pdata->id; module->client = NULL; module->active_width = 5312; module->active_height = 2990; module->pixel_width = module->active_width + 16; module->pixel_height = module->active_height + 10; module->max_framerate = 300; module->position = pdata->position; module->mode = CSI_MODE_DT_ONLY; module->lanes = CSI_DATA_LANES_4; module->vcis = ARRAY_SIZE(vci_2p2); module->vci = vci_2p2; module->sensor_maker = "SLSI"; module->sensor_name = "S5K2P2"; module->setfile_name = "setfile_2p2.bin"; module->cfgs = ARRAY_SIZE(config_2p2); module->cfg = config_2p2; module->ops = NULL; module->private_data = NULL; ext = &module->ext; ext->mipi_lane_num = module->lanes; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = SENSOR_NAME_S5K2P2; ext->sensor_con.peri_type = SE_I2C; ext->sensor_con.peri_setting.i2c.channel = pdata->sensor_i2c_ch; ext->sensor_con.peri_setting.i2c.slave_address = pdata->sensor_i2c_addr; ext->sensor_con.peri_setting.i2c.speed = 400000; if (pdata->af_product_name != ACTUATOR_NAME_NOTHING) { ext->actuator_con.product_name = pdata->af_product_name; ext->actuator_con.peri_type = SE_I2C; ext->actuator_con.peri_setting.i2c.channel = pdata->af_i2c_ch; ext->actuator_con.peri_setting.i2c.slave_address = pdata->af_i2c_addr; ext->actuator_con.peri_setting.i2c.speed = 400000; } if (pdata->flash_product_name != FLADRV_NAME_NOTHING) { ext->flash_con.product_name = pdata->flash_product_name; ext->flash_con.peri_type = SE_GPIO; ext->flash_con.peri_setting.gpio.first_gpio_port_no = pdata->flash_first_gpio; ext->flash_con.peri_setting.gpio.second_gpio_port_no = pdata->flash_second_gpio; } ext->from_con.product_name = FROMDRV_NAME_NOTHING; if (pdata->companion_product_name != COMPANION_NAME_NOTHING) { ext->companion_con.product_name = pdata->companion_product_name; ext->companion_con.peri_info0.valid = true; ext->companion_con.peri_info0.peri_type = SE_SPI; ext->companion_con.peri_info0.peri_setting.spi.channel = pdata->companion_spi_channel; ext->companion_con.peri_info1.valid = true; ext->companion_con.peri_info1.peri_type = SE_I2C; ext->companion_con.peri_info1.peri_setting.i2c.channel = pdata->companion_i2c_ch; ext->companion_con.peri_info1.peri_setting.i2c.slave_address = pdata->companion_i2c_addr; ext->companion_con.peri_info1.peri_setting.i2c.speed = 400000; ext->companion_con.peri_info2.valid = true; ext->companion_con.peri_info2.peri_type = SE_FIMC_LITE; ext->companion_con.peri_info2.peri_setting.fimc_lite.channel = FLITE_ID_D; } else { ext->companion_con.product_name = pdata->companion_product_name; } if (pdata->ois_product_name != OIS_NAME_NOTHING) { ext->ois_con.product_name = pdata->ois_product_name; ext->ois_con.peri_type = SE_I2C; ext->ois_con.peri_setting.i2c.channel = pdata->ois_i2c_ch; ext->ois_con.peri_setting.i2c.slave_address = pdata->ois_i2c_addr; ext->ois_con.peri_setting.i2c.speed = 400000; } else { ext->ois_con.product_name = pdata->ois_product_name; ext->ois_con.peri_type = SE_NULL; } v4l2_subdev_init(subdev_module, &subdev_ops); v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->sensor_id);p_err: probe_info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:friedrich420,项目名称:S6_AEL_Kernel_Multivariant_LL-5.1.1,代码行数:101,
示例23: sensor_3l2_probeint sensor_3l2_probe(struct i2c_client *client, const struct i2c_device_id *id){ int ret = 0; struct fimc_is_core *core; struct v4l2_subdev *subdev_module; struct fimc_is_module_enum *module; struct fimc_is_device_sensor *device; struct sensor_open_extended *ext; BUG_ON(!fimc_is_dev); core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev); if (!core) { err("core device is not yet probed"); return -EPROBE_DEFER; } device = &core->sensor[SENSOR_S5K3L2_INSTANCE]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); module->id = SENSOR_NAME_S5K3L2; module->subdev = subdev_module; module->device = SENSOR_S5K3L2_INSTANCE; module->client = client; module->active_width = 4128; module->active_height = 3096; module->margin_left = 8; module->margin_right = 8; module->margin_top = 6; module->margin_bottom = 4; module->pixel_width = module->active_width + 16; module->pixel_height = module->active_height + 10; module->max_framerate = 120; module->position = SENSOR_POSITION_REAR; module->mode = CSI_MODE_CH0_ONLY; module->lanes = CSI_DATA_LANES_4; module->sensor_maker = "SLSI"; module->sensor_name = "S5K3L2"; module->setfile_name = "setfile_3l2.bin"; module->cfgs = ARRAY_SIZE(config_3l2); module->cfg = config_3l2; module->ops = NULL; module->private_data = NULL;#ifdef CONFIG_OF module->power_setpin = sensor_3l2_power_setpin;#endif ext = &module->ext; ext->mipi_lane_num = module->lanes; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = SENSOR_NAME_S5K3L2; ext->sensor_con.peri_type = SE_I2C; ext->sensor_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C0; ext->sensor_con.peri_setting.i2c.slave_address = 0x5A; ext->sensor_con.peri_setting.i2c.speed = 400000; ext->actuator_con.product_name = ACTUATOR_NAME_DW9804; ext->actuator_con.peri_type = SE_I2C; ext->actuator_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C1; ext->actuator_con.peri_setting.i2c.slave_address = 0x18; ext->actuator_con.peri_setting.i2c.speed = 400000; /* Flash is not working now, it will define agian after solving kernel panic*/ ext->flash_con.product_name = FLADRV_NAME_RT5033; ext->flash_con.peri_type = SE_GPIO; ext->flash_con.peri_setting.gpio.first_gpio_port_no = 1; ext->flash_con.peri_setting.gpio.second_gpio_port_no = 2; ext->from_con.product_name = FROMDRV_NAME_NOTHING; ext->companion_con.product_name = COMPANION_NAME_NOTHING; if (client) v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops); else v4l2_subdev_init(subdev_module, &subdev_ops); v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->id);p_err: info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:BigBot96,项目名称:android_kernel_samsung_gts2wifi,代码行数:94,
示例24: sensor_ov5693_probeint sensor_ov5693_probe(struct i2c_client *client, const struct i2c_device_id *id){ int ret = 0; struct fimc_is_core *core; struct v4l2_subdev *subdev_module; struct fimc_is_module_enum *module; struct fimc_is_device_sensor *device; struct sensor_open_extended *ext; BUG_ON(!fimc_is_dev); core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev); if (!core) { err("core device is not yet probed"); return -EPROBE_DEFER; } device = &core->sensor[SENSOR_OV5693_INSTANCE]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); module->id = SENSOR_NAME_OV5693; module->subdev = subdev_module; module->device = SENSOR_OV5693_INSTANCE; module->client = client; module->active_width = 2592 -16; module->active_height = 1944 -10; module->pixel_width = module->active_width + 16; module->pixel_height = module->active_height + 10; module->max_framerate = 300; module->position = SENSOR_POSITION_FRONT; module->mode = CSI_MODE_CH0_ONLY; module->lanes = CSI_DATA_LANES_2; module->setfile_name = "setfile_ov5693.bin"; module->cfgs = ARRAY_SIZE(config_ov5693); module->cfg = config_ov5693; module->ops = NULL; module->private_data = NULL; ext = &module->ext; ext->mipi_lane_num = module->lanes; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = SENSOR_NAME_OV5693; ext->sensor_con.peri_type = SE_I2C; ext->sensor_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C1; ext->sensor_con.peri_setting.i2c.slave_address = 0x6c; ext->sensor_con.peri_setting.i2c.speed = 400000; ext->actuator_con.product_name = ACTUATOR_NAME_NOTHING; ext->flash_con.product_name = FLADRV_NAME_NOTHING; ext->from_con.product_name = FROMDRV_NAME_NOTHING; ext->companion_con.product_name = COMPANION_NAME_NOTHING; ext->sOISCon.product_name = OIS_NAME_NOTHING; if (client) v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops); else v4l2_subdev_init(subdev_module, &subdev_ops); v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->id);p_err: info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:qkdang,项目名称:m462,代码行数:78,
示例25: sensor_3h7_probeint sensor_3h7_probe(struct i2c_client *client, const struct i2c_device_id *id){ int ret = 0; struct fimc_is_core *core; struct v4l2_subdev *subdev_module; struct fimc_is_module_enum *module; struct fimc_is_device_sensor *device; struct sensor_open_extended *ext; BUG_ON(!fimc_is_dev); core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev); if (!core) { err("core device is not yet probed"); return -EPROBE_DEFER; } device = &core->sensor[SENSOR_S5K3H7_INSTANCE]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); module->id = SENSOR_NAME_S5K3H7; module->subdev = subdev_module; module->device = SENSOR_S5K3H7_INSTANCE; module->client = client; module->active_width = 3248; module->active_height = 2438; module->pixel_width = module->active_width + 16; module->pixel_height = module->active_height + 10; module->max_framerate = 30; module->position = SENSOR_POSITION_REAR; module->setfile_name = "setfile_3h7.bin"; module->cfgs = ARRAY_SIZE(config_3h7); module->cfg = config_3h7; module->ops = NULL; module->private_data = NULL; ext = &module->ext; ext->mipi_lane_num = 4; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = 0; ext->sensor_con.peri_type = SE_I2C; ext->sensor_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C0; ext->sensor_con.peri_setting.i2c.slave_address = 0x20; ext->sensor_con.peri_setting.i2c.speed = 400000; ext->actuator_con.product_name = ACTUATOR_NAME_AK7343; ext->actuator_con.peri_type = SE_I2C; ext->actuator_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C0; ext->flash_con.product_name = FLADRV_NAME_KTD267; ext->flash_con.peri_type = SE_GPIO; ext->flash_con.peri_setting.gpio.first_gpio_port_no = 17; ext->flash_con.peri_setting.gpio.second_gpio_port_no = 16; ext->from_con.product_name = FROMDRV_NAME_NOTHING; ext->companion_con.product_name = COMPANION_NAME_NOTHING;#ifdef DEFAULT_S5K3H7_DRIVING v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops);#else v4l2_subdev_init(subdev_module, &subdev_ops);#endif v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->id);p_err: info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:Fevax,项目名称:kernel_samsung_exynos5422,代码行数:81,
示例26: sensor_4h5_probeint sensor_4h5_probe(struct i2c_client *client, const struct i2c_device_id *id){ int ret = 0; struct fimc_is_core *core; struct v4l2_subdev *subdev_module; struct fimc_is_module_enum *module; struct fimc_is_device_sensor *device; struct sensor_open_extended *ext; BUG_ON(!fimc_is_dev); core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev); if (!core) { err("core device is not yet probed"); return -EPROBE_DEFER; } device = &core->sensor[SENSOR_S5K4H5_INSTANCE]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); clear_bit(FIMC_IS_MODULE_GPIO_ON, &module->state); module->sensor_id = SENSOR_NAME_S5K4H5; module->subdev = subdev_module; module->device = SENSOR_S5K4H5_INSTANCE; module->ops = NULL; module->client = client; module->active_width = 3264; module->active_height = 2448; module->pixel_width = module->active_width + 16; module->pixel_height = module->active_height + 10; module->max_framerate = 120; module->position = SENSOR_POSITION_REAR; module->mode = CSI_MODE_CH0_ONLY; module->lanes = CSI_DATA_LANES_4; module->bitwidth = 10; module->sensor_maker = "SLSI"; module->sensor_name = "S5K4H5"; module->setfile_name = "setfile_4h5.bin"; module->cfgs = ARRAY_SIZE(config_4h5); module->cfg = config_4h5; module->ops = NULL; module->private_data = NULL; ext = &module->ext; ext->mipi_lane_num = module->lanes; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = 0; ext->sensor_con.peri_type = SE_I2C; ext->sensor_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C0; ext->sensor_con.peri_setting.i2c.slave_address = 0x6E; ext->sensor_con.peri_setting.i2c.speed = 400000; ext->actuator_con.product_name = ACTUATOR_NAME_DW9804; ext->actuator_con.peri_type = SE_I2C; ext->actuator_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C0; ext->flash_con.product_name = FLADRV_NAME_RT5033; ext->flash_con.peri_type = SE_GPIO; ext->flash_con.peri_setting.gpio.first_gpio_port_no = 8; ext->flash_con.peri_setting.gpio.second_gpio_port_no = 6; /* ext->from_con.product_name = FROMDRV_NAME_W25Q80BW; */ ext->from_con.product_name = FROMDRV_NAME_NOTHING; ext->mclk = 0; ext->mipi_lane_num = 0; ext->mipi_speed = 0; ext->fast_open_sensor = 0; ext->self_calibration_mode = 0; ext->I2CSclk = I2C_L0; ext->preprocessor_con.product_name = PREPROCESSOR_NAME_NOTHING; if (client) { v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops); } else { v4l2_subdev_init(subdev_module, &subdev_ops); } v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->id);p_err: probe_info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:GAXUSXX,项目名称:G935FGaXusKernel2,代码行数:97,
示例27: sensor_4e5_probeint sensor_4e5_probe(struct i2c_client *client, const struct i2c_device_id *id){ int ret = 0; struct fimc_is_core *core; struct v4l2_subdev *subdev_module; struct fimc_is_module_enum *module; struct fimc_is_device_sensor *device; struct sensor_open_extended *ext; BUG_ON(!fimc_is_dev); core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev); if (!core) { err("core device is not yet probed"); return -EPROBE_DEFER; } device = &core->sensor[SENSOR_S5K4E5_INSTANCE]; subdev_module = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_module) { err("subdev_module is NULL"); ret = -ENOMEM; goto p_err; } module = &device->module_enum[atomic_read(&core->resourcemgr.rsccount_module)]; atomic_inc(&core->resourcemgr.rsccount_module); module->id = SENSOR_NAME_S5K4E5; module->subdev = subdev_module; module->device = SENSOR_S5K4E5_INSTANCE; module->client = client; module->pixel_width = 2560 + 16; module->pixel_height = 1920 + 10; module->active_width = 2560; module->active_height = 1920; module->max_framerate = 30; module->position = SENSOR_POSITION_REAR; module->mode = CSI_MODE_CH0_ONLY; module->lanes = CSI_DATA_LANES_4; module->sensor_maker = "SLSI"; module->sensor_name = "S5K4E5"; module->setfile_name = "setfile_4e5.bin"; module->cfgs = 0; module->cfg = NULL; module->ops = NULL; module->private_data = NULL; ext = &module->ext; ext->mipi_lane_num = module->lanes; ext->I2CSclk = I2C_L0; ext->sensor_con.product_name = 0; ext->actuator_con.product_name = ACTUATOR_NAME_DWXXXX; ext->actuator_con.peri_type = SE_I2C; ext->actuator_con.peri_setting.i2c.channel = SENSOR_CONTROL_I2C1; ext->flash_con.product_name = FLADRV_NAME_KTD267; ext->flash_con.peri_type = SE_GPIO; ext->flash_con.peri_setting.gpio.first_gpio_port_no = 17; ext->flash_con.peri_setting.gpio.second_gpio_port_no = 16; ext->from_con.product_name = FROMDRV_NAME_NOTHING; ext->companion_con.product_name = COMPANION_NAME_NOTHING; if (client) v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops); else v4l2_subdev_init(subdev_module, &subdev_ops); v4l2_set_subdevdata(subdev_module, module); v4l2_set_subdev_hostdata(subdev_module, device); snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE, "sensor-subdev.%d", module->id);p_err: info("%s(%d)/n", __func__, ret); return ret;}
开发者ID:bynarie,项目名称:android_kernel_samsung_gts210wifi,代码行数:81,
示例28: fimc_is_csi_probeint fimc_is_csi_probe(void *parent, u32 instance){ int ret = 0; struct v4l2_subdev *subdev_csi; struct fimc_is_device_csi *csi; struct fimc_is_device_sensor *device = parent; BUG_ON(!device); subdev_csi = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL); if (!subdev_csi) { merr("subdev_csi is NULL", device); ret = -ENOMEM; goto p_err; } device->subdev_csi = subdev_csi; csi = kzalloc(sizeof(struct fimc_is_device_csi), GFP_KERNEL); if (!csi) { merr("csi is NULL", device); ret = -ENOMEM; goto p_err_free1; } csi->instance = instance; switch(instance) { case CSI_ID_A: csi->base_reg = (unsigned long *)MIPICSI0_REG_BASE;#ifdef DBG_CSIISR ret = request_irq(IRQ_MIPICSI0, fimc_is_csi_isr, IRQF_SHARED, "mipi-csi0", csi); if (ret) { err("request_irq(IRQ_MIPICSI0) is fail(%d)", ret); goto p_err_free2; }#endif break; case CSI_ID_B: csi->base_reg = (unsigned long *)MIPICSI1_REG_BASE;#ifdef DBG_CSIISR ret = request_irq(IRQ_MIPICSI1, fimc_is_csi_isr, IRQF_SHARED, "mipi-csi1", csi); if (ret) { err("request_irq(IRQ_MIPICSI1) is fail(%d)", ret); goto p_err_free2; }#endif break; case CSI_ID_C: csi->base_reg = (unsigned long *)MIPICSI2_REG_BASE; break; default: err("instance is invalid(%d)", instance); ret = -EINVAL; goto p_err_free2; } v4l2_subdev_init(subdev_csi, &subdev_ops); v4l2_set_subdevdata(subdev_csi, csi); v4l2_set_subdev_hostdata(subdev_csi, device); snprintf(subdev_csi->name, V4L2_SUBDEV_NAME_SIZE, "csi-subdev.%d", instance); ret = v4l2_device_register_subdev(&device->v4l2_dev, subdev_csi); if (ret) { merr("v4l2_device_register_subdev is fail(%d)", device, ret); goto p_err_free2; } info("[%d][FRT:D] %s(%d)/n", instance, __func__, ret); return 0;p_err_free2: kfree(csi);p_err_free1: kfree(subdev_csi); device->subdev_csi = NULL;p_err: err("[%d][FRT:D] %s(%d)/n", instance, __func__, ret); return ret;}
开发者ID:qkdang,项目名称:m462,代码行数:87,
注:本文中的v4l2_set_subdev_hostdata函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ v4l2_set_subdevdata函数代码示例 C++ v4l2_open函数代码示例 |