summaryrefslogtreecommitdiff
path: root/bsp/allwinner/libraries/sunxi-hal/include/hal/hal_msgbox.h
blob: 8de95488c344e1f402861a06de819e05374f4609 (plain)
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
#ifndef __MESSAGEBOX__H__
#define __MESSAGEBOX__H__

#include <stdint.h>

enum cpu_type {
    ARM_MSG_CORE,
    RISC_V_MSG_CORE,
    MIPS_MSG_CORE,
    OPENRISC_MSG_CORE,
    DSP0_MSG_CORE,
    DSP1_MSG_CORE,
};

struct msg_endpoint {
    uint32_t local_amp;
    uint32_t remote_amp;
    uint32_t write_ch;
    uint32_t read_ch;
    struct msg_endpoint *next;
    void *data;
    void (*rec)(uint32_t l, void *d);
    void (*tx_done)(void *d);
    /* use in driver */
    void *private;
};

uint32_t hal_msgbox_init(void);

uint32_t hal_msgbox_alloc_channel(struct msg_endpoint *edp, uint32_t remote,
                  uint32_t read, uint32_t write);

uint32_t hal_msgbox_channel_send(struct msg_endpoint *edp, uint8_t *bf,
                 uint32_t len);

void hal_msgbox_free_channel(struct msg_endpoint *edp);

#endif /* __MESSAGEBOX__H__ */