blob: b45f50c83fae68fd012d26244bb1ab39d1f57fdb [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (C) 2015 Freescale Semiconductor, Inc.
* Copyright (c) 2016, Wind River Systems.
* All rights reserved.
* Copyright 2017-2019 NXP
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. 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.
*
* 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 HOLDER 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 __IMX6_H__
#define __IMX6_H__
#include <registers/imx6-crm.h>
#define UART1_BASE 0x2020000
#define IOMUXC_BASE 0x020E0000
#define IOMUXC_SIZE 0x4000
#define IOMUXC_GPR_BASE 0x020E4000
#define SRC_BASE 0x020D8000
#define SRC_SIZE 0x4000
#define CCM_BASE 0x020C4000
#define CCM_SIZE 0x4000
#define ANATOP_BASE 0x020C8000
#define ANATOP_SIZE 0x1000
#define SNVS_BASE 0x020CC000
#define GPC_BASE 0x020DC000
#define GPC_SIZE 0x4000
#define WDOG_BASE 0x020BC000
#define CSU_BASE 0x021C0000
#define SEMA4_BASE 0x02290000
#define SEMA4_SIZE 0x4000
#define MMDC_P0_BASE 0x021B0000
#define MMDC_P0_SIZE 0x4000
#define MMDC_P1_BASE 0x021B4000
#define MMDC_P1_SIZE 0x4000
#define TZASC_BASE 0x21D0000
#define TZASC2_BASE 0x21D4000
#define UART2_BASE 0x021E8000
#define UART3_BASE 0x021EC000
#define UART4_BASE 0x021F0000
#define UART5_BASE 0x021F4000
#define AIPS1_BASE 0x02000000
#define AIPS1_SIZE 0x100000
#define AIPS2_BASE 0x02100000
#define AIPS2_SIZE 0x100000
#define AIPS3_BASE 0x02200000
#define AIPS3_SIZE 0x100000
#define SCU_BASE 0x00A00000
#define PL310_BASE 0x00A02000
#define SRC_BASE 0x020D8000
#define IRAM_BASE 0x00900000
#define OCOTP_BASE 0x021BC000
#define GIC_BASE 0x00A00000
#define GICD_OFFSET 0x1000
#if defined(CFG_MX6UL) || defined(CFG_MX6ULL)
#define GICC_OFFSET 0x2000
#define UART6_BASE 0x021FC000
#define UART7_BASE 0x02018000
/* No CAAM on i.MX6ULL */
#define CAAM_BASE 0x02140000
#else
#define GICC_OFFSET 0x100
#define CAAM_BASE 0x02100000
#endif
#define GIC_CPU_BASE (GIC_BASE + GICC_OFFSET)
#define GIC_DIST_BASE (GIC_BASE + GICD_OFFSET)
/* Central Security Unit register values */
#define CSU_CSL_START 0x0
#define CSU_CSL_END 0xA0
#define CSU_ACCESS_ALL 0x00FF00FF
#define CSU_SETTING_LOCK 0x01000100
/* Used in suspend/resume and low power idle */
#define MX6Q_SRC_GPR1 0x20
#define MX6Q_SRC_GPR2 0x24
#define MX6Q_MMDC_MISC 0x18
#define MX6Q_MMDC_MAPSR 0x404
#define MX6Q_MMDC_MPDGCTRL0 0x83c
#define MX6Q_GPC_IMR1 0x08
#define MX6Q_GPC_IMR2 0x0c
#define MX6Q_GPC_IMR3 0x10
#define MX6Q_GPC_IMR4 0x14
#define MX6Q_CCM_CCR 0x0
#define MX6Q_ANATOP_CORE 0x140
#define IOMUXC_GPR9_OFFSET 0x24
#define IOMUXC_GPR10_OFFSET 0x28
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_OFFSET 5
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_MASK GENMASK_32(10, 5)
#define IOMUXC_GPR10_OCRAM_TZ_EN_OFFSET 4
#define IOMUXC_GPR10_OCRAM_TZ_EN_MASK GENMASK_32(4, 4)
#define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_OFFSET 20
#define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_MASK GENMASK_32(20, 20)
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_OFFSET 21
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_MASK GENMASK_32(26, 21)
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_OFFSET_6UL 11
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_MASK_6UL GENMASK_32(15, 11)
#define IOMUXC_GPR10_OCRAM_TZ_EN_OFFSET_6UL 10
#define IOMUXC_GPR10_OCRAM_TZ_EN_MASK_6UL GENMASK_32(10, 10)
#define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_OFFSET_6UL 26
#define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_MASK_6UL GENMASK_32(26, 26)
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_OFFSET_6UL (27)
#define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_MASK_6UL GENMASK_32(31, 27)
#ifdef CFG_MX6SL
#define DIGPROG_OFFSET 0x280
#else
#define DIGPROG_OFFSET 0x260
#endif
#endif /* __IMX6_H__ */