/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
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.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	    this list of conditions and the following disclaimer.

    *   Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.

    *   Neither the name of Marvell nor the names of its contributors may be
        used to endorse or promote products derived from this software without
        specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*******************************************************************************/
#ifndef _SOC_SPEC_H
#define _SOC_SPEC_H

#include "config_marvell.h"     /* Required to identify SOC and Board */

/************************/
/* CPU ADDRESS DECODING */
/************************/
#define BOOTROM_BASE    		0xFFFF0000

#ifdef MV_FPGA_HW
	#define INTER_REGS_BASE		0xF1000000
#else
	#define INTER_REGS_BASE		0xD0000000
#endif

#define SPI_FLASH_BASE			0xD4000000
#define NOR_FLASH_BASE			0xD8000000 /* Boot CS - NOR Flash on BootCS */
#define NAND_FLASH_BASE			0xD8000000 /* Boot CS - Legacy NAND Controller */

#if defined(MV_TEST_PLATFORM)
	#define RAM_TOP			0x81004000 /*  Use PEX memory - (16KB for MMU table) */
#elif defined(MV88F6710) || defined(MV88F78X60)
	#define RAM_TOP			0x40004000 /*  L2 cache 512KB - (16KB for MMU table) */
#elif defined(MV88F66XX) || defined(MV88F68XX) || defined(MV88F672X) || defined(MV88F69XX)
	#define RAM_TOP			0x40000000 /*  L2 cache 512KB */
#else
	#define RAM_TOP			0x40004000 /*  L2 cache 512KB */
#endif

#define HDR_BLK_OFFSET		0x00000000	/* Header is 64KB long? */
#define MEM_POOLS_OFFSET	0x00010000
#define AES_TBLS_OFFSET		0x00012A00

#ifdef MV_EFUSE_IN_RAM
	#define BOOT_HEAP_OFFSET	0x00013D40 /* 64 bytes for eFuse simulation */
#else
	#define BOOT_HEAP_OFFSET	0x00013D00
#endif
/***************************/
/* BOOTROM_ROUTINE_ERR_REG */
/***************************/
#define BOOTROM_ROUTINE_ERR_REG			0x182D0
#define BOOTROM_EXEC_ADDR_REG			0x182D4

/* Error Code , 0 - Pass, Non-Zero - Fail*/
#define BRE_ERR_CODE_OFFS			0
#define BRE_ERR_CODE_MASK			(0xFF << BRE_ERR_CODE_OFFS)
#define NO_ERR              			(0x00 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_HEADER_ID			(0x11 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_HDR_CHKSUM		(0x12 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_IMG_CHKSUM		(0x13 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_HDR_VERSION		(0x14 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_EXT_HDR_CHKSUM		(0x15 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_EXT_HDR_TYPE		(0x16 << BRE_ERR_CODE_OFFS)
#define ERROR_BUSY				(0x17 << BRE_ERR_CODE_OFFS)
#define ERROR_LINK				(0x18 << BRE_ERR_CODE_OFFS)
#define ERROR_DMA				(0x19 << BRE_ERR_CODE_OFFS)
#define ERROR_PIO				(0x1a << BRE_ERR_CODE_OFFS)
#define ERROR_TIMEOUT				(0x1b << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_HDR_SIZE			(0x1c << BRE_ERR_CODE_OFFS)
#define ERROR_UNSUPPORTED_BOOT			(0x1d << BRE_ERR_CODE_OFFS)
#define ERROR_UNSUPPORTED_SAR_VAL		(0x1e << BRE_ERR_CODE_OFFS)
#define ERROR_ALIGN_SIZE			(0x21 << BRE_ERR_CODE_OFFS)
#define ERROR_ALIGN_SRC				(0x22 << BRE_ERR_CODE_OFFS)
#define ERROR_ALIGN_DEST			(0x23 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_READ_FAIL			(0x30 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_BOOTROM_CHKSUM		(0x31 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_IMAGE_NOT_ALIGN_256		(0x32 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_ECC_ERROR			(0x33 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_TIMEOUT			(0x34 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_EXCESS_BAD_BLK		(0x35 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_BAD_BLK			(0x36 << BRE_ERR_CODE_OFFS)
#define ERROR_NAND_UNSUPPORTED_ECC		(0x37 << BRE_ERR_CODE_OFFS)
#define ERROR_I2C_READ_ERROR			(0x40 << BRE_ERR_CODE_OFFS)
#define ERROR_I2C_WRITE_ERROR			(0x41 << BRE_ERR_CODE_OFFS)
#define ERROR_I2C_START_ERROR			(0x42 << BRE_ERR_CODE_OFFS)
#define ERROR_I2C_STOP_ERROR			(0x43 << BRE_ERR_CODE_OFFS)
#define ERROR_I2C_NO_HDR_FOUND_ERROR		(0x44 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_SECURITY_HDR		(0x51 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_RSA_PUB_KEY		(0x52 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_RSA_PUB_KEY_FMT		(0x53 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_RSA_HDR_SIGN		(0x54 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_RSA_IMG_SIGN		(0x55 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_BOX_ID			(0x56 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_FLASH_ID			(0x57 << BRE_ERR_CODE_OFFS)
#define ERROR_RSA_LIB_ERROR			(0x58 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_BINARY			(0x61 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_IMG_LEN			(0x62 << BRE_ERR_CODE_OFFS)
#define ERROR_INVALID_HDR_LEN			(0x63 << BRE_ERR_CODE_OFFS)

/* Routine Number */
#define BRE_RTN_NUM_OFFS			8
#define BRE_RTN_NUM_MASK			(0xF << BRE_RTN_NUM_OFFS)
#define BRE_RTN_UART_BOOT			(0x1 << BRE_RTN_NUM_OFFS)
#define BRE_RTN_SATA_BOOT			(0x4 << BRE_RTN_NUM_OFFS)
#define BRE_RTN_SPI_BOOT			(0x7 << BRE_RTN_NUM_OFFS)
#define BRE_RTN_NAND_BOOT			(0x9 << BRE_RTN_NUM_OFFS)
#define BRE_RTN_EXCEP				(0xb << BRE_RTN_NUM_OFFS)
#define BRE_RTN_EXEC				(0xc << BRE_RTN_NUM_OFFS)
#define BRE_RTN_I2C				(0xd << BRE_RTN_NUM_OFFS)
#define BRE_RTN_PEX_BOOT			(0xe << BRE_RTN_NUM_OFFS)

/* Bit that says the DRAM is initiated */
#define BRE_DRAM_INIT_OFFS			12
#define BRE_DRAM_INIT_MASK			(0x1 << BRE_DRAM_INIT_OFFS)

/* Disable ECC in NAND boot */
#define BRE_ECC_OVERRIDE_OFFS			13
#define BRE_ECC_OVERRIDE_MASK			(0x3 << BRE_ECC_OVERRIDE_OFFS)
#define BRE_ECC_NORMAL				(0x0 << BRE_ECC_OVERRIDE_OFFS)
#define BRE_ECC_HAMMING				(0x1 << BRE_ECC_OVERRIDE_OFFS)
#define BRE_ECC_BCH				(0x2 << BRE_ECC_OVERRIDE_OFFS)
#define BRE_ECC_NONE				(0x3 << BRE_ECC_OVERRIDE_OFFS)

/* Disable Phy configuration in SATA boot */
#define BRE_PHY_CFG_DISABLE_OFFS		13
#define BRE_PHY_CFG_DISABLE_MASK		(0x1 << BRE_PHY_CFG_DISABLE_OFFS)

/* Disable controller configuration in SATA boot */
#define BRE_SATA_CFG_DISABLE_OFFS		14
#define BRE_SATA_CFG_DISABLE_MASK		(0x1 << BRE_SATA_CFG_DISABLE_OFFS)

/* BOOTROM test mode */
#define BRE_TEST_MODE_OFFS			15
#define BRE_TEST_MODE_MASK			(0x1 << BRE_TEST_MODE_OFFS)

/* Retry */
#define BRE_RTN_RETRY_OFFS			16
#define BRE_RTN_RETRY_MASK			(0xFF << BRE_RTN_RETRY_OFFS)
#define BRE_MAX_RETRY				(0x10 << BRE_RTN_RETRY_OFFS)

#define BRE_RTN_TRACE_OFFS			24
#define BRE_RTN_TRACE_MASK			(0xFFUL << BRE_RTN_TRACE_OFFS)

#define TRACE_INIT				0x10
#define TRACE_MAIN				0x20
#define TRACE_EXEC				0x30
#define TRACE_DRAM				0x40
#define TRACE_EXTENTION				0x50
#define TRACE_UART				0x60
#define TRACE_I2C				0x70
#define TRACE_PEX				0x80
#define TRACE_SPI				0x90
#define TRACE_NAND				0xa0
#define TRACE_SATA				0xb0
#define TRACE_RDRW_RWG				0xc0
#define TRACE_NAND_ECC				0xd0

/******************************/
/* Analog Group Configuration */
/******************************/
#define ANALOG_GROUP_CFG_REG			0x1847c
#define ANALOG_GRP0_BGR_OFFS			3
#define ANALOG_GRP0_BGR_MASK			(0x3 << ANALOG_GRP0_BGR_OFFS)
#define ANALOG_GRP0_BGR_MODIFIED_BJT_MDL	(0x1 << ANALOG_GRP0_BGR_OFFS)


/********/
/* NAND */
/********/
#define DEV_NAND_CTRL_REG			0x10470
#define DINFCR_NF_ACT_CE			BIT1

/*																		*/
/* Timing register parameter 0.                                         */
/*                                                                      */
/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1                         */
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0     */
/* +---------+-+-------+-----+-----+---+-----+-----+---+-----+-----+    */
/* |  tADL   |S|  RCD  | tCH | tCS |   | tWH | tWP |   | tRH | tRP |    */
/* +---------+-+-------+-----+-----+---+-----+-----+---+-----+-----+    */
/*                                                                      */

#define TIMING_MAX_tADL		31U
#define TIMING_DEF_SEL_CNTR	1
#define TIMING_MAX_RD_CNT_DEL	0
#define TIMING_MAX_tCH		7
#define TIMING_MAX_tCS		7
#define TIMING_MAX_tWH		7
#define TIMING_MAX_tWP		7
#define TIMING_MAX_etRP		0
#define TIMING_MAX_tRH		7
#define TIMING_MAX_tRP		7

#define DFC_NDTR0CS0_DEF   ((TIMING_MAX_tADL << 27) | \
             (TIMING_DEF_SEL_CNTR << 26) | \
             (TIMING_MAX_RD_CNT_DEL << 22) | \
             (TIMING_MAX_tCH << 19) | \
             (TIMING_MAX_tCS << 16) | \
             (TIMING_MAX_tWH << 11) | \
             (TIMING_MAX_tWP << 8) | \
             (TIMING_MAX_etRP << 6) | \
             (TIMING_MAX_tRH << 3) | \
             (TIMING_MAX_tRP))

/*																		*/
/* Timing register parameter 1.                                         */
/*                                                                      */
/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1                         */
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0     */
/* +-------------------------------+-+-+-----------+-------+-------+    */
/* |               tR              | | | RESERVED  | tWHR  |  tAR  |    */
/* +-------------------------------+-+-+-----------+-------+-------+    */
/*                W P                                                   */
/*                A R                                                   */
/*                I E                                                   */
/*                T S                                                   */
/*                _ C                                                   */
/*                M A                                                   */
/*                O L                                                   */
/*                D E                                                   */
/*                E                                                     */

#define TIMING_MAX_tR		65535U
#define TIMING_WAIT_MODE	1   /* Ignore RnB signal */
#define TIMING_PRESCALE		0   /* no prescalling */
#define TIMING_MAX_tWHR		15
#define TIMING_MAX_tAR		15

#define DFC_NDTR1CS0_DEF   ((TIMING_MAX_tR << 16) | \
             (TIMING_WAIT_MODE << 15) | \
             (TIMING_PRESCALE << 14) | \
             (TIMING_MAX_tWHR << 4) | \
             (TIMING_MAX_tAR))

/*		*/
/* DFC register values for each control point.                                      */
/*                                                                                  */
/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1                                     */
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0                 */
/* +-+-+-+-+-+-+---+-+-+-+-+-+-----+-+---+-+-+-+-+-+-+-+-+-+-+-+-+-+                */
/* |1|1|0|0|x|x|x x|1|0|0|0|0|x x x|x|x x|1|1|1|1|1|1|1|1|1|1|1|1|1| S/W DEFAULT	*/
/* +-+-+-+-+-+-+---+-+-+-+-+-+-----+-+---+-+-+-+-+-+-+-+-+-+-+-+-+-+                */
/*  S E D N D D  P  S N F C S   R   R  P  N R C C C C C C D S W R W                 */
/*  P C M D W W  A  E D O L T   D   A  G  D D S S S S S S B B R D R                 */
/*  A C A _ I I  G  Q _ R R O   _   _  _  _ Y 0 1 0 1 0 1 E E D D C                 */
/*  R _ _ R D D  E  _ S C _ P   I   S  P  A M _ _ _ _ _ _ R R R R M                 */
/*  E E E U T T  _  D T E P _   D   T  E  R   P P C C B B R R E E D                 */
/*  _ N N N H H  S  I O - G O   _   A  R  B   A A M M B B M M Q Q R                 */
/*  E       _ _  Z  S P C _ N   C   R  _  _   G G D D D D     M M E                 */
/*  N       C M         S C _   N   T  B  E   E E D D M M         Q                 */
/*                      X N U   T      L  N   D D M M             M                 */
/*                        T N          K      M M                                   */
/*             C                                                                    */
/*             O                                                                    */
/*             R                                                                    */
/*                                                                                  */

#define DFC_NDCR_PG_PER_BLK_OFFS	13
#define DFC_NDCR_PG_PER_BLK_MASK	(0x3 << DFC_NDCR_PG_PER_BLK_OFFS)
#define DFC_NDCR_PG_PER_BLK_32		(0x0 << DFC_NDCR_PG_PER_BLK_OFFS)
#define DFC_NDCR_PG_PER_BLK_64		(0x2 << DFC_NDCR_PG_PER_BLK_OFFS)
#define DFC_NDCR_PG_PER_BLK_128		(0x1 << DFC_NDCR_PG_PER_BLK_OFFS)
#define DFC_NDCR_PG_PER_BLK_256		(0x3 << DFC_NDCR_PG_PER_BLK_OFFS)
#define DFC_NDCR_RA_START_OFFS		15
#define DFC_NDCR_RA_START_MASK		(0x1 << DFC_NDCR_RA_START_OFFS)
#define DFC_NDCR_RA_START_2ND_CYC	(0x0 << DFC_NDCR_RA_START_OFFS)
#define DFC_NDCR_RA_START_3RD_CYC	(0x1 << DFC_NDCR_RA_START_OFFS)
#define DFC_NDCR_RD_ID_CNT_OFFS		16
#define DFC_NDCR_RD_ID_CNT_MASK		(0x7 << DFC_NDCR_RD_ID_CNT_OFFS)
#define DFC_NDCR_RD_ID_CNT_2		(0x2 << DFC_NDCR_RD_ID_CNT_OFFS)
#define DFC_NDCR_RD_ID_CNT_4		(0x4 << DFC_NDCR_RD_ID_CNT_OFFS)
#define DFC_NDCR_PAGE_SZ_OFFS		24
#define DFC_NDCR_PAGE_SZ_MASK		(0x3 << DFC_NDCR_PAGE_SZ_OFFS)
#define DFC_NDCR_PAGE_SZ_512B		(0x0 << DFC_NDCR_PAGE_SZ_OFFS)
#define DFC_NDCR_PAGE_SZ_2K		(0x1 << DFC_NDCR_PAGE_SZ_OFFS)
#define DFC_NDCR_PAGE_SZ_4K		(0x2 << DFC_NDCR_PAGE_SZ_OFFS)
#define DFC_NDCR_PAGE_SZ_8K		(0x3 << DFC_NDCR_PAGE_SZ_OFFS)
#define DFC_NDCR_DWIDTH_M_C_OFFS	26
#define DFC_NDCR_DWIDTH_M_C_MASK	(0x3 << DFC_NDCR_DWIDTH_M_C_OFFS)
#define DFC_NDCR_ND_RUN_OFFS		28
#define DFC_NDCR_ND_RUN_MASK		(0x1 << DFC_NDCR_ND_RUN_OFFS)
#define DFC_NDCR_ECC_EN_OFFS		30
#define DFC_NDCR_ECC_EN_MASK		(0x1 << DFC_NDCR_ECC_EN_OFFS)
#define DFC_NDCR_ECC_EN			(0x1 << DFC_NDCR_ECC_EN_OFFS)

#define DFC_NDCR_DEFAULT_VAL		0x80801FFF
#define DFC_NDCR_DEFAULT_VAL_NO_SPARE	0x00801FFF

/*
 DFC register offsets for each control point in command buffer 0.

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +-----------+-+-+-----+-+-+-----+---------------+---------------+
 |           | | |     | | |     |               |               |
 +-----------+-+-+-----+-+-+-----+---------------+---------------+
   reserved   A C   C   N D   A         CMD2            CMD1
              U S   M   C B   D
              T E   D     C   D
              O L   _         R
              _     T         _
              R     Y         C
              S     P         Y
                    E         C
*/
#define DFC_NDCB0_RESET		0x00A000FF
#define DFC_NDCB0_READID	0x00610090
#define DFC_NDCB0_READ_LB	0x000D3000   /* 5 address cycles w/0x30*/
#define DFC_NDCB0_READ_SB_4	0x00040000   /* 4 address cycels */
#define DFC_NDCB0_READ_SB_3	0x00030000   /* 3 address cycels */


/*
 DFC register offsets for each control point in command buffer 1.

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +---------------+---------------+---------------+---------------+
 |               |               |               |               |
 +---------------+---------------+---------------+---------------+
      ADDR4           ADDR3           ADDR2           ADDR1
*/
#define DFC_CMD_OFFSET_ADDR4	24
#define DFC_CMD_OFFSET_ADDR3	16
#define DFC_CMD_OFFSET_ADDR2	8
#define DFC_CMD_OFFSET_ADDR1	0


/*
 DFC register offsets for each control point in command buffer 2.

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +-----------------------------------+-----------+---------------+
 |                                   |           |               |
 +-----------------------------------+-----------+---------------+
               reserved                PAGE_COUNT     ADDR5
*/
#define DFC_CMD_OFFSET_PAGE_COUNT	8
#define DFC_CMD_OFFSET_ADDR5		0

/*
 DFC status register masks for each status bit.

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +---------------------------------------+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                       | | | | | | | | | | | | |
 +---------------------------------------+-+-+-+-+-+-+-+-+-+-+-+-+
                 reserved                 R C C C C C C D S W R W
                                          D S S S S S S B B R D R
                                          Y 0 1 0 1 0 1 E E D D C
                                            _ _ _ _ _ _ R R R R M
                                            P P C C B B R R E E D
                                            A A M M B B     Q Q R
                                            G G D D D D         E
                                            E E D D             Q
                                            D D
*/
#define DFC_SR_RDY0                   0x00000800
#define DFC_SR_RDY1                   0x00001000
#define DFC_SR_CS0_PAGED              0x00000400
#define DFC_SR_CS1_PAGED              0x00000200
#define DFC_SR_CS0_CMDD               0x00000100
#define DFC_SR_CS1_CMDD               0x00000080
#define DFC_SR_CS0_BBD                0x00000040
#define DFC_SR_CS1_BBD                0x00000020
#define DFC_SR_UNCOR_ERR              0x00000010
#define DFC_SR_CORR_ERR               0x00000008
#define DFC_SR_WRDREQ                 0x00000004
#define DFC_SR_RDDREQ                 0x00000002
#define DFC_SR_WRCMDREQ               0x00000001

/*
 DFC Ecc Control

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +---------------------------------+---------------+-----------+-+
 |                                 |               |           | |
 +---------------------------------+---------------+-----------+-+
               reserved               ECC_SPARE      ECC_THRESH B
                          C
                          H
                          _
                          E
                          N
*/
#define DFC_ECC_CTRL_BCH_EN_OFFS	0
#define DFC_ECC_CTRL_BCH_EN_MASK	(1 << DFC_ECC_CTRL_BCH_EN_OFFS)
#define DFC_ECC_CTRL_BCH_EN		(1 << DFC_ECC_CTRL_BCH_EN_OFFS)
#define DFC_ECC_CTRL_THRESH_OFFS	1
#define DFC_ECC_CTRL_THRESH_MASK	(0x3F << DFC_ECC_CTRL_BCH_EN_OFFS)
#define DFC_ECC_CTRL_SPARE_OFFS		7
#define DFC_ECC_CTRL_SPARE_MASK		(0xFF << DFC_ECC_CTRL_BCH_EN_OFFS)

/*ommand Buffer 0

  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 +-----+-+-------------------------------------------------------+
 |     | |                                                       |
 +-----+-+-------------------------------------------------------+
   CMD  L
    X   E
    T   N
    Y   _
    P   O
    E   V
        R
        D
*/
#define DFC_CB0_LEN_OVRD_OFFS		28
#define DFC_CB0_LEN_OVRD_MASK		(0x1 << DFC_CB0_LEN_OVRD_OFFS)
#define DFC_CB0_CMD_XTYPE_OFFS		29
#define DFC_CB0_CMD_XTYPE_MASK		(0x7U << DFC_CB0_CMD_XTYPE_OFFS)
#define DFC_CB0_CMD_XTYPE_MONOLITHIC	(0x0U << DFC_CB0_CMD_XTYPE_OFFS)
#define DFC_CB0_CMD_XTYPE_LAST_NAKED	(0x1U << DFC_CB0_CMD_XTYPE_OFFS)
#define DFC_CB0_CMD_XTYPE_MULTIPLE	(0x4U << DFC_CB0_CMD_XTYPE_OFFS)
#define DFC_CB0_CMD_XTYPE_NAKED		(0x5U << DFC_CB0_CMD_XTYPE_OFFS)
#define DFC_CB0_CMD_XTYPE_DISPATCH	(0x6U << DFC_CB0_CMD_XTYPE_OFFS)



/* Data flash controller register locations. */

#define DFC_CONTROL                  0xD0000  /* NDCR     : Control.       */
#define DFC_TIMING_0                 0xD0004  /* NDTR0CS0 : Timing reg 0.  */
#define DFC_TIMING_1                 0xD000C  /* NDTR1CS0 : Timing reg 1.  */
#define DFC_STATUS                   0xD0014  /* NDSR     : Status.        */
#define DFC_PAGES                    0xD0018  /* NDPCR    : Page count.    */
#define DFC_BADBLOCK0                0xD001C  /* NDBDR0   : Bad block 0.   */
#define DFC_BADBLOCK1                0xD0020  /* NDBDR1   : Bad block 1.   */
#define DFC_ECC_CONTROL              0xD0028  /* NDECCCTRL: ECC Control    */
#define DFC_DATA                     0xD0040  /* NDDB     : Data buffer.   */
#define DFC_COMMAND0                 0xD0048  /* NDCB0    : Command buffer.*/

/*******************/
/* SAMPLE AT RESET */
/*******************/
#define MPP_SAMPLE_AT_RESET_0			0x18230
#define MPP_SAMPLE_AT_RESET_1			0x18234

/* Boot device bus width */
#define MSAR_0_BOOT_DEV_BUS_WIDTH_OFFS		3
#define MSAR_0_BOOT_DEV_BUS_WIDTH_MASK		(0x3 << MSAR_0_BOOT_DEV_BUS_WIDTH_OFFS)
#define MSAR_0_BOOT_DEV_BUS_WIDTH_8BIT		(0x0 << MSAR_0_BOOT_DEV_BUS_WIDTH_OFFS)
#define MSAR_0_BOOT_DEV_BUS_WIDTH_16BIT		(0x1 << MSAR_0_BOOT_DEV_BUS_WIDTH_OFFS)
#define MSAR_0_BOOT_DEV_BUS_WIDTH_32BIT		(0x2 << MSAR_0_BOOT_DEV_BUS_WIDTH_OFFS)

/* Boot device */
#define MSAR_0_BOOT_MODE_OFFS			5
#define MSAR_0_BOOT_MODE_MASK			(0xF << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_NOR_FLASH			(0x0 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_NAND_NEW			(0x1 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_UART			(0x2 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_SPI_FLASH			(0x3 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_PEX				(0x4 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_SATA			(0x5 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_NAND_LEGACY			(0x6 << MSAR_0_BOOT_MODE_OFFS)
#define MSAR_0_BOOT_PROMPT			(0x7 << MSAR_0_BOOT_MODE_OFFS)

/* NAND page size */
#define MSAR_0_NAND_PAGE_SZ_OFFS		11
#define MSAR_0_NAND_PAGE_SZ_MASK		(0x3 << MSAR_0_NAND_PAGE_SZ_OFFS)
#define MSAR_0_NAND_PAGE_SZ_512B		(0x0 << MSAR_0_NAND_PAGE_SZ_OFFS)
#define MSAR_0_NAND_PAGE_SZ_2KB			(0x1 << MSAR_0_NAND_PAGE_SZ_OFFS)
#define MSAR_0_NAND_PAGE_SZ_4KB			(0x2 << MSAR_0_NAND_PAGE_SZ_OFFS)
#define MSAR_0_NAND_PAGE_SZ_8KB			(0x3 << MSAR_0_NAND_PAGE_SZ_OFFS)

/* NAND ECC */
#define MSAR_0_NAND_ECC_OFFS			14
#define MSAR_0_NAND_ECC_MASK			(0x3 << MSAR_0_NAND_ECC_OFFS)
#define MSAR_0_NAND_ECC_4BIT			(0x0 << MSAR_0_NAND_ECC_OFFS)
#define MSAR_0_NAND_ECC_8BIT			(0x1 << MSAR_0_NAND_ECC_OFFS)
#define MSAR_0_NAND_ECC_12BIT			(0x2 << MSAR_0_NAND_ECC_OFFS)
#define MSAR_0_NAND_ECC_16BIT			(0x3 << MSAR_0_NAND_ECC_OFFS)

/* TCLK frequency selector (two bit field) */
#define MSAR_0_TCLK0_OFFS			28
#define MSAR_0_TCLK0_MASK			(0x1 << MSAR_0_TCLK0_OFFS)
#define MSAR_1_TCLK1_OFFS			8
#define MSAR_1_TCLK1_MASK			(0x1 << MSAR_1_TCLK1_OFFS)

/**************/
/* Device Bus */
/**************/
#define DEV_BOOTSCN_READ_PARAMS_REG		0x10000

#define DBSCN_RP_DEV_WIDTH_OFFS			30
#define DBSCN_RP_DEV_WIDTH_MASK			(0x3UL << DBSCN_RP_DEV_WIDTH_OFFS)

#define DEV_BOOTSCN_WRITE_PARAMS_REG		0x10004


/**********/
/* TIMERS */
/**********/
#define TIMERS_CTRL_REG				0x20300
#define TIMER0_ENABLE_OFFS			0x0
#define TIMER0_ENABLE_MASK			(0x1 << TIMER0_ENABLE_OFFS)
#define TIMER0_AUTO_OFFS			0x1
#define TIMER0_AUTO_MASK			(0x1 << TIMER0_ENABLE_OFFS)

#define TIMER0_RELOAD_REG			0x20310
#define TIMER0_VALUE_REG			0x20314

/*******/
/* PEX */
/*******/
#define CPU_CTRL_STATUS_REG			0x20104
#define PEX_LINK_DISABLE_OFFS			0
#define PEX_LINK_DISABLE_MASK			(0x1 << PEX_LINK_DISABLE_OFFS)

#define PEX_CMND_STATUS_REG			0x40004
#define PEX_IO_SPACE_ENABLE_OFFS		0
#define PEX_IO_SPACE_ENABLE_MASK		(0x1 << PEX_IO_SPACE_ENABLE_OFFS)
#define PEX_MEM_SPACE_ENABLE_OFFS		1
#define PEX_MEM_SPACE_ENABLE_MASK		(0x1 << PEX_MEM_SPACE_ENABLE_OFFS)
#define PEX_MASTER_ENABLE_OFFS			2
#define PEX_MASTER_ENABLE_MASK			(0x1 << PEX_MASTER_ENABLE_OFFS)

#define PEX_PHY_INDIRECT_ACC_REG		0x41b00

#define PEX_CONTROL_REG				0x41a00
#define PEX_CONF_ROOT_COMPLEX_OFFS		1
#define PEX_CONF_ROOT_COMPLEX_MASK		(0x1 << PEX_CONF_ROOT_COMPLEX_OFFS)
#define PEX_CONF_MAX_OUTSTANDING_OFFS		8
#define PEX_CONF_MAX_OUTSTANDING_MASK		(0x3 << PEX_CONF_MAX_OUTSTANDING_OFFS)
#define PEX_CONF_MAX_OUTSTANDING_ROOT_CMPLX	(0x0 << PEX_CONF_MAX_OUTSTANDING_OFFS)
#define PEX_CONF_MAX_OUTSTANDING_END_POINT	(0x2 << PEX_CONF_MAX_OUTSTANDING_OFFS)

#define PEX_FLOW_CTRL_REG			0x41A20
#define PEX_PSTD_HDR_FC_INIT_VAL_OFFS		0
#define PEX_PSTD_HDR_FC_INIT_VAL_MASK		(0xFF << PEX_PSTD_HDR_FC_INIT_VAL_OFFS)
#define PEX_PSTD_HDR_FC_INIT_VAL_ROOT_CMPLX	(0x04 << PEX_PSTD_HDR_FC_INIT_VAL_OFFS)
#define PEX_PSTD_HDR_FC_INIT_VAL_END_POINT	(0x01 << PEX_PSTD_HDR_FC_INIT_VAL_OFFS)

#define PEX_TL_CTRL_REG				0x41AB0
#define PEX_TL_CTRL_CMP_BUFF_NUM_OFFS		8
#define PEX_TL_CTRL_CMP_BUFF_NUM_MASK		(0xF << PEX_TL_CTRL_CMP_BUFF_NUM_OFFS)
#define PEX_TL_CTRL_CMP_BUFF_NUM_ROOT_CMPLX	(0x4 << PEX_TL_CTRL_CMP_BUFF_NUM_OFFS)
#define PEX_TL_CTRL_CMP_BUFF_NUM_END_POINT	(0x1 << PEX_TL_CTRL_CMP_BUFF_NUM_OFFS)
#if 0 /* PEX_DBG_CTRL_REG redefined for accepting unit as parameter */
#define PEX_DBG_CTRL_REG			0x41A60
#define PEX_MSK_SOFT_RST_OFFS			12
#define PEX_MSK_SOFT_RST_MASK			(0x1 << PEX_MSK_SOFT_RST_OFFS)
#define PEX_SOFT_RST_REGFILE_RST_OFFS		13
#define PEX_SOFT_RST_REGFILE_RST_MASK		(0x1 << PEX_SOFT_RST_REGFILE_RST_OFFS)
#define PEX_LINK_DIS_REGFILE_RST_OFFS		14
#define PEX_LINK_DIS_REGFILE_RST_MASK		(0x1 << PEX_LINK_DIS_REGFILE_RST_OFFS)
#define PEX_MASK_LINK_DIS_OFFS			15
#define PEX_MASK_LINK_DIS_MASK			(0x1 << PEX_MASK_LINK_DIS_OFFS)
#define PEX_MSK_LNK_FAIL_OFFS			16
#define PEX_MSK_LNK_FAIL_MASK			(0x1 << PEX_MSK_LNK_FAIL_OFFS)
#define PEX_MSK_HOT_RST_OFFS			17
#define PEX_MSK_HOT_RST_MASK			(0x1 << PEX_MSK_HOT_RST_OFFS)
#define PEX_DIS_TL_FLUSH_OFFS			18
#define PEX_DIS_TL_FLUSH_MASK			(0x1 << PEX_DIS_TL_FLUSH_OFFS)
#define PEX_DIS_LF_REG_RST_OFFS			19
#define PEX_DIS_LF_REG_RST_MASK			(0x1 << PEX_DIS_LF_REG_RST_OFFS)
#define PEX_DIS_REG_RST_HOT_RST_OFFS		21
#define PEX_DIS_REG_RST_HOT_RST_MASK		(0x1 << PEX_DIS_REG_RST_HOT_RST_OFFS)
#endif
#define PEX_CAPABILITY_REG			0x40060
#define	PEX_DEVICE_TYPE_OFFS			20
#define PEX_DEVICE_TYPE_MASK			(0xF << PEX_DEVICE_TYPE_OFFS)
#define PEX_DEVICE_TYPE_ROOT_COMPLEX		(0x4 << PEX_DEVICE_TYPE_OFFS)
#define PEX_DEVICE_TYPE_END_POINT		(0x1 << PEX_DEVICE_TYPE_OFFS)

/*******/
/* SPI */
/*******/

#define SPI_IF_CTRL_REG				0x10600

#define SPI_IF_CONFIG_REG			0x10604
#define SPI_ADDRESS_SIZE_OFFS			8
#define SPI_ADDRESS_SIZE_MASK			(0x3 << SPI_ADDRESS_SIZE_OFFS)
#define SPI_ADDRESS_3_CYCLES			(0x2 << SPI_ADDRESS_SIZE_OFFS)
#define SPI_ADDRESS_4_CYCLES			(0x3 << SPI_ADDRESS_SIZE_OFFS)

/********/
/* SATA */
/********/
#define SATA_REGS_BASE                  	0x80000

/* reserved areas on the DRAM*/
#define MV_SATA_EDMA_REQUEST_BUFFER_START	_8K
#define MV_SATA_EDMA_REQUEST_BUFFER_SIZE	32 /* the size of single CRQB*/
#define MV_SATA_EDMA_REQUEST_BUFFER_END		((MV_SATA_EDMA_REQUEST_BUFFER_START) + (MV_SATA_EDMA_REQUEST_BUFFER_SIZE))
#define MV_SATA_EDMA_RESPONSE_BUFFER_START	MV_SATA_EDMA_REQUEST_BUFFER_END
#define MV_SATA_EDMA_RESPONSE_BUFFER_SIZE	8 /* the size of single CRPB*/

/********/
/* UART */
/********/
#define UART0_REG_OFFSET			0x12000
#define UART1_REG_OFFSET                        0x12100

/********/
/* GPIO */
/********/
#define GPIO_DATA_OUT_REG			0x18100
#define GPIO_TEST_PIN_OFFS			7
#define GPIO_TEST_PIN_MASK			(0x1 << GPIO_TEST_PIN_OFFS)

/*******/
/* PMU */
/*******/
/*	*/
/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1		*/
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0		*/
/* +-----------+-+-+---------+-+-+-+-------------------------+-+-+-+		*/
/* |  RESERVED | | |RESERVED | | | |         RESERVED        | | | |		*/
/* +-----------+-+-+---------+-+-+-+-------------------------+-+-+-+		*/
/*              L H           D D P                           D D P		*/
/*              T T           V F W                           V F W		*/
/*              H H           S S R                           S S R		*/
/*              R R                                                		*/
/*                            M M M                           D D U		*/
/*              M M           A A A                           O O P		*/
/*              S S           S S S                           N N 		*/
/*              K K           K K K                           E E 		*/
/*		*/
#define PMU_EVENT_STATUS_L2C_REG		0x22020

/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1		*/
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0		*/
/* +----------+-+-+---------+-+-+-+-----------+-+-+---------+-+-+-+		*/
/* |  RESERVED | | |RESERVED | | | |  RESERVED | | | RESERVED| | | |		*/
/* +-----------+-+-+---------+-+-+-+-----------+-+-+---------+-+-+-+		*/
/*              L H           D D P             L H           D D P		*/
/*              T T           V F W             T T           V F W		*/
/*              H H           S S R             H H           S S R		*/
/*              R R                             R R                		*/
/*                            M M M             S S           D D U		*/
/*              M M           A A A             H H           O O P		*/
/*              S S           S S S             L L           N N 		*/
/*              K K           K K K             D D           E E 		*/
/*		*/
#define PMU_EVENT_STATUS_REG(CPUID)		(0x22120 + ((CPUID) * 0x100))

#define PMU_RESUME_TYPE_OFFS			0
#define PMU_RESUME_TYPE_MASK			(0x1 << PMU_RESUME_TYPE_OFFS)
#define PMU_RESUME_TYPE_NONE			(0x0 << PMU_RESUME_TYPE_OFFS)
#define PMU_RESUME_TYPE_STBY			(0x1 << PMU_RESUME_TYPE_OFFS)

/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1		*/
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0		*/
/* +---------------------------------------------------------------+		*/
/* |            RESUME_ADDR (BOOT ADDRESS REDIRECT)                |		*/
/* +---------------------------------------------------------------+		*/
#define PMU_RESUME_ADDR_REG(CPUID)		(0x22124+ ((CPUID) * 0x100))

/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0		*/
/* +---------------------------------------------------------------+		*/
/* |                ADDRESS OF DESCRIPTORS ARRAY                   |		*/
/* +---------------------------------------------------------------+		*/
/*		*/
#define PMU_RESUME0_CTRL_REG			0x20980
#define PMU_RESUME1_CTRL_REG			0x20988

/*  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1		*/
/*  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0		*/
/* +---------------------------------+---------------------+-------+		*/
/* |         CONFIGS_US_DLY          |    CONFIGS_CNT      |  TYP  |		*/
/* +---------------------------------|---------------------+-------+		*/
/*		*/
#define PMU_RESUME_CFG_TYP_OFFS			0
#define PMU_RESUME_CFG_TYP_MASK			(0xF << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_NONE			(0x0 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_ADDR_VAL_32B		(0x1 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_ADDR_VAL_16B		(0x2 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_ADDR_VAL_8B		(0x3 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_ADDR_MSK_VAL		(0x4 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_BIT_CLR		(0x5 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_BIT_SET		(0x6 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_POLL			(0x7 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_DELAY		(0x8 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_DDR3_WL		(0x9 << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_TYP_DDR3_WL_SET		(0xA << PMU_RESUME_CFG_TYP_OFFS)
#define PMU_RESUME_CFG_CNT_OFFS			4
#define PMU_RESUME_CFG_CNT_MASK			(0x7FF << PMU_RESUME_CFG_CNT_OFFS)
#define PMU_RESUME_CFG_US_DLY_OFFS		15
#define PMU_RESUME_CFG_US_DLY_MASK		(0x1FFF << PMU_RESUME_CFG_US_DLY_OFFS)

/*******/
/* DDR */
/*******/
#define SDRAM_CTRL_REG				0x1480
#define SDRAM_INIT_EN_OFFS			0
#define SDRAM_INIT_EN_MASK			(0x1 << SDRAM_INIT_EN_OFFS)

/*******/
/* I2C */
/*******/
#if 0
#define TWSI_DATA_REG				0x11004
#define TWSI_DATA_COMMAND_OFFS			0x0
#define TWSI_DATA_COMMAND_MASK 			(0x1 << TWSI_DATA_COMMAND_OFFS)
#define TWSI_DATA_ADDR_7BIT_ADDR		0xA0 /* device address 0 */

#define TWSI_CONTROL_REG				0x11008
#define TWSI_CONTROL_ACK            		(1 << 2)
#define TWSI_CONTROL_INT_FLAG_SET   		(1 << 3)
#define TWSI_CONTROL_STOP_BIT    		(1 << 4)
#define TWSI_CONTROL_START_BIT 			(1 << 5)
#define TWSI_CONTROL_ENA     			(1 << 6)
#define TWSI_CONTROL_INT_ENA    		(1 << 7)

#define TWSI_STATUS_BAUDE_RATE_REG		0x1100c
#define TWSI_BAUD_RATE_DEF_200MHZ		0x2C	/* [6:3]M=5, [2:0]N=4 */

#define TWSI_START_CON_TRA			0x08
#define TWSI_REPEATED_START_CON_TRA		0x10
#define TWSI_AD_PLS_WR_BIT_TRA_ACK_REC		0x18
#define TWSI_M_TRAN_DATA_BYTE_ACK_REC 		0x28
#define TWSI_AD_PLS_RD_BIT_TRA_ACK_REC		0x40
#define TWSI_M_REC_RD_DATA_ACK_TRA		0x50
#define TWSI_M_REC_RD_DATA_ACK_NOT_TRA		0x58
#define TWSI_NO_REL_STS_INT_FLAG_IS_KEPT_0	0xF8

#define TWSI_SOFT_RESET_REG 			0x1101c

/*#define TWSI_CPU_MAIN_INT_CAUSE_REG		0x20200		*/
/*#define TWSI_CPU_MAIN_INT_TWSI_OFFS		29 */ /*5*/

#define TWSI_CPU_MAIN_INT_TWSI_BIT		(1 << TWSI_CPU_MAIN_INT_TWSI_OFFS)

#define CPU_INT_SOURCE_CONTROL_ENA_OFFS		28
#define CPU_INT_SOURCE_CONTROL_ENA_MASK		(1 << CPU_INT_SOURCE_CONTROL_ENA_OFFS)
#define CPU_MAIN_INT_TWSI_OFFS(i)			(2 + i)
#define CPU_MAIN_INT_CAUSE_TWSI(i)			(31 + i)
#define MV_CPUIF_SHARED_REGS_BASE			(MV_MBUS_REGS_OFFSET)
#define CPU_INT_SOURCE_CONTROL_REG(i)		(MV_CPUIF_SHARED_REGS_BASE + 0xB00 + (i * 0x4))


/* TWSI */

/*
** Specific definition for Main CPU interrupt cause register.
** Needed for TWSI operation completion monitoring.
*/
/*#define MV_TWSI_CPU_MAIN_INT_CAUSE(chNum)			*/


/*#define MV_TWSI_SLAVE_REGS_OFFSET(chanNum)	(0x11000 + (chanNum * 0x100))		*/
/*
** Base address for TWSI registers.
*/
/*#define MV_TWSI_SLAVE_REGS_BASE(unit) 		(MV_TWSI_SLAVE_REGS_OFFSET(unit))		*/

/*
** Specific definition for Main CPU interrupt cause register.
** Needed for TWSI operation completion monitoring.
*/
/*#define MV_TWSI_CPU_MAIN_INT_CAUSE(chNum)	TWSI_CPU_MAIN_INT_CAUSE_REG		*/
/*
#define TWSI_CONTROL_REG(chanNum)			(MV_TWSI_SLAVE_REGS_BASE(chanNum) + 0x08)
#define TWSI_CONTROL_ACK            		BIT2
#define TWSI_CONTROL_INT_FLAG_SET   		BIT3
#define TWSI_CONTROL_STOP_BIT    			BIT4
#define TWSI_CONTROL_START_BIT 				BIT5
#define TWSI_CONTROL_ENA     				BIT6
#define TWSI_CONTROL_INT_ENA    			BIT7
*/

#define TWSI_DATA_ADDR_MASK		0x7
#define TWSI_DATA_ADDR_OFFS		1

#define MV_CPUIF_REGS_OFFSET(cpu)		(0x21000 + (cpu) * 0x100)
#define MV_CPUIF_REGS_BASE(cpu)				(MV_CPUIF_REGS_OFFSET(cpu))
#define CPU_MAIN_INT_CAUSE_REG(vec, cpu)	(MV_CPUIF_REGS_BASE(cpu) + 0x880 + (vec * 0x4))
#define CPU_MAIN_INT_TWSI_OFFS(i)			(2 + i)
#define CPU_MAIN_INT_CAUSE_TWSI(i)			(31 + i)


#define TWSI_CPU_MAIN_INT_CAUSE_REG		CPU_MAIN_INT_CAUSE_REG(1, 0)
 /*whoAmI()) */
#define TWSI0_CPU_MAIN_INT_BIT(ch)		((ch) + 3)

#endif


#define MV_MBUS_REGS_OFFSET					(0x20000)
#define MAX_AHB_TO_MBUS_REMAP_WINS			8
#define AHB_TO_MBUS_WIN_CTRL_REG(winNum)	(((winNum) < MAX_AHB_TO_MBUS_REMAP_WINS) ? \
											(MV_MBUS_REGS_OFFSET + (winNum) * 0x10) : \
                                            (MV_MBUS_REGS_OFFSET + 0x90 + ((winNum) - 8) * 0x08))

#define ATMWCR_WIN_ENABLE                   1
#define ATMWCR_WIN_TARGET_OFFS              4
#define ATMWCR_WIN_TARGET_MASK              (0xf << ATMWCR_WIN_TARGET_OFFS)
#define ATMWCR_WIN_ATTR_OFFS                8
#define ATMWCR_WIN_ATTR_MASK                (0xff << ATMWCR_WIN_ATTR_OFFS)
#define ATMWCR_WIN_SIZE_OFFS                16
#define ATMWCR_WIN_SIZE_MASK                (0xffff << ATMWCR_WIN_SIZE_OFFS)
#define ATMWCR_WIN_SIZE_ALIGNMENT           0x10000

/* Window-X Base Register */
#define AHB_TO_MBUS_WIN_BASE_REG(winNum)	(((winNum) < MAX_AHB_TO_MBUS_REMAP_WINS) ? \
                                            (MV_MBUS_REGS_OFFSET + 0x4 + (winNum) * 0x10) : \
                                            (MV_MBUS_REGS_OFFSET + 0x94 + ((winNum) - 8) * 0x08))
/* Window-X Base Register */
#define AHB_TO_MBUS_WIN_REMAP_LOW_REG(winNum)	((winNum < MAX_AHB_TO_MBUS_REMAP_WINS) ? \
												(MV_MBUS_REGS_OFFSET + 0x8 + (winNum) * 0x10) : \
												 (0))
/* Window-X Remap Hi Register */
#define AHB_TO_MBUS_WIN_REMAP_HIGH_REG(winNum)	((winNum < MAX_AHB_TO_MBUS_REMAP_WINS) ? \
												 (MV_MBUS_REGS_OFFSET + 0xC + (winNum) * 0x10) : \
												 (0))

/************/
/* Security */
/************/
#ifdef MV_EFUSE_IN_RAM
	#define SEC_AES_KEY_REG			(RAM_TOP + BOOT_HEAP_OFFSET - 16)
	#define SEC_RSA_KEY_REG			(SEC_AES_KEY_REG - 32)
	#define SEC_BOX_ID_REG			(SEC_RSA_KEY_REG - 4)
	#define SEC_BOOT_VIS_CTRL_REG		(SEC_BOX_ID_REG - 4)
	#define SEC_BOOT_CTRL_REG		(SEC_BOOT_VIS_CTRL_REG - 4)
#else
	#define SEC_AES_KEY_REG			0x10080
	#define SEC_RSA_KEY_REG			0x10020
	#define SEC_BOX_ID_REG			0x10014
	#define SEC_BOOT_VIS_CTRL_REG		0x100B0
	#define SEC_BOOT_CTRL_REG		0x10010
#endif

#define SEC_BOOT_MODE_OFFS			0
#define SEC_BOOT_MODE_MASK			(0x1 << SEC_BOOT_MODE_OFFS)
#define SEC_JTAG_DSBL_OFFS			1
#define SEC_JTAG_DSBL_MASK			(0x1 << SEC_JTAG_DSBL_OFFS)
#define SEC_BOOT_DEV_OFFS			4
#define SEC_BOOT_DEV_MASK			(0xFF << SEC_BOOT_DEV_OFFS)
#define SEC_FLASH_ID_OFFS			16
#define SEC_FLASH_ID_MASK			(0xFFFFUL << SEC_FLASH_ID_OFFS)

#define EFUSE_BOOT_SRC_SPI			(0x1 << 0)
#define EFUSE_BOOT_SRC_NAND			(0x1 << 1)
#define EFUSE_BOOT_SRC_SATA			(0x1 << 2)
#define EFUSE_BOOT_SRC_NOR			(0x1 << 3)


#ifdef MV_EFUSE_IN_RAM
	#define EFUSE_GET_AES_KEY_WORD(x)	(MV_MEMIO_LE32_READ(SEC_AES_KEY_REG + 4 * (x)))
	#define EFUSE_GET_RSA_SHA_WORD(x)	(MV_MEMIO_LE32_READ(SEC_RSA_KEY_REG + 4 * (x)))
	#define EFUSE_GET_BOX_ID		(MV_MEMIO_LE32_READ(SEC_BOX_ID_REG))
	#define EFUSE_GET_FLASH_ID		((MV_MEMIO_LE32_READ(SEC_BOOT_CTRL_REG) \
			& SEC_FLASH_ID_MASK)  >> SEC_FLASH_ID_OFFS)
	#define EFUSE_GET_SECURE_BOOT		((MV_MEMIO_LE32_READ(SEC_BOOT_CTRL_REG) \
			& SEC_BOOT_MODE_MASK)  >> SEC_BOOT_MODE_OFFS)
	#define EFUSE_GET_JTAG_DSBL		((MV_MEMIO_LE32_READ(SEC_BOOT_CTRL_REG) \
			& SEC_JTAG_DSBL_MASK)  >> SEC_JTAG_DSBL_OFFS)
	#define EFUSE_GET_BOOT_SOURCE		((MV_MEMIO_LE32_READ(SEC_BOOT_CTRL_REG) \
			& SEC_BOOT_DEV_MASK)  >> SEC_BOOT_DEV_OFFS)
#else
	#define EFUSE_GET_AES_KEY_WORD(x)	(MV_REG_READ(SEC_AES_KEY_REG + 4 * (x)))
	#define EFUSE_GET_RSA_SHA_WORD(x)	(MV_REG_READ(SEC_RSA_KEY_REG + 4 * (x)))
	#define EFUSE_GET_BOX_ID		(MV_REG_READ(SEC_BOX_ID_REG))
	#define EFUSE_GET_FLASH_ID		((MV_REG_READ(SEC_BOOT_CTRL_REG) \
			& SEC_FLASH_ID_MASK)  >> SEC_FLASH_ID_OFFS)
	#define EFUSE_GET_SECURE_BOOT		((MV_REG_READ(SEC_BOOT_CTRL_REG) \
			& SEC_BOOT_MODE_MASK)  >> SEC_BOOT_MODE_OFFS)
	#define EFUSE_GET_JTAG_DELAY		((MV_REG_READ(SEC_BOOT_CTRL_REG) \
			& SEC_JTAG_DSBL_MASK)  >> SEC_JTAG_DSBL_OFFS)
	#define EFUSE_GET_BOOT_SOURCE		((MV_REG_READ(SEC_BOOT_CTRL_REG) \
			& SEC_BOOT_DEV_MASK)  >> SEC_BOOT_DEV_OFFS)
#endif

#endif /* _SOC_SPEC_H */
