
/**@file  		power_reset.h
* @brief        复位模块接口
* @details		HW API
* @author
* @date     	2021-8-26
* @version  	V1.0
* @copyright    Copyright:(c)JIELI  2011-2020  @ , All Rights Reserved.
 */

#ifndef __POWER_RESET_H__
#define __POWER_RESET_H__

/*
 *复位原因包括两种
 1.系统复位源: p33 p11 主系统
 2.自定义复位源：唤醒、断言、异常等
 */
enum RST_REASON {
    /*主系统*/
    MSYS_P11_RST,						//P11复位
    MSYS_DVDD_POR_RST,					//DVDD上电
    MSYS_SOFT_RST,						//主系统软件复位
    MSYS_P2M_RST,						//低功耗唤醒复位(softoff advance && deepsleep)
    MSYS_POWER_RETURN,					//主系统未被复位

    /*P11*/
    P11_PVDD_POR_RST,					//pvdd上电
    P11_IVS_RST,						//低功耗唤醒复位(softoff legacy)
    P11_P33_RST,						//p33复位
    P11_WDT_RST,						//看门狗复位
    P11_SOFT_RST,						//软件复位
    P11_MSYS_RST = 10,					//主系统复位P11
    P11_POWER_RETURN,					//P11系统未被复位

    /*P33*/
    P33_VDDIO_POR_RST,					//vddio上电复位(电池/vpwr供电)
    P33_VDDIO_LVD_RST,					//vddio低压复位、上电复位(电池/vpwr供电)
    P33_VCM_RST,						//vcm高电平短接复位
    P33_PPINR_RST,						//数字io输入长按复位
    P33_P11_RST,						//p11系统复位p33，rset_mask=0
    P33_SOFT_RST,						//p33软件复位，一般软件复位指此系统复位源，所有系统会直接复位。
    P33_PPINR1_RST,						//模拟io输入长按复位，包括charge_full、vatch、ldoint、vabt_det
    P33_POWER_RETURN,					//p33系统未被复位。


    /*SUB*/
    P33_EXCEPTION_SOFT_RST = 20,	    //异常软件复位
    P33_ASSERT_SOFT_RST,				//断言软件复位
    //P33 WAKEUP
    PWR_WK_REASON_PLUSE_CNT_OVERFLOW,   //pcnt唤醒复位
    PWR_WK_REASON_PORT_EDGE,			//数字io输入边沿唤醒复位
    PWR_WK_REASON_ANA_EDGE,				//模拟io输入边沿唤醒复位
    PWR_WK_REASON_VDDIO_LVD,			//vddio lvd唤醒复位
    PWR_WK_REASON_EDGE_INDEX0,			//p33 index0  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX1,			//p33 index1  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX2,			//p33 index2  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX3,			//p33 index3  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX4 = 30,     //p33 index4  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX5,          //p33 index5  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX6,          //p33 index6  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX7,          //p33 index7  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX8,          //p33 index8  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX9,          //p33 index9  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX10,         //p33 index10 io唤醒复位
    PWR_WK_REASON_EDGE_INDEX11,         //p33 index11 io唤醒复位
};

void power_reset_close();

u64 reset_source_dump(void);

void p33_soft_reset(void);

void set_reset_source_value(enum RST_REASON index);

u32 get_reset_source_value(void);

u8 is_reset_source(enum RST_REASON index);

int cpu_reset_by_soft();

void lp_touch_key_disable(void);
#endif


