/*
 * Copyright (c) 2017-2019, Arm Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/* ZynqMP IPI mailbox doorbell service enums and defines */

#ifndef IPI_MAILBOX_SVC_H
#define IPI_MAILBOX_SVC_H

#include <stdint.h>

/*********************************************************************
 * Enum definitions
 ********************************************************************/

/* IPI SMC function numbers enum definition */
enum ipi_api_id {
	/* IPI mailbox operations functions: */
	IPI_MAILBOX_OPEN = 0x1000,
	IPI_MAILBOX_RELEASE,
	IPI_MAILBOX_STATUS_ENQUIRY,
	IPI_MAILBOX_NOTIFY,
	IPI_MAILBOX_ACK,
	IPI_MAILBOX_ENABLE_IRQ,
	IPI_MAILBOX_DISABLE_IRQ
};

/*********************************************************************
 * IPI mailbox service APIs declarations
 ********************************************************************/

/* IPI SMC handler */
uint64_t ipi_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2,
			 uint64_t x3, uint64_t x4, const void *cookie, void *handle,
			 uint64_t flags);

#endif /* IPI_MAILBOX_SVC_H */
