global: Migrate CONFIG_SYS_FSL* symbols to the CFG_SYS namespace
[platform/kernel/u-boot.git] / arch / arm / include / asm / arch-imx8m / imx-regs.h
index 68666a5..586847f 100644 (file)
 
 #include <asm/mach-imx/regs-lcdif.h>
 
-#define ROM_VERSION_A0         0x800
-#define ROM_VERSION_B0         0x83C
+#define ROM_VERSION_A0         IS_ENABLED(CONFIG_IMX8MQ) ? 0x800 : 0x800
+#define ROM_VERSION_B0         IS_ENABLED(CONFIG_IMX8MQ) ? 0x83C : 0x800
 
-#define M4_BOOTROM_BASE_ADDR   0x007E0000
+#define M4_BOOTROM_BASE_ADDR   0x007E0000
 
-#define SAI1_BASE_ADDR         0x30010000
-#define SAI6_BASE_ADDR         0x30030000
-#define SAI5_BASE_ADDR         0x30040000
-#define SAI4_BASE_ADDR         0x30050000
-#define SPBA2_BASE_ADDR                0x300F0000
-#define AIPS1_BASE_ADDR                0x301F0000
 #define GPIO1_BASE_ADDR                0X30200000
 #define GPIO2_BASE_ADDR                0x30210000
 #define GPIO3_BASE_ADDR                0x30220000
 #define GPIO4_BASE_ADDR                0x30230000
 #define GPIO5_BASE_ADDR                0x30240000
-#define ANA_TSENSOR_BASE_ADDR  0x30260000
-#define ANA_OSC_BASE_ADDR      0x30270000
 #define WDOG1_BASE_ADDR                0x30280000
 #define WDOG2_BASE_ADDR                0x30290000
 #define WDOG3_BASE_ADDR                0x302A0000
-#define SDMA2_BASE_ADDR                0x302C0000
-#define GPT1_BASE_ADDR         0x302D0000
-#define GPT2_BASE_ADDR         0x302E0000
-#define GPT3_BASE_ADDR         0x302F0000
-#define ROMCP_BASE_ADDR                0x30310000
-#define LCDIF_BASE_ADDR                0x30320000
 #define IOMUXC_BASE_ADDR       0x30330000
 #define IOMUXC_GPR_BASE_ADDR   0x30340000
 #define OCOTP_BASE_ADDR                0x30350000
 #define ANATOP_BASE_ADDR       0x30360000
-#define SNVS_HP_BASE_ADDR      0x30370000
+#define SNVS_BASE_ADDR         0x30370000
 #define CCM_BASE_ADDR          0x30380000
 #define SRC_BASE_ADDR          0x30390000
 #define GPC_BASE_ADDR          0x303A0000
-#define SEMAPHORE1_BASE_ADDR   0x303B0000
-#define SEMAPHORE2_BASE_ADDR   0x303C0000
-#define RDC_BASE_ADDR          0x303D0000
-#define CSU_BASE_ADDR          0x303E0000
-
-#define AIPS2_BASE_ADDR                0x305F0000
-#define PWM1_BASE_ADDR         0x30660000
-#define PWM2_BASE_ADDR         0x30670000
-#define PWM3_BASE_ADDR         0x30680000
-#define PWM4_BASE_ADDR         0x30690000
+
 #define SYSCNT_RD_BASE_ADDR    0x306A0000
 #define SYSCNT_CMP_BASE_ADDR   0x306B0000
 #define SYSCNT_CTRL_BASE_ADDR  0x306C0000
-#define GPT6_BASE_ADDR         0x306E0000
-#define GPT5_BASE_ADDR         0x306F0000
-#define GPT4_BASE_ADDR         0x30700000
-#define PERFMON1_BASE_ADDR     0x307C0000
-#define PERFMON2_BASE_ADDR     0x307D0000
-#define QOSC_BASE_ADDR         0x307F0000
-
-#define SPDIF1_BASE_ADDR       0x30810000
-#define ECSPI1_BASE_ADDR       0x30820000
-#define ECSPI2_BASE_ADDR       0x30830000
-#define ECSPI3_BASE_ADDR       0x30840000
+
 #define UART1_BASE_ADDR                0x30860000
 #define UART3_BASE_ADDR                0x30880000
 #define UART2_BASE_ADDR                0x30890000
-#define SPDIF2_BASE_ADDR       0x308A0000
-#define SAI2_BASE_ADDR         0x308B0000
-#define SAI3_BASE_ADDR         0x308C0000
-#define SPBA1_BASE_ADDR                0x308F0000
-#define CAAM_BASE_ADDR         0x30900000
-#define AIPS3_BASE_ADDR                0x309F0000
-#define MIPI_PHY_BASE_ADDR     0x30A00000
-#define MIPI_DSI_BASE_ADDR     0x30A10000
 #define I2C1_BASE_ADDR         0x30A20000
 #define I2C2_BASE_ADDR         0x30A30000
 #define I2C3_BASE_ADDR         0x30A40000
 #define I2C4_BASE_ADDR         0x30A50000
 #define UART4_BASE_ADDR                0x30A60000
-#define MIPI_CSI_BASE_ADDR     0x30A70000
-#define MIPI_CSI_PHY1_BASE_ADDR        0x30A80000
-#define CSI1_BASE_ADDR         0x30A90000
-#define MU_A_BASE_ADDR         0x30AA0000
-#define MU_B_BASE_ADDR         0x30AB0000
-#define SEMAPHOR_HS_BASE_ADDR  0x30AC0000
 #define USDHC1_BASE_ADDR       0x30B40000
 #define USDHC2_BASE_ADDR       0x30B50000
-#define MIPI_CS2_BASE_ADDR     0x30B60000
-#define MIPI_CSI_PHY2_BASE_ADDR        0x30B70000
-#define CSI2_BASE_ADDR         0x30B80000
-#define QSPI0_BASE_ADDR                0x30BB0000
-#define QSPI0_AMBA_BASE                0x08000000
-#define SDMA1_BASE_ADDR                0x30BD0000
-#define ENET1_BASE_ADDR                0x30BE0000
-
-#define HDMI_CTRL_BASE_ADDR    0x32C00000
-#define AIPS4_BASE_ADDR                0x32DF0000
-#define DC1_BASE_ADDR          0x32E00000
-#define DC2_BASE_ADDR          0x32E10000
-#define DC3_BASE_ADDR          0x32E20000
-#define HDMI_SEC_BASE_ADDR     0x32E40000
-#define TZASC_BASE_ADDR                0x32F80000
-#define MTR_BASE_ADDR          0x32FB0000
-#define PLATFORM_CTRL_BASE_ADDR        0x32FE0000
-
-#define MXS_APBH_BASE          0x33000000
-#define MXS_GPMI_BASE          0x33002000
-#define MXS_BCH_BASE           0x33004000
+#define QSPI0_AMBA_BASE     0x08000000
+#ifdef CONFIG_IMX8MM
+#define USDHC3_BASE_ADDR       0x30B60000
+#endif
+#define UART_BASE_ADDR(n)      (                       \
+       !!sizeof(struct {                               \
+               static_assert((n) >= 1 && (n) <= 4);    \
+               int pad;                                \
+               }) * (                                  \
+       (n) == 1 ? UART1_BASE_ADDR :                    \
+       (n) == 2 ? UART2_BASE_ADDR :                    \
+       (n) == 3 ? UART3_BASE_ADDR :                    \
+       UART4_BASE_ADDR)                                \
+       )
 
-#define USB1_BASE_ADDR         0x38100000
-#define USB2_BASE_ADDR         0x38200000
-#define USB1_PHY_BASE_ADDR     0x381F0000
-#define USB2_PHY_BASE_ADDR     0x382F0000
+#define TZASC_BASE_ADDR                0x32F80000
 
-#define MXS_LCDIF_BASE         LCDIF_BASE_ADDR
+#define MXS_LCDIF_BASE         IS_ENABLED(CONFIG_IMX8MQ) ? \
+                                       0x30320000 : 0x32e00000
 
 #define SRC_IPS_BASE_ADDR      0x30390000
 #define SRC_DDRC_RCR_ADDR      0x30391000
 #define SRC_DDRC2_RCR_ADDR     0x30391004
 
+#define APBH_DMA_ARB_BASE_ADDR 0x33000000
+#define APBH_DMA_ARB_END_ADDR  0x33007FFF
+#define MXS_APBH_BASE          APBH_DMA_ARB_BASE_ADDR
+
+#define MXS_GPMI_BASE          (APBH_DMA_ARB_BASE_ADDR + 0x02000)
+#define MXS_BCH_BASE           (APBH_DMA_ARB_BASE_ADDR + 0x04000)
+
 #define DDRC_DDR_SS_GPR0       0x3d000000
 #define DDRC_IPS_BASE_ADDR(X)  (0x3d400000 + ((X) * 0x2000000))
 #define DDR_CSD1_BASE_ADDR     0x40000000
 
+#define IOMUXC_GPR_GPR1_GPR_ENET_QOS_INTF_SEL_MASK 0x70000
+#define FEC_QUIRK_ENET_MAC
+
+#define CAAM_ARB_BASE_ADDR              (0x00100000)
+#define CAAM_ARB_END_ADDR               (0x00107FFF)
+#define CAAM_IPS_BASE_ADDR              (0x30900000)
+#define CFG_SYS_FSL_SEC_OFFSET       (0)
+#define CFG_SYS_FSL_SEC_ADDR         (CAAM_IPS_BASE_ADDR + \
+                                        CFG_SYS_FSL_SEC_OFFSET)
+#define CFG_SYS_FSL_JR0_OFFSET       (0x1000)
+#define CFG_SYS_FSL_JR0_ADDR         (CFG_SYS_FSL_SEC_ADDR + \
+                                        CFG_SYS_FSL_JR0_OFFSET)
 #if !defined(__ASSEMBLY__)
 #include <asm/types.h>
 #include <linux/bitops.h>
 #include <stdbool.h>
 
-#define GPR_TZASC_EN           BIT(0)
-#define GPR_TZASC_EN_LOCK      BIT(16)
+#define GPR_TZASC_EN                                   BIT(0)
+#define GPR_TZASC_ID_SWAP_BYPASS               BIT(1)
+#define GPR_TZASC_EN_LOCK                              BIT(16)
+#define GPR_TZASC_ID_SWAP_BYPASS_LOCK  BIT(17)
 
 #define SRC_SCR_M4_ENABLE_OFFSET       3
 #define SRC_SCR_M4_ENABLE_MASK         BIT(3)
 #define SRC_DDR1_RCR_CORE_RESET_N_MASK BIT(1)
 #define SRC_DDR1_RCR_PRESET_N_MASK     BIT(0)
 
+#define SNVS_LPSR                      0x4c
+#define SNVS_LPLVDR                    0x64
+#define SNVS_LPPGDR_INIT               0x41736166
+
 struct iomuxc_gpr_base_regs {
        u32 gpr[47];
 };
@@ -185,6 +154,16 @@ struct ocotp_regs {
        } bank[0];
 };
 
+#ifdef CONFIG_IMX8MP
+struct fuse_bank0_regs {
+       u32 lock;
+       u32 rsvd0[7];
+       u32 uid_low;
+       u32 rsvd1[3];
+       u32 uid_high;
+       u32 rsvd2[3];
+};
+#else
 struct fuse_bank0_regs {
        u32 lock;
        u32 rsvd0[3];
@@ -193,6 +172,7 @@ struct fuse_bank0_regs {
        u32 uid_high;
        u32 rsvd2[7];
 };
+#endif
 
 struct fuse_bank1_regs {
        u32 tester3;
@@ -205,6 +185,41 @@ struct fuse_bank1_regs {
        u32 rsvd3[3];
 };
 
+struct fuse_bank3_regs {
+       u32 mem_trim0;
+       u32 rsvd0[3];
+       u32 mem_trim1;
+       u32 rsvd1[3];
+       u32 mem_trim2;
+       u32 rsvd2[3];
+       u32 ana0;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank9_regs {
+       u32 mac_addr0;
+       u32 rsvd0[3];
+       u32 mac_addr1;
+       u32 rsvd1[11];
+};
+
+struct fuse_bank38_regs {
+       u32 ana_trim1; /* trim0 is at 0xD70, bank 37*/
+       u32 rsvd0[3];
+       u32 ana_trim2;
+       u32 rsvd1[3];
+       u32 ana_trim3;
+       u32 rsvd2[3];
+       u32 ana_trim4;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank39_regs {
+       u32 ana_trim5;
+       u32 rsvd[15];
+};
+
+#ifdef CONFIG_IMX8MQ
 struct anamix_pll {
        u32 audio_pll1_cfg0;
        u32 audio_pll1_cfg1;
@@ -239,13 +254,60 @@ struct anamix_pll {
        u32 frac_pllout_div_cfg;
        u32 sscg_pllout_div_cfg;
 };
-
-struct fuse_bank9_regs {
-       u32 mac_addr0;
-       u32 rsvd0[3];
-       u32 mac_addr1;
-       u32 rsvd1[11];
+#else
+struct anamix_pll {
+       u32 audio_pll1_gnrl_ctl;
+       u32 audio_pll1_fdiv_ctl0;
+       u32 audio_pll1_fdiv_ctl1;
+       u32 audio_pll1_sscg_ctl;
+       u32 audio_pll1_mnit_ctl;
+       u32 audio_pll2_gnrl_ctl;
+       u32 audio_pll2_fdiv_ctl0;
+       u32 audio_pll2_fdiv_ctl1;
+       u32 audio_pll2_sscg_ctl;
+       u32 audio_pll2_mnit_ctl;
+       u32 video_pll1_gnrl_ctl;
+       u32 video_pll1_fdiv_ctl0;
+       u32 video_pll1_fdiv_ctl1;
+       u32 video_pll1_sscg_ctl;
+       u32 video_pll1_mnit_ctl;
+       u32 reserved[5];
+       u32 dram_pll_gnrl_ctl;
+       u32 dram_pll_fdiv_ctl0;
+       u32 dram_pll_fdiv_ctl1;
+       u32 dram_pll_sscg_ctl;
+       u32 dram_pll_mnit_ctl;
+       u32 gpu_pll_gnrl_ctl;
+       u32 gpu_pll_div_ctl;
+       u32 gpu_pll_locked_ctl1;
+       u32 gpu_pll_mnit_ctl;
+       u32 vpu_pll_gnrl_ctl;
+       u32 vpu_pll_div_ctl;
+       u32 vpu_pll_locked_ctl1;
+       u32 vpu_pll_mnit_ctl;
+       u32 arm_pll_gnrl_ctl;
+       u32 arm_pll_div_ctl;
+       u32 arm_pll_locked_ctl1;
+       u32 arm_pll_mnit_ctl;
+       u32 sys_pll1_gnrl_ctl;
+       u32 sys_pll1_div_ctl;
+       u32 sys_pll1_locked_ctl1;
+       u32 reserved2[24];
+       u32 sys_pll1_mnit_ctl;
+       u32 sys_pll2_gnrl_ctl;
+       u32 sys_pll2_div_ctl;
+       u32 sys_pll2_locked_ctl1;
+       u32 sys_pll2_mnit_ctl;
+       u32 sys_pll3_gnrl_ctl;
+       u32 sys_pll3_div_ctl;
+       u32 sys_pll3_locked_ctl1;
+       u32 sys_pll3_mnit_ctl;
+       u32 anamix_misc_ctl;
+       u32 anamix_clk_mnit_ctl;
+       u32 reserved3[437];
+       u32 digprog;
 };
+#endif
 
 /* System Reset Controller (SRC) */
 struct src {
@@ -288,6 +350,53 @@ struct src {
        u32 ddr2_rcr;
 };
 
+#define PWMCR_PRESCALER(x)     (((x - 1) & 0xFFF) << 4)
+#define PWMCR_DOZEEN           (1 << 24)
+#define PWMCR_WAITEN           (1 << 23)
+#define PWMCR_DBGEN            (1 << 22)
+#define PWMCR_CLKSRC_IPG_HIGH  (2 << 16)
+#define PWMCR_CLKSRC_IPG       (1 << 16)
+#define PWMCR_EN               (1 << 0)
+
+struct pwm_regs {
+       u32     cr;
+       u32     sr;
+       u32     ir;
+       u32     sar;
+       u32     pr;
+       u32     cnr;
+};
+
+#define WDOG_WDT_MASK  BIT(3)
+#define WDOG_WDZST_MASK        BIT(0)
+struct wdog_regs {
+       u16     wcr;    /* Control */
+       u16     wsr;    /* Service */
+       u16     wrsr;   /* Reset Status */
+       u16     wicr;   /* Interrupt Control */
+       u16     wmcr;   /* Miscellaneous Control */
+};
+
+struct bootrom_sw_info {
+       u8 reserved_1;
+       u8 boot_dev_instance;
+       u8 boot_dev_type;
+       u8 reserved_2;
+       u32 core_freq;
+       u32 axi_freq;
+       u32 ddr_freq;
+       u32 tick_freq;
+       u32 reserved_3[3];
+};
+
+#define ROM_SW_INFO_ADDR_B0    (IS_ENABLED(CONFIG_IMX8MQ) ? 0x00000968 :\
+                                0x000009e8)
+#define ROM_SW_INFO_ADDR_A0    0x000009e8
+
+#define ROM_SW_INFO_ADDR is_soc_rev(CHIP_REV_1_0) ? \
+               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_A0 : \
+               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_B0
+
 struct gpc_reg {
        u32 lpcr_bsc;
        u32 lpcr_ad;
@@ -437,33 +546,13 @@ struct gpc_reg {
        u32 slt19_cfg_pu;
 };
 
-#define WDOG_WDT_MASK  BIT(3)
-#define WDOG_WDZST_MASK        BIT(0)
-struct wdog_regs {
-       u16     wcr;    /* Control */
-       u16     wsr;    /* Service */
-       u16     wrsr;   /* Reset Status */
-       u16     wicr;   /* Interrupt Control */
-       u16     wmcr;   /* Miscellaneous Control */
-};
-
-struct bootrom_sw_info {
-       u8 reserved_1;
-       u8 boot_dev_instance;
-       u8 boot_dev_type;
-       u8 reserved_2;
-       u32 core_freq;
-       u32 axi_freq;
-       u32 ddr_freq;
-       u32 tick_freq;
-       u32 reserved_3[3];
+struct pgc_reg {
+       u32 pgcr;
+       u32 pgpupscr;
+       u32 pgpdnscr;
+       u32 pgsr;
+       u32 pgauxsw;
+       u32 pgdr;
 };
-
-#define ROM_SW_INFO_ADDR_B0    0x00000968
-#define ROM_SW_INFO_ADDR_A0    0x000009e8
-
-#define ROM_SW_INFO_ADDR is_soc_rev(CHIP_REV_1_0) ? \
-               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_A0 : \
-               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_B0
 #endif
 #endif