微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > GC0409 上电时序?怎么读不到ID ?请教高手kd_camera_hw.c

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

时间:10-02 整理:3721RD 点击:
我的gc0409为副摄像GC0409 上电时序:



上电需要的代码:
        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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top