#ifndef _CRASH_ANALYZER_DEFS_H_
#define _CRASH_ANALYZER_DEFS_H_

#include <limits.h>
#define HMD_DMXEXCEPTIONCAUSELIST_SIZE 41
#define CM4EXCEPTIONCAUSELIST_SIZE 26
#define ASSERTDEBUGMODLIST_SIZE 104

const char* Hmd_DmxExceptionCauseList[HMD_DMXEXCEPTIONCAUSELIST_SIZE] = {
                                        "IllegalInstructionCause",
                                        "SyscallCause",
                                        "InstructionFetchErrorCause",
                                        "LoadStoreErrorCause",
                                        "Level1InterruptCause",
                                        "AllocaCause",
                                        "IntegerDivideByZeroCause",
                                        "PCValueErrorCause",
                                        "PrivilegedCause",
                                        "LoadStoreAlignmentCause",
                                        "Reserved",
                                        "Reserved",
                                        "InstrPIFDataErrorCause",
                                        "LoadStorePIFDataErrorCause",
                                        "InstrPIFAddrErrorCause",
                                        "LoadStorePIFAddrErrorCause",
                                        "InstTLBMissCause",
                                        "InstTLBMultiHitCause",
                                        "InstFetchPrivilegeCause",
                                        "Reserved",
                                        "InstFetchProhibitedCause",
                                        "Reserved",
                                        "Reserved",
                                        "Reserved",
                                        "LoadStoreTLBMissCause",
                                        "LoadStoreTLBMultiHitCause",
                                        "LoadStorePrivilegeCause",
                                        "Reserved",
                                        "LoadProhibitedCause",
                                        "StoreProhibitedCause",
                                        "Reserved",
                                        "Reserved",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "CoprocessornDisabled",
                                        "Reserved"};

const char* Cm4ExceptionCauseList[CM4EXCEPTIONCAUSELIST_SIZE] = {
                                        "IACCVIOL",
                                        "DACCVIOL",
                                        "Reserved",
                                        "MUNSTKERR",
                                        "MSTKERR",
                                        "MLSPERR",
                                        "Reserved",
                                        "MMARVALID",
                                        "IBUSERR",
                                        "PRECISERR",
                                        "IMPRECISERR",
                                        "UNSTKERR",
                                        "STKERR",
                                        "LSPERR",
                                        "Reserved",
                                        "BFARVALID",
                                        "UNDEFINSTR",
                                        "INVSTATE",
                                        "INVPC",
                                        "NOCP",
                                        "Reserved",
                                        "Reserved",
                                        "Reserved",
                                        "Reserved",
                                        "UNALIGNED",
                                        "DIVBYZERO"};

const char* AssertDebugModList[ASSERTDEBUGMODLIST_SIZE] = {
                                        "Invalid",
                                        "DBG_MODULE_ID_ACCDETMGR_LOG = 1",
                                        "DBG_MODULE_ID_BATTERYMGR_LOG",
                                        "DBG_MODULE_ID_BLUETOOTHMGR_LOG",
                                        "DBG_MODULE_ID_BUTTONMGR_LOG",
                                        "DBG_MODULE_ID_CODECMGR_LOG",
                                        "DBG_MODULE_ID_CTRLMGR_LOG",
                                        "DBG_MODULE_ID_DMAMGR_LOG",
                                        "DBG_MODULE_ID_EVTMGR_LOG",
                                        "DBG_MODULE_ID_FLASHMGR_LOG",
                                        "DBG_MODULE_ID_LEDMGR_LOG",
                                        "DBG_MODULE_ID_POWERMGR_LOG",
                                        "DBG_MODULE_ID_STREAMMGR_LOG",
                                        "DBG_MODULE_ID_SENSORMGR_LOG",
                                        "DBG_MODULE_ID_TUNNELMGR_LOG",
                                        "DBG_MODULE_ID_USBMGR_LOG",
                                        "DBG_MODULE_ID_PLUGINMGR_LOG",
                                        "DBG_MODULE_ID_PLUGINVM_LOG",
                                        "DBG_MODULE_ID_PACKAGEUTILS_LOG",
                                        "DBG_MODULE_ID_ENDPOINT_LOG",
                                        "DBG_MODULE_ID_PUTMSG_LOG",
                                        "DBG_MODULE_ID_CONTROLLER_LOG",
                                        "DBG_MODULE_ID_MIPSPROFILER_LOG",
                                        "DBG_MODULE_ID_DEBUGMONITOR_LOG",
                                        "DBG_MODULE_ID_SSPDRV_LOG",
                                        "DBG_MODULE_ID_AFDRV_LOG",
                                        "DBG_MODULE_ID_SPIDRV_LOG",
                                        "DBG_MODULE_ID_I2CDRV_LOG",
                                        "DBG_MODULE_ID_A400DRV_LOG",
                                        "DBG_MODULE_ID_ADAU1361DRV_LOG",
                                        "DBG_MODULE_ID_MAX98090DRV_LOG",
                                        "DBG_MODULE_ID_BQ27425DRV_LOG",
                                        "DBG_MODULE_ID_USBDRV_LOG",
                                        "DBG_MODULE_ID_CSR8811_LOG",
                                        "DBG_MODULE_ID_CYW20707DRV_LOG",
                                        "DBG_MODULE_ID_BUTTONDRV_LOG",
                                        "DBG_MODULE_ID_LEDDRV_LOG",
                                        "DBG_MODULE_ID_TIMERDRV_LOG",
                                        "DBG_MODULE_ID_UARTDRV_LOG",
                                        "DBG_MODULE_ID_FLASHDRV_LOG",
                                        "DBG_MODULE_ID_DMADRV_LOG",
                                        "DBG_MODULE_ID_GPIODRV_LOG",
                                        "DBG_MODULE_ID_MACDRV_LOG",
                                        "DBG_MODULE_ID_STMRDRV_LOG",
                                        "DBG_MODULE_ID_STMRPTDRV_LOG",
                                        "DBG_MODULE_ID_SLIMBUSDRV_LOG",
                                        "DBG_MODULE_ID_SSENSORDRV_LOG",
                                        "DBG_MODULE_ID_STRMDRV_LOG",
                                        "DBG_MODULE_ID_CPUSTRMDRV_LOG",
                                        "DBG_MODULE_ID_CLKTREEUTILS_LOG",
                                        "DBG_MODULE_ID_SCRIPTMGR_LOG",
                                        "DBG_MODULE_ID_MODULES_LOG",
                                        "DBG_MODULE_ID_ROUTESMGR_LOG",
                                        "DBG_MODULE_ID_RTELEMCYPRESSAUDIO_LOG",
                                        "DBG_MODULE_ID_RTELEMDAURAHEADSET_LOG",
                                        "DBG_MODULE_ID_RTELEMESTRELLABTAUDIO_LOG",
                                        "DBG_MODULE_ID_RTELEMESTRELLACODEC_LOG",
                                        "DBG_MODULE_ID_RTELEMESTRELLAUSB_LOG",
                                        "DBG_MODULE_ID_RTELEMPDM_LOG",
                                        "DBG_MODULE_ID_RTELEMPLUGIN_LOG",
                                        "DBG_MODULE_ID_RTELEMFILE_LOG",
                                        "DBG_MODULE_ID_TASK_LOG",
                                        "DBG_MODULE_ID_BTCORE_LOG",
                                        "DBG_MODULE_ID_BTA2DP_LOG",
                                        "DBG_MODULE_ID_PERFMON_LOG",
                                        "DBG_MODULE_ID_TRACELOG_LOG",
                                        "DBG_MODULE_ID_HEAPCOMPACTOR_LOG",
                                        "DBG_MODULE_ID_RESOURCEHANDLER_LOG",
                                        "DBG_MODULE_ID_LOWPOWERSTREAMMGR_LOG",
                                        "DBG_MODULE_ID_SSPSTREAMMGR_LOG",
                                        "DBG_MODULE_ID_TUNNELSTREAMMGR_LOG",
                                        "DBG_MODULE_ID_TEMPLATE_LOG",
                                        "DBG_MODULE_ID_TEMPLATEMODULE_LOG",
                                        "DBG_MODULE_ID_FILTER_LOG",
                                        "DBG_MODULE_ID_I2SDRV_LOG",
                                        "DBG_MODULE_ID_PCMDRV_LOG",
                                        "DBG_MODULE_ID_PDMDRV_LOG",
                                        "DBG_MODULE_ID_REGMAPDRV_LOG",
                                        "DBG_MODULE_ID_SPIREGMAP_LOG",
                                        "DBG_MODULE_ID_STMRTIMER_LOG",
                                        "DBG_MODULE_ID_RTOSOPS_LOG",
                                        "DBG_MODULE_ID_MEMORYMGR_LOG",
                                        "DBG_MODULE_ID_ICPUDRV_LOG",
                                        "DBG_MODULE_ID_FRAMEMGR_LOG",
                                        "DBG_MODULE_ID_DEBUGPRINT_LOG",
                                        "DBG_MODULE_ID_DATABASE_LOG",
                                        "DBG_MODULE_ID_BULKTRANSFER_LOG",
                                        "DBG_MODULE_ID_ROMECONTROLPORT_LOG",
                                        "DBG_MODULE_ID_NOTIFYSERVICE_LOG",
                                        "DBG_MODULE_ID_SYSTEMSERVICE_LOG",
                                        "DBG_MODULE_ID_UISERVICE_LOG",
                                        "DBG_MODULE_ID_USBSERVICE_LOG",
                                        "DBG_MODULE_ID_USBCONTROLLER_LOG",
                                        "DBG_MODULE_ID_BTCONTROLLER_LOG",
                                        "DBG_MODULE_ID_LIGHTHOUSEAPP_LOG",
                                        "DBG_MODULE_ID_I2CMASTER_LOG",
                                        "DBG_MODULE_ID_I2CSLAVE_LOG",
                                        "DBG_MODULE_ID_PLATFORM_LOG",
                                        "DBG_MODULE_ID_TRCKERNELPORT_LOG",
                                        "DBG_MODULE_ID_HWINTERFACE_LOG",
                                        "DBG_MODULE_ID_FLICKERSENSORDRV_LOG",
                                        "DBG_MODULE_ID_TIEQ_SSAMPLE_STRM_DRV_LOG",
                                        "DBG_MODULE_ID_SBL",
                                        "DBG_MODULE_ID_FORCE_SIZE" };

enum debug_level_e
{
    DBG_LOG_LVL_OFF = 0,
    DBG_LOG_LVL_CUSTOM,
    DBG_LOG_LVL_FATAL,
    DBG_LOG_LVL_ERROR,
    DBG_LOG_LVL_WARN,
    DBG_LOG_LVL_INFO,
    DBG_LOG_LVL_DEBUG,
    DBG_LOG_LVL_TRACE,

    DBG_LOG_LVL_NUM,
    /* Force enums to be of size int */
    DBG_LOG_LVL_FORCE_SIZE = INT_MAX
};

/* See ${KERNEL}/include/linux/mfd/adnc/iaxxx-core.h */
enum file_name
{
    CM4_DUMP_DEBUG = 0,
    HMD_DUMP_DEBUG = 1,
    DMX_DUMP_DEBUG = 2,
    CM4_DUMP_CRASH = 3,
    HMD_DUMP_CRASH = 4,
    DMX_DUMP_CRASH = 5,
    FILE_MAX = 6
};

enum hmd_dmx_index
{
    START_HMD_DMX_INDEX = 0,
    EXCEPTION_INDEX = 1,
    EPC1_INDEX = 2,
    HMD_DMX_INDEX_MAX = 3,
};

enum cm4_index
{
    START_CM4_INDEX = 0,
    FAULT_STATUS_INDEX = 6,
    CM4_INDEX_MAX = 7,
};
#endif
