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