xref: /openbmc/phosphor-mboxd/mboxd_msg.h (revision acdbdd14)
14fe996c2SAndrew Jeffery /* SPDX-License-Identifier: Apache-2.0 */
24fe996c2SAndrew Jeffery /* Copyright (C) 2018 IBM Corp. */
3e39c9163SSuraj Jitindar Singh 
4e39c9163SSuraj Jitindar Singh #ifndef MBOXD_MSG_H
5e39c9163SSuraj Jitindar Singh #define MBOXD_MSG_H
6e39c9163SSuraj Jitindar Singh 
75a3a0664SSuraj Jitindar Singh #include "common.h"
8cc0bd3c4SAndrew Jeffery #include "mbox.h"
95a3a0664SSuraj Jitindar Singh 
105a3a0664SSuraj Jitindar Singh /* Estimate as to how long (milliseconds) it takes to access a MB from flash */
115a3a0664SSuraj Jitindar Singh #define FLASH_ACCESS_MS_PER_MB		8000
125a3a0664SSuraj Jitindar Singh 
13e39c9163SSuraj Jitindar Singh #define NO_BMC_EVENT			false
14e39c9163SSuraj Jitindar Singh #define SET_BMC_EVENT			true
15e39c9163SSuraj Jitindar Singh 
16e39c9163SSuraj Jitindar Singh int set_bmc_events(struct mbox_context *context, uint8_t bmc_event,
17e39c9163SSuraj Jitindar Singh 		   bool write_back);
18e39c9163SSuraj Jitindar Singh int clr_bmc_events(struct mbox_context *context, uint8_t bmc_event,
19e39c9163SSuraj Jitindar Singh 		   bool write_back);
20e39c9163SSuraj Jitindar Singh int dispatch_mbox(struct mbox_context *context);
21e39c9163SSuraj Jitindar Singh int init_mbox_dev(struct mbox_context *context);
22e39c9163SSuraj Jitindar Singh void free_mbox_dev(struct mbox_context *context);
23e39c9163SSuraj Jitindar Singh 
24*943aba06SAndrew Jeffery /* Command handlers */
25*943aba06SAndrew Jeffery int mbox_handle_reset(struct mbox_context *context,
26*943aba06SAndrew Jeffery 			     union mbox_regs *req, struct mbox_msg *resp);
27*943aba06SAndrew Jeffery int mbox_handle_mbox_info(struct mbox_context *context,
28*943aba06SAndrew Jeffery 				 union mbox_regs *req, struct mbox_msg *resp);
29*943aba06SAndrew Jeffery int mbox_handle_flash_info(struct mbox_context *context,
30*943aba06SAndrew Jeffery 				  union mbox_regs *req, struct mbox_msg *resp);
31*943aba06SAndrew Jeffery int mbox_handle_read_window(struct mbox_context *context,
32*943aba06SAndrew Jeffery 				   union mbox_regs *req, struct mbox_msg *resp);
33*943aba06SAndrew Jeffery int mbox_handle_close_window(struct mbox_context *context,
34*943aba06SAndrew Jeffery 				    union mbox_regs *req, struct mbox_msg *resp);
35*943aba06SAndrew Jeffery int mbox_handle_write_window(struct mbox_context *context,
36*943aba06SAndrew Jeffery 				    union mbox_regs *req, struct mbox_msg *resp);
37*943aba06SAndrew Jeffery int mbox_handle_dirty_window(struct mbox_context *context,
38*943aba06SAndrew Jeffery 				    union mbox_regs *req, struct mbox_msg *resp);
39*943aba06SAndrew Jeffery int mbox_handle_flush_window(struct mbox_context *context,
40*943aba06SAndrew Jeffery 				    union mbox_regs *req, struct mbox_msg *resp);
41*943aba06SAndrew Jeffery int mbox_handle_ack(struct mbox_context *context, union mbox_regs *req,
42*943aba06SAndrew Jeffery 			   struct mbox_msg *resp);
43*943aba06SAndrew Jeffery int mbox_handle_erase_window(struct mbox_context *context,
44*943aba06SAndrew Jeffery 				    union mbox_regs *req, struct mbox_msg *resp);
45*943aba06SAndrew Jeffery 
46e39c9163SSuraj Jitindar Singh #endif /* MBOXD_MSG_H */
47