/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
 */

 /*
  *
 * Copyright (C) 2012 Amlogic, Inc.
 *
 * Author: Platform-SH@amlogic.com
 *
 */

#ifndef __MAILBOX_H__
#define __MAILBOX_H__
#include <asm/arch/secure_apb.h>
#include <common.h>

#define REE2AO_SET_ADDR		MAILBOX_SET_MBOX03
#define REE2AO_STS_ADDR		MAILBOX_STS_MBOX03
#define REE2AO_CLR_ADDR		MAILBOX_CLR_MBOX03
#define REE2AO_WR_ADDR		MAILBOX_WR_MBOX03
#define REE2AO_RD_ADDR		MAILBOX_RD_MBOX03
#define REE2AO_IRQCLR_ADDR	MAILBOX_IRQA_CLR

#define MAILBOX_USER_DATA_SIZE	96

#define MHU_SYNC		(1 << 26)
#define MHU_CMD_BUILD(command, size) \
	(((command) & 0xffff) | (((size) & 0x1ff) << 16) | MHU_SYNC)
#define MHU_ACK_MASK(mbox)	(1 << ((mbox)*2 + 1))

#define MHU_PAYLOAD_SIZE	0x80
#define MHU_DATA_OFFSET		0x1c
#define REE2AO_MBOX_ID		0x3
/* ...Message composition with module(6bits), function(10bits) */
#define __MBX_COMPOSE_MSG(mod, func)    (((mod) << 10) | ((func) & 0x3FF))

/*******************************************************************************
 * Define moudle type here, 6bits valid
 ******************************************************************************/
#define MBX_SYSTEM              0x0

/*******************************************************************************
 * Define function here, 10bits valid
 ******************************************************************************/
         /*SYSTEM*/
#define CMD_UNDEFINE            0x0
#define CMD_TEST		0x6
#define CMD_LED_INFO            0xF7

/*******************************************************************************
 * Mssage Comopsition
 ******************************************************************************/
#define MBX_CMD_TEST    __MBX_COMPOSE_MSG(MBX_SYSTEM, CMD_TEST)
enum {
        HIFIA_REE_CHANNEL = 0,
        HIFIB_REE_CHANNEL = 1,
        SECPU_REE_CHANNEL = 2,
        AOCPU_REE_CHANNEL = 3,
};

void mhu_init(void);
/*message max size MAILBOX_USER_DATA_SIZE 96 byte*/
int scpi_send_data(uint32_t chan, uint32_t command,
		   void *sendmessage, uint32_t sendsize,
		   void *revmessage, uint32_t revsize);
#endif	/* __SCPI_FIFO_H__ */
