admin管理员组

文章数量:1654379

展锐平台的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(

本文标签: 代码平台Camerasensor