xref: /openbmc/hiomapd/transport_mbox.h (revision 26558dbb00e439fb6ea18566361c0671ea6133f5)
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /* Copyright (C) 2018 IBM Corp. */
3 
4 #ifndef MBOXD_MSG_H
5 #define MBOXD_MSG_H
6 
7 #include <stdint.h>
8 
9 struct mbox_context;
10 
11 /* Command Values */
12 #define MBOX_C_RESET_STATE		0x01
13 #define MBOX_C_GET_MBOX_INFO		0x02
14 #define MBOX_C_GET_FLASH_INFO		0x03
15 #define MBOX_C_READ_WINDOW		0x04
16 #define MBOX_C_CLOSE_WINDOW		0x05
17 #define MBOX_C_WRITE_WINDOW		0x06
18 #define MBOX_C_WRITE_DIRTY		0x07
19 #define MBOX_C_WRITE_FLUSH		0x08
20 #define MBOX_C_ACK			0x09
21 #define MBOX_C_WRITE_ERASE		0x0a
22 #define NUM_MBOX_CMDS			MBOX_C_WRITE_ERASE
23 
24 /* Response Values */
25 #define MBOX_R_SUCCESS			0x01
26 #define MBOX_R_PARAM_ERROR		0x02
27 #define MBOX_R_WRITE_ERROR		0x03
28 #define MBOX_R_SYSTEM_ERROR		0x04
29 #define MBOX_R_TIMEOUT			0x05
30 #define MBOX_R_BUSY			0x06
31 #define MBOX_R_WINDOW_ERROR		0x07
32 #define MBOX_R_SEQ_ERROR		0x08
33 
34 /* MBOX Registers */
35 #define MBOX_HOST_PATH			"/dev/aspeed-mbox"
36 #define MBOX_HOST_TIMEOUT_SEC		1
37 #define MBOX_ARGS_BYTES			11
38 #define MBOX_REG_BYTES			16
39 #define MBOX_HOST_EVENT			14
40 #define MBOX_BMC_EVENT			15
41 
42 struct mbox_msg {
43 	uint8_t command;
44 	uint8_t seq;
45 	uint8_t args[MBOX_ARGS_BYTES];
46 	uint8_t response;
47 };
48 
49 union mbox_regs {
50 	uint8_t raw[MBOX_REG_BYTES];
51 	struct mbox_msg msg;
52 };
53 
54 int transport_mbox_dispatch(struct mbox_context *context);
55 int transport_mbox_init(struct mbox_context *context);
56 void transport_mbox_free(struct mbox_context *context);
57 
58 #endif /* MBOXD_MSG_H */
59