blob: 1b6e290bc6e78005816bc4fbaf99f2730174590b [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#define KB(x) (x << 10)
#define MB(x) (x << 20)
#define GB(x) (x << 30)
/* iMX8M Top Level A53 memory map */
#define IMX8M_PCIE_1_BASE 0x18000000
#define IMX8M_PCIE_1_LENGTH MB(128)
#define IMX8M_PCIE_2_BASE 0x20000000
#define IMX8M_PCIE_2_LENGTH MB(128)
#define IMX8M_A53_DAP_BASE 0x28000000
#define IMX8M_A53_DAP_LENGHT MB(16)
#define IMX8M_GPU_BASE 0x38000000
#define IMX8M_GPU_LENGTH KB(64)
#define IMX8M_USB1_BASE 0x38100000
#define IMX8M_USB1_LENGTH MB(1)
#define IMX8M_USB2_BASE 0x38200000
#define IMX8M_USB2_LENGTH MB(1)
#define IMX8M_VPU_BASE 0x38300000
#define IMX8M_VPU_LENGTH MB(2)
#define IMX8M_GIC_BASE 0x38800000
#define IMX8M_GIC_LENGTH MB(1)
#define IMX8M_I2C1_BASE 0x30A20000
#define IMX8M_I2C1_LENGTH 20
#define IMX8M_I2C2_BASE 0x30A30000
#define IMX8M_I2C2_LENGTH 20
#define IMX8M_I2C3_BASE 0x30A40000
#define IMX8M_I2C3_LENGTH 20
#define IMX8M_I2C4_BASE 0x30A50000
#define IMX8M_I2C4_LENGTH 20
/* iMX8M AIPS (Peripheral) Memory */
#define IMX8M_AIPS_LENGTH KB(64)
#define IMX8M_AIPS_GPIO1_BASE 0x30200000
#define IMX8M_AIPS_GPIO2_BASE 0x30210000
#define IMX8M_AIPS_GPIO3_BASE 0x30220000
#define IMX8M_AIPS_GPIO4_BASE 0x30230000
#define IMX8M_AIPS_GPIO5_BASE 0x30240000
#define IMX8M_AIPS_WDOG1_BASE 0x30280000
#define IMX8M_AIPS_WDOG2_BASE 0x30290000
#define IMX8M_AIPS_WDOG3_BASE 0x302A0000
#define IMX8M_AIPS_GPT1_BASE 0x302D0000
#define IMX8M_AIPS_GPT2_BASE 0x302E0000
#define IMX8M_AIPS_GPT3_BASE 0x302F0000
#define IMX8M_AIPS_IOMUXC_BASE 0x30330000
#define IMX8M_AIPS_IOMUXC_GPR_BASE 0x30340000
#define IMX8M_AIPS_CCM_BASE 0x30380000
#define IMX8M_AIPS_GPC_BASE 0x303A0000
#define IMX8M_AIPS_PWM1_BASE 0x30660000
#define IMX8M_AIPS_PWM2_BASE 0x30670000
#define IMX8M_AIPS_PWM3_BASE 0x30680000
#define IMX8M_AIPS_PWM4_BASE 0x30690000
#define IMX8M_AIPS_GPT6_BASE 0x306E0000
#define IMX8M_AIPS_GPT5_BASE 0x306F0000
#define IMX8M_AIPS_GPT4_BASE 0x30700000
#define IMX8M_AIPS_SPDIF1_BASE 0x30810000
#define IMX8M_AIPS_ECSPI1_BASE 0x30820000
#define IMX8M_AIPS_ECSPI2_BASE 0x30830000
#define IMX8M_AIPS_ECSPI3_BASE 0x30840000
#define IMX8M_AIPS_UART1_BASE 0x30860000
#define IMX8M_AIPS_UART3_BASE 0x30880000
#define IMX8M_AIPS_UART2_BASE 0x30890000
#define IMX8M_AIPS_SPDIF2_BASE 0x308A0000
#define IMX8M_AIPS_MIPI_PHY_BASE 0x30A00000
#define IMX8M_AIPS_MIPI_DSI_BASE 0x30A10000
#define IMX8M_AIPS_I2C1_BASE 0x30A20000
#define IMX8M_AIPS_I2C2_BASE 0x30A30000
#define IMX8M_AIPS_I2C3_BASE 0x30A40000
#define IMX8M_AIPS_I2C4_BASE 0x30A50000
#define IMX8M_AIPS_UART4_BASE 0x30A60000
#define IMX8M_AIPS_USDHC1_BASE 0x30B40000
#define IMX8M_AIPS_USDHC2_BASE 0x30B50000
#define IMX8M_AIPS_QSPI_BASE 0x30BB0000
#define IMX8M_AIPS_ENET1_BASE 0x30BE0000
#define IMX8M_AIPS_DC_MST0_BASE 0x32E00000
#define IMX8M_AIPS_DC_MST1_BASE 0x32E10000
#define IMX8M_AIPS_DC_MST2_BASE 0x32E20000
#define IMX8M_AIPS_DC_MST3_BASE 0x32E30000
#define IMX8M_A53_INTR_BOOT (32 + 0)
#define IMX8M_A53_INTR_DAP (32 + 1)
#define IMX8M_A53_INTR_SDMA1 (32 + 2)
#define IMX8M_A53_INTR_GPU (32 + 3)
#define IMX8M_A53_INTR_SNVS_LP_WRAPPER (32 + 4)
#define IMX8M_A53_INTR_LCDIF (32 + 5)
#define IMX8M_A53_INTR_SPDIF1 (32 + 6)
#define IMX8M_A53_INTR_H264DEC (32 + 7)
#define IMX8M_A53_INTR_VPUDMA (32 + 8)
#define IMX8M_A53_INTR_QOS (32 + 9)
#define IMX8M_A53_INTR_WDOG3 (32 + 10)
#define IMX8M_A53_INTR_HS (32 + 11)
#define IMX8M_A53_INTR_APBHDMA (32 + 12)
#define IMX8M_A53_INTR_SPDIF2 (32 + 13)
#define IMX8M_A53_INTR_SPDIF2 (32 + 13)
#define IMX8M_A53_INTR_RAWNAND_BCH_COMP (32 + 14)
#define IMX8M_A53_INTR_RAWNAND_GPMI_TO (32 + 15)
#define IMX8M_A53_INTR_HDMI_IPS (32 + 16)
#define IMX8M_A53_INTR_HDMI_IPSx (32 + 17)
#define IMX8M_A53_INTR_HDMI_IPSy (32 + 18)
#define IMX8M_A53_INTR_SNVS_HP_WRAPPER_NOTZ (32 + 19)
#define IMX8M_A53_INTR_SNVS_HP_WRAPPER_TZ (32 + 20)
#define IMX8M_A53_INTR_CSU (32 + 21)
#define IMX8M_A53_INTR_USDHC1 (32 + 22)
#define IMX8M_A53_INTR_USDHC2 (32 + 23)
#define IMX8M_A53_INTR_DC8000_CONTROL (32 + 24)
#define IMX8M_A53_INTR_DTRC_WRAPPER (32 + 25)
#define IMX8M_A53_INTR_UART1 (32 + 26)
#define IMX8M_A53_INTR_UART2 (32 + 27)
#define IMX8M_A53_INTR_UART3 (32 + 28)
#define IMX8M_A53_INTR_UART4 (32 + 29)
#define IMX8M_A53_INTR_VP9DEC (32 + 30)
#define IMX8M_A53_INTR_ECSPI1 (32 + 31)
#define IMX8M_A53_INTR_ECSPI2 (32 + 32)
#define IMX8M_A53_INTR_ECSPI3 (32 + 33)
#define IMX8M_A53_INTR_MIPI_DSI (32 + 34)
#define IMX8M_A53_INTR_I2C1 (32 + 35)
#define IMX8M_A53_INTR_I2C2 (32 + 36)
#define IMX8M_A53_INTR_I2C3 (32 + 37)
#define IMX8M_A53_INTR_I2C4 (32 + 38)
#define IMX8M_A53_INTR_RDC (32 + 39)
#define IMX8M_A53_INTR_USB1 (32 + 40)
#define IMX8M_A53_INTR_USB2 (32 + 41)
#define IMX8M_A53_INTR_CSI1 (32 + 42)
#define IMX8M_A53_INTR_CSI2 (32 + 43)
#define IMX8M_A53_INTR_MIPI_CSI1 (32 + 44)
#define IMX8M_A53_INTR_MIPI_CSI2 (32 + 45)
#define IMX8M_A53_INTR_GPT6 (32 + 46)
#define IMX8M_A53_INTR_SCTR0 (32 + 47)
#define IMX8M_A53_INTR_SCTR1 (32 + 48)
#define IMX8M_A53_INTR_ANAMIX_ALARM (32 + 49)
#define IMX8M_A53_INTR_ANAMIX_CRIT_ALARM (32 + 49)
#define IMX8M_A53_INTR_RESERVED (32 + 49)
#define IMX8M_A53_INTR_SAI3_RX (32 + 50)
#define IMX8M_A53_INTR_SAI3_RX_ASYNC (32 + 50)
#define IMX8M_A53_INTR_SAI3_TX (32 + 50)
#define IMX8M_A53_INTR_SAI3_TX_ASYNC (32 + 50)
#define IMX8M_A53_INTR_GPT5 (32 + 51)
#define IMX8M_A53_INTR_GPT4 (32 + 52)
#define IMX8M_A53_INTR_GPT3 (32 + 53)
#define IMX8M_A53_INTR_GPT2 (32 + 54)
#define IMX8M_A53_INTR_GPT1 (32 + 55)
#define IMX8M_A53_INTR_GPIO1_INT7 (32 + 56)
#define IMX8M_A53_INTR_GPIO1_INT6 (32 + 57)
#define IMX8M_A53_INTR_GPIO1_INT5 (32 + 58)
#define IMX8M_A53_INTR_GPIO1_INT4 (32 + 59)
#define IMX8M_A53_INTR_GPIO1_INT3 (32 + 60)
#define IMX8M_A53_INTR_GPIO1_INT2 (32 + 61)
#define IMX8M_A53_INTR_GPIO1_INT1 (32 + 62)
#define IMX8M_A53_INTR_GPIO1_INT0 (32 + 63)
#define IMX8M_A53_INTR_GPIO1_INT_COMB_0_15 (32 + 64)
#define IMX8M_A53_INTR_GPIO1_INT_COMP_16_31 (32 + 65)
#define IMX8M_A53_INTR_GPIO2_INT_COMB_0_15 (32 + 66)
#define IMX8M_A53_INTR_GPIO2_INT_COMP_16_31 (32 + 67)
#define IMX8M_A53_INTR_GPIO3_INT_COMB_0_15 (32 + 68)
#define IMX8M_A53_INTR_GPIO3_INT_COMP_16_31 (32 + 69)
#define IMX8M_A53_INTR_GPIO4_INT_COMB_0_15 (32 + 70)
#define IMX8M_A53_INTR_GPIO4_INT_COMP_16_31 (32 + 71)
#define IMX8M_A53_INTR_GPIO5_INT_COMB_0_15 (32 + 72)
#define IMX8M_A53_INTR_GPIO5_INT_COMP_16_31 (32 + 73)
#define IMX8M_A53_INTR_PCIE_CTRL2 (32 + 74)
#define IMX8M_A53_INTR_PCIE_CTRL2x (32 + 75)
#define IMX8M_A53_INTR_PCIE_CTRL2y (32 + 76)
#define IMX8M_A53_INTR_PCIE_CTRL2z (32 + 77)
#define IMX8M_A53_INTR_WDOG1 (32 + 78)
#define IMX8M_A53_INTR_WDOG2 (32 + 79)
#define IMX8M_A53_INTR_PCIE_CTRL2zz (32 + 80)
#define IMX8M_A53_INTR_PWM1 (32 + 81)
#define IMX8M_A53_INTR_PWM2 (32 + 82)
#define IMX8M_A53_INTR_PWM3 (32 + 83)
#define IMX8M_A53_INTR_PWM4 (32 + 84)
#define IMX8M_A53_INTR_CCMSRCGPCMIX_CCM1 (32 + 85)
#define IMX8M_A53_INTR_CCMSRCGPCMIX_CMM2 (32 + 86)
#define IMX8M_A53_INTR_CCMSRCGPCMIX_GPC1 (32 + 87)
#define IMX8M_A53_INTR_MU (32 + 88)
#define IMX8M_A53_INTR_CCMSRCGPCMIX (32 + 89)
#define IMX8M_A53_INTR_SAI5_RX (32 + 90)
#define IMX8M_A53_INTR_SAI5_RX_ASYNC (32 + 90)
#define IMX8M_A53_INTR_SAI5_TX (32 + 90)
#define IMX8M_A53_INTR_SAI5_TX_ASYNC (32 + 90)
#define IMX8M_A53_INTR_SAI6_RX (32 + 90)
#define IMX8M_A53_INTR_SAI6_RX_ASYNC (32 + 90)
#define IMX8M_A53_INTR_SAI6_TX (32 + 90)
#define IMX8M_A53_INTR_SAI6_TX_ASYNC (32 + 90)
#define IMX8M_A53_INTR_RTIC (32 + 91)
#define IMX8M_A53_INTR_CPU_PMUIRQ_0 (32 + 92)
#define IMX8M_A53_INTR_CPU_PMUIRQ_1 (32 + 92)
#define IMX8M_A53_INTR_CPU_PMUIRQ_2 (32 + 92)
#define IMX8M_A53_INTR_CPU_PMUIRQ_3 (32 + 92)
#define IMX8M_A53_INTR_CPU_NCTIIRQ_0 (32 + 93)
#define IMX8M_A53_INTR_CPU_NCTIIRQ_2 (32 + 93)
#define IMX8M_A53_INTR_CPU_NCTIIRQ_3 (32 + 93)
#define IMX8M_A53_INTR_CPU_NCTIIRQ_4 (32 + 93)
#define IMX8M_A53_INTR_CCMSRCGPCMIX_WDOG (32 + 94)
#define IMX8M_A53_INTR_SAI1_RX (32 + 95)
#define IMX8M_A53_INTR_SAI1_RX_ASYNC (32 + 95)
#define IMX8M_A53_INTR_SAI1_TX (32 + 95)
#define IMX8M_A53_INTR_SAI1_TX_ASYNC (32 + 95)
#define IMX8M_A53_INTR_SAI2_RX (32 + 96)
#define IMX8M_A53_INTR_SAI2_RX_ASYNC (32 + 96)
#define IMX8M_A53_INTR_SAI2_TX (32 + 96)
#define IMX8M_A53_INTR_SAI2_TX_ASYNC (32 + 96)
#define IMX8M_A53_INTR_MU_M4 (32 + 97)
#define IMX8M_A53_INTR_DDR (32 + 98)
#define IMX8M_A53_INTR_SAI4_RX (32 + 100)
#define IMX8M_A53_INTR_SAI4_RX_ASYNC (32 + 100)
#define IMX8M_A53_INTR_SAI4_TX (32 + 100)
#define IMX8M_A53_INTR_SAI4_TX_ASYNC (32 + 100)
#define IMX8M_A53_INTR_CPU_ERR_AXI (32 + 101)
#define IMX8M_A53_INTR_CPU_L2_RAM_ECC (32 + 102)
#define IMX8M_A53_INTR_SDMA2 (32 + 103)
#define IMX8M_A53_INTR_RESERVED4 (32 + 104)
#define IMX8M_A53_INTR_CAAM_WRAPPER (32 + 105)
#define IMX8M_A53_INTR_CAAM_WRAPPERx (32 + 106)
#define IMX8M_A53_INTR_QSPI (32 + 107)
#define IMX8M_A53_INTR_TZASC (32 + 108)
#define IMX8M_A53_INTR_RESERVED1 (32 + 109)
#define IMX8M_A53_INTR_RESERVED2 (32 + 110)
#define IMX8M_A53_INTR_RESERVED3 (32 + 111)
#define IMX8M_A53_INTR_PERFMON1 (32 + 112)
#define IMX8M_A53_INTR_PERFMON2 (32 + 113)
#define IMX8M_A53_INTR_CAAM_WRAPPER_JQ (32 + 114)
#define IMX8M_A53_INTR_CAAM_WRAPPER_RECOVER (32 + 115)
#define IMX8M_A53_INTR_HS_IRQ (32 + 116)
#define IMX8M_A53_INTR_HEVCDEC (32 + 117)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_BUFFER_DONE (32 + 118)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FRAME_DONE (32 + 118)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_BUFFER_DONE (32 + 118)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_FRAME_DONE (32 + 118)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_BUFFER_DONEx (32 + 119)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FRAME_DONEx (32 + 119)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_BUFFER_DONEx (32 + 119)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_FRAME_DONEx (32 + 119)
#define IMX8M_A53_INTR_ENET1_MAC0_PERI_TIMER_OF (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_TIME_STAMP_AVAIL (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_PAYLOAD_RX_ERROR (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_FIFO_UNDERRUN (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_COLL_RETRY_LIMIT (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_LATE_COLLISION (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_ETHERNET_BUS_ERROR (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_MII_DATA_TRANSFER (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_BUFFER_DONEy (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FRAME_DONEy (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_BUFFER_DONEy (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_TX_FRAME_DONEy (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_GRACEFUL_STOP_ (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_BABBLING_TX_ERR (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_BABBLING_RX_ERR (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FLUSH_FRAME0 (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FLUSH_FRAME1 (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_RX_FLUSH_FRAME2 (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_WAKEUP_REQUEST_SYNC (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_BABBLING_RX_ERR (32 + 120)
#define IMX8M_A53_INTR_ENET1_MAC0_WAKEUP_REQ_SYNC (32 + 120)
#define IMX8M_A53_INTR_ENET1_1588_INTR (32 + 121)
#define IMX8M_A53_INTR_PCIE_CTRL1 (32 + 122)
#define IMX8M_A53_INTR_PCIE_CTRL1x (32 + 123)
#define IMX8M_A53_INTR_PCIE_CTRL1y (32 + 124)
#define IMX8M_A53_INTR_PCIE_CTRL1z (32 + 125)
#define IMX8M_A53_INTR_RESERVED5 (32 + 126)
#define IMX8M_A53_INTR_PCIE_CTRL1zz (32 + 127)
/* USB PHY CTRL Registers (undocumented) */
#define USB_PHY_CTRL0 (0xF0040)
#define PHY_CTRL0_REF_SSP_EN (1 << 2)
#define USB_PHY_CTRL1 (0xF0044)
#define PHY_CTRL1_RESET (1 << 0)
#define PHY_CTRL1_ATERESET (1 << 3)
#define PHY_CTRL1_VDATSRCENB0 (1 << 19)
#define PHY_CTRL1_VDATDETENB0 (1 << 20)
#define USB_PHY_CTRL2 (0xF0048)
#define PHY_CTRL2_TXENABLEN0 (1 << 8)