xref: /optee_os/core/arch/arm/plat-imx/registers/imx6.h (revision 3ef1e5ae2c3a7620cb8c1d4858b1d09fe13122a9)
12a128a33SClement Faure /* SPDX-License-Identifier: BSD-2-Clause */
22a128a33SClement Faure /*
32a128a33SClement Faure  * Copyright (C) 2015 Freescale Semiconductor, Inc.
42a128a33SClement Faure  * Copyright (c) 2016, Wind River Systems.
52a128a33SClement Faure  * All rights reserved.
693e678edSClement Faure  * Copyright 2017-2020 NXP
72a128a33SClement Faure  *
82a128a33SClement Faure  * Redistribution and use in source and binary forms, with or without
92a128a33SClement Faure  * modification, are permitted provided that the following conditions are met:
102a128a33SClement Faure  *
112a128a33SClement Faure  * 1. Redistributions of source code must retain the above copyright notice,
122a128a33SClement Faure  * this list of conditions and the following disclaimer.
132a128a33SClement Faure  *
142a128a33SClement Faure  * 2. Redistributions in binary form must reproduce the above copyright notice,
152a128a33SClement Faure  * this list of conditions and the following disclaimer in the documentation
162a128a33SClement Faure  * and/or other materials provided with the distribution.
172a128a33SClement Faure  *
182a128a33SClement Faure  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
192a128a33SClement Faure  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
202a128a33SClement Faure  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
212a128a33SClement Faure  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
222a128a33SClement Faure  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
232a128a33SClement Faure  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
242a128a33SClement Faure  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
252a128a33SClement Faure  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
262a128a33SClement Faure  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
272a128a33SClement Faure  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
282a128a33SClement Faure  * POSSIBILITY OF SUCH DAMAGE.
292a128a33SClement Faure  */
302a128a33SClement Faure #ifndef __IMX6_H__
312a128a33SClement Faure #define __IMX6_H__
322a128a33SClement Faure 
33e05236a9SClement Faure #include <registers/imx6-crm.h>
3493e678edSClement Faure #include <registers/imx6-dcp.h>
35f9bfeacbSCedric Neveux 
362a128a33SClement Faure #define UART1_BASE			0x2020000
372a128a33SClement Faure #define IOMUXC_BASE			0x020E0000
382a128a33SClement Faure #define IOMUXC_SIZE			0x4000
392a128a33SClement Faure #define IOMUXC_GPR_BASE			0x020E4000
402a128a33SClement Faure #define SRC_BASE			0x020D8000
412a128a33SClement Faure #define SRC_SIZE			0x4000
422a128a33SClement Faure #define CCM_BASE			0x020C4000
432a128a33SClement Faure #define CCM_SIZE			0x4000
442a128a33SClement Faure #define ANATOP_BASE			0x020C8000
452a128a33SClement Faure #define ANATOP_SIZE			0x1000
462a128a33SClement Faure #define SNVS_BASE			0x020CC000
471523165fSClement Faure #define SNVS_SIZE			0x4000
482a128a33SClement Faure #define GPC_BASE			0x020DC000
492a128a33SClement Faure #define GPC_SIZE			0x4000
502a128a33SClement Faure #define WDOG_BASE			0x020BC000
512a128a33SClement Faure #define CSU_BASE			0x021C0000
522a128a33SClement Faure #define SEMA4_BASE			0x02290000
532a128a33SClement Faure #define SEMA4_SIZE			0x4000
542a128a33SClement Faure #define MMDC_P0_BASE			0x021B0000
552a128a33SClement Faure #define MMDC_P0_SIZE			0x4000
562a128a33SClement Faure #define MMDC_P1_BASE			0x021B4000
572a128a33SClement Faure #define MMDC_P1_SIZE			0x4000
582a128a33SClement Faure #define TZASC_BASE			0x21D0000
59a4928cf1SClement Faure #define TZASC_SIZE			0x4000
602a128a33SClement Faure #define TZASC2_BASE			0x21D4000
612a128a33SClement Faure #define UART2_BASE			0x021E8000
622a128a33SClement Faure #define UART3_BASE			0x021EC000
632a128a33SClement Faure #define UART4_BASE			0x021F0000
642a128a33SClement Faure #define UART5_BASE			0x021F4000
652a128a33SClement Faure #define AIPS1_BASE			0x02000000
662a128a33SClement Faure #define AIPS1_SIZE			0x100000
672a128a33SClement Faure #define AIPS2_BASE			0x02100000
682a128a33SClement Faure #define AIPS2_SIZE			0x100000
692a128a33SClement Faure #define AIPS3_BASE			0x02200000
702a128a33SClement Faure #define AIPS3_SIZE			0x100000
712a128a33SClement Faure 
72de266e27SJorge Ramirez-Ortiz #if defined(CFG_MX6ULL)
73de266e27SJorge Ramirez-Ortiz #define RNGB_BASE			0x02284000
74de266e27SJorge Ramirez-Ortiz #elif defined(CFG_MX6SL) || defined(CFG_MX6SLL)
75de266e27SJorge Ramirez-Ortiz #define RNGB_BASE			0x021b4000
76de266e27SJorge Ramirez-Ortiz #endif
77de266e27SJorge Ramirez-Ortiz 
782a128a33SClement Faure #define SCU_BASE			0x00A00000
792a128a33SClement Faure #define PL310_BASE			0x00A02000
802a128a33SClement Faure #define IRAM_BASE			0x00900000
812a128a33SClement Faure 
822a128a33SClement Faure #define OCOTP_BASE			0x021BC000
830a8e42ddSClement Faure #define OCOTP_SIZE			0x4000
842a128a33SClement Faure 
852a128a33SClement Faure #define GIC_BASE			0x00A00000
862a128a33SClement Faure #define GICD_OFFSET			0x1000
872a128a33SClement Faure 
882a128a33SClement Faure #if defined(CFG_MX6UL) || defined(CFG_MX6ULL)
892a128a33SClement Faure #define GICC_OFFSET			0x2000
90d135e217SRouven Czerwinski #define UART6_BASE			0x021FC000
91d135e217SRouven Czerwinski #define UART7_BASE			0x02018000
922a128a33SClement Faure /* No CAAM on i.MX6ULL */
932a128a33SClement Faure #define CAAM_BASE			0x02140000
942a128a33SClement Faure #else
952a128a33SClement Faure #define GICC_OFFSET			0x100
962a128a33SClement Faure #define CAAM_BASE			0x02100000
972a128a33SClement Faure #endif
98*2866fd96SClement Faure #define CAAM_SIZE			0x40000
992a128a33SClement Faure 
1002a128a33SClement Faure #define GIC_CPU_BASE			(GIC_BASE + GICC_OFFSET)
1012a128a33SClement Faure #define GIC_DIST_BASE			(GIC_BASE + GICD_OFFSET)
1022a128a33SClement Faure 
1032a128a33SClement Faure /* Central Security Unit register values */
1042a128a33SClement Faure #define CSU_CSL_START			0x0
1052a128a33SClement Faure #define CSU_CSL_END			0xA0
1062a128a33SClement Faure #define	CSU_ACCESS_ALL			0x00FF00FF
1072a128a33SClement Faure #define CSU_SETTING_LOCK		0x01000100
108cab01ed5SRouven Czerwinski #define CSU_SA				0x218
1092a128a33SClement Faure 
1102a128a33SClement Faure /* Used in suspend/resume and low power idle */
1112a128a33SClement Faure #define MX6Q_SRC_GPR1			0x20
1122a128a33SClement Faure #define MX6Q_SRC_GPR2			0x24
1132a128a33SClement Faure #define MX6Q_MMDC_MISC			0x18
1142a128a33SClement Faure #define MX6Q_MMDC_MAPSR			0x404
1152a128a33SClement Faure #define MX6Q_MMDC_MPDGCTRL0		0x83c
1162a128a33SClement Faure #define MX6Q_GPC_IMR1			0x08
1172a128a33SClement Faure #define MX6Q_GPC_IMR2			0x0c
1182a128a33SClement Faure #define MX6Q_GPC_IMR3			0x10
1192a128a33SClement Faure #define MX6Q_GPC_IMR4			0x14
1202a128a33SClement Faure #define MX6Q_CCM_CCR			0x0
1212a128a33SClement Faure #define MX6Q_ANATOP_CORE		0x140
1222a128a33SClement Faure 
1232a128a33SClement Faure #define IOMUXC_GPR9_OFFSET		0x24
1242a128a33SClement Faure #define IOMUXC_GPR10_OFFSET		0x28
1252a128a33SClement Faure 
1262a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_OFFSET	5
1272a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_MASK		GENMASK_32(10, 5)
1282a128a33SClement Faure 
1292a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_OFFSET		4
1302a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_MASK		GENMASK_32(4, 4)
1312a128a33SClement Faure 
1322a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_OFFSET	20
1332a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_MASK	GENMASK_32(20, 20)
1342a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_OFFSET	21
1352a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_MASK	GENMASK_32(26, 21)
1362a128a33SClement Faure 
1372a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_OFFSET_6UL	11
1382a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_MASK_6UL	GENMASK_32(15, 11)
1392a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_OFFSET_6UL	10
1402a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_MASK_6UL	GENMASK_32(10, 10)
1412a128a33SClement Faure 
1422a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_OFFSET_6UL	26
1432a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_EN_LOCK_MASK_6UL		GENMASK_32(26, 26)
1442a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_OFFSET_6UL	(27)
1452a128a33SClement Faure #define IOMUXC_GPR10_OCRAM_TZ_ADDR_LOCK_MASK_6UL	GENMASK_32(31, 27)
1462a128a33SClement Faure 
147247f081aSClement Faure #ifdef CFG_MX6SL
148247f081aSClement Faure #define DIGPROG_OFFSET	0x280
149247f081aSClement Faure #else
150247f081aSClement Faure #define DIGPROG_OFFSET	0x260
151247f081aSClement Faure #endif
152247f081aSClement Faure 
153d156989aSJorge Ramirez-Ortiz #if defined(CFG_MX6ULL)
154d156989aSJorge Ramirez-Ortiz #define I2C1_BASE		0x021a0000
155d156989aSJorge Ramirez-Ortiz #define I2C2_BASE		0x021a4000
156bbdd7597SDevendra Devadiga #define I2C3_BASE		0x021a8000
1573d72b012SDevendra Devadiga #define I2C4_BASE		0x021f8000
158d156989aSJorge Ramirez-Ortiz 
159e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SCL_CFG_OFF	0x340
160e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SDA_CFG_OFF	0x344
161e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SCL_MUX_OFF	0xb4
162e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SDA_MUX_OFF	0xb8
163e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SCL_INP_OFF	0x5a4
164e2cf992dSJorge Ramirez-Ortiz #define IOMUXC_I2C1_SDA_INP_OFF	0x5a8
165d156989aSJorge Ramirez-Ortiz #endif
166d156989aSJorge Ramirez-Ortiz 
1672a128a33SClement Faure #endif /* __IMX6_H__ */
168