diff options
author | Cyril Bur <cyril.bur@au1.ibm.com> | 2017-02-22 20:30:59 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-02-23 16:04:27 +1100 |
commit | 25ab8e2ee55136cfd9f864f65686e312fd38b667 (patch) | |
tree | 362926d4d1c72c909ca8ad769c04a82c79181aac /include | |
parent | 271b00366a84cfb45e160ac90faee178035d67ac (diff) | |
download | skiboot-25ab8e2ee55136cfd9f864f65686e312fd38b667.zip skiboot-25ab8e2ee55136cfd9f864f65686e312fd38b667.tar.gz skiboot-25ab8e2ee55136cfd9f864f65686e312fd38b667.tar.bz2 |
hw/lpc-mbox: Add skiboot driver for the AST BMC mbox registers
This adds an internal skiboot API for accessing the AST BMC mbox
registers.
Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com>
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/lpc-mbox.h | 58 | ||||
-rw-r--r-- | include/skiboot.h | 1 |
2 files changed, 59 insertions, 0 deletions
diff --git a/include/lpc-mbox.h b/include/lpc-mbox.h new file mode 100644 index 0000000..c67efee --- /dev/null +++ b/include/lpc-mbox.h @@ -0,0 +1,58 @@ +/* Copyright 2017 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __LPC_MBOX_H +#define __LPC_MBOX_H + +#include <opal.h> +#include <ccan/endian/endian.h> + +/* Not 16 because the last two are interrupt based status regs */ +#define BMC_MBOX_DATA_REGS 14 +#define BMC_MBOX_ARGS_REGS 11 + +#define MBOX_C_RESET_STATE 0x01 +#define MBOX_C_GET_MBOX_INFO 0x02 +#define MBOX_C_GET_FLASH_INFO 0x03 +#define MBOX_C_CREATE_READ_WINDOW 0x04 +#define MBOX_C_CLOSE_WINDOW 0x05 +#define MBOX_C_CREATE_WRITE_WINDOW 0x06 +#define MBOX_C_MARK_WRITE_DIRTY 0x07 +#define MBOX_C_WRITE_FLUSH 0x08 +#define MBOX_C_BMC_EVENT_ACK 0x09 + +#define MBOX_R_SUCCESS 0x01 +#define MBOX_R_PARAM_ERROR 0x02 +#define MBOX_R_WRITE_ERROR 0x03 +#define MBOX_R_SYSTEM_ERROR 0x04 +#define MBOX_R_TIMEOUT 0x05 + +/* Default poll interval before interrupts are working */ +#define MBOX_DEFAULT_POLL_MS 200 + +struct bmc_mbox_msg { + uint8_t command; + uint8_t seq; + uint8_t args[BMC_MBOX_ARGS_REGS]; + uint8_t response; + uint8_t host; + uint8_t bmc; +}; + +int bmc_mbox_enqueue(struct bmc_mbox_msg *msg); +int bmc_mbox_register_callback(void (*callback)(struct bmc_mbox_msg *msg, void *priv), + void *drv_data); +#endif /* __LPC_MBOX_H */ diff --git a/include/skiboot.h b/include/skiboot.h index 33447a4..7904eee 100644 --- a/include/skiboot.h +++ b/include/skiboot.h @@ -216,6 +216,7 @@ extern int phb4_preload_capp_ucode(void); extern void phb4_preload_vpd(void); extern void probe_npu(void); extern void uart_init(void); +extern void mbox_init(void); extern void homer_init(void); extern void occ_pstates_init(void); extern void slw_init(void); |