329 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			329 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0+ */
 | 
						|
/*
 | 
						|
 * (C) Copyright 2013-2016, Freescale Semiconductor, Inc.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __ASM_ARCH_IMX_REGS_H__
 | 
						|
#define __ASM_ARCH_IMX_REGS_H__
 | 
						|
 | 
						|
#define ARCH_MXC
 | 
						|
 | 
						|
#define IRAM_BASE_ADDR      0x3E800000	/* internal ram */
 | 
						|
#define IRAM_SIZE           0x00400000	/* 4MB */
 | 
						|
 | 
						|
#define AIPS0_BASE_ADDR     (0x40000000UL)
 | 
						|
#define AIPS1_BASE_ADDR     (0x40080000UL)
 | 
						|
 | 
						|
/* AIPS 0 */
 | 
						|
#define AXBS_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00000000)
 | 
						|
#define CSE3_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00001000)
 | 
						|
#define EDMA_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00002000)
 | 
						|
#define XRDC_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00004000)
 | 
						|
#define SWT0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0000A000)
 | 
						|
#define SWT1_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0000B000)
 | 
						|
#define STM0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0000D000)
 | 
						|
#define NIC301_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00010000)
 | 
						|
#define GC3000_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00020000)
 | 
						|
#define DEC200_DECODER_BASE_ADDR		(AIPS0_BASE_ADDR + 0x00026000)
 | 
						|
#define DEC200_ENCODER_BASE_ADDR		(AIPS0_BASE_ADDR + 0x00027000)
 | 
						|
#define TWOD_ACE_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00028000)
 | 
						|
#define MIPI_CSI0_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00030000)
 | 
						|
#define DMAMUX0_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00031000)
 | 
						|
#define ENET_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00032000)
 | 
						|
#define FLEXRAY_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00034000)
 | 
						|
#define MMDC0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00036000)
 | 
						|
#define MEW0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00037000)
 | 
						|
#define MONITOR_DDR0_BASE_ADDR			(AIPS0_BASE_ADDR + 0x00038000)
 | 
						|
#define MONITOR_CCI0_BASE_ADDR			(AIPS0_BASE_ADDR + 0x00039000)
 | 
						|
#define PIT0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0003A000)
 | 
						|
#define MC_CGM0_BASE_ADDR				(AIPS0_BASE_ADDR + 0x0003C000)
 | 
						|
#define MC_CGM1_BASE_ADDR				(AIPS0_BASE_ADDR + 0x0003F000)
 | 
						|
#define MC_CGM2_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00042000)
 | 
						|
#define MC_CGM3_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00045000)
 | 
						|
#define MC_RGM_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00048000)
 | 
						|
#define MC_ME_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0004A000)
 | 
						|
#define MC_PCU_BASE_ADDR				(AIPS0_BASE_ADDR + 0x0004B000)
 | 
						|
#define ADC0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0004D000)
 | 
						|
#define FLEXTIMER_BASE_ADDR				(AIPS0_BASE_ADDR + 0x0004F000)
 | 
						|
#define I2C0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00051000)
 | 
						|
#define LINFLEXD0_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00053000)
 | 
						|
#define FLEXCAN0_BASE_ADDR				(AIPS0_BASE_ADDR + 0x00055000)
 | 
						|
#define SPI0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00057000)
 | 
						|
#define SPI2_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00059000)
 | 
						|
#define CRC0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0005B000)
 | 
						|
#define USDHC_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0005D000)
 | 
						|
#define OCOTP_CONTROLLER_BASE_ADDR		(AIPS0_BASE_ADDR + 0x0005F000)
 | 
						|
#define WKPU_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00063000)
 | 
						|
#define VIU0_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00064000)
 | 
						|
#define HPSMI_SRAM_CONTROLLER_BASE_ADDR	(AIPS0_BASE_ADDR + 0x00068000)
 | 
						|
#define SIUL2_BASE_ADDR					(AIPS0_BASE_ADDR + 0x0006C000)
 | 
						|
#define SIPI_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00074000)
 | 
						|
#define LFAST_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00078000)
 | 
						|
#define SSE_BASE_ADDR					(AIPS0_BASE_ADDR + 0x00079000)
 | 
						|
#define SRC_SOC_BASE_ADDR				(AIPS0_BASE_ADDR + 0x0007C000)
 | 
						|
 | 
						|
/* AIPS 1 */
 | 
						|
#define ERM_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000000000)
 | 
						|
#define MSCM_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000001000)
 | 
						|
#define SEMA42_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000002000)
 | 
						|
#define INTC_MON_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000003000)
 | 
						|
#define SWT2_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000004000)
 | 
						|
#define SWT3_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000005000)
 | 
						|
#define SWT4_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000006000)
 | 
						|
#define STM1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000007000)
 | 
						|
#define EIM_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000008000)
 | 
						|
#define APB_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000009000)
 | 
						|
#define XBIC_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000012000)
 | 
						|
#define MIPI_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000020000)
 | 
						|
#define DMAMUX1_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000021000)
 | 
						|
#define MMDC1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000022000)
 | 
						|
#define MEW1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000023000)
 | 
						|
#define DDR1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000024000)
 | 
						|
#define CCI1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000025000)
 | 
						|
#define QUADSPI0_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000026000)
 | 
						|
#define PIT1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X00002A000)
 | 
						|
#define FCCU_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000030000)
 | 
						|
#define FLEXTIMER_FTM1_BASE_ADDR		(AIPS1_BASE_ADDR + 0X000036000)
 | 
						|
#define I2C1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000038000)
 | 
						|
#define I2C2_BASE_ADDR					(AIPS1_BASE_ADDR + 0X00003A000)
 | 
						|
#define LINFLEXD1_BASE_ADDR				(AIPS1_BASE_ADDR + 0X00003C000)
 | 
						|
#define FLEXCAN1_BASE_ADDR				(AIPS1_BASE_ADDR + 0X00003E000)
 | 
						|
#define SPI1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000040000)
 | 
						|
#define SPI3_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000042000)
 | 
						|
#define IPL_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000043000)
 | 
						|
#define CGM_CMU_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000044000)
 | 
						|
#define PMC_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000048000)
 | 
						|
#define CRC1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X00004C000)
 | 
						|
#define TMU_BASE_ADDR					(AIPS1_BASE_ADDR + 0X00004E000)
 | 
						|
#define VIU1_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000050000)
 | 
						|
#define JPEG_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000054000)
 | 
						|
#define H264_DEC_BASE_ADDR				(AIPS1_BASE_ADDR + 0X000058000)
 | 
						|
#define H264_ENC_BASE_ADDR				(AIPS1_BASE_ADDR + 0X00005C000)
 | 
						|
#define MEMU_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000060000)
 | 
						|
#define STCU_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000064000)
 | 
						|
#define SLFTST_CTRL_BASE_ADDR			(AIPS1_BASE_ADDR + 0X000066000)
 | 
						|
#define MCT_BASE_ADDR					(AIPS1_BASE_ADDR + 0X000068000)
 | 
						|
#define REP_BASE_ADDR					(AIPS1_BASE_ADDR + 0X00006A000)
 | 
						|
#define MBIST_CONTROLLER_BASE_ADDR		(AIPS1_BASE_ADDR + 0X00006C000)
 | 
						|
#define BOOT_LOADER_BASE_ADDR			(AIPS1_BASE_ADDR + 0X00006F000)
 | 
						|
 | 
						|
/* TODO Remove this after the IOMUX framework is implemented */
 | 
						|
#define IOMUXC_BASE_ADDR SIUL2_BASE_ADDR
 | 
						|
 | 
						|
/* MUX mode and PAD ctrl are in one register */
 | 
						|
#define CONFIG_IOMUX_SHARE_CONF_REG
 | 
						|
 | 
						|
#define FEC_QUIRK_ENET_MAC
 | 
						|
#define I2C_QUIRK_REG
 | 
						|
 | 
						|
/* MSCM interrupt router */
 | 
						|
#define MSCM_IRSPRC_CPn_EN		3
 | 
						|
#define MSCM_IRSPRC_NUM			176
 | 
						|
#define MSCM_CPXTYPE_RYPZ_MASK		0xFF
 | 
						|
#define MSCM_CPXTYPE_RYPZ_OFFSET	0
 | 
						|
#define MSCM_CPXTYPE_PERS_MASK		0xFFFFFF00
 | 
						|
#define MSCM_CPXTYPE_PERS_OFFSET	8
 | 
						|
#define MSCM_CPXTYPE_PERS_A53		0x413533
 | 
						|
#define MSCM_CPXTYPE_PERS_CM4		0x434d34
 | 
						|
 | 
						|
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
 | 
						|
#include <asm/types.h>
 | 
						|
 | 
						|
/* System Reset Controller (SRC) */
 | 
						|
struct src {
 | 
						|
	u32 bmr1;
 | 
						|
	u32 bmr2;
 | 
						|
	u32 gpr1_boot;
 | 
						|
	u32 reserved_0x00C[61];
 | 
						|
	u32 gpr1;
 | 
						|
	u32 gpr2;
 | 
						|
	u32 gpr3;
 | 
						|
	u32 gpr4;
 | 
						|
	u32 gpr5;
 | 
						|
	u32 gpr6;
 | 
						|
	u32 gpr7;
 | 
						|
	u32 reserved_0x11C[1];
 | 
						|
	u32 gpr9;
 | 
						|
	u32 gpr10;
 | 
						|
	u32 gpr11;
 | 
						|
	u32 gpr12;
 | 
						|
	u32 gpr13;
 | 
						|
	u32 gpr14;
 | 
						|
	u32 gpr15;
 | 
						|
	u32 gpr16;
 | 
						|
	u32 reserved_0x140[1];
 | 
						|
	u32 gpr17;
 | 
						|
	u32 gpr18;
 | 
						|
	u32 gpr19;
 | 
						|
	u32 gpr20;
 | 
						|
	u32 gpr21;
 | 
						|
	u32 gpr22;
 | 
						|
	u32 gpr23;
 | 
						|
	u32 gpr24;
 | 
						|
	u32 gpr25;
 | 
						|
	u32 gpr26;
 | 
						|
	u32 gpr27;
 | 
						|
	u32 reserved_0x16C[5];
 | 
						|
	u32 pcie_config1;
 | 
						|
	u32 ddr_self_ref_ctrl;
 | 
						|
	u32 pcie_config0;
 | 
						|
	u32 reserved_0x18C[4];
 | 
						|
	u32 soc_misc_config2;
 | 
						|
};
 | 
						|
 | 
						|
/* SRC registers definitions */
 | 
						|
 | 
						|
/* SRC_GPR1 */
 | 
						|
#define SRC_GPR1_PLL_SOURCE(pll,val)( ((val) & SRC_GPR1_PLL_SOURCE_MASK) << \
 | 
						|
										(SRC_GPR1_PLL_OFFSET + (pll)) )
 | 
						|
#define SRC_GPR1_PLL_SOURCE_MASK	(0x1)
 | 
						|
 | 
						|
#define SRC_GPR1_PLL_OFFSET			(27)
 | 
						|
#define SRC_GPR1_FIRC_CLK_SOURCE	(0x0)
 | 
						|
#define SRC_GPR1_XOSC_CLK_SOURCE	(0x1)
 | 
						|
 | 
						|
/* Periodic Interrupt Timer (PIT) */
 | 
						|
struct pit_reg {
 | 
						|
	u32 mcr;
 | 
						|
	u32 recv0[55];
 | 
						|
	u32 ltmr64h;
 | 
						|
	u32 ltmr64l;
 | 
						|
	u32 recv1[6];
 | 
						|
	u32 ldval0;
 | 
						|
	u32 cval0;
 | 
						|
	u32 tctrl0;
 | 
						|
	u32 tflg0;
 | 
						|
	u32 ldval1;
 | 
						|
	u32 cval1;
 | 
						|
	u32 tctrl1;
 | 
						|
	u32 tflg1;
 | 
						|
	u32 ldval2;
 | 
						|
	u32 cval2;
 | 
						|
	u32 tctrl2;
 | 
						|
	u32 tflg2;
 | 
						|
	u32 ldval3;
 | 
						|
	u32 cval3;
 | 
						|
	u32 tctrl3;
 | 
						|
	u32 tflg3;
 | 
						|
	u32 ldval4;
 | 
						|
	u32 cval4;
 | 
						|
	u32 tctrl4;
 | 
						|
	u32 tflg4;
 | 
						|
	u32 ldval5;
 | 
						|
	u32 cval5;
 | 
						|
	u32 tctrl5;
 | 
						|
	u32 tflg5;
 | 
						|
};
 | 
						|
 | 
						|
/* Watchdog Timer (WDOG) */
 | 
						|
struct wdog_regs {
 | 
						|
	u32 cr;
 | 
						|
	u32 ir;
 | 
						|
	u32 to;
 | 
						|
	u32 wn;
 | 
						|
	u32 sr;
 | 
						|
	u32 co;
 | 
						|
	u32 sk;
 | 
						|
};
 | 
						|
 | 
						|
/* UART */
 | 
						|
struct linflex_fsl {
 | 
						|
	u32 lincr1;
 | 
						|
	u32 linier;
 | 
						|
	u32 linsr;
 | 
						|
	u32 linesr;
 | 
						|
	u32 uartcr;
 | 
						|
	u32 uartsr;
 | 
						|
	u32 lintcsr;
 | 
						|
	u32 linocr;
 | 
						|
	u32 lintocr;
 | 
						|
	u32 linfbrr;
 | 
						|
	u32 linibrr;
 | 
						|
	u32 lincfr;
 | 
						|
	u32 lincr2;
 | 
						|
	u32 bidr;
 | 
						|
	u32 bdrl;
 | 
						|
	u32 bdrm;
 | 
						|
	u32 ifer;
 | 
						|
	u32 ifmi;
 | 
						|
	u32 ifmr;
 | 
						|
	u32 ifcr0;
 | 
						|
	u32 ifcr1;
 | 
						|
	u32 ifcr2;
 | 
						|
	u32 ifcr3;
 | 
						|
	u32 ifcr4;
 | 
						|
	u32 ifcr5;
 | 
						|
	u32 ifcr6;
 | 
						|
	u32 ifcr7;
 | 
						|
	u32 ifcr8;
 | 
						|
	u32 ifcr9;
 | 
						|
	u32 ifcr10;
 | 
						|
	u32 ifcr11;
 | 
						|
	u32 ifcr12;
 | 
						|
	u32 ifcr13;
 | 
						|
	u32 ifcr14;
 | 
						|
	u32 ifcr15;
 | 
						|
	u32 gcr;
 | 
						|
	u32 uartpto;
 | 
						|
	u32 uartcto;
 | 
						|
	u32 dmatxe;
 | 
						|
	u32 dmarxe;
 | 
						|
};
 | 
						|
 | 
						|
/* MSCM Interrupt Router */
 | 
						|
struct mscm_ir {
 | 
						|
	u32 cpxtype;		/* Processor x Type Register                    */
 | 
						|
	u32 cpxnum;		/* Processor x Number Register                  */
 | 
						|
	u32 cpxmaster;		/* Processor x Master Number Register   */
 | 
						|
	u32 cpxcount;		/* Processor x Count Register                   */
 | 
						|
	u32 cpxcfg0;		/* Processor x Configuration 0 Register */
 | 
						|
	u32 cpxcfg1;		/* Processor x Configuration 1 Register */
 | 
						|
	u32 cpxcfg2;		/* Processor x Configuration 2 Register */
 | 
						|
	u32 cpxcfg3;		/* Processor x Configuration 3 Register */
 | 
						|
	u32 cp0type;		/* Processor 0 Type Register                    */
 | 
						|
	u32 cp0num;		/* Processor 0 Number Register                  */
 | 
						|
	u32 cp0master;		/* Processor 0 Master Number Register   */
 | 
						|
	u32 cp0count;		/* Processor 0 Count Register                   */
 | 
						|
	u32 cp0cfg0;		/* Processor 0 Configuration 0 Register */
 | 
						|
	u32 cp0cfg1;		/* Processor 0 Configuration 1 Register */
 | 
						|
	u32 cp0cfg2;		/* Processor 0 Configuration 2 Register */
 | 
						|
	u32 cp0cfg3;		/* Processor 0 Configuration 3 Register */
 | 
						|
	u32 cp1type;		/* Processor 1 Type Register                    */
 | 
						|
	u32 cp1num;		/* Processor 1 Number Register                  */
 | 
						|
	u32 cp1master;		/* Processor 1 Master Number Register   */
 | 
						|
	u32 cp1count;		/* Processor 1 Count Register                   */
 | 
						|
	u32 cp1cfg0;		/* Processor 1 Configuration 0 Register */
 | 
						|
	u32 cp1cfg1;		/* Processor 1 Configuration 1 Register */
 | 
						|
	u32 cp1cfg2;		/* Processor 1 Configuration 2 Register */
 | 
						|
	u32 cp1cfg3;		/* Processor 1 Configuration 3 Register */
 | 
						|
	u32 reserved_0x060[232];
 | 
						|
	u32 ocmdr0;		/* On-Chip Memory Descriptor Register   */
 | 
						|
	u32 reserved_0x404[2];
 | 
						|
	u32 ocmdr3;		/* On-Chip Memory Descriptor Register   */
 | 
						|
	u32 reserved_0x410[28];
 | 
						|
	u32 tcmdr[4];		/* Generic Tightly Coupled Memory Descriptor Register   */
 | 
						|
	u32 reserved_0x490[28];
 | 
						|
	u32 cpce0;		/* Core Parity Checking Enable Register 0                               */
 | 
						|
	u32 reserved_0x504[191];
 | 
						|
	u32 ircp0ir;		/* Interrupt Router CP0 Interrupt Register                              */
 | 
						|
	u32 ircp1ir;		/* Interrupt Router CP1 Interrupt Register                              */
 | 
						|
	u32 reserved_0x808[6];
 | 
						|
	u32 ircpgir;		/* Interrupt Router CPU Generate Interrupt Register             */
 | 
						|
	u32 reserved_0x824[23];
 | 
						|
	u16 irsprc[176];	/* Interrupt Router Shared Peripheral Routing Control Register  */
 | 
						|
	u32 reserved_0x9e0[136];
 | 
						|
	u32 iahbbe0;		/* Gasket Burst Enable Register                                                 */
 | 
						|
	u32 reserved_0xc04[63];
 | 
						|
	u32 ipcge;		/* Interconnect Parity Checking Global Enable Register  */
 | 
						|
	u32 reserved_0xd04[3];
 | 
						|
	u32 ipce[4];		/* Interconnect Parity Checking Enable Register                 */
 | 
						|
	u32 reserved_0xd20[8];
 | 
						|
	u32 ipcgie;		/* Interconnect Parity Checking Global Injection Enable Register        */
 | 
						|
	u32 reserved_0xd44[3];
 | 
						|
	u32 ipcie[4];		/* Interconnect Parity Checking Injection Enable Register       */
 | 
						|
};
 | 
						|
 | 
						|
#endif /* __ASSEMBLER__ */
 | 
						|
 | 
						|
#endif /* __ASM_ARCH_IMX_REGS_H__ */
 |