inline static int adopt_CAMERA_HW_Control(void *pBuf) { int ret = 0; ACDK_SENSOR_CONTROL_STRUCT *pSensorCtrl = (ACDK_SENSOR_CONTROL_STRUCT*)pBuf; ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT imageWindow; ACDK_SENSOR_CONFIG_STRUCT sensorConfigData; memset(&imageWindow, 0, sizeof(ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT)); memset(&sensorConfigData, 0, sizeof(ACDK_SENSOR_CONFIG_STRUCT)); if (NULL == pSensorCtrl ) { PK_DBG("[CAMERA_HW] NULL arg.\n"); return -EFAULT; } if (NULL == pSensorCtrl->pImageWindow || NULL == pSensorCtrl->pSensorConfigData) { PK_DBG("[CAMERA_HW] NULL arg.\n"); return -EFAULT; } if(copy_from_user((void*)&imageWindow , (void *) pSensorCtrl->pImageWindow, sizeof(ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT))) { PK_DBG("[CAMERA_HW][pFeatureData32] ioctl copy from user failed\n"); return -EFAULT; } if(copy_from_user((void*)&sensorConfigData , (void *) pSensorCtrl->pSensorConfigData, sizeof(ACDK_SENSOR_CONFIG_STRUCT))) { PK_DBG("[CAMERA_HW][pFeatureData32] ioctl copy from user failed\n"); return -EFAULT; } // if (g_pSensorFunc) { ret = g_pSensorFunc->SensorControl(pSensorCtrl->ScenarioId,&imageWindow,&sensorConfigData); } else { PK_DBG("[CAMERA_HW]ERROR:NULL g_pSensorFunc\n"); } // if(copy_to_user((void __user *) pSensorCtrl->pImageWindow, (void*)&imageWindow , sizeof(ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT))) { PK_DBG("[CAMERA_HW][imageWindow] ioctl copy to user failed\n"); return -EFAULT; } // if(copy_to_user((void __user *) pSensorCtrl->pSensorConfigData, (void*)&sensorConfigData , sizeof(ACDK_SENSOR_CONFIG_STRUCT))) { PK_DBG("[CAMERA_HW][imageWindow] ioctl copy to user failed\n"); return -EFAULT; } return ret; }//adopt_CAMERA_HW_Control
int FL_disable(void) { PK_DBG("FL_disable\n"); // upmu_set_flash_en(0); //upmu_set_rg_bst_drv_1m_ck_pdn(1); // flash_led_close_flag = 0; mt_set_gpio_out(GPIO_TORCH_EN_PIN, GPIO_OUT_ZERO); mt_set_gpio_out(GPIO_FLASH_EN_PIN, GPIO_OUT_ZERO); if(flash_led_close_flag==1) { flash_led_close_flag = 0; cancel_work_sync(&workTimeOut_600ms); hrtimer_cancel(&g_timeOutTimer_600ms); } return 0; }
int FL_dim_duty(kal_uint32 duty) { PK_DBG("FL_dim_duty %d, thres %d", duty, LEDS_CUSTOM_MODE_THRES); if(duty < LEDS_CUSTOM_MODE_THRES) mt_set_gpio_out(GPIO_CAMERA_FLASH_MODE_PIN, LEDS_TORCH_MODE); else mt_set_gpio_out(GPIO_CAMERA_FLASH_MODE_PIN, LEDS_FLASH_MODE); if((g_timeOutTimeMs == 0) && (duty > LEDS_CUSTOM_MODE_THRES)) { PK_ERR("FL_dim_duty %d > thres %d, FLASH mode but timeout %d", duty, LEDS_CUSTOM_MODE_THRES, g_timeOutTimeMs); mt_set_gpio_out(GPIO_CAMERA_FLASH_MODE_PIN, LEDS_TORCH_MODE); } // upmu_set_flash_dim_duty(duty); return 0; }
int FL_init(void) { if(mt_set_gpio_mode(FLASH_PIN,GPIO_MODE_00)){PK_DBG("[CAMERA flash] set gpio ENF mode failed!! \n");} if(mt_set_gpio_dir(FLASH_PIN,GPIO_DIR_OUT)){PK_DBG("[CAMERA flash] set gpio ENF dir failed!! \n");} if(mt_set_gpio_out(FLASH_PIN,GPIO_OUT_ZERO)){PK_DBG("[CAMERA flash] set gpio ENF failed!! \n");} if(mt_set_gpio_mode(TORCH_PIN,GPIO_MODE_00)){PK_DBG("[CAMERA flash] set gpio ENT mode failed!! \n");} if(mt_set_gpio_dir(TORCH_PIN,GPIO_DIR_OUT)){PK_DBG("[CAMERA flash] set gpio ENT dir failed!! \n");} if(mt_set_gpio_out(TORCH_PIN,GPIO_OUT_ZERO)){PK_DBG("[CAMERA flash] set gpio ENT failed!! \n");} FL_disable(); INIT_WORK(&workTimeOut, work_timeOutFunc); return 0; }
int FL_init(void) { PK_DBG("FL_init\n"); // upmu_set_flash_dim_duty(0); // upmu_set_flash_sel(0); mt_set_gpio_mode(GPIO_TORCH_EN_PIN, GPIO_TORCH_EN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_TORCH_EN_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_TORCH_EN_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_FLASH_EN_PIN, GPIO_FLASH_EN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_FLASH_EN_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_FLASH_EN_PIN, GPIO_OUT_ZERO); // FL_disable(); INIT_WORK(&workTimeOut, work_timeOutFunc); //fenggy add INIT_WORK(&workTimeOut_600ms, work_timeOutFunc_600ms); //fenggy add end return 0; }
int FL_init(void) { PK_DBG("FL_init\n"); #if 0 upmu_set_flash_dim_duty(0); upmu_set_flash_sel(0); FL_disable(); #else if(adp1650_i2c_client == NULL) { return 0; } adp1650_write_reg(adp1650_i2c_client, 0x04, 0xAC); //75ma torch output_en #endif INIT_WORK(&workTimeOut, work_timeOutFunc); return 0; }
int kdSetDriver(unsigned int* pDrvIndex) { ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT *pSensorList = NULL; unsigned int drvIdx = (*pDrvIndex & KDIMGSENSOR_DUAL_MASK_LSB); //set driver for MAIN or SUB sensor spin_lock(&kdsensor_drv_lock); g_currDualSensorIdx = (CAMERA_DUAL_CAMERA_SENSOR_ENUM)((*pDrvIndex & KDIMGSENSOR_DUAL_MASK_MSB)>>KDIMGSENSOR_DUAL_SHIFT); spin_unlock(&kdsensor_drv_lock); if (0 != kdGetSensorInitFuncList(&pSensorList)) { PK_ERR("ERROR:kdGetSensorInitFuncList()\n"); return -EIO; } if (drvIdx < MAX_NUM_OF_SUPPORT_SENSOR) { if (NULL == pSensorList[drvIdx].SensorInit) { PK_ERR("ERROR:kdSetDriver()\n"); return -EIO; } pSensorList[drvIdx].SensorInit(&g_pSensorFunc); if (NULL == g_pSensorFunc) { PK_ERR("ERROR:NULL g_pSensorFunc\n"); return -EIO; } //get sensor name memcpy((char*)g_currSensorName,(char*)pSensorList[drvIdx].drvname,sizeof(pSensorList[drvIdx].drvname)); //return sensor ID *pDrvIndex = (unsigned int)pSensorList[drvIdx].SensorId; PK_DBG("[kdSetDriver] :%d,%d,%s,%d\n",g_currDualSensorIdx,drvIdx,g_currSensorName,sizeof(pSensorList[drvIdx].drvname)); } return 0; }
/******************************************************************************* * iWriteRegI2C ********************************************************************************/ int iWriteRegI2C(u8 *a_pSendData , u16 a_sizeSendData, u16 i2cId) { int i4RetValue = 0; int retry = 3; // PK_DBG("Addr : 0x%x,Val : 0x%x \n",a_u2Addr,a_u4Data); //KD_IMGSENSOR_PROFILE_INIT(); g_pstI2Cclient->addr = (i2cId >> 1); // do { i4RetValue = i2c_master_send(g_pstI2Cclient, a_pSendData, a_sizeSendData); if (i4RetValue != a_sizeSendData) { PK_DBG("[CAMERA SENSOR] I2C send failed!!, Addr = 0x%x, Data = 0x%x \n", a_pSendData[0], a_pSendData[1] ); } else { break; } uDELAY(50); } while ((retry--) > 0); //KD_IMGSENSOR_PROFILE("iWriteRegI2C"); return 0; }
int FL_enable(void) { PK_DBG("FL_enable g_step=%d\n",g_duty); // upmu_set_rg_bst_drv_1m_ck_pdn(0); // upmu_set_flash_en(1); if(g_duty >2 ) { if(flash_led_close_flag == 0) { flash_led_cnt =0; flash_led_close_flag = 1; timerStart_600ms(); mt_set_gpio_out(GPIO_TORCH_EN_PIN, GPIO_OUT_ZERO); mt_set_gpio_out(GPIO_FLASH_EN_PIN, GPIO_OUT_ONE); } } else { mt_set_gpio_out(GPIO_FLASH_EN_PIN, GPIO_OUT_ZERO); mt_set_gpio_out(GPIO_TORCH_EN_PIN, GPIO_OUT_ONE); } return 0; }
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 swich = 0; u32 pinSet[3][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, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ }, //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_ZERO, GPIO_OUT_ONE, }, //for main_2 sensor {GPIO_CAMERA_2_CMRST_PIN, GPIO_CAMERA_2_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_2_CMPDN_PIN, GPIO_CAMERA_2_CMPDN_PIN_M_GPIO, GPIO_OUT_ZERO, GPIO_OUT_ONE, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } else if (DUAL_CAMERA_MAIN_SECOND_SENSOR == SensorIdx) { pinSetIdx = 2; } if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647MIPI_RAW,currSensorName))) { swich=1; } //power ON if (On) { //in case #if 0 //TODO: depends on HW layout. Should be notified by SA. printk("Set CAMERA_POWER_PULL_PIN for power \n"); if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG("[[CAMERA SENSOR] Set CAMERA_POWER_PULL_PIN DISABLE ! \n"); } if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n");} #endif if(pinSetIdx == 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(swich){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");}} 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(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(1); 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(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_; } 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_; } mdelay(10); if(pinSetIdx == 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(swich){ 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");} } else { 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(1); //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1-pinSetIdx][IDX_PS_CMRST]) { 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_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_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir 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_CMRST],pinSet[1-pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if((pinSetIdx == 1)&&swich) { if(mt_set_gpio_out(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } else { if(mt_set_gpio_out(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } } //enable active sensor //RST pin 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");} mdelay(10); 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(1); if(pinSetIdx == 0) { mdelay(20); } else{ //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((pinSetIdx == 0)&&swich) { 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");} } else { 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 {//power OFF #if 0 //TODO: depends on HW layout. Should be notified by SA. printk("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 //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((pinSetIdx == 0)&&swich) { 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");} //high == power down lens module } 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");} //high == power down lens module } } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(1); if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } 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_; } mdelay(1); if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //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 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_ZERO, GPIO_OUT_ONE, }, //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_ZERO, GPIO_OUT_ONE, } }; 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_HI253_YUV,currSensorName))||(0 == strcmp(SENSOR_DRVNAME_HI257_YUV,currSensorName)))) { PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---HI253_YUV or HI257_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); 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");} 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");} } 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_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } 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_; } msleep(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!! \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 if ((currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI704_YUV,currSensorName))) ||(currSensorName && (0 == strcmp(SENSOR_DRVNAME_SP0A19_YUV,currSensorName)))) { PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---HI704_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); 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_; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) //VOL_1200 { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } /*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_; }*/ //PDN/STBY pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { 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");} msleep(10); 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(5); //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(10); 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); } //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 {//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 } //if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_S5K4ECGX_MIPI_YUV,currSensorName))) { //MainCameraDigtalPowerCtrl(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_; } 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_; } } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
static inline void WM8971_WRREG(uint16_t reg, uint16_t value) { wm8971_current[reg] = value; PK_DBG("R%d=0x%x\n", reg, value); spi_write_register(reg, value); }
static int sub_strobe_release(void *pArg) { PK_DBG("sub dummy release"); return 0; }
static int hw_resume(struct device *dev, u32 level) { PK_DBG("dev = %p, level = %u\n", dev, level); return 0; }
int FL_uninit(void) { PK_DBG("FL_uninit\n"); FL_disable(); return 0; }
int FL_step(kal_uint32 step) { PK_DBG("FL_step\n"); //upmu_set_flash_sel(step); return 0; }
static void work_timeOutFunc(struct work_struct *data) { FL_disable(); PK_DBG("ledTimeOut_callback\n"); //printk(KERN_ALERT "work handler function./n"); }
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; }
static int CAMERA_HW_Ioctl(struct inode * a_pstInode, struct file * a_pstFile, unsigned int a_u4Command, unsigned long a_u4Param) #endif { int i4RetValue = 0; void * pBuff = NULL; u32 *pIdx = NULL; //PK_DBG("%x, %x \n",a_u4Command,a_u4Param); mutex_lock(&kdCam_Mutex); if(_IOC_NONE == _IOC_DIR(a_u4Command)) { } else { pBuff = kmalloc(_IOC_SIZE(a_u4Command),GFP_KERNEL); if(NULL == pBuff) { PK_DBG("[CAMERA SENSOR] ioctl allocate mem failed\n"); i4RetValue = -ENOMEM; goto CAMERA_HW_Ioctl_EXIT; } if(_IOC_WRITE & _IOC_DIR(a_u4Command)) { if(copy_from_user(pBuff , (void *) a_u4Param, _IOC_SIZE(a_u4Command))) { kfree(pBuff); PK_DBG("[CAMERA SENSOR] ioctl copy from user failed\n"); i4RetValue = -EFAULT; goto CAMERA_HW_Ioctl_EXIT; } } } pIdx = (u32*)pBuff; switch(a_u4Command) { #if 0 case KDIMGSENSORIOC_X_POWER_ON: i4RetValue = kdModulePowerOn((CAMERA_DUAL_CAMERA_SENSOR_ENUM) *pIdx, true, CAMERA_HW_DRVNAME); break; case KDIMGSENSORIOC_X_POWER_OFF: i4RetValue = kdModulePowerOn((CAMERA_DUAL_CAMERA_SENSOR_ENUM) *pIdx, false, CAMERA_HW_DRVNAME); break; #endif case KDIMGSENSORIOC_X_SET_DRIVER: i4RetValue = kdSetDriver((unsigned int*)pBuff); break; case KDIMGSENSORIOC_T_OPEN: i4RetValue = adopt_CAMERA_HW_Open(); break; case KDIMGSENSORIOC_X_GETINFO: i4RetValue = adopt_CAMERA_HW_GetInfo(pBuff); break; case KDIMGSENSORIOC_X_GETRESOLUTION: i4RetValue = adopt_CAMERA_HW_GetResolution(pBuff); break; case KDIMGSENSORIOC_X_FEATURECONCTROL: i4RetValue = adopt_CAMERA_HW_FeatureControl(pBuff); break; case KDIMGSENSORIOC_X_CONTROL: i4RetValue = adopt_CAMERA_HW_Control(pBuff); break; case KDIMGSENSORIOC_T_CLOSE: i4RetValue = adopt_CAMERA_HW_Close(); break; case KDIMGSENSORIOC_T_CHECK_IS_ALIVE: i4RetValue = adopt_CAMERA_HW_CheckIsAlive(); break; default : PK_DBG("No such command \n"); i4RetValue = -EPERM; break; } if(_IOC_READ & _IOC_DIR(a_u4Command)) { if(copy_to_user((void __user *) a_u4Param , pBuff , _IOC_SIZE(a_u4Command))) { kfree(pBuff); PK_DBG("[CAMERA SENSOR] ioctl copy to user failed\n"); i4RetValue = -EFAULT; goto CAMERA_HW_Ioctl_EXIT; } } kfree(pBuff); CAMERA_HW_Ioctl_EXIT: mutex_unlock(&kdCam_Mutex); return i4RetValue; }
/******************************************************************************* * adopt_CAMERA_HW_FeatureControl ********************************************************************************/ inline static int adopt_CAMERA_HW_FeatureControl(void *pBuf) { ACDK_SENSOR_FEATURECONTROL_STRUCT *pFeatureCtrl = (ACDK_SENSOR_FEATURECONTROL_STRUCT*)pBuf; unsigned int FeatureParaLen = 0; void *pFeaturePara = NULL; ACDK_SENSOR_GROUP_INFO_STRUCT *pSensorGroupInfo = NULL; ACDK_KD_SENSOR_SYNC_STRUCT *pSensorSyncInfo = NULL; char kernelGroupNamePtr[128]; unsigned char *pUserGroupNamePtr = NULL; //UINT16 u2RAWGain[4]; if (NULL == pFeatureCtrl ) { PK_ERR(" NULL arg.\n"); return -EFAULT; } if(SENSOR_FEATURE_SINGLE_FOCUS_MODE == pFeatureCtrl->FeatureId || SENSOR_FEATURE_CANCEL_AF == pFeatureCtrl->FeatureId || SENSOR_FEATURE_CONSTANT_AF == pFeatureCtrl->FeatureId) {//YUV AF_init and AF_constent and AF_single has no params } else { if (NULL == pFeatureCtrl->pFeaturePara || NULL == pFeatureCtrl->pFeatureParaLen) { PK_ERR(" NULL arg.\n"); return -EFAULT; } } if(copy_from_user((void*)&FeatureParaLen , (void *) pFeatureCtrl->pFeatureParaLen, sizeof(unsigned int))) { PK_ERR(" ioctl copy from user failed\n"); return -EFAULT; } pFeaturePara = kmalloc(FeatureParaLen,GFP_KERNEL); if(NULL == pFeaturePara) { PK_ERR(" ioctl allocate mem failed\n"); return -ENOMEM; } //copy from user switch (pFeatureCtrl->FeatureId) { case SENSOR_FEATURE_SET_ESHUTTER: case SENSOR_FEATURE_SET_GAIN: // reset the delay frame flag g_NewSensorExpGain.uSensorExpDelayFrame = 0xFF; g_NewSensorExpGain.uSensorGainDelayFrame = 0xFF; g_NewSensorExpGain.uISPGainDelayFrame = 0xFF; case SENSOR_FEATURE_SET_ISP_MASTER_CLOCK_FREQ: case SENSOR_FEATURE_SET_REGISTER: case SENSOR_FEATURE_GET_REGISTER: case SENSOR_FEATURE_SET_CCT_REGISTER: case SENSOR_FEATURE_SET_ENG_REGISTER: case SENSOR_FEATURE_SET_ITEM_INFO: case SENSOR_FEATURE_GET_ITEM_INFO: case SENSOR_FEATURE_GET_ENG_INFO: case SENSOR_FEATURE_SET_VIDEO_MODE: case SENSOR_FEATURE_SET_YUV_CMD: case SENSOR_FEATURE_MOVE_FOCUS_LENS: case SENSOR_FEATURE_SET_AF_WINDOW: case SENSOR_FEATURE_SET_CALIBRATION_DATA: case SENSOR_FEATURE_SET_AUTO_FLICKER_MODE: case SENSOR_FEATURE_GET_EV_AWB_REF: case SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN: case SENSOR_FEATURE_SET_AE_WINDOW: case SENSOR_FEATURE_GET_EXIF_INFO: // if(copy_from_user((void*)pFeaturePara , (void *) pFeatureCtrl->pFeaturePara, FeatureParaLen)) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW][pFeaturePara] ioctl copy from user failed\n"); return -EFAULT; } break; case SENSOR_FEATURE_SET_SENSOR_SYNC: // Update new sensor exposure time and gain to keep if(copy_from_user((void*)pFeaturePara , (void *) pFeatureCtrl->pFeaturePara, FeatureParaLen)) { PK_DBG("[CAMERA_HW][pFeaturePara] ioctl copy from user failed\n"); return -EFAULT; } // keep the information to wait Vsync synchronize pSensorSyncInfo = (ACDK_KD_SENSOR_SYNC_STRUCT*)pFeaturePara; g_NewSensorExpGain.u2SensorNewExpTime = pSensorSyncInfo->u2SensorNewExpTime; g_NewSensorExpGain.u2SensorNewGain = pSensorSyncInfo->u2SensorNewGain; g_NewSensorExpGain.u2ISPNewRGain = pSensorSyncInfo->u2ISPNewRGain; g_NewSensorExpGain.u2ISPNewGrGain = pSensorSyncInfo->u2ISPNewGrGain; g_NewSensorExpGain.u2ISPNewGbGain = pSensorSyncInfo->u2ISPNewGbGain; g_NewSensorExpGain.u2ISPNewBGain = pSensorSyncInfo->u2ISPNewBGain; g_NewSensorExpGain.uSensorExpDelayFrame = pSensorSyncInfo->uSensorExpDelayFrame; g_NewSensorExpGain.uSensorGainDelayFrame = pSensorSyncInfo->uSensorGainDelayFrame; g_NewSensorExpGain.uISPGainDelayFrame = pSensorSyncInfo->uISPGainDelayFrame; // PK_DBG("[pFeaturePara] NewExp:%d NewSensorGain:%d NewISPGain:%d %d %d %d ExpDelay:%d SensorGainDelay:%d ISPGainDelay:%d\n", // g_NewSensorExpGain.u2SensorNewExpTime, g_NewSensorExpGain.u2SensorNewGain, g_NewSensorExpGain.u2ISPNewRGain, // g_NewSensorExpGain.u2ISPNewGrGain, g_NewSensorExpGain.u2ISPNewGbGain, g_NewSensorExpGain.u2ISPNewBGain, // g_NewSensorExpGain.uSensorExpDelayFrame, g_NewSensorExpGain.uSensorGainDelayFrame, g_NewSensorExpGain.uISPGainDelayFrame); // if(bSesnorVsyncFlag == FALSE) // set to sensor driver for 1st frame // { // PK_DBG("[CAMERA_HW][pFeaturePara] kdSensorSyncFunctionPtr \n"); // kdSensorSyncFunctionPtr(u2RAWGain); // } break; case SENSOR_FEATURE_GET_GROUP_INFO: if(copy_from_user((void*)pFeaturePara , (void *) pFeatureCtrl->pFeaturePara, FeatureParaLen)) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW][pFeaturePara] ioctl copy from user failed\n"); return -EFAULT; } pSensorGroupInfo = (ACDK_SENSOR_GROUP_INFO_STRUCT*)pFeaturePara; pUserGroupNamePtr = pSensorGroupInfo->GroupNamePtr; // if (NULL == pUserGroupNamePtr) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW] NULL arg.\n"); return -EFAULT; } pSensorGroupInfo->GroupNamePtr = kernelGroupNamePtr; break; //copy to user case SENSOR_FEATURE_GET_RESOLUTION: case SENSOR_FEATURE_GET_PERIOD: case SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ: case SENSOR_FEATURE_GET_REGISTER_DEFAULT: case SENSOR_FEATURE_GET_CONFIG_PARA: case SENSOR_FEATURE_GET_GROUP_COUNT: case SENSOR_FEATURE_GET_LENS_DRIVER_ID: //do nothing case SENSOR_FEATURE_CAMERA_PARA_TO_SENSOR: case SENSOR_FEATURE_SENSOR_TO_CAMERA_PARA: case SENSOR_FEATURE_SINGLE_FOCUS_MODE: case SENSOR_FEATURE_CANCEL_AF: case SENSOR_FEATURE_CONSTANT_AF: default: break; } // if (g_pSensorFunc) { //sync with AE taske //if (pFeatureCtrl->FeatureId == SENSOR_FEATURE_MOVE_FOCUS_LENS) { // if (*(u16*)pFeaturePara != g_SensorAFPos) { // g_SensorAFPos = *(u16 *)pFeaturePara; // atomic_set(&g_SetSensorAF, 1); //PK_DBG("Set AF Pos = %d\n", g_SensorAFPos); // } //} //else { g_pSensorFunc->SensorFeatureControl(pFeatureCtrl->FeatureId,(unsigned char*)pFeaturePara,(unsigned int*) &FeatureParaLen); //} } else { PK_DBG("[CAMERA_HW]ERROR:NULL g_pSensorFunc\n"); } //copy to user switch (pFeatureCtrl->FeatureId) { case SENSOR_FEATURE_SET_ESHUTTER: case SENSOR_FEATURE_SET_GAIN: case SENSOR_FEATURE_SET_ISP_MASTER_CLOCK_FREQ: case SENSOR_FEATURE_SET_REGISTER: case SENSOR_FEATURE_SET_CCT_REGISTER: case SENSOR_FEATURE_SET_ENG_REGISTER: case SENSOR_FEATURE_SET_ITEM_INFO: //do nothing case SENSOR_FEATURE_CAMERA_PARA_TO_SENSOR: case SENSOR_FEATURE_SENSOR_TO_CAMERA_PARA: break; //copy to user case SENSOR_FEATURE_GET_RESOLUTION: case SENSOR_FEATURE_GET_PERIOD: case SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ: case SENSOR_FEATURE_GET_REGISTER: case SENSOR_FEATURE_GET_REGISTER_DEFAULT: case SENSOR_FEATURE_GET_CONFIG_PARA: case SENSOR_FEATURE_GET_GROUP_COUNT: case SENSOR_FEATURE_GET_LENS_DRIVER_ID: case SENSOR_FEATURE_GET_ITEM_INFO: case SENSOR_FEATURE_GET_ENG_INFO: case SENSOR_FEATURE_GET_AF_STATUS: case SENSOR_FEATURE_GET_AF_INF: case SENSOR_FEATURE_GET_AF_MACRO: case SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS: case SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS: case SENSOR_FEATURE_CHECK_SENSOR_ID: // if(copy_to_user((void __user *) pFeatureCtrl->pFeaturePara, (void*)pFeaturePara , FeatureParaLen)) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW][pSensorRegData] ioctl copy to user failed\n"); return -EFAULT; } break; //copy from and to user case SENSOR_FEATURE_GET_GROUP_INFO: //copy 32 bytes if(copy_to_user((void __user *) pUserGroupNamePtr, (void*)kernelGroupNamePtr , sizeof(char)*32)) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW][pFeatureReturnPara32] ioctl copy to user failed\n"); return -EFAULT; } pSensorGroupInfo->GroupNamePtr = pUserGroupNamePtr; if(copy_to_user((void __user *) pFeatureCtrl->pFeaturePara, (void*)pFeaturePara , FeatureParaLen)) { kfree(pFeaturePara); PK_DBG("[CAMERA_HW][pFeatureReturnPara32] ioctl copy to user failed\n"); return -EFAULT; } break; default: break; } kfree(pFeaturePara); if(copy_to_user((void __user *) pFeatureCtrl->pFeatureParaLen, (void*)&FeatureParaLen , sizeof(unsigned int))) { PK_DBG("[CAMERA_HW][pFeatureParaLen] ioctl copy to user failed\n"); return -EFAULT; } return 0; } /* adopt_CAMERA_HW_FeatureControl() */
static int strobe_ioctl(MUINT32 cmd, MUINT32 arg) { PK_DBG("sub dummy ioctl"); return 0; }
static void __exit flashchip_exit(void) { PK_DBG("[flashchip_exit] start\n"); platform_driver_unregister(&flashchip_platform_driver); PK_DBG("[flashchip_exit] done!\n"); }
int FL_dim_duty(kal_uint32 duty) { PK_DBG("FL_dim_duty\n"); //upmu_set_flash_dim_duty(duty); return 0; }
static void hw_shutdown(struct device *dev) { PK_DBG("Shutting down\n"); }
static int sub_strobe_ioctl(unsigned int cmd, unsigned long arg) { PK_DBG("sub dummy ioctl"); return 0; }
static int sub_strobe_open(void *pArg) { PK_DBG("sub dummy open"); return 0; }
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; }
static void __exit hw_mod_exit(void) { PK_DBG("Unregistering driver\n"); driver_unregister(&hw_driver); PK_DBG("Done\n"); }
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 // MIPI Switch Pin Set PK_DBG("revision(%d) \n",system_rev); u32 GPIO_CAM_MIPI_SW_OE_N_pin; u32 GPIO_CAM_MIPI_SW_SEL_pin; if(system_rev<2) { // EVB or Rev A GPIO_CAM_MIPI_SW_OE_N_pin = GPIO_CAM_MIPI_SW_OE_N_REVA; GPIO_CAM_MIPI_SW_SEL_pin = GPIO_CAM_MIPI_SW_SEL_REVA; } else { GPIO_CAM_MIPI_SW_OE_N_pin = GPIO_CAM_MIPI_SW_OE_N_REVB; GPIO_CAM_MIPI_SW_SEL_pin = GPIO_CAM_MIPI_SW_SEL_REVB; } u32 pinSet[3][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_ZERO, GPIO_OUT_ONE, }, //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_ZERO, GPIO_OUT_ONE, }, //for main_2 sensor {GPIO_CAMERA_2_CMRST_PIN, GPIO_CAMERA_2_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_2_CMPDN_PIN, GPIO_CAMERA_2_CMPDN_PIN_M_GPIO, GPIO_OUT_ZERO, GPIO_OUT_ONE, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } else if (DUAL_CAMERA_MAIN_SECOND_SENSOR == SensorIdx) { pinSetIdx = 2; } //power ON if (On) { //in case #if 0 //TODO: depends on HW layout. Should be notified by SA. printk("Set CAMERA_POWER_PULL_PIN for power \n"); if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG("[[CAMERA SENSOR] Set CAMERA_POWER_PULL_PIN DISABLE ! \n"); } if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n");} #endif /* For Lenovo75 Project: OV56487_Raw(Main) & MT9V114_YUV(Sub) Power Configuration: OV5647: VCAM_D:1.5V,VCAM_D2:1.8V,VCAM_A1:2.8V, VCAM_A2:2.8V For AF use MT9V114:VCAM_D2:1.8V,VCAM_A2:2.8V */ msleep(10); mt_isp_mclk_ctrl(0); // example : turn off the Mclk before begining power sequence msleep(10); // delay printk("UP CAMERA_POWER_UP SID(%d) PID(%d)\n",SensorIdx,pinSetIdx); #if defined(CONFIG_MINIABB_CHARGER) cam_vio_power(1); //Turn on VIO. usleep_range(10, 20); // cam_avdd_power(1); //Turn on AVDD. usleep_range(10, 20); // cam_dvdd_power(1); //Turn on DVDD. cam_vcm_power(1); //Turn on VCM/ #else #if 0 //origin code // if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV3640_YUV,currSensorName))) //1. if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(1); 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); //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_; } 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 #if 1 //edit code if(pinSetIdx == 0){ //main sensor if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX111_MIPI_RAW,currSensorName))) { printk("UP CAMERA_POWER_UP SENSOR_DRVNAME_IMX111_MIPI_RAW \n"); if(mt_set_gpio_mode(GPIO_CAM_AVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN failed!! \n");} usleep_range(200, 210); // if(mt_set_gpio_mode(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN failed!! \n");} usleep_range(120, 130); // if(mt_set_gpio_mode(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN failed!! \n");} if(mt_set_gpio_mode(GPIO_CAM_AF_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AF_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AF_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN failed!! \n");} } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX219_MIPI_RAW,currSensorName))) { //cam_avdd_power(1); //Turn on AVDD. 2.8V printk("UP CAMERA_POWER_UP SENSOR_DRVNAME_IMX219_MIPI_RAW \n"); if(mt_set_gpio_mode(GPIO_CAM_AVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n");} //msleep(10); mdelay(1); //cam_vio_power(1); //Turn on VIO. 1.8V if(mt_set_gpio_mode(GPIO_CAM_IOVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n");} //msleep(10); //mdelay(1); //cam_dvdd_power(1); //Turn on DVDD. 1.2V if(mt_set_gpio_mode(GPIO_CAM_DVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n");} if(mt_set_gpio_mode(GPIO_CAM_AF_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AF_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AF_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN failed!! \n");} msleep(10); } } else if (pinSetIdx == 1){ //sub sensor if(mt_set_gpio_mode(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN failed!! \n");} usleep_range(80, 90); // if(mt_set_gpio_mode(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN failed!! \n");} usleep_range(10, 20); // if(mt_set_gpio_mode(GPIO_CAM_AVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN failed!! \n");} } #endif #endif //MIPI SWITCH START SET if(mt_set_gpio_mode(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_MODE_00)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_OUT_ZERO)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N failed!!\n");} //low == connect usleep_range(10, 20); // if(mt_set_gpio_mode(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_MODE_00)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL dir failed!! \n");} if(pinSetIdx == 0){ if(mt_set_gpio_out(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_OUT_ZERO)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL failed!! \n");} //SEL low == main } else if (pinSetIdx == 1){ if(mt_set_gpio_out(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_OUT_ONE)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL failed!! \n");} //SEL high == sub } // wait power to be stable usleep_range(1000, 1100); // //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1-pinSetIdx][IDX_PS_CMRST]) { 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],pinSet[1-pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor } //enable active sensor //RST pin 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(10000, 10100); // 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(1000, 1100); // } msleep(10); // delay mt_isp_mclk_ctrl(1); msleep(1); } else {//power OFF #if 0 //TODO: depends on HW layout. Should be notified by SA. printk("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 PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); usleep_range(10000, 10100); // mt_isp_mclk_ctrl(0); msleep(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!! \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 defined(CONFIG_MINIABB_CHARGER) cam_dvdd_power(0); //Turn off DVDD. cam_avdd_power(0); //Turn off AVDD. cam_vio_power(0); //Turn off VIO. cam_vcm_power(0); //Turn off VCM/ #else #if 0 //origin code if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #endif #if 1 //edit code if(mt_set_gpio_mode(GPIO_CAM_AVDD_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AVDD_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AVDD_LDO_EN_PIN failed!! \n");} if(mt_set_gpio_mode(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_DVDD_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_DVDD_LDO_EN_PIN failed!! \n");} if(mt_set_gpio_mode(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_IOVDD_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_IOVDD_LDO_EN_PIN failed!! \n");} if(pinSetIdx == 0){ //main sensor if(mt_set_gpio_mode(GPIO_CAM_AF_LDO_EN_PIN, GPIO_MODE_00)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_AF_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_AF_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[[CAMERA SENSOR] set GPIO_CAM_AF_LDO_EN_PIN failed!! \n");} } #endif #endif //MIPI SWITCH END SET if(mt_set_gpio_mode(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_MODE_00)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_MIPI_SW_SEL_pin,GPIO_OUT_ZERO)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_SEL failed!! \n");} //SEL low == main if(mt_set_gpio_mode(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_MODE_00)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_DIR_OUT)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAM_MIPI_SW_OE_N_pin,GPIO_OUT_ONE)){PK_DBG("[CAMERA MIPI SW] set GPIO_CAM_MIPI_SW_OE_N failed!!\n");} //high == disconnect }// 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; }