今天有空去研究camera的上电时序,对了,如果你喜欢文学,历史,哲学,可以关注公众号:二校五叔
1.高通平台对于camera的代码组织,大体上还是遵循Android的框架:
即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略;
在kernel中实现sensor的底层驱动;
对于最核心的sensor端的底层设置、ISP效果相关等代码则是单独进行了抽离,放在vendor中。
2.vendor中:
\vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\sensor_libs\ov5648_q5v22e
下面这个结构体便是上电时序
static struct msm_sensor_power_setting ov5648_q5v22e_power_setting[] = {
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_STANDBY,
.config_val = GPIO_OUT_LOW,
.delay = 2,
},
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_RESET,
.config_val = GPIO_OUT_LOW,
.delay = 2,
},
{
.seq_type = SENSOR_VREG,
.seq_val = CAM_VIO,
.config_val = 0,
.delay = 0,
},
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_VANA,
.config_val = GPIO_OUT_HIGH,
.delay = 1,
},
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_VDIG,
.config_val = GPIO_OUT_HIGH,
.delay = 5,
},
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_STANDBY,
.config_val = GPIO_OUT_HIGH,
.delay = 10,
},
{
.seq_type = SENSOR_GPIO,
.seq_val = SENSOR_GPIO_RESET,
.config_val = GPIO_OUT_HIGH,
.delay = 5,
},
{
.seq_type = SENSOR_CLK,
.seq_val = SENSOR_CAM_MCLK,
.config_val = 23880000,//24000000,//19200000,//23880000,
.del