GC0409 上电时序?怎么读不到ID ?请教高手kd_camera_hw.c

上电需要的代码:
else if ((pinSetIdx == 1) && currsensorName && (0 == strcmp(SENSOR_DRVNAME_GC0409_mipi_RAW, currSensorName)))
{
//enable active sensor
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {
//RST pin,active low
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");}
mdelay(5);
//PDN pin,high
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed! \n");}
mdelay(5);
}
//DOVDD
printk("[ON_general 1.8V]sensorIdx:%d \n",SensorIdx);
if(TRUE != hwpowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name))
{
PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
mdelay(5);
//AVDD
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name))
{
PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
mdelay(5);
//DVDD
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name))
{
PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
mdelay(5);
#if 0
// AF_VCC
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name))
{
PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n");
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
#endif
mdelay(10);
//PDN pin,low
//enable active sensor
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {
//RST pin
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");}
mdelay(5);
//PDN pin
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed! \n");}
mdelay(20);
}
//PDN pin,hight
//enable active sensor
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {
//RST pin,active low
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");}
mdelay(5);
//PDN pin,high
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed! \n");}
mdelay(5);
}
// low psd
//enable active sensor
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {
//RST pin
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");}
mdelay(5);
//PDN pin
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed! \n");}
mdelay(5);
}
//disable inactive sensor
if(pinSetIdx == 0 || pinSetIdx == 2) {//disable sub
if (GPIO_CAMERA_INVALID != pinSet[1][IDX_PS_CMRST]) {
//if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
//if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
//if(mt_set_gpio_out(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");} //low == reset sensor
if(mt_set_gpio_out(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed! \n");} //high == power down lens module
}
}
else {
if (GPIO_CAMERA_INVALID != pinSet[0][IDX_PS_CMRST]) {
//if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed! \n");}
if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed! \n");}
//if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed! \n");}
if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed! \n");}
//if(mt_set_gpio_out(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed! \n");} //low == reset sensor
if(mt_set_gpio_out(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed! \n");} //high == power down lens module
}
}
}
else
{
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) {
PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name))
{
PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) {
PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n");
//return -EIO;
//goto _kdCISModulePowerOn_exit_;
}
}
log:
17.473044].(1)[135:mediaserver][ON_general 1.8V]sensorIdx:2
[ 17.473798].(1)[135:mediaserver][Power/PMIC] [hwPowerOn] acquire powerId:18 index:0 mod_name: kd_camera_hw powerVolt:1800
[ 17.484107].(1)[135:mediaserver][Power/PMIC] [18] PMU LDO Enable
[ 17.484896].(1)[135:mediaserver][Power/PMIC] [dct_pmic_VCAM_IO_enable] 1
[ 17.490776].(1)[135:mediaserver][Power/PMIC] [hwPowerOn] acquire powerId:21 index:0 mod_name: kd_camera_hw powerVolt:2800
[ 17.492158].(1)[135:mediaserver][Power/PMIC] [21] PMU LDO Enable
[ 17.492935].(1)[135:mediaserver][Power/PMIC] ****[dct_pmic_VCAMA_sel] value=2800
[ 17.493903].(1)[135:mediaserver][Power/PMIC] [dct_pmic_VCAMA_enable] 1
[ 17.509151].(1)[135:mediaserver][Power/PMIC] [hwPowerOn] acquire powerId:17 index:0 mod_name: kd_camera_hw powerVolt:1500
[ 17.510534].(1)[135:mediaserver][Power/PMIC] [17] PMU LDO Enable
[ 17.511310].(1)[135:mediaserver][Power/PMIC] ****[dct_pmic_VCAMD_sel] value=1500
[ 17.512277].(1)[135:mediaserver][Power/PMIC] [dct_pmic_VCAMD_enable] 1
[ 17.537356].(0)[1:init]socket_accept[5155]:fd=8
[ 17.623919].(1)[135:mediaserver][mt-i2c]ERROR,363: id=1,addr: 21, transfer error
[ 17.624906].(1)[135:mediaserver][mt-i2c]ERROR,369: I2C_ACKERR
[ 17.625634].(1)[135:mediaserver][mt-i2c]I2C structure:
[ 17.625640].(1)[135:mediaserver][mt-i2c]Clk=17062,Id=1,Speed mode=1,St_rs=0,Dma_en=0,Op=1,Poll_en=0,Irq_stat=3
[ 17.625648].(1)[135:mediaserver][mt-i2c]Trans_len=1,Trans_num=1,Trans_auxlen=0,Data_size=ffff,speed=200
[ 17.625655].(1)[135:mediaserver][mt-i2c]Trans_stop=1,Trans_comp=1,Trans_error=2
[ 17.629628].(1)[135:mediaserver][mt-i2c]base address 0xf1008000
[ 17.630376].(1)[135:mediaserver][mt-i2c]I2C register:
[ 17.630382].(1)[135:mediaserver][mt-i2c]SLAVE_ADDR=42,INTR_MASK=f8,INTR_STAT=0,CONTROL=28,TRANSFER_LEN=1
[ 17.630390].(1)[135:mediaserver][mt-i2c]TRANSAC_LEN=1,DELAY_LEN=2,TIMING=102a,START=0,FIFO_STAT=1101
[ 17.630397].(1)[135:mediaserver][mt-i2c]IO_CONFIG=3,HS=102,DCM_EN=0,DEBUGSTAT=40,EXT_CONF=1800
[ 17.634531].(1)[135:mediaserver][mt-i2c]Clock stat(0x10003018) is 0x02beeffd, enable
[ 17.635507].(1)[135:mediaserver][mt-i2c]mt_get_gpio_in I2C0_SDA=1,I2C0_SCA=1,I2C1_SDA=1,I2C1_SCA=1
[ 17.636666].(1)[135:mediaserver]ERROR: GC0409MIPI_read_cmos_sensor
[ 17.638439].(0)[135:mediaserver][mt-i2c]ERROR,363: id=1,addr: 21, transfer error
[ 17.639360].(0)[135:mediaserver][mt-i2c]ERROR,369: I2C_ACKERR
[ 17.640088].(0)[135:mediaserver][mt-i2c]I2C structure:
[ 17.640094].(0)[135:mediaserver][mt-i2c]Clk=17062,Id=1,Speed mode=1,St_rs=0,Dma_en=0,Op=1,Poll_en=0,Irq_stat=3
[ 17.640102].(0)[135:mediaserver][mt-i2c]Trans_len=1,Trans_num=1,Trans_auxlen=0,Data_size=ffff,speed=200
[ 17.640109].(0)[135:mediaserver][mt-i2c]Trans_stop=1,Trans_comp=1,Trans_error=2
[ 17.644353].(0)[135:mediaserver][mt-i2c]base address 0xf1008000
[ 17.645105].(0)[135:mediaserver][mt-i2c]I2C register:
[ 17.645111].(0)[135:mediaserver][mt-i2c]SLAVE_ADDR=42,INTR_MASK=f8,INTR_STAT=0,CONTROL=28,TRANSFER_LEN=1
[ 17.645119].(0)[135:mediaserver][mt-i2c]TRANSAC_LEN=1,DELAY_LEN=2,TIMING=102a,START=0,FIFO_STAT=1101
[ 17.645126].(0)[135:mediaserver][mt-i2c]IO_CONFIG=3,HS=102,DCM_EN=0,DEBUGSTAT=40,EXT_CONF=1800
[ 17.649323].(0)[135:mediaserver][mt-i2c]Clock stat(0x10003018) is 0x02beeffd, enable
[ 17.650301].(0)[135:mediaserver][mt-i2c]mt_get_gpio_in I2C0_SDA=1,I2C0_SCA=1,I2C1_SDA=1,I2C1_SCA=1
[ 17.651940].(1)[135:mediaserver]ERROR: GC0409MIPI_read_cmos_sensor
[ 17.652717].(1)[135:mediaserver]GC0409MIPIGetSensorID:ffff
谁有对应GC0409的上电时序的kd_camera_hw.c ?
没人调试过?
OK 解决问题。是摄像头的问题。已经解决OK。可以显示啦。
驱动代码共享:http://www.16rd.com/thread-24655-1-1.html
