int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char *mode_name) { u32 pinSetIdx = 0; /* default main sensor */ #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { /* for test ov2659 in main sensor slot */ { 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_ZERO, GPIO_OUT_ONE, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMRST1_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_2_SENSOR == SensorIdx) { return 0; } /* power ON */ if (On) { PK_DBG("Off camera %d GPIO...\n", pinSetIdx); PK_DBG("RST pin: %d, PDN pin: %d\n", pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMPDN]); 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"); } PK_DBG("Off camera %d GPIO...\n", 1 - pinSetIdx); PK_DBG("RST pin: %d, PDN pin: %d\n", pinSet[1 - pinSetIdx][IDX_PS_CMRST], pinSet[1 - pinSetIdx][IDX_PS_CMPDN]); 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"); } if (mt_set_gpio_mode (pinSet[1 - pinSetIdx][IDX_PS_CMPDN], pinSet[1 - pinSetIdx][IDX_PS_CMPDN + IDX_PS_MODE])) { PK_DBG("[CAMERA LENS] set gpio mode failed!!\n"); } if (mt_set_gpio_dir(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)) { PK_DBG("[CAMERA LENS] set gpio dir failed!!\n"); } if (mt_set_gpio_out (pinSet[1 - pinSetIdx][IDX_PS_CMPDN], pinSet[1 - pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF])) { PK_DBG("[CAMERA LENS] set gpio failed!!\n"); } if (pinSetIdx == 0) { PK_DBG("Power on main sensor...\n"); PK_DBG("RST pin: %d, PDN pin: %d\n", pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMPDN]); PK_DBG("On 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 (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"); } /* AVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800, mode_name)) { } mdelay(1); /* DOVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800, mode_name)) { } /* DVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800, mode_name)) { } PK_DBG("Off 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 (mt_set_gpio_out (pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF])) { PK_DBG("[CAMERA LENS] set gpio failed!!\n"); } mdelay(6); PK_DBG("On 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 (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(11); PK_DBG("On RST...\n"); 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"); } } else { PK_DBG("Power on sub sensor...\n"); PK_DBG("RST pin: %d, PDN pin: %d\n", pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMPDN]); mdelay(5); /* DOVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800, mode_name)) { } /* AVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800, mode_name)) { } mdelay(1); /* DVDD */ if (TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800, mode_name)) { } mdelay(6); if (mt_set_gpio_mode (pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_MODE])) { PK_DBG("[CAMERA LENS] set gpio mode failed!!\n"); } if (mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)) { PK_DBG("[CAMERA LENS] set gpio dir failed!!\n"); } if (mt_set_gpio_out (pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_ON])) { PK_DBG("[CAMERA LENS] set gpio failed!!\n"); } mdelay(11); 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"); } } } else { 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 (mt_set_gpio_mode (pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST + 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 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 LENS] set gpio failed!!\n"); } if (TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { } if (TRUE != hwPowerDown(CAMERA_POWER_VCAM_A, mode_name)) { } if (TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2, mode_name)) { } /* For Power Saving */ if (pinSet[pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF] != GPIO_OUT_ZERO) { mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ZERO); } if (pinSet[pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF] != GPIO_OUT_ZERO) { mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST], GPIO_OUT_ZERO); } /* PLS add this ------------------------------------------------------------------------------------------------------- */ if (pinSet[1 - pinSetIdx][IDX_PS_CMPDN + IDX_PS_OFF] != GPIO_OUT_ZERO) { mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMPDN], GPIO_OUT_ZERO); } if (pinSet[1 - pinSetIdx][IDX_PS_CMRST + IDX_PS_OFF] != GPIO_OUT_ZERO) { mt_set_gpio_out(pinSet[1 - pinSetIdx][IDX_PS_CMRST], GPIO_OUT_ZERO); } /* ~For Power Saving */ } /* */ 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 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 if(pinSetIdx == 0) { 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"); mdelay(3); if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])) PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); mdelay(3); } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); //mdelay(1); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647MIPI_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case 1.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); } PK_DBG("[ON_general 2.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647MIPI_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case AF 2.8V]sensorIdx:%d \n",SensorIdx); 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(5); //mdelay(1); } // LuckAs add // OV5647tMIPI_RAW if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647tMIPI_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case 1.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); } PK_DBG("[ON_general 2.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647tMIPI_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case AF 2.8V]sensorIdx:%d \n",SensorIdx); 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(5); //mdelay(1); } // OV5647TRULY_RAW if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647TRULY_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case 1.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); } PK_DBG("[ON_general 2.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } mdelay(5); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5647TRULY_RAW,currSensorName))) { PK_DBG("[ON_MT9P017 case AF 2.8V]sensorIdx:%d \n",SensorIdx); 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(5); //mdelay(1); } // LuckAs end //disable inactive sensor if (GPIO_CAMERA_INVALID != pinSet[1-pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1-pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module mdelay(1); } //enable active sensor //RST pin if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { 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!! \n"); if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])) PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); mdelay(5); } //PDN pin if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} } mdelay(20); } 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_CMPDN]) { if(pinSetIdx == 1 && 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(pinSetIdx == 0 && 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[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(pinSetIdx == 1 && mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(pinSetIdx == 0 && 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[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(pinSetIdx == 1 && 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 && 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(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if (pinSetIdx == 0) { if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } } if (pinSetIdx == 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_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } }// return 0; _kdCISModulePowerOn_exit_: return -EIO; }
//ting.kang static int nmi5625_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct nmi_5625_dev *d = file->private_data; long ret = 0; #ifdef NMI_USE_MTK_I2C_DMA U8 *pReadData = 0; U8 *pWriteData = 0; U8 *pa_addr = 0; int *user_data_addr; #else U8 *kbuf = &i2cBuf[0]; #endif U16 len; switch ((cmd&0xffff0000)) { case NM5625_PWR_2P8_CTL: printk("NM5625_PWR_2P8_CTL, power11 %s\n",(arg==1)?"on":"off"); if (arg == 1) { /* on */ // mt_set_gpio_out(u32 pin,u32 output)(NMI_POWER_VDDIO_PIN, 1); if (0 != cust_matv_power_on()) { goto _fail_; } mt_set_gpio_out(NMI_FM_ANT_PIN, GPIO_OUT_ONE); mt_set_gpio_out(NMI_ATV_ANT_PIN, GPIO_OUT_ZERO); } else{ // mt_set_gpio_out(NMI_POWER_VDDIO_PIN, 0); if (0 != cust_matv_power_off()) { goto _fail_; } mt_set_gpio_out(NMI_FM_ANT_PIN, GPIO_OUT_ZERO); mt_set_gpio_out(NMI_ATV_ANT_PIN, GPIO_OUT_ONE); } break; case NM5625_PWR_1P2_CTL: printk("NM5625_PWR_1P2_CTL, power %s\n",(arg==1)?"on":"off"); if (arg == 1) { /* on */ #if 0 if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800, "nmitv")) { goto _fail_; } mt_set_gpio_mode(GPIO_CAMERA_CMRST1_PIN,GPIO_CAMERA_CMRST1_PIN_M_GPIO); mt_set_gpio_dir(GPIO_CAMERA_CMRST1_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CAMERA_CMRST1_PIN,GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_CAMERA_CMPDN1_PIN,GPIO_CAMERA_CMPDN1_PIN_M_GPIO); mt_set_gpio_dir(GPIO_CAMERA_CMPDN1_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CAMERA_CMPDN1_PIN,GPIO_OUT_ONE); /// if(TRUE != hwPowerOn(MT6323_POWER_LDO_VCAM_IO, VOL_1800, "nmitv")) { goto _fail_; } /// #endif mt_set_gpio_out(NMI_POWER_VCORE_PIN, GPIO_OUT_ONE); g_bIsAtvStart = true; }else { #if 0 mt_set_gpio_mode(GPIO_CAMERA_CMRST1_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_CAMERA_CMRST1_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CAMERA_CMRST1_PIN,GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_CAMERA_CMPDN1_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_CAMERA_CMPDN1_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CAMERA_CMPDN1_PIN,GPIO_OUT_ZERO); if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A, "nmitv")) { goto _fail_; } if(TRUE != hwPowerDown(MT6323_POWER_LDO_VCAM_IO, "nmitv")) { goto _fail_; } /// #endif mt_set_gpio_out(NMI_POWER_VCORE_PIN, GPIO_OUT_ZERO); g_bIsAtvStart = false; /// mt_set_gpio_out(NMI_FM_ANT_PIN, GPIO_OUT_ZERO); mt_set_gpio_out(NMI_ATV_ANT_PIN, GPIO_OUT_ONE); } break; case NM5625_ATV_RESET_CTL: printk("NM5625_ATV_RESET_CTL, power %s\n",(arg==1)?"on":"off"); if (arg == 1) { mt_set_gpio_out(NMI_RESET_PIN, GPIO_OUT_ONE); } else { mt_set_gpio_out(NMI_RESET_PIN, GPIO_OUT_ZERO); } break; case NM5625_ATV_I2C_READ: len = cmd&0xffff; /* Note: I used the lower 16 bits for size */ dPrint(N_INFO,"NM5625_ATV_I2C_READ , len is (%d)\n" , len ); mutex_lock(&d->mu); #ifdef NMI_HW_I2C #ifdef NMI_USE_MTK_I2C_DMA user_data_addr = (int *)arg; pReadData = gpDMABuf_va; pa_addr = gpDMABuf_pa; if(!pReadData){ printk("[Error] dma_alloc_coherent failed!\n"); mutex_unlock(&d->mu); goto _fail_; } ret = nmi5625_dma_read_m_byte(pReadData, pa_addr, len); if (ret < 0) { //dPrint(N_ERR, "nmi: failed i2c read...(%d)\n", ret); mutex_unlock(&d->mu); goto _fail_; } if (copy_to_user(user_data_addr, pReadData, len) ) { dPrint(N_ERR, "nmi: failed copy to user...\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } #else if ( len > 8 ) { dPrint(N_ERR, "nmi: failed receive 8 more data from i2s bus , please use dma way to instead.\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } ret = i2c_master_recv(d->i2c_client_atv, kbuf, len); if (ret < 0) { dPrint(N_ERR, "nmi: failed i2c read...(%d)\n", ret); mutex_unlock(&d->mu); goto _fail_; } if (copy_to_user(arg, i2cBuf, len) ) { dPrint(N_ERR, "nmi: failed copy to user...\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } #endif //end for #ifdef NMI_USE_MTK_I2C_DMA #else ret = nmi_i2c_read(0x60,kbuf,len); //dPrint(N_TRACE,"kernel:nmi_i2c_read buf is (%x), length is (%d)\n",kbuf,len); if (copy_to_user(arg, i2cBuf, len) ) { dPrint(N_ERR, "nmi: failed copy to user...\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } #endif mutex_unlock(&d->mu); break; case NM5625_ATV_I2C_WRITE: len = cmd&0xffff; /* Note: I used the lower 16 bits for size */ dPrint(N_INFO,"NM5625_ATV_I2C_WRITE , len is (%d)\n" , len ); mutex_lock(&d->mu); #ifdef NMI_HW_I2C #ifdef NMI_USE_MTK_I2C_DMA user_data_addr = (int *)arg; pWriteData = gpDMABuf_va; pa_addr = gpDMABuf_pa; if(!pWriteData){ printk("[Error] dma_alloc_coherent failed!\n"); mutex_unlock(&d->mu); goto _fail_; } ret = copy_from_user(pWriteData, user_data_addr, len); if ( ret < 0 ) { dPrint(N_ERR, "nmi: failed copy from user...\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } ret = nmi5625_dma_write_m_byte(pWriteData, pa_addr, len); if (ret < 0) { //dPrint(N_ERR, "nmi: failed i2c read...(%d)\n", ret); mutex_unlock(&d->mu); goto _fail_; } #else if ( len > 8 ) { dPrint(N_ERR, "nmi: failed to send 8 more data to i2s bus , please use dma way to instead.\n"); ret = -EFAULT; mutex_unlock(&d->mu); goto _fail_; } if (copy_from_user(kbuf, arg, len)) { dPrint(N_ERR, "nmi: failed copy from user...\n"); ret = -EFAULT; goto _fail_; } ret = i2c_master_send(d->i2c_client_atv, kbuf, len); if (ret < 0) { dPrint(N_ERR, "nmi: failed i2c write...(%d)\n", ret); mutex_unlock(&d->mu); goto _fail_; } #endif //end for #ifdef NMI_USE_MTK_I2C_DMA #else if (copy_from_user(kbuf, arg, len)) { dPrint(N_ERR, "nmi: failed copy from user...\n"); ret = -EFAULT; goto _fail_; } ret = nmi_i2c_write(0x60,kbuf,len); dPrint(N_TRACE,"kernel:nmi_i2c_write buf is (%x), length is (%d)\n",kbuf,len); #endif mutex_unlock(&d->mu); break; default: break; } _fail_: //func_exit(); //dPrint(N_TRACE, "nmi_ioctl return value...(%d)\n", ret); return ret; }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[3][8] = { //for main sensor { CAMERA_CMRST_PIN, // The reset pin of main sensor uses GPIO10 of mt6306, please call mt6306 API to set CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ CAMERA_CMPDN_PIN, CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor { CAMERA_CMRST1_PIN, CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, CAMERA_CMPDN1_PIN, CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for main_2 sensor { GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_INVALID, GPIO_CAMERA_INVALID, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } else if (DUAL_CAMERA_MAIN_2_SENSOR == SensorIdx) { pinSetIdx = 2; } //power ON if (On) { #if 0 ISP_MCLK1_EN(1); ISP_MCLK2_EN(1); ISP_MCLK3_EN(1); #else if(pinSetIdx == 0 ) { ISP_MCLK1_EN(1); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(1); } #endif PK_DBG("[PowerON]pinSetIdx:%d, currSensorName: %s\n", pinSetIdx, currSensorName); if ((currSensorName && (0 == strcmp(currSensorName,"imx135mipiraw")))|| (currSensorName && (0 == strcmp(currSensorName,"imx220mipiraw")))) { //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(1); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1000,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(2); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648_MIPI_RAW, currSensorName))) { mt_set_gpio_mode(GPIO_SPI_MOSI_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_SPI_MOSI_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ONE); //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(1); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(1); if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(5); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(1); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } mdelay(2); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } mdelay(20); } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC2355_MIPI_RAW, currSensorName))) { mt_set_gpio_mode(GPIO_SPI_MOSI_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_SPI_MOSI_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ONE); //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } mdelay(50); //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } mdelay(10); //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } mdelay(10); if(TRUE != hwPowerOn(SUB_CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_D), power id = %d \n", CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } mdelay(10); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(50); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} mdelay(5); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} mdelay(5); if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } mdelay(5); } else { //First Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } //VCAM_IO if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_IO, VOL_1800, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_A), power id = %d\n", CAMERA_POWER_VCAM_A); goto _kdCISModulePowerOn_exit_; } //VCAM_D if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_S5K2P8_MIPI_RAW, currSensorName))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else if(currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX219_MIPI_RAW, currSensorName))) { if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } else { // Main VCAMD max 1.5V if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); goto _kdCISModulePowerOn_exit_; } } //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_AF, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); goto _kdCISModulePowerOn_exit_; } mdelay(5); //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } mdelay(1); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } } } else {//power OFF PK_DBG("[PowerOFF]pinSetIdx:%d\n", pinSetIdx); if(pinSetIdx == 0 ) { ISP_MCLK1_EN(0); } else if (pinSetIdx == 1) { ISP_MCLK2_EN(0); } if ((currSensorName && (0 == strcmp(currSensorName,"imx135mipiraw")))|| (currSensorName && (0 == strcmp(currSensorName,"imx220mipiraw")))) { //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } //Set Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5648_MIPI_RAW, currSensorName))) { mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ZERO); //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC2355_MIPI_RAW, currSensorName))) { mt_set_gpio_out(GPIO_SPI_MOSI_PIN,GPIO_OUT_ZERO); //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } else { //Set Power Pin low and Reset Pin Low if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMPDN]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! (CMPDN)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! (CMPDN)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! (CMPDN)\n");} } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! (CMRST)\n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! (CMRST)\n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! (CMRST)\n");} } if(TRUE != hwPowerDown(SUB_CAMERA_POWER_VCAM_D,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF core power (VCAM_D), power id = %d \n",SUB_CAMERA_POWER_VCAM_D); goto _kdCISModulePowerOn_exit_; } //VCAM_A if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power (VCAM_A), power id= (%d) \n", CAMERA_POWER_VCAM_A); //return -EIO; goto _kdCISModulePowerOn_exit_; } //VCAM_IO if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_IO, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power (VCAM_IO), power id = %d \n", CAMERA_POWER_VCAM_IO); //return -EIO; goto _kdCISModulePowerOn_exit_; } //AF_VCC if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_AF,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF AF power (VCAM_AF), power id = %d \n", CAMERA_POWER_VCAM_AF); //return -EIO; goto _kdCISModulePowerOn_exit_; } } } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
void mt6620_power_off(void) { printk(KERN_INFO "[mt6620] power off\n"); //printk(KERN_INFO "[mt6620] mt_combo_bgf_disable_irq\n"); mt_combo_bgf_disable_irq(); //printk(KERN_INFO "[mt6620] set BGF_EINT input pull down\n"); mt_set_gpio_mode(GPIO_COMBO_BGF_EINT_PIN, GPIO_COMBO_BGF_EINT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_BGF_EINT_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_COMBO_BGF_EINT_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_COMBO_BGF_EINT_PIN, GPIO_PULL_ENABLE); //printk(KERN_INFO "[mt6620] ALL_EINT NC\n"); #ifdef GPIO_COMBO_ALL_EINT_PIN //printk(KERN_INFO "[mt6620] set ALL_EINT input pull down\n"); mt_set_gpio_mode(GPIO_COMBO_ALL_EINT_PIN, GPIO_MODE_00); mt_set_gpio_dir(GPIO_COMBO_ALL_EINT_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_COMBO_ALL_EINT_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_COMBO_ALL_EINT_PIN, GPIO_PULL_ENABLE); #endif //printk(KERN_INFO "[mt6620] set COMBO_AUDIO_STATE_0\n"); mt_combo_audio_ctrl_ex(COMBO_AUDIO_STATE_0, 0); //MT6620 I2S0 related pin defination has been added to the .dws file #ifndef FM_ANALOG_INPUT mt_set_gpio_mode(GPIO_I2S0_CK_PIN, GPIO_I2S0_CK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_I2S0_CK_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_I2S0_CK_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_I2S0_CK_PIN, GPIO_PULL_ENABLE); mt_set_gpio_mode(GPIO_I2S0_WS_PIN, GPIO_I2S0_WS_PIN_M_GPIO); mt_set_gpio_dir(GPIO_I2S0_WS_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_I2S0_WS_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_I2S0_WS_PIN, GPIO_PULL_ENABLE); mt_set_gpio_mode(GPIO_I2S0_DAT_PIN, GPIO_I2S0_DAT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_I2S0_DAT_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_I2S0_DAT_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_I2S0_DAT_PIN, GPIO_PULL_ENABLE); #endif //printk(KERN_INFO "[mt6620] set SYSRST_B 0 and PMU_EN 0 \n"); /* SYSRST_B low */ mt_set_gpio_out(GPIO_COMBO_RST_PIN, GPIO_OUT_ZERO); /* PMU_EN low */ mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ZERO); #if defined(CONFIG_MTK_COMBO_SDIO_SLOT) && (CONFIG_MTK_COMBO_SDIO_SLOT == 0) printk(KERN_INFO "[mt6620] pull down sd0 bus(gpio169~gpio175(exclude gpio174))\n"); mt_set_gpio_pull_enable(GPIO172, GPIO_PULL_DOWN); //->CLK mt_set_gpio_pull_select(GPIO172, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO171, GPIO_PULL_DOWN); //->CMD mt_set_gpio_pull_select(GPIO171, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO175, GPIO_PULL_DOWN); //->DAT0 mt_set_gpio_pull_select(GPIO175, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO173, GPIO_PULL_DOWN); //->DAT1 mt_set_gpio_pull_select(GPIO173, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO169, GPIO_PULL_DOWN); //->DAT2 mt_set_gpio_pull_select(GPIO169, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO170, GPIO_PULL_DOWN); //->DAT3 mt_set_gpio_pull_select(GPIO170, GPIO_PULL_ENABLE); #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 1) #error "error:MSDC1 is not reserved for MT6620 on MT6575EVB" #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 2) printk(KERN_INFO "[mt6620] pull down sd2 bus(gpio182~187)\n"); mt_set_gpio_pull_enable(GPIO182, GPIO_PULL_DOWN); //->CLK mt_set_gpio_pull_select(GPIO182, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO184, GPIO_PULL_DOWN); //->CMD mt_set_gpio_pull_select(GPIO184, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO186, GPIO_PULL_DOWN); //->DAT0 mt_set_gpio_pull_select(GPIO186, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO187, GPIO_PULL_DOWN); //->DAT1 mt_set_gpio_pull_select(GPIO187, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO185, GPIO_PULL_DOWN); //->DAT2 mt_set_gpio_pull_select(GPIO185, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO183, GPIO_PULL_DOWN); //->DAT3 mt_set_gpio_pull_select(GPIO183, GPIO_PULL_ENABLE); #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 3) printk(KERN_INFO "[mt6620] pull down sd3 bus (GPIO89~GPIO94)\n"); mt_set_gpio_pull_enable(GPIO92, GPIO_PULL_DOWN); //->CLK mt_set_gpio_pull_select(GPIO92, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO91, GPIO_PULL_DOWN); //->CMD mt_set_gpio_pull_select(GPIO91, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO94, GPIO_PULL_DOWN); //->DAT0 mt_set_gpio_pull_select(GPIO94, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO90, GPIO_PULL_DOWN); //->DAT1 mt_set_gpio_pull_select(GPIO90, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO89, GPIO_PULL_DOWN); //->DAT2 mt_set_gpio_pull_select(GPIO89, GPIO_PULL_ENABLE); mt_set_gpio_pull_enable(GPIO93, GPIO_PULL_DOWN); //->DAT3 mt_set_gpio_pull_select(GPIO93, GPIO_PULL_ENABLE); #else #error "error:unsupported CONFIG_MTK_COMBO_SDIO_SLOT" CONFIG_MTK_COMBO_SDIO_SLOT #endif //printk(KERN_INFO "[mt6620] set UART GPIO Mode output 0\n"); mt_set_gpio_mode(GPIO_UART_URXD3_PIN, GPIO_UART_URXD3_PIN_M_GPIO); mt_set_gpio_dir(GPIO_UART_URXD3_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_UART_URXD3_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_UART_UTXD3_PIN, GPIO_UART_UTXD3_PIN_M_GPIO); mt_set_gpio_dir(GPIO_UART_UTXD3_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_UART_UTXD3_PIN, GPIO_OUT_ZERO); //printk(KERN_INFO "[mt6620] disable RTC CLK \n"); printk("[mt6620]not to rtc_gpio_disable_32k(RTC_GPIO_USER_GPS) \n"); return; }
void mt_gpio_self_test(void) { int i, val; for (i = 0; i < MT_GPIO_EXT_MAX; i++) { s32 res,old; GPIOMSG("GPIO-%3d test\n", i); /*direction test*/ old = mt_get_gpio_dir(i); if (old == 0 || old == 1) { GPIOLOG(" dir old = %d\n", old); } else { GPIOERR(" test dir fail: %d\n", old); break; } if ((res = mt_set_gpio_dir(i, GPIO_DIR_OUT)) != RSUCCESS) { GPIOERR(" set dir out fail: %d\n", res); break; } else if ((res = mt_get_gpio_dir(i)) != GPIO_DIR_OUT) { GPIOERR(" get dir out fail: %d\n", res); break; } else { /*output test*/ s32 out = mt_get_gpio_out(i); if (out != 0 && out != 1) { GPIOERR(" get out fail = %d\n", old); break; } for (val = 0; val < GPIO_OUT_MAX; val++) { if ((res = mt_set_gpio_out(i,0)) != RSUCCESS) { GPIOERR(" set out[%d] fail: %d\n", val, res); break; } else if ((res = mt_get_gpio_out(i)) != 0) { GPIOERR(" get out[%d] fail: %d\n", val, res); break; } } if ((res = mt_set_gpio_out(i,out)) != RSUCCESS) { GPIOERR(" restore out fail: %d\n", res); break; } } if ((res = mt_set_gpio_dir(i, GPIO_DIR_IN)) != RSUCCESS) { GPIOERR(" set dir in fail: %d\n", res); break; } else if ((res = mt_get_gpio_dir(i)) != GPIO_DIR_IN) { GPIOERR(" get dir in fail: %d\n", res); break; } else { GPIOLOG(" input data = %d\n", res); } if ((res = mt_set_gpio_dir(i, old)) != RSUCCESS) { GPIOERR(" restore dir fail: %d\n", res); break; } for (val = 0; val < GPIO_PULL_EN_MAX; val++) { if ((res = mt_set_gpio_pull_enable(i,val)) != RSUCCESS) { GPIOERR(" set pullen[%d] fail: %d\n", val, res); break; } else if ((res = mt_get_gpio_pull_enable(i)) != val) { GPIOERR(" get pullen[%d] fail: %d\n", val, res); break; } } if ((res = mt_set_gpio_pull_enable(i, old)) != RSUCCESS) { GPIOERR(" restore pullen fail: %d\n", res); break; } /*pull select test*/ old = mt_get_gpio_pull_select(i); if (old == 0 || old == 1) GPIOLOG(" pullsel old = %d\n", old); else { GPIOERR(" pullsel fail: %d\n", old); break; } for (val = 0; val < GPIO_PULL_MAX; val++) { if ((res = mt_set_gpio_pull_select(i,val)) != RSUCCESS) { GPIOERR(" set pullsel[%d] fail: %d\n", val, res); break; } else if ((res = mt_get_gpio_pull_select(i)) != val) { GPIOERR(" get pullsel[%d] fail: %d\n", val, res); break; } } if ((res = mt_set_gpio_pull_select(i, old)) != RSUCCESS) { GPIOERR(" restore pullsel fail: %d\n", res); break; } /*data inversion*/ old = mt_get_gpio_inversion(i); if (old == 0 || old == 1) GPIOLOG(" inv old = %d\n", old); else { GPIOERR(" inv fail: %d\n", old); break; } for (val = 0; val < GPIO_DATA_INV_MAX; val++) { if ((res = mt_set_gpio_inversion(i,val)) != RSUCCESS) { GPIOERR(" set inv[%d] fail: %d\n", val, res); break; } else if ((res = mt_get_gpio_inversion(i)) != val) { GPIOERR(" get inv[%d] fail: %d\n", val, res); break; } } if ((res = mt_set_gpio_inversion(i, old)) != RSUCCESS) { GPIOERR(" restore inv fail: %d\n", res); break; } /*mode control*/ // if((i<=GPIOEXT6) || (i >= GPIOEXT9)){ old = mt_get_gpio_mode(i); if ((old >= GPIO_MODE_00) && (val < GPIO_MODE_MAX)) { GPIOLOG(" mode old = %d\n", old); } else { GPIOERR(" get mode fail: %d\n", old); break; } for (val = 0; val < GPIO_MODE_MAX; val++) { if ((res = mt_set_gpio_mode(i, val)) != RSUCCESS) { GPIOERR("set mode[%d] fail: %d\n", val, res); break; } else if ((res = mt_get_gpio_mode(i)) != val) { GPIOERR("get mode[%d] fail: %d\n", val, res); break; } } if ((res = mt_set_gpio_mode(i,old)) != RSUCCESS) { GPIOERR(" restore mode fail: %d\n", res); break; } // } } GPIOLOG("GPIO test done\n"); }
void SET_SCL(void) { mt_set_gpio_out(GPIO_SCL, GPIO_OUT_ONE); udelay(I2C_DELAY_VALUE); }
static void lcm_init(void) { mt_set_gpio_out(GPIO119,1); MDELAY(20); //SET_RESET_PIN(0); mt_set_gpio_out(GPIO119,0); MDELAY(20); //SET_RESET_PIN(1); mt_set_gpio_out(GPIO119,1); MDELAY(100); //push_table(lcm_initialization_setting, sizeof(lcm_initialization_setting) / sizeof(struct LCM_setting_table), 1); //dsi_set_cmdq_V3(lcm_initialization_setting2,sizeof(lcm_initialization_setting2)/sizeof(lcm_initialization_setting2[0]),1); /* Note : Data ID will depends on the following rule. count of parameters > 1 => Data ID = 0x39 count of parameters = 1 => Data ID = 0x15 count of parameters = 0 => Data ID = 0x05 Structure Format : {DCS command, count of parameters, {parameter list}} {REGFLAG_DELAY, milliseconds of time, {}}, ... Setting ending by predefined flag {REGFLAG_END_OF_TABLE, 0x00, {}} */ unsigned int data_array[16]; data_array[0]=0x0043902; data_array[1]=0x9483ffb9; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x00033902; data_array[1]=0x8373ba; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x0053902; data_array[1]=0x7d0000b0; data_array[2]=0x00000004; dsi_set_cmdq(&data_array, 3, 1); MDELAY(10); data_array[0]=0x00103902; data_array[1]=0x15156cb1; data_array[2]=0xf21203c4; data_array[3]=0x2397e480; data_array[4]=0x58d2c080; dsi_set_cmdq(&data_array, 5, 1); MDELAY(10); data_array[0]=0x00c3902; data_array[1]=0x106400b2; data_array[2]=0x081c2207; data_array[3]=0x004d1c08; dsi_set_cmdq(&data_array, 4, 1); MDELAY(10); data_array[0]=0x000d3902; data_array[1]=0x03ff00b4; data_array[2]=0x035a035a; data_array[3]=0x306a015a; data_array[4]=0x0000006a; dsi_set_cmdq(&data_array, 5, 1); MDELAY(10); data_array[0]=0x0023902; data_array[1]=0x07bc; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x0043902; data_array[1]=0x010e41bf; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x0033902; data_array[1]=0x4c4cb6; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x001f3902; data_array[1]=0x000600d3; data_array[2]=0x00080740; data_array[3]=0x00071032; data_array[4]=0x0f155407; data_array[5]=0x12020405; data_array[6]=0x33070510; data_array[7]=0x370b0b33; data_array[8]=0x00070710; dsi_set_cmdq(&data_array, 9, 1); MDELAY(10); data_array[0]=0x002d3902; data_array[1]=0x060504d5; data_array[2]=0x02010007; data_array[3]=0x22212003; data_array[4]=0x18181823; data_array[5]=0x18181818; data_array[6]=0x18191918; data_array[7]=0x1b181818; data_array[8]=0x181a1a1b; data_array[9]=0x18181818; data_array[10]=0x18181818; data_array[11]=0x18181818; data_array[12]=0x00000018; dsi_set_cmdq(&data_array, 13, 1); MDELAY(10); data_array[0]=0x002d3902; data_array[1]=0x010203d6; data_array[2]=0x05060700; data_array[3]=0x21222304; data_array[4]=0x18181820; data_array[5]=0x58181818; data_array[6]=0x19181858; data_array[7]=0x1b181819; data_array[8]=0x181a1a1b; data_array[9]=0x18181818; data_array[10]=0x18181818; data_array[11]=0x18181818; data_array[12]=0x00000018; dsi_set_cmdq(&data_array, 13, 1); MDELAY(10); data_array[0]=0x0023902; data_array[1]=0x01cc; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x0033902; data_array[1]=0x1430c0; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x0053902; data_array[1]=0x40c000c7; data_array[2]=0xc0; dsi_set_cmdq(&data_array, 3, 1); MDELAY(10); data_array[0]=0x002b3902; data_array[1]=0x161000e0; data_array[2]=0x233f332d; data_array[3]=0x0d0b073e; data_array[4]=0x14120e17; data_array[5]=0x11061312; data_array[6]=0x0f001813; data_array[7]=0x3f332e16; data_array[8]=0x0b073d23; data_array[9]=0x120f180d; data_array[10]=0x07141214; data_array[11]=0x00171211; dsi_set_cmdq(&data_array, 12, 1); MDELAY(10); data_array[0]=0x0023902; data_array[1]=0x00008edf; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0]=0x00023902; data_array[1]=0x000066d2; dsi_set_cmdq(&data_array, 2, 1); MDELAY(10); data_array[0] = 0x00110500; dsi_set_cmdq(&data_array, 1, 1); MDELAY(200); data_array[0] = 0x00290500; dsi_set_cmdq(&data_array, 1, 1); MDELAY(10); }
static void lcm_init(void) { #ifdef BUILD_LK printf("tM070ddh06--BUILD_LK--lcm_init \n"); //step1: sn65dsi8x enbable and init mt_set_gpio_mode(LVDS_MIPI2_VCC_EN, GPIO_MODE_00); mt_set_gpio_dir(LVDS_MIPI2_VCC_EN, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_MIPI2_VCC_EN, GPIO_OUT_ONE); MDELAY(20); mt_set_gpio_mode(LVDS_LCM_STBY, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_STBY, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); MDELAY(5); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ZERO); MDELAY(20); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); MDELAY(10); //mt_i2c_channel_init(I2C_CH); MDELAY(50); //step2 :set dsi :continuous and HS mode DSI_clk_HS_mode(1); //DSI_continuous_clock(); MDELAY(5); init_sn65dsi8x(); MDELAY(10); //step 3 :lvds lcd init lvds_power_init();//set io =3.3v and VDD enable //mt_set_gpio_mode(LVDS_LCM_STBY, GPIO_MODE_00); //mt_set_gpio_dir(LVDS_LCM_STBY, GPIO_DIR_OUT); // mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); // LCM_STBY MDELAY(20); mt_set_gpio_mode(LVDS_LCM_VCC, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_VCC, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_VCC, GPIO_OUT_ONE); // / LCM VCC :enable LCD VCC //mt_set_gpio_mode(LVDS_LCM_RESET, GPIO_MODE_00); //mt_set_gpio_dir(LVDS_LCM_RESET, GPIO_DIR_OUT); // mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ONE); // LCM_RST -h MDELAY(50); // mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ZERO); // LCM_RST -L //MDELAY(3); //mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ONE); // LCM_RST -H mt_set_gpio_mode(LVDS_LCM_BIASON, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_BIASON, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_BIASON, GPIO_OUT_ONE); // / LCMBIASON :enable VGH +VHL+ AVDD+ VCOM MDELAY(50); //mt_set_gpio_mode(LVDS_LCM_VCC, GPIO_MODE_00); //mt_set_gpio_dir(LVDS_LCM_VCC, GPIO_DIR_OUT); //mt_set_gpio_out(LVDS_LCM_VCC, GPIO_OUT_ONE); // / LCM VCC :enable LCD VCC MDELAY(10); #elif (defined BUILD_UBOOT) #else printk("tM070ddh06--kernel--lcm_init \n"); DSI_clk_HS_mode(1); // DSI_continuous_clock(); #endif }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor u32 pinSetIdxTmp = 0; #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[2][8] = { //for main sensor {GPIO_CAMERA_CMRST_PIN, GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, } }; PK_DBG("kdCISModulePowerOn: 4EC 8AA\n"); if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){ pinSetIdx = 0; } else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) { pinSetIdx = 1; } //power ON if (On) { PK_DBG("kdCISModulePowerOn -on:currSensorName=%s;\n",currSensorName); //MainCameraDigtalPowerCtrl(1); if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_T4K28_YUV,currSensorName))) { PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---SENSOR_DRVNAME_T4K28_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); ISP_MCLK1_EN(false); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. msleep(10); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");//2.8 ->1.8 //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n");//2.8 ->1.8 //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #if 0 if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #endif msleep(5); ISP_MCLK1_EN(true); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. msleep(5); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { //PDN pin if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} msleep(3); //RST pin if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} msleep(3); } //disable inactive sensor if(pinSetIdx == 0) {//disable sub pinSetIdxTmp = 1; } else{ pinSetIdxTmp = 0; } if (GPIO_CAMERA_INVALID != pinSet[pinSetIdxTmp][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMRST],pinSet[pinSetIdxTmp][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMRST],pinSet[pinSetIdxTmp][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } } else { PK_DBG("[CAMERA SENSOR] Camera sensor type loading fail!! \n"); } } else {//power OFF PK_DBG("kdCISModulePowerOn -off:currSensorName=%s\n",currSensorName); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } ISP_MCLK1_EN(false); //[LGE_UPDATE][[email protected]][2014-04-30] MCLK set to low when MCLK is disabled. if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF digital power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #if 0 if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #endif } return 0; _kdCISModulePowerOn_exit_: return -EIO; }
INT32 wmt_plat_pmu_ctrl ( ENUM_PIN_STATE state ) { switch(state) { case PIN_STA_INIT: /*set to gpio output low, disable pull*/ mt_set_gpio_pull_enable(GPIO_COMBO_PMU_EN_PIN, GPIO_PULL_DISABLE); mt_set_gpio_dir(GPIO_COMBO_PMU_EN_PIN, GPIO_DIR_OUT); mt_set_gpio_mode(GPIO_COMBO_PMU_EN_PIN, GPIO_MODE_GPIO); mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ZERO); #ifdef GPIO_COMBO_PMUV28_EN_PIN mt_set_gpio_pull_enable(GPIO_COMBO_PMUV28_EN_PIN, GPIO_PULL_DISABLE); mt_set_gpio_dir(GPIO_COMBO_PMUV28_EN_PIN, GPIO_DIR_OUT); mt_set_gpio_mode(GPIO_COMBO_PMUV28_EN_PIN, GPIO_MODE_GPIO); mt_set_gpio_out(GPIO_COMBO_PMUV28_EN_PIN, GPIO_OUT_ZERO); #endif WMT_DBG_FUNC("WMT-PLAT:PMU init (out 0) \n"); break; case PIN_STA_OUT_H: mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ONE); #ifdef GPIO_COMBO_PMUV28_EN_PIN mt_set_gpio_out(GPIO_COMBO_PMUV28_EN_PIN, GPIO_OUT_ONE); #endif WMT_DBG_FUNC("WMT-PLAT:PMU (out 1) \n"); break; case PIN_STA_OUT_L: mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ZERO); #ifdef GPIO_COMBO_PMUV28_EN_PIN mt_set_gpio_out(GPIO_COMBO_PMUV28_EN_PIN, GPIO_OUT_ZERO); #endif WMT_DBG_FUNC("WMT-PLAT:PMU (out 0) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: /*set to gpio input low, pull down enable*/ mt_set_gpio_mode(GPIO_COMBO_PMU_EN_PIN, GPIO_COMBO_PMU_EN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_PMU_EN_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_COMBO_PMU_EN_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_COMBO_PMU_EN_PIN, GPIO_PULL_ENABLE); #ifdef GPIO_COMBO_PMUV28_EN_PIN mt_set_gpio_mode(GPIO_COMBO_PMUV28_EN_PIN, GPIO_COMBO_PMUV28_EN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_PMUV28_EN_PIN, GPIO_DIR_IN); mt_set_gpio_pull_select(GPIO_COMBO_PMUV28_EN_PIN, GPIO_PULL_DOWN); mt_set_gpio_pull_enable(GPIO_COMBO_PMUV28_EN_PIN, GPIO_PULL_ENABLE); #endif WMT_DBG_FUNC("WMT-PLAT:PMU deinit (in pd) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:Warnning, invalid state(%d) on PMU\n", state); break; } return 0; }
INT32 wmt_plat_pcm_ctrl(ENUM_PIN_STATE state) { #if (CONFIG_ARCH_MT6589) #if defined(MTK_MERGE_INTERFACE_SUPPORT) /*merge PCM function define*/ switch(state) { case PIN_STA_MUX: case PIN_STA_INIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_CLK); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_MRG_I2S_PCM_TX); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_MRG_I2S_PCM_RX); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_MRG_I2S_PCM_SYNC); WMT_DBG_FUNC("WMT-PLAT:PCM init (pcm) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAICLK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAICLK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMOUT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMOUT_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMIN_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMIN_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAISYNC_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAISYNC_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:PCM deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:Warnning, invalid state(%d) on PCM Group\n", state); break; } #else /*normal PCM function define*/ switch(state) { case PIN_STA_MUX: case PIN_STA_INIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_PCM0_CK); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_PCM0_DO); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_PCM0_DI); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_PCM0_WS); WMT_DBG_FUNC("WMT-PLAT:PCM init (pcm) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAICLK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAICLK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMOUT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMOUT_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMIN_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMIN_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAISYNC_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAISYNC_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:PCM deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:Warnning, invalid state(%d) on PCM Group\n", state); break; } #endif #else switch(state) { case PIN_STA_MUX: case PIN_STA_INIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_CLK); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_DAIPCMOUT); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_DAIPCMIN); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_BTSYNC); WMT_DBG_FUNC("WMT-PLAT:PCM init (pcm) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_PCM_DAICLK_PIN, GPIO_PCM_DAICLK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAICLK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAICLK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMOUT_PIN, GPIO_PCM_DAIPCMOUT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMOUT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMOUT_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAIPCMIN_PIN, GPIO_PCM_DAIPCMIN_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAIPCMIN_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAIPCMIN_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_PCM_DAISYNC_PIN, GPIO_PCM_DAISYNC_PIN_M_GPIO); mt_set_gpio_dir(GPIO_PCM_DAISYNC_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_PCM_DAISYNC_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:PCM deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:Warnning, invalid state(%d) on PCM Group\n", state); break; } #endif return 0; }
INT32 wmt_plat_i2s_ctrl(ENUM_PIN_STATE state) { // TODO: [NewFeature][GeorgeKuo]: GPIO_I2Sx is changed according to different project. // TODO: provide a translation table in board_custom.h for different ALPS project customization. #if (CONFIG_ARCH_MT6589) #if defined(MTK_MERGE_INTERFACE_SUPPORT) /*do nothing, since PCM will do right settings*/ #if defined(FM_DIGITAL_INPUT) || defined(FM_DIGITAL_OUTPUT) #if defined (GPIO_COMBO_I2S_CK_PIN) switch(state) { case PIN_STA_INIT: case PIN_STA_MUX: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_CLK); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_MRG_I2S_PCM_SYNC); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_MRG_I2S_PCM_RX); WMT_DBG_FUNC("WMT-PLAT:<Merge IF>I2S init (I2S0 system) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_CK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_CK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_WS_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_WS_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_DAT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_DAT_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:<Merge IF>I2S deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:<Merge IF>Warnning, invalid state(%d) on I2S Group\n", state); break; } #else WMT_ERR_FUNC( "[MT662x]<Merge IF>Error:FM digital mode set, but no I2S GPIOs defined\n"); #endif #else WMT_INFO_FUNC( "[MT662x]<Merge IF>warnning:FM digital mode is not set, no I2S GPIO settings should be modified by combo driver\n"); #endif #else #if defined(FM_DIGITAL_INPUT) || defined(FM_DIGITAL_OUTPUT) #if defined (GPIO_COMBO_I2S_CK_PIN) switch(state) { case PIN_STA_INIT: case PIN_STA_MUX: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_I2SIN_CK); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_I2SIN_WS); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_I2SIN_DAT); WMT_DBG_FUNC("WMT-PLAT:<I2S IF>I2S init (I2S0 system) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_CK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_CK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_WS_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_WS_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_DAT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_DAT_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:<I2S IF>I2S deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:<I2S IF>Warnning, invalid state(%d) on I2S Group\n", state); break; } #else WMT_ERR_FUNC( "[MT662x]<I2S IF>Error:FM digital mode set, but no I2S GPIOs defined\n"); #endif #else WMT_INFO_FUNC( "[MT662x]<I2S IF>warnning:FM digital mode is not set, no I2S GPIO settings should be modified by combo driver\n"); #endif #endif #else #if defined(FM_DIGITAL_INPUT) || defined(FM_DIGITAL_OUTPUT) #if defined (GPIO_COMBO_I2S_CK_PIN) switch(state) { case PIN_STA_INIT: case PIN_STA_MUX: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_I2S0_CK); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_I2S0_WS); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_I2S0_DAT); WMT_DBG_FUNC("WMT-PLAT:I2S init (I2S0 system) \n"); break; case PIN_STA_IN_L: case PIN_STA_DEINIT: mt_set_gpio_mode(GPIO_COMBO_I2S_CK_PIN, GPIO_COMBO_I2S_CK_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_CK_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_CK_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_WS_PIN, GPIO_COMBO_I2S_WS_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_WS_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_WS_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO_COMBO_I2S_DAT_PIN, GPIO_COMBO_I2S_DAT_PIN_M_GPIO); mt_set_gpio_dir(GPIO_COMBO_I2S_DAT_PIN, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_COMBO_I2S_DAT_PIN, GPIO_OUT_ZERO); WMT_DBG_FUNC("WMT-PLAT:I2S deinit (out 0) \n"); break; default: WMT_WARN_FUNC("WMT-PLAT:Warnning, invalid state(%d) on I2S Group\n", state); break; } #else WMT_ERR_FUNC( "[MT662x]Error:FM digital mode set, but no I2S GPIOs defined\n"); #endif #else WMT_INFO_FUNC( "[MT662x]warnning:FM digital mode is not set, no I2S GPIO settings should be modified by combo driver\n"); #endif #endif return 0; }
static void process_dbg_opt(const char *opt) { if (0 == strncmp(opt, "stop_trigger_loop", 17)) { _cmdq_stop_trigger_loop(); return; } else if (0 == strncmp(opt, "start_trigger_loop", 18)) { _cmdq_start_trigger_loop(); return; } else if (0 == strncmp(opt, "cmdqregw:", 9)) { char *p = (char *)opt + 9; unsigned int addr = simple_strtoul(p, &p, 16); unsigned int val = simple_strtoul(p + 1, &p, 16); if (addr) { primary_display_cmdq_set_reg(addr, val); } else { return; } } else if (0 == strncmp(opt, "idle_switch_DC", 14)) { if (0 == strncmp(opt + 14, "on", 2)) { enable_screen_idle_switch_decouple(); printk("enable screen_idle_switch_decouple\n"); } else if (0 == strncmp(opt + 14, "off", 3)) { disable_screen_idle_switch_decouple(); printk("disable screen_idle_switch_decouple\n"); } } else if (0 == strncmp(opt, "shortpath", 9)) { char *p = (char *)opt + 10; int s = simple_strtoul(p, &p, 10); DISPMSG("will %s use shorter decouple path\n", s?"":"not"); disp_helper_set_option(DISP_HELPER_OPTION_TWO_PIPE_INTERFACE_PATH, s); } else if (0 == strncmp(opt, "helper", 6)) { char *p = (char *)opt + 7; int option = simple_strtoul(p, &p, 10); int value = simple_strtoul(p + 1, &p, 10); DISPMSG("will set option %d to %d\n", option, value); disp_helper_set_option(option, value); } else if (0 == strncmp(opt, "dc565", 5)) { char *p = (char *)opt + 6; int s = simple_strtoul(p, &p, 10); DISPMSG("will %s use RGB565 decouple path\n", s?"":"not"); disp_helper_set_option(DISP_HELPER_OPTION_DECOUPLE_MODE_USE_RGB565, s); } else if (0 == strncmp(opt, "switch_mode:", 12)) { int session_id = MAKE_DISP_SESSION(DISP_SESSION_PRIMARY,0); char *p = (char *)opt + 12; unsigned long sess_mode = simple_strtoul(p, &p, 10); primary_display_switch_mode(sess_mode, session_id, 1); } else if (0 == strncmp(opt, "dsipattern", 10)) { char *p = (char *)opt + 11; unsigned int pattern = (unsigned int) simple_strtoul(p, &p, 16); if (pattern) { DSI_BIST_Pattern_Test(DISP_MODULE_DSI0,NULL,true,pattern); DISPMSG("enable dsi pattern: 0x%08x\n", pattern); } else { primary_display_manual_lock(); DSI_BIST_Pattern_Test(DISP_MODULE_DSI0,NULL,false,0); primary_display_manual_unlock(); return; } } else if (0 == strncmp(opt, "rdma_color:", 11)) { printk("zeng: rdma_color\n"); if (0 == strncmp(opt + 11, "on", 2)) { printk("zeng:rdma_color on\n"); char *p = (char *)opt + 14; unsigned int red = simple_strtoul(p, &p, 10); unsigned int green = simple_strtoul(p + 1, &p, 10); unsigned int blue = simple_strtoul(p + 1, &p, 10); rdma_color_matrix matrix = {0}; rdma_color_pre pre = {0}; rdma_color_post post = {255, 0, 0}; post.ADD0 = red; post.ADD1 = green; post.ADD2 = blue; rdma_set_color_matrix(DISP_MODULE_RDMA0, &matrix, &pre, &post); rdma_enable_color_transform(DISP_MODULE_RDMA0); } else if (0 == strncmp(opt + 11, "off", 3)) { printk("zeng:rdma_color off\n"); rdma_disable_color_transform(DISP_MODULE_RDMA0); } } else if (0 == strncmp(opt, "diagnose", 8)) { primary_display_diagnose(); return; } else if (0 == strncmp(opt, "_efuse_test", 11)) { primary_display_check_test(); } else if (0 == strncmp(opt, "dprec_reset", 11)) { dprec_logger_reset_all(); return; } else if (0 == strncmp(opt, "suspend", 4)) { primary_display_suspend(); return; } else if (0 == strncmp(opt, "ata",3)) { mtkfb_fm_auto_test(); return; } else if (0 == strncmp(opt, "resume", 4)) { primary_display_resume(); } else if (0 == strncmp(opt, "dalprintf", 9)) { DAL_Printf("display aee layer test\n"); } else if (0 == strncmp(opt, "dalclean", 8)) { DAL_Clean(); } else if(0 == strncmp(opt, "lfr_setting:",12)) { char *p = (char *)opt + 12; unsigned int enable = (unsigned int) simple_strtoul(p, &p, 12); unsigned int mode = (unsigned int)simple_strtoul(p+1, &p, 12); LCM_PARAMS lcm_param; //unsigned int mode=3; unsigned int type=0; unsigned int skip_num = 1; printk("--------------enable/disable lfr--------------\n"); if (enable) { printk("lfr enable %d mode =%d\n",enable,mode); enable=1; DSI_Set_LFR(DISP_MODULE_DSI0, NULL,mode,type,enable,skip_num); }else{ printk("lfr disable %d mode=%d\n",enable,mode); enable=0; DSI_Set_LFR(DISP_MODULE_DSI0, NULL,mode,type,enable,skip_num); } } else if(0 == strncmp(opt, "vsync_switch:",13)) { char *p = (char *)opt + 13; unsigned int method = 0; method =(unsigned int) simple_strtoul(p, &p, 13); primary_display_vsync_switch(method); } else if (0 == strncmp(opt, "DP", 2)) { char *p = (char *)opt + 3; unsigned int pattern = (unsigned int) simple_strtoul(p, &p, 16); g_display_debug_pattern_index = pattern; return; } else if(0==strncmp(opt,"dsi0_clk:",9)) { char*p=(char*)opt+9; UINT32 clk=simple_strtoul(p, &p, 10); // DSI_ChangeClk(DISP_MODULE_DSI0,clk); } else if (0 == strncmp(opt, "diagnose", 8)) { primary_display_diagnose(); return; } else if (0 == strncmp(opt, "switch:", 7)) { char*p=(char*)opt+7; UINT32 mode=simple_strtoul(p, &p, 10); primary_display_switch_dst_mode(mode%2); return; } else if (0 == strncmp(opt, "regw:", 5)) { char *p = (char *)opt + 5; unsigned long addr = simple_strtoul(p, &p, 16); unsigned long val = simple_strtoul(p + 1, &p, 16); if (addr) { OUTREG32(addr, val); } else { return; } } else if (0 == strncmp(opt, "regr:", 5)) { char *p = (char *)opt + 5; unsigned long addr = (unsigned int) simple_strtoul(p, &p, 16); if (addr) { printk("Read register 0x%lx: 0x%08x\n", addr, INREG32(addr)); } else { return; } } else if (0 == strncmp(opt, "cmmva_dprec", 11)) { dprec_handle_option(0x7); } else if (0 == strncmp(opt, "cmmpa_dprec", 11)) { dprec_handle_option(0x3); } else if (0 == strncmp(opt, "dprec", 5)) { char *p = (char *)opt + 6; unsigned int option = (unsigned int) simple_strtoul(p, &p, 16); dprec_handle_option(option); } else if (0 == strncmp(opt, "cmdq", 4)) { char *p = (char *)opt + 5; unsigned int option = (unsigned int) simple_strtoul(p, &p, 16); if(option) primary_display_switch_cmdq_cpu(CMDQ_ENABLE); else primary_display_switch_cmdq_cpu(CMDQ_DISABLE); } else if (0 == strncmp(opt, "maxlayer", 8)) { char *p = (char *)opt + 9; unsigned int maxlayer = (unsigned int) simple_strtoul(p, &p, 10); if(maxlayer) primary_display_set_max_layer(maxlayer); else DISPERR("can't set max layer to 0\n"); } else if (0 == strncmp(opt, "primary_reset", 13)) { primary_display_reset(); } else if(0 == strncmp(opt, "esd_check", 9)) { char *p = (char *)opt + 10; unsigned int enable = (unsigned int) simple_strtoul(p, &p, 10); primary_display_esd_check_enable(enable); } else if(0 == strncmp(opt, "esd_recovery", 12)) { primary_display_esd_recovery(); } else if(0 == strncmp(opt, "lcm0_reset", 10)) { #if 1 DISP_CPU_REG_SET(DISPSYS_CONFIG_BASE+0x150, 1); msleep(10); DISP_CPU_REG_SET(DISPSYS_CONFIG_BASE+0x150, 0); msleep(10); DISP_CPU_REG_SET(DISPSYS_CONFIG_BASE+0x150, 1); #else #if 0 mt_set_gpio_mode(GPIO106|0x80000000, GPIO_MODE_00); mt_set_gpio_dir(GPIO106|0x80000000, GPIO_DIR_OUT); mt_set_gpio_out(GPIO106|0x80000000, GPIO_OUT_ONE); msleep(10); mt_set_gpio_out(GPIO106|0x80000000, GPIO_OUT_ZERO); msleep(10); mt_set_gpio_out(GPIO106|0x80000000, GPIO_OUT_ONE); #endif #endif } else if(0 == strncmp(opt, "lcm0_reset0", 11)) { DISP_CPU_REG_SET(DDP_REG_BASE_MMSYS_CONFIG+0x150,0); } else if(0 == strncmp(opt, "lcm0_reset1", 11)) { DISP_CPU_REG_SET(DDP_REG_BASE_MMSYS_CONFIG+0x150,1); } else if (0 == strncmp(opt, "cg", 2)) { char *p = (char *)opt + 2; unsigned int enable = (unsigned int) simple_strtoul(p, &p, 10); primary_display_enable_path_cg(enable); } else if (0 == strncmp(opt, "ovl2mem:", 8)) { if (0 == strncmp(opt + 8, "on", 2)) switch_ovl1_to_mem(true); else switch_ovl1_to_mem(false); } else if (0 == strncmp(opt, "dump_layer:", 11)) { if (0 == strncmp(opt + 11, "on", 2)) { char *p = (char *)opt + 14; gCapturePriLayerDownX = simple_strtoul(p, &p, 10); gCapturePriLayerDownY = simple_strtoul(p+1, &p, 10); gCapturePriLayerNum= simple_strtoul(p+1, &p, 10); gCapturePriLayerEnable = 1; gCaptureWdmaLayerEnable = 1; if(gCapturePriLayerDownX==0) gCapturePriLayerDownX = 20; if(gCapturePriLayerDownY==0) gCapturePriLayerDownY = 20; printk("dump_layer En %d DownX %d DownY %d,Num %d",gCapturePriLayerEnable,gCapturePriLayerDownX,gCapturePriLayerDownY,gCapturePriLayerNum); } else if (0 == strncmp(opt + 11, "off", 3)) { gCapturePriLayerEnable = 0; gCaptureWdmaLayerEnable = 0; gCapturePriLayerNum = OVL_LAYER_NUM; printk("dump_layer En %d\n",gCapturePriLayerEnable); } } #ifdef MTK_TODO #error if (0 == strncmp(opt, "hdmion", 6)) { // hdmi_force_init(); } else if (0 == strncmp(opt, "fps:", 4)) { if (0 == strncmp(opt + 4, "on", 2)) { dbg_opt.en_fps_log = 1; } else if (0 == strncmp(opt + 4, "off", 3)) { dbg_opt.en_fps_log = 0; } else { goto Error; } reset_fps_logger(); } else if (0 == strncmp(opt, "tl:", 3)) { if (0 == strncmp(opt + 3, "on", 2)) { dbg_opt.en_touch_latency_log = 1; } else if (0 == strncmp(opt + 3, "off", 3)) { dbg_opt.en_touch_latency_log = 0; } else { goto Error; } } else if (0 == strncmp(opt, "black", 5)) { mtkfb_clear_lcm(); } else if (0 == strncmp(opt, "suspend", 4)) { DISP_PanelEnable(FALSE); DISP_PowerEnable(FALSE); } else if (0 == strncmp(opt, "resume", 4)) { DISP_PowerEnable(TRUE); DISP_PanelEnable(TRUE); } else if (0 == strncmp(opt, "lcm:", 4)) { if (0 == strncmp(opt + 4, "on", 2)) { DISP_PanelEnable(TRUE); } else if (0 == strncmp(opt + 4, "off", 3)) { DISP_PanelEnable(FALSE); } else if (0 == strncmp(opt + 4, "init", 4)) { if (NULL != lcm_drv && NULL != lcm_drv->init) { lcm_drv->init(); } }else { goto Error; } } else if (0 == strncmp(opt, "cabc:", 5)) { if (0 == strncmp(opt + 5, "ui", 2)) { mtkfb_set_backlight_mode(1); }else if (0 == strncmp(opt + 5, "mov", 3)) { mtkfb_set_backlight_mode(3); }else if (0 == strncmp(opt + 5, "still", 5)) { mtkfb_set_backlight_mode(2); }else { goto Error; } } else if (0 == strncmp(opt, "lcd:", 4)) { if (0 == strncmp(opt + 4, "on", 2)) { DISP_PowerEnable(TRUE); } else if (0 == strncmp(opt + 4, "off", 3)) { DISP_PowerEnable(FALSE); } else { goto Error; } } else if (0 == strncmp(opt, "vsynclog:", 9)) { if (0 == strncmp(opt + 9, "on", 2)) { EnableVSyncLog = 1; } else if (0 == strncmp(opt + 9, "off", 3)) { EnableVSyncLog = 0; } else { goto Error; } } else if (0 == strncmp(opt, "layer", 5)) { dump_layer_info(); } else if (0 == strncmp(opt, "regw:", 5)) { char *p = (char *)opt + 5; unsigned long addr = simple_strtoul(p, &p, 16); unsigned long val = simple_strtoul(p + 1, &p, 16); if (addr) { OUTREG32(addr, val); } else { goto Error; } } else if (0 == strncmp(opt, "regr:", 5)) { char *p = (char *)opt + 5; unsigned int addr = (unsigned int) simple_strtoul(p, &p, 16); if (addr) { DISP_LOG_PRINT(ANDROID_LOG_INFO, "DBG", "Read register 0x%08x: 0x%08x\n", addr, INREG32(addr)); } else { goto Error; } } else if(0 == strncmp(opt, "bkl:", 4)) { char *p = (char *)opt + 4; unsigned int level = (unsigned int) simple_strtoul(p, &p, 10); DISP_LOG_PRINT(ANDROID_LOG_INFO, "DBG", "process_dbg_opt(), set backlight level = %d\n", level); DISP_SetBacklight(level); } else if(0 == strncmp(opt, "dither:", 7)) { unsigned lrs, lgs, lbs, dbr, dbg, dbb; char *p = (char *)opt + 7; lrs = (unsigned int) simple_strtoul(p, &p, 16); p++; lgs = (unsigned int) simple_strtoul(p, &p, 16); p++; lbs = (unsigned int) simple_strtoul(p, &p, 16); p++; dbr = (unsigned int) simple_strtoul(p, &p, 16); p++; dbg = (unsigned int) simple_strtoul(p, &p, 16); p++; dbb = (unsigned int) simple_strtoul(p, &p, 16); DISP_LOG_PRINT(ANDROID_LOG_INFO, "DBG", "process_dbg_opt(), %d %d %d %d %d %d\n", lrs, lgs, lbs, dbr, dbg, dbb); } else if (0 == strncmp(opt, "mtkfblog:", 9)) { if (0 == strncmp(opt + 9, "on", 2)) { mtkfb_log_enable(true); } else if (0 == strncmp(opt + 9, "off", 3)) { mtkfb_log_enable(false); } else { goto Error; } } else if (0 == strncmp(opt, "displog:", 8)) { if (0 == strncmp(opt + 8, "on", 2)) { disp_log_enable(true); } else if (0 == strncmp(opt + 8, "off", 3)) { disp_log_enable(false); } else { goto Error; } } else if (0 == strncmp(opt, "mtkfb_vsynclog:", 15)) { if (0 == strncmp(opt + 15, "on", 2)) { mtkfb_vsync_log_enable(true); } else if (0 == strncmp(opt + 15, "off", 3)) { mtkfb_vsync_log_enable(false); } else { goto Error; } } else if (0 == strncmp(opt, "log:", 4)) { if (0 == strncmp(opt + 4, "on", 2)) { mtkfb_log_enable(true); disp_log_enable(true); } else if (0 == strncmp(opt + 4, "off", 3)) { mtkfb_log_enable(false); disp_log_enable(false); } else { goto Error; } } else if (0 == strncmp(opt, "update", 6)) { DISP_UpdateScreen(0, 0, DISP_GetScreenWidth(), DISP_GetScreenHeight()); } else if (0 == strncmp(opt, "pan_disp", 8)) { mtkfb_pan_disp_test(); } else if (0 == strncmp(opt, "sem_cnt", 7)) { mtkfb_show_sem_cnt(); } else if (0 == strncmp(opt, "hang:", 5)) { if (0 == strncmp(opt + 5, "on", 2)) { mtkfb_hang_test(true); } else if (0 == strncmp(opt + 5, "off", 3)) { mtkfb_hang_test(false); } else{ goto Error; } } else if (0 == strncmp(opt, "cpfbonly:", 9)) { if (0 == strncmp(opt + 9, "on", 2)) { mtkfb_capture_fb_only(true); } else if (0 == strncmp(opt + 9, "off", 3)) { mtkfb_capture_fb_only(false); } } else if (0 == strncmp(opt, "esd:", 4)) { if (0 == strncmp(opt + 4, "on", 2)) { esd_recovery_pause(FALSE); } else if (0 == strncmp(opt + 4, "off", 3)) { esd_recovery_pause(TRUE); } } else if (0 == strncmp(opt, "HQA:", 4)) { if (0 == strncmp(opt + 4, "NormalToFactory", 15)) { mtkfb_switch_normal_to_factory(); } else if (0 == strncmp(opt + 4, "FactoryToNormal", 15)) { mtkfb_switch_factory_to_normal(); } } else if (0 == strncmp(opt, "mmp", 3)) { init_mtkfb_mmp_events(); } else if (0 == strncmp(opt, "dump_ovl:", 9)) { if (0 == strncmp(opt + 9, "on", 2)) { char *p = (char *)opt + 12; gCaptureOvlDownX = simple_strtoul(p, &p, 10); gCaptureOvlDownY = simple_strtoul(p+1, &p, 10); gCaptureOvlThreadEnable = 1; wake_up_process(captureovl_task); } else if (0 == strncmp(opt + 9, "off", 3)) { gCaptureOvlThreadEnable = 0; } } else if (0 == strncmp(opt, "dump_fb:", 8)) { if (0 == strncmp(opt + 8, "on", 2)) { char *p = (char *)opt + 11; gCaptureFBDownX = simple_strtoul(p, &p, 10); gCaptureFBDownY = simple_strtoul(p+1, &p, 10); gCaptureFBPeriod = simple_strtoul(p+1, &p, 10); gCaptureFBEnable = 1; wake_up_interruptible(&gCaptureFBWQ); } else if (0 == strncmp(opt + 8, "off", 3)) { gCaptureFBEnable = 0; } } else { if (disphal_process_dbg_opt(opt)) goto Error; } return; Error: DISP_LOG_PRINT(ANDROID_LOG_INFO, "ERROR", "parse command error!\n\n%s", STR_HELP); #endif }
int charging_ic_set_chargingmode( enum charging_ic_charging_mode mode ) { int i= 0; int pulse_cnt = 0; battery_log(BAT_LOG_CRTI, "[charger_rt9536] :: %s\n", __func__); switch( mode ) { case CHR_USB_500_MODE: pulse_cnt = 0; break; case CHR_ISET_MODE: pulse_cnt = 1; break; case CHR_USB_100_MODE: pulse_cnt = 2; break; case CHR_PTM_MODE: pulse_cnt = 3; break; case CHR_DENACTIVE_MODE: pulse_cnt = 0; break; case CHR_UNKNOW_MODE: default: break; } if( (mode != CHR_DENACTIVE_MODE) && ( mode != CHR_UNKNOW_MODE ) ) { spin_lock(&rt9536_spin); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); for( i=0; i<pulse_cnt ; i++) { udelay(110); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); udelay(110); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); } spin_unlock(&rt9536_spin); udelay(1500); spin_lock(&rt9536_spin); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); udelay(770); // about 770 us mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); spin_unlock(&rt9536_spin); } else { mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); } /* { GPIO_CFG cfg = {.no = CHG_EN_SET_N}; cfg.mode = mt_get_gpio_mode(cfg.no); cfg.pullsel= mt_get_gpio_pull_select(cfg.no); cfg.dout = mt_get_gpio_out(cfg.no); cfg.pullen = mt_get_gpio_pull_enable(cfg.no); cfg.dir = mt_get_gpio_dir(cfg.no); battery_log(BAT_LOG_CRTI, "[charger_rt9536] ::idx = %3d: mode = %d, pullsel = %d, dout = %d, pullen = %d, dir = %d\n", cfg.no, cfg.mode, cfg.pullsel, cfg.dout, cfg.pullen, cfg.dir); } */ }
static void lcm_resume(void) { #ifndef BUILD_LK unsigned char temp; DSI_clk_HS_mode(1); //DSI_continuous_clock(); MDELAY(50); //step 1 resume sn65dsi8x mt_set_gpio_mode(LVDS_MIPI2_VCC_EN, GPIO_MODE_00); mt_set_gpio_dir(LVDS_MIPI2_VCC_EN, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_MIPI2_VCC_EN, GPIO_OUT_ONE); MDELAY(10); mt_set_gpio_mode(LVDS_LCM_STBY, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_STBY, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); MDELAY(5); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ZERO); MDELAY(20); mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); MDELAY(10); init_sn65dsi8x(); MDELAY(10); #if 1 //def SN65DSI_DEBUG sn65dsi83_read_byte(0x0a,&temp); printk("lcm_resume cmd-- 0x0a=0x%x \n",temp); sn65dsi83_read_byte(0x0d,&temp); printk("lcm_resume cmd-- 0x0d=0x%x \n",temp); sn65dsi83_read_byte(0x09,&temp); printk("lcm_resume cmd-- 0x09=0x%x \n",temp); #endif //step 2 resume lvds lvds_kernel_power_init();//set io=3.3v //mt_set_gpio_mode(LVDS_LCM_STBY, GPIO_MODE_00); //mt_set_gpio_dir(LVDS_LCM_STBY, GPIO_DIR_OUT); //mt_set_gpio_out(LVDS_LCM_STBY, GPIO_OUT_ONE); // LCM_STBY MDELAY(5); //mt_set_gpio_mode(LVDS_LCM_RESET, GPIO_MODE_00); //mt_set_gpio_dir(LVDS_LCM_RESET, GPIO_DIR_OUT); //mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ONE); // LCM_RST -h //MDELAY(40); // mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ZERO); // LCM_RST -L // MDELAY(3); // mt_set_gpio_out(LVDS_LCM_RESET, GPIO_OUT_ONE); // LCM_RST -H mt_set_gpio_mode(LVDS_LCM_VCC, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_VCC, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_VCC, GPIO_OUT_ONE); // / LCM VCC :enable LCD VCC MDELAY(50); mt_set_gpio_mode(LVDS_LCM_BIASON, GPIO_MODE_00); mt_set_gpio_dir(LVDS_LCM_BIASON, GPIO_DIR_OUT); mt_set_gpio_out(LVDS_LCM_BIASON, GPIO_OUT_ONE); // LCMBIASON :VGH VHL MDELAY(50); MDELAY(20); printk("tM070ddh06--lcm_resume end \n"); #else printf("tM070ddh06--suspend \n"); #endif }
static long matv_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { int *user_data_addr; long ret = 0; U8 *pReadData = 0; U8 *pWriteData = 0; U8 *ptr; U8 reg8, bAutoInc; U16 len; switch(cmd) { case TEST_MATV_PRINT : MATV_LOGD("**** mt519x matv ioctl : test\n"); break; case MATV_READ: user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, 4); ptr = (U8*)matv_in_data; reg8 = ptr[0]; bAutoInc = ptr[1]; len = ptr[2]; len+= ((U16)ptr[3])<<8; //MATV_LOGD("**** mt519x matv ioctl : read length = %d\n",len); #ifdef _MATV_HIGH_SPEED_DMA_ pReadData = gpDMABuf_va; pa_addr = gpDMABuf_pa; if(!pReadData){ MATV_LOGE("[Error] dma_alloc_coherent failed!\n"); break; } mt519x_dma_read_m_byte(reg8, pReadData, pa_addr, len, bAutoInc); ret = copy_to_user(user_data_addr, pReadData, len); #else pReadData = (U8 *)kmalloc(len,GFP_ATOMIC); if(!pReadData){ MATV_LOGE("[Error] kmalloc failed!\n"); break; } mt519x_read_m_byte(reg8, pReadData, len, bAutoInc); ret = copy_to_user(user_data_addr, pReadData, len); if(pReadData) kfree(pReadData); #endif //#ifdef _MATV_HIGH_SPEED_DMA_ break; case MATV_WRITE: user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, 4); ptr = (U8*)matv_in_data; reg8 = ptr[0]; bAutoInc = ptr[1]; len = ptr[2]; len+= ((U16)ptr[3])<<8; //MATV_LOGD("**** mt519x matv ioctl : write length = %d\n",len); #ifdef _MATV_HIGH_SPEED_DMA_ pWriteData = gpDMABuf_va; pa_addr = gpDMABuf_pa; if(!pWriteData){ MATV_LOGE("[Error] dma_alloc_coherent failed!\n"); break; } ret = copy_from_user(pWriteData+1, ((void*)user_data_addr)+4, len); //printk("\n[MATV]Write data = %d\n",*(pWriteData+1)); mt519x_dma_write_m_byte(reg8, pWriteData, pa_addr, len, bAutoInc); #else pWriteData = (U8 *)kmalloc(len,GFP_ATOMIC); if(!pWriteData){ MATV_LOGE("[Error] kmalloc failed!\n"); break; } ret = copy_from_user(pWriteData, ((void*)user_data_addr)+4, len); //printk("\n[MATV]Write data = %d\n",*pWriteData); mt519x_write_m_byte(reg8, pWriteData, len, bAutoInc); //ret = copy_to_user(user_data_addr, pReadData, len); if(pWriteData) kfree(pWriteData); #endif //#ifdef _MATV_HIGH_SPEED_DMA_ break; case MATV_SET_PWR: user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, sizeof(int)); //MATV_LOGD("**** mt519x matv ioctl : set pwr = %d\n",user_data_addr[0]); #ifdef GPIO_MATV_PWR_ENABLE if(matv_in_data[0]!=0) mt_set_gpio_out(GPIO_MATV_PWR_ENABLE, GPIO_OUT_ONE); else mt_set_gpio_out(GPIO_MATV_PWR_ENABLE, GPIO_OUT_ZERO); #endif break; case MATV_SET_RST: user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, sizeof(int)); //MATV_LOGD("**** mt519x matv ioctl : set rst = %d\n",user_data_addr[0]); #ifdef GPIO_MATV_N_RST if(matv_in_data[0]!=0){ mt_set_gpio_out(GPIO_MATV_N_RST, GPIO_OUT_ONE); } else mt_set_gpio_out(GPIO_MATV_N_RST, GPIO_OUT_ZERO); #endif break; case MATV_SET_STRAP: user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, sizeof(int)); #ifdef GPIO_MATV_I2S_DAT_PIN if(matv_in_data[0]==0){ //Enable I2D Data pin and pull low mt_set_gpio_mode(GPIO_MATV_I2S_DAT_PIN,GPIO_MODE_00); mt_set_gpio_dir(GPIO_MATV_I2S_DAT_PIN, GPIO_DIR_OUT); mt_set_gpio_pull_enable(GPIO_MATV_I2S_DAT_PIN,true); mt_set_gpio_out(GPIO_MATV_I2S_DAT_PIN, GPIO_OUT_ZERO); printk("force I2s data pin low \n"); //~ } else if (matv_in_data[0]==1) { //Disable I2D Data pin #ifdef GPIO_MATV_I2S_DAT_PIN_M_I2S0_DAT mt_set_gpio_mode(GPIO_MATV_I2S_DAT_PIN,GPIO_MATV_I2S_DAT_PIN_M_I2S0_DAT); #endif #ifdef GPIO_MATV_I2S_DAT_PIN_M_I2SIN_DAT mt_set_gpio_mode(GPIO_MATV_I2S_DAT_PIN,GPIO_MATV_I2S_DAT_PIN_M_I2SIN_DAT); #endif mt_set_gpio_pull_enable(GPIO_MATV_I2S_DAT_PIN,false); mt_set_gpio_out(GPIO_MATV_I2S_DAT_PIN, GPIO_OUT_ZERO); printk("put I2S data pin back \n"); //~ } #else MATV_LOGD("**** mt519x ioctl : GPIO_MATV_I2S_DAT_PIN is not defined!!!!!!!!!\\n"); #endif break; case MATV_SLEEP: { long timeout_jiff; static wait_queue_head_t matvWaitQueue; struct timeval t1,t2; int time_diff = 0; int timeOut = 0; init_waitqueue_head(&matvWaitQueue); user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, sizeof(int)); timeout_jiff = (matv_in_data[0]+2) * HZ / 1000; // wait 80 ms do_gettimeofday(&t1); timeOut = wait_event_interruptible_timeout(matvWaitQueue, NULL, timeout_jiff); if(0 != timeOut) MATV_LOGE("[MATV] Fail to sleep enough time %d\n", timeOut); do_gettimeofday(&t2); time_diff = (t2.tv_sec - t1.tv_sec)*1000000 + (t2.tv_usec - t1.tv_usec); if (time_diff < (matv_in_data[0]-2)*1000){ //MATV_LOGE("[MATV]TimeDiff=%d\n",time_diff); udelay(matv_in_data[0]*1000 - time_diff); } } break; case MATV_SET_TP_MODE: { user_data_addr = (int *)arg; ret = copy_from_user(matv_in_data, user_data_addr, sizeof(int)); MATV_LOGD("[MATV]MATV_SET_TP_MODE = %d\n",matv_in_data[0]); if(matv_in_data[0] == 0) { tpd_switch_single_mode(); } else if(matv_in_data[0] == 1) { tpd_switch_multiple_mode(); } else if(matv_in_data[0] == 2) { tpd_switch_sleep_mode(); } else if(matv_in_data[0] == 3) { tpd_switch_normal_mode(); } else { MATV_LOGE("[MATV] TP's mode value(%d) is wrong!\n",matv_in_data[0]); } } break; case MATV_QUERY_I2S_INFO: { user_data_addr = (int *)arg; ret = copy_to_user(user_data_addr, &i2s_info, sizeof(i2s_info)); } break; default: break; } return 0; }
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; }
static void lcm_set_gpio_output(unsigned int GPIO, unsigned int output) { mt_set_gpio_mode(GPIO, GPIO_MODE_00); mt_set_gpio_dir(GPIO, GPIO_DIR_OUT); mt_set_gpio_out(GPIO, (output>0)? GPIO_OUT_ONE: GPIO_OUT_ZERO); }
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; }
void CLEAR_SCL(void) { mt_set_gpio_out(GPIO_SCL, GPIO_OUT_ZERO); udelay(I2C_DELAY_VALUE); }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { #if 1 // LGE_CHANGE: [2014-11-03] [email protected], Add camera 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 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 } 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 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_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 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 } 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; #endif }
void mt6620_power_on(void) { int result = 0; static int _32k_set = 0; /*log MT6620 GPIO Settings*/ mt6620_print_pin_configure(); /* disable interrupt firstly */ mt_combo_bgf_disable_irq(); #define MT6620_OFF_TIME (10) /* in ms, workable value */ #define MT6620_RST_TIME (30) /* in ms, workable value */ #define MT6620_STABLE_TIME (30) /* in ms, workable value */ #define MT6620_EXT_INT_TIME (5) /* in ms, workable value */ #define MT6620_32K_STABLE_TIME (100) /* in ms, test value */ #if defined(CONFIG_MTK_COMBO_SDIO_SLOT) && (CONFIG_MTK_COMBO_SDIO_SLOT == 0) printk(KERN_INFO "[mt6620] pull up sd0 bus(gpio169~gpio175(exclude gpio174))\n"); mt_set_gpio_pull_enable(GPIO172, GPIO_PULL_ENABLE); //->CLK mt_set_gpio_pull_select(GPIO172, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO171, GPIO_PULL_ENABLE); //->CMD mt_set_gpio_pull_select(GPIO171, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO175, GPIO_PULL_ENABLE); //->DAT0 mt_set_gpio_pull_select(GPIO175, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO173, GPIO_PULL_ENABLE); //->DAT1 mt_set_gpio_pull_select(GPIO173, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO169, GPIO_PULL_ENABLE); //->DAT2 mt_set_gpio_pull_select(GPIO169, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO170, GPIO_PULL_ENABLE); //->DAT3 mt_set_gpio_pull_select(GPIO170, GPIO_PULL_UP); #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 1) #error "error:MSDC1 is not reserved for MT6620 on MT6575EVB" #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 2) printk(KERN_INFO "[mt6620] pull up sd2 bus(gpio182~187)\n"); mt_set_gpio_pull_enable(GPIO182, GPIO_PULL_ENABLE); //->CLK mt_set_gpio_pull_select(GPIO182, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO184, GPIO_PULL_ENABLE); //->CMD mt_set_gpio_pull_select(GPIO184, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO186, GPIO_PULL_ENABLE); //->DAT0 mt_set_gpio_pull_select(GPIO186, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO187, GPIO_PULL_ENABLE); //->DAT1 mt_set_gpio_pull_select(GPIO187, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO185, GPIO_PULL_ENABLE); //->DAT2 mt_set_gpio_pull_select(GPIO185, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO183, GPIO_PULL_ENABLE); //->DAT3 mt_set_gpio_pull_select(GPIO183, GPIO_PULL_UP); #elif (CONFIG_MTK_COMBO_SDIO_SLOT == 3) printk(KERN_INFO "[mt6620] pull up sd3 bus (GPIO89~GPIO94)\n"); mt_set_gpio_pull_enable(GPIO92, GPIO_PULL_ENABLE); //->CLK mt_set_gpio_pull_select(GPIO92, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO91, GPIO_PULL_ENABLE); //->CMD mt_set_gpio_pull_select(GPIO91, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO94, GPIO_PULL_ENABLE); //->DAT0 mt_set_gpio_pull_select(GPIO94, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO90, GPIO_PULL_ENABLE); //->DAT1 mt_set_gpio_pull_select(GPIO90, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO89, GPIO_PULL_ENABLE); //->DAT2 mt_set_gpio_pull_select(GPIO89, GPIO_PULL_UP); mt_set_gpio_pull_enable(GPIO93, GPIO_PULL_ENABLE); //->DAT3 mt_set_gpio_pull_select(GPIO93, GPIO_PULL_UP); #else #error "error:unsupported CONFIG_MTK_COMBO_SDIO_SLOT" CONFIG_MTK_COMBO_SDIO_SLOT #endif //printk(KERN_INFO "[mt6620] enable RTC CLK\n"); if(_32k_set == 0) { //rtc_gpio_export_32k(true); //old 32k export API /* * To fix RTC32k clocks stops after system reboot */ rtc_gpio_enable_32k(RTC_GPIO_USER_GPS); _32k_set = 1; printk("[mt6620]rtc_gpio_enable_32k(RTC_GPIO_USER_GPS) \n"); } else { printk("[mt6620]not to rtc_gpio_enable_32k(RTC_GPIO_USER_GPS)\n"); } msleep(MT6620_32K_STABLE_TIME); /* UART Mode */ result += mt_set_gpio_mode(GPIO_UART_URXD3_PIN, GPIO_UART_URXD3_PIN_M_URXD);//GPIO_MODE_01->GPIO_UART_URXD3_PIN_M_URXD result += mt_set_gpio_mode(GPIO_UART_UTXD3_PIN, GPIO_UART_UTXD3_PIN_M_UTXD);//GPIO_MODE_01->GPIO_UART_UTXD3_PIN_M_UTXD //printk(KERN_INFO "[mt6620] set UART GPIO Mode [%d]\n", result); /* FIXME! GeorgeKuo: added for MT6620 GPIO initialization */ /* disable pull */ mt_set_gpio_pull_enable(GPIO_COMBO_PMU_EN_PIN, GPIO_PULL_DISABLE); mt_set_gpio_pull_enable(GPIO_COMBO_RST_PIN, GPIO_PULL_DISABLE); /* set output */ mt_set_gpio_dir(GPIO_COMBO_PMU_EN_PIN, GPIO_DIR_OUT); mt_set_gpio_dir(GPIO_COMBO_RST_PIN, GPIO_DIR_OUT); /* set gpio mode */ mt_set_gpio_mode(GPIO_COMBO_PMU_EN_PIN, GPIO_MODE_GPIO); mt_set_gpio_mode(GPIO_COMBO_RST_PIN, GPIO_MODE_GPIO); /* SYSRST_B low */ mt_set_gpio_out(GPIO_COMBO_RST_PIN, GPIO_OUT_ZERO); /* PMU_EN low */ mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ZERO); msleep(MT6620_OFF_TIME); /* PMU_EN high, SYSRST_B low */ mt_set_gpio_out(GPIO_COMBO_PMU_EN_PIN, GPIO_OUT_ONE); msleep(MT6620_RST_TIME); /* SYSRST_B high */ mt_set_gpio_out(GPIO_COMBO_RST_PIN, GPIO_OUT_ONE); msleep(MT6620_STABLE_TIME); /* BT PCM bus default mode. Real control is done by audio and mt_combo.c */ mt_combo_audio_ctrl_ex(COMBO_AUDIO_STATE_1, 0); /* EINT1 for BGF_INT_B */ mt_set_gpio_mode(GPIO_COMBO_BGF_EINT_PIN, GPIO_COMBO_BGF_EINT_PIN_M_GPIO); mt_set_gpio_pull_enable(GPIO_COMBO_BGF_EINT_PIN, GPIO_PULL_ENABLE); mt_set_gpio_pull_select(GPIO_COMBO_BGF_EINT_PIN, GPIO_PULL_UP); mt_set_gpio_mode(GPIO_COMBO_BGF_EINT_PIN, GPIO_COMBO_BGF_EINT_PIN_M_EINT); /* request IRQ (EINT1) */ mt_combo_bgf_request_irq(NULL); printk(KERN_INFO "[mt6620] power on \n"); return; }
DISP_STATUS DISP_Set3DPWM(BOOL enable, BOOL landscape) { #if 0 unsigned int temp_reg; if (enable && (!ispwmenabled || ismodechanged)) { // Set GPIO66, GPIO67, GPIO68 to PWM2, PWM1, PWM3 mt_set_gpio_mode(GPIO187, GPIO_MODE_GPIO); mt_set_gpio_out(GPIO187, GPIO_OUT_ONE); mt_set_gpio_mode(GPIO66, GPIO_MODE_07); mt_set_gpio_mode(GPIO67, GPIO_MODE_07); mt_set_gpio_mode(GPIO68, GPIO_MODE_07); struct pwm_easy_config pwm_setting; pwm_setting.clk_src = PWM_CLK_OLD_MODE_32K; pwm_setting.duty = 50; pwm_setting.clk_div = CLK_DIV1; pwm_setting.duration = 533; pwm_setting.pwm_no = PWM1; pwm_set_easy_config(&pwm_setting); pwm_setting.pwm_no = PWM2; pwm_set_easy_config(&pwm_setting); pwm_setting.pwm_no = PWM3; pwm_set_easy_config(&pwm_setting); temp_reg=INREG32(INFRA_SYS_CFG_BASE+0x700); temp_reg&=~0xF000000; if(landscape) temp_reg|=0x9000000; else temp_reg|=0x3000000; OUTREG32((INFRA_SYS_CFG_BASE+0x700), temp_reg); ispwmenabled = TRUE; DISP_LOG("3D PWM is enabled. landscape:%d ! \n", landscape); } else if (!enable && ispwmenabled) { mt_set_gpio_mode(GPIO187, GPIO_MODE_GPIO); mt_set_gpio_out(GPIO187, GPIO_OUT_ZERO); mt_set_gpio_mode(GPIO66, GPIO_MODE_GPIO); mt_set_gpio_mode(GPIO67, GPIO_MODE_GPIO); mt_set_gpio_mode(GPIO68, GPIO_MODE_GPIO); ispwmenabled = FALSE; DISP_LOG("3D PWM is disabled ! \n"); } #endif return DISP_STATUS_OK; }
static int touch_event_handler(void *unused) { struct sched_param param = { .sched_priority = RTPM_PRIO_TPD }; char index; char buffer[14]; int i, pre_touch1 = 0, pre_touch2 = 0, touch = 0, finger_num = 0; int x1, y1, p1, x2, y2, p2, raw_x1, raw_y1, raw_x2, raw_y2; struct i2c_msg msg[2]; sched_setscheduler(current, SCHED_RR, ¶m); do { MT6516_EINTIRQUnmask(CUST_EINT_TOUCH_PANEL_NUM); // possibly to lose event? set_current_state(TASK_INTERRUPTIBLE); if (!kthread_should_stop()) { while (tpd_halt) {tpd_flag=0; msleep(20);} if (pre_touch1 || pre_touch2) wait_event_interruptible_timeout(waiter, tpd_flag!=0, HZ/8); else wait_event_interruptible_timeout(waiter, tpd_flag!=0, HZ*2); TPD_DEBUG_SET_TIME; } set_current_state(TASK_RUNNING); if (tpd_calibrate_en | tpd_show_version) { mt_set_gpio_mode(GPIO61, 0x00); mt_set_gpio_pull_enable(GPIO61, GPIO_PULL_ENABLE); mt_set_gpio_pull_select(GPIO61,GPIO_PULL_UP); mt_set_gpio_dir(GPIO61, GPIO_DIR_OUT); mt_set_gpio_out(GPIO61, GPIO_OUT_ZERO); hwPowerDown(TPD_POWER_SOURCE,"TP"); hwPowerOn(TPD_POWER_SOURCE,VOL_3300,"TP"); msleep(20); if (tpd_calibrate_en) { tpd_do_calibrate(); tpd_calibrate_en = 0; } else { tpd_print_version(); tpd_show_version = 0; } /* added in android 2.2, for configuring EINT2 to EINT mode */ mt_set_gpio_mode(GPIO61, 0x01); mt_set_gpio_pull_enable(GPIO61, GPIO_PULL_ENABLE); mt_set_gpio_pull_select(GPIO61,GPIO_PULL_UP); continue; } if (!tpd_flag) { if (pre_touch1==1) { tpd_up(raw_x1, raw_y1, x1,y1,p1); pre_touch1 = 0; } if (pre_touch2==1) { tpd_up(raw_x2, raw_y2, x2,y2,p2); pre_touch2 = 0; } input_sync(tpd->dev); continue; } else { tpd_flag = 0; } buffer[0] = 0x80; i2c_master_send(i2c_rs_client, &buffer[0], (1 << 8 | 1)); touch = (buffer[0] & 0x08) >> 3; // finger up or finger down //printk("buffer[0] = %d\n", buffer[0]); if (buffer[0]&0x80) { buffer[6] = 0xc0; i2c_master_send(i2c_rs_client, &buffer[6], (8 << 8 | 1)); buffer[0] = 0xe0; i2c_master_send(i2c_rs_client, &buffer[0], (6 << 8 | 1)); if (finger_num == 0x03 && buffer[0] == 0x00) { TPD_DEBUG("[mtk-tpd] firmware bug. hold one finger, hold another finger, and then tap the first finger, it will happen.\n"); continue; } if ((buffer[0] & 0xF0)) { TPD_DEBUG("[mtk-tpd] this is not a position information\n"); continue; } if (buffer[1] == 0x01) { TPD_DEBUG("[mtk-tpd] fat touch detect\n"); continue; } finger_num = buffer[0]&0x07; if (finger_num&1) { x1 = buffer[2]+((buffer[3]&0x0f)<<8); y1 = buffer[4]+((buffer[3]&0xf0)<<4); p1 = buffer[5]&0x0f; raw_x1 = x1; raw_y1 = y1; tpd_calibrate(&x1, &y1); tpd_down(raw_x1, raw_y1, x1, y1, p1); pre_touch1=1; } else { if (pre_touch1!=0) { tpd_up(raw_x1, raw_y1, x1, y1, p1); pre_touch1 = 0; } } if (finger_num&2) { x2 = buffer[6]+((buffer[7]&0x0f)<<8); y2 = buffer[8]+((buffer[7]&0xf0)<<4); p2 = buffer[9]&0x0f; raw_x2 = x2; raw_y2 = y2; tpd_calibrate(&x2, &y2); tpd_down(raw_x2, raw_y2, x2, y2, p2); pre_touch2=1; } else { if (pre_touch2!=0) { tpd_up(raw_x2, raw_y2, x2, y2, p2); pre_touch2 = 0; } } input_sync(tpd->dev); } else { msleep(10); } } while (!kthread_should_stop()); return 0; }
int cm_do_md_power_on(int bootmode) { EMD_MSG_INF("chr","cm_do_md_power_on\n"); cm_disable_ext_md_wdt_irq(); cm_disable_ext_md_wakeup_irq(); cm_disable_ext_md_exp_irq(); // Release download key to let md can enter normal boot mt_set_gpio_dir(GPIO_EXT_MD_DL_KEY, 1); #ifdef GPIO_EXT_USB_SW2 mt_set_gpio_out(GPIO_EXT_MD_DL_KEY, 1); EMD_MSG_INF("chr","cm_do_md_power_on:set evb GPIO_EXT_MD_DL_KEY=%d\n",mt_get_gpio_out(GPIO_EXT_MD_DL_KEY)); #else mt_set_gpio_out(GPIO_EXT_MD_DL_KEY, 0); EMD_MSG_INF("chr","cm_do_md_power_on:set phone GPIO_EXT_MD_DL_KEY=%d\n",mt_get_gpio_out(GPIO_EXT_MD_DL_KEY)); #endif mt_set_gpio_dir(GPIO_EXT_MD_PWR_KEY, 1); mt_set_gpio_out(GPIO_EXT_MD_PWR_KEY, 1); msleep(POWER_ON_WAIT_RESET_TIME); ignore_wdt_interrupt = 1; cm_hold_rst_signal(); is_hold_rst = 1; EMD_MSG_INF("chr","cm_do_md_power_on:reset GPIO_EXT_MD_DL_KEY(%d),GPIO_EXT_MD_PWR_KEY(%d)\n",mt_get_gpio_out(GPIO_EXT_MD_DL_KEY),mt_get_gpio_out(GPIO_EXT_MD_PWR_KEY)); if(bootmode) { #ifndef GPIO_EXT_USB_SW2 mt_set_gpio_dir(GPIO_EXT_MD_META, 1); mt_set_gpio_out(GPIO_EXT_MD_META, 1); EMD_MSG_INF("chr","cm_do_md_power_on:meta mode,phone GPIO_EXT_MD_META(%d)\n",mt_get_gpio_out(GPIO_EXT_MD_META)); #else mt_set_gpio_pull_enable(GPIO_EXT_MD_DUMP, 1); mt_set_gpio_dir(GPIO_EXT_MD_DUMP, 1); mt_set_gpio_out(GPIO_EXT_MD_DUMP, 1); EMD_MSG_INF("chr","cm_do_md_power_on:meta mode,evb GPIO_EXT_MD_DUMP(%d)\n",mt_get_gpio_out(GPIO_EXT_MD_DUMP)); #endif } else { #ifndef GPIO_EXT_USB_SW2 mt_set_gpio_dir(GPIO_EXT_MD_META, 1); mt_set_gpio_out(GPIO_EXT_MD_META, 0); EMD_MSG_INF("chr","cm_do_md_power_on,phone GPIO_EXT_MD_META(%d)\n",mt_get_gpio_out(GPIO_EXT_MD_META)); #else mt_set_gpio_dir(GPIO_EXT_MD_DUMP, 1); mt_set_gpio_out(GPIO_EXT_MD_DUMP, 0); EMD_MSG_INF("chr","cm_do_md_power_on,evb GPIO_EXT_MD_DUMP(%d)\n",mt_get_gpio_out(GPIO_EXT_MD_DUMP)); #endif } mt_set_gpio_dir(GPIO_EXT_MD_WK_AP, 0); mt_set_gpio_pull_enable(GPIO_EXT_MD_WK_AP, 1); mt_set_gpio_pull_select(GPIO_EXT_MD_WK_AP, 0); mt_set_gpio_dir(GPIO_EXT_MD_EXP, 0); mt_set_gpio_pull_enable(GPIO_EXT_MD_EXP, 1); mt_set_gpio_pull_select(GPIO_EXT_MD_EXP, 1); mtk_uart_freeze_enable(uart_port,1); msleep(RESET_WAIT_RELEASE_TIME); //For low power, we switch UART GPIO when power off md, so restore here according to dws default setting. mt_set_gpio_mode(GPIO_UART_URXD1_PIN, 1); mt_set_gpio_mode(GPIO_UART_UTXD1_PIN, 1); mt_set_gpio_mode(GPIO_UART_URTS1_PIN, 1); mt_set_gpio_mode(GPIO_UART_UCTS1_PIN, 1); mt_set_gpio_dir(GPIO_UART_URXD1_PIN, 0); mt_set_gpio_pull_enable(GPIO_UART_URXD1_PIN, 1); mt_set_gpio_pull_select(GPIO_UART_URXD1_PIN, 1); mt_set_gpio_dir(GPIO_UART_UTXD1_PIN, 1); mt_set_gpio_out(GPIO_UART_UTXD1_PIN, 1); mt_set_gpio_dir(GPIO_UART_URTS1_PIN, 1); mt_set_gpio_out(GPIO_UART_URTS1_PIN, 1); mt_set_gpio_dir(GPIO_UART_UCTS1_PIN, 0); mt_set_gpio_pull_enable(GPIO_UART_UCTS1_PIN, 1); mt_set_gpio_pull_select(GPIO_UART_UCTS1_PIN, 1); EMD_MSG_INF("chr","uart gpio restore\n"); EMD_MSG_INF("chr","cm_do_md_power_on: GPIO_EXT_MD_EXP(%d),GPIO_EXT_MD_WD(%d),GPIO_EXT_MD_RST(%d),GPIO_EXT_MD_PWR_KEY(%d)\n", \ mt_get_gpio_in(GPIO_EXT_MD_EXP),mt_get_gpio_in(GPIO_EXT_MD_WD),mt_get_gpio_out(GPIO_EXT_MD_RST),mt_get_gpio_out(GPIO_EXT_MD_PWR_KEY)); return 0; }
static int nmi5625_open(struct inode *inode, struct file *file) { int ret = 0; func_enter(); if (!already_init) { ret = -ENODEV; goto _fail_; } /*************************************** initialize 2.8V 1.2V RESET GPIO mode for reference ****************************************/ // kdCISModulePowerOn(DUAL_CAMERA_SUB_SENSOR,SENSOR_DRVNAME_GC0329_YUV,true,"nmiatv"); /*if(mt_set_gpio_mode(GPIO_CAMERA_CMRST1_PIN,GPIO_CAMERA_CMRST1_PIN_M_GPIO)){printk("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_CMRST1_PIN,GPIO_DIR_OUT)){printk("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_CMRST1_PIN,GPIO_OUT_ZERO)){printk("[CAMERA SENSOR] set gpio failed!! \n");} if(mt_set_gpio_mode(GPIO_CAMERA_CMPDN1_PIN,GPIO_CAMERA_CMPDN1_PIN_M_GPIO)){printk("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_CMPDN1_PIN,GPIO_DIR_OUT)){printk("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_CMPDN1_PIN,GPIO_OUT_ONE)){printk("[CAMERA LENS] set gpio failed!! \n");} */ //PWR Enable // mt_set_gpio_mode(NMI_POWER_VDDIO_PIN,GPIO_MODE_00); // mt_set_gpio_dir(NMI_POWER_VDDIO_PIN, GPIO_DIR_OUT); // mt_set_gpio_pull_enable(NMI_POWER_VDDIO_PIN,true); // mt_set_gpio_out(NMI_POWER_VDDIO_PIN, 0); // RF #if 0 mt_set_gpio_mode(NMI_ATV_ANT_PIN,GPIO_MODE_00); mt_set_gpio_dir(NMI_ATV_ANT_PIN, GPIO_DIR_OUT); mt_set_gpio_pull_enable(NMI_ATV_ANT_PIN,true); mt_set_gpio_out(NMI_ATV_ANT_PIN, GPIO_OUT_ONE); mt_set_gpio_mode(NMI_FM_ANT_PIN,GPIO_MODE_00); mt_set_gpio_dir(NMI_FM_ANT_PIN, GPIO_DIR_OUT); mt_set_gpio_pull_enable(NMI_FM_ANT_PIN,true); mt_set_gpio_out(NMI_FM_ANT_PIN, GPIO_OUT_ZERO); #endif mt_set_gpio_mode(NMI_POWER_VCORE_PIN,GPIO_MODE_00); mt_set_gpio_dir(NMI_POWER_VCORE_PIN, GPIO_DIR_OUT); mt_set_gpio_pull_enable(NMI_POWER_VCORE_PIN,true); mt_set_gpio_out(NMI_POWER_VCORE_PIN, GPIO_OUT_ZERO); mt_set_gpio_mode(NMI_RESET_PIN,GPIO_MODE_00); mt_set_gpio_dir(NMI_RESET_PIN, GPIO_DIR_OUT); mt_set_gpio_pull_enable(NMI_RESET_PIN,true); mt_set_gpio_out(NMI_RESET_PIN, GPIO_OUT_ZERO); #ifndef NMI_HW_I2C nmi_i2c_init(); #endif #ifdef NMI_USE_MTK_I2C_DMA gpDMABuf_va = (u8 *)dma_alloc_coherent(NULL, 4096, &gpDMABuf_pa, GFP_KERNEL); if(!gpDMABuf_va){ printk("[nmi][Error] Allocate DMA I2C Buffer failed!\n"); } #endif file->private_data = (void *)&nd; // _fail_: func_exit(); return ret; }
int cust_matv_power_on(void) { MATV_LOGE("[MATV] cust_matv_power_on Start\n"); ///cust_matv_gpio_on(); u32 pinSetIdx = 0;//default main sensor u32 pinSet[2][4] = { //for main sensor {GPIO_CAMERA_CMRST_PIN, GPIO_CAMERA_CMRST_PIN_M_GPIO, GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO}, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMPDN1_PIN_M_GPIO} }; if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_2800,"MT5192")) { MATV_LOGE("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; return 0; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,"MT5192")) { MATV_LOGE("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; return 0; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,"MT5192")) { MATV_LOGE("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; return 0; } if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,"MT5192")) { MATV_LOGE("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; return 0; } { mt_set_gpio_mode(pinSet[pinSetIdx][0],pinSet[pinSetIdx][1]); mt_set_gpio_dir(pinSet[pinSetIdx][0],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][0],GPIO_OUT_ZERO); ///mdelay(10); mt_set_gpio_out(pinSet[pinSetIdx][0],GPIO_OUT_ONE); ///mdelay(1); //PDN pin mt_set_gpio_mode(pinSet[pinSetIdx][2],pinSet[pinSetIdx][3]); mt_set_gpio_dir(pinSet[pinSetIdx][2],GPIO_DIR_OUT); mt_set_gpio_out(pinSet[pinSetIdx][2],GPIO_OUT_ZERO); } return 0; }
int charging_ic_set_chargingmode(enum charging_ic_charging_mode mode) { int i = 0; int pulse_cnt = 0; //xlog_printk(ANDROID_LOG_INFO, "Power/Charger", "[charger_rt9536] :: %s\n", __func__); switch(mode) { case CHR_USB_500_MODE : pulse_cnt = 4; break; case CHR_ISET_MODE : pulse_cnt = 1; break; case CHR_USB_100_MODE : pulse_cnt = 2; break; case CHR_FACTORY_MODE : pulse_cnt = 3; break; case CHR_DEACTIVE_MODE : pulse_cnt = 0; break; case CHR_UNKNOWN_MODE : default : break; } if((mode != CHR_DEACTIVE_MODE) && (mode != CHR_UNKNOWN_MODE)) { spin_lock(&rt9536_spin); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); for(i = 0; i < pulse_cnt; i++) { udelay(110); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); udelay(110); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); } spin_unlock(&rt9536_spin); udelay(1520); // delay over 1.5ms spin_lock(&rt9536_spin); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); udelay(770); mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ZERO); spin_unlock(&rt9536_spin); } else { mt_set_gpio_out(CHG_EN_SET_N, GPIO_OUT_ONE); udelay(2000); } }
int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) { u32 pinSetIdx = 0;//default main sensor #define IDX_PS_CMRST 0 #define IDX_PS_CMPDN 4 #define IDX_PS_MODE 1 #define IDX_PS_ON 2 #define IDX_PS_OFF 3 u32 pinSet[3][8] = { //for main sensor {GPIO_CAMERA_CMRST_PIN, GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */ GPIO_OUT_ONE, /* ON state */ GPIO_OUT_ZERO, /* OFF state */ GPIO_CAMERA_CMPDN_PIN, GPIO_CAMERA_CMPDN_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, }, //for sub sensor {GPIO_CAMERA_CMRST1_PIN, GPIO_CAMERA_CMRST1_PIN_M_GPIO, GPIO_OUT_ONE, GPIO_OUT_ZERO, GPIO_CAMERA_CMPDN1_PIN, GPIO_CAMERA_CMPDN1_PIN_M_GPIO, GPIO_OUT_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_2_SENSOR == SensorIdx) { //pinSetIdx = 2; } //power ON if (On) { #if 0 //TODO: depends on HW layout. Should be notified by SA. PK_DBG("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 //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); //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");} } //DOVDD if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV3640_YUV,currSensorName))) { PK_DBG("[ON_OV3640YUV case 1.5V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } } else //general case on { PK_DBG("[ON_general 1.8V]sensorIdx:%d \n",SensorIdx); if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } } mdelay(10); //AVDD if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(10); //DVDD if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); //return -EIO; //goto _kdCISModulePowerOn_exit_; } mdelay(10); //AF_VCC if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } #if 1 //enable active sensor if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \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); //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");} } #endif //disable inactive sensor if(pinSetIdx == 0 || pinSetIdx == 2) {//disable sub if (GPIO_CAMERA_INVALID != pinSet[1][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } } else { if (GPIO_CAMERA_INVALID != pinSet[0][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } /*if (GPIO_CAMERA_INVALID != pinSet[2][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[2][IDX_PS_CMRST],pinSet[2][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[2][IDX_PS_CMPDN],pinSet[2][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[2][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[2][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[2][IDX_PS_CMRST],pinSet[2][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[2][IDX_PS_CMPDN],pinSet[2][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module }*/ } } else {//power OFF #if 0 //TODO: depends on HW layout. Should be notified by SA. PK_DBG("Set GPIO 94 for power OFF\n"); if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG("[CAMERA SENSOR] Set GPIO94 PULL DISABLE ! \n"); } if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} #endif //PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); //return -EIO; goto _kdCISModulePowerOn_exit_; } if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) { PK_DBG("[CAMERA SENSOR] Fail to 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_; } }// return 0; _kdCISModulePowerOn_exit_: return -EIO; }