aboutsummaryrefslogtreecommitdiff
path: root/include/trustzone/tz_cross/ree_service.h
blob: 2f02134155050803630d43de21d13b234a08f510 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

/** Commands and value for REE service call */
/* This is used by TEE internal. Other TA please don't include this */

#ifndef __REE_SERVICE__
#define __REE_SERVICE__

#define REE_SERVICE_BUFFER_SIZE    128

enum ReeServiceCommand {
    REE_SERV_NONE = 0,
    REE_SERV_PUTS,                      // Print buffer.
    REE_SERV_USLEEP,                    // Sleep us
    REE_SERV_MUTEX_CREATE, 
    REE_SERV_MUTEX_DESTROY, 
    REE_SERV_MUTEX_LOCK, 
    REE_SERV_MUTEX_UNLOCK,
    REE_SERV_MUTEX_TRYLOCK,
    REE_SERV_MUTEX_ISLOCK,
    REE_SERV_SEMAPHORE_CREATE, 
    REE_SERV_SEMAPHORE_DESTROY, 
    REE_SERV_SEMAPHORE_DOWN,
    REE_SERV_SEMAPHORE_DWNTO,           // down with time-out
    REE_SERV_SEMAPHORE_TRYDWN,
    REE_SERV_SEMAPHORE_UP,
#if 0    
    REE_SERV_WAITQ_CREATE,
    REE_SERV_WAITQ_DESTROY,
    REE_SERV_WAITQ_WAIT,
    REE_SERV_WAITQ_WAITTO,    // wait with time-out
    REE_SERV_WAITQ_WAKEUP,
#endif    
    REE_SERV_REQUEST_IRQ,
    REE_SERV_ENABLE_IRQ,
    REE_SERV_ENABLE_CLOCK,
    REE_SERV_DISABLE_CLOCK,
    REE_SERV_THREAD_CREATE,
};

////////// Param structure for commands 
struct ree_service_usleep
{
    unsigned int ustime;
};




#define MTEE_THREAD_NAME_NUM 32

struct REE_THREAD_INFO {
    uint32_t handle; // trhread handle
    char name[MTEE_THREAD_NAME_NUM]; // kree side, trhread name
};


#ifndef MTIRQF_NORMAL
/// Must match the one in tz_private/system.h
#define MTIRQF_SHARED          (1<<0)   /// Share with other handlers
#define MTIRQF_TRIGGER_LOW     (1<<1)   /// IRQ is triggered by low signal
#define MTIRQF_TRIGGER_HIGH    (1<<2)   /// IRQ is triggered by high signal
#define MTIRQF_TRIGGER_RISING  (1<<3)   /// IRQ is triggered by rising edge
#define MTIRQF_TRIGGER_FALLING (1<<4)   /// IRQ is triggered by falling edge
#endif

struct ree_service_irq
{
    void *token;
    unsigned int irq;
    int enable;
    unsigned int flags;
};

struct ree_service_clock
{
    unsigned int clk_id;
    char clk_name[112];
};

#endif /* __REE_SERVICE__ */