/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

#ifndef _SYSTEMMANAGER_H_
#define _SYSTEMMANAGER_H_

//#include "SysMgr.h"

#define CPUINDEX				1

#define SM_ITCM_BASE				0x00000000
#define SM_ITCM_SIZE				0x00008000	// 32k
#define SM_ITCM_END				0x00008000
#define SM_ITCM_ALIAS_SIZE			0x00020000	// 128k

#define SM_DTCM_BASE				0x04000000
#define SM_DTCM_SIZE				0x00004000	// 16k
#define SM_DTCM_END				0x04004000
#define SM_DTCM_ALIAS_SIZE			0x00020000	// 128k

#define SM_APBC_BASE				0x10000000
#define SM_APBC_SIZE				0x00010000	// 64k
#define SM_APBC_END				0x10010000
#define SM_APBC_ALIAS_SIZE			0x00010000	// 64k

#define SM_SECM_BASE				0x40000000
#define SM_SECM_SIZE				0x00010000	//64k
#define SM_SECM_END				0x40010000
#define SM_SECM_ALIAS_SIZE			0x00010000	// 64k

#define SOC_ITCM_BASE				0xf7f80000
#define SOC_DTCM_BASE				0xf7fa0000
#define SOC_APBC_BASE				0xf7fc0000
#define SOC_SECM_BASE				0xf7fd0000

#if ( CPUINDEX == 2 )
//#define SM_APBC( reg )			( (INT32)(reg) + SM_APBC_BASE )
#define SM_APBC( reg )				( (INT32)(reg) )
#else
//#define SM_APBC( reg )			( (INT32)(reg) + SOC_APBC_BASE )
#define SM_APBC( reg )				( (INT32)(reg) - SM_APBC_BASE + SOC_APBC_BASE )
#endif

#define SOC_ITCM( addr )			( (INT)addr - SM_ITCM_BASE + SOC_ITCM_BASE )
#define SOC_DTCM( addr )			( (INT)addr - SM_DTCM_BASE + SOC_DTCM_BASE )
#define SOC_APBC( addr )			( (INT)addr - SM_APBC_BASE + SOC_APBC_BASE )
#define SOC_SECM( addr )			( (INT)addr - SM_SECM_BASE + SOC_SECM_BASE )

#define SM_SM_APB_ICTL_BASE			(SM_APBC_BASE)
#define SM_SM_APB_WDT0_BASE			(SM_APBC_BASE + 0x1000)
#define SM_SM_APB_WDT1_BASE			(SM_APBC_BASE + 0x2000)
#define SM_SM_APB_WDT2_BASE			(SM_APBC_BASE + 0x3000)
#define SM_SM_APB_TIMERS_BASE			(SM_APBC_BASE + 0x4000)
#define SM_SM_APB_COUNTER_BASE			(SM_APBC_BASE + 0x5000)
#define SM_SM_APB_SPI_BASE			(SM_APBC_BASE + 0x6000)
#define SM_SM_APB_I2C0_BASE			(SM_APBC_BASE + 0x7000)
#define SM_SM_APB_I2C1_BASE			(SM_APBC_BASE + 0x8000)
#define SM_SM_APB_UART0_BASE			(SM_APBC_BASE + 0x9000)
#define SM_SM_APB_UART1_BASE			(SM_APBC_BASE + 0xA000)
#define SM_SM_APB_UART2_BASE			(SM_APBC_BASE + 0xB000)
#define SM_SM_APB_GPIO_BASE			(SM_APBC_BASE + 0xC000)
#define SM_SM_SYS_CTRL_REG_BASE			(SM_APBC_BASE + 0xD000)

#define LSb32SS_SM_ICTL_IRQ_SM_WDT0		0
#define LSb32SS_SM_ICTL_IRQ_SM_WDT1		1
#define LSb32SS_SM_ICTL_IRQ_SM_WDT2		2
#define LSb32SS_SM_ICTL_IRQ_SM_TIMERS		3
#define LSb32SS_SM_ICTL_IRQ_RTC		 	4
#define LSb32SS_SM_ICTL_IRQ_SM_SPI		5
#define LSb32SS_SM_ICTL_IRQ_SM_I2C0		6
#define LSb32SS_SM_ICTL_IRQ_SM_I2C1		7
#define LSb32SS_SM_ICTL_IRQ_SM_UART0		8
#define LSb32SS_SM_ICTL_IRQ_SM_UART1		9
#define LSb32SS_SM_ICTL_IRQ_SM_UART2		10
#define LSb32SS_SM_ICTL_IRQ_SM_GPIO_A		11
#define LSb32SS_SM_ICTL_IRQ_ADC		 	12

#if 1
#define MV_SM_READ_REG32( reg )			( *( (UINT32*)SM_APBC( reg ) ) )
#define MV_SM_READ_REG8( reg )			( *( (UCHAR*)SM_APBC( reg ) ) )
#define MV_SM_WRITE_REG32( reg, value )		( *( (UINT32*)SM_APBC( reg ) ) = (UINT32)( value ) )
#define MV_SM_WRITE_REG8( reg, value )		( *( (UCHAR*)SM_APBC( reg ) ) = (UCHAR)( value ) )
#else
#define MV_SM_READ_REG32( reg )			( *( (UINT32*)SM_APBC( reg ) ) )
#define MV_SM_READ_REG8( reg )			( *( (UCHAR*)SM_APBC( reg ) ) )
#define MV_SM_WRITE_REG32( reg, value )		{ ( *( (UINT32*)SM_APBC( reg ) ) = (UINT32)( value ) ); printf( "reg 0x%8.8x = 0x%8.8x\n", SM_APBC(reg), value ); }
#define MV_SM_WRITE_REG8( reg, value )		{ ( *( (UCHAR*)SM_APBC( reg ) ) = (UCHAR)( value ) ); printf( "reg 0x%8.8x = 0x%2.2x\n", SM_APBC(reg), value ); }
#endif


// define module ID for each module
#define MV_SM_ID_SYS				1
#define MV_SM_ID_COMM				2
#define MV_SM_ID_IR				3
#define MV_SM_ID_KEY				4
#define MV_SM_ID_POWER				5
#define MV_SM_ID_WD				6
#define MV_SM_ID_TEMP				7
#define MV_SM_ID_VFD				8
#define MV_SM_ID_SPI				9
#define MV_SM_ID_I2C				10
#define MV_SM_ID_UART				11


//	define SM state
#define MV_SM_STATE_COLDBOOTUP			1
#define MV_SM_STATE_WAIT_WARMUP_0_RESP		2
#define MV_SM_STATE_WARMUP			3
#define MV_SM_STATE_WAIT_WARMDOWN_RESP		4
#define MV_SM_STATE_WARMDOWN			5
#define MV_SM_STATE_WAIT_WARMUP_RESP		6

// following assignment is so we can assign Beetle-specific value that is different from
// a normal STATE_WARMUP_1...

#define reserved_MV_SM_STATE			7
#define MV_SM_POWER_BOOT_MODE			8 /* also used as msg type to SM */

#define MV_SM_STATE_WAIT_WARMDOWN_2_RESP	(0xA0)
#define MV_SM_STATE_WARMDOWN_2			(0xA1)
#define MV_SM_STATE_WAIT_WARMUP_2_RESP		(0xA2)
#define MV_SM_STATE_WARMUP_2			(0xA3)


//	define	 message  content
#define MV_SM_POWER_WARMUP_0_RESP		(MV_SM_STATE_WAIT_WARMUP_0_RESP)
#define MV_SM_POWER_WARMDOWN_1_RESP		(MV_SM_STATE_WAIT_WARMDOWN_RESP)
#define MV_SM_POWER_WARMUP_1_RESP		(MV_SM_STATE_WAIT_WARMUP_RESP)
#define MV_SM_POWER_WARMDOWN_2_RESP		(MV_SM_STATE_WAIT_WARMDOWN_2_RESP)
#define MV_SM_POWER_WARMUP_2_RESP		(MV_SM_STATE_WAIT_WARMUP_2_RESP)
#define MV_SoC_STATE_COLDBOOT			0x21

//	define	SoC state
//
#define MV_SoC_STATE_SYSPOWERON			0
#define MV_SoC_STATE_SYSRESET			0xFF
#define MV_SoC_STATE_COLDBOOTUP			(MV_SM_STATE_COLDBOOTUP)
#define MV_SoC_STATE_WARMUP_0_RESP		(MV_SM_POWER_WARMUP_0_RESP)
#define MV_SoC_STATE_WARMUP_0			(MV_SM_STATE_WAIT_WARMUP_0_RESP)

#define MV_SoC_STATE_WARMDOWN_1_RESP		(MV_SM_POWER_WARMDOWN_1_RESP)
#define MV_SoC_STATE_WARMDOWN_1			(MV_SM_STATE_WAIT_WARMDOWN_RESP)

#define MV_SoC_STATE_WARMUP_1_RESP		(MV_SM_POWER_WARMUP_1_RESP)
#define MV_SoC_STATE_WARMUP_1			(MV_SM_STATE_WAIT_WARMUP_RESP)
#define MV_SoC_STATE_WARMUP_2			(MV_SM_STATE_WAIT_WARMUP_2_RESP)
#define MV_SoC_STATE_WARMDOWN_2			(MV_SM_STATE_WAIT_WARMDOWN_2_RESP)

// Beetle specific variation on STATE_WARMUP_1. When bootloader sees it, he should skip 
// loading SM with sm.bin as he'd normally do, and then respond to it with the same message 
// he would use with MV_SoC_STATE_WARMUP_1.
#define	MV_SoC_STATE_WARMUP_FROM_DDR_OFF_1 (reserved_MV_SM_STATE)
#define MV_SoC_STATE_BOOT_RECOVERY_KERNEL  (MV_SM_POWER_BOOT_MODE) /* state requesting recovery mode*/ 

#define MV_SM_RSTFLAG_COLD			0xFFFF
#define MV_SM_RSTFLAG_WARM			0xFF00
#define MV_SM_TEMP_CPU_TYPE			0xCC
#define MV_SM_TEMP_CPU_TYPE_B0			0xB0

//#define DYNAMIC_MODULE

#endif // #ifndef _SYSTEMMANAGER_H_
