int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { int pwListIdx,pwIdx; BOOL sensorInPowerList = KAL_FALSE; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } else if (DUAL_CAMERA_MAIN_2_SENSOR == SensorIdx) { pinSetIdx = 2; } //power ON if (On) { PK_DBG("kdCISModulePowerOn -on:currSensorName=%s\n",currSensorName); PK_DBG("kdCISModulePowerOn -on:pinSetIdx=%d\n",pinSetIdx); for(pwListIdx=0 ; pwListIdx<16; pwListIdx++) { if(currSensorName && (PowerOnList.PowerSeq[pwListIdx].SensorName!=NULL) && (0 == strcmp(PowerOnList.PowerSeq[pwListIdx].SensorName,currSensorName))) { PK_DBG("kdCISModulePowerOn get in--- \n"); PK_DBG("sensorIdx:%d \n",SensorIdx); sensorInPowerList = KAL_TRUE; for(pwIdx=0;pwIdx<10;pwIdx++) { if(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx].PowerType != VDD_None) { if(hwpoweron(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx],mode_name)==FALSE) goto _kdCISModulePowerOn_exit_; } else { PK_DBG("pwIdx=%d \n",pwIdx); break; } } break; } else if(PowerOnList.PowerSeq[pwListIdx].SensorName == NULL) { break; } else{} } // Temp solution: default power on/off sequence if(KAL_FALSE == sensorInPowerList) { PK_DBG("Default power on sequence"); if(pinSetIdx == 0 ) { ISP_MCLK1_EN(1); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(1); } //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(0 == pinSetIdx) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } else { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_D2); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_A2); goto _kdCISModulePowerOn_exit_; } mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(0 == pinSetIdx) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } else { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } } } /* if(pinSetIdx==0) for(;;) {} */ /* if(pinSetIdx==1) for(;;) {} */ } else {//power OFF for(pwListIdx=0 ; pwListIdx<16; pwListIdx++) { if(currSensorName && (PowerOnList.PowerSeq[pwListIdx].SensorName!=NULL) && (0 == strcmp(PowerOnList.PowerSeq[pwListIdx].SensorName,currSensorName))) { PK_DBG("kdCISModulePowerOn get in--- \n"); PK_DBG("sensorIdx:%d \n",SensorIdx); sensorInPowerList = KAL_TRUE; for(pwIdx=9;pwIdx>=0;pwIdx--) { if(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx].PowerType != VDD_None) { if(hwpowerdown(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx],mode_name)==FALSE) goto _kdCISModulePowerOn_exit_; if(pwIdx>0) { if(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx-1].Delay > 0) mdelay(PowerOnList.PowerSeq[pwListIdx].PowerInfo[pwIdx-1].Delay); } } else { PK_DBG("pwIdx=%d \n",pwIdx); } } } else if(PowerOnList.PowerSeq[pwListIdx].SensorName == NULL) { break; } else{} } // Temp solution: default power on/off sequence if(KAL_FALSE == sensorInPowerList) { PK_DBG("Default power off sequence"); if(pinSetIdx == 0 ) { ISP_MCLK1_EN(0); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(0); } //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(0 == pinSetIdx) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } else { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_D2); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_A2); //return -EIO; goto _kdCISModulePowerOn_exit_; } } }// return 0; _kdCISModulePowerOn_exit_: return -EIO; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor u32 tmp_idx = 0; #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { //for main sensor { CAMERA_CMRST_PIN, // The reset pin of main sensor uses GPIO10 of mt6306, please call mt6306 API to set CAMERA_CMRST_PIN_M_GPIO, GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ }, //for sub sensor { CAMERA_CMRST1_PIN, CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, CAMERA_CMPDN1_PIN, CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } PK_DBG("pinSetIdx:%d, currSensorName: s5k3l2xx_mipi_raw\n"); //power ON if (On) { #if 0 ISP_MCLK1_EN(1); ISP_MCLK2_EN(1); #else if(pinSetIdx == 0 ) { ISP_MCLK1_EN(1); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(1); } #endif PK_DBG("pinSetIdx:%d, currSensorName: %s\n", pinSetIdx, currSensorName); #ifdef MTK_MT6306_SUPPORT PK_DBG("MTK_MT6306_SUPPORT is defined, mt6306_set_gpio_dir: %d\n", pinSet[pinSetIdx][IDX_PS_CMRST]); #endif //Power off PWND pin ,only for sub camera if(pinSetIdx == 1 ) { if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA PWDN] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA PWDN] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA PWDN] set gpio failed!! (CMPDN)\n");} } } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } //pull up PWDN pin ,sync with DOVDD if(pinSetIdx == 1 ) { if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA PWDN] set gpio failed!! (CMPDN)\n");} } } mdelay(1); //VCAM_D,main-1.2v, sub-1.2v if(pinSetIdx == 0 ) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } } else if(pinSetIdx == 1 ) { if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1200,mode_name)){ PK_DBG("[SUB CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } } mdelay(1); //AF_VCC,only for main camera if(pinSetIdx == 0 ) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } } mdelay(2); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } tmp_idx = (pinSetIdx + 1) % 2; /*disable unused camera sensor*/ #if 1 if (GPIO_CAMERA_INVALID != pinSet[tmp_idx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[tmp_idx][IDX_PS_CMRST],pinSet[tmp_idx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[tmp_idx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[tmp_idx][IDX_PS_CMRST],pinSet[tmp_idx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } #endif } else {//power OFF /* Mark: need to verify whether ISP_MCLK1_EN is required in here //Jessy @2014/06/04 */ #if 0 ISP_MCLK1_EN(0); ISP_MCLK2_EN(0); #else if(pinSetIdx == 0 ) { ISP_MCLK1_EN(0); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(0); } #endif //only sub camera has PWDN pin,first set it low if (pinSetIdx == 1) { if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA PWDN] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA PWDN] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA PWDN] set gpio failed!! (CMPDN)\n");} } } //Set Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } mdelay(2); //AF_VCC BU64245_move_to_nature(); if (pinSetIdx == 0) { if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } //VCAM_D if (pinSetIdx == 0) { if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } }else if (pinSetIdx == 1) { if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)){ PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[3][8] = { //for main sensor { CAMERA_CMRST_PIN, // The reset pin of main sensor uses GPIO10 of mt6306, please call mt6306 API to set CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ CAMERA_CMPDN_PIN, CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor { CAMERA_CMRST1_PIN, CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, CAMERA_CMPDN1_PIN, CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for main_2 sensor { GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } else if (DUAL_CAMERA_MAIN_2_SENSOR == SensorIdx) { pinSetIdx = 2; } //power ON if (On) { #if 0 ISP_MCLK1_EN(1); ISP_MCLK2_EN(1); ISP_MCLK3_EN(1); #else if(pinSetIdx == 0 ) { ISP_MCLK1_EN(1); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(1); } #endif PK_DBG("[PowerON]pinSetIdx:%d, currSensorName: %s\n", pinSetIdx, currSensorName); if ((currSensorName && (0 == strcmp(currSensorName,"imx135mipiraw")))|| (currSensorName && (0 == strcmp(currSensorName,"imx220mipiraw")))) { //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(1); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1000,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(2); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648_MIPI_RAW, currSensorName))) { mt_set_gpio_mode(GPIO_SPI_MOSI_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_SPI_MOSI_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ONE); //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(1); if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(5); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(1); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } mdelay(2); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } mdelay(20); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC2355_MIPI_RAW, currSensorName))) { mt_set_gpio_mode(GPIO_SPI_MOSI_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_SPI_MOSI_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ONE); //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } mdelay(50); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(10); //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(10); if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(10); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(50); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} mdelay(5); 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!! (CMRST)\n");} } mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} mdelay(5); 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!! (CMPDN)\n");} } mdelay(5); } else { //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } //VCAM_D if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_S5K2P8_MIPI_RAW, currSensorName))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX219_MIPI_RAW, currSensorName))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else { // Main VCAMD max 1.5V if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } } } else {//power OFF PK_DBG("[PowerOFF]pinSetIdx:%d\n", pinSetIdx); if(pinSetIdx == 0 ) { ISP_MCLK1_EN(0); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(0); } if ((currSensorName && (0 == strcmp(currSensorName,"imx135mipiraw")))|| (currSensorName && (0 == strcmp(currSensorName,"imx220mipiraw")))) { //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } //Set Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648_MIPI_RAW, currSensorName))) { mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ZERO); //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC2355_MIPI_RAW, currSensorName))) { mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ZERO); //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else { //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\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!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
BOOL hwpowerdown(PowerInformation pwInfo, char* mode_name) { if(pwInfo.PowerType == AVDD) { if(PowerCustList.PowerCustInfo[0].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[0].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DVDD) { if(PowerCustList.PowerCustInfo[1].Gpio_Pin == GPIO_UNSUPPORTED) { if(pinSetIdx==1) { if(TRUE != hwPowerDown(PMIC_APP_SUB_CAMERA_POWER_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } else{} } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[1].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DOVDD) { if(PowerCustList.PowerCustInfo[2].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[2].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == AFVDD) { if(PowerCustList.PowerCustInfo[3].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} if(PowerCustList.PowerCustInfo[4].Gpio_Pin != GPIO_UNSUPPORTED) { mdelay(5); if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } } else if(pwInfo.PowerType==PDN) { PK_DBG("PDN\n"); 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(pwInfo.Voltage == Vol_High) { 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");} msleep(1); } else { 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");} msleep(1); } } else if(pwInfo.PowerType==RST) { PK_DBG("RST\n"); if(pinSetIdx==0) { #ifndef MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } else { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } else{ if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } #endif } else if(pinSetIdx==1) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } else { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } } else if(pwInfo.PowerType==SensorMCLK) { if(pinSetIdx==0) { ISP_MCLK1_EN(FALSE); } else if(pinSetIdx==1) { ISP_MCLK2_EN(FALSE); } } else{} return TRUE; }
BOOL hwpoweron(PowerInformation pwInfo, char* mode_name) { #if 1 // LGE_CHANGE: [2014-11-03] [email protected], Add camera if(pwInfo.PowerType == AVDD) { if(PowerCustList.PowerCustInfo[0].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerOn(pwInfo.PowerType,pwInfo.Voltage,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[0].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DVDD) { if(PowerCustList.PowerCustInfo[1].Gpio_Pin == GPIO_UNSUPPORTED) { if(pinSetIdx == 1) { PK_DBG("[CAMERA SENSOR] Sub camera VCAM_D power on"); if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D,pwInfo.Voltage,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else { PK_DBG("[CAMERA SENSOR] Main camera VAM_D power on"); if(TRUE != hwPowerOn(pwInfo.PowerType,pwInfo.Voltage,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[1].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DOVDD) { if(PowerCustList.PowerCustInfo[2].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerOn(pwInfo.PowerType,pwInfo.Voltage,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[2].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == AFVDD) { if(PowerCustList.PowerCustInfo[3].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerOn(pwInfo.PowerType,pwInfo.Voltage,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} if(PowerCustList.PowerCustInfo[4].Gpio_Pin != GPIO_UNSUPPORTED) { mdelay(5); if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } // [LGE_UPDATE_S][[email protected]][2015/1/12] Remove af i2c error during booting #if defined(TARGET_MT6732_C90) af_current_on = 1; #endif // [LGE_UPDATE_E][[email protected]][2015/1/12] Remove af i2c error during booting } else if(pwInfo.PowerType==PDN) { PK_DBG("PDN %d \n",pwInfo.Voltage); //LGE_UPDATE_S [[email protected]] 2014/12/23, control PDN in case of valid GPIO if(pinSet[pinSetIdx][IDX_PS_CMPDN] != GPIO_CAMERA_INVALID) { 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(pwInfo.Voltage == Vol_High) { 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");} } else { 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");} } } //LGE_UPDATE_E [[email protected]] 2014/12/23, control PDN in case of valid GPIO } else if(pwInfo.PowerType==RST) { PK_DBG("RST %d %x %d\n",pwInfo.Voltage,GPIO_CAMERA_CMRST_PIN_MAIN,pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]); if(pinSetIdx==0) { #ifndef CONFIG_MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } else { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } else{ if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } #endif } else if(pinSetIdx==1) { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} if(pwInfo.Voltage == Vol_High) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } else { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } } else if(pwInfo.PowerType==SensorMCLK) { if(pinSetIdx==0) { PK_DBG("Sensor MCLK1 On"); ISP_MCLK1_EN(TRUE); } else if(pinSetIdx==1) { PK_DBG("Sensor MCLK2 On"); ISP_MCLK2_EN(TRUE); } } else{} if(pwInfo.Delay>0) mdelay(pwInfo.Delay); #endif return TRUE; }
BOOL hwpowerdown(PowerInformation pwInfo, char* mode_name) { #if 1 // LGE_CHANGE: [2014-11-03] [email protected], Add camera if(pwInfo.PowerType == AVDD) { if(PowerCustList.PowerCustInfo[0].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[0].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[0].Gpio_Pin,PowerCustList.PowerCustInfo[0].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DVDD) { if(PowerCustList.PowerCustInfo[1].Gpio_Pin == GPIO_UNSUPPORTED) { if(pinSetIdx==1) { if(TRUE != hwPowerDown(PMIC_APP_SUB_CAMERA_POWER_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } else{} } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[1].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[1].Gpio_Pin,PowerCustList.PowerCustInfo[1].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == DOVDD) { if(PowerCustList.PowerCustInfo[2].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[2].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[2].Gpio_Pin,PowerCustList.PowerCustInfo[2].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } else if(pwInfo.PowerType == AFVDD) { if(PowerCustList.PowerCustInfo[3].Gpio_Pin == GPIO_UNSUPPORTED) { if(TRUE != hwPowerDown(pwInfo.PowerType,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); return FALSE; } } else{ if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} if(PowerCustList.PowerCustInfo[4].Gpio_Pin != GPIO_UNSUPPORTED) { mdelay(5); if(mt_set_gpio_mode(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Gpio_Mode)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(PowerCustList.PowerCustInfo[3].Gpio_Pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(PowerCustList.PowerCustInfo[3].Gpio_Pin,PowerCustList.PowerCustInfo[3].Voltage)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } } } else if(pwInfo.PowerType==PDN) { PK_DBG("PDN\n"); //LGE_UPDATE_S [[email protected]] 2014/12/23, control PDN in case of valid GPIO if(pinSet[pinSetIdx][IDX_PS_CMPDN] != GPIO_CAMERA_INVALID) { 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(pwInfo.Voltage == Vol_High) { 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");} msleep(1); } else { 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");} msleep(1); } } //LGE_UPDATE_E [[email protected]] 2014/12/23, control PDN in case of valid GPIO } else if(pwInfo.PowerType==RST) { // LGE_CHANGE_S: [2015-1-31] [email protected], Modify power sequence int idx = pinSetIdx ? 0 : 1; PK_DBG("RST\n"); if(pinSetIdx==0) // main { #ifndef CONFIG_MTK_MT6306_SUPPORT 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif // sub reset off (workaround) #ifndef CONFIG_MTK_MT6306_SUPPORT if(mt_set_gpio_mode(pinSet[idx][IDX_PS_CMRST],pinSet[idx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[idx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[idx][IDX_PS_CMRST],pinSet[idx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #else if(mt6306_set_gpio_dir(pinSet[idx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt6306_set_gpio_out(pinSet[idx][IDX_PS_CMRST],pinSet[idx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} #endif } else if(pinSetIdx==1) // sub { 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!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\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!! (CMRST)\n");} // main reset off (workaround) if(mt_set_gpio_mode(pinSet[idx][IDX_PS_CMRST],pinSet[idx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[idx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[idx][IDX_PS_CMRST],pinSet[idx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } mdelay(2); //LGE_UPDATE [[email protected]] 2014/12/23, Add delay after reset // LGE_CHANGE_E: [2015-1-31] [email protected], Modify power sequence } else if(pwInfo.PowerType==SensorMCLK) { if(pinSetIdx==0) { ISP_MCLK1_EN(FALSE); } else if(pinSetIdx==1) { ISP_MCLK2_EN(FALSE); } } else{} #endif return TRUE; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor u32 pinSetIdxTmp = 0; #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { //for main sensor {GPIO_CAMERA_CMRST_PIN, GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; PK_DBG("kdCISModulePowerOn: 4EC 8AA\n"); if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } //power ON if (On) { PK_DBG("kdCISModulePowerOn -on:currSensorName=%s;\n",currSensorName); //MainCameraDigtalPowerCtrl(1); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_T4K28_YUV,currSensorName))) { PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---SENSOR_DRVNAME_T4K28_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); ISP_MCLK1_EN(false); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. msleep(10); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");//2.8 ->1.8 //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");//2.8 ->1.8 //return -EIO; goto _kdCISModulePowerOn_exit_; } 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_; } #if 0 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 msleep(5); ISP_MCLK1_EN(true); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. msleep(5); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. 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");} 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");} if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //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_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} msleep(3); //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");} msleep(3); } //disable inactive sensor if(pinSetIdx == 0) {//disable sub pinSetIdxTmp = 1; } else{ pinSetIdxTmp = 0; } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdxTmp][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMRST],pinSet[pinSetIdxTmp][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMRST],pinSet[pinSetIdxTmp][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } } else { PK_DBG("[CAMERA SENSOR] Camera sensor type loading fail!! \n"); } } else {//power OFF PK_DBG("kdCISModulePowerOn -off:currSensorName=%s\n",currSensorName); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} //low == reset sensor 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");} //high == power down lens module } ISP_MCLK1_EN(false); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,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_; } 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 0 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #endif } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, bool On, char *mode_name) { u32 pinSetIdx = 0;/* default main sensor */ #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 #define VOL_2800 2800000 #define VOL_1800 1800000 #define VOL_1500 1500000 #define VOL_1200 1200000 #define VOL_1000 1000000 u32 pinSet[3][8] = { /* for main sensor */ {/* The reset pin of main sensor uses GPIO10 of mt6306, please call mt6306 API to set */ CAMERA_CMRST_PIN, CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ CAMERA_CMPDN_PIN, CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, /* for sub sensor */ { CAMERA_CMRST1_PIN, CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, CAMERA_CMPDN1_PIN, CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, /* for main_2 sensor */ { GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx) pinSetIdx = 0; else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) pinSetIdx = 1; else if (DUAL_CAMERA_MAIN_2_SENSOR == SensorIdx) pinSetIdx = 2; /* power ON */ if (On) { int i=0; #if 0 ISP_MCLK1_EN(1); ISP_MCLK2_EN(1); ISP_MCLK3_EN(1); #else if (pinSetIdx == 0) ISP_MCLK1_EN(1); else if (pinSetIdx == 1) ISP_MCLK2_EN(1); #endif PK_DBG("[PowerON]pinSetIdx:%d, currSensorName: %s\n", pinSetIdx, currSensorName); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV13850_MIPI_RAW, currSensorName))) { /* First Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); */ #if 0 if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); #else for(i = 0; i<2; i++) { mtkcam_gpio_set(i, CAMRST, pinSet[i][IDX_PS_CMRST + IDX_PS_OFF]); } #endif mdelay(2); /* VCAM_A */ if (TRUE != _hwPowerOn(VCAMA, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_A),power id = %d\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerOn(VCAMIO, VOL_1800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable IO power (VCAM_IO),power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (TRUE != _hwPowerOn(VCAMD, VOL_1200)) { PK_DBG ("[CAMERA SENSOR] Fail to enable digital power (VCAM_D),power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* AF_VCC */ if (TRUE != _hwPowerOn(VCAMAF, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF),power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_ON]); } mdelay(5); /* enable active sensor */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_ON]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_MN34153_MIPI_RAW, currSensorName))) { /* First Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); */ #if 0 if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); #else for(i = 0; i<2; i++) { mtkcam_gpio_set(i, CAMRST, pinSet[i][IDX_PS_CMRST + IDX_PS_OFF]); } #endif mdelay(2); /* VCAM_A */ if (TRUE != _hwPowerOn(VCAMA, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_A),power id = %d\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerOn(VCAMIO, VOL_1800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable IO power (VCAM_IO),power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (TRUE != _hwPowerOn(VCAMD, VOL_1200)) { PK_DBG ("[CAMERA SENSOR] Fail to enable digital power (VCAM_D),power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* AF_VCC */ if (TRUE != _hwPowerOn(VCAMAF, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF),power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_ON]); } mdelay(5); /* enable active sensor */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_ON]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI553_MIPI_RAW, currSensorName))) { //mtkcam_gpio_set(pinSetIdx, CAMLDO, 1); /* First Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); */ #if 0 if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); #else for(i = 0; i<2; i++) { mtkcam_gpio_set(i, CAMRST, pinSet[i][IDX_PS_CMRST + IDX_PS_OFF]); } #endif mdelay(2); /* VCAM_IO */ if (TRUE != _hwPowerOn(VCAMIO, VOL_1800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable IO power (VCAM_IO),power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_A */ if (TRUE != _hwPowerOn(VCAMA, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_A),power id = %d\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (TRUE != _hwPowerOn(VCAMD, VOL_1200)) { PK_DBG ("[CAMERA SENSOR] Fail to enable digital power (VCAM_D),power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); #if 0 /* AF_VCC */ if (TRUE != _hwPowerOn(VCAMAF, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF),power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } #endif mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_ON]); } mdelay(5); /* enable active sensor */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_ON]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV8858_MIPI_RAW, currSensorName))) { /* First Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); */ #if 0 if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); #else for(i = 0; i<2; i++) { mtkcam_gpio_set(i, CAMRST, pinSet[i][IDX_PS_CMRST + IDX_PS_OFF]); } #endif mdelay(2); /* VCAM_A */ if (TRUE != _hwPowerOn(VCAMA, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_A),power id = %d\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerOn(VCAMIO, VOL_1800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable IO power (VCAM_IO),power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); if (TRUE != _hwPowerOn(VCAMD, VOL_1200)) { PK_DBG ("[CAMERA SENSOR] Fail to enable digital power (VCAM_D),power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); #if 0 /* AF_VCC */ if (TRUE != _hwPowerOn(VCAMAF, VOL_2800)) { PK_DBG ("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF),power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } #endif mdelay(5); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_ON]); } /* enable active sensor */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_ON]); mdelay(5); mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ } } else { /* power OFF */ PK_DBG("[PowerOFF]pinSetIdx:%d\n", pinSetIdx); if (pinSetIdx == 0) ISP_MCLK1_EN(0); else if (pinSetIdx == 1) ISP_MCLK2_EN(0); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV13850_MIPI_RAW, currSensorName))) { /* Set Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ /* Set Reset Pin Low */ if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); } mdelay(1); if (TRUE != _hwPowerDown(VCAMD)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_A */ if (TRUE != _hwPowerDown(VCAMA)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d)\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerDown(VCAMIO)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* AF_VCC */ if (TRUE != _hwPowerDown(VCAMAF)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_MN34153_MIPI_RAW, currSensorName))) { /* Set Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ /* Set Reset Pin Low */ if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); } mdelay(1); if (TRUE != _hwPowerDown(VCAMD)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_A */ if (TRUE != _hwPowerDown(VCAMA)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d)\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerDown(VCAMIO)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* AF_VCC */ if (TRUE != _hwPowerDown(VCAMAF)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI553_MIPI_RAW, currSensorName))) { //mtkcam_gpio_set(pinSetIdx, CAMLDO, 0); /* Set Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ /* Set Reset Pin Low */ if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); } mdelay(1); if (TRUE != _hwPowerDown(VCAMD)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_A */ if (TRUE != _hwPowerDown(VCAMA)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d)\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerDown(VCAMIO)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); #if 0 /* AF_VCC */ if (TRUE != _hwPowerDown(VCAMAF)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } #endif } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV8858_MIPI_RAW, currSensorName))) { /* Set Power Pin low and Reset Pin Low */ /* if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { mtkcam_gpio_set(pinSetIdx, CAMPDN, pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF]); } */ /* Set Reset Pin Low */ if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { mtkcam_gpio_set(pinSetIdx, CAMRST, pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF]); } mdelay(1); if (TRUE != _hwPowerDown(VCAMD)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d\n", VCAMD); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_IO */ if (TRUE != _hwPowerDown(VCAMIO)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d\n", VCAMIO); goto _kdCISModulePowerOn_exit_; } mdelay(1); /* VCAM_A */ if (TRUE != _hwPowerDown(VCAMA)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d)\n", VCAMA); goto _kdCISModulePowerOn_exit_; } mdelay(1); #if 0 /* AF_VCC */ if (TRUE != _hwPowerDown(VCAMAF)) { PK_DBG ("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d\n", VCAMAF); goto _kdCISModulePowerOn_exit_; } #endif } } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { #if 1 u32 pinSetIdx = 0;//default main sensor #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { //for main sensor {GPIO_CAMERA_CMRST_PIN_MAIN, GPIO_CAMERA_CMRST_PIN_MAIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_CMPDN1_PIN_SUB, GPIO_CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } //power ON if (On) { PK_DBG("kdCISModulePowerOn -on:currSensorName=%s\n",currSensorName); PK_DBG("kdCISModulePowerOn -on:pinSetIdx=%d\n",pinSetIdx); PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power off/rst \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV8858_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_OV8858_MIPI_RAW \n"); //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_OV8858_MIPI_RAW -init set pdn/rst \n"); #if 0 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(2); #endif //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_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} mdelay(2); } 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(2); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } //mdelay(2); #if 0 if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power On \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif //mdelay(2); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } // #if defined (TARGET_MT6582_Y50)|| defined (TARGET_MT6582_Y70) dw9718_af_current_on=1; #endif // //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //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); //RST pin 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); } mdelay(50); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX219_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_IMX219_MIPI_RAW \n"); //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_IMX219_MIPI_RAW -init set pdn/rst \n"); #if 0 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(2); #endif //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_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} mdelay(2); } 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(2); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } //mdelay(2); #if 0 if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power On \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif //mdelay(2); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } // #if defined (TARGET_MT6582_Y50)|| defined (TARGET_MT6582_Y70) dw9718_af_current_on=1; #endif // //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //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); //RST pin 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); } mdelay(50); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI544_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_HI544_MIPI_RAW \n"); //PDN/STBY pin ISP_MCLK1_EN(0); mdelay(5); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_HI544_MIPI_RAW -init set pdn/rst \n"); #if 0 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(2); #endif //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_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} mdelay(2); } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable io power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(2); 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(2); #if 0 if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power On \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif //mdelay(2); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //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); //RST pin 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(2); } ISP_MCLK1_EN(1); mdelay(50); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI707_YUV,currSensorName))) { PK_DBG("SENSOR_DRVNAME_HI707_YUV power!! \n"); //PDN/STBY pin PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_HI707_YUV -init set pdn/rst \n"); mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE]); mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF]); mdelay(1); mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE]); mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]); mdelay(1); ISP_MCLK1_EN(0); mdelay(30); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } 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(1); ISP_MCLK1_EN(1); mdelay(1); //PDN/STBY pin PK_DBG("kdCISModulePowerOn get in--- SENSOR_DRVNAME_HI707_YUV -init set pdn/rst \n"); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} mdelay(30); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } } else {//power OFF #if 0 //TODO: depends on HW layout. Should be notified by SA. PK_DBG("Set GPIO 94 for power OFF\n"); if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG("[CAMERA SENSOR] Set GPIO94 PULL DISABLE ! \n"); } if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV8858_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePower--off get in---SENSOR_DRVNAME_OV8858_MIPI_RAW \n"); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} //low == reset sensor mdelay(2); #if 0 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");} //high == power down lens module mdelay(2); #endif } #if 0 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power Off \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable 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_; } } else if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX219_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePower--off get in---SENSOR_DRVNAME_IMX219_MIPI_RAW \n"); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} //low == reset sensor mdelay(2); #if 0 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");} //high == power down lens module mdelay(2); #endif } #if 0 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power Off \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif 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_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable 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_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI544_MIPI_RAW,currSensorName))) { PK_DBG("kdCISModulePower--off get in---SENSOR_DRVNAME_HI544_MIPI_RAW \n"); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} //low == reset sensor mdelay(2); #if 0 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");} //high == power down lens module mdelay(2); #endif } #if 0 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #else PK_DBG("kdCISModulePowerOn 1.2V DVDD LDO power Off \n"); if(mt_set_gpio_mode(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_CAMERA_1V2_MAIN_CAM_DVDD_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_1V2_MAIN_CAM_DVDD,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif mdelay(2); if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(2); if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI707_YUV,currSensorName))) { PK_DBG("SENSOR_DRVNAME_HI707_YUV power off !! \n"); mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE]); mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]); mdelay(30); mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE]); mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF]); mdelay(1); 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_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } } } return 0; _kdCISModulePowerOn_exit_: return -EIO; #endif }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor u32 tmp_idx = 0; #define IDX_PS_CMRST 0 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][5] = { //for main sensor { CAMERA_CMRST_PIN, CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_INVALID, }, //for sub sensor { CAMERA_CMRST1_PIN, CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_INVALID, }, }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } //power ON if (On) { /* the same MCLK1 port is used by main and sub camera sensor */ ISP_MCLK1_EN(1); /* set XSHUTDOWN/camera_1v2_en pin to low before power-on */ if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} } usleep_range(3000, 3500); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); goto _kdCISModulePowerOn_exit_; } //DVDD if (currSensorName && (0 == strcmp(currSensorName,"imx135mipiraw"))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1000,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && ((0 == strcmp(currSensorName,"imx220mipiraw")) || (0 == strcmp(currSensorName, "imx220sharpmipiraw")))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1000,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && ((0 == strcmp(currSensorName,"imx208mipiraw")) || (0 == strcmp(currSensorName, "imx208sunnymipiraw")))) { if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable sub camera digital power\n"); goto _kdCISModulePowerOn_exit_; } } else if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648_MIPI_RAW, currSensorName))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } /* * AF_VCC * Just needed by main camera. */ if(pinSetIdx == 0 ) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); goto _kdCISModulePowerOn_exit_; } } usleep_range(5000, 5500); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} usleep_range(8000, 8500); } /* Disable unused camera sensor */ tmp_idx = (pinSetIdx + 1) % 2; if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[tmp_idx][IDX_PS_CMRST],pinSet[tmp_idx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[tmp_idx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[tmp_idx][IDX_PS_CMRST],pinSet[tmp_idx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } } else {//power OFF ISP_MCLK1_EN(0); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} //low == reset sensor usleep_range(3000, 3500); } #if 1 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } if (currSensorName && ((0 == strcmp(currSensorName,"imx208mipiraw")) || (0 == strcmp(currSensorName, "imx208sunnymipiraw")))) { if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF sub camera digital power\n"); goto _kdCISModulePowerOn_exit_; } } else { if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); goto _kdCISModulePowerOn_exit_; } } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); goto _kdCISModulePowerOn_exit_; } /* AF_VCC just be power on by main camera */ if(pinSetIdx == 0 ) { if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); goto _kdCISModulePowerOn_exit_; } } #endif }// return 0; _kdCISModulePowerOn_exit_: return -EIO; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { //for main sensor {GPIO_CAMERA_CMRST_PIN, GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } //power ON if (On) { PK_DBG("kdCISModulePowerOn -on:currSensorName=%s\n",currSensorName); PK_DBG("kdCISModulePowerOn -on:pinSetIdx=%d\n",pinSetIdx); if ((currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648QT_MIPI_RAW, currSensorName))) ||(currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648ST_MIPI_RAW, currSensorName)))) { //OV5648 Power UP //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //Reset 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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMPDN]) { //PDN pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], pinSet[1 - pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMRST]) { //Reset pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMRST], pinSet[1 - pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } ISP_MCLK1_EN(0); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(1); //2. 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(1); //3. 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(1); ISP_MCLK1_EN(TRUE); //4. if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable AF power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } if(mt_set_gpio_mode(GPIO_CAMERA_AF_EN_PIN, GPIO_MODE_00)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_AF_EN_PIN, GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_AF_EN_PIN, GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} // wait power to be stable mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } mdelay(2); 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], GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } msleep(20); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC0313MIPI_YUV, currSensorName))) { //GC0313 Power UP //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //Reset 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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMPDN]) { //PDN pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], pinSet[1 - pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMRST]) { //Reset pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMRST], pinSet[1 - pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } ISP_MCLK1_EN(TRUE); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1500, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(5); //2. 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_; } // wait power to be stable mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } mdelay(2); 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], GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } msleep(20); } else { //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //Reset 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], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMPDN]) { //PDN pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], pinSet[1 - pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if (GPIO_CAMERA_INVALID != pinSet[1 - pinSetIdx][IDX_PS_CMRST]) { //Reset pin if(mt_set_gpio_mode(pinSet[1 - pinSetIdx][IDX_PS_CMRST], pinSet[1 - pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } //DOVDD PK_DBG("[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 IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(10); //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(10); //DVDD if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(10); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable AF power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { //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], GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } mdelay(2); 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], GPIO_OUT_ONE)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} } } } else {//power OFF #if 0 //TODO: depends on HW layout. Should be notified by SA. PK_DBG("Set GPIO 94 for power OFF\n"); if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG("[CAMERA SENSOR] Set GPIO94 PULL DISABLE ! \n"); } if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif if((currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648QT_MIPI_RAW,currSensorName))) ||(currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648ST_MIPI_RAW,currSensorName)))) { //PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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_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_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir 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_CMRST], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } 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 OFF AF 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_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } if(mt_set_gpio_mode(GPIO_CAMERA_AF_EN_PIN, GPIO_MODE_00)){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_AF_EN_PIN, GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_AF_EN_PIN, GPIO_OUT_ZERO)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC0313MIPI_YUV,currSensorName))) { //PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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_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_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir 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_CMRST], GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ONE)){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } 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_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } } else { //PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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_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_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir 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_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor 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");} //high == power down lens module } 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 OFF AF 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_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF IO power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } }// } return 0; _kdCISModulePowerOn_exit_: return -EIO; }