| /******************************************************************************* |
| 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 __INCmvCpuIfRegsh |
| #define __INCmvCpuIfRegsh |
| |
| /****************************************/ |
| /* ARM Control and Status Registers Map */ |
| /****************************************/ |
| |
| #define CPU_CONFIG_REG 0x20100 |
| #define CPU_CTRL_STAT_REG 0x20104 |
| #define CPU_RSTOUTN_MASK_REG 0x20108 |
| #define CPU_SYS_SOFT_RST_REG 0x2010C |
| #define CPU_AHB_MBUS_CAUSE_INT_REG 0x20110 |
| #define CPU_AHB_MBUS_MASK_INT_REG 0x20114 |
| #define CPU_FTDLL_CONFIG_REG 0x20120 |
| #define CPU_L2_CONFIG_REG 0x20128 |
| |
| |
| |
| /* ARM Configuration register */ |
| /* CPU_CONFIG_REG (CCR) */ |
| |
| |
| /* Reset vector location */ |
| #define CCR_VEC_INIT_LOC_OFFS 1 |
| #define CCR_VEC_INIT_LOC_MASK BIT1 |
| /* reset at 0x00000000 */ |
| #define CCR_VEC_INIT_LOC_0000 (0 << CCR_VEC_INIT_LOC_OFFS) |
| /* reset at 0xFFFF0000 */ |
| #define CCR_VEC_INIT_LOC_FF00 (1 << CCR_VEC_INIT_LOC_OFFS) |
| |
| |
| #define CCR_AHB_ERROR_PROP_OFFS 2 |
| #define CCR_AHB_ERROR_PROP_MASK BIT2 |
| /* Erros are not propogated to AHB */ |
| #define CCR_AHB_ERROR_PROP_NO_INDICATE (0 << CCR_AHB_ERROR_PROP_OFFS) |
| /* Erros are propogated to AHB */ |
| #define CCR_AHB_ERROR_PROP_INDICATE (1 << CCR_AHB_ERROR_PROP_OFFS) |
| |
| |
| #define CCR_ENDIAN_INIT_OFFS 3 |
| #define CCR_ENDIAN_INIT_MASK BIT3 |
| #define CCR_ENDIAN_INIT_LITTLE (0 << CCR_ENDIAN_INIT_OFFS) |
| #define CCR_ENDIAN_INIT_BIG (1 << CCR_ENDIAN_INIT_OFFS) |
| |
| |
| #define CCR_INCR_EN_OFFS 4 |
| #define CCR_INCR_EN_MASK BIT4 |
| #define CCR_INCR_EN BIT4 |
| |
| |
| #define CCR_NCB_BLOCKING_OFFS 5 |
| #define CCR_NCB_BLOCKING_MASK (1 << CCR_NCB_BLOCKING_OFFS) |
| #define CCR_NCB_BLOCKING_NON (0 << CCR_NCB_BLOCKING_OFFS) |
| #define CCR_NCB_BLOCKING_EN (1 << CCR_NCB_BLOCKING_OFFS) |
| |
| #define CCR_CPU_2_MBUSL_TICK_DRV_OFFS 8 |
| #define CCR_CPU_2_MBUSL_TICK_DRV_MASK (0xF << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) |
| #define CCR_CPU_2_MBUSL_TICK_SMPL_OFFS 12 |
| #define CCR_CPU_2_MBUSL_TICK_SMPL_MASK (0xF << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS) |
| #define CCR_ICACH_PREF_BUF_ENABLE BIT16 |
| #define CCR_DCACH_PREF_BUF_ENABLE BIT17 |
| |
| /* Ratio options for CPU to DDR for 6281/6192/6190 */ |
| #define CPU_2_DDR_CLK_1x3 4 |
| #define CPU_2_DDR_CLK_1x4 6 |
| |
| /* Ratio options for CPU to DDR for 6281 only */ |
| #define CPU_2_DDR_CLK_2x9 7 |
| #define CPU_2_DDR_CLK_1x5 8 |
| #define CPU_2_DDR_CLK_1x6 9 |
| |
| /* Ratio options for CPU to DDR for 6180 only */ |
| #define CPU_2_DDR_CLK_1x3_1 0x5 |
| #define CPU_2_DDR_CLK_1x4_1 0x6 |
| |
| /* Default values for CPU to Mbus-L DDR Interface Tick Driver and */ |
| /* CPU to Mbus-L Tick Sample fields in CPU config register */ |
| |
| #define TICK_DRV_1x1 0 |
| #define TICK_DRV_1x2 0 |
| #define TICK_DRV_1x3 1 |
| #define TICK_DRV_1x4 2 |
| #define TICK_SMPL_1x1 0 |
| #define TICK_SMPL_1x2 1 |
| #define TICK_SMPL_1x3 0 |
| #define TICK_SMPL_1x4 0 |
| |
| #define CPU_2_MBUSL_DDR_CLK_1x2 \ |
| ((TICK_DRV_1x2 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ |
| (TICK_SMPL_1x2 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) |
| #define CPU_2_MBUSL_DDR_CLK_1x3 \ |
| ((TICK_DRV_1x3 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ |
| (TICK_SMPL_1x3 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) |
| #define CPU_2_MBUSL_DDR_CLK_1x4 \ |
| ((TICK_DRV_1x4 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ |
| (TICK_SMPL_1x4 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) |
| |
| /* ARM Control and Status register */ |
| /* CPU_CTRL_STAT_REG (CCSR) */ |
| |
| |
| /* |
| This is used to block PCI express\PCI from access Socrates/Feroceon GP |
| while ARM boot is still in progress |
| */ |
| |
| #define CCSR_PCI_ACCESS_OFFS 0 |
| #define CCSR_PCI_ACCESS_MASK BIT0 |
| #define CCSR_PCI_ACCESS_ENABLE (0 << CCSR_PCI_ACCESS_OFFS) |
| #define CCSR_PCI_ACCESS_DISBALE (1 << CCSR_PCI_ACCESS_OFFS) |
| |
| #define CCSR_ARM_RESET BIT1 |
| #define CCSR_SELF_INT BIT2 |
| #define CCSR_BIG_ENDIAN BIT15 |
| |
| |
| /* RSTOUTn Mask Register */ |
| /* CPU_RSTOUTN_MASK_REG (CRMR) */ |
| |
| #define CRMR_PEX_RST_OUT_OFFS 0 |
| #define CRMR_PEX_RST_OUT_MASK BIT0 |
| #define CRMR_PEX_RST_OUT_ENABLE (1 << CRMR_PEX_RST_OUT_OFFS) |
| #define CRMR_PEX_RST_OUT_DISABLE (0 << CRMR_PEX_RST_OUT_OFFS) |
| |
| #define CRMR_WD_RST_OUT_OFFS 1 |
| #define CRMR_WD_RST_OUT_MASK BIT1 |
| #define CRMR_WD_RST_OUT_ENABLE (1 << CRMR_WD_RST_OUT_OFFS) |
| #define CRMR_WD_RST_OUT_DISBALE (0 << CRMR_WD_RST_OUT_OFFS) |
| |
| #define CRMR_SOFT_RST_OUT_OFFS 2 |
| #define CRMR_SOFT_RST_OUT_MASK BIT2 |
| #define CRMR_SOFT_RST_OUT_ENABLE (1 << CRMR_SOFT_RST_OUT_OFFS) |
| #define CRMR_SOFT_RST_OUT_DISBALE (0 << CRMR_SOFT_RST_OUT_OFFS) |
| |
| /* System Software Reset Register */ |
| /* CPU_SYS_SOFT_RST_REG (CSSRR) */ |
| |
| #define CSSRR_SYSTEM_SOFT_RST BIT0 |
| |
| /* AHB to Mbus Bridge Interrupt Cause Register*/ |
| /* CPU_AHB_MBUS_CAUSE_INT_REG (CAMCIR) */ |
| |
| #define CAMCIR_ARM_SELF_INT BIT0 |
| #define CAMCIR_ARM_TIMER0_INT_REQ BIT1 |
| #define CAMCIR_ARM_TIMER1_INT_REQ BIT2 |
| #define CAMCIR_ARM_WD_TIMER_INT_REQ BIT3 |
| |
| |
| /* AHB to Mbus Bridge Interrupt Mask Register*/ |
| /* CPU_AHB_MBUS_MASK_INT_REG (CAMMIR) */ |
| |
| #define CAMCIR_ARM_SELF_INT_OFFS 0 |
| #define CAMCIR_ARM_SELF_INT_MASK BIT0 |
| #define CAMCIR_ARM_SELF_INT_EN (1 << CAMCIR_ARM_SELF_INT_OFFS) |
| #define CAMCIR_ARM_SELF_INT_DIS (0 << CAMCIR_ARM_SELF_INT_OFFS) |
| |
| |
| #define CAMCIR_ARM_TIMER0_INT_REQ_OFFS 1 |
| #define CAMCIR_ARM_TIMER0_INT_REQ_MASK BIT1 |
| #define CAMCIR_ARM_TIMER0_INT_REQ_EN (1 << CAMCIR_ARM_TIMER0_INT_REQ_OFFS) |
| #define CAMCIR_ARM_TIMER0_INT_REQ_DIS (0 << CAMCIR_ARM_TIMER0_INT_REQ_OFFS) |
| |
| #define CAMCIR_ARM_TIMER1_INT_REQ_OFFS 2 |
| #define CAMCIR_ARM_TIMER1_INT_REQ_MASK BIT2 |
| #define CAMCIR_ARM_TIMER1_INT_REQ_EN (1 << CAMCIR_ARM_TIMER1_INT_REQ_OFFS) |
| #define CAMCIR_ARM_TIMER1_INT_REQ_DIS (0 << CAMCIR_ARM_TIMER1_INT_REQ_OFFS) |
| |
| #define CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS 3 |
| #define CAMCIR_ARM_WD_TIMER_INT_REQ_MASK BIT3 |
| #define CAMCIR_ARM_WD_TIMER_INT_REQ_EN (1 << CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS) |
| #define CAMCIR_ARM_WD_TIMER_INT_REQ_DIS (0 << CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS) |
| |
| /* CPU FTDLL Config register (CFCR) fields */ |
| #define CFCR_FTDLL_ICACHE_TAG_OFFS 0 |
| #define CFCR_FTDLL_ICACHE_TAG_MASK (0x7F << CFCR_FTDLL_ICACHE_TAG_OFFS) |
| #define CFCR_FTDLL_DCACHE_TAG_OFFS 8 |
| #define CFCR_FTDLL_DCACHE_TAG_MASK (0x7F << CFCR_FTDLL_DCACHE_TAG_OFFS) |
| #define CFCR_FTDLL_OVERWRITE_ENABLE (1 << 15) |
| /* For Orion 2 D2 only */ |
| #define CFCR_MRVL_CPU_ID_OFFS 16 |
| #define CFCR_MRVL_CPU_ID_MASK (0x1 << CFCR_MRVL_CPU_ID_OFFS) |
| #define CFCR_ARM_CPU_ID (0x0 << CFCR_MRVL_CPU_ID_OFFS) |
| #define CFCR_MRVL_CPU_ID (0x1 << CFCR_MRVL_CPU_ID_OFFS) |
| #define CFCR_VFP_SUB_ARC_NUM_OFFS 7 |
| #define CFCR_VFP_SUB_ARC_NUM_MASK (0x1 << CFCR_VFP_SUB_ARC_NUM_OFFS) |
| #define CFCR_VFP_SUB_ARC_NUM_1 (0x0 << CFCR_VFP_SUB_ARC_NUM_OFFS) |
| #define CFCR_VFP_SUB_ARC_NUM_2 (0x1 << CFCR_VFP_SUB_ARC_NUM_OFFS) |
| |
| /* CPU_L2_CONFIG_REG fields */ |
| #ifdef MV_CPU_LE |
| #define CL2CR_L2_ECC_EN_OFFS 2 |
| #define CL2CR_L2_WT_MODE_OFFS 4 |
| #else |
| #define CL2CR_L2_ECC_EN_OFFS 26 |
| #define CL2CR_L2_WT_MODE_OFFS 28 |
| #endif |
| |
| #define CL2CR_L2_ECC_EN_MASK (1 << CL2CR_L2_ECC_EN_OFFS) |
| #define CL2CR_L2_WT_MODE_MASK (1 << CL2CR_L2_WT_MODE_OFFS) |
| |
| /*******************************************/ |
| /* Main Interrupt Controller Registers Map */ |
| /*******************************************/ |
| |
| #define CPU_MAIN_INT_CAUSE_REG 0x20200 |
| #define CPU_MAIN_IRQ_MASK_REG 0x20204 |
| #define CPU_MAIN_FIQ_MASK_REG 0x20208 |
| #define CPU_ENPOINT_MASK_REG 0x2020C |
| #define CPU_MAIN_INT_CAUSE_HIGH_REG 0x20210 |
| #define CPU_MAIN_IRQ_MASK_HIGH_REG 0x20214 |
| #define CPU_MAIN_FIQ_MASK_HIGH_REG 0x20218 |
| #define CPU_ENPOINT_MASK_HIGH_REG 0x2021C |
| |
| |
| /*******************************************/ |
| /* ARM Doorbell Registers Map */ |
| /*******************************************/ |
| |
| #define CPU_HOST_TO_ARM_DRBL_REG 0x20400 |
| #define CPU_HOST_TO_ARM_MASK_REG 0x20404 |
| #define CPU_ARM_TO_HOST_DRBL_REG 0x20408 |
| #define CPU_ARM_TO_HOST_MASK_REG 0x2040C |
| |
| |
| |
| /* CPU control register map */ |
| /* Set bits means value is about to change according to new value */ |
| #define CPU_CONFIG_DEFAULT_MASK (CCR_VEC_INIT_LOC_MASK | CCR_AHB_ERROR_PROP_MASK) |
| |
| #define CPU_CONFIG_DEFAULT (CCR_VEC_INIT_LOC_FF00) |
| |
| /* CPU Control and status defaults */ |
| #define CPU_CTRL_STAT_DEFAULT_MASK (CCSR_PCI_ACCESS_MASK) |
| |
| |
| #define CPU_CTRL_STAT_DEFAULT (CCSR_PCI_ACCESS_ENABLE) |
| |
| #endif /* __INCmvCpuIfRegsh */ |
| |