展锐平台的camera sensor驱动代码设计解析(3)

展锐平台的camera sensor驱动代码设计解析(1)
展锐平台的camera sensor驱动代码设计解析(2)
展锐平台的camera sensor驱动代码设计解析(3)

Camera驱动的基本配置及文件路径说明

  1. 驱动的配置在路径:\device\sprd\platform\board\camera\sensor_config.xml
  2. 驱动代码的路径在:\vendor\sprd\modules\libcamera\sensor\sensor_drv\classic下,里面有各个sensor厂商的驱动,比如Galaxycore,Superpix,Samsung等。

驱动.c文件的配置解析

在打开camera调用库的时候会调用到如下函数

void *sensor_ic_open_lib(void)
{
   
	return &g_ov8856_mipi_raw_info;
}

对于.c中的函数接口,里面的所有函数都是如下结构体函数指针对应的函数接口

/*==============================================================================
 * Description:
 * all ioctl functoins
 * you can add functions reference SENSOR_IOCTL_FUNC_TAB_T from sensor_drv_u.h
 *
 * add ioctl functions like this:
 * .power = ov8856_power_on,
 *============================================================================*/
static struct sensor_ic_ops s_ov8856_ops_tab = {
   
    .create_handle = ov8856_drv_handle_create,
    .delete_handle = ov8856_drv_handle_delete,
    /*get privage data*/
    .get_data = ov8856_drv_get_private_data,
    /*common interface*/
	.power = ov8856_drv_power_on,
	.identify = ov8856_drv_identify,
	.ex_write_exp = ov8856_drv_write_exposure,
	.write_gain_value = ov8856_drv_write_gain_value,
	
#if defined(CONFIG_DUAL_MODULE)
	.read_aec_info = ov8856_drv_read_aec_info,
#endif

    .ext_ops = {
   
        [SENSOR_IOCTL_BEFORE_SNAPSHOT].ops = ov8856_drv_before_snapshot,
        [SENSOR_IOCTL_STREAM_ON].ops = ov8856_drv_stream_on,
        [SENSOR_IOCTL_STREAM_OFF].ops = ov8856_drv_stream_off,
        /* expand interface,if you want to add your sub cmd ,
         *  you can add it in enum {@SENSOR_IOCTL_VAL_TYPE}
         */
        [SENSOR_IOCTL_ACCESS_VAL].ops = ov8856_drv_access_val,
		[SENSOR_IOCTL_CONTRAST].ops = ov8856_drv_set_saturation,
    }
};

ov8856_drv_handle_create

static cmr_int ov8856_drv_handle_create(struct sensor_ic_drv_init_para *init_param, cmr_handle* sns_ic_drv_handle) 
{
   
    cmr_int ret = SENSOR_SUCCESS;
    struct sensor_ic_drv_cxt * sns_drv_cxt = NULL;
    void *pri_data = NULL;

    ret = sensor_ic_drv_create(
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值