初始化的时候最后一定要把mipi clk关掉
初始化的时候最后一定要把mipi clk关掉
初始化的时候最后一定要把mipi clk关掉
sunhz@R720xd:~/sl8541e/vendor/sprd/modules/libcamera$ git log -p sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.*
commit d0bf735575285ebff7ace504eed14479d6a0508f
Author: sunhouzan <sunhouzan@zhiqicheng.com>
Date: Tue Oct 23 20:49:09 2018 +0800
gc2033 can take raw photo
sensor stream off ,mipi clk 没有关闭导致再stream on的时候mipi状态不对,dcam timeout
diff --git a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
old mode 100755
new mode 100644
index 14e790e..f5631cd
--- a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
+++ b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
@@ -688,6 +688,7 @@ static cmr_int gc2033_drv_stream_on(cmr_handle handle, cmr_uint param)
#else
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x90);
#endif
+ hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x15, 0x06);
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x00);
/*END*/
/*delay*/
@@ -716,10 +717,11 @@ static cmr_int gc2033_drv_stream_off(cmr_handle handle, cmr_uint param)
usleep(20 * 1000);
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x03);
#if defined(GC2033MIPI_2LANE)
- hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x81);
+ hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x00);
#else
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x80);
#endif
+ hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x15, 0x02);
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x00);
/*END*/
/*delay*/
diff --git a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
index 22bbe84..4987bed 100644
--- a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
+++ b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
@@ -198,8 +198,8 @@ static const SENSOR_REG_T gc2033_init_setting[] = {
{0x88,0x73},
{0x89,0x03},
{0x90,0x01},
-{0x92,0x05},//2<= y <=6
-{0x94,0x05},//2<= x <=6
+{0x92,0x04},//2<= y <=6
+{0x94,0x04},//2<= x <=6
{0x95,0x04},//crop win height
{0x96,0x38},
{0x97,0x07},//crop win width
@@ -256,11 +256,11 @@ static const SENSOR_REG_T gc2033_init_setting[] = {
{0x01,0x5f},
{0x02,0x10},
{0x03,0x8a},
-{0x10,0x91},
+{0x10,0x81},
{0x11,0x2b},
{0x12,0x60},//lwc 1920*5/4
{0x13,0x09},
-{0x15,0x06},
+{0x15,0x02},
{0x36,0x88},
{0x21,0x08},
{0x22,0x02},
一定要把stream on/off 写好,开关mipi 使能输出
[SENSOR_IOCTL_STREAM_ON].ops = c2390_drv_stream_on,
[SENSOR_IOCTL_STREAM_OFF].ops = c2390_drv_stream_off,
严格按照sensor datasheet 写入开关mipi clk ,使能输出的时延
--- a/sensor/sensor_drv/classic/SmartSens/sc2363/sensor_sc2363_mipi_raw.c
+++ b/sensor/sensor_drv/classic/SmartSens/sc2363/sensor_sc2363_mipi_raw.c
@@ -629,20 +629,8 @@ static cmr_int sc2363_drv_stream_on(cmr_handle handle, cmr_uint param)
SENSOR_LOGI("E");
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3018,0x13);
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3019,0xfc);
-
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4603,0x00);//[0] data_fifo mipi mode
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4837,0x19);//[7:0] pclk period * 2
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4827,0x48);//[7:0] hs_prepare_time[7:0]
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x33aa,0x10);//save power
-
hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x0100,0x01);
-
- //usleep(10 * 1000);
-
-
return SENSOR_SUCCESS;
}
@@ -659,11 +647,6 @@ static cmr_int sc2363_drv_stream_off(cmr_handle handle, cmr_uint param)
SENSOR_IC_CHECK_HANDLE(handle);
struct sensor_ic_drv_cxt * sns_drv_cxt = (struct sensor_ic_drv_cxt *)handle;
- //close mipi
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3018,0x1f);
- //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3019,0xff);
- //{0x301c,0xb4},
-
ret = hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x0100,0x00);
if(ret)
SENSOR_LOGI("E error %d",ret);