/* SPDX-License-Identifier: GPL-2.0 */ /* * * Microchip PolarFire SoC (MPFS) * * Copyright (c) 2020 Microchip Corporation. All rights reserved. * * */ #ifndef _MPFS_MAILBOX_H__ #define _MPFS_MAILBOX_H__ #include #define BYTES_4 4 struct udevice; /** * struct mpfs_mss_msg - PolarFire SoC message structure * @cmd_opcode: Command opcode * @cmd_data_size: Size of the command data. * @response: Pointer to the response data. * @cmd_data: Pointer to the command data. * @mbox_offset: Mailbox offset * @resp_offset: Response offset * */ struct mpfs_mss_msg { u8 cmd_opcode; u16 cmd_data_size; struct mpfs_mss_response *response; u8 *cmd_data; u16 mbox_offset; u16 resp_offset; }; /** * struct mpfs_mss_response - PolarFire SoC response structure * @resp_status: Response status * @resp_msg: Pointer to response message. * @resp_size: Size of the response message. * */ struct mpfs_mss_response { u32 resp_status; u32 *resp_msg; u16 resp_size; }; struct mpfs_syscontroller_priv; struct mpfs_sys_serv { struct udevice *dev; struct mpfs_syscontroller_priv *sys_controller; struct mpfs_mss_msg *msg; }; int mpfs_syscontroller_run_service(struct mpfs_syscontroller_priv *sys_controller, struct mpfs_mss_msg *msg); int mpfs_syscontroller_read_sernum(struct mpfs_sys_serv *sys_serv_priv, u8 *device_serial_number); void mpfs_syscontroller_process_dtbo(struct mpfs_sys_serv *sys_serv_priv); struct mpfs_syscontroller_priv *mpfs_syscontroller_get(struct udevice *dev); #endif /* __MPFS_MAILBOX_H__ */