/* MT6306 GPIO7 is GPIO_GPS_LNA_EN, for K2 common phone pin modification */ static INT32 wmt_plat_gps_lna_ctrl(ENUM_PIN_STATE state) { #ifdef GPIO_GPS_LNA_PIN switch (state) { case PIN_STA_INIT: case PIN_STA_DEINIT: WMT_PLAT_ERR_FUNC("Gps LNA pin ctrl %d!\n", state); mt6306_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT); mt6306_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ZERO); break; case PIN_STA_OUT_H: WMT_PLAT_ERR_FUNC("Gps LNA pin output high!\n"); mt6306_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ONE); break; case PIN_STA_OUT_L: WMT_PLAT_ERR_FUNC("Gps LNA pin output low!\n"); mt6306_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ZERO); break; default: WMT_PLAT_WARN_FUNC("%d mode not defined for gps lna pin !!!\n", state); break; } return 0; #else WMT_PLAT_WARN_FUNC("host gps lna pin not defined!!!\n"); return 0; #endif }
static INT32 wmt_plat_gps_lna_ctrl(ENUM_PIN_STATE state) { #ifdef GPIO_GPS_LNA_PIN switch (state) { case PIN_STA_INIT: case PIN_STA_DEINIT: mt_set_gpio_pull_enable(GPIO_GPS_LNA_PIN, GPIO_PULL_DISABLE); mt_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT); mt_set_gpio_mode(GPIO_GPS_LNA_PIN, GPIO_GPS_LNA_PIN_M_GPIO); mt_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ZERO); break; case PIN_STA_OUT_H: mt_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ONE); break; case PIN_STA_OUT_L: mt_set_gpio_out(GPIO_GPS_LNA_PIN, GPIO_OUT_ZERO); break; default: WMT_WARN_FUNC("%d mode not defined for gps lna pin !!!\n", state); break; } return 0; #else #ifdef CONFIG_MTK_MT6306_SUPPORT WMT_WARN_FUNC("/******************************************************************/\n"); WMT_WARN_FUNC("use MT6306 GPIO7 for gps lna pin.\n this HARD CODE may hurt other system module, if GPIO7 of MT6306 is not defined as GPS_LNA function\n"); WMT_WARN_FUNC("/******************************************************************/\n"); switch (state) { case PIN_STA_INIT: case PIN_STA_DEINIT: mt6306_set_gpio_dir (GPIO7, GPIO_DIR_OUT); mt6306_set_gpio_out (GPIO7, GPIO_OUT_ZERO); break; case PIN_STA_OUT_H: mt6306_set_gpio_out (GPIO7, GPIO_OUT_ONE); break; case PIN_STA_OUT_L: mt6306_set_gpio_out (GPIO7, GPIO_OUT_ZERO); break; default: WMT_WARN_FUNC("%d mode not defined for gps lna pin !!!\n", state); break; } #else WMT_WARN_FUNC("host gps lna pin not defined!!!\n"); WMT_WARN_FUNC("if you donot use eighter AP or MT6306's pin as GPS_LNA, please customize your own GPS_LNA related code here\n"); #endif return 0; #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_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) { 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; }
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 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; }
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; }