高通camera如何匹配I2C总线

1、dts配置

cci: qcom,cci@1b0c000 {

compatible = "qcom,cci";

...

pinctrl-names = "cci_default","cci_suspend";

pinctrl-0= <&cci0_default>;

pinctrl-1= <&cci0_sleep>;

gpios =<&msm_gpio 29 0>,//CAM_I2C_SCL

<&msm_gpio 30 0>;//CAM_I2C_SDA

...

};

2、kernel代码

代码:kernel/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c

static int msm_cci_probe(structplatform_device *pdev)

{

...

v4l2_subdev_init(&new_cci_dev->msm_sd.sd,&msm_cci_subdev_ops);//绑定操作集合

g_cci_subdev =&new_cci_dev->msm_sd.sd; //对外接口

...

}

static struct v4l2_subdev_core_opsmsm_cci_subdev_core_ops = {

.g_chip_ident =&msm_cci_subdev_g_chip_ident,

.ioctl = &msm_cci_subdev_ioctl,//控制接口函数

.interrupt_service_routine =msm_cci_irq_routine,

};

static const struct v4l2_subdev_opsmsm_cci_subdev_ops = {

.core = &msm_cci_subdev_core_ops,

};

static long msm_cci_subdev_ioctl(structv4l2_subdev *sd, unsigned int cmd, void *arg)

{

int32_t rc = 0;

CDBG("%s line %d\n",__func__, __LINE__);

switch (cmd) {

case VIDIOC_MSM_CCI_CFG:

rc = msm_cci_config(sd,arg);//具体的参数配置

break;

case MSM_SD_SHUTDOWN: {

struct msm_camera_cci_ctrlctrl_cmd;

ctrl_cmd.cmd = MSM_CCI_RELEASE;

rc = msm_cci_config(sd,&ctrl_cmd);

break;

}

default:

rc = -ENOIOCTLCMD;

}

CDBG("%s line %d rc %d\n",__func__, __LINE__, rc);

return rc;

}

static int32_t msm_cci_config(structv4l2_subdev *sd, struct msm_camera_cci_ctrl*cci_ctrl)

{

int32_t rc = 0;

CDBG("%s line %d cmd %d\n",__func__, __LINE__, cci_ctrl->cmd);

switch (cci_ctrl->cmd) {

case MSM_CCI_INIT:

rc =msm_cci_init(sd, cci_ctrl); //完成iic初始化

break;

case MSM_CCI_RELEASE:

rc = msm_cci_release(sd);

break;

case MSM_CCI_I2C_READ:

rc =msm_cci_i2c_read_bytes(sd, cci_ctrl); //iic

break;

case MSM_CCI_I2C_WRITE:

rc =msm_cci_i2c_write(sd, cci_ctrl); //iic

break;

case MSM_CCI_GPIO_WRITE:

break;

default:

rc = -ENOIOCTLCMD;

}

CDBG("%s line %d rc %d\n",__func__, __LINE__, rc);

cci_ctrl->status = rc;

return rc;

}

struct v4l2_subdev*msm_cci_get_subdev(void)

{

return g_cci_subdev;

}

注:kernel/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.h中会声明struct v4l2_subdev*msm_cci_get_subdev(void);以提供对外接口,当camera相关模块probe时会通过此接口得到g_cci_subdev。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高通Camera Tuning是指高通公司针对其移动平台的相机功能进行的优化调试工作。高通作为一家领先的移动芯片提供商,致力于提供优质的移动体验,其中相机功能在用户体验中起着重要的作用。 首先,高通Camera Tuning在硬件层面进行了优化。高通的芯片设计了专门的相机引擎,支持多种相机传感器,能够提供更强大的图像处理和摄像功能。此外,高通还在芯片层面解决了相机模块与主芯片之间的协作问题,提高了相机的响应速度和稳定性。 其次,高通Camera Tuning在软件层面进行了优化。高通开发了一系列的相机驱动程序和图像处理算法,通过对白平衡、曝光、对焦等参数进行调试,提高了照片的颜色还原度和曝光平衡性。此外,高通还提供了丰富的相机软件接口,使第三方开发者能够充分发挥相机模块的潜力。 最后,高通Camera Tuning还积极与设备制造商合作,共同打造优秀的相机系统。高通提供了相机调试工具和技术支持,帮助制造商在硬件设计和软件调试方面优化设备的相机性能。通过与高通的合作,设备制造商能够提供更出色的相机体验,满足用户对于拍照的需求。 总的来说,高通Camera Tuning通过在硬件和软件层面进行优化,以及与设备制造商的合作,致力于提供卓越的移动相机体验。这项工作不仅提高了相机的性能和功能,还使用户能够轻松拍摄高质量的照片和视频,享受更好的移动摄影体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值