blob: fafc15c3eff1bf2032f02f8466ecf79cf47081e6 [file] [log] [blame]
/*******************************************************************************
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 */