1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __IXP4XX_NPE_H |
3 | #define __IXP4XX_NPE_H |
4 | |
5 | #include <linux/kernel.h> |
6 | #include <linux/regmap.h> |
7 | |
8 | extern const char *npe_names[]; |
9 | |
10 | struct npe_regs { |
11 | u32 exec_addr, exec_data, exec_status_cmd, exec_count; |
12 | u32 action_points[4]; |
13 | u32 watchpoint_fifo, watch_count; |
14 | u32 profile_count; |
15 | u32 messaging_status, messaging_control; |
16 | u32 mailbox_status, /*messaging_*/ in_out_fifo; |
17 | }; |
18 | |
19 | struct npe { |
20 | struct npe_regs __iomem *regs; |
21 | struct regmap *rmap; |
22 | int id; |
23 | int valid; |
24 | }; |
25 | |
26 | |
27 | static inline const char *npe_name(struct npe *npe) |
28 | { |
29 | return npe_names[npe->id]; |
30 | } |
31 | |
32 | int npe_running(struct npe *npe); |
33 | int npe_send_message(struct npe *npe, const void *msg, const char *what); |
34 | int npe_recv_message(struct npe *npe, void *msg, const char *what); |
35 | int npe_send_recv_message(struct npe *npe, void *msg, const char *what); |
36 | int npe_load_firmware(struct npe *npe, const char *name, struct device *dev); |
37 | struct npe *npe_request(unsigned id); |
38 | void npe_release(struct npe *npe); |
39 | |
40 | #endif /* __IXP4XX_NPE_H */ |
41 | |