1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 #ifndef __HAL_INTERSYS_H__
5 #define __HAL_INTERSYS_H__
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #include "stdbool.h"
12 
13 enum HAL_INTERSYS_ID_T {
14     HAL_INTERSYS_ID_0,
15     HAL_INTERSYS_ID_1,
16 
17     HAL_INTERSYS_ID_QTY
18 };
19 
20 enum HAL_INTERSYS_MSG_TYPE_T {
21     HAL_INTERSYS_MSG_HCI,
22     HAL_INTERSYS_MSG_SYS,
23 
24     HAL_INTERSYS_MSG_TYPE_QTY
25 };
26 
27 typedef struct debug_intersys
28 {
29     unsigned short irq_happen;
30     unsigned short cmd_opcode;
31 }debug_intersys_type;
32 
33 typedef unsigned int (*HAL_INTERSYS_RX_IRQ_HANDLER)(const unsigned char *data, unsigned int len);
34 typedef void (*HAL_INTERSYS_TX_IRQ_HANDLER)(const unsigned char *data, unsigned int len);
35 
36 int hal_intersys_open(enum HAL_INTERSYS_ID_T id, enum HAL_INTERSYS_MSG_TYPE_T type,
37                       HAL_INTERSYS_RX_IRQ_HANDLER rxhandler, HAL_INTERSYS_TX_IRQ_HANDLER txhandler, bool rx_flowctrl);
38 
39 int hal_intersys_close(enum HAL_INTERSYS_ID_T id,enum HAL_INTERSYS_MSG_TYPE_T type);
40 
41 int hal_intersys_start_recv(enum HAL_INTERSYS_ID_T id);
42 
43 int hal_intersys_stop_recv(enum HAL_INTERSYS_ID_T id);
44 
45 int hal_intersys_send(enum HAL_INTERSYS_ID_T id, enum HAL_INTERSYS_MSG_TYPE_T type,
46                       const unsigned char *data, unsigned int len);
47 
48 void hal_intersys_rx_done(enum HAL_INTERSYS_ID_T id);
49 
50 void hal_intersys_peer_irq_auto_clear(bool enable);
51 
52 #ifdef TX_RX_PCM_MASK
53 typedef void (*FRAME2BUFF_HANDLER)();
54 
55 int hal_intersys_mic_open(enum HAL_INTERSYS_ID_T id, FRAME2BUFF_HANDLER dch);
56 
57 void hal_intersys_mic_rx_irq();
58 #endif
59 
60 #ifdef __cplusplus
61 }
62 #endif
63 
64 #endif
65 
66