126 lines
3.1 KiB
C
126 lines
3.1 KiB
C
#include <stdio.h>
|
|
#include "cola_init.h"
|
|
#include "cola_device.h"
|
|
#include "cola_os.h"
|
|
#include "fml_gpio.h"
|
|
#include "fml_pwm.h"
|
|
#include "fml_PMIC.h"
|
|
#include "bsp_register_map.h"
|
|
|
|
static task_t gpioTask1;
|
|
static task_t gpioTask2;
|
|
static task_t gpioTask3;
|
|
|
|
bool wakeup = false;
|
|
bool lock = false;
|
|
extern ST_DIAGNOSE1_DATA Err_status1;
|
|
extern bool bist_mode;
|
|
|
|
void lock_detect(void *arg, uint32_t event)
|
|
{
|
|
lock = fml_gpio_read(IN_LVDS_UNLOCK);
|
|
|
|
if((lock == true)||(bist_mode == true))
|
|
{
|
|
cola_delay_ms(200);
|
|
lock = fml_gpio_read(IN_LVDS_UNLOCK);
|
|
if((lock == true)||(bist_mode == true))
|
|
{
|
|
cola_task_delete(&gpioTask2);
|
|
fml_gpio_write(OUT_TFT_SHLR,true);
|
|
fml_gpio_write(OUT_TFT_RST,false);
|
|
cola_delay_ms(100);
|
|
fml_gpio_write(OUT_TFT_RST,true);
|
|
fml_gpio_write(OUT_TFT_SYBYB,true);
|
|
fml_gpio_write(OUT_TFT_DISP,true);
|
|
//fml_gpio_write(OUT_TFT_BIST,true);
|
|
fml_gpio_write(OUT_BL_EN,true);
|
|
fml_gpio_write(OUT_PMIC_EN,true);
|
|
fml_pwm_init();
|
|
cola_delay_ms(10);
|
|
fml_tft_init();
|
|
cola_delay_ms(10);
|
|
fml_pmic_init();
|
|
fml_max25512_init();
|
|
power_up_manage();
|
|
}
|
|
}
|
|
}
|
|
|
|
void power_on_detect(void *arg, uint32_t event)
|
|
{
|
|
|
|
wakeup = fml_gpio_read(IN_WAKEUP);
|
|
if((wakeup == true)&&(Err_status1.HIGH_VOL_FAIL == 0)&&(Err_status1.LOW_VOL_FAIL==0))
|
|
{
|
|
cola_task_delete(&gpioTask1);
|
|
fml_gpio_write(OUT_TP_RST,true);
|
|
fml_gpio_write(OUT_PON_HOLD,true);
|
|
fml_gpio_write(OUT_LDO_1V2_EN,true);
|
|
fml_gpio_write(OUT_3V3_TFT_EN,true);
|
|
fml_gpio_write(OUT_LVDS_PDB,true);
|
|
cola_task_create(&gpioTask2, lock_detect, NULL);
|
|
}
|
|
}
|
|
//start
|
|
void power_on_manage(void)
|
|
{
|
|
// fml_gpio_write(OUT_TP_RST,true);
|
|
// fml_gpio_write(OUT_PON_HOLD,true);
|
|
// fml_gpio_write(OUT_LDO_1V2_EN,true);
|
|
//
|
|
// fml_gpio_write(OUT_3V3_TFT_EN,true);
|
|
// cola_delay_ms(200);
|
|
// fml_gpio_write(OUT_LVDS_PDB,true);
|
|
//
|
|
//
|
|
// fml_gpio_write(OUT_TFT_SHLR,true);
|
|
// fml_gpio_write(OUT_TFT_RST,false);
|
|
// cola_delay_ms(200);
|
|
// fml_gpio_write(OUT_TFT_RST,true);
|
|
//
|
|
// fml_gpio_write(OUT_TFT_SYBYB,true);
|
|
// fml_gpio_write(OUT_TFT_DISP,true);
|
|
// fml_gpio_write(OUT_BL_EN,true);
|
|
// fml_pwm_init();
|
|
// //fml_gpio_write(OUT_TFT_BIST,true);
|
|
// fml_gpio_write(OUT_PMIC_EN,true);
|
|
// cola_delay_ms(10);
|
|
// fml_tft_init();
|
|
// cola_delay_ms(10);
|
|
// fml_pmic_init();
|
|
// fml_max25512_init();
|
|
//fml_tft_write_BIST_mode(0);
|
|
cola_task_create(&gpioTask1, power_on_detect, NULL);
|
|
}
|
|
|
|
void power_up_detect(void)
|
|
{
|
|
wakeup = fml_gpio_read(IN_WAKEUP);
|
|
|
|
if((wakeup == false)||(Err_status1.HIGH_VOL_FAIL == 1)||(Err_status1.LOW_VOL_FAIL==1))
|
|
{
|
|
|
|
cola_delay_ms(200);
|
|
wakeup = fml_gpio_read(IN_WAKEUP);
|
|
if((wakeup == false)||(Err_status1.HIGH_VOL_FAIL == 1)||(Err_status1.LOW_VOL_FAIL==1))
|
|
{
|
|
cola_task_delete(&gpioTask3);
|
|
fml_gpio_write(OUT_BL_EN,false);
|
|
fml_gpio_write(OUT_PMIC_EN,false);
|
|
fml_gpio_write(OUT_TFT_SYBYB,false);
|
|
fml_gpio_write(OUT_TFT_DISP,false);
|
|
fml_gpio_write(OUT_LVDS_PDB,false);
|
|
fml_gpio_write(OUT_3V3_TFT_EN,false);
|
|
fml_gpio_write(OUT_LDO_1V2_EN,false);
|
|
fml_gpio_write(OUT_PON_HOLD,false);
|
|
power_on_manage();
|
|
|
|
}
|
|
}
|
|
}
|
|
void power_up_manage(void)
|
|
{
|
|
cola_task_create(&gpioTask3, power_up_detect, NULL);
|
|
}
|