| /* 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 <linux/types.h> | |
| #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__ */ | |