aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/conn_md/include/conn_md.h
blob: c025c49d0168e911fa82c4f456d13704c1756c58 (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
#ifndef __CONN_MD_H_
#define __CONN_MD_H_

#include "conn_md_exp.h"
#include "conn_md_dump.h"

/*-----------------------Data Structure Definition-----------------------*/

typedef enum {
	USER_MIN,
	USER_REGED,
	USER_ENABLED,
	USER_DISABLED,
	USER_UNREGED,
	USER_MAX,
} USER_STATE;

typedef struct _CONN_MD_USER_ {
	uint32 u_id;
	USER_STATE state;
	CONN_MD_BRIDGE_OPS ops;
	struct list_head entry;
} CONN_MD_USER, *P_CONN_MD_USER;

typedef struct _CONN_MD_MSG_ {
	ipc_ilm_t ilm;
	struct list_head entry;
	local_para_struct local_para;
} CONN_MD_MSG, *P_CONN_MD_MSG;

typedef struct _CONN_MD_QUEUE_ {
	struct list_head list;
	struct mutex lock;
	uint32 counter;
} CONN_MD_QUEUE, *P_CONN_MD_QUEUE;

typedef struct _CONN_MD_USER_LIST_ {
	uint32 counter;
	struct list_head list;
	struct mutex lock;	/*lock for user add/delete/check */
} CONN_MD_USER_LIST, *P_CONN_MD_USER_LIST;

typedef struct _CONN_MD_STRUCT_ {
	/*con-md-thread used for tx queue handle */
	struct task_struct *p_task;
	struct completion tx_comp;

	CONN_MD_USER_LIST user_list;
	CONN_MD_QUEUE act_queue;
	CONN_MD_QUEUE msg_queue;
	P_CONN_MD_DMP_MSG_LOG p_msg_dmp_sys;

} CONN_MD_STRUCT, *P_CONN_MD_STRUCT;

extern int conn_md_send_msg(ipc_ilm_t *ilm);
extern int conn_md_del_user(uint32 u_id);
extern int conn_md_add_user(uint32 u_id, CONN_MD_BRIDGE_OPS *p_ops);
extern int conn_md_dmp_msg_logged(uint32 src_id, uint32 dst_id);
extern int conn_md_dmp_msg_active(uint32 src_id, uint32 dst_id);
extern int conn_md_dmp_msg_queued(uint32 src_id, uint32 dst_id);

#endif