#ifndef __PLATFORM_CONFIG_H 
#define __PLATFORM_CONFIG_H

#include "stdint.h"

/****************************************************/
/* supported platforms list							*/
/* DO NOT CHANGE THESE DEFINITIONS 					*/
#define NXP_VALIDATION_BOARD	(1)
#define HITEX_A2_BOARD          (3)
/****************************************************/

/****************************************************/
/* used for the configuration checks */
/* DO NOT CHANGE THESE DEFINITIONS 					*/
/****************************************************/
#define YES	(1)
#define NO	(2)

/****************************************************/
/* USER CONFIGURATION SECTION						*/
/****************************************************/

/* choose the platform you want to build against 	*/
// #define PLATFORM NXP_VALIDATION_BOARD 
#define PLATFORM HITEX_A2_BOARD

/* these definitions are being taken from the build rule */
#ifdef EXT_FLASH
#define	USE_EXT_FLASH	(YES)
#else 
#define USE_EXT_FLASH	(NO)
#endif

#ifdef EXT_STAT_MEM
#define USE_EXT_STATIC_MEM	(YES)
#else
#define USE_EXT_STATIC_MEM	(NO)
#endif

#ifdef EXT_DYN_MEM
#define USE_EXT_DYNAMIC_MEM	(YES)
#else
#define USE_EXT_DYNAMIC_MEM	(NO)
#endif

/* define if the M4 should download and start the M0 application 	*/
/* set to YES if M4 should initialize M0 application	 			*/
/* set to NO if the debugger is downloading the M0 image, used for  */
/* dual core debugging sessions */
#define INITIALIZE_M0_IMAGE	(NO)

/* specify if need to prefill the M0 memory before download */
#define FILL_ROM_BEFORE_DOWNLOAD (NO)
#define FILL_RAM_BEFORE_DOWNLOAD (NO)

/* define if the M4 provides a mailbox system to the M0 */
/* M0 ---> M4 */
#define USE_M4_MAILBOX			(NO)
/* configure which priority the mailbox interrupt should have on the M4 side */
/* cmsis definition, priority from 0 to 7 */
#define M4_MAILBOX_PRIORITY		(0)

/* define if the M0 provides a mailbox system to the M4 */
/* M4 ---> M0 */
#define USE_M0_MAILBOX			(NO)
/* configure which priority the mailbox interrupt should have on the M0 side */
/* cmsis definition, priority from 0 to 3 */
#define M0_MAILBOX_PRIORITY	(0)


/* define if the system needs to exchange a parameter */
#define USE_MAILBOX_PARAMETER	(NO)

/* define if the system needs to hook a callback, or just notify */
#define USE_MAILBOX_CALLBACK	(NO)


/* memory map for the application */
/* !!! needs to be consistent with the scatter file !!! */
#ifdef EXT_FLASH

/************************************/
/* this is for the FLASH version 	*/
/************************************/
/*	0x1C000000	M4 ROM 4Mbytes		*/
/*	0x1C3FFFFF						*/
/*	0x10000000	M4 RAM 96K			*/
/*	0x10017FFF						*/
#define M4_ROM_START	0x1C000000
#define M4_ROM_LEN		0x400000	/* 4 Mbytes */

#define M4_RAM_START	0x10000000	/* 96 Kbytes */
#define M4_RAM_LEN		0x18000

/*	0x10080000	M0 ROM 32K	*/
/*	0x10087FFF				*/
/*	0x10088000 	M0 RAM 8K	*/
/*	0x10089FFF 				*/
#define M0_ROM_START	0x10080000
#define M0_ROM_LEN		0x8000

#define M0_RAM_START	0x10088000
#define M0_RAM_LEN		0x2000

/*	0x20000000  M4 BUF 16K	*/
/*	0x20003FFF				*/
/*	0x20004000	M0 BUF	16K	*/
/*	0x20007FFF				*/
#define M4_BUF_START	0x20000000
#define M4_BUF_LEN		0x4000

#define M0_BUF_START	0x20004000
#define M0_BUF_LEN		0x4000

/*	0x20008000	M4 MBX 8K	*/
/*	0x20009FFF				*/
/*	0x2000A000	M0 MBX 8K	*/
/*	0x2000BFFF				*/
#define M4_MBX_START	0x20008000
#define M4_MBX_LEN		0x2000

#define M0_MBX_START	0x2000A000
#define M0_MBX_LEN		0x2000

#else 

/*******************************/
/* this is for the ram version */
/*******************************/
/*	0x10000000	M4 ROM 64K	*/
/*	0x1000FFFF				*/
/*	0x10010000	M4 RAM 32K	*/
/*	0x10017FFF				*/
#define M4_ROM_START	0x10000000
#define M4_ROM_LEN		0x10000

#define M4_RAM_START	0x10010000
#define M4_RAM_LEN		0x8000

/*	0x10080000	M0 ROM 32K	*/
/*	0x10087FFF				*/
/*	0x10088000 	M0 RAM 8K	*/
/*	0x10089FFF 				*/
#define M0_ROM_START	0x10080000
#define M0_ROM_LEN		0x8000

#define M0_RAM_START	0x10088000
#define M0_RAM_LEN		0x2000

/*	0x20000000  M4 BUF 16K	*/
/*	0x20003FFF				*/
/*	0x20004000	M0 BUF	16K	*/
/*	0x20007FFF				*/
#define M4_BUF_START	0x20000000
#define M4_BUF_LEN		0x4000

#define M0_BUF_START	0x20004000
#define M0_BUF_LEN		0x4000

/*	0x20008000	M4 MBX 8K	*/
/*	0x20009FFF				*/
/*	0x2000A000	M0 MBX 8K	*/
/*	0x2000BFFF				*/
#define M4_MBX_START	0x20008000
#define M4_MBX_LEN		0x2000

#define M0_MBX_START	0x2000A000
#define M0_MBX_LEN		0x2000

#endif /* ifdef EXT_FLASH */

/****************************************************/
/* END OF USER CONFIGURATION 						*/
/* DO NOT EDIT BELOW THIS LINE						*/
/****************************************************/

#define M4_IPC_TABLE	M4_MBX_START
#define M0_IPC_TABLE	M0_MBX_START

/* configure defines for local mailbox */
#if defined (CORE_M0) && (USE_M0_MAILBOX == YES)
	#define PROVIDE_M0_LOCAL_MBX (1)
#endif

#if defined (CORE_M4) && (USE_M4_MAILBOX == YES)
	#define PROVIDE_M4_LOCAL_MBX  (1)
#endif

#if defined PROVIDE_M0_LOCAL_MBX || PROVIDE_M4_LOCAL_MBX
	  #define LOCAL_MAILBOX_ENABLED (1)
#endif


#if defined (CORE_M0) && (USE_M4_MAILBOX == YES)
	#define PROVIDE_M0_REMOTE_MBX (1)
#endif

#if defined (CORE_M4) && (USE_M0_MAILBOX == YES)
	#define PROVIDE_M4_REMOTE_MBX (1)
#endif

#if defined PROVIDE_M0_REMOTE_MBX || PROVIDE_M4_REMOTE_MBX
	  #define REMOTE_MAILBOX_ENABLED (1)
#endif


#if(USE_MAILBOX_PARAMETER == YES)
	#define MBX_PARAM_DEFAULT ,0x0
#else
	#define MBX_PARAM_DEFAULT 
#endif

#define DUMMY_CALLBACK ,(mbxCallback_t) &dummyCallback

#if (USE_MAILBOX_CALLBACK == YES)	
	#define MBX_CALLBACK_DEFAULT DUMMY_CALLBACK
#else
	#define MBX_CALLBACK_DEFAULT
#endif

/****************************************************/
/* platform wise initialization functions			*/
/****************************************************/
void platformInit(void);



#endif /* __PLATFORM_CONFIG_H */

