/* 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>

#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_BUF_MBOX03
#define REE2AO_RD_ADDR		MAILBOX_BUF_MBOX03
#define REE2AO_IRQCLR_ADDR	MAILBOX_IRQA_CLR0
#define REE2AO_IRQCLR_ADDR1	MAILBOX_IRQA_CLR1

#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__ */
