aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/eemcs/eemcs_state.h
blob: d75aa883acb876cc8fccd481bb69264b45f78b51 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef __EEMCS_STATE_H__
#define __EEMCS_STATE_H__

#include "eemcs_kal.h"

/*
 *  For user program to query the EEMCS detail state by
 *  CCCI_IOC_CHECK_STATE  _IOR(CCCI_IOC_MAGIC, 12, unsigned int)
 */
typedef enum EEMCS_STATE_E {
    EEMCS_INVALID =0,
    EEMCS_GATE,
    EEMCS_INIT,
    EEMCS_XBOOT,
    EEMCS_MOLY_HS_P1,
    EEMCS_MOLY_HS_P2,
    EEMCS_BOOTING_DONE,
    EEMCS_EXCEPTION,
    EEMCS_STATE_MAX,
}EEMCS_STATE;

/* 
 * For user program to query the MD state by
 * CCCI_IOC_GET_MD_STATE  _IOR(CCCI_IOC_MAGIC, 1, unsigned int)
 */
typedef enum MD_STATE_E{
	MD_STATE_INVALID = 0,  /* MD_BOOT_STAGE_0 */
	MD_STATE_INIT    = 1,  /* MD_BOOT_STAGE_1 */
	MD_STATE_READY   = 2,  /* MD_BOOT_STAGE_2 */
	MD_STATE_EXPT    = 3   /* MD_BOOT_STAGE_EXCEPTION */
}MD_STATE;

typedef struct{
    struct list_head list;
    void (*callback)(EEMCS_STATE data);
} EEMCS_STATE_CALLBACK_T;

void eemcs_state_callback_init(void);
kal_bool eemcs_state_callback(EEMCS_STATE state);
kal_bool eemcs_state_callback_register(EEMCS_STATE_CALLBACK_T *node);
kal_bool eemcs_state_callback_unregister(EEMCS_STATE_CALLBACK_T *node);

KAL_UINT32 check_device_state(void);
kal_bool eemcs_device_ready(void);
kal_bool change_device_state(KAL_UINT32 state);
bool eemcs_on_reset(void);
#endif // __EEMCS_STATE_H__