IMX8MPRM
IMX8MPRM
Chapter 1
Introduction
1.1 Product Overview ............................................................................................................................................................. 9
Chapter 2
Memory Map
2.1 Memory system overview................................................................................................................................................23
Chapter 3
Security
3.1 System Security............................................................................................................................................................... 41
Chapter 4
Arm Platform and Debug
4.1 Arm Cortex A53 Platform (A53).....................................................................................................................................91
Chapter 5
Clocks and Power Management
5.1 Clock Control Module (CCM).......................................................................................................................................229
Chapter 6
SNVS, Reset, Fuse, and Boot
6.1 System Boot................................................................................................................................................................... 747
Chapter 7
Interrupts and DMA
7.1 Interrupts and DMA Events........................................................................................................................................... 995
Chapter 8
Chip IO and Pinmux
8.1 External Signals and Pin Multiplexing........................................................................................................................ 1335
Chapter 9
External Memory
9.1 External Memory Overview........................................................................................................................................ 2005
Chapter 10
Mass Storage
10.1 Enhanced Configurable SPI (ECSPI).......................................................................................................................... 2355
Chapter 11
Connectivity
11.1 HSIO BLK_CTRL....................................................................................................................................................... 2677
Chapter 12
Timers
12.1 General Purpose Timer (GPT)..................................................................................................................................... 5163
Chapter 13
Display, Imaging, and Camera
Chapter 14
Audio
14.1 Audio Overview...........................................................................................................................................................5985
Chapter 15
Graphics Processing Unit (GPU)
15.1 GPU Overview.............................................................................................................................................................6283
Chapter 16
Video Processing Unit (VPU)
16.1 VPU G1 Decoder......................................................................................................................................................... 6307
Chapter 17
Low Speed Communication and Interconnects
17.1 I2C Controller (I2C).................................................................................................................................................... 7343
Term Meaning
ADC Analog-to-Digital Converter
AHB Advanced High-performance Bus
AIPS Arm IP Bus
ALU Arithmetic Logic Unit
AMBA Advanced Microcontroller Bus Architecture
APB Advanced Peripheral Bus
ASRC Asynchronous Sample Rate Converter
AXI Advanced eXtensible Interface
CA/CM Arm Cortex-A/Cortex-M
CAAM Cryptographic Acceleration and Assurance Module
CA53 Arm Cortex A53 Core
CAN Controller Area Network
CM7 Arm Cortex M7 Core
CPU Central Processing Unit
CSI CMOS Sensor Interface
CSU Central Security Unit
CTI Cross Trigger Interface
D-cache Data cache
DAP Debug Access Port
DDR Double data rate
DMA Direct memory access
DPLL Digital phase-locked loop
DRAM Dynamic random access memory
ECC Error correcting codes
ECSPI Enhanced Configurable SPI
LPSPI Low-power SPI
EDMA Enhanced Direct Memory Access
EIM External Interface Module
ENET Ethernet
EPIT Enhanced Periodic Interrupt Timer
EPROM Erasable Programmable Read-Only Memory
ETF Embedded Trace FIFO
ETM Embedded Trace Macrocell
FIFO First-In-First-Out
GIC General Interrupt Controller
GPC General Power Controller
GPIO General-Purpose I/O
GPR General-Purpose Register
GPS Global Positioning System
Term Meaning
GPT General-Purpose Timer
GPU Graphics Processing Unit
GPV Global Programmers View
HAB High-Assurance Boot
I-cache Instruction cache
I2C or I2C Inter-Integrated Circuit
IC Integrated Circuit
IEEE Institute of Electrical and Electronics Engineers
IOMUX Input-Output Multiplexer
IP Intellectual Property
IrDA Infrared Data Association
ISP Image Signal Processor
JTAG Joint Test Action Group (a serial bus protocol usually used for test purposes)
ELCDIF Liquid Crystal Display Interface
LDO Low-Dropout
LIFO Last-In-First-Out
LRU Least-Recently Used
LSB Least-Significant Byte
LUT Look-Up Table
LVDS Low Voltage Differential Signaling
MAC Medium Access Control
MCM Miscellaneous Control Module
ML Machine Learning
MMC Multimedia Card
MSB Most-Significant Byte
MT/s Mega Transfers per second
NPU Neural Processing Unit
OCRAM On-Chip Random-Access Memory
OCOTP On-Chip One-Time Programmable Controller
PCI Peripheral Component Interconnect
PCIe PCI express
PGC Power Gating Controller
PIC Programmable Interrupt Controller
PMU Power Management Unit
POR Power-On Reset
PSRAM Pseudo-Static Random Access Memory
PWM Pulse Width Modulation
PXP Pixel Pipeline
QoS Quality of Service
R2D Radians to Degrees
RISC Reduced Instruction Set Computing
Term Meaning
ROM Read-Only Memory
RTOS Real-Time Operating System
Rx Receive
SAI Synchronous Audio Interface
SD Secure Digital
SDIO Secure Digital Input/Output
SDLC Synchronous Data Link Control
SDMA Smart DMA
SIM Subscriber Identification Module
SNVS Secure Non-Volatile Storage
SoC System-on-Chip
SPBA Shared Peripheral Bus Arbiter
SPDIF Sony Philips Digital Interface
SPI Serial Peripheral Interface
SRAM Static Random-Access Memory
SRC System Reset Controller
TFT Thin-Film Transistor
TPIU Trace Port Interface Unit
TSGEN Time Stamp Generator
Tx Transmit
TZASC TrustZone Address Space Controller
UART Universal Asynchronous Receiver/Transmitter
USB Universal Serial Bus
USDHC Ultra Secured Digital Host Controller
WDOG Watchdog
WLAN Wireless Local Area Network
WXGA Wide Extended Graphics Array
1.4.2 Features
• Clock control module (CCM) provides centralized clock generation and control
• Simplified clock tree structure
• Unified clock programming model for each clock root
• Multicore awareness for resource domains
• System reset controller (SRC) provides reset generation and distribution
1.4.2.8 Timers
The timers on this chip include:
• Video Encode:
• 1080p60 AVC/H.264 encoder
• 1080p60 HEVC/H.265 encoder
• TrustZone support
1.4.2.13 Audio
Audio include the following:
• Audio DSP
• S/PDIF Input and Output, including a Raw Capture input mode
• Six external SAI (synchronous audio interface) modules supporting I2S, AC97,
TDM, codec/DSP and DSD interfaces, comprising one SAI with 8 TX and 8 RX
lanes, one SAI with 4 TX and 4 RX lanes, two SAI with 2 TX and 2 RX lanes, and
two SAI with 1 TX and 1 RX lanes.
• PDM Microphone Interface module which supports up to 8-microphones (4 lanes)
• Asynchronous Sample Rate Converter (ASRC) module which supports:
• Processing of up to 32 audio channels
• 4 context groups
• 8 kHz to 384 kHz sample rate
• 1/16 to 8x sample rate conversion ratio
• One Gigabit Ethernet controller with support for EEE, Ethernet AVB and
IEEE1588
• One Gigabit Ethernet controller with support for TSN, EEE, Ethernet AVB and
IEEE1588
• Two controller area network (FlexCAN) modules, each optionally supporting
flexible datarate (FD)
• Four universal asynchronous receiver/transmitter (UART) modules
• Six I2C modules
• Three SPI modules
1.4.2.15 Security
The Quad-A53 core on i.MX 8M Plus is enabled during boot as the primary core to
handle the entire secure boot flow. The chip will always boot from the A53 core first, the
M7 core will be held in reset during the A53 boot and won’t run until it is enabled by the
A53 core. The image for the M7 core will be loaded into memory and authenticated by
the A53 core.
3.1.1 Overview
The security system modules are described in the sections below.
NOTE
This chapter provides a brief overview of the security features
that are available for this chip. Please refer to the chip's
Security Reference Manual for additional details on the security
features.
• 3 Job Rings
• RTIC (real time integrity checking)
• AES, DES, 3DES support
• Widevine cipher text stealing (AES-CBC-CTS mode)
• PlayReady content protection
In order to provide better video content protection, CAAM also supports the domain
based resource protection.
NOTE
The RDC and TrustZone features are completely independent
of each other but will be used together.
NOTE
The Security Support column in the table indicates if the
Trustzone Secure-World attribute is supported for the
respective memory space.
3.1.7 TrustZone
TrustZone security architecture is supported in the chip. For on-chip RAM, both
OCRAM/OCRAM_S have TrustZone access control support through its TZ wrapper
logic. One region with configurable address range of the OCRAM/OCRAM_S can be set
to TZ access only. DRAM has a dedicated TZASC block that can support up to 16
configurable memory regions.
3.2.1 Overview
The Resource Domain Controller (RDC) provides robust support for the isolation of
destination memory mapped locations such as peripherals and memory to a single cluster,
a bus master, or set of clusters and bus masters.
For efficiency reasons the code on the clusters may share chip resources such as
peripherals and memory. The sharing of chip resources between the somewhat
independent processing domains allows for the opportunity of data collisions where
information stored in peripherals or memory by a process on one cluster is overwritten by
software running on another cluster. Without careful collaboration between the two
operating systems inadvertent malfunction or degradation in performance may result.
The RDC provides a mechanism to allow boot time configuration code to establish
resource domains by assigning clusters, bus masters, peripherals and memory regions to
domain identifiers. Once configured, bus transactions are monitored to restrict accesses
initiated by clusters and bus masters to their respective peripherals and memory.
For shared peripherals, the RDC provides a semaphore-based locking mechanism to
provide for temporary exclusivity while the domain software uses the peripheral. Once
the software of one domain has finished the task and finished with the peripheral then it
may release the semaphore making the peripheral available to the other domain.
3.2.1.2 Features
Resource domain subsystem has the following features:
• Assignment of clusters, bus masters, peripherals, and memory regions to a resource
domain
• Fixed memory resolution of 128 Bytes for small address spaces and 4 KB for large
address spaces
• Four resource domain identifiers (DIDs)
• Memory read/write access controls for each resource domain and region
• Optional semaphore-based, hardware-enforced exclusive access of shared peripherals
to a resource domain
• Prioritized access permissions for overlapping memory regions
• Automatic restoration of resource domain access permissions to memory regions in
the power-down domain
Memory Read or Write access privileges for each resource domain are declared for each
memory region. In addition, the software configuration determines which shared
peripherals (those peripherals allocated to more than one domain) require safe sharing by
setting the semaphore-required configuration for each peripheral.
The RDC configuration information is sent to the fabric ports, memories gaskets,
semaphore controller, and peripherals to control access based on domain assignments.
The fabric uses the domain identifier associated with each port to include this information
along with the bus transaction. When the slave gasket encounters a bus transaction, it
makes a comparison of the transaction domain ID to the RDC-provided list of allowed
domains. If the transaction domain ID is on the list, then access may be permitted.
DEXSC OCRAM
D0 Core
main
fabric TZASC DDRC
DEXSC
switch
D1 Core fabric
SPBA Periph
switch CAAM
DEXSC Secure RAM
fabric
D0 Periph
D1 Periph
SEMA42
AIPS-TZ (Shared)
Allowed Gate
Domains Locks
RDC
(D0 TZ
Locked)
Peripheral Permissions
For shared peripherals, RDC permits more than one domain access to a single peripheral.
RDC also provides three ways to control synchronized use of shared peripherals. These
methods include hardware-enforced synchronization, software-based semaphores, or no
synchronization. The latter may be suitable for well-tuned multi-cluster operating
systems that handle synchronization in the cluster platform, for instance.
For hardware-enforced synchronization, also known as "safe sharing", ownership of the
peripheral must be claimed in the semaphore controller before access is allowed to the
shared peripheral. Each shared peripheral has a corresponding Peripheral Domain Access
Permissions (PDAP) register. When the Semaphore Required (SREQ) bit in a PDAP
register is set, a master cannot access this shared peripheral until obtaining a semaphore.
During the time that the domain has the semaphore in possession, its bus masters have
exclusive access to the peripheral.
When the semaphore is released, then no domain masters have access until the semaphore
is obtained again. When the SREQ bit is set, RDC module does not allow masters to
obtain semaphores of peripherals to which the domain is not allocated; the master must
have designated access in the D-bits of the corresponding PDAP register (for example,
D1R bit set for Domain 1 access of the shared peripheral). There is a one-to-one mapping
between the semaphore controller gate and the resource domain controller peripheral. The
mapping of PDAP registers and peripherals can be found in the Peripheral Map section of
the RDC chapter.
3.2.2.1 Domain ID
The RDC provides for an isolation of domain resources by use of an identifier called the
Domain ID (DID). A cluster and its resources including memory, bus masters, and
peripherals are all associated with a single DID. When software or a DMA attempts to
access a peripheral or memory, the corresponding bus transaction includes the DID along
with the other bus control information such as Read, Write, and privilege mode.
The RDC itself should be isolated to ensure that only a trustworthy resource manager can
configure the RDC registers. This process may either be present initially during secure
boot, or during the runtime in the secure world, for example. If the operating system does
not support a runtime trusted execution, then during the secure boot process the RDC
configuration can be locked to prevent further modification after the operating systems
are running.
NOTE
The CCM supports multi-cluster awareness based on resource
domain assignments programmed into the RDC. Refer to the
CCM chapter regarding the relationship between cluster
resource domains and their respective CCM resources. Failing
to follow the proper sequence when updating the resource
domain assignments of the cluster can result in clocks being
inadvertently gated.
For a domain to acquire a lock on a peripheral, the domain must have been assigned to
the peripheral in the RDC Peripheral Domain Access Permissions register (PDAP). The
semaphore module only allows safe-sharing locks for those domains that are assigned to
the peripheral. The semaphore module does not consider the access type (Read or Write)
when allowing domains to acquire locks.
The SEMA42 module implements hardware-enforced semaphores as an IPS-mapped
slave peripheral device. The feature set includes:
• Module definition supporting 64 hardware-enforced gates in a multi-processor
configuration, where up to 15 processors can be supported; cpX is meant to represent
cluster processor X
• Gates appear as an n-entry byte-size array with read and write accesses (n = 64).
• Processors lock gates by writing "Master_index" to the appropriate gate and
must read back the gate value to verify the lock operation was successful.
The Master_index value for the processors can be found in the Master Index
Allocation table, which can be found in the AIPSTZ block. Also note that
after locking, the gate register contains the master_id value of the locking
processor (in the field GTFSM ), and also the value of the locking domain
(in the field LDOM ).
• Once locked, the gate is unlocked by a write of zeroes from the locking
processor.
• The number of implemented gates is specified by a hardware configuration
define.
• Each hardware gate appears as a 16-state, 4-bit state machine.
• 16-state implementation
if gate = 0x0, then state = unlocked
if gate = 0x1, then state = locked by processor (master_index) 0
if gate = 0x2, then state = locked by processor (master_index) 1
…
if gate = 0xF, then state = locked by processor (master_index) 14
Therefore, access to the security controls should be restricted to the most trustworthy
operating mode of the cluster and privilege levels should be coordinated to ensure that
shared peripherals and memory regions are accessible by both clusters. For instance, if a
memory region is designated for secure accesses then all domain masters that share that
region must have secure privileges.
Higher Power
Memory ON
Global Power
RDC
Control
System Bus
Memory Regions
Higher Power
Memory
1. Whether or not the actual start/end address needs right-shift by 1-bit, then filled into MRSA and MREA.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0
Indicates the number of domain IDs supported by this instance of the RDC. For example, value '0010'
means the actual number of domains is 2.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved PDS Reserved DID
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
The Domain ID of the core or bus master that is reading this. The value is different for requests from
different domains.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RCI_EN
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R INT
Reserved
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 No Interrupt Pending
1 Interrupt Pending
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
LCK Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved DID
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
SREQ
LCK Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 Not Locked
1 Locked
30 Semaphore Required
SREQ
When set the hardware semaphore state enforces the semaphore lock. If a domain has access
permissions and a semaphore has locked a shared peripheral then only the domain holding the
semaphore signal can access this peripheral.
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
SADR Reserved
Reset x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
* Notes:
• x = Undefined at reset.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
EADR Reserved
Reset x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
* Notes:
• x = Undefined at reset.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
LCK ENA Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved D3R D3W D2R D2W D1R D1W D0R D0W
Reset 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R VADR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R VADR AD VDID
Reserved
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The domain ID of the denied access. The first access violation is captured. Subsequent violations are
ignored until the status register is cleared. Contents are cleared upon reading the register.
00 Processing Domain 0
01 Processing Domain 1
10 Processing Domain 2
11 Processing Domain 3
Only Supervisor Mode accesses are allowed on these registers. User accesses generate an
error termination.
RDC_SEMAPHORE memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
303B_0000 Gate Register (RDC_SEMAPHORE1_GATE0) 8 R/W 00h 3.2.6.1/86
303B_0001 Gate Register (RDC_SEMAPHORE1_GATE1) 8 R/W 00h 3.2.6.1/86
303B_0002 Gate Register (RDC_SEMAPHORE1_GATE2) 8 R/W 00h 3.2.6.1/86
303B_0003 Gate Register (RDC_SEMAPHORE1_GATE3) 8 R/W 00h 3.2.6.1/86
303B_0004 Gate Register (RDC_SEMAPHORE1_GATE4) 8 R/W 00h 3.2.6.1/86
303B_0005 Gate Register (RDC_SEMAPHORE1_GATE5) 8 R/W 00h 3.2.6.1/86
303B_0006 Gate Register (RDC_SEMAPHORE1_GATE6) 8 R/W 00h 3.2.6.1/86
303B_0007 Gate Register (RDC_SEMAPHORE1_GATE7) 8 R/W 00h 3.2.6.1/86
303B_0008 Gate Register (RDC_SEMAPHORE1_GATE8) 8 R/W 00h 3.2.6.1/86
303B_0009 Gate Register (RDC_SEMAPHORE1_GATE9) 8 R/W 00h 3.2.6.1/86
303B_000A Gate Register (RDC_SEMAPHORE1_GATE10) 8 R/W 00h 3.2.6.1/86
303B_000B Gate Register (RDC_SEMAPHORE1_GATE11) 8 R/W 00h 3.2.6.1/86
Table continues on the next page...
Read 0 LDOM
GTFSM
Write
Reset 0 0 0 0 0 0 0 0
The state of the gate reflects the last processor that locked it, which can be useful during system debug.
The hardware gate is maintained in a 16-state implementation, defined as:
gate(s) to be reset. This gate field can specify a single gate be cleared, or else that all
gates are to be cleared. If the same processor writes incorrect data on the second
access or another processor performs the second write access, the special gate reset
sequence is aborted and no error signal will be asserted.
3. Reads of the RDC_SEMA42RSTGT location return information on the 2-bit state
machine (RDC_SEMA42RSTGT[RSTGSM]) that implements this function, the bus
master performing the reset (RDC_SEMA42RSTGT[RSTGMS]), and the gate
number(s) last cleared (RDC_SEMA42RSTGT[RSTGTN]). Reads of the
RDC_SEMA42RSTGT register do not affect the secure reset finite state machine in
any manner.
Address: Base address + 42h offset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Read 0
RSTGTN
Write RSTGDP
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.1.1 Overview
The Cortex-A53 cluster is a mid-range, low-power processor that implements the
ARMv8-A architecture. The Cortex-A53 cluster has four cores, each with an L1 memory
system and a single shared L2 cache that has a set of additional functions, which are
included in a single APR region.
The core supports debug through real-time trace via ETM, and static debug via JTAG.
The core platform supports static debug through the debug logic to SoC. This includes
the capability of real-time trace via ARM's CoreSight ETM modules. The CTI and CTM
modules allow cross-triggering of internal and external trigger sources.
Quad A53
Cortex
Cortex A53
A53 Counter
CortexMPCore
A53
CortexMPCore
A53
MPCore
MPCore CPU0
CPU0
Timer events
CPU0
CPU0 Neon Interrupts
I$ I$
Neon
Neon
I$ 32K D$
Neon
I$ I$
I$32K32K D$
I$32K32K D$ 32K
I$ 32K D$ 32K
32K 32K
32K 32K Clocks
Resets
Snoop Control Unit
(SCU) Config
L2 Cache
(512KB) APB
ATB
CTM
AXI3 master
Interface
4.1.1.2 Features
• 4x cores
• L1 instruction cache 32K
• L1 data cache 32K with SECDED
• Advanced SIMD (NEON) per core
• Crypto extension per core
• AMBA AXI3 interface
• No ACP is included
• utilizes the ARMv8 debug map
• 512KB of L2 Cache
• 512KB with Single-bit Error Correct and Double-bit Error Detect (SECDED)
• Input latency 2 cycles
• Output latency 2 cycles
• SCU-L2 cache protection
The configuration of the bus, cores and memory are detailed in the sections below. The
core revision is CORTEXA53-r0p4-52rel0.
The Cortex-A53 processor implements the GIC CPU interface as described in the
Generic Interrupt Controller (GICv4) architecture. This interfaces with an external GICv3
or GICv4 interrupt distributor component within the system. The GICv4 architecture
supports:
• Two security states
• Interrupt virtualization
• Software-generated Interrupts (SGIs)
• Message Based Interrupts
• System register access
• Memory-mapped register access
• Interrupt masking and prioritization
• Cluster environments
• Wake-up events in power management environments
The GIC includes interrupt grouping functionality that supports:
• Signaling interrupt groups to the target core using either the IRQ or the FIQ
exception request, based on software configuration
• A unified scheme for handling the priority of Group 0 and Group 1 interrupts.
NOTE
GIC-500 supports limited backwards compatibility with GICv2.
When GIC-500 is in backwards compatibility mode, only
Cortex-A53 processors can access registers in GIC region,
while Cortex-M7 and other masters in the system, including the
Debug Access Port (DAP), can not. Cortex-A53 processors,
Cortex-M7 and DAP can access GIC region when GIC-500 is
not in backwards compatibility mode.
4.1.2.1.4 L1 Cache
The L1 instruction memory system has the following features:
• 32KB Instruction Cache
• Instruction side cache line length of 64 bytes
• 2-way set associative L1 Instruction cache
• 128-bit read interface to the L2 memory system
• 32KB Data Cache
• Data side cache line length of 64 bytes
• 4-way set associative L1 Data cache
• 256-bit write interface to the L2 memory system
• 128-bit read interface to the L2 memory system
• Read buffer that services the Data Cache Unit (DCU), the Instruction Fetch Unit
(IFU) and the TLB
• 64-bit read path from the data L1 memory system to the datapath
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
92 NXP Semiconductors
Chapter 4 Arm Platform and Debug
4.1.2.1.5 L2 Cache
The L2 cache consists of an integrated Snoop Control Unit (SCU), connecting four cores
within the A53 cluster. The SCU also has duplicate copies of the L1 Data cache tags for
coherency support. The L2 memory system interfaces to the external memory system
through an AMBA 128-bit bus. The tightly-coupled L2 cache includes the following
features:
• 1MB shared cache size
• AMBA AXI3 interface
• Fixed line length of 64 bytes
• Physically indexed and tagged cache
• 16-way set-associative cache structure
• No ACP support
• ECC/parity support
4.1.2.2 Power
There are several power states supported by the A53 Core Complex. Supported primary
states are listed below:
• Run – At least one of 4 cores is running. The other cores may either be running,
clock gated, or powered down.
• L2 only coherent – The L2 is powered up and servicing snoops. The cores are
stopped (either powered down or clock gated). In this state the cache is retained
coherent to the system.
• L2 only non-coherent – Both cores are stopped and powered down, the logic in the
L2 controller are retaining the arrays only. In this state the L2 is not coherent, and as
a result, the other AP cores must also be stopped.
• Cluster Off – The L2 has been flushed from the L2 only coherent state, using the
HW flush mechanism (no core required). Then the cluster is fully powered off
including the L2 arrays.
The power supply for the cluster is separated into two regions. The first is the control
domain and second is for the remainder of the cluster (core and cluster domains). These
regions are listed below:
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 93
Arm Cortex A53 Platform (A53)
• Control domain – The AON control domain contains the controls for powering up
and down the rest of the core. The control domain is always powered on first and
powered off last.
• Core domains – The core domains contains the whole core. The supply for the core
domains is the same as the cluster domain, but require separate power down
switches.
• Cluster domain – The cluster domain contains the rest of the cluster outside of the
cores, which includes the shared logic of the L2 memory. The supply for the cluster
power domain is the same as the core domains, but does not require power switches
as it's shut down externally.
Isolation cells are required between each of these domains and is controlled by the signals
on the control domain. These cells are necessary to force the output signal to be isolated
to null values when the local power shuts down.
13. SCU starts the lead core. Other cores are started upon request
4.1.2.3 Clocking
The A53 platform is provided a main processor clock that supplies the component clocks
to the cluster components, including CoreSight debug components. The maximum
frequency targets are specified in the chip datasheet.
The cores are intended to support up to 1.8 GHz dependent on forward bias within the
operating temperature range. Please see the datasheet for more information. The clocks
are described in the table below:
Table 4-1. A53 Clocks
Clock Signal Clock Name Frequency Description
Main Clock CLKIN Target Main input clock.
APB Clock PCLKENDBG CLKIN/4 APB clock controls the timing on the debug port.
Fixed frequency ratio to main frequency.
AXI3 Bus Clock ACLKENM CLKIN/2 AXI3 Interface bus clock.
ATB Clock ATCLKEN CLKIN/4 ATB clock provides the clocks or outgoing trace.
This clock needs to be reasonably high to enable
sending samples out, but also needs to be the
same as CNTCLKEN. Link to same signal as
CNTCLKEN (1:4 core frequency fixed ratio).
4.2.1 Overview
The Cortex-M7 platform features a single Arm®Cortex®-M7 processor in this chip. The
Arm®Cortex®-M7 processor is a highly efficient, high-performance, embedded
processor that features low interrupt latency, low-cost debug, and has backwards
compatibility with existing Cortex-M profile processors. The processor has an in-order
super-scalar pipeline by which many instructions can be dual-issued, including load/load
and load/store instruction pairs because of multiple memory interfaces.
Memory interfaces that the processor supports include:
• Tightly-Coupled Memory (TCM)
• Harvard instruction and data caches and AXI master (AXIM) interface
The Arm Cortex-M7 Platform supports the following:
• 32 KB L1 Instruction Cache
• 32 KB L1 Data Cache
• Floating Point Unit (FPU) with support for the FPv5 architecture
• Internal Trace (TRC)
The number of IRQs supported for this chip is 160. In addition, it supports various
components composing the Arm CoreSight debug/Trace system, such as ETM and CTI.
NOTE
This chip supports up to 16 interrupt priority levels, i.e. it
implements bits [7:4] of each NVIC Interrupt Priority Register.
AHBS
32-bit
Cortex-M7TM
64 KB
DTCM0
128 KB TCU
ITCM 64 KB
DTCM1
AHBD
32-bit NVIC FPU MPU ATB
32 KB 32 KB
BIU
I-cache D-cache
AXIM
4.2.1.2 Features
The Cortex-M7 platform in this chip has the following features.
• 1× Cortex M7 processor: architecture Arm v7E-M
• floating point unit (FPU) FPv5 including single and double precision
• bus interface 64-bit AMBA AXI3, 32-bit AMBA AHB slave port, AMBA AHB
debug interface for CoreSight components
• 32 KB instruction / 32 KB data L1 caches
• 128 KB ITCM / 128 KB DTCM
• 16 regions of MPU
• non-maskable (NMI) + 160 IRQs
• 16 interrupt priority levels (4-bits)
• sleep (WAIT) and deep sleep (STOP) power modes
• full debug with 8 breakpoints and 4 watchpoints
4.2.2.1 Clocks
Table 4-2. Arm Cortex-M7 Clocks
Clock Name Description
ARM_M7_CLK_ROOT M7 core clock
4.3.1 Overview
The Messaging Unit (MU) module enables two processors within the SoC to
communicate and coordinate by passing messages (e.g. data, status and control) through
the MU interface. The MU also provides the ability for one processor to signal the other
processor using interrupts.
Because the MU manages the messaging between processors, the MU uses different
clocks (from each side of the different peripheral buses). Therefore, the MU must
synchronize the accesses from one side to the other. The MU accomplishes
synchronization using two sets of matching registers (Processor A-facing, Processor B-
facing).
Processor A Processor B
TX / RX TX / RX
Registers Registers
Generate Generate
Interrupts Interrupts
Interrupts to Interrupts to
Processor A Processor B
interrupt interrupt
controller controller
4.3.1.2 Features
The MU includes the following features:
• Messaging control by interrupts or by polling
• Symmetrical processor interfaces with each side supporting the following:
• Four general-purpose interrupt requests reflected to the other side
• Three general-purpose flags reflected to the other side 1
• Four receive registers with maskable interrupt
• Four transmit registers with maskable interrupt
• The above interrupts can also be used for waking up the other processor from low-
power mode.
NOTE
MU chapter references to Processor A correspond to Core
Complex 0 and references to Processor B correspond to Core
Complex 1 in this device.
1. For example, MUA (Processor A) can set the flag to MUB (Processor B), and MUB(Processor A) can set the
flag to MUA(Processor A).
If the Processor is in STOP mode and an event on the other Processor is triggered, the EP
bit (in the xSR register) will remain high until the Processor wakes up.
Before entering STOP mode, the Processor programmer should verify that the EP bit (in
the xSR register) is cleared. This check is needed to ensure that all pending updates from
the Processor, including the power mode change when STOP or WAIT is executed, will
be updated in the xSR register.
• If the other Processor is in STOP mode or DSM mode, the EP bit (in the xSR
register) may be stuck high; in this case, the Processor need not check the EP bit
before entering STOP mode.
4.3.2.5 MU Messaging
The MU provides 32-bit status and control registers to the Processor B and Processor A
sides for control operations (such as interrupts and reset), and for status checking of the
other MU-side.
For messaging, the MU has four, 32-bit write-only transmit registers and four, 32-bit
read-only receive registers on the Processor B and Processor A-sides. These registers are
used for sending messages to each other. These messages can also be controlled using the
3 general purpose flags provided in the control and status registers of either MU-side.
messaging logic independent from the memory array does not restrict users to a
predefined hardware protocol. On the other hand, the software needed to manage the
messaging is short and straightforward.
Most of the messaging mechanisms are symmetric; they are duplicated and are available
on both the Processor B-side and the Processor A-side. The messaging mechanisms are:
• Four, 32-bit write-only transmit registers, which are each reflected in four, read-only
receive registers in the other processor’s side. Users can use these registers to transfer
32-bit word messages or frame information of messages written to the shared
memory (number of words, initial address, and message type code).
• A write to a transmit register on the transmitter side clears a “transmitter empty” bit
in the Status Register on the transmitter side, and sets a “receiver full” bit in the
Status Register on the receiver side. The setting of the bit at the receiver side can
optionally trigger an interrupt at the receiver side (maskable receive interrupt).
• A read of one of the receive registers at the receiver side clears the “receiver full” bit
in the Status Register at the receiver side, and sets the “transmitter empty” bit in the
Status Register on the transmitter side. The setting of the “transmitter empty” bit can
optionally trigger an interrupt at the transmitter side (maskable transmit interrupt).
• Four general purpose flags are reflected in the Status Register on the receiver side
• A read/write access to any reserved location and a write to a read-only register on the
Processor A-side of the MU will generate a module transfer error acknowledge to the
Processor A.
• A read/write access to any reserved location and write to a read-only register on the
Processor B-side of the MU will generate a module transfer error acknowledge to the
Processor B.
• Passing event notices and requests: Events and requests that do not include data
words can be signaled from the Processor B to the Processor A using the general
interrupts, such as acknowledging that a long message was read from the shared
system memory.
• Passing fixed length data: Formatted data with a fixed length can be written in
predetermined locations in the shared memory. A processor can use a general
interrupt (Processor A or Processor B) to signal the other processor that the data is
ready.
• Passing announcements: The three flags can be used by a processor to announce its
current program state or other billboard messages to the other processor.
Figure 4-4 shows the MU registers schematic.
Processor Other
Processor
Messaging Unit (MU)
xCR xSR
xSR xCR
xRR0-3 xTR0-3
xTR0-3 xRR0-3
• The minimum event latency is “1 clock of the sending side” + “2 1/2 clocks of the
receiving side”. The minimum case is if there is no event pending when the new
event occurs. See clocking chapter for this device for more information about clock
sources.
• The maximum event latency is “6 clocks of the sending side” + “6 1/2 clocks of the
receiving side.” The maximum case is if the event occurred just after a previous
event was sent to the other side. The event update latency will vary between the
above-mentioned minimum and maximum latencies, depending on the time at which
the subsequent event is triggered.
4.3.2.7 Reset
The MU has two sources of reset, and each reset has a different function from the MU or
system perspective.
• One asynchronous system that is connected to both sides of the MU interface.
• One programmable hardware reset (MUR bit) in the ACR register (on the Processor
A-side).
Table 4-4. MU programmable resets
Reset Description
Processor A MU reset • Processor A MU Reset bit (MUR) of the ACR register
• The MUR reset affects the messaging section on both the Processor A and the
Processor B sides. The MUR reset causes all control and status registers to
return to their default values and all internal states to be cleared.
• It is up to the Processor A software to decide whether to use the MUR reset or
not.
• The instruction immediately following assertion of the MUR bit should not write to
MU registers. Such a write may be overwritten by the reset sequence and the
register will remain with the reset value. Wait at least one instruction (after
assertion of the MUR bit) before attempting a write to MU registers.
After issuing MUR bit reset events, the Processor A programmer can verify that the reset
sequence on the Processor B-side has ended, by checking the RS bit in the ASR register.
NOTE
MUR bit assertion is a delicate operation because it affects the
other side’s registers asynchronously. MUR bit assertion may
cause unpredictable behavior if, for example, the Processor B is
concurrently testing an MU register bit (TE bit in Processor B
SR register). Before asserting the MUR bit, it should be verified
that the Processor B is not presently engaged in an MU
signalling activity.
4.3.2.8 Interrupts
The MU controls the Processor B interrupt requests to the Processor A, and the Processor
A interrupt requests to the Processor B. This section describes all the interrupts that the
module generates.
Processor A Processor B
Registers
Registers
1 4
Tx Status Rx Status
2 5
read from 4th TEn clear
RFn write from 4th
set Rx Full
Tx Empty
receive register set clear transmit register
triggers interrupt triggers interrupt
Tx Control Rx Control
NOTE
The Transmit registers can be used to pass frame information
on long messages written to the shared memory. Such frame
information would typically include an initial address, number
of words, and perhaps a message type code.
The messaging hardware can be used by software to implement messaging protocols for a
wide array of message types. Full support is given for both interrupt and polling
management schemes.
Processor A Processor B
General Purpose
ACR BSR
Interrupt Request
Register Register
OR'd with other
requests
Control
BCR
Register
The following tables describe the signaling protocol that the Processor A uses to inform
the Processor B about its current access (write) to the shared memory, assuming that the
set of bits and registers (GIR0 bit, BRR0 register, BTR0 register, GIR0 bit, ARR0
register, ATR0 register) are reserved to support exclusive access to the shared memory
protocol.
Table 4-7. How the Processor A Performs an Exclusive Access to Shared Memory
Sequence Action Description
1 Processor A sends GIRn request to When the Processor A wants to perform an exclusive access
Processor B using Processor A to the shared memory, the Processor A sends an GIR0
control register request to the Processor B.
2 Processor A sends an exclusive- The Processor A will send an exclusive-access request
access request using a transmit data (command, location, and length of target access) to
register (ATRn) Processor B using a selected transmit data register (ATR0).
3 Processor A waits for a dedicated The Processor A waits for a dedicated interrupt (as an
interrupt from Processor B acknowledgement) triggered by the Processor B before
proceeding.
4 Processor A accesses shared After receiving a dedicated interrupt from the Processor B,
memory Processor A proceeds.
4.3.4 Initialization
The MU is used for two processors to communicate by passing messages. Below are
examples for passing messages:
1. Interrupt mode
• Processor A:
• write ATR0;
• ACR.TIEn[0] = 1;
• wait for transmit register empty interrupt;
• Processor B:
• BCR.RIEn[0] = 1;
• wait for receive register full interrupt;
• read BRR0;
2. Polling mode
• Processor A:
• write ATR0;
• while(ASR.TEn[0] != 1) ;
• Processor B:
• while(BSR.RFn[0] != 1) ;
• read BRR0;
See Application Information for details regarding software restrictions.
• Before asserting the MUR bit in the ACR register, verify that the Processor B-side is
not engaged in some MU activity.
• Do not write to an MU register in the instruction immediately after the assertion of
the MUR bit in the ACR register, because the written data can be overridden by the
reset value.
This section contains the detailed register descriptions for the Processor A-side MU
registers.
• Users can only write to the ATR0 register when the TE0 bit in ASR register is set to
"1".
• Reading the ATR0 register returns all zeros.
4.3.6.1.2.1 Offset
Register Offset
ATR0 0h
4.3.6.1.2.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
ATR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
ATR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.2.3 Fields
Field Description
31-0 ATR0
ATR0 Processor A Transmit Register 0. (Write-only)
• Data written to the ATR0 register is reflected on the Processor B-side in the Processor B Receive
Register 0 (BRR0). The ATR0 and BRR0 registers are not double-buffered—a write to the ATR0
register overrides the data readable at the BRR0 register.
• A write to the transmit register clears a "transmitter empty" bit (TE0) in the Processor A Status
Register (ASR) on the transmitter side, and sets a "receiver full" bit (RF0) in the Processor B Status
Register (BSR) on the receiver side (optionally triggering an interrupt 0 on the Processor B-side).
• Any write to the ATR0 register will update all status information.
• Users can only write to the ATR1 register when the TE1 bit in ASR register is set to
"1".
• Reading the ATR1 register returns all zeros.
4.3.6.1.3.1 Offset
Register Offset
ATR1 4h
4.3.6.1.3.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
ATR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
ATR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.3.3 Fields
Field Description
31-0 ATR1
ATR1 Processor A Transmit Register 1. (Write-only)
• Data written to the ATR1 register is reflected on the Processor B-side in the Processor B Receive
Register 1 (BRR1). The ATR1 and BRR1 registers are not double-buffered—a write to the ATR1
register overrides the data readable at the BRR1 register.
• A write to the transmit register clears a "transmitter empty" bit (TE1) in the Processor A Status
Register (ASR) on the transmitter side, and sets a "receiver full" bit (RF1) in the Processor B Status
Register (BSR) on the receiver side (optionally triggering an interrupt 1 on the Processor B-side).
• Any write to the ATR1 register will update all status information.
• Users can only write to the ATR2 register when the TE2 bit in ASR register is set to
"1".
• Reading the ATR2 register returns all zeros.
4.3.6.1.4.1 Offset
Register Offset
ATR2 8h
4.3.6.1.4.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
ATR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
ATR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.4.3 Fields
Field Description
31-0 ATR2
ATR2 Processor A Transmit Register 2. (Write-only)
• Data written to the ATR2 register is reflected on the Processor B-side in the Processor B Receive
Register 2 (BRR2). The ATR2 and BRR2 registers are not double-buffered—a write to the ATR2
register overrides the data readable at the BRR2 register.
• A write to the transmit register clears a "transmitter empty" bit (TE2) in the Processor A Status
Register (ASR) on the transmitter side, and sets a "receiver full" bit (RF2) in the Processor B Status
Register (BSR) on the receiver side (optionally triggering an interrupt 2 on the Processor B-side).
• Any write to the ATR2 register will update all status information.
• Users can only write to the ATR3 register when the TE3 bit in ASR register is set to
"1".
• Reading the ATR3 register returns all zeros.
4.3.6.1.5.1 Offset
Register Offset
ATR3 Ch
4.3.6.1.5.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
ATR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
ATR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.5.3 Fields
Field Description
31-0 ATR3
ATR3 Processor A Transmit Register 3. (Write-only)
• Data written to the ATR3 register is reflected on the Processor B-side in the Processor B Receive
Register 3 (BRR3). The ATR3 and BRR3 registers are not double-buffered—a write to the ATR3
register overrides the data readable at the BRR3 register.
• A write to the transmit register clears a "transmitter empty" bit (TE3) in the Processor A Status
Register (ASR) on the transmitter side, and sets a "receiver full" bit (RF3) in the Processor B Status
Register (BSR) on the receiver side (optionally triggering an interrupt 3 on the Processor B-side).
• Any write to the ATR3 register will update all status information.
• Users can only read the ARR0 register when the RF0 bit in the ASR register is set to
"1".
• Writing to the ARR0 register generates an error response to the Processor A.
4.3.6.1.6.1 Offset
Register Offset
ARR0 10h
4.3.6.1.6.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R ARR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ARR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.6.3 Fields
Field Description
31-0 ARR0
ARR0 Processor A Receive Register 0. (Read-only)
• Reflects the data written to Processor B Transmit Register 0 (BTR0).
• Reading the ARR0 register clears the "receiver full" bit (RF0) in the Processor A Status Register
(ASR) on the receiver side, and sets the "transmitter empty" bit (TE0) in the Processor B Status
Register on the transmitter side (optionally triggering a transmit interrupt 0 on the Processor B-
side).
• Any read of the ARR0 register will update all status information.
• Users can only read the ARR1 register when the RF1 bit in the ASR register is set to
"1".
• Writing to the ARR1 register generates an error response to the Processor A.
4.3.6.1.7.1 Offset
Register Offset
ARR1 14h
4.3.6.1.7.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R ARR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ARR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.7.3 Fields
Field Description
31-0 ARR1
ARR1 Processor A Receive Register 1. (Read-only)
• Reflects the data written to Processor B Transmit Register 1 (BTR1).
• Reading the ARR1 register clears the "receiver full" bit (RF1) in the Processor A Status Register
(ASR) on the receiver side, and sets the "transmitter empty" bit (TE1) in the Processor B Status
Register on the transmitter side (optionally triggering a transmit interrupt 1 on the Processor B-
side).
• Any read of the ARR1 register will update all status information.
• Users can only read the ARR2 register when the RF2 bit in the ASR register is set to
"1".
• Writing to the ARR2 register generates an error response to the Processor A.
4.3.6.1.8.1 Offset
Register Offset
ARR2 18h
4.3.6.1.8.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R ARR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ARR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.8.3 Fields
Field Description
31-0 ARR2
ARR2 Processor A Receive Register 2. (Read-only)
• Reflects the data written to Processor B Transmit Register 1 (BTR2).
• Reading the ARR2 register clears the "receiver full" bit (RF2) in the Processor A Status Register
(ASR) on the receiver side, and sets the "transmitter empty" bit (TE2) in the Processor B Status
Register on the transmitter side (optionally triggering a transmit interrupt 2 on the Processor B-
side).
• Any read of the ARR2 register will update all status information.
• Users can only read the ARR3 register when the RF3 bit in the ASR register is set to
"1".
• Writing to the ARR3 register generates an error response to the Processor A.
4.3.6.1.9.1 Offset
Register Offset
ARR3 1Ch
4.3.6.1.9.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R ARR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ARR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.9.3 Fields
Field Description
31-0 ARR3
ARR3 Processor A Receive Register 3. (Read-only)
• Reflects the data written to Processor B Transmit Register 3 (BTR3).
• Reading the ARR3 register clears the "receiver full" bit (RF3) in the Processor A Status Register
(ASR) on the receiver side, and sets the "transmitter empty" bit (TE3) in the Processor B Status
Register on the transmitter side (optionally triggering a transmit interrupt 3 on the Processor B-
side).
• Any read of the ARR3 register will update all status information.
Use the Processor A Status Register (ASR, 32-bit, read-write) to show interrupt status
from the Processor B, general purpose flags, and to set dual function control-status bits.
• Some dual-purpose bits are set by the MU logic, and cleared by the Processor A-side
programmer
• Other dual-purpose bits are set by the Processor A-side programmer, and cleared by
the MU logic.
4.3.6.1.10.1 Offset
Register Offset
ASR 20h
4.3.6.1.10.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GIPn RFn TEn Reserved
W
Reset 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
BRDIP
BRS
FUP
EP
Fn
W
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
4.3.6.1.10.3 Fields
Field Description
31-28 GIPn
GIPn For n = {0, 1, 2, 3} Processor A General Interrupt Request n Pending. (Read-Write)
• GIPn bit signals the Processor A that the GIRn bit in the BCR register on the Processor B-side was
set from "0" to "1". If the GIEn bit in the ACR register is set to "1", a General Interrupt n request is
issued.
• The GIPn bit is cleared by writing it back as "1". Writing "0", or writing "1" when the GIPn bit is
cleared is ignored. Use this feature in the interrupt routine, where the GIPn bit is cleared in order to
de-assert the interrupt request source at the interrupt controller. The proper bit clearing sequence
is: clear an Processor A register, set the desired bit in it (Processor A register), and write it to the
ASR register, thus clearing the GIPn bit.
• GIPn bit is cleared when the MU is reset.
Field Description
• The RFn bit is set to "1" when the BTRn register is written on the Processor B-side.
• After the RFn bit is set to "1", the RFn bit signals the Processor A-side that new data is ready to be
read by the Processor A in the ARRn register, and a Receive n interrupt is issued on the Processor
A-side (if the RIEn bit in the ACR register has been set to "1").
• RFn bit is cleared when the ARRn register is read, and when the MU is reset.
0 - The Processor A general purpose interrupt 3, because of a Processor B-side reset de-assertion, is
cleared (default).
1 - The Processor B-side is out of reset.
8 FUP
FUP Processor A Flags Update Pending. (Read-only)
• FUP bit is set to "1" when the Processor A-side sends a Flags Update request to the Processor B-
side.
• A Flags Update request is generated when the ABF[2:0] bits of the ACR register change. No flag
update changes are allowed while the FUP bit is set to "1". Any write to the ABF[2:0] bits, while the
FUP bit is set to "1", will not generate a Flags Update event, and the ABF[2:0] bits will stay
unchanged.
• FUP bit is cleared when this Flags Update request is internally acknowledged (that the flag is
updated) from the MU Processor B-side, and during MU reset.
Field Description
BRS Processor B-side Reset State. (Read-only)
• BRS bit indicates if the Processor B-side of the MU is in a reset state or not.
• If the BRS bit is set to "1", then the Processor B-side of the MU is still in the reset state.
• If the BRS bit is cleared, then the Processor B-side of the MU are out of reset.
• The BRS bit is set to "1" during: a Processor B system reset, or an MU reset (caused by setting the
MUR bit at the ACR register).
• The BRS bit is cleared when the reset sequence on the Processor B-side of the MU ends. After
issuing any of the reset events mentioned previously, verify that the BRS bit is cleared before
starting any accesses.
• When Processor A side of MU comes out of reset BRS bit has value "1"(default).Then Processor A
sees the status of Processor B-side and if Processor B-side has come out of reset then BRS bit
goes low. This takes 5-6 clock cycles. If the BRS bit is read now it shows as low although its reset
value was "1" .
Use the Processor A Control Register (ACR, 32-bit, read-write) to enable the MU
interrupts on the Processor A-side, and trigger events and interrupts on the Processor B-
side (general purpose interrupt, flag update).
For the fields GIEn, RIEn, TIEn and GIRn, n=0 corresponds to the high order bit and n=3
corresponds to the low order bit.
4.3.6.1.11.1 Offset
Register Offset
ACR 24h
4.3.6.1.11.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GIEn RIEn TIEn GIRn
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
BRDIE
ABFn
MUR
BHR
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.6.1.11.3 Fields
Field Description
31-28 GIEn
GIEn For n = {0, 1, 2, 3} Processor A General Purpose Interrupt Enable n. (Read-Write) When GIEn=0
corresponds to the high order bit and GIE3 corresponds to the low order bit.
• GIEn bit enables Processor A General Interrupt n.
• If GIEn bit is set to "1" (enabled), then a General Interrupt n request is issued when the GIPn bit in
the ASR register is set to "1".
• If GIEn is cleared (disabled), then the value of the GIPn bit is ignored and no General Interrupt n
request will be issued.
• GIEn bit is cleared when the MU resets.
Field Description
0001 - Enables Processor A General Interrupt n.
27-24 RIEn
RIEn For n = {0, 1, 2, 3} Processor A Receive Interrupt Enable n. (Read-Write)
• RIEn bit enables Processor A Receive Interrupt n.
• If RIEn bit is set to "1" (enabled), then an Processor A Receive Interrupt n request is issued when
the RFn bit in the ASR register is set to "1".
• If RIEn bit is cleared (disabled), then the value of the RFn bit is ignored and no Processor A
Receive Interrupt n request will be issued.
• RIEn bit is cleared when the MU resets.
0 - Disables the Processor A General Purpose Interrupt 3 request due to the Processor B reset de-
assertion to the Processor A. Processor B reset deassertion causes Processor B and MU-Processor B
side to come out of reset thus setting BRDIP bit to "1".
Table continues on the next page...
Field Description
1 - Enables Processor A General Purpose Interrupt 3 request due to the Processor B reset de-assertion
to the Processor A.
5 MUR
MUR Processor A MU Reset.
• Setting MUR bit to "1" resets both the Processor B and the Processor A sides of the MU module,
forcing all control and status registers to return to their default values (except the BHR bit in the
ACR register and BHRM bit in BCR register), and all internal states to be cleared.
• Before setting the MUR bit to "1", it is advisable to interrupt the Processor B, because setting the
MUR bit may affect the ongoing Processor B program.
• After setting the MUR bit, monitor the value of the BRS bit in the ASR register to know when the
reset sequence on the Processor B-side has ended.
• MUR bit can only be written as "1".
• MUR bit is always read as "0".
• MUR bit is cleared during the MU reset sequence.
This section contains the detailed register descriptions for the Processor B-side MU
registers.
4.3.7.1.2.1 Offset
Register Offset
BTR0 0h
4.3.7.1.2.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BTR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BTR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.2.3 Fields
Field Description
31-0 BTR0
BTR0 Processor B Transmit Register 0. (Write-only)
• Data written to the BTR0 register is reflected on the Processor A-side in the Processor A Receive
Register 0 (ARR0). The BTR0 and ARR0 registers are not double-buffered—a write to the BTR0
register overrides the data readable at the ARR0 register.
• A write to the transmit register clears a "transmitter empty" bit (TE0) in the Processor B Status
Register (BSR) on the transmitter side, and sets a "receiver full" bit (RF0) in the Processor A Status
Register (ASR) on the receiver side (optionally triggering an interrupt 0 on the Processor A-side).
• Any write to the BTR0 register will update all status information.
4.3.7.1.3.1 Offset
Register Offset
BTR1 4h
4.3.7.1.3.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BTR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BTR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.3.3 Fields
Field Description
31-0 BTR1
BTR1 Processor B Transmit Register 1. (Write-only)
• Data written to the BTR1 register is reflected on the Processor A-side in the Processor A Receive
Register 1 (ARR1). The BTR1 and ARR1 registers are not double-buffered—a write to the BTR1
register overrides the data readable at the ARR1 register.
• A write to the transmit register clears a "transmitter empty" bit (TE1) in the Processor B Status
Register (BSR) on the transmitter side, and sets a "receiver full" bit (RF1) in the Processor A Status
Register (ASR) on the receiver side (optionally triggering an interrupt 1 on the Processor A-side).
• Any write to the BTR1 register will update all status information.
4.3.7.1.4.1 Offset
Register Offset
BTR2 8h
4.3.7.1.4.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BTR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BTR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.4.3 Fields
Field Description
31-0 BTR2
BTR2 Processor B Transmit Register 2. (Write-only)
• Data written to the BTR2 register is reflected on the Processor A-side in the Processor A Receive
Register 2 (ARR2). The BTR2 and ARR2 registers are not double-buffered—a write to the BTR2
register overrides the data readable at the ARR2 register.
• A write to the transmit register clears a "transmitter empty" bit (TE2) in the Processor B Status
Register (BSR) on the transmitter side, and sets a "receiver full" bit (RF2) in the Processor A Status
Register (ASR) on the receiver side (optionally triggering an interrupt 2 on the Processor A-side).
• Any write to the BTR2 register will update all status information.
4.3.7.1.5.1 Offset
Register Offset
BTR3 Ch
4.3.7.1.5.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BTR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BTR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.5.3 Fields
Field Description
31-0 BTR3
BTR3 Processor B Transmit Register 3. (Write-only)
• Data written to the BTR3 register is reflected on the Processor A-side in the Processor A Receive
Register 3 (ARR3). The BTR3 and ARR3 registers are not double-buffered—a write to the BTR3
register overrides the data readable at the ARR3 register.
• A write to the transmit register clears a "transmitter empty" bit (TE3) in the Processor B Status
Register (BSR) on the transmitter side, and sets a "receiver full" bit (RF3) in the Processor A Status
Register (ASR) on the receiver side (optionally triggering an interrupt 3 on the Processor A-side).
• Any write to the BTR3 register will update all status information.
4.3.7.1.6.1 Offset
Register Offset
BRR0 10h
4.3.7.1.6.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R BRR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R BRR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.6.3 Fields
Field Description
31-0 BRR0
BRR0 Processor B Receive Register 0. (Read-only)
• Reflects the data written to Processor A Transmit Register 0 (ATR0).
• Reading the BRR0 register clears the "receiver full" bit (RF0) in the Processor B Status Register
(BSR) on the receiver side, and sets the "transmitter empty" bit (TE0) in the Processor A Status
Register on the transmitter side (optionally triggering a transmit interrupt 0 on the Processor A-
side).
• Any read of the BRR0 register will update all status information.
4.3.7.1.7.1 Offset
Register Offset
BRR1 14h
4.3.7.1.7.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R BRR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R BRR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.7.3 Fields
Field Description
31-0 BRR1
BRR1 Processor B Receive Register 1. (Read-only)
• Reflects the data written to Processor A Transmit Register 1 (ATR1).
• Reading the BRR1 register clears the "receiver full" bit (RF1) in the Processor B Status Register
(BSR) on the receiver side, and sets the "transmitter empty" bit (TE1) in the Processor A Status
Register on the transmitter side (optionally triggering a transmit interrupt 1 on the Processor A-
side).
• Any read of the BRR1 register will update all status information.
4.3.7.1.8.1 Offset
Register Offset
BRR2 18h
4.3.7.1.8.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R BRR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R BRR2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.8.3 Fields
Field Description
31-0 BRR2
BRR2 Processor B Receive Register 2. (Read-only)
• Reflects the data written to Processor A Transmit Register 1 (ATR2).
• Reading the BRR2 register clears the "receiver full" bit (RF2) in the Processor B Status Register
(BSR) on the receiver side, and sets the "transmitter empty" bit (TE2) in the Processor A Status
Register on the transmitter side (optionally triggering a transmit interrupt 2 on the Processor A-
side).
• Any read of the BRR2 register will update all status information.
4.3.7.1.9.1 Offset
Register Offset
BRR3 1Ch
4.3.7.1.9.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R BRR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R BRR3
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.9.3 Fields
Field Description
31-0 BRR3
BRR3 Processor B Receive Register 3. (Read-only)
• Reflects the data written to Processor A Transmit Register 3 (ATR3).
• Reading the BRR3 register clears the "receiver full" bit (RF3) in the Processor B Status Register
(BSR) on the receiver side, and sets the "transmitter empty" bit (TE3) in the Processor A Status
Register on the transmitter side (optionally triggering a transmit interrupt 3 on the Processor A-
side).
• Any read of the BRR3 register will update all status information.
Use the Processor B Status Register (BSR, 32-bit, read-write) to show interrupt status
from the Processor B, general purpose flags, the Processor A power mode, and to set dual
function control-status bits.
• Dual-purpose bits are set by the Processor B-side programmer, and cleared by the
MU logic.
4.3.7.1.10.1 Offset
Register Offset
BSR 20h
4.3.7.1.10.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GIPn RFn TEn Reserved
W
Reset 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
APM
R
Reserved
Reserved
ARS
FUP
EP
Fn
W
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
4.3.7.1.10.3 Fields
Field Description
31-28 GIPn
GIPn For n = {0, 1, 2, 3} Processor B General Interrupt Request n Pending. (Read-Write)
• GIPn bit signals the Processor B that the GIRn bit in the ACR register on the Processor A-side was
set from "0" to "1". If the GIEn bit in the BCR register is set to "1", a General Interrupt n request is
issued.
• The GIPn bit is cleared by writing it back as "1". Writing "0", or writing "1" when the GIPn bit is
cleared is ignored. Use this feature in the interrupt routine, where the GIPn bit is cleared in order to
de-assert the interrupt request source at the interrupt controller.
• GIPn bit is cleared when the MU is reset.
Field Description
• TEn bit is cleared after the BTRn register is written on the Processor B-side.
• TEn bit is set to "1" when the MU is reset.
Field Description
• EP bit is cleared when the event update acknowledge is received. An "event" is any hardware
message that is reflected in the ASR register on the Processor A-side (for example, "transmit
register 0 written"). During normal operations, the state of the EP bit does not have to be manually
updated because the event update mechanism works automatically.
• To ensure events have been posted to Processor A before entering STOP mode, it should be
verified that the EP bit is cleared. If EP bit is set to "1", continue to poll it (EP bit) before entering
STOP mode.
• Reading the BSR register (to check the EP bit) should be the last access to the MU that should be
performed before entering STOP mode; otherwise, the EP bit may be set by subsequent additional
actions.
• Due to Processor B pipeline effects, three NOP operations (or their timing equivalent) should be
given after an instruction that sets an event before the EP bit can reflect this event.
• The EP bit is cleared when the MU resets.
Use the Processor B Control Register (BCR, 32-bit, read-write) to enable the MU
interrupts on the Processor B-side, and trigger events and interrupts on the Processor A-
side (wake from STOP, hardware reset, flag update).
For the fields GIEn, RIEn, TIEn and GIRn, n=0 corresponds to the high order bit and n=3
corresponds to the low order bit.
4.3.7.1.11.1 Offset
Register Offset
BCR 24h
4.3.7.1.11.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GIEn RIEn TIEn GIRn
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
BAFn
HRM
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.3.7.1.11.3 Fields
Field Description
31-28 GIEn
GIEn For n = {0, 1, 2, 3} Processor B General Purpose Interrupt Enable n. (Read-Write)
• GIEn bit enables Processor B General Interrupt n.
• If GIEn bit is set to "1" (enabled), then a General Interrupt n request is issued when the GIPn bit in
the BSR register is set to "1".
• If GIEn is cleared (disabled), then the value of the GIPn bit is ignored and no General Interrupt n
request will be issued.
• GIEn bit is cleared when the MU resets.
Field Description
0001 - Enables Processor B Transmit Interrupt n.
19-16 GIRn
GIRn For n = {0, 1, 2, 3} Processor B General Purpose Interrupt Request n. (Read-Write)
• Writing "1" to the GIRn bit sets the GIPn bit in the ASR register on the Processor A-side. If the GIEn
bit in the ACR register is set to "1" on the Processor A-side, a General Purpose Interrupt n request
is triggered.
• The GIRn bit is cleared if the GIPn bit (in the ASR register on the Processor A-side) is cleared by
writing it (GIPn bit) as "1", thereby signalling the Processor B that the interrupt was accepted
(cleared by the software). The GIPn bit cannot be written as "0" on the Processor B-side.
• To ensure proper operations, it must be verified that the GIRn bit is cleared (meaning that there is
no pending interrupt) before setting it (GIRn bit).
• GIRn bit is cleared when the MU resets.
0 - BHR bit in ACR is not masked, enables the hardware reset to the Processor B (default after hardware
reset).
1 - BHR bit in ACR is masked, disables the hardware reset request to the Processor B.
3 Reserved
—
2-0 BAFn
BAFn For n = {0, 1, 2} Processor B to Processor A Flag n. (Read-Write)
• BAFn bit is a read-write flag that is reflected in Fn bit in the ASR register on the Processor A-side.
• BAFn bit is cleared when the MU resets.
4.4.1 Overview
The Semaphores (SEMA4) module provides a platform IPS slave device which
implements 16 hardware-enforced gates.
mux
0 ips_rdata
cp0_semaphore_int cp1_semaphore_int 31
IPS Bus
4.4.1.2 Features
The Semaphores module implements hardware-enforced semaphores as an IPS-mapped
slave peripheral device. The feature set includes:
reset
1
idle
00
~((master == cp0) & (wdata == cp0_lock))
&~((master == cp1) & (wdata == cp1_lock))
2
master == cp0 master == cp1
& (wdata == cp0_lock) & (wdata == cp1_lock)
3 4
cp0_lock cp1_lock
01 10
5 7
master != cp0 master != cp1
6 | (wdata != unlock) | (wdata != unlock) 8
The bus master number/ID is used to identify core processor 0 (cp0) or core processor 1
(cp1).
The state transitions for SEMA4_GATEn are defined in the following table.
Table 4-12. SEMA4_GATEn State Transitions
Transitio
Current State Next State Description
n
idle 1 Any reset, whether a system reset or an individual gate reset,
–
unconditionally forces the gate into the idle state.
any_reset
idle
000 ~transition_condition_3
& ~transition_condition_4
2
master == cp0 master == cp1
& (wdata == cp0_lock) & (wdata == cp1_lock)
& (gate == cp1_lock) & (gate == cp0_lock)
3 4
wait4_cp1_unlock wait4_cp0_unlock
010 001
gate != unlock
gate != unlock
5 7
10 6 8 13
wait4_cp0_lock wait4_cp1_lock
110 101
gate = !cp0_lock
& !cp1_lock
9 12
gate = !cp0_lock
11 & !cp1_lock 14
The state transitions of the IRQ notification function are defined in the following table.
Specific states of this machine are program-visible as the SEMA4_CPnNTF registers. In
particular, two states are program-visible:
The Semaphores module generates two interrupt request output signals, one per
processor, combining the SEMA4_CPnINE and SEMA4_CPnNTF registers, where the
boolean equations are:
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
148 NXP Semiconductors
Chapter 4 Arm Platform and Debug
cp0_semaphore_int
= SEMA4_CP0INE[INE0] & SEMA4_CP0NTF[GN0]
| SEMA4_CP0INE[INE1] & SEMA4_CP0NTF[GN1]
| SEMA4_CP0INE[INE2] & SEMA4_CP0NTF[GN2]
...
| SEMA4_CP0INE[INE15] & SEMA4_CP0NTF[GN15]
cp1_semaphore_int
= SEMA4_CP1INE[INE0] & SEMA4_CP1NTF[GN0]
| SEMA4_CP1INE[INE1] & SEMA4_CP1NTF[GN1]
| SEMA4_CP1INE[INE2] & SEMA4_CP1NTF[GN2]
...
| SEMA4_CP1INE[INE15] & SEMA4_CP1NTF[GN15]
If the compare indicates the expected value, then the gate is locked; proceed with the
protected code segment. If the compare does not indicate the expected value, the lock
operation failed; repeat the process beginning with byte write to gate[i] in spin-wait loop,
or proceed with another execution path and wait for failed lock interrupt notification.
A simple C-language example of a gateLock function is shown in the following figure.
if (i == 0)
locked_value = CP0_LOCK;
else
locked_value = CP1_LOCK;
/* read the current value of the gate and wait until the state == UNLOCK */
do {
current_value = gate[n];
} while (current_value != UNLOCK);
/* the current value of the gate == UNLOCK. attempt to lock the gate for this
processor. spin-wait in this loop until gate ownership is obtained */
do {
gate[n] = locked_value; /* write gate with processor_number + 1 */
current_value = gate[n]; /* read gate to verify ownership was obtained */
} while (current_value != locked_value);
A few comments on the logical CPU number are appropriate. In this example, a reference
to processor_number() is used to retrieve this hardware configuration value. Typically, the
logical processor numbers are defined by a hardwired input vector to the individual cores.
The exact method for accessing the logical processor number varies by architecture.
If the optional failed lock IRQ notification mechanisms are used, then accesses to the
related registers (SEMA4_CPnINE, SEMA4_ CPnNTF) are required. Note that there is
no required negation of the failed lock write notification interrupt, as the request is
automatically cleared by the Semaphores module once the gate has been successfully
locked by the "failing" processor.
Finally, in the event a system state requires a software-controlled reset of a gate or IRQ
notification register(s), accesses to the secure reset control registers (SEMA4_RSTGT,
SEMA4_RSTNTF) are required. For these situations, it is recommended that the
Bit 7 6 5 4 3 2 1 0
Read 0 GTFSM
Write
Reset 0 0 0 0 0 0 0 0
NOTE: The state of the gate reflects the last processor that locked it, which can be useful during system
debug.
Bit 7 6 5 4 3 2 1 0
Read INE0 INE1 INE2 INE3 INE4 INE5 INE6 INE7
Write
Reset 0 0 0 0 0 0 0 0
2. Once unlocked, the FSM enters a second state where it generates an interrupt request
to the “failed lock” processor.
3. When the “failed lock” processor succeeds in locking the gate, the IRQ is
automatically cleared and the FSM returns to the idle state. However, if the other
processor again locks the gate, the FSM returns to the first state, clears the interrupt
request, and then waits for the gate to be unlocked (again).
The notification interrupt request is implemented in a 3-bit, 5-state machine, where two
specific states are encoded and program-visible as SEMA4_CP0NTF[GNn] and
SEMA4_CP1NTF[GNn].
Address: 30AC_0000h base + 80h offset + (8d × i), where i=0d to 1d
Bit 15 14 13 12 11 10 9 8
Write
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Write
Reset 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Read RSTGTN RSTGSM_RSTGMS_RSTGDP
Write
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Read RSTNTN RSTNSM_RSTNMS_RSTNDP
Write
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.5.1 Overview
The OCRAM block is implemented as an slave module on the 64-bit system AXI bus.
Designed as a simple on-chip memory controller, it supports only one AXI port with
memory banks. For the AXI port, the read and write transactions are handled by two
independent modules. As it is possible to have simultaneous read and write request from
the AXI bus, each memory bank has an arbiter with round-robin scheme. After
arbitration, the granted read or write access command can then be issued to the memory
cell through a read/write MUX.
The memory banks are organized with the lower 2 bits of the address which is the AXI
bus address and is 64 bits aligned interleaved. This allows a read access and a write
access to be processed at the same time if they are targeted to different memory banks.
Various options are provided for adding a pipeline in a read/write access, in order to
ensure flexible timing control at both high and low frequencies.
OCRAM CONTROLLER
RDATA 0[63:0]
RDATA 1[63:0]
MUX RDATA 2[63:0]
RDATA 3[63:0]
AXI RADDR
RAM
MUX
RAM MEM_WE[3..0]
RAM
MUX
RAM
MUX
Write Control MUX
AXI WADDR
MEM_ADDR[3..0]
WDATA [63:0]
RD
REQ
DEC
Arbiter
Arbiter
Arbiter
Timing Arbiter
WR
Configuration
REQ
DEC
• If a granted read/write transaction has just finished, the write/read request will have
the higher priority in the next cycle.
• If the first read/write access request in a transaction is granted, all the data transfer in
this burst will be finished before the next arbitration begins, that is, the round-robin
arbitration mechanism is based on AXI transaction, not data access.
4.6.1 Overview
This section provides an overview of the NIC-301 (Network Inter-Connect) AXI arbiter
IP.on chip Network Interconnection Bus System. The Bus System is composed of two
kinds of IP
The NIC-301 (by Arm Ltd.) is a configurable AXI arbiter between several masters and
slaves. The NIC-301 IP is designed so that many configuration options are selected at the
hardware design stage, determined by SoC characteristics and needs, while several other
configuration options are software-controlled.
• NIC-301 (Network Inter-Connect) AXI arbiter IP
The NIC-301 (by Arm Ltd.) is a configurable AXI arbiter between several masters
and slaves. The NIC-301 IP is designed so that many configuration options are
selected at the hardware design stage, determined by SoC characteristics and needs,
while several other configuration options are software-controlled.
• NoC (Network on Chip) fabric IP
The NoC (by Arteris Ltd.) is a configurable high efficiency and performance fabric IP.
Similar to the NIC-301 IP the majority design options are configured during hardware
design stage. Mean while those application specific configurations are required
to be configured by software.
NOTE
The NIC-301 and NoC default settings are configured by NXP's
board support package (BSP), and in most cases should not be
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 163
AHB to IP Bridge (AIPSTZ)
4.7.1 Overview
This section provides an overview of the AHB to IP Bridge (AIPSTZ). This particular
peripheral is designed as the bridge between AHB bus and peripherals with the lower
bandwidth IP Slave (IPS) buses.
4.7.1.1 Features
The following list summarizes the key features of the bridge:
• The bridge supports the IPS slave bus signals.
• The bridge supports 8-, 16-, and 32-bit IPS peripherals. (Accesses larger than the size
of a peripheral are not supported, except to 32-bit memory.)
• The bridge supports a pair of IPS accesses for 64-bit and certain misaligned AHB
transfers to 32-bit memory in 64-bit platforms.
• The bridge directly supports up to 32 64-Kbyte external IPS peripherals, and 2 global
external IPS peripheral spaces. The bridge occupies 1 MBytes of total address space.
• The bridge provides configurable per-block and per-master access protections.
Access permissions are based on bus master (e.g. DMA or core) privilege levels and
resource domain. More details on the protection features and configuration can be
found in the Security Reference Manual
• Peripheral read transactions require a minimum of 2 hclk clocks, and unbuffered
write transactions require a minimum of 3 hclk clocks.
• The bridge uses one single asynchronous reset and one global clock.
4.7.2 Clocks
The following table describes the clock sources for AIPSTZ. Please see Clock Controller
Module (CCM) for clock setting, configuration and gating information.
AIPS occupies a 1-Mbyte portion of the address space. The register maps of the IPS
peripherals are located on 64-Kbyte boundaries. Each IPS peripheral is allocated one 64-
Kbyte block of the memory map, and is activated by one of the block enables from the
bridge. Up to thirty-two 64-Kbyte external IPS peripherals may be implemented,
occupying contiguous blocks of 64-Kbytes. Two global external IPS block enables are
available for the remaining address space to allow for customization and expansion of
addressed peripheral devices. In addition, a single "non-global" block enable is also
asserted whenever any of the thirty-two non-global block enables is asserted.
The bridge is responsible for indicating to IPS peripherals if an access is in supervisor or
user mode. It may block user mode accesses to certain IPS peripherals or it may allow the
individual IPS peripherals to determine if user mode accesses are allowed. In addition,
peripherals may be designated as write-protected.
The bridge supports the notion of "trusted" masters for security purposes. Masters may be
individually designated as trusted for reads, trusted for writes, or trusted for both reads
and writes, as well as being forced to look as though all accesses from a master are in
user-mode privilege level. Refer to AIPSTZ Memory Map/Register Definition for more
information.
The AIPSTZ prevents access to a peripheral if the transaction originated from a source
from a resource domain that has been explicitly omitted. Resource domains are assigned
in the RDC submodule. Please refer to the RDC chapter for programming details.
All peripheral devices are expected to only require aligned accesses equal to or smaller in
size than the peripheral size. An exception to this rule is supported for 32-bit peripherals
to allow memory to be placed on the IPS.
Only aligned half word and byte accesses are supported for 16-bit peripherals. All other
accesses types are unsupported, and results of such accesses are undefined. They are not
terminated with an error response.
Only byte accesses are supported for 8-bit peripherals. All other accesses types are
unsupported, and results of such accesses are undefined. They are not terminated with an
error response.
Information regarding CSU is provided in the Security Reference Manual. Contact your
NXP representative for information about obtaining this document.
A 3-bit input, 8-bit output translation block can be used such that only three register bits
are required to set the security profile and the translation block will drive the correct 8-bit
configuration vector. Each peripheral connected to the AIPSTZ would require this
translation block. The top level AIPSTZ has this three bit input line `csu_sec_level[2:0]'
corresponding to each peripheral X.
The memory map for the AIPS SW-visible registers is shown in the table below.
The MPROT and OPACR fields are 4 bits in width. Some bits may be reserved
depending on device.
AIPSTZ memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
3000_0000 Master Priviledge Registers (AIPSTZ1_MPR) 32 R/W 7700_0000h 4.7.8.1/174
Off-Platform Peripheral Access Control Registers
3000_0040 32 R/W 4444_4444h 4.7.8.2/176
(AIPSTZ1_OPACR)
Off-Platform Peripheral Access Control Registers
3000_0044 32 R/W 4444_4444h 4.7.8.3/179
(AIPSTZ1_OPACR1)
Off-Platform Peripheral Access Control Registers
3000_0048 32 R/W 4444_4444h 4.7.8.4/182
(AIPSTZ1_OPACR2)
Off-Platform Peripheral Access Control Registers
3000_004C 32 R/W 4444_4444h 4.7.8.5/185
(AIPSTZ1_OPACR3)
Off-Platform Peripheral Access Control Registers
3000_0050 32 R/W 4444_4444h 4.7.8.6/188
(AIPSTZ1_OPACR4)
NOTE
The reset value is set to 0000_0000_7700_0000, which makes
master 0 and master 1 (Arm CORE) the trusted masters.
Trusted software can change the settings after reset.
Table 4-19. Master Index Allocation
Master Index Master Name Comments
Master 0 All masters excluding Arm core Share the same number allocation.
Master 1 Arm A53 core
Master 3 SDMA
Master 5 Arm M7 core
Master 6 HIFI4 Audio Processor
1. Buffered writes are not available for AIPSTZ. This bit should be set to '0'.
4.8.1 Overview
The Shared Peripheral Bus Arbiter (SPBA) is a three-to-one IP Bus interface arbiter.
Three masters arbitrate for shared peripheral access through the SPBA.
The SPBA has three primary functions:
• The IP Bus Line switches a master to one peripheral
• The Masters arbiter arbitrates between the three masters to solve concurrent access or
restricted access to peripherals
• The Control Registers and Ownership Control includes a set of registers which are
reachable through software and permit the access scheme to be defined for each
peripheral (Resource Ownership and Access Control). It generates signals for the
external steering logic of interrupts and DMA signals.
mb_dead_owner
ma_dead_owner
mc_dead_owner
Control
Registers
obsc0 Masters
+
IOSRTR Arbitration
obsc31 Ownership
module
Control
SPBA
IP-bus interface
IPMUX
Per0 Per30
Out-of-band signals
4.8.1.2 Features
The SPBA includes the following features:
ipg_clk
mb_ips_module_en
mb_ips_addr[24:0] 0x0000000
mb_ips_xfr_wait
sips_module_en[0]
sips_ips_xfr_wait
The following figure assumes MA and MB have been the last two masters granted in the
previous transfers (MA then MB).
clk
mb_ips_module_en
mb_ips_addr[24:0] 0x0000000
mb_ips_xfer_wait
ma_ips_module_en
ma_ips_addr[24:0] 0x004000
ma_ips_xfer_wait
mc_ips_module_en
mc_ips_addr[24:0] 0x0008000
mc_ips_xfer_wait
sips_module_en[0]
sips_module_en[1]
sips_module_en[2]
MASTER_GRANTED MC MA MB
Figure 4-14. Example of three master requests: Masters already granted are "waited";
ipg_clk_s
mb_ips_module_en
mb_ips_addr[24:0] 0x3C008
mb_ips_wdata[31:0] 31'd2
mb_ips_rwb
mb_ips_xfr_wait
obsc2[4:0] 5'b10010
Master B is taking ownership of peripheral 2 by writing 3'b010 in the SPBA peripheral 2 right register (rarfield)
This ownership can be checked on obsc2 output as roi2[1:0] = 2'b10 and rar2[2:0] = 3'b010
(obsc[4:0] = {roi2[1], roi2[0], rar2[2], rar2[1], rar2[0]})
NOTE
It is the programmer's responsibility to make sure the
peripherals are placed in an appropriate state before ending
ownership.
4.8.2.4 Clocks
The table found here describes the clock sources for SPBA.
Please see Clock Controller Module (CCM) for clock setting, configuration and gating
information.
Table 4-21. SPBA Clocks
Clock name Clock Root Description
ipg_clk ipg_clk_root Peripheral clock
ipg_clk_s ipg_clk_root Peripheral access clock
The SPBA control registers (Peripheral Right Registers) are mapped as a virtual shared
peripheral.
SPBA can support up to 32 shared peripherals. Each of them has its own Peripheral Right
Register (PRR) accessible within the SPBA memory-mapped registers, and consists of
the Requesting Master Owner, the Resource Owner ID and the Resource Access Right
fields.
SPBA memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
308F_0000 Peripheral Rights Register (SPBA1_PRR0) 32 R/W 0000_0007h 4.8.3.1/200
308F_0004 Peripheral Rights Register (SPBA1_PRR1) 32 R/W 0000_0007h 4.8.3.1/200
308F_0008 Peripheral Rights Register (SPBA1_PRR2) 32 R/W 0000_0007h 4.8.3.1/200
308F_000C Peripheral Rights Register (SPBA1_PRR3) 32 R/W 0000_0007h 4.8.3.1/200
308F_0010 Peripheral Rights Register (SPBA1_PRR4) 32 R/W 0000_0007h 4.8.3.1/200
308F_0014 Peripheral Rights Register (SPBA1_PRR5) 32 R/W 0000_0007h 4.8.3.1/200
308F_0018 Peripheral Rights Register (SPBA1_PRR6) 32 R/W 0000_0007h 4.8.3.1/200
308F_001C Peripheral Rights Register (SPBA1_PRR7) 32 R/W 0000_0007h 4.8.3.1/200
308F_0020 Peripheral Rights Register (SPBA1_PRR8) 32 R/W 0000_0007h 4.8.3.1/200
308F_0024 Peripheral Rights Register (SPBA1_PRR9) 32 R/W 0000_0007h 4.8.3.1/200
308F_0028 Peripheral Rights Register (SPBA1_PRR10) 32 R/W 0000_0007h 4.8.3.1/200
308F_002C Peripheral Rights Register (SPBA1_PRR11) 32 R/W 0000_0007h 4.8.3.1/200
308F_0030 Peripheral Rights Register (SPBA1_PRR12) 32 R/W 0000_0007h 4.8.3.1/200
308F_0034 Peripheral Rights Register (SPBA1_PRR13) 32 R/W 0000_0007h 4.8.3.1/200
308F_0038 Peripheral Rights Register (SPBA1_PRR14) 32 R/W 0000_0007h 4.8.3.1/200
308F_003C Peripheral Rights Register (SPBA1_PRR15) 32 R/W 0000_0007h 4.8.3.1/200
308F_0040 Peripheral Rights Register (SPBA1_PRR16) 32 R/W 0000_0007h 4.8.3.1/200
308F_0044 Peripheral Rights Register (SPBA1_PRR17) 32 R/W 0000_0007h 4.8.3.1/200
308F_0048 Peripheral Rights Register (SPBA1_PRR18) 32 R/W 0000_0007h 4.8.3.1/200
308F_004C Peripheral Rights Register (SPBA1_PRR19) 32 R/W 0000_0007h 4.8.3.1/200
308F_0050 Peripheral Rights Register (SPBA1_PRR20) 32 R/W 0000_0007h 4.8.3.1/200
308F_0054 Peripheral Rights Register (SPBA1_PRR21) 32 R/W 0000_0007h 4.8.3.1/200
308F_0058 Peripheral Rights Register (SPBA1_PRR22) 32 R/W 0000_0007h 4.8.3.1/200
308F_005C Peripheral Rights Register (SPBA1_PRR23) 32 R/W 0000_0007h 4.8.3.1/200
308F_0060 Peripheral Rights Register (SPBA1_PRR24) 32 R/W 0000_0007h 4.8.3.1/200
Table continues on the next page...
R RMO ROI
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RARC
RARB
RARA
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
4.9.1 Overview
The TrustZone Address Space Controller (TZASC) protects security-sensitive SW and
data in a trusted execution environment against potentially compromised SW running on
the platform.
4.9.1.2 Features
By default, the TZASC module is bypassed. The TZASC_ENABLE fuse should be
blown in order for the TZASC to be taken out of bypass mode, and start to perform
security checks on AXI accesses to DRAM memory. If this fuse is not blown, it is not
possible to create protected regions in DDR.
Enabling the TZASC may have an impact on memory performance. The exact value
cannot be stated since it can vary depending on the specific application software.
The TZASC is an IP by Arm ("CoreLink™ TrustZone Address Space Controller
TZC-380"), designed to provide configurable protection over program (SW) memory
space.
4.9.2.2 Clocks
The table found here describes the clock sources for TZASC.
Table 4-22. TZASC Clocks
Clock name Clock Root Description
aclk ccm_clk_root Module clock
4.10.1 Debug
The chip debug is based on Arm’s CoreSight platform, with support for Quad-core A53
platform and Cortex-M7 core. The key features of the debug system include:
• Support 5-pins(JTAG) interface.
• Support both non-intrusive and halt-mode trace/debug options.
• MDM-AP registers for debugger to control mutli-core halt/resume cores.
• Trace Memory Controller (TMC) is used to enable capturing trace.
• 4KB in SOC trace block.
• ETR is used to allow routing trace data to system memory.
• Support ARM real time trace interface (TPIU) 16-bit @133MHz.
• Support cross trigger between Quad Cortex-A53 and Cortex-M7.
• 4 JTAG security levels, via SJC security functions together with e-Fuse (challenge
response, field return, intrusive detection)
JTAG/SW
DEBUG
DP
1
ETM 1 AHB AP
ATB
CPU 0 ETM 0 FUNNEL
ETM
ATB
CTI 1 FUNNEL
CTM ITM
CTI 0
AUDIOMIX Funnel
Audio DSP
ETF
ETR
TRACE AXI
SRAM
This section gives a brief overview of the modules that are implemented within the
Cortex-M/Cortex-A Core Platform. The debug blocks are part of the overall CoreSight
platform debug system, which include the ETR, CTM, CTI, ATB replicator, APB address
decode, TPIU and DAP. The CoreSight™ compatible Embedded Trace Macrocell (ETM)
enables traces of program flow to be collected, compressed, and fed into the trace
infrastructure. The Cross Trigger Interface (CTI) is included to provide a common
programming model for use by the debug tools, control the trigger sources, and interface
to the Cross Trigger Matrix (CTM). The debug is controlled via an ARM Debug Access
Port (DAP).
When the JTAG interface is in Debug Mode, it can be operating in standard 5-pin JTAG
interface. cJTAG/SWD interface is not supported by this chip.
4.11.1 Overview
The System Counter (SYS_CTR) is a programmable system counter, which provides a
shared time base to multiple processors. It is intended for applications where the counter
is always powered on, and supports multiple unrelated clocks.
Processor
System Platform 0
Bus
Counter 56-bit, Gray
24 MHz base_clk
32 kHz slow_clk
Processor
Platform 1
4.11.1.2 Features
• Two counter clock frequencies
• Base clock for normal operation
• Alternate clock for low power operation
• 56-bit counter width
• Gray coded counter output for distribution to the processor timers
• 2 Compare Frames
4.11.2.1 Operation
After reset, the System Counter is disabled with count value reset to zero and base
frequency selected. Once the counter is enabled, it will increment the appropriate value
on each rising edge of the selected clock. Because the System Counter is handling a 56-
bit count value across multiple clock domains, synchronization is necessary. The System
Counter provides synchronization mechanisms between the various clock domains.
When the system switches the counter’s clock source, there is a short pause while the
clock multiplexer is handling the clock transition. In order to maintain an accurate count
value, the clock control logic employs two offset counters; one for the base-to-slow
transtion and one for the slow-to-base transition. These offset counters only operate
during the clock transition time to compensate for the idled source clock. Both counters
run off of the base clock. The transition offset values are added to the system count value
at the appropriate time when the counter’s clock is restored.
NOTE
Both base clock and alternate clock must be running when
changing frequencies.
4.11.2.2 Clocks
The System Counter clocks are shown in the table below.
Table 4-23. Clocks
Clock Description
ipg_clk Peripheral Clock
ipg_clk_s Gated peripheral clock for register transactions
base_clk Base Clock. This clock is used during normal operation. It is internally divided by 3
before use.
slow_clk Slow Clock. This clock is used during low power mode. It is internally divided by 64
before use.
4.11.4.1.2.1 Offset
Register Offset
CNTCR 0h
4.11.4.1.2.2 Function
The 32-bit Counter Control Register defines the basic operating configuration of the
System Counter.
The System Counter operates using a fixed base frequency. However, the counter can
increment at a lower, alternate frequency than the base frequency, using a
correspondingly larger increment. For example, it can increment by 15625 and run at a
frequency of 1/15625 of the base frequency. The two frequencies available are
indentified in the frequency modes table. These two frequencies are the base frequency
(table entry 0) and the lower, alternate frequency (table entry 1). Setting the FCR1 bit
selects the alternate frequency. Setting the FCR0 bit selects the base frequency. Setting or
clearing both FCR0 and FCR1 will have no effect; the freqeuncy will not change.
4.11.4.1.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
HDBG
FCR1
FCR0
EN
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.1.2.4 Fields
Field Function
31-10 -
— Reserved
9 FCR1
FCR1 Frequency Change Request, ID 1
0b - No change.
1b - Select frequency modes table entry 1, the base frequency.
8 FCR0
FCR0 Frequency Change Request, ID 0
0b - No change.
1b - Select frequency modes table entry 0, the base frequency.
7-2 -
— Reserved
1 HDBG
HDBG Enable Debug
0b - The assertion of the debug input is ignored.
1b - The assertion of the debug input causes the System Counter to halt.
0 EN
EN Enable Counting
0b - Counter disabled
1b - Counter enabled
4.11.4.1.3.1 Offset
Register Offset
CNTSR 4h
4.11.4.1.3.2 Function
The system counter status register provides information concerning the clock frequency
and debug state.
4.11.4.1.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DBGH
FCA1
FCA0
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
4.11.4.1.3.4 Fields
Field Function
31-10 -
— Reserved
9 FCA1
FCA1 Frequency Change Acknowledge, ID 1
0b - Base frequency is not selected.
1b - Base frequency is selected.
8 FCA0
FCA0 Frequency Change Acknowledge, ID 0
0b - Base frequency is not selected.
1b - Base frequency is selected.
7-1 -
— Reserved
0 DBGH
Field Function
DBGH Debug Halt
0b - Counter is not halted by debug.
1b - Counter is halted by debug.
4.11.4.1.4.1 Offset
Register Offset
CNTCV0 8h
4.11.4.1.4.2 Function
The Counter Count Value Low register indicates the current count value bits 31-0.
NOTE
Writes to the CNTCV registers must be performed while
operating on the base frequency only. Writes to these registers
while running on the alternate frequency may have
unpredictable results.
4.11.4.1.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
CNTCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
CNTCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.1.4.4 Fields
Field Function
31-0 CNTCV0
CNTCV0 Counter Count Value bits [31:0]
4.11.4.1.5.1 Offset
Register Offset
CNTCV1 Ch
4.11.4.1.5.2 Function
The Counter Count Value High register indicates the current count value bits 63-32.
NOTE
Writes to the CNTCV registers must be performed while
operating on the base frequency only. Writes to these registers
while running on the alternate frequency may have
unpredictable results.
4.11.4.1.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved CNTCV1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
CNTCV1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.1.5.4 Fields
Field Function
31-25 -
— Reserved
24-0 CNTCV1
CNTCV1 Counter Count Value bits [55:32]
4.11.4.1.6.1 Offset
Register Offset
CNTFID0 20h
4.11.4.1.6.2 Function
The Counter Frequency ID registers is the frequency modes table starting at offset 0x020.
Table entries are 32-bits, and each entry specifies a system counter update frequency, in
Hz. The first entry in the table specifies the base frequency of the system counter. To
ensure overall counter accuracy is maintained, any subsequent entries in the table are
exact divisors of the base frequency.
When the system timer is operating at a lower frequency than the base frequency, the
increment applied at each counter update is given by: increment = (base_frequency) /
(selected_frequency) A 32-bit word of zero value marks the end of the table. That is, the
word of memory immediately after the last entry in the table is zero.
4.11.4.1.6.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTFID0
W
Reset 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTFID0
W
Reset 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0
4.11.4.1.6.4 Fields
Field Function
31-0 CNTFID0
CNTFID0 Base Frequency (24 MHz /3 = 8 MHz)
4.11.4.1.7.1 Offset
Register Offset
CNTFID1 24h
4.11.4.1.7.2 Function
The Counter Frequency ID registers is the frequency modes table starting at offset 0x020.
Table entries are 32-bits, and each entry specifies a system counter update frequency, in
Hz. The first entry in the table specifies the base frequency of the system counter. To
ensure overall counter accuracy is maintained, any subsequent entries in the table are
exact divisors of the base frequency.
When the system timer is operating at a lower frequency than the base frequency, the
increment applied at each counter update is given by: increment = (base_frequency) /
(selected_frequency) A 32-bit word of zero value marks the end of the table. That is, the
word of memory immediately after the last entry in the table is zero.
4.11.4.1.7.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTFID1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTFID1
W
Reset 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
4.11.4.1.7.4 Fields
Field Function
31-0 CNTFID1
CNTFID1 Alternate Frequency (32 kHz /64 = 512 Hz)
4.11.4.1.8.1 Offset
Register Offset
CNTFID2 28h
4.11.4.1.8.2 Function
The Counter Frequency ID registers is the frequency modes table starting at offset 0x020.
Table entries are 32-bits, and each entry specifies a system counter update frequency, in
Hz. The first entry in the table specifies the base frequency of the system counter. To
ensure overall counter accuracy is maintained, any subsequent entries in the table are
exact divisors of the base frequency.
When the system timer is operating at a lower frequency than the base frequency, the
increment applied at each counter update is given by: increment = (base_frequency) /
(selected_frequency) A 32-bit word of zero value marks the end of the table. That is, the
word of memory immediately after the last entry in the table is zero.
4.11.4.1.8.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTFID2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTFID2
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.1.8.4 Fields
Field Function
31-0 CNTFID2
CNTFID2 End Marker
4.11.4.1.9.1 Offset
Register Offset
CNTID0 FD0h
4.11.4.1.9.2 Function
The Counter ID register indicates the architecture version 0.
4.11.4.1.9.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.1.9.4 Fields
Field Function
31-0 CNTID
CNTID Counter Identification. Counter ID 0.
The read frame registers are all read-only. These registers read the same values as the
control frame registers for the count value and counter ID. They are processed via a
separate mechanism from the control frame to allow nonsecure, user mode access.
4.11.4.2.2.1 Offset
Register Offset
CNTCV0 0h
4.11.4.2.2.2 Function
The Counter Count Value Low register indicates the current count value bits 31-0.
4.11.4.2.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.2.2.4 Fields
Field Function
31-0 CNTCV0
CNTCV0 Counter Count Value bits [31:0]
4.11.4.2.3.1 Offset
Register Offset
CNTCV1 4h
4.11.4.2.3.2 Function
The Counter Count Value High register indicates the current count value bits 63-32.
4.11.4.2.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTCV1
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTCV1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.2.3.4 Fields
Field Function
31-25 -
— Reserved
24-0 CNTCV1
CNTCV1 Counter Count Value bits [55:32]. Bits[63:56] are always zero.
4.11.4.2.4.1 Offset
Register Offset
CNTID0 FD0h
4.11.4.2.4.2 Function
The Counter ID register indicates the architecture version 0.
4.11.4.2.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.2.4.4 Fields
Field Function
31-0 CNTID
CNTID Counter Identification. Counter ID 0.
Each compare frame consists of a 256 byte region. Each compare frame has its own
compare value and control register. Each compare frame is capable of generating one
maskable interrupt.
4.11.4.3.2.1 Offset
Register Offset
CMPCVL0 20h
CMPCVL1 120h
4.11.4.3.2.2 Function
The Compare Count Value Low register indicates the current count value bits 31-0.
NOTE
Writes to the CMPCV registers must be performed while
operating on the base frequency only. Writes to these registers
while running on the alternate frequency may have
unpredictable results.
4.11.4.3.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CMPCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CMPCV0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.3.2.4 Fields
Field Function
31-0 CMPCV0
CMPCV0 Compare Count Value bits [31:0]
4.11.4.3.3.1 Offset
Register Offset
CMPCVH0 24h
CMPCVH1 124h
4.11.4.3.3.2 Function
The Compare Count Value High register indicates the current count value bits 63-32.
NOTE
Writes to the CMPCV registers must be performed while
operating on the base frequency only. Writes to these registers
while running on the alternate frequency may have
unpredictable results.
4.11.4.3.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CMPCV1
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CMPCV1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.3.3.4 Fields
Field Function
31-25 -
— Reserved
24-0 CMPCV1
CMPCV1 Compare Count Value bits [55:32]. Bits[63:56] are always zero.
4.11.4.3.4.1 Offset
Register Offset
CMPCR0 2Ch
CMPCR1 12Ch
4.11.4.3.4.2 Function
The compare control register provides control and status of the compare function. When
enabled, the ISTAT bit indicates whether the counter value is greater than or equal to the
value in the compare value register (CMPCV). The ISTAT equation is:
ISTAT = (CNTCV >= CMPCV)
ISTAT takes no account of the value of the IMASK bit. If ISTAT is set to 1 and IMASK
is 0, then the interrupt request is asserted. Clearing the enable bit (EN=0) will clear the
status bit (ISTAT=0) and will negate the interrupt output signal.
4.11.4.3.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ISTAT
Reserved
R
IMASK
EN
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.3.4.4 Fields
Field Function
31-3 -
— Reserved
2 ISTAT
ISTAT Compare (interrupt) status
0b - Counter value is less than the compare value or compare is disabled.
1b - Counter value is greater than or equal to the compare value and compare is enabled.
1 IMASK
IMASK Interrupt request mask
0b - Interrupt output signal is not masked.
1b - Interrupt output signal is masked.
0 EN
EN Enable the compare function
0b - Compare disabled
1b - Compare enabled
4.11.4.3.5.1 Offset
Register Offset
CNTID0 FD0h
4.11.4.3.5.2 Function
The Counter ID register indicates the architecture version 0.
4.11.4.3.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R CNTID
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4.11.4.3.5.4 Fields
Field Function
31-0 CNTID
CNTID Counter Identification. Counter ID 0.
5.1.1 Overview
Clock Control Module (CCM) manages the on-chip module clocks. CCM receives clocks
from PLLs and oscillators and creates clocks for on-chip peripherals through a set of
multiplexers, dividers and gates. When entering or exiting a low power mode, CCM
automatically turns on and off PLLs and peripheral clocks.
mux
: cg div
cg
PLL cg
Clock Source from cg
PLL/Divider cg
24 MHz PLLs cg
cg
mux
: cg div
cg
32 kHz
to on-chip
peripherals
Pre-Dividers PLL Enable
PLL
Control
PLL Lock
Clock Gate
GPC SRC
CCM_CLKO[2:1]
NOTE
Some clock gates illustrated below are symbolic of distributed
clock gates (multiple) and not a sole clock gate. These clock
slices typically source multiple IP (e.g. bus clocks).
EXT_CLK_4
EXT_CLK_3
EXT_CLK_2
EXT_CLK_1
OSC_32K
VIDEO
DIV
PLL
Audio
DIV
PLL2
Audio
DIV
PLL1
System
PLL3
System
/20
PLL2
/10
/8
/6
/5
/4
/3
/2
System
/20
PLL1
/10
/8
/6
/5
/4
/3
/2
DRAM DIV
PLL1
OSC_24M
SYSTEM_PLL1_DIV20
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
DRAM_PLL1_CLK
VIDEO_PLL_CLK
GPU_PLL_CLK
VPU_PLL_CLK
ARM_PLL_CLK
24M_REF_CLK
32K_REF_CLK
EXT_CLK_1
EXT_CLK_2
EXT_CLK_3
EXT_CLK_4
The figure below illustrates the clock slices of CCM and clock root generation.
LPCG
PRE[MUX_A]
POST[MUX_A]
POST[SELECT]
cg
ARM_A53_CLK_ROOT
RRE[MUX_B]
cg POST[POST_PODF]
POST[MUX_B]
POST[MUX_A]
PRE[MUX_A]
POST[SELECT]
cg
ARM_M7_CLK_ROOT
RRE[MUX_B]
POST[MUX_B]
cg POST[POST_PODF]
POST[MUX_A]
PRE[MUX_A]
POST[SELECT]
cg CCGR91
ML_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
POST[MUX_A]
PRE[MUX_A]
POST[SELECT]
cg CCGR70
GPU3D_CORE_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A]
POST[SELECT]
cg CCGR70
GPU3D_SHADER_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_A]
PRE[MUX_A]
POST[SELECT]
cg CCGR69
GPU2D_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A]
POST[SELECT]
cg CCGR101
AUDIO_AXI_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
POST[MUX_A]
PRE[MUX_A] CCGR37 ||
POST[SELECT] CCGR77
cg
HSIO_AXI_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
POST[MUX_A]
PRE[MUX_A]
POST[SELECT]
cg CCGR93
MEDIA_ISP_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
POST[MUX_A]
PRE[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg
MAIN_AXI_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg
RRE[MUX_B] ENET_AXI_CLK_ROOT
cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg NAND_USDHC_BUS_CLK_ROOT
RRE[MUX_B] cg
cg POST[POST_PODF]
POST[MUX_B]
PRE[PRE_PODF_B]
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR99
VPU_BUS_CLK_ROOT
RRE[MUX_B] cg
SYSTEM_PLL1_DIV20
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
cg POST[POST_PODF]
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
PRE[PRE_PODF_B]
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
POST[MUX_B]
VIDEO_PLL_CLK
DRAM_PLL1_CLK
32K_REF_CLK
GPU_PLL_CLK
ARM_PLL_CLK
24M_REF_CLK
VPU_PLL_CLK
EXT_CLK_2
EXT_CLK_1
EXT_CLK_4
EXT_CLK_3
POST[MUX_A] LPCG
PRE[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR93
MEDIA_AXI_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
POST[MUX_A]
PRE[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR93
MEDIA_APB_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR95
HDMI_APB_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR95
HDMI_AXI_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
CCGR60 ||
POST[MUX_A]
PRE[MUX_A] PRE[PRE_PODF_A] CCGR70 ||
POST[SELECT] CCGR87
cg
GPU_AXI_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B] CCGR60 ||
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] CCGR70 ||
POST[SELECT] CCGR87
cg
GPU_AHB_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
POST[MUX_A]
PRE[MUX_A] PRE[PRE_PODF_A]
POST[SELECT] CCGR88
cg
` PRE[MUX_B]
NOC_CLK_ROOT
cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR88
` PRE[MUX_B]
NOC_IO_CLK_ROOT
cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg
ML_AXI_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A]
POST[SELECT]
cg CCGR91
ML_AHB_CLK_ROOT
PRE[MUX_B] cg
cg POST[POST_PODF]
PRE[PRE_PODF_B]
POST[MUX_B] AHB_CLK_ROOT
cg
PRE[MUX_A]
POST[MUX_A]
POST[SELECT]
cg IPG[POST_PODF]
IPG_CLK_ROOT
PRE[MUX_B] cg
cg AHB[POST_PODF] CCGR101
CKIL_SYNC
SYNC
POST[MUX_B] AUDIO_AHB_CLK_ROOT
PRE[MUX_A]
POST[MUX_A]
cg
POST[SELECT]
cg IPG[POST_PODF]
PRE[MUX_B]
cg AHB[POST_PODF] CCGR93
POST[MUX_B] MEDIA_DISP2_CLK_ROOT
POST[MUX_B] PRE[MUX_A]
POST[MUX_A]
cg
POST[SELECT]
cg IPG[POST_PODF]
PRE[MUX_B]
SYSTEM_PLL1_DIV20
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
POST[MUX_B]
cg AHB[POST_PODF]
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
VIDEO_PLL_CLK
DRAM_PLL1_CLK
32K_REF_CLK
GPU_PLL_CLK
ARM_PLL_CLK
24M_REF_CLK
VPU_PLL_CLK
POST[MUX_B]
EXT_CLK_2
EXT_CLK_1
EXT_CLK_4
EXT_CLK_3
POST[MUX_B] LPCG
POST[MUX_B]
PRE[MUX_A]
POST[MUX_A] CCGR5
PRE[PRE_PODF_A] POST[POST_PODF]
DRAM_ALT_CLK_ROOT
cg cg
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR5
DRAM_APB_CLK_ROOT
cg cg
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR86
VPU_G1_CLK_ROOT
cg cg
POST[MUX_A]
PRE[MUX_A]
PRE[PRE_PODF_A] POST[POST_PODF] CCGR90
VPU_G2_CLK_ROOT
cg cg
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR53
CAN1_CLK_ROOT
cg cg
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR54
CAN2_CLK_ROOT
cg cg
PRE[MUX_A]
POST[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR37
PCIE_AUX_CLK_ROOT
cg cg
PRE[MUX_A]
PRE[PRE_PODF_A] POST[POST_PODF] CCGR101
SAI2_CLK_ROOT
cg cg
PRE[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR101
SAI3_CLK_ROOT
cg cg
PRE[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR101
SAI5_CLK_ROOT
cg cg
PRE[MUX_A] PRE[PRE_PODF_A] POST[POST_PODF] CCGR101
SAI6_CLK_ROOT
cg cg
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
VIDEO_PLL_CLK
DRAM_PLL1_CLK
32K_REF_CLK
GPU_PLL_CLK
ARM_PLL_CLK
24M_REF_CLK
VPU_PLL_CLK
EXT_CLK_2
EXT_CLK_1
EXT_CLK_4
EXT_CLK_3
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
VIDEO_PLL_CLK
DRAM_PLL1_CLK
32K_REF_CLK
GPU_PLL_CLK
ARM_PLL_CLK
24M_REF_CLK
VPU_PLL_CLK
EXT_CLK_4
EXT_CLK_2
EXT_CLK_1
EXT_CLK_3
LPCG
SYSTEM_PLL2_DIV20
SYSTEM_PLL1_DIV10
SYSTEM_PLL2_DIV10
SYSTEM_PLL1_DIV2
SYSTEM_PLL1_DIV3
SYSTEM_PLL1_DIV4
SYSTEM_PLL1_DIV5
SYSTEM_PLL1_DIV6
SYSTEM_PLL1_DIV8
SYSTEM_PLL2_DIV2
SYSTEM_PLL2_DIV3
SYSTEM_PLL2_DIV4
SYSTEM_PLL2_DIV5
SYSTEM_PLL2_DIV6
SYSTEM_PLL2_DIV8
SYSTEM_PLL1_CLK
SYSTEM_PLL2_CLK
SYSTEM_PLL3_CLK
AUDIO_PLL1_CLK
AUDIO_PLL2_CLK
VIDEO_PLL_CLK
DRAM_PLL1_CLK
32K_REF_CLK
GPU_PLL_CLK
ARM_PLL_CLK
25M_REF_CLK
VPU_PLL_CLK
EXT_CLK_2
EXT_CLK_1
EXT_CLK_4
EXT_CLK_3
5.1.5.3.4 8 to 1 Multiplexer
The 8-to-1 multiplexer is a combinational multiplexer that can switch anytime. The
multiplexer output does not guarantee a clean clock signal. The output clock path from
the multiplexer must be clock gated before changing the multiplexer selection. This will
insure a clean clock source change.
Clock Root 1
Clock Slice 1
...
Clock Root N
Clock Slice N
The following figure illustrates the CCM clock components that a clock slice can
comprise of, and the associated register controls. Not all clock slice types will comprise
of all the components provided in the figure below. Please refer to the following sections
to identify the components included in particular clock slice type. The slice shown below
is comprised of a post divider and a clock switching multiplexer with 2 input sources.
Each input source has a pre-divider, a clock gate and a clock multiplexer inside.
CCM_PREn[MUX_A]
clk 0
clk 1
MUX_A
CCM_PREn[EN_A]
clk 2
clk 3 CG
clk 4
clk 5 CCM_PREn[PRE_PODF_A]
CCM_POSTn[SELECT]
clk 6
clk 7 PRE_PODF_A
MUX
POST_PODF
PRE_PODF_B
CCM_POSTn[POST_PODF]
MUX_B
CCM_PREn[PRE_PODF_B]
CG
CCM_PREn[EN_B]
CCM_PREn[MUX_B]
clk 0
clk 1
MUX_A
clk 2
clk 3
CG
clk 4
clk 5
clk 6
clk 7
MUX
POST_PODF
MUX_B
CG
clk 0
clk 1
MUX_A
clk 2
clk 3 CG
clk 4
clk 5
clk 6
clk 7 PRE_PODF_A
MUX
POST_PODF
PRE_PODF_B
MUX_B
CG
clk 0
clk 1
clk 2
MUX_A
clk 3
clk 4 CG PRE_PODF_A POST_PODF
clk 5
clk 6
clk 7
AFC_ENB
EXTAFC[4:0]
MUX
ICP[2:0] AFC_CODE[4:0]
5
FREF
Phase UP Voltage
Charge VCOOUT FOUT
Pre-Divider Frequency Controlled Scaler
FIN FEED Pump
Detector DN Oscillator
Main /2Divider
K[15:0] Divider
SEL_PF[1:0]
20 10
Modulation
SSCG_EN DSM
Control
FSEL
MUX
FEED
FREF
AFC_ENB
FEED AFC
AFC_CODE[4:0]
FEED_EN
Programmable CCM_ANALOG_xx_FDIV_CTL0[PLL_PRE_DIV]
Pre-Divider Main Divider
FVCO/m
(m)
Programmable CCM_ANALOG_xx_FDIV_CTL0[PLL_MAIN_DIV]
Main Divider
Programmable CCM_ANALOG_xx_FDIV_CTL0[PLL_POST_DIV]
Post-Divider
For PLLs, there are controls on every PLL. PLLs are the source for the PFDs and
dividers. For any clock that is enabled, its source must be left on, otherwise, the behavior
is undefined. For a shutdown clock source, if it is set as dependent by writing to the clock
source control registers (CCM_PLL_CTRLn[SETTING0/1/2/3]), the controlling logic
will turn on the source immediately, while the setting goes into a shadow register. After
the clock source is ready, the setting will be accepted by the source control logic, and
copied from the shadow register to the setting register. Handshake with the PLL happens
if the change of the setting causes a PLL to start up or shutdown. The time cost is
determined by the PLL that is under control. Software can poll the setting field for a new
setting value.
NOTE
Only domains that are on the whitelist can perform write access
to this clock root when access control is enabled.
Table 5-4. Semaphore
Enabled A domain must obtain the semaphore’s ownership before its write access can be
authenticated. Only a domain on the whitelist can obtain the ownership and the
ownership will last until the domain explicitly releases the ownership. Semaphore
obtain will fail if it is already fetched by some other domain.
Disabled Authentic check will check only on whitelist.
NOTE
Semaphore is intended to help software keep the clock root
from unexpectedly changing.
Access control of clock gate and clock source control is performed in a simple operation.
Every domain can only write on the bits for it's own setting. Any write to irrespective
domain will be ignored.
Each domain can change only bits assigned to control access. Any irrelevant write to it
will be ignored. For example, Domain 0 can only write to bits [1:0]. Any bits written to,
other than bits [1:0], will be ignored. Other domains can read all of the other domain
settings. The default value for domain 0 is 2, and will enter STOP mode after shutting
down. When the default value of the other domain setting is 0, it will not be required.
When setting clock source, the settings will not take effect immediately. The setting will
enter the shadow register first. If a PLL shutdown or new setting enters the shadow
register to declare dependency on the PLL, the PLL will turn on immediately. When the
PLL is ready, the setting in shadow register will be updated to the new setting. During
this period, the pending bit will be set and cleared. Then CCM will send the PLL control
signal as a shadow register and inform GPC the PLL status according to the setting
register. In other cases, the setting will be updated from the shadow register immediately.
Clock sources have dependency on each other.
NOTE
Do not shutdown the parent clock when the required child clock
is active. Attempting to do so will lead to unpredicable and
unrecoverable behavior. It is recommended to shutdown the
parent clock and child clock together.
Each domain can declare its dependency to CCM. The use of any clock, without
declaring it in its own domain, is not permitted. A domain declares its dependency on a
clock by writing the dependency level. Settings against behavior in low-power mode are
as follows:
Table 5-7. Domain Dependency
Domain Level RUN WAIT STOP/ DEEP SLEEP
0
1 Required
2 Required Required
3 Required Required Required
Each domain can change only bits assigned to control access. Any irrelevant write to it
will be ignored. For example, Domain 0 can only write to bits [1:0]. Any bits written to,
other than bits [1:0], will be ignored. Other domains can read all of the other domain
settings. The default value for domain 0 is 2, and will enter STOP mode after shutting
down. When the default value of the other domain setting is 0, it will not be required.
The table below lists the CCM Clock Gating Register (CCGR) and associated offset for
each LPCG enable.
NOTE
Not all CCGRs are mapped.
NOTE
Sec_debug clock gating (CCGR60) must be active in low
power mode. DO NOT gate this clock in low power mode to
guarantee the low power mode functions such as stop WDOG
counting.
Table 5-9. CCGR Mapping Table
Gating Register LPCG Enable Offset
CCM_CCGR0 DVFS 0x4000
CCM_CCGR1 Anamix 0x4010
CCM_CCGR2 CPU 0x4020
The internal logic sequence of the Target Interface guarantees a clean clock on output
without frequency overshoot. A requirement of the Target Interface's software is that the
target clock source is active.
The Target Interface sequence begins by opening all clocks, applying highest divider
value, switching to the new clock source, then decreasing divider value to the target
frequency. If Shutdown is requested, it will be performed last.
The clock output is always active when using the Target Interface. For intermediate
frequency requests, the Target Interface choses the lowest frequency source to avoid
frequency overshoot on the Peripheral clock slices. For Core and Bus clock slices, the
clock switching multiplexer is used to guarantee smooth clock switching.
A write operation on a target interface completes once the output clock is running at the
desired setting. Software polling is not necessary to determine clock stability.
STEP STATE OPERATION
0 SMART_IDLE Idle state, no write operation is pending
1 SMART_WAIT_READY State occurs when a write access is received, wait for every
field to be ready
2 SMART_APPLY_GATE1 Open all branches, all gates inside clock slices
3 SMART_WAIT_GATE1 Wait for gate applied
4 SMART_APPLY_PODF1 apply post divider and post divider for if new value generate
slower clock
5 SMART_WAIT_PODF1 Wait for divider accept new value
6 SMART_APPLY_GATE2 shutdown spare branch if exist, else shutdown working
branch
7 SMART_WAIT_GATE2 Wait for shutdown operation complete
8 SMART_APPLY_MUX Change multiplexer to new source on spare branch if exist,
else switch working one
9 SMART_APPLY_GATE3 open gates on all branches
10 SMART_WAIT_GATE3 Wait for gates opened
11 SMART_APPLY_SWITCH Switch clock switching multiplexer if there is one
12 SMART_WAIT_SWITCH Wait for clock switching multiplexer switch
13 SMART_APPLY_PODF2 apply post divider and post divider for if new value generate
faster clock
14 SMART_WAIT_PODF2 Wait for divider accept new value
15 SMART_APPLY_GATE4 apply clock gate setting, shutdown spare one if there is
16 SMART_WAIT_GATE4 Wait for gate applied
17 SMART_APPLY_AUTO apply auto and auto divider
18 SMART_DONE Finish, wait for bus operation complete
GPR0
Address: 3038_0000h base + 0h offset + (4d × i), where i=0d to 3d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
GP0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
NOTE
Sec_debug clock gating (CCGR60) must be active in low
power mode. DO NOT gate this clock in low power mode to
guarantee the low power mode functions such as stop WDOG
counting.
Address: 3038_0000h base + 4000h offset + (16d × i), where i=0d to 191d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
NOTE
Not all CCGRs are mapped. See CCGR Interface for CCGR
mapping and clock gating information.
Address: 3038_0000h base + 4004h offset + (16d × i), where i=0d to 191d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
NOTE
Not all CCGRs are mapped. See CCGR Interface for CCGR
mapping and clock gating information.
Address: 3038_0000h base + 4008h offset + (16d × i), where i=0d to 191d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
NOTE
Not all CCGRs are mapped. See CCGR Interface for CCGR
mapping and clock gating information.
Address: 3038_0000h base + 400Ch offset + (16d × i), where i=0d to 191d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
SETTING3 SETTING2 SETTING1 SETTING0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
ENABLE
Reset 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15–6 This field is reserved.
- Reserved
POST_PODF Post divider divide number
Divider value is n + 1.
For CORE, this field is 3 bit long.
For Peripheral (IP), this field is 1 bit long.
This field does not apply to DRAM_PHYM
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
ENABLE
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15–6 This field is reserved.
- Reserved
POST_PODF Post divider divide the number
Divider value is n + 1.
For CORE, this field is 3 bit long.
For Peripheral (IP), this field is 1 bit long.
This field does not apply to DRAM_PHYM
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
ENABLE
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15–6 This field is reserved.
- Reserved
POST_PODF Post divider divide the number
Divider value is n + 1.
For CORE, this field is 3 bit long.
For Peripheral (IP), this field is 1 bit long.
This field does not apply to DRAM_PHYM
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
ENABLE
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15–6 This field is reserved.
- Reserved
POST_PODF Post divider divide number
Divider value is n + 1.
For CORE, this field is 3 bit long.
For Peripheral (IP), this field is 1 bit long.
This field does not apply to DRAM_PHYM
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
MISC
Address: 3038_0000h base + 8010h offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUTHEN_FAIL
R
TIMEOUT
VIOLATE
Reserved Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Misc
Address: 3038_0000h base + 8014h offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUTHEN_FAIL
R
TIMEOUT
VIOLATE
Reserved Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MISC
Address: 3038_0000h base + 8018h offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUTHEN_FAIL
R
TIMEOUT
VIOLATE
Reserved Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MISC
Address: 3038_0000h base + 801Ch offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUTHEN_FAIL
R
TIMEOUT
VIOLATE
Reserved Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Post Register
Address: 3038_0000h base + 8020h offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY2
R
SELECT
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
R
Reserved
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 select branch A
1 select branch B
27–8 This field is reserved.
- Reserved
7 Post divider is applying new set value
BUSY1
6 This field is reserved.
- Reserved
POST_PODF Post divider divide the number
Divider value is n + 1
Table continues on the next page...
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY2
R
SELECT
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
R
Reserved
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 select branch A
1 select branch B
27–8 This field is reserved.
- Reserved
7 Post divider is applying new set value
BUSY1
6 This field is reserved.
- Reserved
POST_PODF Post divider divide number
Divider value is n + 1
Table continues on the next page...
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY2
R
SELECT
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
R
Reserved
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 select branch A
1 select branch B
27–8 This field is reserved.
- Reserved
7 Post divider is applying new set value
BUSY1
6 This field is reserved.
- Reserved
POST_PODF Post divider divide the number
Divider value is n + 1
Table continues on the next page...
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY2
R
SELECT
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
R
Reserved
Reserved POST_PODF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 select branch A
1 select branch B
27–8 This field is reserved.
- Reserved
7 Post divider is applying new set value
BUSY1
6 This field is reserved.
- Reserved
POST_PODF Post divider divide number
Divider value is n + 1
Table continues on the next page...
000000 Divide by 1
000001 Divide by 2
000010 Divide by 3
000011 Divide by 4
000100 Divide by 5
000101 Divide by 6
:
111111 Divide by 64
Pre Register
Address: 3038_0000h base + 8030h offset + (128d × i), where i=0d to 141d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY4
BUSY3
R
Reserved
EN_A
Reset 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
BUSY0
R
Reserved
EN_B
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Clock shutdown
1 clock ON
27 This field is reserved.
- Reserved
26–24 Selection control of multiplexer of branch A
MUX_A
This field applies to DRAM and DRAM_PHYM
23–20 This field is reserved.
- Reserved
19 Pre divider value for branch A is applied
BUSY3
This field applies to DRAM and DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15 EN_B is applied to field
BUSY1
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
14–13 This field is reserved.
- Reserved
12 Branch B clock gate control
EN_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
0 Clock shutdown
1 Clock ON
11 This field is reserved.
- Reserved
10–8 Selection control of multiplexer of branch B
MUX_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
7–4 This field is reserved.
- Reserved
3 Pre divider value for branch a is applying
BUSY0
field does not apply for CORE, IP,DRAM, DRAM_PHYM
PRE_PODF_B Pre divider divide number for branch B
Divider value is n + 1.
This field does not apply for CORE, IP, DRAM, DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY4
BUSY3
R
Reserved
EN_A
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
BUSY0
R
Reserved
EN_B
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Clock shutdown
1 clock ON
27 This field is reserved.
- Reserved
26–24 Selection control of multiplexer of branch A
MUX_A
This field applies to DRAM and DRAM_PHYM
23–20 This field is reserved.
- Reserved
19 Pre divider value for branch A is applied
BUSY3
This field applies to DRAM and DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15 EN_B is applied to field
BUSY1
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
14–13 This field is reserved.
- Reserved
12 Branch B clock gate control
EN_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
0 Clock shutdown
1 Clock ON
11 This field is reserved.
- Reserved
10–8 Selection control of multiplexer of branch B
MUX_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
7–4 This field is reserved.
- Reserved
3 Pre divider value for branch A is applying
BUSY0
field does not apply for CORE, IP,DRAM, DRAM_PHYM
PRE_PODF_B Pre divider divide number for branch B
Divider value is n + 1.
This field does not apply for CORE, IP, DRAM, DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY4
BUSY3
R
Reserved
EN_A
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
BUSY0
R
Reserved
EN_B
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Clock shutdown
1 clock ON
27 This field is reserved.
- Reserved
26–24 Selection control of multiplexer of branch A
MUX_A
This field applies to DRAM and DRAM_PHYM
23–20 This field is reserved.
- Reserved
19 Pre divider value for branch A is applied
BUSY3
This field applies to DRAM and DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15 EN_B is applied to field
BUSY1
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
14–13 This field is reserved.
- Reserved
12 Branch B clock gate control
EN_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
0 Clock shutdown
1 Clock ON
11 This field is reserved.
- Reserved
10–8 Selection control of multiplexer of branch B
MUX_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
7–4 This field is reserved.
- Reserved
3 Pre divider value for branch A is applied
BUSY0
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
PRE_PODF_B Pre divider divide number for branch B
Divider value is n + 1.
This field does not apply for CORE, IP, DRAM, DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BUSY4
BUSY3
R
Reserved
EN_A
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY1
BUSY0
R
Reserved
EN_B
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Clock shutdown
1 clock ON
27 This field is reserved.
- Reserved
26–24 Selection control of multiplexer of branch A
MUX_A
This field applies to DRAM and DRAM_PHYM
23–20 This field is reserved.
- Reserved
19 Pre divider value for branch A is applied
BUSY3
This field applies to DRAM and DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
15 EN_B is applied to field
BUSY1
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
14–13 This field is reserved.
- Reserved
12 Branch B clock gate control
EN_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
0 Clock shutdown
1 Clock ON
11 This field is reserved.
- Reserved
10–8 Selection control of multiplexer of branch B
MUX_B
This field does not apply for CORE, IP,DRAM, DRAM_PHYM
7–4 This field is reserved.
- Reserved
3 Pre divider value for branch a is applied
BUSY0
field does not apply for CORE, IP,DRAM, DRAM_PHYM
PRE_PODF_B Pre divider divide number for branch B
Divider value is n + 1.
This field does not apply for CORE, IP, DRAM, DRAM_PHYM
000 Divide by 1
001 Divide by 2
010 Divide by 3
011 Divide by 4
100 Divide by 5
101 Divide by 6
110 Divide by 7
111 Divide by 8
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R OWNER_ID
DOMAIN3_WHITELIST
DOMAIN2_WHITELIST
DOMAIN1_WHITELIST
DOMAIN0_WHITELIST
SEMA_EN
MUTEX
LOCK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disable
1 Enable
27 White list of domains that can change setting of this clock root.
DOMAIN3_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
26 White list of domains that can change setting of this clock root.
DOMAIN2_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
25 White list of domains that can change setting of this clock root.
DOMAIN1_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
24 White list of domains that can change setting of this clock root.
DOMAIN0_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
23–21 This field is reserved.
- Reserved
20 Semaphore to control access
MUTEX
0 Semaphore is free to take
1 Semaphore is taken
Write 0 Release semaphore
Write 1 Acquire semaphore
19–18 This field is reserved.
- Reserved
17–16 Current domain that owns semaphore
OWNER_ID
This field is meaningless when MUTEX is 0
0 domaino
1 domain1
2 domain2
3 domain3
15–12 Information from domain 3 to pass to others
DOMAIN3_INFO
This field can only be changed by domain 3
11–8 Information from domain 2 to pass to others
DOMAIN2_INFO
This field can only be changed by domain 2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R OWNER_ID
DOMAIN3_WHITELIST
DOMAIN2_WHITELIST
DOMAIN1_WHITELIST
DOMAIN0_WHITELIST
SEMA_EN
MUTEX
LOCK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disable
1 Enable
27 White list of domains that can change setting of this clock root.
DOMAIN3_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
26 White list of domains that can change setting of this clock root.
DOMAIN2_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
25 White list of domains that can change setting of this clock root.
DOMAIN1_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
24 White list of domains that can change setting of this clock root.
DOMAIN0_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
23–21 This field is reserved.
- Reserved
20 Semaphore to control access
MUTEX
0 Semaphore is free to take
1 Semaphore is taken
Write 0 Release semaphore
Write 1 Acquire semaphore
19–18 This field is reserved.
- Reserved
17–16 Current domain that owns semaphore
OWNER_ID
This field is meaningless when MUTEX is 0
0 domaino
1 domain1
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R OWNER_ID
DOMAIN3_WHITELIST
DOMAIN2_WHITELIST
DOMAIN1_WHITELIST
DOMAIN0_WHITELIST
SEMA_EN
MUTEX
LOCK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disable
1 Enable
27 White list of domains that can change setting of this clock root.
DOMAIN3_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
26 White list of domains that can change setting of this clock root.
DOMAIN2_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
25 White list of domains that can change setting of this clock root.
DOMAIN1_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
24 White list of domains that can change setting of this clock root.
DOMAIN0_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
23–21 This field is reserved.
- Reserved
20 Semaphore to control access
MUTEX
0 Semaphore is free to take
1 Semaphore is taken
Write 0 Release semaphore
Write 1 Acquire semaphore
19–18 This field is reserved.
- Reserved
17–16 Current domain that owns semaphore
OWNER_ID
This field is meaningless when MUTEX is 0
0 domaino
1 domain1
2 domain2
3 domain3
15–12 Information from domain 3 to pass to others
DOMAIN3_INFO
This field can only be changed by domain 3
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R OWNER_ID
DOMAIN3_WHITELIST
DOMAIN2_WHITELIST
DOMAIN1_WHITELIST
DOMAIN0_WHITELIST
SEMA_EN
MUTEX
LOCK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disable
1 Enable
27 White list of domains that can change setting of this clock root.
DOMAIN3_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
26 White list of domains that can change setting of this clock root.
DOMAIN2_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
25 White list of domains that can change setting of this clock root.
DOMAIN1_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
24 White list of domains that can change setting of this clock root.
DOMAIN0_
Each domain has a corresponding bit.
WHITELIST
0 Domain cannot change the setting
1 Domain can change the setting
23–21 This field is reserved.
- Reserved
20 Semaphore to control access
MUTEX
0 Semaphore is free to take
1 Semaphore is taken
Write 0 Release semaphore
Write 1 Acquire semaphore
19–18 This field is reserved.
- Reserved
17–16 Current domain that owns semaphore
OWNER_ID
This field is meaningless when MUTEX is 0
0 domaino
1 domain1
2 domain2
3 domain3
15–12 Information from domain 3 to pass to others
DOMAIN3_INFO
This field can only be changed by domain 3
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_EXT_BYPASS
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
R
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
Reset 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
PLL_MAIN_DIV Reserved PLL_PRE_DIV PLL_POST_DIV
Reset 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved PLL_DSM
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SSCG_EN
Reserved PLL_MFREQ_CTL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00 Down spread
01 Up spread
1x Center spread
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PBIAS_CTRL_EN
R
AFCINIT_SEL
PBIAS_CTRL
AFC_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
AFC_EN
FSEL Reserved EXTAFC ICP
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_EXT_BYPASS
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
R
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
Reset 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
PLL_MAIN_DIV Reserved PLL_PRE_DIV PLL_POST_DIV
Reset 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved PLL_DSM
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SSCG_EN
Reserved PLL_MFREQ_CTL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00 Down spread
01 Up spread
1x Center spread
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PBIAS_CTRL_EN
R
AFCINIT_SEL
PBIAS_CTRL
AFC_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
AFC_EN
FSEL Reserved EXTAFC ICP
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_EXT_BYPASS
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
R
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
Reset 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
PLL_MAIN_DIV Reserved PLL_PRE_DIV PLL_POST_DIV
Reset 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved PLL_DSM
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SSCG_EN
Reserved PLL_MFREQ_CTL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00 Down spread
01 Up spread
1x Center spread
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PBIAS_CTRL_EN
R
AFCINIT_SEL
PBIAS_CTRL
AFC_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
AFC_EN
FSEL Reserved EXTAFC ICP
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_EXT_BYPASS
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
R
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
Reset 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
PLL_MAIN_DIV Reserved PLL_PRE_DIV PLL_POST_DIV
Reset 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved PLL_DSM
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SSCG_EN
Reserved PLL_MFREQ_CTL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00 Down spread
01 Up spread
1x Center spread
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PBIAS_CTRL_EN
R
AFCINIT_SEL
PBIAS_CTRL
AFC_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
AFC_EN
FSEL Reserved EXTAFC ICP
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
R
PLL_EXT_BYPASS
PLL_LOCK_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved Reserved
RST SEL CLK_SEL
Reset 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LOCK_CON_
R
LOCK_CON_ LOCK_CON_
Reserved IN
DLY OUT
W
Reset 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
PBIAS_CTRL_EN
R
AFCINIT_SEL
FOUT_MASK
PBIAS_CTRL
AFC_SEL
LRD_EN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
Reserved
AFC_EN
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
R
PLL_EXT_BYPASS
PLL_LOCK_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved Reserved
RST SEL CLK_SEL
Reset 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
R
PLL_EXT_BYPASS
PLL_LOCK_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved Reserved
RST SEL CLK_SEL
Reset 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_DIV20_CLKE_OVERRIDE
PLL_DIV10_CLKE_OVERRIDE
PLL_DIV8_CLKE_OVERRIDE
PLL_DIV6_CLKE_OVERRIDE
PLL_DIV5_CLKE_OVERRIDE
PLL_DIV4_CLKE_OVERRIDE
R
PLL_EXT_BYPASS
PLL_DIV20_CLKE
PLL_DIV10_CLKE
PLL_DIV8_CLKE
PLL_DIV6_CLKE
PLL_DIV5_CLKE
PLL_DIV4_CLKE
PLL_LOCK_SEL
Reserved
Reset 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R PLL_DIV3_CLKE_OVERRIDE
PLL_DIV2_CLKE_OVERRIDE
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_DIV3_CLKE
PLL_DIV2_CLKE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved
RST SEL CLK_SEL
Reset 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0
PBIAS_CTRL_EN
R
AFCINIT_SEL
FOUT_MASK
PBIAS_CTRL
AFC_SEL
LRD_EN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FEED_EN
Reserved
AFC_EN
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
PLL_DIV20_CLKE_OVERRIDE
PLL_DIV10_CLKE_OVERRIDE
PLL_DIV8_CLKE_OVERRIDE
PLL_DIV6_CLKE_OVERRIDE
PLL_DIV5_CLKE_OVERRIDE
PLL_DIV4_CLKE_OVERRIDE
R
PLL_EXT_BYPASS
PLL_DIV20_CLKE
PLL_DIV10_CLKE
PLL_DIV8_CLKE
PLL_DIV6_CLKE
PLL_DIV5_CLKE
PLL_DIV4_CLKE
PLL_LOCK_SEL
Reserved
Reset 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R PLL_DIV3_CLKE_OVERRIDE
PLL_DIV2_CLKE_OVERRIDE
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_DIV3_CLKE
PLL_DIV2_CLKE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved
RST SEL CLK_SEL
Reset 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LOCK_CON_
R
LOCK_CON_ LOCK_CON_
Reserved IN
DLY OUT
W
Reset 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PLL_LOCK
R
PLL_EXT_BYPASS
PLL_LOCK_SEL
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PLL_CLKE_OVERRIDE
PLL_RST_OVERRIDE
PLL_BYPASS
PLL_CLKE
PLL_ PAD_CLK_ PLL_REF_
Reserved Reserved
RST SEL CLK_SEL
Reset 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved PLL_MAIN_DIV
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OSC_32K_SEL
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5.1.8.38 PLL Clock Output for Test Enable and Select Register
(CCM_ANALOG_ANAMIX_PLL_MNIT_CTL)
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
OUTPUT_CKE
R
CLKOUT2_
CLKOUT2_OUTPUT_DIV_
Reserved CLKOUT2_OUTPUT_SEL
VAL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OUTPUT_CKE
R
CLKOUT1_
CLKOUT1_OUTPUT_DIV_
Reserved CLKOUT1_OUTPUT_SEL
VAL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DIGPROG Register
Address: 3036_0000h base + 800h offset = 3036_0800h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
5.2.1 Overview
The General Power Controller (GPC) module controls the following functions:
• Provide low power mode control for A53 and M7 platform
• Provide Power domain management all Arm and SOC power domain
• Provide domain control mechanism based on A53 and M7 CPU domain
• Provide handshake with CCM for clock management in low power mode
• Provide handshake with SRC for power down and power up sequence
• Provide handshake with Analog for Deep Sleep Mode control
5.2.2 Features
The General Power Controller (GPC) module controls the following functions:
• Support programmable feature for WAIT/STOP/DSM low power mode
• Support time slot based power domain control
• Support flexible sleep and wakeup condition
• Support domain control for multi CPU platforms system
• All register accessed by IP bus
• Interface for the following IPs:
• CCM – clock controller module
• SRC – system reset controller
• ANALOG – miscellaneous analog control
Handshake
analog and with
PMIC
interrupt
LPM Quad A53 LPM M7
wfi
DSM Control
SMC
Power state
Timeslot PGC_2
...
Control
PGC_PDN
PGTSC
Power signal
The GPC module contains two sub-modules: System Mode Controller (SMC) and Power
Gating Time Slot Control (PGTSC):
• GPC Top: the top level GPC. It also includes the top memory map and registers,
domain control information, and memory low power control.
• System Mode Controller (SMC):
• The SMC supports two low power modes (LPM), WAIT and STOP. Each LPM
corresponds to one mode for A53 platform and one mode for M7 platform.
GPC_SLPCR[EN_A53_FASTWUP_WAIT_MODE] and
GPC_SLPCR[EN_M7_FASTWUP_WAIT_MODE]
• CPU clock can be defined been shut off or not in wait for each CPU platform.
(GPC_LPCR_A53_BSC[CPU_CLK_ON_LPM] and
GPC_LPCR_M7[CPU_CLK_ON_LPM])
• Power of different power domain can be defined be shut off or not in wait mode for
each platform domain
• Some peripherals may go to wait mode along with A53 or M7 platform.
NOTE
CCM configuration must make sure close all PLLs before
system goes to DSM
NOTE
For the SoC to correctly power up after entering DSM,
CCM_PLL_CTRLx must not be set to 0x0 or 0x3 for any
domain in use.
RUN
LPM = 10
AND ~dsm_request
dsm_request LPM = 01 OR
AND AND dsm_wakeup
~dsm_wakeup ~dsm_request dsm_request
OR AND
dsm_wakeup ~dsm_wakeup
STOP WAIT
dsm_request dsm_request
AND gpc_pup_ack AND gpc_pup_ack
~dsm_wakeup ~dsm_wakeup
STOP_PGC WAIT_PGC
• The CPU platforms share the same IRQ sources in this chip. Software can use
GPC_IMRn_CORE0_A53, GPC_IMRn_CORE1_A53, GPC_IMRn_CORE2_A53,
GPC_IMRn_CORE3_A53, and GPC_IMRn_M7 to separate the 128 bits IRQ
sources to A53 core0, core1, core2, and core3, and M7 platform.
• The A53 core0, core1, core2, and core3 IRQ can also be from GIC source (defined
by GPC_LPCR_A53_BSC[IRQ_SRC_C3], GPC_LPCR_A53_BSC[IRQ_SRC_C2],
GPC_LPCR_A53_BSC[IRQ_SRC_C1], and
GPC_LPCR_A53_BSC[IRQ_SRC_C0]) and if it is chosen from GIC source the
GPC_IMRn_x_A53 will lose its function. See Power control for A53 Platform for
more information.
• Interrupts for both A53 and M7 will cause the system wake up from DSM, A53
interrupt will wake up A53 from LPM, M7 interrupt will wake up M7 from LPM.
PGC
Higher-level pdn_req isolation
Componenet Target
pup_req
Subsystem
pdn_ack switch_b
pup_ack
module_clk pwrgate_rst_b
enable_clk
The CPU can also generate software power up or power down request to relevant PGCs.
The software trigger will not be mapped to timeslot control. If there are PGCs in software
PDN/PUP sequence the request from LPM will be masked. The software trigger will also
be failed if the timeslot control is in “busy” state.
All power up/down request to PGCs will be mapped to domain control module (see
“Domain control for PGCs ”).
PGC_C0, PGC_C1, PGC_C2, and PGC_C3 can be triggered by its own “WFI/IRQ”
without LPM trigger and time slot. See Power control for A53 Platform for more
information.
IDLE
any No
hw_*_req asserted
Yes
.....
NOTE
PGC_SCU should be “always-on” to PGC_C0 PGC_C1,
PGC_C2, and PGC_C3. This means PGC_SCU should be
power up earlier than PGC_C0/PGC_C1/PGC_C2/PGC_C3
and should be power down later than PGC_C0/PGC_C1/
PGC_C2/PGC_C3 (see example code 1 and 2). If we arrange
A53 Cx/A53 SCU power down/up in same slot, special setting
is required (see example code 2).
NOTE
When the system enters/exists ALL_OFF or L2_RETENTION
mode, PGC_MF should be power up earlier than PGC_C0/
PGC_C1/PGC_C2/PGC_C3/PGC_SCU. We can arrange MIX
PGC power up in earlier slot than A53 Cx/SCU power up slot
(See example code 1 and 2).
NOTE
SCU power down should not be enabled in wait mode.
pup_req
PGC_mf
time
NOTE
If a PGC is mapped to two CPU domain (refer to “Domain
control for PGCs ”for more information), it cannot be selected
as the power down acknowledge for both of the CPU platform.
“PGC_ACK_SEL_A53”, "PGC_ACK_SEL_A53_PU", and
“PGC_ACK_SEL_M7” are should be chosen for the last PGC
in power up or power down sequence in the time slot. If there is
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
532 NXP Semiconductors
Chapter 5 Clocks and Power Management
NOTE
In all seven power states, “ALL_ON”, “THREE_CPU_ON",
"TWO_CPU_ON", and "ONE_CPU_ON" can exist in all RUN,
WAIT or STOP mode of A53 platform.
"ALL_CPU_OFF","L2_RETENTION" and
"VDD_ARM_OFF" can only exist in WAIT or STOP mode of
A53 platform.
5.2.6.2.1 Power down of Core0, Core1, Core2, and Core3 in the A53
Platform
The power of core0, core1, core2, and core3 can be shut off along with the LPM process,
as show in the following figure:
SCU WFI
&
Core2 WFI Core3 WFI
WAIT/STOP
Core0 Core3
Power-down Power-down
Core1 Core2
Power-down Power-down
WAIT_PGC
STOP_PGC
WFIs from A53 platform will trigger the A53 platform LPM and the power of core0,
core1, core2, or core3 will be shut off when “lpcr_a53_ad.en_c0_pdn”,
“lpcr_a53_ad.en_c1_pdn”, “lpcr_a53_ad.en_c2_pdn”, or “lpcr_a53_ad.en_c3_pdn”
enabled in this process. This mode should be used when core0 is used as the leading core
of A53 platform.
The power of core0, core1, core2, and core3 can also be shut off in RUN mode: in this
mode “LPCR_A53_AD.en_c0_wfi_pdn”, “LPCR_A53_AD.en_c1_wfi_pdn”,
“LPCR_A53_AD.en_c2_wfi_pdn”, and “LPCR_A53_AD.en_c3_wfi_pdn” should be set
and the condition to trigger A53 LPM will be some different:
Core0 Core1
Power-down Power-down
ACK ACK
Core2 SCU WFI Core3
Power-down Power-down
ACK ACK
Core0 Core1
Power-down Power-down
Core2 Core3
Power-down Power-down
&
WAIT/STOP
WAIT_PGC
STOP_PGC
Figure 5-16. Power down of Core0, Core1, Core2, and Core3 in RUN mode
As show in the table above, core0/core1/core2/core3 can only be power up by its own
interrupt in RUN mode of A53 platform.
There are three combination of
{LPCR_A53_BSC[30],LPCR_A53_BSC[23:22],LPCR_A53_BSC[29:28]}:
1. In the first case, “IMRn_CORE0_A53, IMRn_CORE1_A53, IMRn_CORE2_A53,
IMRn_CORE3_A53“ are used to separate the 128 bits interrupts for core0, core1,
core2, and core3 of A53 platform and also used as the interrupt mask for A53 LPM.
2. In the second case, “IMRn_CORE0_A53, IMRn_CORE1_A53,
IMRn_CORE2_A53, IMRn_CORE3_A53” are not used, GIC setting are used to
separate interrupts for core0, core1, core2, and core3 of A53 platform and also used
as the interrupt mask for A53 LPM.
3. In the third case, “IMRn_CORE0_A53, IMRn_CORE1_A53, IMRn_CORE2_A53,
IMRn_CORE3_A53” is used as the mask for interrupt for A53 LPM, GIC setting are
used to separate interrupts for core0, core1, core2, and core3.
//A53/M4 both enters into low power mode. A53/M4 are in different master domain.
//MIX are mapping to both A53 and M4
//after A53/M4 enters into low power mode, MIX will be also power down.A53/M4 enters into
low power mode any time
//either A53 or M4 exists from low power mode, MIX will be also power up
//IMRx_CORE0_A53
reg32_write(GPC_IPS_BASE_ADDR + 0x30, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x34, 0xFF7FFFFF);
//[23] : GPT1 used as Arm wakeup source
reg32_write(GPC_IPS_BASE_ADDR + 0x38, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x3C, 0xFFFFFFFF);
//IMRx_CORE1_A53
reg32_write(GPC_IPS_BASE_ADDR + 0x40, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x44, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x48, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x4C, 0xFFFFFFFF);
//IMRx_CORE2_A53
reg32_write(GPC_IPS_BASE_ADDR + 0x1C0, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1C4, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1C8, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1CC, 0xFFFFFFFF);
//IMRx_CORE3_A53
reg32_write(GPC_IPS_BASE_ADDR + 0x1D0, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1D4, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1D8, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x1DC, 0xFFFFFFFF);
//IMRx_M4
reg32_write(GPC_IPS_BASE_ADDR + 0x50, 0xFFFFFFFF);
reg32_write(GPC_IPS_BASE_ADDR + 0x54, 0xFFBFFFFF);
Each PGC (CPU type, MIX type, PU type) will occupy 64 Bytes address space, the
specific base address of each PGC are listed as below.
• 0x800 ~ 0x83F : PGC for A53 core0
• 0x840 ~ 0x87F: PGC for A53 core1
• 0x880 ~ 0x8BF: PGC for A53 core2
• 0x8C0 ~ 0x8FF: PGC for A53 core3
• 0x900 ~ 0x93F: PGC for A53 SCU
• 0xA00 ~ 0xA3F: Reserved
• 0xA40 ~ 0xA7F: PGC for NOC mix
• 0xB00 ~ 0xB3F: PGC for MIPI PHY1
• 0xB40 ~ 0xB7F: PGC for PCIE PHY
• 0xB80 ~ 0xBBF: PGC for USB1 PHY
• 0xBC0 ~ 0xBFF: PGC for USB2 PHY
• 0xC00 ~ 0xC3F: PGC for MLMIX
• 0xC40 ~ 0xC7F: PGC for AUDIOMIX
• 0xC80 ~ 0xCBF: PGC for GPU2D
• 0xCC0 ~ 0xCFF: PGC for GPU Share Logic
• 0xD00 ~ 0xD3F: PGC for VPUMIX Share Logic
• 0xD40 ~ 0xD7F: PGC for GPU3D
• 0xD80 ~ 0xDBF: PGC for MEDIMIX
• 0xDC0 ~ 0xDFF: PGC for VPU G1
• 0xE00 ~ 0xE3F: PGC for VPU G2
NOTE
LPCR_A53_BSC[CPU_CLK_ON_LPM] should be set 1’b1
when using A53 low power debug feature
NOTE
Always set LPM1/LPM0 with same value
Address: 303A_0000h base + 0h offset = 303A_0000h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MASK_DSM_TRIGGER
IRQ_SRC_A53_WUP
MASK_CORE3_WFI
MASK_CORE2_WFI
MASK_CORE1_WFI
MASK_CORE0_WFI
MASK_L2CC_WFI
R MASK_SCU_WFI
IRQ_SRC_C1
IRQ_SRC_C0
IRQ_SRC_C3
IRQ_SRC_C2
Reserved
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MST2_LPM_HSK_MASK
MST1_LPM_HSK_MASK
MST0_LPM_HSK_MASK
CPU_CLK_ON_LPM
R
Reserved
Reset 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 core1 wakeup source from external INT[127:0], masked by IMR1 refer to “Power up process for A53
platform” for more specific information
1 core1 wakeup source from GIC(nFIQ[1]/nIRQ[1] ), SCU should not be power down during low power
mode when this bit is set to 1’b1
28 LPCR_A53_BSC[IRQ_SRC_C0], LPCR_A53_BSC[IRQ_SRC_C1], LPCR_A53_BSC[IRQ_SRC_C2],
IRQ_SRC_C0 LPCR_A53_BSC[IRQ_SRC_C3], and LPCR_A53_BSC[IRQ_SRC_A53_WUP] work together to decide
the wake up source for A53 LPM and core0/core1/core2/core3 power. See “Power up process for A53
platform” for more specific information.
0 core0 wakeup source from external INT[127:0], masked by IMR0 refer to “Power up process for A53
platform” for more specific information
1 core0 wakeup source from GIC(nFIQ[0]/nIRQ[0] ), SCU should not be power down during low power
mode when this bit is set to 1’b1
27 This field is reserved.
- Reserved
26 L2 cache controller Wait For Interrupt Mask Register
MASK_L2CC_
WFI 0 WFI for L2 cache controller is not masked
1 WFI for L2 cache controller is masked
25 This field is reserved.
- Reserved
24 SCU Wait For Interrupt Mask Register
MASK_SCU_WFI
0 WFI for SCU is not masked
1 WFI for SCU is masked
23 LPCR_A53_BSC[IRQ_SRC_C0], LPCR_A53_BSC[IRQ_SRC_C1], LPCR_A53_BSC[IRQ_SRC_C2],
IRQ_SRC_C3 LPCR_A53_BSC[IRQ_SRC_C3], and LPCR_A53_BSC[IRQ_SRC_A53_WUP] work together to decide
the wake up source for A53 LPM and core0/core1/core2/core3 power.
0 core3 wakeup source from external INT[127:0], masked by IMR1. See Power Up Process for A53
Platform for more specific information.
1 core3 wakeup source from external GIC(nFIQ[1]/nIRQ[1]), SCU should not be powered down during
low power mode when this bit is set to 1'b1.
22 LPCR_A53_BSC[IRQ_SRC_C0], LPCR_A53_BSC[IRQ_SRC_C1], LPCR_A53_BSC[IRQ_SRC_C2],
IRQ_SRC_C2 LPCR_A53_BSC[IRQ_SRC_C3], and LPCR_A53_BSC[IRQ_SRC_A53_WUP] work together to decide
the wake up source for A53 LPM and core0/core1/core2/core3 power.
0 core2 wakeup source from external INT[127:0], masked by IMR1. See Power Up Process for A53
Platform for more specific information.
1 core2 wakeup source from external GIC(nFIQ[1]/nIRQ[1]), SCU should not be powered down during
low power mode when this bit is set to 1'b1.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
EN_C3_WFI_
EN_C2_WFI_
EN_C3_IRQ_
EN_C2_IRQ_
R
EN_ EN_ EN_ EN_
L2PGE
PDN
PDN
PUP
PUP
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EN_PLAT_PDN
EN_C1_WFI_
EN_C0_WFI_
EN_C1_IRQ_
EN_C0_IRQ_
EN_L2_WFI_
R
EN_ EN_ EN_ EN_
PDN
PDN
PDN
PUP
PUP
Reset 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MASK_DSM_TRIGGER
MASK_M7_WFI
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CPU_CLK_ON_LPM
R
Reserved
EN_ EN_
Reserved M7_ M7_ LPM0
PUP PDN
W
Reset 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0
NOTE
SLPCR[VSTBY] must be set to 1’b1 if SLPCR[RBC_EN] is
set to 1’b1; SLPCR[SBYOS] must be set to 1’b1 if
SLPCR[VSTBY] is set to 1’b1.
Address: 303A_0000h base + 14h offset = 303A_0014h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
EN_M7_FASTWUP_WA
DISABLE_A53_IS_DSM
EN_A53_FASTWUP_W
EN_M7_FASTWUP_ST
EN_A53_FASTWUP_S
R
TOP_MODE
AIT_MODE
OP_MODE
IT_MODE
EN_DSM
RBC_EN
REG_BYPASS_COUNT Reserved
Reset 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6
COSC_PWRDOWN 5 4 3 2 1 0
BYPASS_PMIC_
R
COSC_EN
SBYOS
READY
VSTBY
OSCCNT STBY_COUNT
Reset 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0
0 REG_BYPASS_COUNTER disabled
1 REG_BYPASS_COUNTER enabled
29–24 Counter for REG_BYPASS signal assertion after standby voltage request by PMIC_STBY_REQ.
REG_BYPASS_
COUNT 000000 no delay
0 Voltage will not be changed to standby voltage after next entrance to stop mode. (PMIC_STBY_REQ
will remain negated - ‘0’)
1 Voltage will be changed to standby voltage after next entrance to stop mode.
1 Standby clock oscillator bit. This bit defines if cosc_pwrdown, which power down the on chip oscillator, will
SBYOS be asserted in DSM.
0 On chip oscillator will not be powered down, after next entrance to DSM.
1 On chip oscillator will be powered down, after next entrance to DSM. When returning from DSM,
external oscillator will be enabled again, on chip oscillator will return to oscillator mode , and after
oscnt count GPC will continue with the exit from DSM process.
0 By asserting this bit GPC will bypass waiting for PMIC_READY signal when coming out of DSM. This
BYPASS_PMIC_ should be used for PMIC’s that don’t support the PMIC_READY signal.
READY
0 Don’t bypass the PMIC_READY signal - GPC will wait for its assertion during exit of low power mode
if standby voltage was enabled
1 Bypass the PMIC_READY signal - GPC will not wait for its assertion during exit of low power mode if
standby voltage was enabled
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MST2_CPU_
MST1_CPU_
MST0_CPU_
R
MAPPING
MAPPING
MAPPING
Reserved
W
Reset 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MEMLP_RET_PGEN MEM_EXT_CNT
W
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ROMLP_PDN_
MEMLP_RET_
MEMLP_CTL_
R
SEL
DIS
DIS
MEMLP_ENT_CNT Reserved
W
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
A53_PGC_PDN_
A53_PGC_PUP_
R
ACK
ACK
Reserved
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NOC_PGC_PDN_
NOC_PGC_PUP_
A53_PLAT_PGC_
A53_PLAT_PGC_
A53_C3_PGC_
A53_C3_PGC_
A53_C2_PGC_
A53_C2_PGC_
A53_C1_PGC_
A53_C1_PGC_
A53_C0_PGC_
A53_C0_PGC_
R
PDN_ACK
PDN_ACK
PDN_ACK
PDN_ACK
PDN_ACK
PUP_ACK
PUP_ACK
PUP_ACK
PUP_ACK
PUP_ACK
ACK
ACK
Reserved Reserved
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
M7_DUMMY_PGC_
M7_DUMMY_PGC_
R
PDN_ACK
PUP_ACK
Reserved
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7_VIRTUAL_PGC_
M7_VIRTUAL_PGC_
NOC_PGC_PDN_
NOC_PGC_PUP_
PDN_ACK
PUP_ACK
ACK
ACK
Reserved Reserved
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
M7_BYPASS_PUP
MIPI_LDO_EN_
A53_BYPASS_
R
PUP_MASK
_MASK
CTRL
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7_PDN_REQ_MA
M7_SLEEP_HOLD
GPC_IRQ_MASK
HOLD_REQ_B
A53_SLEEP_
R
_REQ_B
SK
Reset 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1
The five IMRn_CORE0_A53 (n = 1,2,3,4,5) registers are used as interrupt mask for A53
core0.
Address: 303A_0000h base + 30h offset = 303A_0030h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR1_CORE0_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR2_CORE0_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR3_CORE0_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR4_CORE0_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR5_CORE0_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The five IMRn_CORE1_A53 (n = 1,2,3,4,5) registers are used as interrupt mask for A53
core1.
Address: 303A_0000h base + 44h offset = 303A_0044h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR1_CORE1_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR2_CORE1_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR3_CORE1_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR4_CORE1_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR5_CORE1_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The five IMRn_M7 (n = 1,2,3,4,5) registers are used as interrupt mask for M7.
Address: 303A_0000h base + 58h offset = 303A_0058h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR1_M7
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR2_M7
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR3_M7
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR4_M7
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR5_M7
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The five ISRn_A53 (n = 1,2,3,4,5) registers, all of them are read only register
Address: 303A_0000h base + 80h offset = 303A_0080h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR1_A53
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR2_A53
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR3_A53
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR4_A53
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR5_A53
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The five ISRn_M7 (n = 1,2,3,4,5) registers, all of them are read only register
Address: 303A_0000h base + 94h offset = 303A_0094h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR1_M7
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR2_M7
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR3_M7
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR4_M7
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ISR5_M7
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CORE3_A53_SW_PU
CORE2_A53_SW_PU
CORE1_A53_SW_PU
CORE0_A53_SW_PU
SCU_A53_SW_PUP_
R
P_REQ
P_REQ
P_REQ
P_REQ
REQ
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NOC_SW_PUP_
R
MF_S
W_P
REQ
Reserved
UP_R
W EQ
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MEDIA_ISP_DWP_SW_
MIPI_PHY2_SW_PUP_
HSIOMIX_SW_PUP_
DDRMIX_SW_PUP_
R
PUP_REQ
REQ
REQ
REQ
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU_3D_SW_PUP_RE
GPU_2D_SW_PUP_RE
VPU_G2_SW_PUP_RE
VPU_G1_SW_PUP_RE
VPU_VC8K_SW_PUP_
VPUMIX_SW_PUP_RE
USB2_PHY_SW_PUP_
USB1_PHY_SW_PUP_
MIPI_PHY1_SW_PUP_
HDMI_PHY_SW_PUP_
GPU_SHARE_LOGIC_
MEDIMIX_SW_PUP_R
AUDIOMIX_SW_PUP_
PCIE_PHY_SW_PUP_
HDMIMIX_SW_PUP_
MLMIX_PHY_SW_
R
SW_PUP_REQ
PUP_REQ
REQ
REQ
REQ
REQ
REQ
REQ
REQ
REQ
EQ
Q
Q
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CORE3_A53_SW_PU
CORE2_A53_SW_PD
CORE1_A53_SW_PD
CORE0_A53_SW_PD
SCU_A53_SW_PUP_
R
N_REQ
N_REQ
N_REQ
P_REQ
REQ
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NOC_SW_PDN_
MF_SW_PDN_R
R
REQ
EQ
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
HSIOMIX_SW_PDN_REQ
DDRMIX_SW_PDN_REQ
MEDIA_ISP_DWP_SW_
MIPI_PHY2_SW_PDN_
R
PDN_REQ
REQ
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HDMIMIX_SW_PDN_REQ
MEDIMIX_SW_PDN_REQ
AUDIOMIX_SW_PDN_RE
PCIE_PHY_SW_PDN_RE
GPU_3D_SW_PDN_REQ
GPU_2D_SW_PDN_REQ
VPU_G1_SW_PDN_REQ
VPUMIX_SHARE_LOGIC
VPU_VC8K_SW_PDN_R
USB2_PHY_SW_PDN_R
USB1_PHY_SW_PDN_R
MIPI_PHY1_SW_PDN_R
GPU_SHARE_LOGIC_S
MLMIX_SW_PDN_REQ
HDMI_PHY_SW_PDN_
_SW_PDN_REQ
_SW_PDN_REQ
R
W_PDN_REQ
REQ
EQ
EQ
EQ
EQ
Q
Q
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
cm4_sleep_hold_ack_
m4_sleep_hold_req_b
cm4_gate_hclk_sync1
cm4_is_halted_sync1
cm4_sleeping_sync1
src_cm4_core_rst_b
src_cm4_plat_rst_b
cm4_lookup_sync1
R
cm4_sleep_deep_
b_sync1
sync1
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CORE3_A53_PUP_STATUS
CORE2_A53_PUP_STATUS
CORE1_A53_PUP_STATUS
CORE0_A53_PUP_STATUS
SCU_A53_PUP_REQ
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A53_MIX_PGC_PUP_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7_MIX_PGC_PUP_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A53_MEDIA_ISP_DWP_PUP_STATUS
A53_MIPI_PHY2_PUP_STATUS
A53_HSIOMIX_PUP_STATUS
A53_DDRMIX_PUP_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
-
0
15
A53_HDMI_PHY_PUP_STATUS
Field
31–20
0
14
A53_HDMIMIX_PUP_STATUS
0
13
A53_VPU_VC8K_PUP_STATUS
Reserved
0
General Power Controller (GPC)
12
A53_VPU_G2_PUP_STATUS
A53_VPU_G1_PUP_STATUS
0
10
A53_MEDIMIX_PUP_STATUS
9
0
A53_GPU_3D_PUP_STATUS
8
0
A53_VPUMIX_SHARE_LOGIC_PUP_STATUS
7
0
A53_GPU_SHARE_LOGIC_PUP_STATUS
6
Description
A53_GPU_2D_PUP_STATUS
0
A53_AUDIOMIX_PUP_STATUS
4
0
A53_MLMIX_PUP_STATUS
3
0
A53_USB2_PHY_PUP_STATUS
0
A53_USB1_PHY_PUP_STATUS
1
0
A53_PCIE_PHY_PUP_STATUS
0
0
A53_MIPI_PHY1_PUP_STATUS
NXP Semiconductors
Chapter 5 Clocks and Power Management
M7_MEDIA_ISP_DWP_PUP_STATUS
M7_MIPI_PHY2_PUP_STATUS
M7_HSIOMIX_PUP_STATUS
M7_DDRMIX_PUP_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
-
19
0
15
M7_HDMI_PHY_PUP_STATUS
Field
31–20
M7_DDRMIX_
PUP_STATUS
0
14
M7_HDMIMIX_PUP_STATUS
0
13
M7_VPU_VC8K_PUP_STATUS
Reserved
0
General Power Controller (GPC)
12
M7_VPU_G2_PUP_STATUS
M7_VPU_G1_PUP_STATUS
0
10
M7_MEDIMIX_PUP_STATUS
9
0
M7_GPU3D_PUP_STATUS
8
0
M7_VPUMIX_SHARE_LOGIC_PUP_STATUS
7
0
M7_GPU_SHARE_LOGIC_PUP_STATUS
6
Description
M7_GPU2D_PUP_STATUS
0
M7_AUDIOMIX_PUP_STATUS
4
0
M7_MLMIX_PUP_STATUS
3
0
M7_USB1_PHY_PUP_STATUS
1
0
M7_PCIE_PHY_PUP_STATUS
0
0
M7_MIPI_PHY1_PUP_STATUS
NXP Semiconductors
Chapter 5 Clocks and Power Management
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CORE3_A53_PDN_STATUS
CORE2_A53_PDN_STATUS
CORE1_A53_PDN_STATUS
CORE0_A53_PDN_STATUS
SCU_A53_PDN_REQ
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A53_MIX_PGC_PDN_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7_MIX_PGC_PDN_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A53_MEDIA_ISP_DWP_PDN_STATUS
A53_MIPI_PHY2_PDN_STATUS
A53_HSIOMIX_PDN_STATUS
A53_DDRMIX_PDN_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
-
0
15
A53_HDMI_PHY_PDN_STATUS
Field
31–20
0
14
A53_HDMIMIX_PDN_STATUS
NXP Semiconductors
0
13
A53_VPU_VC8K_PDN_STATUS
Reserved
0
12
A53_VPU_G2_PDN_STATUS
A53_VPU_G1_PDN_STATUS
0
10
A53_MEDIMIX_PDN_STATUS
9
0
A53_GPU_3D_PDN_STATUS
8
0
A53_VPUMIX_SHARE_LOGIC_PDN_STATUS
7
0
A53_GPU_SHARE_LOGIC_PDN_STATUS
6
Description
A53_GPU_2D_PDN_STATUS
0
A53_AUDIOMIX_PDN_STATUS
4
0
A53_MLMIX_PDN_STATUS
3
0
A53_USB2_PHY_PDN_STATUS
0
A53_USB1_PHY_PDN_STATUS
1
0
A53_PCIEPHY_PDN_STATUS
0
0
A53_MIPI_PHY1_PDN_STATUS
609
Chapter 5 Clocks and Power Management
General Power Controller (GPC)
M7_MEDIA_ISP_DWP_PDN_STATUS
M7_MIPI_PHY2_PDN_STATUS
M7_HSIOMIX_PDN_STATUS
M7_DDRMIX_PDN_STATUS
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
-
19
0
15
M7_HDMI_PHY_PDN_STATUS
Field
31–20
M7_DDRMIX_
PDN_STATUS
0
14
M7_HDMIMIX_PDN_STATUS
NXP Semiconductors
0
13
M7_VPU_VC8K_PDN_STATUS
Reserved
0
12
M7_VPU_G2_PDN_STATUS
M7_VPU_G1_PDN_STATUS
0
10
M7_MEDIMIX_PDN_STATUS
9
0
M7_GPU3D_PDN_STATUS
8
0
M7_VPUMIX_SHARE_LOGIC_PDN_STATUS
7
0
M7_GPU_SHARE_LOGIC_PDN_STATUS
6
Description
M7_GPU_2D_PDN_STATUS
0
M7_AUDIOMIX_PDN_STATUS
4
0
M7_MLMIX_PDN_STATUS
3
0
M7_USB1_PHY_PDN_STATUS
1
0
M7_PCIE_PHY_PDN_STATUS
0
0
M7_MIPI_PHY1_PDN_STATUS
613
Chapter 5 Clocks and Power Management
General Power Controller (GPC)
This is flag bit relevant domain control, represents A53 CPU platform wants to power
down MIX PGC. The register can only be accessed by A53 platform.
Address: 303A_0000h base + 170h offset = 303A_0170h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A53_MIX_PDN_F
R
LAG
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The register field is show in the table below. The 1’b1 represents A53 CPU platform
wants to power down certain PU PGC. The register is a read only register. The register
bits will be set when corresponding A53 software power down trigger happens and will
be clear when corresponding A53 software power up trigger happens.
Address: 303A_0000h base + 174h offset = 303A_0174h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved A53_PU_PDN_FLG
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
This is flag bit relevant domain control, represents M7 CPU platform wants to power
down MIX PGC. The register can only be accessed by M7 platform.
Address: 303A_0000h base + 178h offset = 303A_0178h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7_MIX_PDN_
R
FLAG
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The register field is show in the table below. The 1’b1 represents M7 CPU platform
wants to power down certain PU PGC. The register is a read only register. The register
bits will be set when corresponding M7 software power down trigger happens and will be
clear when corresponding M7 software power up trigger happens.
Address: 303A_0000h base + 17Ch offset = 303A_017Ch
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved M7_PU_PDN_FLG
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved LPM3 LPM2
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
0
31
GPC_AUDIOMIX_PWRDNACKN
0
30
GPC_MEDIAMIX_NOC_ADBS_PWRDNACKN
0
29
GPC_HDMIMIX_NOC_PWRDNACKN
0
General Power Controller (GPC)
28
GPC_NOC2HSIO_ADBS_PWDWNACKN
0
27
GPC_NOC2DDRMIX_PWRDNACKN
0
26
GPC_VPUMIX_NOX_PWDWNACKN
0
25
GPC_GPUMIX_NOC_ADBS_PWRDNACKN
Address: 303A_0000h base + 190h offset = 303A_0190h
0
24
GPC_NOC2MLMIX_PWDWNACKN
0
23
GPC_MLMIX_ADBS_PWRDNACKN
0
22
GPC_SUPERMIX2NOC_ADBS_PWDWNACKN
0
21
GPC_NOC2SUPERMIX_ADBS_PWDWNACKN
0
20
GPC_NOC2AUDIOMIX_PWDWNACKN
0
19
GPC_DDR1_CACTIVE
5.2.10.57 Power handshake register (GPC_PU_PWRHSK)
GPC_DDR1_CTRL_REQACK
0
17
GPC_DDR1_CTRL_CLKACTIVE
0
16
GPC_DDR1_CTRL_LWPWACKN
NXP Semiconductors
Chapter 5 Clocks and Power Management
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPC_MEDIAMIX_NOC_ADBS_PWRDNREQN
GPC_GPUMIX_NOC_ADBS_PWRDNREQN
GPC_NOC2HSIO_ADBS_PWRDNREQN
GPC_SUPERMIX2NOC_PWRDNREQN
GPC_NOC2SUPERMIX_PWRDNREQN
GPC_AUDIOMIX_NOC_PWRDNREQN
GPC_NOC2AUDIOMIX_PWRDNREQN
GPC_HDMIMIX_NOC_PWRDNREQN
GPC_NOC2DDRMIX_PWRDNREQN
GPC_VPUMIX_NOC_PWRDNREQN
GPC_MLMIX_ADBS_PWRDNREQN
GPC_NOC2MLMIX_PWRDNREQN
R
GPC_DDR1_CORE_CSYSREQ
GPC_DDR1_AXI_CSYSREQ
Reserved
Reset 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
The five IMRn_CORE2_A53 (n = 1,2,3,4,5) registers are used as interrupt mask for A53
core2.
Address: 303A_0000h base + 194h offset = 303A_0194h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR1_CORE2_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR2_CORE2_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR3_CORE2_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR4_CORE2_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR5_CORE2_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The five IMRn_CORE2_A53 (n = 1,2,3,4,5) registers are used as interrupt mask for A53
core3.
Address: 303A_0000h base + 1A8h offset = 303A_01A8h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR1_CORE3_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR2_CORE3_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR3_CORE3_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IMR4_CORE3_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
IM5_CORE3_A53
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
VPU_G2_PGC_PDN_ACK
VPU_G1_PGC_PDN_ACK
VPU_G2_PGC_PUP_ACK
VPU_G1_PGC_PUP_ACK
GPU3D_PGC_PDN_ACK
GPU3D_PGC_PUP_ACK
VPU_VC8K_PGC_PDN_
HDMI_PHY_PGC_PDN_
VPU_VC8K_PGC_PUP_
LOGIC_PGC_PDN_ACK
HDMI_PHY_PGC_PUP_
LOGIC_PGC_PUP_ACK
HDMIMIX_PGC_PDN_
HDMIMIX_PGC_PUP_
MEDIMIX_PGC_PDN_
MEDIMIX_PGC_PUP_
VPUMIX_SHARE_
VPUMIX_SHARE_
R
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU_2D_PGC_PUP_ACK
MLMIX_PGC_PDN_ACK
USB2_PHY_PGC_PDN_
USB1_PHY_PGC_PDN_
MIPI_PHY1_PGC_PDN_
MLMIX_PGC_PUP_ACK
USB2_PHY_PGC_PUP_
USB1_PHY_PGC_PUP_
MIPI_PHY1_PGC_PUP_
AUDIOMIX_PGC_PDN_
PCIE_PHY_PGC_PDN_
AUDIOMIX_PGC_PUP_
PCIE_PHY_PGC_PUP_
GPU_SHARE_LOGIC_
GPU_SHARE_LOGIC_
GPU_2D_PGC_PDN_
R
PGC_PDN_ACK
PGC_PUP_ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HSIOMIX_PGC_PDN_
HSIOMIX_PGC_PUP_
DDRMIX_PGC_PDN_
DDRMIX_PGC_PUP_
MEDIA_ISP_DWP_
MEDIA_ISP_DWP_
MIPI_PHY2_PGC_
MIPI_PHY2_PGC_
PGC_PDN_ACK
PGC_PUP_ACK
R
PDN_ACK
PUP_ACK
ACK
ACK
ACK
ACK
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
VPU_G2_PGC_PDN_ACK
VPU_G1_PGC_PDN_ACK
VPU_G2_PGC_PUP_ACK
VPU_G1_PGC_PUP_ACK
GPU3D_PGC_PDN_ACK
GPU3D_PGC_PUP_ACK
VPU_VC8K_PGC_PDN_
HDMI_PHY_PGC_PDN_
VPU_VC8K_PGC_PUP_
LOGIC_PGC_PDN_ACK
HDMI_PHY_PGC_PUP_
LOGIC_PGC_PUP_ACK
HDMIMIX_PGC_PDN_
HDMIMIX_PGC_PUP_
MEDIMIX_PGC_PDN_
MEDIMIX_PGC_PUP_
VPUMIX_SHARE_
VPUMIX_SHARE_
R
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU_2D_PGC_PUP_ACK
MLMIX_PGC_PDN_ACK
USB2_PHY_PGC_PDN_
USB1_PHY_PGC_PDN_
MIPI_PHY1_PGC_PDN_
MLMIX_PGC_PUP_ACK
USB2_PHY_PGC_PUP_
USB1_PHY_PGC_PUP_
MIPI_PHY1_PGC_PUP_
AUDIOMIX_PGC_PDN_
PCIE_PHY_PGC_PDN_
AUDIOMIX_PGC_PUP_
PCIE_PHY_PGC_PUP_
GPU_SHARE_LOGIC_
GPU_SHARE_LOGIC_
GPU_2D_PGC_PDN_
R
PGC_PDN_ACK
PGC_PUP_ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HSIOMIX_PGC_PDN_
HSIOMIX_PGC_PUP_
DDRMIX_PGC_PDN_
DDRMIX_PGC_PUP_
MEDIA_ISP_DWP_
MEDIA_ISP_DWP_
MIPI_PHY2_PGC_
MIPI_PHY2_PGC_
PGC_PDN_ACK
PGC_PUP_ACK
PDN_ACK
PUP_ACK
ACK
ACK
ACK
ACK
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MIPI_PHY2_DOMAIN
HDMI_PHY_DOMAIN
HDMIMIX_DOMAIN
MEDIA_ISP_DWP_
HSIOMIX_DOMAIN
DDRMIX_DOMAIN
R
DOMAIN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9
GPU_SHARE_LOGIC_ 8 7 6 5 4 3 2 1 0
MIX0_SUPERMIXM7_
VPU_VC8K_DOMAIN
USB2_PHY_DOMAIN
USB1_PHY_DOMAIN
MIPI_PHY1_DOMAIN
MIX1_NOC_DOMAIN
AUDIOMIX_DOMAIN
PCIE_PHY_DOMAIN
MEDIMIX_DOMAIN
GPU_2D_DOMAIN
VPU_G2_DOMAIN
VPU_G1_DOMAIN
VPUMIX_SHARE_
GPU3D_DOMAIN
MLMIX_DOMAIN
LOGIC_DOMAIN
R
DOMAIN
DOMAIN
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
MIPI_PHY2_DOMAIN
HDMI_PHY_DOMAIN
HDMIMIX_DOMAIN
MEDIA_ISP_DWP_
HSIOMIX_DOMAIN
DDRMIX_DOMAIN
R
DOMAIN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU_SHARE_LOGIC_
MIX0_SUPERMIXM7_
VPU_VC8K_DOMAIN
USB2_PHY_DOMAIN
USB1_PHY_DOMAIN
MIPI_PHY1_DOMAIN
MIX1_NOC_DOMAIN
AUDIOMIX_DOMAIN
PCIE_PHY_DOMAIN
MEDIMIX_DOMAIN
GPU_2D_DOMAIN
VPU_G2_DOMAIN
VPU_G1_DOMAIN
VPUMIX_SHARE_
GPU3D_DOMAIN
MLMIX_DOMAIN
LOGIC_DOMAIN
R
DOMAIN
DOMAIN
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Address: 303A_0000h base + 200h offset + (4d × i), where i=0d to 26d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CORE3_A53_PDN_
CORE2_A53_PDN_
CORE1_A53_PDN_
CORE0_A53_PDN_
CORE3_A53_PUP_
CORE2_A53_PUP_
CORE1_A53_PUP_
CORE0_A53_PUP_
NOC_PDN_SLOT_
NOC_PUP_SLOT_
SCU_PDN_SLOT_
SCU_PUP_SLOT_
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
SLOT_CONTROL
R
CONTROL
CONTROL
CONTROL
CONTROL
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit
Reset
Bit
PUs.
0
GPU_SHARE_LOGIC_ HDMI_PHY_PUP_SLOT_
0
0
15
31
Field
PUP_SLOT_CONTROL CONTROL
CONTROL
PDN_SLOT_
CORE0_A53_
GPU_SHARE_LOGIC_ HDMI_PHY_PDN_SLOT_
0
0
14
30
PDN_SLOT_CONTROL CONTROL
NXP Semiconductors
GPU_2D_PUP_SLOT_ HDMIMIX_PUP_SLOT_
0
0
13
29
CONTROL CONTROL
GPU_2D_PDN_SLOT_ HDMIMIX_PDN_SLOT_
0
0
12
28
CONTROL CONTROL
AUDIOMIX_PUP_SLOT_ VPU_VC8K_PUP_SLOT_
0
0
11
27
CONTROL CONTROL
AUDIOMIX_PDN_SLOT_ VPU_VC8K_PDN_SLOT_
0
0
10
26
CONTROL CONTROL
MLMIX_PUP_SLOT_ VPU_G2_PUP_SLOT_
0
0
CORE0 A53 Power-down slot control
25
CONTROL CONTROL
MLMIX_PDN_SLOT_ VPU_G2_PDN_SLOT_
0
0
24
CONTROL CONTROL
USB2_PHY_PUP_SLOT_ VPU_G1_PUP_SLOT_
Address: 303A_0000h base + 280h offset + (8d × i), where i=0d to 26d
0
0
23
CONTROL CONTROL
USB2_PHY_PDN_SLOT_ VPU_G1_PDN_SLOT_
0
0
22
Description
CONTROL CONTROL
USB1_PHY_PUP_SLOT_ MEDIMIX_PUP_SLOT_
0
0
21
CONTROL CONTROL
USB1_PHY_PDN_SLOT_ MEDIMIX_PDN_SLOT_
0
0
20
CONTROL CONTROL
GPC_SLTn_CFG field descriptions (continued)
PCIE_PHY_PUP_SLOT_ GPU3D_PUP_SLOT_
0
0
19
CONTROL CONTROL
0
0
18
CONTROL CONTROL
MIPI_PHY1_PUP_SLOT_ VPUMIX_SHARE_LOGIC_
1
0
0
17
CONTROL PUP_SLOT_CONTROL
MIPI_PHY1_PDN_SLOT_ VPUMIX_SHARE_LOGIC_
0
0
0
5.2.10.75 Slot configure register for PGC PUs (GPC_SLTn_CFG_PU)
16
There are 27 slots in each SLTn_CFG_PU (n = 0~26) that define the power up or power
down behavior of PU PGC in each slot. See PGC power domains section for list of PGC
CONTROL PDN_SLOT_CONTROL
645
Chapter 5 Clocks and Power Management
General Power Controller (GPC)
Address: 303A_0000h base + 284h offset + (8d × i), where i=0d to 26d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MIPI_PHY2_PDN_SLOT_
MIPI_PHY2_PUP_SLOT_
MEDIA_ISP_DWP_PDN_
MEDIA_ISP_DWP_PUP_
HSIOMIX_PDN_SLOT_
HSIOMIX_PUP_SLOT_
DDRMIX_PDN_SLOT_
DDRMIX_PUP_SLOT_
SLOT_CONTROL
SLOT_CONTROL
M7_PDN_SLOT_
M7_PUP_SLOT_
R
CONTROL
CONTROL
CONTROL
CONTROL
CONTROL
CONTROL
CONTROL
CONTROL
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
There are numerous PGC inside GPCv2, with 4 different types: CPU/SCU/MIX/PU.
Each PGC type has 4 different control words PGC_CTRL, PGC_PUPSCR,
PGC_PDNSCR, and PGC_SR. Different PGC types may have different field definition in
these four registers. There is another extra control word PGC_AUXSW which has
different field definition for SCU type PGC.
The total GPC memory map is 4KB
Table 5-11. Memory Regions
Address Range(offset) Region
0x000 - 0x3FF GPC configuration register
0x400 - 0x7FF Reserved
0x800 - 0x9FF CPU and SCU type PGC register base address
Each PGC (CPU type, MIX type, PU type) will occupy 64 Bytes address space, the
specific base address of each PGC are listed as below.
• 0x800 ~ 0x83F: PGC for A53 core0
• 0x840 ~ 0x87F: PGC for A53 core1
• 0x880 ~ 0x8BF: PGC for A53 core2
• 0x8C0 ~ 0x8FF: PGC for A53 core3
• 0x900 ~ 0x93F: PGC for A53 SCU
• 0xA40 ~ 0xA7F: PGC for NOC mix
• 0xB00 ~ 0xB3F: PGC for MIPI PHY1 (PU0)
• 0xB40 ~ 0xB7F: PGC for PCIE PHY (PU1)
• 0xB80 ~ 0xBBF: PGC for USB1_PHY (PU2)
• 0xBC0 ~ 0xBFF: PGC for USB2_PHY (PU3)
• 0xC00 ~ 0xC3F: PGC for ML (PU4)
• 0xC40 ~ 0xC7F: PGC for AUDIO (PU5)
• 0xC80 ~ 0xCBF: PGC for GPU2D (PU6)
• 0xCC0 ~ 0xCFF: PGC for GPU Shared Logic (PU7)
• 0xD00 ~ 0xD3F: PGC for VPU Shared Logic (PU8)
• 0xD40 ~ 0xD7F: PGC for GPU3D (PU9)
• 0xD80 ~ 0xDBF: PGC for Medi (PU10)
• 0xDC0 ~ 0xDFF: PGC for VPU_G1 (PU11)
• 0xE00 ~ 0xE3F: PGC for VPU_G2 (PU12)
• 0xE40 ~ 0xE7F: PGC for VPU VC8000E (PU13)
• 0xE80 ~ 0xEBF: PGC for HDMI (PU14)
• 0xEC0 ~ 0xEFF: PGC for HDMI PHY (PU15)
• 0xF00 ~ 0xF3F: PGC for MIPI PHY2 (PU16)
• 0xF40 ~ 0xF7F: PGC for HSIO (PU17)
• 0xF80 ~ 0xFBF: PGC for ISP DWP (PU18)
• 0xFC0 ~ 0xFFF: PGC for DDR (PU19)
GPC_PGC memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
GPC PGC Control Register for PGC CPUs
303A_0800 32 R/W 0604_0202h 5.2.11.1/706
(GPC_PGC_A53CORE0_CTRL)
Table continues on the next page...
GPC PGC Control Register for the PGC CPUs. See the PGC Memory Map for the
assignments.
Address: 303A_0000h base + 800h offset + (64d × i), where i=0d to 4d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
NOTE: Can’t be programmed to zero (This register control only for SCU Type PGC)
7 This field is reserved.
- Reserved
6–1
L2RSTDIS After scu pdn_req, count this value to assert A53 l2rstdis to 1’b1, it will be clear automatically once any of
A53 core0/core1/core2/core3 is wakeup
NOTE: Can’t be programmed to zero (This register control only for SCU Type PGC)
0
PCR Power Control
NOTE: PCR must not change from power-down request (pdn_req) assertion until the target subsystem is
completely powered up.
Reserved SW2ISO
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
SW2ISO SW
Reset 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved ISO2SW Reserved ISO
Reset 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
L2RSTDIS_
Reserved DEASSERT_
CNT
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
L2RETN_FLAG
ALLOFF_FLAG
PSR
R
Reserved
L2RSTDIS_DEASSERT_CNT PUP_CLK_DIV_SEL
Reset 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: Software should write “1” to clear this flag after A53 is wakeup from ALL_OFF mode, otherwise, it
will always keep to 1 (This register control only for SCU Type PGC)
NOTE: Software should write “1” to clear this flag after A53 is wakeup from L2 retention mode, otherwise
it will always keep to 1 (This register control only for SCU Type PGC)
0 The target subsystem was not powered down for the previous power-down request.
1 The target subsystem was powered down for the previous power-down request.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
MIX_
Reserved DFTRAM_TCD1 L2RSTDIS
PCR
Reset 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
NOTE: Can’t be programmed to zero (This register control only for SCU Type PGC)
7 This field is reserved.
- Reserved
6–1
L2RSTDIS After scu pdn_req, count this value to assert A53 l2rstdis to 1’b1, it will be clear automatically once any of
A53 core0/core1/core2/core3 is wakeup
NOTE: Can’t be programmed to zero (This register control only for SCU Type PGC)
0
MIX_PCR Power Control
NOTE: PCR must not change from power-down request (pdn_req) assertion until the target subsystem is
completely powered up.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved SW2ISO
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
SCALL_OUT
PUP_WAIT_
SW2ISO Reserved
Reset 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
Reserved
Reset 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved ISO2SW Reserved ISO
Reset 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
L2RSTDIS_
Reserved DEASSERT_
CNT
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
L2RETN_FLAG
ALLOFF_FLAG
PSR
R
Reserved
L2RSTDIS_DEASSERT_CNT PUP_CLK_DIV_SEL
Reset 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: Software should write “1” to clear this flag after A53 is wakeup from ALL_OFF mode, otherwise, it
will always keep to 1 (This register control only for SCU Type PGC)
NOTE: Software should write “1” to clear this flag after A53 is wakeup from L2 retention mode, otherwise
it will always keep to 1 (This register control only for SCU Type PGC)
0 The target subsystem was not powered down for the previous power-down request.
1 The target subsystem was powered down for the previous power-down request.
GPC PGC Control Register for the PUs. See the PGC Memory Map for the assignments.
Address: 303A_0000h base + B00h offset + (64d × i), where i=0d to 19d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
NOTE: Can’t be programmed to zero (This register control only for SCU Type PGC)
0
PCR Power Control
NOTE: PCR must not change from power-down request (pdn_req) assertion until the target subsystem is
completely powered up.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved SW2ISO
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
SW2ISO SW
Reset 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
W
Reserved
Reset 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved ISO2SW Reserved ISO
Reset 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
L2RSTDIS_
Reserved DEASSERT_
CNT
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
L2RETN_FLAG
ALLOFF_FLAG
PSR
R
Reserved
L2RSTDIS_DEASSERT_CNT PUP_CLK_DIV_SEL
Reset 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: Software should write “1” to clear this flag after A53 is wakeup from ALL_OFF mode, otherwise, it
will always keep to 1 (This register control only for SCU Type PGC)
NOTE: Software should write “1” to clear this flag after A53 is wakeup from L2 retention mode, otherwise
it will always keep to 1 (This register control only for SCU Type PGC)
0 The target subsystem was not powered down for the previous power-down request.
1 The target subsystem was powered down for the previous power-down request.
5.3.1 Overview
The chip has two XTAL modules, 24MHz XTAL module and 32KHz XTAL module.
The 24MHz XTAL module is instantiated from the XTAL IP, which includes:
• 24MHz crystal oscillator to generate reference clock
• Digital control logics for the XTAL
The 32KHz XTAL module uses a different IP and it is used as the clock source for the
RTC, located in the SNVS.
OSC IP
+
–
Internal
Circuitry
XTALI XTALO
On chip
Rs
Rfb
CL1 CL2
• Normal oscillator mode - In normal mode, the XTAL IP generates stable square
wave based on the crystal oscillator input.
• Bypass mode - In bypass mode, an external clock can be input through the XTAL
pad.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
EN Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLK_CKE_OVERRIDE
R
CLK_CKE
Reserved
Reserved
Reserved LOCK_COUNT
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5.4.1 Overview
The Thermal Monitoring Unit (TMU) monitors and reports the temperature from one or
more remote temperature measurement sites located on chip.
5.4.1.1 Features
The temperature management unit features:
• Temperature measurement range -40-105°C.
• Monitoring
• Single-, or multi-site monitoring
• Out-of-range indication
• High/low temperature range monitoring
• Immediate and average temperature monitoring
• Average temperature monitoring programmable low-pass filtering
• Programmable monitoring thresholds for normal and critical
• Reporting
• Immediate and average temperature reporting
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
ADC_PD
EN
Reset 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
ALPF
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
00 1.0
01 0.5
10 0.25
11 0.125
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
PROBE_SEL
W
Reset 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
RESERVED
R RESERVED
ATCTEIE1
ATCTEIE0
ATTEIE1
ATTEIE0
ITTEIE1
ITTEIE0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
RESERVED
ATCTE1
ATCTE0
ATTE1
ATTE0
ITTE1
ITTE0
R RESERVED
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
EN1 EN0 TEMP1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
TEMP0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
EN1 EN0 TEMP1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
TEMP0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
EN1 EN0 TEMP1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
TEMP0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R V1 V0 RESERVED SNSR1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED SNSR0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R V1 V0 RESERVED TEMP1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED TEMP0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R V1 V0 RESERVED TEMP1
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED TEMP0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
BUF_SLOP_SEL
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED BUF_VERF_
W SEL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
TMUX
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
EN SNSR105C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
SNSR25C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED
EN SNSR105C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED
SNSR25C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disable.
1 Enable.
30–28 This field is reserved.
RESERVED
27–16 105C sensor value of probe1 read from FUSE, system should program it before enable TMU if enable 1P
SNSR105C calibration.
15–12 This field is reserved.
RESERVED
SNSR25C 25C sensor value of probe1 read from FUSE(default 1p value), system should program it before enable
TMU if enable 1P calibration.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R RESERVED RESERVED
SNSR_M40C_1 SNSR_M40C_0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R RESERVED RESERVED
BGR BJT_CUR
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VREFT_FLAG
VBE_FLAG
R RESERVED RESERVED
EN_VREFT_TRIM
EN_VBE_TRIM
EN_CH
VLSB
Reset 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
6.1.1 Overview
The boot process begins at the Power-On Reset (POR) where the hardware reset logic
forces the Arm core to begin the execution starting from the on-chip boot ROM.
The boot ROM code uses the state of the internal register BOOT_MODE[3:0] as well as
the state of various eFUSEs settings to determine the boot flow behavior of the device.
The main features of the ROM include:
• Support for booting from various boot devices
• Serial downloader support (USB)
• High Assurance Boot
The boot ROM supports these boot devices:
• Serial NOR Flash via FlexSPI
• Serial NAND Flash via FlexSPI
• NAND flash
• SD/eMMC
• Serial (SPI) NOR
The boot ROM code also allows to download the programs to be run on the device. The
example is a provisioning program that can make further use of the serial connection to
provide a boot device with a new image. Typically, the provisioning program is
downloaded to the internal RAM and allows to program the boot devices, such as the
SD/MMC flash. The ROM serial downloader uses a high-speed USB in a non-stream
mode connection.
A key feature of the boot ROM is the ability to perform a secure boot, also known as a
High-Assurance Boot (HAB). This is supported by the HAB security library which is a
subcomponent of the ROM code. The HAB uses a combination of hardware and software
together with the Public Key Infrastructure (PKI) protocol to protect the system from
executing unauthorized programs. Before the HAB allows the user image to execute, the
image must be signed. The signing process is done during the image build process by the
private key holder and the signatures are then included as a part of the final program
image. If configured to do so, the ROM verifies the signatures using the public keys
included in the program image. A secure boot with HAB can be performed on all boot
devices supported on the chip in addition to the serial downloader. The HAB library in
the boot ROM also provides the API functions, allowing the additional boot chain
components (bootloaders) to extend the secure boot chain. The out-of-fab setting for the
SEC_CONFIG is the open configuration, in which the ROM/HAB performs the image
authentication, but all authentication errors are ignored and the image is still allowed to
execute.
During boot, the core's behavior is defined by the boot mode pin settings, as described in
Boot mode pin settings.
When set to the Internal Boot, the boot flow may be controlled by a combination of
eFUSE settings and Boot Mode pins. The fuse (BT_FUSE_SEL) will not impact the
behavior of ROM in Internal Boot Mode.
0x0003FFFF 0x0097FFFF
ROM BOOTSTRAP CODE
0x00000A00
VECTORS
0x00000000 0x00900000
NOTE
If no ROM/HAB APIs are being used, the entire OCRAM
region can be used freely after the boot.
• IOMUXC—I/O Multiplexer Control which allows the GPIO use to override the
eFUSE boot settings;
• IOMUXC GPR—I/O Multiplexer Control General-Purpose Registers
• CAAM—Cryptographic Acceleration and Assurance Module
• SNVS—Secure Non-Volatile Storage
• SRC—System Reset Controller
• USB—used for the serial download of a boot device provisioning program
• USDHC—Ultra-Secure Digital Host Controller
• WDOG-1—Watchdog timer
NOTE
All other PLLs are in the default status.
NOTE
Refer to Low-power boot for low-power boot frequencies.
Table 6-4. Clock root setting by ROM
Clock Name Frequency (MHz) Source Enable
ARM_A53_ROOT 1000 ARM_PLL_CLK Yes
ARM_M7_CLK_ROOT 200 SYSTEM_PLL2_200M_CLK No
AHB_CLK_ROOT 133 SYSTEM_PLL1_133M_CLK Yes
MAIN_AXI_CLK_ROOT 400 SYSTEM_PLL1_800M_CLK Yes
NAND_CLK_ROOT 500 SYSTEM_PLL2_500M_CLK Enabled by driver
NAND_USDHC_BUS_CLK_R 266 SYSTEM_PLL1_266M_CLK Enabled by driver
OOT
USB_BUS_CLK_ROOT SYSTEM_PLL2_500M_CLK Enabled by driver
NOC_CLK_ROOT 400 SYSTEM_PLL1_800M_CLK Yes
USDHC1_CLK_ROOT 200 SYSTEM_PLL1_400M_CLK Enabled by driver
USDHC2_CLK_ROOT 200 SYSTEM_PLL1_400M_CLK Enabled by driver
USDHC3_CLK_ROOT 200 SYSTEM_PLL1_400M_CLK Enabled by driver
NOTE
All other clock roots are in the default status.
Table 6-5. NAND_CLK_ROOT setting
NAND data rate NAND_CLK_ROOT source Frequency
Async/Legacy NAND SYSTEM_PLL1_400M_CLK 25 MHz
Sync 40M SYSTEM_PLL1_400M_CLK 40 MHz
Toggle/Sync 66M SYSTEM_PLL1_400M_CLK 66 MHz
Toggle 80M SYSTEM_PLL1_400M_CLK 80 MHz
Sync 100M SYSTEM_PLL1_400M_CLK 100 MHz
Toggle/Sync 133M SYSTEM_PLL1_400M_CLK 133 MHz
Sync 160M SYSTEM_PLL1_400M_CLK 133 MHz
Toggle/Sync 200M SYSTEM_PLL1_400M_CLK 200 MHz
NOTE
The NAND_CLK_ROOT source depends on the NAND data
rate.
The ROM code disables the clocks listed in the following table, except for the boot
devices listed in the "Enabled for boot device" column below.
Table 6-6. CCGR setting by ROM
Gating Register LPCG Enable Enabled for boot device
CCM_CCGR0 DVFS
CCM_CCGR1 Anamix Yes
CCM_CCGR2 CPU Yes
CCM_CCGR3 CSU Yes
CCM_CCGR4 Debug Yes
CCM_CCGR5 DRAM1
CCM_CCGR6 Reserved Yes
CCM_CCGR7 ECSPI1 Yes
CCM_CCGR8 ECSPI2 Yes
After the boot, the program image can overwrite the vectors as required. The code shown
below is used to map the ROM exception vector table to the duplicate exception vector
table in the RAM.
When an exception occurs, ROM does not move into USB serial download mode.
Instead, ROM will set a flag (EXCEPTION_OCCURED) in the SRC GPR, and then reset
the chip.
Mapping ROM Exception Vector Table
rom_vectors
B startup ; offset is 0x000
ALIGN 0x80
B default_exception_handler ; offset is 0x080
ALIGN 0x80
B default_exception_handler ; offset is 0x100
ALIGN 0x80
B default_exception_handler ; offset is 0x180
ALIGN 0x80
B sync_exception_handler ; offset is 0x200
ALIGN 0x80
B default_exception_handler ; offset is 0x280
ALIGN 0x80
B default_exception_handler ; offset is 0x300
ALIGN 0x80
B default_exception_handler ; offset is 0x380
6.1.5.1.1 NAND Flash Boot Flow and Boot Control Blocks (BCB)
There are two BCB data structures:
• FCB
• DBBT
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 713
System Boot
As part of the NAND media initialization, the ROM driver uses safe NAND timings to
search for a Firmware Configuration Block (FCB) that contains the optimum NAND
timings, page address of Discovered Bad Block Table (DBBT) Search Area and start
page address of primary and secondary firmware.
The hardware ECC level to use is embedded inside FCB block. The FCB data structure is
also protected using ECC. Driver reads raw 2112 bytes of first sector and runs through
software ECC engine that determines whether FCB data is valid or not.
If the FCB is found, the optimum NAND timings are loaded for further reads. If the ECC
fails, or the fingerprints do not match, the Block Search state machine increments page
number to Search Stride number of pages to read for the next BCB until SearchCount
pages have been read.
If search fails to find a valid FCB, the NAND driver responds with an error and the boot
ROM enters into serial download mode.
The FCB contains the page address of DBBT Search Area, and the page address for
primary and secondary boot images. DBBT is searched in DBBT Search Area just like
how FCB is searched. After the FCB is read, the DBBT is loaded, and the primary or
secondary boot image is loaded using starting page address from FCB.
Figure 6-3 shows the state diagram of FCB search.
START
Current Page = 0,
Search Stride = Stride Size Fuse Value,
Search Count = Boot Search Count Fuse Value
YES
YES NO
Recovery Device/
NCB Found
Serial Loader
Once FCB is found, the boot ROM searches for the Discovered Bad Blocks Table
(DBBT). If DBBT Search Area is 0 in FCB, then ROM assumes that there are no bad
blocks on NAND device boot area. See Figure 6-4 for the DBBT search flow.
START
YES
YES
NO
DBBT Found, Copy to IRAM
The search area contains copies of the FCB at each stride distance, in case the first Serial
NAND block becomes corrupted, the ROM will find its copy in the next Serial NAND
block. The search area should span over at least two Serial NAND blocks. The location
information for DBBT search area and images are all specified in the FCB. Table 25-9
show the Flash Control Block Structure.
Table 6-9. Flash Control Block Structure
Name Offset Size Bytes Description
crcChecksum 0x000 4 Checksum
fingerprint 0x004 4 0x4E46_4342
ASCII: “NFCB”
version 0x008 4 0x0000_0001
DBBTSearchStartPage 0x00C 4 Start Page address for bad
block table search area
searchStride 0x010 2 Search stride for DBBT and
FCB search. Not used by
ROM Max value is 8.
searchCount 0x012 2 Copies of DBBT and FCB.
Not used by ROM, max value
is 8.
firmwareCopies 0x014 4 Firmware copies
Valid range 1-8.
Reserved 0x018 40 Reserved for future use
Must be set to 0.
firmwareInfoTable 0x40 64 This table consists of (up to 8
entries):
NOTE
1. The “crcChecksum” is calculated with an MPEG2 variant
of CRC-32. See Table 6-10 for more details.
2. The “crcChecksum” calculation starts from fingerprint to
the end of FCB, 1020 bytes in total.
3. the “spiNandConfigBlock” is FlexSPI NAND
configuration block which consists of common FlexSPI
memory configuration block and Serial NAND specified
configuration parameters. See Serial Flash boot through
SPI for more details.
Table 6-10. CRC-32 variant algorithm
Property Description
Width 32 bits
Polynomial 0x04C11BD7
Init Value 0xFFFFFFFF
Reflect in False
Reflect Out False
XOR Out 0x00000000
NOTE
1. Maximum bad block number is 256.
64 B
2 KB Main area spare
512 main parity 512 main parity 512 main parity 512 main parity
meta
data Bad block information at
fourth block of data area
Swap byte
Table 6-12. Fuse definition for Serial NOR over FlexSPI (continued)
Fuse Config Config Definitions Shipped Value Settings
480[19:18] OEM FLEXSPI_HOLD_TIME 0 0 – 500us
_SEL
1 – 1ms
Hold time before read
2 – 3ms
from device
3 – 10ms
NOTE
If the xSPI FLASH Auto Probe feature is enabled, the
following is the logic how this feature works with other fuse
combinations:
• Flash Type - If Flash type is 0, the "xSPI FLASH Auto
Probe Type" takes effect for the Flash type selection. If
Flash Type is greater than or equal to 1, the "Flash Type"
Fuse is used for Flash type selection, ROM will issue
specific command to probe the presence of Serial NOR
FLASH.
• xSPI FLASH Frequency - This field is used for specifying
the Flash working frequency.
Start
No
Image == XIP Copy image to OCRAM
Yes
End
Note:
1. To customize the LUT sequence for some specific device, users need to enable
“lutCustomSeqEnable” and fill in corresponding “lutCustomSeq” field specified by
command index below.
2. For Serial (SPI) NOR, the pre-defined LUT index is as follows:
Table 6-14. LUT sequence definition for Serial NOR
Command Index Name Index in lookup table Description
0 Read 0 Read command
Sequence
1 ReadStatus 1 Read Status
command
2 WriteEnable 3 Write Enable
command sequence
3 EraseSector 5 Erase Sector
Command
4 PageProgram 9 Page Program
Command
5 ChipErase 11 Full Chip Erase
6 Dummy 15 Dummy Command as
needed
Reserved 2,4,6,7,8,10,12,13,14 All reserved indexes
can be freely used for
other purpose
// Write Enable
FlexSPI NAND:
00 - 64 pages
01 - 128 pages
10 - 256 pages
11 - 32 pages
6.1.5.4.2 NAND flash boot flow and Boot Control Blocks (BCB)
There are two BCB data structures:
• FCB
• DBBT
As a part of the NAND media initialization, the ROM driver uses safe NAND timings to
search for the Firmware Configuration Block (FCB) that contains the optimum NAND
timings, the page address of the Discovered Bad Block Table (DBBT) Search Area, and
the start page address of the primary and secondary firmware.
The hardware ECC level to use is embedded inside the FCB block. The FCB data
structure is also protected using the ECC. The driver reads raw 2112 bytes of the first
sector and runs through the software ECC engine that determines whether the FCB data is
valid or not.
If the FCB is found, the optimum NAND timings are loaded for further reads. If the ECC
fails, or the fingerprints do not match, the Block Search state machine increments the
page number to the Search Stride number of pages to read for the next BCB until the
SearchCount pages have been read.
If the search fails to find a valid FCB, the NAND driver responds with an error and the
boot ROM enters the serial download mode.
The FCB contains the page address of the DBBT Search Area, and the page address for
primary and secondary boot images. The DBBT is searched in the DBBT Search Area,
just like the FCB is searched. After the FCB is read, the DBBT is loaded, and the primary
or secondary boot image is loaded using the starting page address from the FCB.
This figure shows the state diagram of the FCB search:
START
Current Page = 0,
Search Stride = Stride Size Fuse Value,
Search Count = Boot Search Count Fuse Value
YES
YES NO
Recovery Device/
NCB Found
Serial Loader
When the FCB is found, the boot ROM searches for the Discovered Bad Blocks Table
(DBBT). If the DBBT Search Area is 0 in the FCB, the ROM assumes that there are no
bad blocks on the NAND device boot area. See this figure for the DBBT search flow:
START
YES
YES
NO
DBBT Found, Copy to IRAM
The search area contains copies of the FCB at each stride distance, so, in case the first
NAND block becomes corrupted, the ROM finds its copy in the next NAND block. The
search area must span over at least two NAND blocks. The location information for the
DBBT search area, FW1, and FW2 are all specified in the FCB. This table shows the
flash control block structure:
Table 6-18. Flash control block structure
Name Start byte Size in bytes Description
Reserved 0 4 Reserved for Fingerprint #1(Checksum)
FingerPrint 4 4 32-bit word with a value of 0x20424346, in ascii
"FCB"
Version 8 4 32-bit version number; this version of FCB is
0x00000001
m_NANDTiming 12 8 8 B of data for eight NAND timing parameters
from the NAND datasheet. The eight
parameters are:
m_NandTiming[0]=data_setup,
m_NandTiming[1]=data_hold,
m_NandTiming[2]=address_setup,
m_NandTiming[3]=dsample_time,
m_NandTiming[4]=nand_timing_state,
m_NandTiming[5]=REA,
m_NandTiming[6]=RLOH,
m_NandTiming[7]=RHOH.
The ROM only uses the first four parameters,
but the FCB provides space for other four
parameters to be used by the bootloader or
other applications.
PageDataSize 20 4 The number of bytes of data in a page.
Typically, this is 2048 bytes for 2112 bytes
page size or 4096 bytes for 4314/4224 bytes
page size or 8192 for 8568 bytes page size.
TotalPageSize 24 4 The total number of bytes in a page. Typically,
2112 for 2-KB page or 4224 or 4314 for 4-KB
page or 8568 for 8-KB page.
SectorsPerBlock 28 4 The number of pages per block. Typically 64 or
128 or depending on the NAND device type.
NumberOfNANDs 32 4 Not used by ROM
TotalInternalDie 36 4 Not used by ROM
CellType 40 4 Not used by ROM
EccBlockNEccType 44 4 Value from 0 to is used to set the BCH Error
Corrrection level 0, 2, 4, .. or 62 for Block BN of
ECC page, used in configuring the BCH62
page layout registers.
EccBlock0Size 48 4 Size of block B0 used in configuring the BCH62
page-layout registers.
The FCB data structure is protected using a 62-bit ECC. The layout of the FCB page is
illustrated in this figure:
Meta D0 D1 D2 D3
parity
parity
parity
parity
32B 128B 128B 128B 128B
D4 D5 D6 D7
parity
parity
parity
parity
128B 128B 128B 128B
The detailed parameters of the FCB pages are listed in this table:
Table 6-19. Parameters setting for FCB page
Parameter Value
TotalPageSize 2048+64=2112
MetadataBytes 32
EccBlock0Size 128
EccBlock0EccType 31
BCHType 0
EccBlockNSize 128
EccBlockNEccType 31
NumEccBlocksPerPage 7
To reduce the disturbances caused by a neighboring cell in the FCB page in the NAND
chip, a randomizer is enabled when reading the FCB page. BCH ECC has a Randomizer
module that is interfaced through the GPMI APBHDMA chain. The Randomizer can
generate random data based on BCH ECC encoded/decoded data. It can be employed to
reduce the disturbances caused by a neighboring cell in the NAND chip, thus reducing bit
errors. The randomizer is used to reduce the bit errors in the FCB. Ensure that the
randomizer is enabled when burning the FCB pages in the NAND flash. To control the
randomizer for the pages (except for FCB), a new field called Randomizer_Enable is
added into the FCB structure. If the Randomizer_Enable field is set to 0, the randomizer
is disabled. Reading the pages (except for FCB) being set to a non-zero value enables the
randomizer. For detailed randomizer information, see Randomizer.
64 B
2 KB Main area spare
512 main parity 512 main parity 512 main parity 512 main parity
meta
data Bad block information at
fourth block of data area
Swap byte
The GPMI timing2 register values are set using the FCB members
TMTiming2.READ_LATENCY, CE_DELAY, PREAMBLE_DELAY,
POSTAMBLE_DELAY, CMDADD_PAUSE, and DATA_PAUSE.
The example below is for 13 bits of parity (GF13). The number of ECC bits required for
a data block is calculated using the (ECC_Correction_Level * 13) bits.
In the above layout, the ECC size for EccB0 and EccBN must be selected to not exceed a
total page size of 2112 bytes. The EccB0 and EccBN can be one of the 2, 4, 6, 8, 10, 12,
14, 16, 18, and 20 bits on the ECC correction level. The total bytes are:
[M + (data_block_size x 4) + ([EccB0 + (EccBN x 3)] x 13) / 8] <= 2112;
M = metadata bytes and data_block_size is 512.
There are four data blocks of 512 bytes each in a page of 2-KB page sized NAND. The
values of EccB0 and EccBN must be such that the above calculation does not result in a
value greater than 2112 bytes.
Different NAND manufacturers have different sizes for a 4-KB page; 4314 bytes is
typical.
[M + (data_block_size x 8) + ([EccB0 + (EccBN x 7)] x 13) / 8] <= 4314;
M= metadata bytes and data_block_size is 512.
There are eight data blocks of 512 bytes each in a page of a 4-KB page sized NAND. The
values of the EccB0 and EccBN must be such that the above calculation does not result in
a value greater than the size of a page in a 4-KB page NAND.
6.1.5.4.7.2 Metadata
The number of bytes used for the metadata is specified in the FCB. The metadata for the
BCH encoded pages is placed at the beginning of a page. The ROM only cares about the
first byte of metadata to swap it with a bad block marker byte in the page data after each
page read; it is important to have at least one byte for the metadata bytes field in the FCB
data structure.
NOTE
The boot ROM code reads the application image length and the
application destination pointer from the image.
Start
No
Command Successful? 5
Yes
SD MMC
1 Check SD/MMC Selection fuse 2
Start GPT with 1s delay MMC Boot Set MMC card CSD Set operating frequency MMC Boot
Voltage Validation (Issue CMD9) to 20 MHz Device Init
for CMD1
Set Weak pull-up Put card data Transfer
For CMD line Mode (Issue CMD7)
Issue CMD1 with HV Increment loop counter
Yes
No No
Command Successful? Command Successful?
No Yes
Command Successful? 5
No Send CMD13 to read
Yes Set RCA (Issue CMD3) status
Yes Loop Cntr < 3000 and Yes
Busy Bit == 1 Yes
looping period < 1s Card State ==
No 5
Command Successful? TRANS?
No
Is Response OCR for Yes Yes
Card Is HC MMC
HC Get CID from card(Issue No
Spec ver >= 4.0?
CMD2)
No Yes
Card Is LC MMC
Send CMD8 to get
Ext_CSD
No
Command Successful?
Yes
Set CMD13 poll timeout
to 100ms
No
Command Successful?
No Yes
CMD13 Poll No Card State ==
timeout? TRANS?
Yes Yes
End
Issue CMD55
Set ACMD41 ARG bit 28
for SDXC power control
No
Command Successful?
Yes Yes
FAST_BOOT Yes
selected? No Loop Cntr < 3000 and
Issue ACMD41 2
looping period < 1s
No
No
Command Successful?
Bit 24 of response No
2
0 set?
Yes
8 SD Boot
Switch Voltage
No
Command Successful?
Yes
No
DATA lines driven low?
Yes
switch supply voltage
to 1.8v
No
Voltage high No DATA lines
poll timeout? driven high?
Yes Yes
2 7
No No
Put card data Transfer
5 Mode (Issue CMD7)
No
No
Card State == Send CMD13 to read Yes
TRANS? Command Successful?
status
Yes
Yes
UHSI mode selected? 9
No
No
Command Successful? 4
9 SD Boot
UHSI init
Check response of
CMD7
Yes No
Card is locked?
No
No Send ACMD6 with Yes
Command Successful? Command Successful? Send CMD55
argument of 4 bit width
Yes
Set CMD13 poll timeout Yes Change USDHC bus
Check Status Success?
to 100ms width
No
Yes
Change USDHC clock Loopback clock Yes Set loopback clock bit in
speed fuse set? USDHC register
No
Init failed
11
No No
Command Successful?
Yes
CMD13 Poll No Card State ==
timeout? TRANS?
Yes Yes
Failure Success Failure
End
4 SD/MMC Boot
Data Read
Yes
No
Send CMD18 (multiple
block read)
No
Command Successful? 5
Yes
End
6
eMMC 4.x Boot
Fast Boot
Acknowledge token Yes Set GPT poll counter to Wait for block gap or
accepted? 1s timeout
No
End
2
SD Boot
11 sample point tuning
Yes
Set the USDHC into Exceed limit?
tuning mode
No
Configure the block
Set delay cell number to
length and block number
current value
4 10
The ECPSI-1/ECPSI-2/ECPSI-3 block can be used as a boot device using the ECSPI
interface for the serial(SPI) NOR boot. The SPI interface is configured to operate at 12.5
MHz for 3-byte addressing devices and at 3.125 MHz for 2-byte addressing devices.
The boot ROM copies 4 KB of data from the serial ROM device to the internal RAM.
After checking the Image Vector Table header value (0xD1) from the program image, the
ROM code performs a DCD check. After a successful DCD extraction, the ROM code
extracts the destination pointer and length of image from the Boot Data Structure to be
copied to the RAM device from where the code execution occurs.
NOTE
The Initial 4 KB of program image must contain the IVT, DCD,
and the Boot Data Structures.
Start
Yes
NOTE
• Primary Image Offset - The image offset on device against
to the beginning of boot device.
• IVT Offset - The IVT header offset in boot image against
to the beginning of boot image.
SPL
CSF
(for SPL and its header)
Others
(should be handled by SPL)
...
Secondary Image Offset
SPL
CSF
(for SPL and its header)
Others
(should be handled by SPL)
• For the primary image offset and IVT offset details, please refer to Primary image
offset and IVT offset.
• The secondary image offset is specified by fuses, please refer to the fuse map
chapter.
clocks based on the LPB_BOOT fuses value (see the table below). The polarity of the
low-power boot condition on the pad is set by the BT_LPB_POLARITY fuse (see the
following figure).
Table 6-30. Low-power boot frequencies
LPB_BOOT Boot Frequencies=0 Boot Frequencies=1
00 ARM_A53_CLK_ROOT= 1000 MHz ARM_A53_CLK_ROOT= 500 MHz
AHB_CLK_ROOT= 133 MHz AHB_CLK_ROOT= 133 MHz
MAIN_AXI_CLK_ROOT= 400 MHz MAIN_AXI_CLK_ROOT= 200 MHz
01 ARM_A53_CLK_ROOT= 1000 MHz ARM_A53_CLK_ROOT= 500 MHz
AHB_CLK_ROOT= 133 MHz AHB_CLK_ROOT= 133 MHz
MAIN_AXI_CLK_ROOT= 400 MHz MAIN_AXI_CLK_ROOT= 200 MHz
10 ARM_A53_CLK_ROOT= 500 MHz ARM_A53_CLK_ROOT= 250 MHz
AHB_CLK_ROOT= 133 MHz AHB_CLK_ROOT= 133 MHz
MAIN_AXI_CLK_ROOT= 200 MHz MAIN_AXI_CLK_ROOT= 100 MHz
11 ARM_A53_CLK_ROOT= 250 MHz ARM_A53_CLK_ROOT= 125 MHz
AHB_CLK_ROOT= 133 MHz AHB_CLK_ROOT= 133 MHz
MAIN_AXI_CLK_ROOT= 100 MHz MAIN_AXI_CLK_ROOT= 50 MHz
Start
No
No
GPIO1_9 pad equals
LPB_POLARITY fuse?
Yes
Enable PLLs
End
The integration of the HAB feature with the ROM code ensures that the chip does not
enter an operational state if the existing hardware security blocks detected a condition
that may be a security threat or if the areas of memory deemed to be important were
modified. The HAB uses the RSA digital signatures to enforce these policies.
CAAM
Flash
ROM
HAB
Core Processor
SNVS
RAM
The figure above illustrates the components used during a secure boot using HAB. The
HAB interfaces with the SNVS to make sure that the system security state is as expected.
The HAB also uses the CAAM hardware block to accelerate the SHA-256 message
digest operations performed during the signature verifications and AES-128 operations
for the encrypted boot operations. The HAB also includes a software implementation of
SHA-256 for cases where a hardware accelerator can't be used. The RSA key sizes
supported are 1024, 2048, 3072, and 4096 bits. The RSA signature verification operations
are performed by a software implementation contained in the HAB library. The main
features supported by the HAB are:
• X.509 public key certificate support
• CMS signature format support
• Proprietary encrypted boot support. Note that the encrypted boot depends on the
CAAM hardware module. When the CAAM is disabled (when the
EXPORT_CONTROL fuse is blown), the encrypted boot is not available.
NOTE
NXP provides the reference Code Signing Tool (CST) for key
generation, certificate generation, and code signing for use with
the HAB library. The CST can be found by searching for
"IMX_CST_TOOL_NEW" at http://www.nxp.com.
NOTE
For further details on using the secure boot feature using HAB,
refer to Secure Boot on i.MX Series (AN4581).
NOTE
The boot ROM sets the GPT1 in a free-running mode with a
32-kHz input clock.
Boot device type mapping:
• 0x1 - SD card or eSD chip
6.2 Fusemap
NOTE
Fuses marked as “Reserved” are reserved for NXP internal (and
future) use only. Customers should not attempt to burn these, as
the IC behavior may be unpredictable. The reserved fuses can
be read as either 0 or 1.
Table 6-33. Boot Fusemap
Addr 7 6 5 4 3 2 1 0
0x470[7:0] OVERRIDE_NAND_PG_ OVERRIDE OVERRIDE_FLEXSPI_B FLEXSPI_A FLEXSPI_AUTO_PROBE
PER_BLK_VAL _FLEXSPI_ T_SEL_VAL UTO_PROB _TYPE
BT_SEL E_EN
Table continues on the next page...
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
766 NXP Semiconductors
Chapter 6 SNVS, Reset, Fuse, and Boot
1. Testing has been performed on select memory devices. Please contact your NXP representative for more details.
FlexSPI NAND:
• 00 - 64 pages
• 01 - 128 pages
• 10 - 256 pages
• 11 - 32 pages
0x470[8] OVERRIDE_NAND 1 Override pages in block 0 - Do not override SW(ROM)
_PG_PER_BLK
1 - Override
EMMC_SPEED:
• 00 - Normal
• 01 - High
0x490[5:4] SDMMC_BUS_WID 2 SDMMC Bus width 00 - 8-bit SW(ROM)
TH
01 - 4-bit
10 - 8-bit DDR (MMC 4.4)
11 - 4-bit DDR (MMC 4.4)
0x490[6] EMMC_FAST_BT 1 Fast boot support 0 - Regular SW(ROM)
1 - Fast Boot
0x490[7] USDHC_PWR_EN 1 SD power cycle enable/ 0 - No power cycle SW(ROM)
eMMC reset enable
1 - Enabled
1. Testing has been performed on select memory devices. Please contact your NXP representative for more details.
6.3.1 Overview
This section contains information describing the On-Chip OTP controller
(OCOTP_CTRL) along with details about the block functionality and implementation.
In this document, the words "eFuse" and "OTP" are interchangeable. OCOTP refers to
the hardware block itself.
OCOTP_CTRL
APB Interface
IP bus
Ocotp control register ip2apb
OTP
Memory
6.3.1.2 Features
The OCOTP provides the following features :
• 32-bit word restricted program and read to
• Loading and housing of eFuse content into shadow registers
• Memory-mapped (restricted) access to shadow registers
• Provides program-protect and read-protect of eFuse
• Provides override and read protection of shadow register
6.3.2.1 Operations
The IP bus interface of the OCOTP has the following functions.
• Configure control registers for programming and reading all the fuse words
• Override and read shadow registers
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 783
On-Chip OTP Controller (OCOTP_CTRL)
OCOTP configuration for programs and reads are performed on 32-bit words for software
(SW) convenience. For writes, the 32-bit word reflects the "write-mask". Bit fields with 0
will not be programmed and bit fields with 1 will be programmed.
2. Check that CTRL[BUSY] and CTRL[ERROR] are clear. Overlapped accesses are
not supported by the controller. Any pending write, read, or reload must be
completed before a read access can be requested.
3. Write the requested fuse address to CTRL[ADDR].
4. Set READ_CTRL[READ_FUSE] to start the read operation.
5. Wait for the controller to clear CTRL[BUSY]. A read request to a protected or
locked region will result in no OTP access and no setting of CTRL[BUSY]. In
addition, CTRL[ERROR] will be set. It must be cleared by software before any new
access can be issued.
6. Read READ_FUSE_DATA to get fuse word value. READ_FUSE_DATA will be
0xBADABADA when CTRL[ERROR] is set.
ADDRESS
STROBE
(tSTROBE READ or
tSTROBE_PROG) +1
tRELAX + 1 tRELAX + 1
6.3.2.4 Resets
The OCOTP is always active. The shadow registers automatically load the appropriate
OTP contents after reset is deasserted. During this load-time CTRL[BUSY] is set.
6.3.2.5 Clocks
The table found here describes the clock sources for OCOTP. Please see the chip-specific
clocking section for clock setting, configuration and gating information.
Table 6-36. OCOTP Clocks
Clock name Description
ipg_clk Peripheral clock
ipg_clk_s Peripheral access clock
6.3.5.1.2.1 Offset
Register Offset Description
HW_OCOTP_CTRL 0h OTP Controller Control Register
HW_OCOTP_CTRL_SET 4h Writing a 1 to a bit in this register sets the
corresponding bit in HW_OCOTP_CTRL
HW_OCOTP_CTRL_CL 8h Writing a 1 to a bit in this register clears the
R corresponding bit in HW_OCOTP_CTRL
HW_OCOTP_CTRL_TO Ch Writing a 1 to a bit in this register toggles the
G corresponding bit in HW_OCOTP_CTRL
6.3.5.1.2.2 Function
The OCOTP Control and Status Register provides the necessary software interface for
performing read and write operations to the On-Chip OTP (One-Time Programmable
ROM). The control fields such as WR_UNLOCK, ADDR and BUSY/ERROR may be
used in conjuction with the HW_OCOTP_DATA register to perform write operations.
Read operations to the On-Chip OTP are involving ADDR, BUSY/ERROR bit field and
HW_OCOTP_READ_CTRL register. Read value is saved in
HW_OCOTP_READ_FUSE_DATA register.
6.3.5.1.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
WR_UNLOCK
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUSY
R
0
RELOAD_SHADOWS
Reserved
ERROR
ADDR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.2.4 Fields
Field Function
31-16 Write 0x3E77 to enable OTP write accesses. NOTE: This register must be unlocked on a write-by-write
basis (a write is initiated when HW_OCOTP_DATA is written), so the UNLOCK bitfield must contain the
WR_UNLOCK
correct key value during all writes to HW_OCOTP_DATA, otherwise a write shall not be initiated. This
field is automatically cleared after a successful write completion (clearing of BUSY).
15 Reserved
—
14-12 Reserved
—
11 Set to force re-loading the shadow registers (HW/SW capability and LOCK). This operation will
automatically set BUSY. Once the shadow registers have been re-loaded, BUSY and
RELOAD_SHAD
RELOAD_SHADOWS are automatically cleared by the controller.
OWS
10 Set by the controller when an access to a locked region(OTP or shadow register) is requested. Must be
cleared before any further access can be performed. This bit can only be set by the controller. This bit is
ERROR
also set if the Pin interface is active and software requests an access to the OTP. In this instance, the
ERROR bit cannot be cleared until the Pin interface access has completed. Reset this bit by writing a one
to the SCT clear address space and not by a general write.
9 OTP controller status bit. When active, no new write access or read access to OTP(including
RELOAD_SHADOWS) can be performed. Cleared by controller when access complete. After reset (or
BUSY
after setting RELOAD_SHADOWS), this bit is set by the controller until the HW/SW and LOCK registers
are successfully copied, after which time it is automatically cleared by the controller.
8-0 OTP write and read access address register.
ADDR
6.3.5.1.3.1 Offset
Register Offset
HW_OCOTP_TIMING 10h
6.3.5.1.3.2 Function
This register specifies timing parameters for programming and reading the OCOTP fuse
array.
6.3.5.1.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
WAIT STROBE_READ
W
Reset 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
RELAX STROBE_PROG
W
Reset 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1
6.3.5.1.3.4 Fields
Field Function
31-28 Reserved
—
27-22 This count value specifies time interval between auto read and write access in one time program. It is
given in number of ipg_clk periods.
WAIT
21-16 This count value specifies the strobe period in one time read OTP. Trd = ((STROBE_READ+1)-
2*(RELAX+1)) /ipg_clk_freq. It is given in number of ipg_clk periods.
STROBE_READ
15-12 This count value specifies the time to add to all default timing parameters other than the Tpgm and Trd. It
is given in number of ipg_clk periods.
RELAX
11-0 This count value specifies the strobe period in one time write OTP. Tpgm = ((STROBE_PROG+1)-
2*(RELAX+1)) /ipg_clk_freq. It is given in number of ipg_clk periods.
STROBE_PRO
G
6.3.5.1.4.1 Offset
Register Offset
HW_OCOTP_DATA 20h
6.3.5.1.4.2 Function
This register is used in conjuction with HW_OCOTP_CTRL to perform one-time writes
to the OTP. Please see the "Software Write Sequence" section for operating details.
6.3.5.1.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DATA
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
DATA
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.4.4 Fields
Field Function
31-0 Used to initiate a write to OTP. Please see the "Software Write Sequence" section for operating details.
DATA
6.3.5.1.5.1 Offset
Register Offset
HW_OCOTP_READ_CT 30h
RL
6.3.5.1.5.2 Function
This register is used in conjuction with HW_OCOTP_CTRL to perform one time read to
the OTP. Please see the "Software read Sequence" section for operating details.
6.3.5.1.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
0
READ_FUSE
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.5.4 Fields
Field Function
31-1 Reserved
—
0 Used to initiate a read to OTP. Please see the "Software read Sequence" section for operating details.
READ_FUSE
6.3.5.1.6.1 Offset
Register Offset
HW_OCOTP_READ_FU 40h
SE_DATA
6.3.5.1.6.2 Function
The data read from OTP
6.3.5.1.6.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DATA
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
DATA
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.6.4 Fields
Field Function
31-0 The data read from OTP
DATA
6.3.5.1.7.1 Offset
Register Offset
HW_OCOTP_VERSION 90h
6.3.5.1.7.2 Function
This register indicates the RTL version in use.
6.3.5.1.7.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R MAJOR MINOR
W
Reset 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R STEP
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.7.4 Fields
Field Function
31-24 Fixed read-only value reflecting the MAJOR field of the RTL version.
MAJOR
23-16 Fixed read-only value reflecting the MINOR field of the RTL version.
MINOR
15-0 Fixed read-only value reflecting the stepping of the RTL version.
STEP
6.3.5.1.8.1 Offset
Register Offset
HW_OCOTP_LOCK0 400h
6.3.5.1.8.2 Function
Shadowed memory mapped access to OTP Bank 0, word 0.
6.3.5.1.8.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R GP2 GP1
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MAC_ADDR
USB_ID
Reserved
Reserved
Reserved
Reserved
R
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.8.4 Fields
Field Function
31-24 Reserved
—
23-22 Status of shadow register and OTP write lock for gp2 region.
GP2 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
21-20 Status of shadow register and OTP write lock for gp1 region.
GP1 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
19-16 Reserved
—
15-14 Status of shadow register and OTP write lock for mac_addr region.
MAC_ADDR 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
Table continues on the next page...
Field Function
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
13-12 Status of shadow register and OTP write lock for usb_id region.
USB_ID 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
11 Reserved
—
10-9 Reserved
—
8-4 Reserved
—
3-0 Reserved
—
6.3.5.1.9.1 Offset
Register Offset
HW_OCOTP_LOCK1 410h
6.3.5.1.9.2 Function
Shadowed memory mapped access to OTP Bank 0, word 1.
6.3.5.1.9.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R GP9
Reserved
W
Reset 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
6.3.5.1.9.4 Fields
Field Function
31-18 Reserved
—
17-16 Status of shadow register and OTP write lock for gp9 region.
GP9 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
15-14 Status of shadow register and OTP write lock for gp8 region.
GP8 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
13-12 Status of shadow register and OTP write lock for gp7 region.
GP7 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
Field Function
11-10 Status of shadow register and OTP write lock for gp6 region.
GP6 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
9-6 Reserved
—
5-4 Status of shadow register and OTP write lock for gp8 region.
GP4 00 - Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded OCOTP
shadow register)
10 - OP (Override Protect, the controlled field can be read, sensed or burned, but can't be overridden in
the corresponded OCOTP shadow register)
01 - WP (Write Protect, the controlled field can be read, sensed or overridden in the corresponded
OCOTP shadow register, but can't be burned)
11 - OP + WP (The controlled field can be read or sensed only, but can't be burned or overridden in the
corresponded OCOTP shadow register)
3-0 Reserved
—
6.3.5.1.10.1 Offset
Register Offset
HW_OCOTP_GP4 460h
6.3.5.1.10.2 Function
Shadowed memory mapped access to OTP Bank 1, word 2.
6.3.5.1.10.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.10.4 Fields
Field Function
31-7 Reflects value of OTP Bank 1, word 2, bits [31:7].
BITS
6-0 Reserved
—
6.3.5.1.11.1 Offset
Register Offset
HW_OCOTP_BOOT_CF 470h
G0
6.3.5.1.11.2 Function
Shadowed memory mapped access to OTP Bank 1, word 3.
6.3.5.1.11.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.11.4 Fields
Field Function
31-0 Reflects value of OTP Bank 1, word 3. These bits become read-only after the
HW_OCOTP_LOCK_BOOT_CFG[1] bit is set.
BITS
6.3.5.1.12.1 Offset
Register Offset
HW_OCOTP_BOOT_CF 480h
G1
6.3.5.1.12.2 Function
Shadowed memory mapped access to OTP bank 2, word 0.
6.3.5.1.12.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.12.4 Fields
Field Function
31-0 Reflects value of OTP bank 2, word 0. These bits become read-only after the
HW_OCOTP_LOCK_BOOT_CFG[1] bit is set.
BITS
6.3.5.1.13.1 Offset
Register Offset
HW_OCOTP_BOOT_CF 490h
G2
6.3.5.1.13.2 Function
Shadowed memory mapped access to OTP bank 2, word 1.
6.3.5.1.13.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.13.4 Fields
Field Function
31-0 Reflects value of OTP bank 2, word 1. These bits become read-only after the
HW_OCOTP_LOCK_BOOT_CFG[1] bit is set.
BITS
6.3.5.1.14.1 Offset
Register Offset
HW_OCOTP_BOOT_CF 4A0h
G3
6.3.5.1.14.2 Function
Shadowed memory mapped access to OTP bank 2, word 2.
6.3.5.1.14.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.14.4 Fields
Field Function
31-0 Reflects value of OTP bank 2, word 2. These bits become read-only after the
HW_OCOTP_LOCK_BOOT_CFG[1] bit is set.
BITS
6.3.5.1.15.1 Offset
Register Offset
HW_OCOTP_BOOT_CF 4B0h
G4
6.3.5.1.15.2 Function
Shadowed memory mapped access to OTP bank 2, word 3.
6.3.5.1.15.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.15.4 Fields
Field Function
31-0 Reflects value of OTP bank 2, word 3. These bits become read-only after the
HW_OCOTP_LOCK_BOOT_CFG[1] bit is set.
BITS
6.3.5.1.16.1 Offset
Register Offset
HW_OCOTP_USB_ID 620h
6.3.5.1.16.2 Function
Shadowed memory mapped access to OTP Bank 8, word 2.
6.3.5.1.16.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.16.4 Fields
Field Function
31-0 Reflects value of OTP Bank 8, word 2.
BITS
6.3.5.1.17.1 Offset
Register Offset
HW_OCOTP_MAC_ADD 640h
R0
6.3.5.1.17.2 Function
Shadowed memory mapped access to OTP Bank 9, word 0.
6.3.5.1.17.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.17.4 Fields
Field Function
31-0 Reflects value of OTP Bank 9, word 0.
BITS
6.3.5.1.18.1 Offset
Register Offset
HW_OCOTP_MAC_ADD 650h
R1
6.3.5.1.18.2 Function
Shadowed memory mapped access to OTP Bank 9, word 1.
6.3.5.1.18.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.18.4 Fields
Field Function
31-0 Reflects value of OTP Bank 9, word 1.
BITS
6.3.5.1.19.1 Offset
Register Offset
HW_OCOTP_MAC_ADD 660h
R2
6.3.5.1.19.2 Function
Shadowed memory mapped access to OTP Bank 9, word 2.
6.3.5.1.19.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.19.4 Fields
Field Function
31-0 Reflects value of OTP Bank 9, word 2.
BITS
6.3.5.1.20.1 Offset
Register Offset
HW_OCOTP_GP1_0 780h
6.3.5.1.20.2 Function
Shadowed memory mapped access to OTP Bank 14, word 0.
6.3.5.1.20.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.20.4 Fields
Field Function
31-0 Reflects value of OTP Bank 14, word 0.
BITS
6.3.5.1.21.1 Offset
Register Offset
HW_OCOTP_GP1_1 790h
6.3.5.1.21.2 Function
Shadowed memory mapped access to OTP Bank 14, word 1.
6.3.5.1.21.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.21.4 Fields
Field Function
31-0 Reflects value of OTP Bank 14, word 1.
BITS
6.3.5.1.22.1 Offset
Register Offset
HW_OCOTP_GP2_0 7A0h
6.3.5.1.22.2 Function
Shadowed memory mapped access to OTP Bank 14, word 2.
6.3.5.1.22.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.22.4 Fields
Field Function
31-0 Reflects value of OTP Bank 14, word 2.
BITS
6.3.5.1.23.1 Offset
Register Offset
HW_OCOTP_GP2_1 7B0h
6.3.5.1.23.2 Function
Shadowed memory mapped access to OTP Bank 14, word 3.
6.3.5.1.23.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.23.4 Fields
Field Function
31-0 Reflects value of OTP Bank 14, word 3.
BITS
6.3.5.1.24.1 Offset
Register Offset
HW_OCOTP_GP6_0 E40h
6.3.5.1.24.2 Function
Shadowed memory mapped access to OTP Bank 41, word 0.
6.3.5.1.24.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.24.4 Fields
Field Function
31-0 Reflects value of OTP Bank 41, word 0.
BITS
6.3.5.1.25.1 Offset
Register Offset
HW_OCOTP_GP6_1 E50h
6.3.5.1.25.2 Function
Shadowed memory mapped access to OTP Bank 41, word 1.
6.3.5.1.25.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.25.4 Fields
Field Function
31-0 Reflects value of OTP Bank 41, word 1.
BITS
6.3.5.1.26.1 Offset
Register Offset
HW_OCOTP_GP6_2 E60h
6.3.5.1.26.2 Function
Shadowed memory mapped access to OTP Bank 41, word 2.
6.3.5.1.26.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.26.4 Fields
Field Function
31-0 Reflects value of OTP Bank 41, word 2.
BITS
6.3.5.1.27.1 Offset
Register Offset
HW_OCOTP_GP6_3 E70h
6.3.5.1.27.2 Function
Shadowed memory mapped access to OTP Bank 41, word 3.
6.3.5.1.27.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.27.4 Fields
Field Function
31-0 Reflects value of OTP Bank 41, word 3.
BITS
6.3.5.1.28.1 Offset
Register Offset
HW_OCOTP_GP7_0 E80h
6.3.5.1.28.2 Function
Shadowed memory mapped access to OTP Bank 42, word 0.
6.3.5.1.28.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.28.4 Fields
Field Function
31-0 Reflects value of OTP Bank 42, word 0.
BITS
6.3.5.1.29.1 Offset
Register Offset
HW_OCOTP_GP7_1 E90h
6.3.5.1.29.2 Function
Shadowed memory mapped access to OTP Bank 42, word 1.
6.3.5.1.29.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.29.4 Fields
Field Function
31-0 Reflects value of OTP Bank 42, word 1.
BITS
6.3.5.1.30.1 Offset
Register Offset
HW_OCOTP_GP7_2 EA0h
6.3.5.1.30.2 Function
Shadowed memory mapped access to OTP Bank 42, word 2.
6.3.5.1.30.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.30.4 Fields
Field Function
31-0 Reflects value of OTP Bank 42, word 2.
BITS
6.3.5.1.31.1 Offset
Register Offset
HW_OCOTP_GP7_3 EB0h
6.3.5.1.31.2 Function
Shadowed memory mapped access to OTP Bank 42, word 3.
6.3.5.1.31.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.31.4 Fields
Field Function
31-0 Reflects value of OTP Bank 42, word 3.
BITS
6.3.5.1.32.1 Offset
Register Offset
HW_OCOTP_GP8_0 EC0h
6.3.5.1.32.2 Function
Shadowed memory mapped access to OTP Bank 43, word 0.
6.3.5.1.32.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.32.4 Fields
Field Function
31-0 Reflects value of OTP Bank 43, word 0.
BITS
6.3.5.1.33.1 Offset
Register Offset
HW_OCOTP_GP8_1 ED0h
6.3.5.1.33.2 Function
Shadowed memory mapped access to OTP Bank 43, word 1.
6.3.5.1.33.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.33.4 Fields
Field Function
31-0 Reflects value of OTP Bank 43, word 1.
BITS
6.3.5.1.34.1 Offset
Register Offset
HW_OCOTP_GP8_2 EE0h
6.3.5.1.34.2 Function
Shadowed memory mapped access to OTP Bank 43, word 2.
6.3.5.1.34.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.34.4 Fields
Field Function
31-0 Reflects value of OTP Bank 43, word 2.
BITS
6.3.5.1.35.1 Offset
Register Offset
HW_OCOTP_GP8_3 EF0h
6.3.5.1.35.2 Function
Shadowed memory mapped access to OTP Bank 43, word 3.
6.3.5.1.35.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.35.4 Fields
Field Function
31-0 Reflects value of OTP Bank 43, word 3.
BITS
6.3.5.1.36.1 Offset
Register Offset
HW_OCOTP_GP9_0 F00h
6.3.5.1.36.2 Function
Shadowed memory mapped access to OTP Bank 44, word 0.
6.3.5.1.36.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.36.4 Fields
Field Function
31-0 Reflects value of OTP Bank 44, word 0.
BITS
6.3.5.1.37.1 Offset
Register Offset
HW_OCOTP_GP9_1 F10h
6.3.5.1.37.2 Function
Shadowed memory mapped access to OTP Bank 44, word 1.
6.3.5.1.37.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.37.4 Fields
Field Function
31-0 Reflects value of OTP Bank 44, word 1.
BITS
6.3.5.1.38.1 Offset
Register Offset
HW_OCOTP_GP9_2 F20h
6.3.5.1.38.2 Function
Shadowed memory mapped access to OTP Bank 44, word 2.
6.3.5.1.38.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.38.4 Fields
Field Function
31-0 Reflects value of OTP Bank 44, word 2.
BITS
6.3.5.1.39.1 Offset
Register Offset
HW_OCOTP_GP9_3 F30h
6.3.5.1.39.2 Function
Shadowed memory mapped access to OTP Bank 44, word 3.
6.3.5.1.39.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
BITS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.3.5.1.39.4 Fields
Field Function
31-0 Reflects value of OTP Bank 44, word 3.
BITS
6.4.1 Overview
The Secure Non-Volatile Storage (SNVS) is a companion module to the CAAM module.
The SNVS non-security functionality is described in this document, but the SNVS
security functionality is described only in the Security Reference Manual.
32
HP
IP Bus Interface Periodic Interrupt
and Control
Time Alarm
Real-time Counter
HP-LP Interface
VCC
Chip Power Domain
Internal
LP-HP Bus
LP Control
pmic_en_b VCC
PMIC
Control LP Power Domain
ONOFF (btn)
LP
LP Power Supply
set_pwr_off_irq
Security Event
LP Power-On-Reset
VDD_SNVS_IN
Chip Power Fail
PMIC_ON_REQ
LP POR HP Power
Module Fail Detector
6.4.1.2 Features
The following table summarizes the features of SNVS:
Table 6-37. SNVS feature list
Feature Description Links for Further
Information
Real time counter • The RTC is driven by a dedicated clock, which is off when the SNVS_HP Real Time
(RTC) system power is down. Counter
• Programmable time alarm interrupt
General-purpose • The general-purpose register is available to software to store 128 Using the General-
register bits of data. Purpose Register
• The general-purpose register is zeroized when a security violation is
detected.
• If the SNVS_LP power input is connected to an uninterrupted power
supply (see SNVS power domains), the general-purpose register
value is retained even if the main chip is powered down.
Register access • Some registers/values can be written only once per boot cycle. privileged and non-
restrictions privileged registers
Wakeup from power off • Input signal from off chip requests SNVS_LP to power on the main LP Wake-Up Interrupt
SoC (Assuming that the SNVS_LP power input is connected to an Enable
uninterrupted power supply (see SNVS power domains).
• Hardware debounces the input signal using software-specified signal
bounce characteristics
domain is so that data can be retained and certain logic can remain functional even when
the main chip logic is powered down. But this is possible only if the LP domain remains
powered via an uninterrupted power supply when the main chip power domain is
powered off. Usually this uninterrupted power supply would be a battery, with possibly
some power management logic to power the LP section from main power (and perhaps
recharge the battery) when main power is on, and switch to battery power when the main
power is off. In versions of SNVS with an independent LP power domain the LP section
can be electrically isolated from the rest of the chip logic to ensure that its logic does not
get corrupted when the main chip is powered down. If the battery runs down or is
removed, an LP POR will occur when the LP section next powers up. Note that some
OEMs may choose to connect LP power to HP/main chip power and dispense with a
battery. In that case the SNVS will operate the same as an SNVS without an independent
LP power domain. No state will be retained in the LP section when the chip is powered
down, and an LP POR will occur whenever there is an HP POR.
privileged access restrictions. The counter can be synchronized to the SNVS_LP SRTC
by writing to the HP_TS bit of SNVS_HP Control Register. This is particularly useful if
the SNVS_LP is powered from an uninterrupted power source because the RTC can then
be set from a chip-internal time source.
aliased to the previous legacy address address. The data in the GPR will be retained
during system power-down mode as long as the SNVS_LP remains powered by an
uninterrupted power source.
6.4.2.3 Clocks
The SNVS has the following clock sources:
• System peripheral clock input. This clock is used by the SNVS's internal logic, for
example, the Security State Machine. This clock can be gated outside of the module
when the SNVS indicates that it is not in use.
• HP RTC clock. This clock is used by SNVS_HP real-time counter. This clock does
not need to be synchronous with other clocks.
6.4.2.4 Reset
The table below shows the different resets associated with this module.
Table 6-39. Reset summary
Reset Source Characteristics Internally resets
HP hard ipg_hard_async_re active-low, All SNVS_HP and SNVS_LP registers and flops.
set_b
asynchronous
LP Power On lp_por_b active-low, All SNVS_LP registers and flops.
Reset (POR)
asynchronous
LP software software active-high, All SNVS_LP registers and flops. The LP software reset can be
reset asserted if not disabled.
synchronous,
one cycle
The SNVS_HP Command Register contains the command, configuration, and control bits
for the SNVS block. This is a privileged write register.
6.4.5.1.2.1 Offset
Register Offset
HPCOMR 4h
6.4.5.1.2.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
NPSWA_EN
Reserved
Reserved
Reserved
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LP_SWR_DIS
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
LP_SWR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.2.3 Fields
Field Description
31 Non-Privileged Software Access Enable
NPSWA_EN When set, allows non-privileged software to access all SNVS registers, including those that are privileged
software read/write access only.
0 Only privileged software can access privileged registers
1 Any software can access privileged registers
30-20 Reserved
—
19 Reserved
—
18 Reserved
—
17 Reserved
—
16 Reserved
—
15-14 Reserved
—
13 Reserved
—
12-11 Reserved
—
Field Description
10 Reserved
—
9 Reserved
—
8 Reserved
—
7-6 Reserved
—
5 LP Software Reset Disable
LP_SWR_DIS When set, disables the LP software reset. Once set, this bit can only be reset by the system reset.
0 - LP software reset is enabled
1 - LP software reset is disabled
4 LP Software Reset.
LP_SWR When set to 1, the registers in the SNVS_LP section are reset.
0 - No Action
1 - Reset LP section
3 Reserved
—
2 Reserved
—
1 Reserved
—
0 Reserved
—
The SNVS_HP Control Register contains various control bits of the HP section of SNVS.
This is not a privileged write register.
6.4.5.1.3.1 Offset
Register Offset
HPCR 8h
6.4.5.1.3.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BTN_CONFIG
BTN_MASK
Reserved
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
HPCALB_VAL
HPCALB_EN
HPTA_EN
RTC_EN
Reserved
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.3.3 Fields
Field Description
31-28 Reserved
—
27 Button Interrupt Mask
BTN_MASK This bit is used to mask the button (BTN) interrupt request.
0: Interrupt disabled
1: Interrupt enabled
26-24 Button Configuration
BTN_CONFIG This field is used to configure which feature of the button (BTN) input signal constitutes "active".
000: Button signal is active high
001: Button signal is active low
010: Button signal is active on the falling edge
011: Button signal is active on the rising edge
100: Button signal is active on any edge
All other patterns are Reserved
23-17 Reserved
—
16 Reserved
—
15 Reserved
—
Field Description
14-10 HP Calibration Value
HPCALB_VAL Defines signed calibration value for the HP Real Time Counter. This field can be programmed only when
RTC Calibration is disabled (HPCALB_EN is not set). This is a 5-bit 2's complement value, hence the
allowable calibration values are in the range from -16 to +15 counts per 32768 ticks of the counter.
00000 - +0 counts per each 32768 ticks of the counter
00001 - +1 counts per each 32768 ticks of the counter
00010 - +2 counts per each 32768 ticks of the counter
01111 - +15 counts per each 32768 ticks of the counter
10000 - -16 counts per each 32768 ticks of the counter
10001 - -15 counts per each 32768 ticks of the counter
11110 - -2 counts per each 32768 ticks of the counter
11111 - -1 counts per each 32768 ticks of the counter
9 Reserved
—
8 HP Real Time Counter Calibration Enabled
HPCALB_EN Indicates that the time calibration mechanism is enabled.
0 - HP Timer calibration disabled
1 - HP Timer calibration enabled
7-2 Reserved
—
1 HP Time Alarm Enable
HPTA_EN When set, the time alarm interrupt is generated if the value in the HP Time Alarm Registers is equal to
the value of the HP Real Time Counter. This bit syncs with the 32KHz clock. It won't update with the bus
clock.
0 - HP Time Alarm Interrupt is disabled
1 - HP Time Alarm Interrupt is enabled
0 HP Real Time Counter Enable
RTC_EN This bit syncs with the 32KHz clock. It won't update with the bus clock.
0 - RTC is disabled
1 - RTC is enabled
The HP Status Register reflects the internal state of the SNVS. This is not a privileged
write register.
6.4.5.1.4.1 Offset
Register Offset
HPSR 14h
6.4.5.1.4.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reserved
Reserved
Reserved
Reserved
R
W
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LPDIS
HPTA
BTN
R
BI
Reserved
Reserved
Reserved
Reserved
Reserved
W1C
W1C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.4.3 Fields
Field Description
31 Reserved
—
30-28 Reserved
—
27 Reserved
—
26-25 Reserved
—
24-16 Reserved
—
15-12 Reserved
—
11-8 Reserved
—
7 Button Interrupt
Table continues on the next page...
Field Description
BI Signal ipi_snvs_btn_int_b was asserted.
6 Button
BTN Value of the BTN input. This is the external button used for PMIC control.
0: BTN not pressed
1: BTN pressed
5 Reserved
—
4 Low Power Disable
LPDIS If 1, the low power section has been disabled by means of an input signal to SNVS.
3-2 Reserved
—
1 Reserved
—
0 HP Time Alarm
HPTA Indicates that the HP Time Alarm has occurred since this bit was last cleared.
0 - No time alarm interrupt occurred.
1 - A time alarm interrupt occurred.
The SNVS_HP Real Time Counter MSB register contains the 15 most-significant bits of
the HP Real Time Counter. This is not a privileged write register.
6.4.5.1.5.1 Offset
Register Offset
HPRTCMR 24h
6.4.5.1.5.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
RTC
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.5.3 Fields
Field Description
31-15 Reserved
—
14-0 HP Real Time Counter
RTC The most-significant 15 bits of the RTC. This register can be programmed only when RTC is not active
(RTC_EN bit is not set).
The SNVS_HP Real Time Counter LSB register contains the 32 least-significant bits of
the HP real time counter. This is not a privileged write register.
6.4.5.1.6.1 Offset
Register Offset
HPRTCLR 28h
6.4.5.1.6.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
RTC
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
RTC
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.6.3 Fields
Field Description
31-0 HP Real Time Counter
RTC least-significant 32 bits. This register can be programmed only when RTC is not active (RTC_EN bit is not
set).
The SNVS_HP Time Alarm MSB register contains the most-significant bits of the
SNVS_HP Time Alarm value. This is not a privileged write register.
6.4.5.1.7.1 Offset
Register Offset
HPTAMR 2Ch
6.4.5.1.7.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
HPTA_MS
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.7.3 Fields
Field Description
31-15 Reserved
—
14-0 HP Time Alarm, ms
HPTA_MS HP Time Alarm, most-significant 15 bits.
This register can be programmed only when HP time alarm is disabled (HPTA_EN bit is not set).
The SNVS_HP Time Alarm LSB register contains the 32 least-significant bits of the
SNVS_HP Time Alarm value. This is not a privileged write register.
6.4.5.1.8.1 Offset
Register Offset
HPTALR 30h
6.4.5.1.8.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
HPTA_LS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
HPTA_LS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.8.3 Fields
Field Description
31-0 HP Time Alarm, ls
HPTA_LS HP Time Alarm, 32 least-significant bits.
This register can be programmed only when HP time alarm is disabled (HPTA_EN bit is not set).
The SNVS_LP Lock Register contains lock bits for the SNVS_LP registers. This is a
privileged write register.
6.4.5.1.9.1 Offset
Register Offset
LPLR 34h
6.4.5.1.9.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reserved
Reserved
Reserved
GPR_HL
Reserved
Reserved
Reserved
Reserved
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.9.3 Fields
Field Description
31-29 Reserved
—
28 Reserved
—
27 Reserved
—
26 Reserved
—
25 Reserved
—
24 Reserved
—
23-10 Reserved
—
9 Reserved
—
8 Reserved
—
7 Reserved
—
6 Reserved
—
5 General Purpose Register Hard Lock
Table continues on the next page...
Field Description
GPR_HL When set, prevents any writes to the GPR. Once set, this bit can only be reset by the LP POR.
0 - Write access is allowed.
1 - Write access is not allowed.
4 Reserved
—
3 Reserved
—
2 Reserved
—
1 Reserved
—
0 Reserved
—
The SNVS_LP Control Register contains various control bits of the LP section of SNVS.
This is a privileged write register.
6.4.5.1.10.1 Offset
Register Offset
LPCR 38h
6.4.5.1.10.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BTN_PRESS_TIME
PK_OVERRIDE
DEBOUNCE
ON_TIME
Reserved
Reserved
PK_EN
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LPWUI_EN
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
DP_EN
TOP
W
Reset 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
6.4.5.1.10.3 Fields
Field Description
31-25 Reserved
—
24 Reserved
—
23 PMIC On Request Override
PK_OVERRIDE The value written to PK_OVERRIDE will be asserted on output signal snvs_lp_pk_override. That signal is
used to override the IOMUX control for the PMIC I/O pad.
22 PMIC On Request Enable
PK_EN The value written to PK_EN will be asserted on output signal snvs_lp_pk_en. That signal is used to turn
off the pullup/pulldown circuitry in the PMIC I/O pad.
21-20 ON_TIME Config
ON_TIME The ON_TIME field is used to configure the period of time after BTN is asserted before pmic_en_b is
asserted to turn on the SoC power.
00: 500msec off->on transition time
01: 50msec off->on transition time
10: 100msec off->on transition time
11: 0msec off->on transition time
19-18 Debounce Time Config
DEBOUNCE This field configures the amount of debounce time for the BTN input signal.
00: 50msec debounce
01: 100msec debounce
Table continues on the next page...
Field Description
10: 500msec debounce
11: 0msec debounce
17-16 Button Press Time Out config
BTN_PRESS_TI This field configures the button press time out values for the PMIC Logic.
ME
00 : 5 secs
01 : 10 secs
10 : 15 secs
11 : long press disabled (pmic_en_b will not be asserted regardlessof how long BTN is asserted)
15 Reserved
—
14-10 Reserved
—
9 Reserved
—
8 Reserved
—
7 Reserved
—
6 Turn off System Power
TOP Asserting this bit causes a signal to be sent to the Power Management IC to turn off the system power.
This bit will clear once power is off. This bit is only valid when the Dumb PMIC is enabled.
0 - Leave system power on.
1 - Turn off system power.
5 Dumb PMIC Enabled
DP_EN When set, software can control the system power. When cleared, the system requires a Smart PMIC to
automatically turn power off.
0 - Smart PMIC enabled.
1 - Dumb PMIC enabled.
4 Reserved
—
3 LP Wake-Up Interrupt Enable
LPWUI_EN This interrupt line should be connected to the external pin and is intended to inform the external chip
about an SNVS_LP event (MC rollover, SRTC rollover, or time alarm ). This wake-up signal can be
asserted only when the chip (HP section) is powered down, and the LP section is isolated.
0 LP wake-up interrupt is disabled.
1 LP wake-up interrupt is enabled.
2 Reserved
—
1 Reserved
—
0 Reserved
Field Description
—
The SNVS_LP Status Register reflects the internal state and behavior of the SNVS_LP.
This is a privileged write register.
6.4.5.1.11.1 Offset
Register Offset
LPSR 4Ch
6.4.5.1.11.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
W1C SPOF
R
EO
Reserved
Reserved
Reserved
Reserved
Reserved
W1C
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
W1C Reserved
W1C Reserved
R
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
6.4.5.1.11.3 Fields
Field Description
31 Reserved
—
30 Reserved
Table continues on the next page...
Field Description
—
29-20 Reserved
—
19 Reserved
—
18 Set Power Off
SPOF The SPO bit is set when the power button is pressed longer than the configured debounce time. Writing
to the SPO bit will clear the set_pwr_off_irq interrupt.
0 - Set Power Off was not detected.
1 - Set Power Off was detected.
17 Emergency Off
EO This bit is set when a power off is requested.
0 - Emergency off was not detected.
1 - Emergency off was detected.
16 Reserved
—
15-11 Reserved
—
10 Reserved
—
9 Reserved
—
8-7 Reserved
—
6-4 Reserved
—
3 Reserved
—
2 Reserved
—
1-0 Reserved
—
6.4.5.1.12.1 Offset
Register Offset
LPGPR0_legacy_alias 68h
6.4.5.1.12.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GPR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
GPR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.12.3 Fields
Field Description
31-0 General Purpose Register
GPR When GPR_SL or GPR_HL bit is set, the register cannot be programmed.
6.4.5.1.13.1 Offset
Register Offset
LPGPR0 90h
LPGPR1 94h
LPGPR2 98h
LPGPR3 9Ch
6.4.5.1.13.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
GPR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
GPR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.4.5.1.13.3 Fields
Field Description
31-0 General Purpose Register
GPR When GPR_SL or GPR_HL bit is set, the register cannot be programmed.
6.4.5.1.14.1 Offset
Register Offset
HPVIDR1 BF8h
6.4.5.1.14.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R IP_ID
W
Reset 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R MAJOR_REV MINOR_REV
W
Reset 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
6.4.5.1.14.3 Fields
Field Description
31-16 Block ID
IP_ID SNVS block ID
15-8 Major Version Number
MAJOR_REV SNVS block major version number
7-0 Minor Version Number
MINOR_REV SNVS block minor version number
6.4.5.1.15.1 Offset
Register Offset
HPVIDR2 BFCh
6.4.5.1.15.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R IP_ERA
Reserved
W
Reset 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R ECO_REV
Reserved
W
Reset 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
6.4.5.1.15.3 Fields
Field Description
31-24 IP Era
IP_ERA 00h - Era 1 or 2
03h - Era 3
04h - Era 4
05h - Era 5
06h - Era 6
23-16 Reserved
—
15-8 ECO Revision
ECO_REV SNVS ECO Revision
The engineering change order revision number for this release of SNVS.
7-0 Reserved
—
6.5.1 Overview
The System Reset Controller (SRC) is responsible for the generation of all the system
reset signals and boot argument latching.
6.5.1.1 Features
The SRC includes the following features.
• Receives and handles the resets from all the reset sources
• Resets the appropriate domains based upon the resets sources and the nature of the
reset
• Latches the SRC_BOOT_MODE pins and common configuration signals from the
internal fuse
External
PMIC
(button) POR_B
SRC_POR_B
PMIC_STBY_REQ GPC
SNVS ipp_reset_b
wake-up
alarm
FSM irq
SRC
ONOFF
(No Connect)
ipp_user_reset_b
TEST_MODE
Reset
ON
alarm positive edge
emgergency off
generate irq
log emgergency off
SRC
COLD
WDOG_RST_B_DEB (wdog_rst_b) Arm Reset (arm_rst_b)
COLD
SJC S/W Reset (jtag_sw_rst) M7 Reset (m7c_rst_b, m7p_rst_b)
The reset types and modules they affect are shown in Table 6-42. As there is no chip
POR, the POR_B is used to reset the entire chip including test logic and JTAG modules.
NOTE
All resets are expected to be active low except jtag_sw_rst.
Table 6-42. SRC reset functionality
SoC Modules POR COLD
System modules (PLLs, fuses, etc) yes yes
Functional modules yes yes
Arm yes yes
Arm SoC yes yes
M7 Core yes yes
M7 Platform yes yes
Arm POR yes no
Arm debug yes no
SJC yes no
SRTC yes no
The reset priorities are POR (strongest) and COLD (weakest). If a stronger reset is
asserted during the sequence of a weaker reset, then the weaker sequence will be
overridden, and the stronger reset sequence will commence. There is no priority within a
reset type (POR, etc). If a reset is asserted during the reset sequence of the same type, the
reset sequence will be interrupted and restarted.
The following lists the functionality of each of these reset outputs:
• system_early_rst_b - Resets the system modules that need to start first as CCM,
OCOTP_CTRL, FUSEBOX, etc.
• system_rst_b - Resets functional modules
• arm_rst_b - Resets Arm module (on regular system reset)
• arm_por_rst_b - Resets Arm POR input
• arm_soc_rst_b - Reset for Arm SOC
• m7c_rst_b - Reset for M7 core
• m7p_rst_b - Reset for M7 platform
• arm_dbg_rst_b - Reset debug logic of Arm
• test_logic_rst_b - Reset test logic (IOMUXC, DAP)
• sjc_por_rst_b - Reset to SJC
• srtc_rst_b - Resets SRTC
NOTE
It is assumed that each reset source will deassert after its
assertion, either due to reset generated to the system from SRC,
or by negation of the reset source (if it came from an external
source to the chip). In the latter case, the reset source is
assumed to be held for at least 2 XTALI clocks so it can be
sampled by SRC.
The sjc_por_rst_b signal is deasserted together with SRC_POR_B signal. The output is
also deasserted after the stretching of SRC_POR_B has deasserted.
After the above resets deassert, system_early_rst_b reset is deasserted after 2 XTALI
clocks. The system_early_rst_b is used for the CCM and PLL-IPs to start generating PLL
clock ouputs and the system root clocks.
When the system root clocks are ready, the CCM will assert system_clk_ready signal.
This signal is generated during the start sequence in the CCM and it involves the
preparation of the PLLs to generate clock roots for functional operation.
SRC then enables OCOTP_CTRL and fusebox clocks, so that fuses can be loaded to
OCOTP_CTRL.
• SRC will prepare the boot information
• After 8 ipg cycles, resets to all modules will be de-asserted
• After 8 ipg cycles, system clocks will be enabled (en_system_clk).
BOOT_MODE1
BOOT_MODE0
BOOT_MODE0
BOOT_MODE1
GPIO_BT_SEL_FUSE
BOOT_MODE0
BOOT_MODE1
BOOT_CFG[19:16]
BOOT_CFG[15:8]
0
BOOT_CFG[7:0]
SRC_SBMR1
Register
chip
fuses BOOT_CFG[19:16]
e-fuse signals
BOOT_CFG[15:8] 1
BOOT_CFG[7:0]
6.5.4 Initialization
The 4ms and 1ms delays are derived from counting the 32 kHz RTC clock cycles; the
accuracy depends on the accuracy of the RTC.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
R
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MASK_TEMPSENSE_
Reserved Reserved
RESET
W
Reset 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
A53_SOC_DBG_
A53_L2RESET
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
RESET
LOCK
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A53_DBG_RESET3
A53_DBG_RESET2
A53_DBG_RESET1
A53_DBG_RESET0
A53_ETM_RESET3
A53_ETM_RESET2
A53_ETM_RESET1
A53_ETM_RESET0
A53_CORE_POR_
A53_CORE_POR_
A53_CORE_POR_
A53_CORE_POR_
R
A53_CORE_
A53_CORE_
A53_CORE_
A53_CORE_
RESET3
RESET2
RESET1
RESET0
RESET3
RESET2
RESET1
RESET0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: During the time the WDOG event is masked using SRC logic, it is likely that the WDOG Reset
Status Register (WRSR) bit 1 (which indicates a WDOG timeout event) will get asserted.
software / OS developer must prepare for this case. Re-enabling the WDOG is possible, by un-
masking it in SRC, though it must be preceded by servicing the WDOG. However, for the case
that the event has been asserted, the status bit (WRSR bit-1) will remain asserted, regardless of
servicing the WDOG module.
(Hardware reset is the only way to cause the de-assertion of that bit). Any other code will be coded to
1010 i.e. wdog1_rst_b is not masked
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A53_CORE0_ENABLE
R
A53_CORE3_ENABLE
A53_CORE2_ENABLE
A53_CORE1_ENABLE
Reserved A53_RST_SLOW
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WDOG3_RST_OPTION_
SW_M7C_NON_SCLR_
WDOG3_RST_OPTION
SW_M7C_RST
ENABLE_M7
Reserved
RST
M7
Reserved MASK_WDOG3_RST
Reset 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
NOTE: During the time the WDOG3 event is masked using SRC logic, it is likely that the WDOG3 Reset
Status Register (WRSR) bit 1 (which indicates a WDOG3 timeout event) will get asserted.
Software / OS developer must prepare for this case. Re-enabling the WDOG3 is possible, by un-
masking it in SRC, though it must be preceded by servicing the WDOG3. However, for the case
that the event has been asserted, the status bit (WRSR bit-1) will remain asserted, regardless of
servicing the WDOG3 module.
(Hardware reset is the only way to cause the de-assertion of that bit). Any other code will be coded to
1010 i.e. wdog3_rst_b is not masked
NOTE: This is a self clearing bit. Once it is set to 1, the reset process will begin, and once it finishes, this
bit will be self cleared. Software can determine that the reset has finished once this bit is cleared.
Software can also configure SRC to generate interrupt once the software has finished. Please
refer to SRC_SISR register for details.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SUPERMIX_
R
Reserved RESET
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUDIOMIX_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
The USB PHY1 Reset Control Register (SRC_IP_RCR2), contains bits that control the
USB PHY1 reset generation.
Address: 3039_0000h base + 20h offset = 3039_0020h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
USB1_PHY_RES
Reserved
ET
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
The USB PHY2 Reset Control Register (SRC_IP_RCR2), contains bits that control the
USB PHY2 reset generation.
Address: 3039_0000h base + 24h offset = 3039_0024h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
USB2_PHY_RES
R
Reserved
ET
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MLMIX_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PCIE_CTRL_APP_XFER_
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
PENDING
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PCIE_PHY_POWER_ON_
PCIE_CTRL_APPS_CLK_
PCIE_CTRL_APPS_EXIT
PCIE_CTRL_APPS_PME
PCIE_CTRL_APPS_RST
PCIE_CTRL_APPS_EN
PCIE_CTRL_CFG_L1_
PCIE_CTRL_SYS_INT
PCIE_CTRL_APPS_
PCIE_CTRL_APPS_
PCIE_CTRL_APPS_
PCIEPHY_BTNRST
PCIE_CTRL_APP_
PCIEPHY_PERST
R
UNLOCK_MSG
TURNOFF
Reserved
Reserved
READY
ENTER
RESET
REQ
AUX
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HDMI_PHY_APB_
R
RESET
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MEDIAMIX_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU2D_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU3D_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPU_RESET
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPU_RESET
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPU_G1_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPU_G2_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPU_VPUVC8KE_
R
RESET
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NOC_RESET
R
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
Table continues on the next page...
The Boot Mode register (SBMR) contains bits that reflect the status of Boot Mode Pins
of the chip. The reset value is configuration dependent (depending on boot/fuses/IO
pads).
Address: 3039_0000h base + 58h offset = 3039_0058h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R BOOT_CFG
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ipp_user_reset_b
wdog2_rst_b
wdog3_rst_b
wdog1_rst_b
csu_reset_b
ipp_reset_b
jtag_sw_rst
jtag_rst_b
R 0 0
tempsense_rst_b
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DISPLAY_PASSED_RESET
USBPHY2_PASSED_RESE
USBPHY1_PASSED_RESE
GPU_PASSED_RESET
PCIE1_PHY_PASSED_
M7C_PASSED_RESET
VPU_PASSED_RESET
M7P_PASSED_RESET
RESET
R
T
T
Reserved
Reserved
Reserved
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MASK_USBPHY2_PASSE
MASK_USBPHY1_PASSE
MASK_M7C_PASSED_R
MASK_M7P_PASSED_R
MASK_GPU_PASSED_
MASK_VPU_PASSED_
MASK_PCIE_PHY_
MASK_DISPLAY_
PASSED_RESET
PASSED_RESET
R
D_RESET
D_RESET
Reserved
Reserved
RESET
RESET
ESET
ESET
Reserved Reserved
Reset 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
The Boot Mode register (SBMR), contains bits that reflect the status of Boot Mode Pins
of the chip. The default values for those bits depends on the values of pins/fuses during
reset sequence.
Address: 3039_0000h base + 70h offset = 3039_0070h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0 IPP_BOOT_MODE 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SEC_CONFIG[1:0]
BT_FUSE_SEL
FORCE_COLD_
R 0 0
BOOT
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C0_START_ADDRH
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C0_START_ADDRL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C1_START_ADDRH
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C1_START_ADDRL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C2_START_ADDRH
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C2_START_ADDRL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C3_START_ADDRH
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved C3_START_ADDRL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DDRC1_SYS_RST
DDRC1_CORE_
DDRC1_PRST
DDRC1_PHY_
DDRC1_PHY_
DDRC1_PHY_
R
PWROKIN
RESET
WRST
RST
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
NOTE: This reset can only be released when DDR Controller clock inputs are active and stable for 30
cycles
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HDMIPHY_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MIPIPHY1_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MIPIPHY2_
RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HSIO_RESET
Reserved
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R DOMAIN3
DOMAIN2
DOMAIN1
DOMAIN0
DOM_EN
LOCK
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MEDIAISPDWP_
R
RESET
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE: [31:30] and [27:24] areas are not controlled by this bit. [31:30] and [27:24] area can be modified
by any masters from any domains when Lock bit is not set.
0 Disables domain control. All of this register’s bits except [31:30] and [27:24] can be modified by any
masters
1 Enables domain control. All of this register’s bits except [31:30] and [27:24] can only be modified by
the masters from the domains specified in [27:24] area.
30
LOCK Domain control bits lock
6.6.1 Overview
The Watchdog Timer (WDOG) protects against system failures by providing a method by
which to escape from unexpected events or programming errors.
Once the WDOG is activated, it must be serviced by the software on a periodic basis. If
servicing does not take place, the timer times out. Upon timeout, the WDOG asserts the
internal system reset signal, WDOG_RESET_B_DEB to the System Reset Controller
(SRC).
There is also a provision for WDOG(ipp_wdog) signal assertion by timeout counter
expiration. There is an option of programmable interrupt generation before the counter
actually times out. The time at which the interrupt needs to be generated prior to counter
timeout is programmable. There is a power down counter which is enabled out of any
reset (POR, Warm/Cold). This counter has a fixed timeout period of 16 seconds, upon
which it asserts the WDOG(ipp_wdog) signal.
Flow diagrams for the timeout counter, power down counter and interrupt operations are
are shown in Flow Diagrams.
LOW POWER
WAIT Mode
LOW POWER
STOP/ DOZE Low Power
Mode Control
Time-Out Counter
DEBUG Mode
Low Frequency
Reference Clock
TIMEOUT
Low Frequency
WDOG-1 Generation WDOG-1
Reference Clock Power Down Counter
Logic
6.6.1.2 Features
The WDOG features are listed below:
• Configurable timeout counter with timeout periods from 0.5 to 128 seconds which,
after timeout expiration, result in the assertion of WDOG_RESET_B_DEB reset
signal.
• Time resolution of 0.5 seconds
• Configurable timeout counter that can be programmed to run or stop during low-
power modes
• Configurable timeout counter that can be programmed to run or stop during DEBUG
mode
• Programmable interrupt generation prior to timeout
• The duration between interrupt and timeout events can be programmed from 0 to
127.5 seconds in steps of 0.5 seconds.
• Power down counter with fixed timeout period of 16 seconds, which if not disabled
after reset will assert WDOG_B (ipp_wdog) signal low
• Power down counter will be enabled out of any reset (POR, Warm / Cold reset) by
default.
The user can determine the timeout period by writing to the WDOG timeout field
(WT[7:0]) in the Watchdog Control Register (WCR). The WDOG must be enabled by
setting the WDE bit of Watchdog Control Register (WCR) for the timeout counter to start
running. After the WDOG is enabled, the counter is activated, loads the timeout value
and begins to count down from this programmed value. The timer will time out when the
counter reaches zero and the WDOG outputs a system reset signal,
WDOG_RESET_B_DEB and asserts WDOG_B (ipp_wdog_b) (WDT bit should be set
in Watchdog Control Register (WCR)).
However, the timeout condition can be prevented by reloading the counter with the new
timeout value (WT[7:0] of WDOG_WCR) if a service routine (see Servicing WDOG to
reload the counter) is performed before the counter reaches zero. If any system errors
occur which prevent the software from servicing the Watchdog Service Register (WSR),
the timeout condition occurs. By performing the service routine, the WDOG reloads its
counter to the timeout value indicated by bits WT[7:0] of the Watchdog Control Register
(WCR) and it restarts the countdown.
A system reset will reset the counter and place it in the idle state at any time during the
countdown. The counter flow diagram is shown in Flow Diagrams.
NOTE
The timeout value is reloaded to the counter either at the time
WDOG is enabled or after the service routine has been
performed.
The duration between interrupt event and timeout event can be controlled by writing to
the WICT field of Watchdog Interrupt Control Register (WICR). It can vary between 0
and 127.5 seconds. If the WDOG is serviced (Servicing WDOG to reload the counter)
before the interrupt generation, the counter will be reloaded with the timeout value
WT[7:0] of Watchdog Control Register (WCR) and the interrupt will not be triggered.
6.6.2.7 Operations
Figure 6-34 shows the scenarios under which WDOG_B(ipp_wdog_b) gets asserted.
Low frequency
reference clock
Time-out
Counter 01 00
wdog_rst
System reset
WDOG-1
Low frequency
reference clock
Time-out
Counter 01 00
wdog_rst
System reset
Power on reset
WDOG-1
6.6.2.8 Clocks
This section describes clocks and special clocking requirements of the block.
The WDOG uses the low frequency reference clock for its counter and control
operations. The peripheral bus clock is used for register read/write operations.
The following table describes the clock sources for WDOG. Please see for clock setting,
configuration and gating information.
Table 6-43. WDOG Clocks
Clock name Clock Root Description
ipg_clk ipg_clk_root IP Global functional clock. All functionality inside the WDOG module is
synchronized to this clock.
ipg_clk_s ipg_clk_root IP slave bus clock. This clock is synchronized to ipg_clk and is only used
for register read/write operations.
ipg_clk_32k ckil_sync_clk_root Low frequency (32.768 kHz) clock that continues to run in low-power
mode. It is assumed that the Clock Controller will provide this clock signal
synchronized to ipg_clk in the normal mode, and switch to a non-
synchronized signal in low-power mode when the ipg_clk is off.
6.6.2.9 Reset
The block is reset by a system reset and the WDOG counter will be disabled. The power-
down counter is enabled and starts counting.
6.6.2.10 Interrupt
The WDOG has the feature of Interrupt generation before timeout.
The interrupt will be generated only if the WIE bit in Watchdog Interrupt Control
Register (WICR) is set. The exact time at which the interrupt should occur (prior to
timeout) depends on the value of WICT field of Watchdog Interrupt Control Register
(WICR). For example, if the WICT field has a value 0x04, then the interrupt will be
generated two seconds prior to timeout. Once the interrupt is triggered the WTIS bit in
Watchdog Interrupt Control Register (WICR) will be set. The software needs to clear this
bit to deassert the interrupt. If the WDOG is serviced before the interrupt generation then
the counter will be reloaded with the timeout value WT[7:0] of Watchdog Control
Register (WCR) and interrupt would not be triggered.
Reset no
(Cold/Warm)
negated?
yes
Counter in
IDLE State
start counter
Decrement counter
yes
PDE bit
cleared?
no
Is no
count=0?
yes
Assert WDOG
Reset no
Negated?
yes
Enable interrupt
& WDOG timer
Decrement counter
yes Interrupt
count=0?
no
Is
WDOG yes
serviced? Reload counter
no
yes Interrupt
Assert interrupt Count=0?
6.6.4 Initialization
The following sequence should be performed for WDOG initialization.
• PDE bit of Watchdog Miscellaneous Control Register (WMCR) should be cleared to
disable the power down counter.
• WT field of Watchdog Control Register (WCR) should be programmed for sufficient
timeout value.
• WDOG should be enabled by setting WDE bit of Watchdog Control Register (WCR)
so that the timeout counter loads the WT field value of Watchdog Control Register
(WCR) and starts counting.
The WDOG has user-accessible, 16-bit registers used to configure, operate, and monitor
the state of the Watchdog Timer. Byte operations can be performed on these registers. If
a 32-bit access is performed,the WDOG will not generate a peripheral bus error but will
behave normally, like a 16-Bit access, making read/write possible. A 32-Bit access
should be avoided, as the system may go to an unknown state.
• WDZST, WDBG and WDW are write-once only bits. Once the software does a write
access to these bits, they will be locked and cannot be reprogrammed until the next
system reset assertion.
• WDE is a write one once only bit. Once software performs a write "1" operation to
this bit it cannot be reset/cleared until the next system reset.
• WDT is also a write one once only bit. Once software performs a write "1" operation
to this bit it cannot be reset/cleared until the next POR. This bit does not get reset/
cleared due to any system reset.
6.6.5.1.2.1 Offset
Register Offset
WCR 0h
6.6.5.1.2.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WDZST
WDBG
WDW
WDT
WDA
WDE
SRE
SRS
WT
Reset 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0
6.6.5.1.2.3 Fields
Field Description
15-8 WT
WT Watchdog Time-out Field. This 8-bit field contains the time-out value that is loaded into the Watchdog
counter after the service routine has been performed or after the Watchdog is enabled. After reset,
WT[7:0] must have a value written to it before enabling the Watchdog otherwise count value of zero
which is 0.5 seconds is loaded into the counter.
NOTE: The time-out value can be written at any point of time but it is loaded to the counter at the time
when WDOG is enabled or after the service routine has been performed. For more information
see Timeout event .
00000000 - - 0.5 Seconds (Default).
00000001 - - 1.0 Seconds.
Table continues on the next page...
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
938 NXP Semiconductors
Chapter 6 SNVS, Reset, Fuse, and Boot
Field Description
00000010 - - 1.5 Seconds.
00000011 - - 2.0 Seconds.
11111111 - - 128 Seconds.
7 WDW
WDW Watchdog Disable for Wait. This bit determines the operation of WDOG during Low Power WAIT mode.
This is a write once only bit.
0 - Continue WDOG timer operation (Default).
1 - Suspend WDOG timer operation.
6 Software Reset Extension. Required to be set to 1 when used in conjunction with the Software Reset
Signal (SRS).
SRE
0 - Reserved
1 - This bit must be set to 1.
5 WDA
WDA WDOG_B assertion. Controls the software assertion of the WDOG_B signal.
0 - Assert WDOG_B output.
1 - No effect on system (Default).
4 SRS
SRS Software Reset Signal. Controls the software assertion of the WDOG-generated reset signal
WDOG_RESET_B_DEB . This bit automatically resets to "1" after it has been asserted to "0".
NOTE: This bit does not generate the software reset to the block.
0 - Assert system reset signal.
1 - No effect on the system (Default).
3 WDT
WDT WDOG_B Time-out assertion. Determines if the WDOG_B gets asserted upon a Watchdog Time-out
Event. This is a write-one once only bit.
NOTE: There is no effect on WDOG_RESET_B_DEB (WDOG Reset) upon writing on this bit. WDOG_B
gets asserted along with WDOG_RESET_B_DEB if this bit is set.
0 - No effect on WDOG_B (Default).
1 - Assert WDOG_B upon a Watchdog Time-out event.
2 WDE
WDE Watchdog Enable. Enables or disables the WDOG block. This is a write one once only bit. It is not
possible to clear this bit by a software write, once the bit is set.
NOTE: This bit can be set/reset in debug mode (exception).
0 - Disable the Watchdog (Default).
1 - Enable the Watchdog.
1 WDBG
WDBG Watchdog DEBUG Enable. Determines the operation of the WDOG during DEBUG mode. This bit is write
once only.
0 - Continue WDOG timer operation (Default).
1 - Suspend the watchdog timer.
0 WDZST
Field Description
WDZST Watchdog Low Power. Determines the operation of the WDOG during low-power modes. This bit is write
once-only.
NOTE: The WDOG can continue/suspend the timer operation in the low-power modes (STOP and
DOZE mode).
0 - Continue timer operation (Default).
1 - Suspend the watchdog timer.
When enabled, the WDOG requires that a service sequence be written to the Watchdog
Service Register (WSR) to prevent the timeout condition.
NOTE
Executing the service sequence will reload the WDOG timeout
counter.
6.6.5.1.3.1 Offset
Register Offset
WSR 2h
6.6.5.1.3.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
WSR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.6.5.1.3.3 Fields
Field Description
15-0 WSR
WSR Watchdog Service Register. This 16-bit field contains the Watchdog service sequence. Both writes must
occur in the order listed prior to the time-out, but any number of instructions can be executed between the
two writes. The service sequence must be performed as follows:
0101010101010101 - Write to the Watchdog Service Register (WDOG_WSR).
1010101010101010 - Write to the Watchdog Service Register (WDOG_WSR).
The WRSR is a read-only register that records the source of the output reset assertion. It
is not cleared by a hard reset. Therefore, only one bit in the WRSR will always be
asserted high. The register will always indicate the source of the last reset generated due
to WDOG. Read access to this register is with one wait state. Any write performed on
this register will generate a Peripheral Bus Error .
A reset can be generated by the following sources, as listed in priority from highest to
lowest:
• Watchdog Time-out
• Software Reset
6.6.5.1.4.1 Offset
Register Offset
WRSR 4h
6.6.5.1.4.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SFTW
TOUT
POR
R
0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6.6.5.1.4.3 Fields
Field Description
15-5 Reserved.
—
4 POR
POR Power On Reset. Indicates whether the reset is the result of a power on reset.
0 - Reset is not the result of a power on reset.
1 - Reset is the result of a power on reset.
Field Description
3-2 Reserved.
—
1 TOUT
TOUT Timeout. Indicates whether the reset is the result of a WDOG timeout.
0 - Reset is not the result of a WDOG timeout.
1 - Reset is the result of a WDOG timeout.
0 SFTW
SFTW Software Reset. Indicates whether the reset is the result of a WDOG software reset by asserting SRS bit
0 - Reset is not the result of a software reset.
1 - Reset is the result of a software reset.
6.6.5.1.5.1 Offset
Register Offset
WICR 6h
6.6.5.1.5.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
W1C WTIS
R
0
WICT
WIE
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
6.6.5.1.5.3 Fields
Field Description
15 WIE
WIE Watchdog Timer Interrupt enable bit. Reset value is 0.
Table continues on the next page...
Field Description
NOTE: This bit is a write once only bit. Once the software does a write access to this bit, it will get
locked and cannot be reprogrammed until the next system reset assertion
0 - Disable Interrupt (Default).
1 - Enable Interrupt.
14 WTIS
WTIS Watchdog TImer Interrupt Status bit will reflect the timer interrupt status, whether interrupt has occurred
or not. Once the interrupt has been triggered software must clear this bit by writing 1 to it.
0 - No interrupt has occurred (Default).
1 - Interrupt has occurred
13-8 Reserved.
—
7-0 WICT
WICT Watchdog Interrupt Count Time-out (WICT) field determines, how long before the counter time-out must
the interrupt occur. The reset value is 0x04 implies interrupt will occur 2 seconds before time-out. The
maximum value that can be programmed to WICT field is 127.5 seconds with a resolution of 0.5 seconds.
NOTE: This field is write once only. Once the software does a write access to this field, it will get locked
and cannot be reprogrammed until the next system reset assertion.
00000000 - WICT[7:0] = Time duration between interrupt and time-out is 0 seconds.
00000001 - WICT[7:0] = Time duration between interrupt and time-out is 0.5 seconds.
00000100 - WICT[7:0] = Time duration between interrupt and time-out is 2 seconds (Default).
11111111 - WICT[7:0] = Time duration between interrupt and time-out is 127.5 seconds.
6.6.5.1.6.1 Offset
Register Offset
WMCR 8h
6.6.5.1.6.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0
PDE
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
6.6.5.1.6.3 Fields
Field Description
15-1 Reserved.
—
0 PDE
PDE Power Down Enable bit. Reset value of this bit is 1, which means the power down counter inside the
WDOG is enabled after reset. The software must write 0 to this bit to disable the counter within 16
seconds of reset de-assertion. Once disabled this counter cannot be enabled again. See Power-down
counter event for operation of this counter.
NOTE: This bit is write-one once only bit. Once software sets this bit it cannot be reset until the next
system reset.
0 - Power Down Counter of WDOG is disabled.
1 - Power Down Counter of WDOG is enabled (Default).
7.1.1 Overview
This chapter provides the interrupt assignments of the Arm domain in A53 Interrupts,
CM7 Interrupts, and the DMA events in SDMA event mapping
NOTE
JPEG is not supported.
All the 3 channels of the IRQ_STEER module are mapped to the Audio DSP (HiFi4).
The input and output IRQ mapping is shown in the table below.
Table 7-4. IRQ_STEER Mapping
Input IRQ Channel # Output IRQ Audio DSP IRQ
IRQ_IN[31:0] CH0 IRQ[0] HIFI_IRQ[19]
The IRQ_STEER module for the HDMI subsystem has 1 channel, while the IRQ_STEER
module for the Audio DSP has 3 channels. Please note this difference when referring to
the registers in the IRQ_STEER chapter.
7.2.1 Overview
The Smart Direct Memory Access (SDMA) controller offers highly-competitive DMA
features combined with software-based virtual-DMA flexibility. It enables data transfers
between peripheral I/O devices and internal/external memories.
The SDMA controller helps maximize system performance by off-loading the Arm core
in dynamic data routing.
AP Peripherals AP Memory
32 32
Peripheral Burst
DMA DMA
32 32
data instructions
32 16
System Bus
32 32 32 32
SDMA
SPBA RAM ROM
REGISTERS
32
External to SDMA
Per #1 Per #... Per #14
The SDMA core executes short routines that perform DMA transfers; these routines are
called scripts. The SDMA core interfaces to its own memory via the SDMA system bus.
The SDMA system bus supports a 32-bit data path and a 16-bit address bus. The system
bus datapath is used for both 16-bit instruction (program) memory access and 32-bit data
access. DMA units interface to the core via the Functional Unit Bus and use dedicated
registers to perform DMA transfers.
The SDMA memory contains a ROM and a RAM. The ROM contains startup scripts (for
example, boot code) and other common utilities, which are referenced by the scripts that
reside in the RAM. The internal RAM is divided into a context area and a script area
(more details about this mapping are available in Instruction Memory Map and Data
Memory Map).
Every transfer channel requires one context area to keep the contents of all the core and
unit registers while inactive. Channel scripts are downloaded into the internal RAM by
the SDMA using a dedicated channel that is started during the boot sequence. Downloads
are invoked using commands and pointers provided by the Arm platform. Every channel
contains a corresponding channel script located in RAM and/or ROM that can be
reconfigured independently as-needed. Channel scripts can be stored in an external
memory and downloaded when needed. The SDMA can be configured with any mixture
of scripts to enable an endless combination of supported services.
The scheduler monitors and detects DMA requests, mapping them to channels, and
mapping individual channels to a pre-configured priority. At any given point, the
scheduler presents the highest priority channel that requires service to the SDMA core. A
special SDMA core instruction is used to "conditionally yield" the current channel being
executed to an eligible channel that requires service. If (and only if) there is an eligible
channel pending, will the current channel execution be preempted.
There are two yield instructions that differently determine the eligible channels: In the
first version, eligible channels are pending channels with a strictly higher priority than the
current channel priority. In the second version (yieldge), eligible channels are pending
channels with a priority that is greater or equal to the current channel priority. The
scheduler detects devices that need service through its 48 DMA request inputs. After a
request is detected, the scheduler determines the channel(s) that is (are) triggered by this
request and marks it (them) as pending in the "Channel Pending (EP)" register. The
priorities of all the pending channels are continuously evaluated in order to update the
highest pending priority. The channel pending flag is cleared by the channel script when
the transfer has completed.
The Arm platform control block contains the control registers used to configure the 32
individual channels. There are 48 Channel Enable registers, and every register maps one
DMA request to any desired combination of channels. The 32 Priority registers are used
to assign a programmable 1-of-7 level priority to every possible channel. This block also
contains all other control registers that the Arm platform can access.
The 48 DMA requests that are connected to the scheduler come from a variety of sources.
The "receive register full" and "transmit register empty" signals found in the UART and
USB ports are typical examples of DMA requests that can be connected to the SDMA.
These requests can be used to trigger a specific SDMA channel, or several channels.
There is an OnCE compatible debug port for product development. The OnCE includes
support for setting breakpoints, single-step and trace, and register dump capability. In
addition, all memory locations are accessible from the debug port.
7.2.1.2 Features
The following are the SDMA features:
• Multi-channel DMA supporting up to 32 time-division multiplexed DMA channels
• Hardware or software driven triggers for each channel
• 48 hardware driven triggers that can be mapped to any channel.
• Memory accesses including linear addressing, FIFO addressing and 2D addressing
• Fast context-switching with two-level, priority-based preemptive multi-tasking
• 16-bit instruction-set micro-RISC engine (the SDMA core)
• Two DMA units with some or all the following features:
• Auto-flush and prefetch capability
• Flexible address management (increment, decrement, and no address changes on
source and destination address)
• Misaligned data-transfer support
• Uni-directional and bi-directional flows (copy mode)
• Up to eight-word buffers for configurable burst transfers
• Support of byte-swapping
• An available API and library of scripts
• Little-Endian and Big-Endian modes
• Hardware handshakes for low-power entry sequence
• Security support to lock contents of the SDMA script RAM.
• 4-Kbyte ROM containing startup scripts (for example, boot code) and other common
utilities that can be referenced by RAM-located scripts
• 8-Kbyte RAM area is divided into a processor context area and a code space area
used to store channel scripts that are downloaded from the system memory
• Debug support, including a OnCE port, real-time monitors, and embedded cross-
trigger events
• Supported clock frequencies in process:
• Configurable clock options for the SDMA core and the Arm platform DMA
units
• 1:2 ratio with maximum of SDMA core running at Arm platform Peripheral
Bus speed and DMA running at max DMA frequency.
• 1:1 ratio when both SDMA core and Arm platform DMA clocks are set to
the Arm platform Peripheral Bus speed.
• Peripheral bus interface for configuration register programming by the Arm platform
• The SDMA RISC engine (arithmetic and logic operations), which is referred to as the
"SDMA core."
• An internal peripheral bus connected to the Shared Peripherals Bus Interface (SPBA)
that enables access to up to 14 shared peripherals. SDMA supports 32-bit accesses to
word peripherals and 16-bit accesses to half-word peripherals.
• The peripheral DMA unit that is hooked-up to the Arm platform Crossbar Switch to
service Arm peripherals
• The burst DMA unit is able to perform burst accesses to the external memory
• All the DMA units are 32-bit AHB masters. They are connected to different buses,
thus allowing concurrent accesses.
EMI
AIPS
Platform
Xbar
AP
Switch
StarCore
Platform
Per DMA Burst DMA BP DMA Xbar
Unit unit unit Switch
SDMA
OnCE
DMA Requests Scheduler µRISC RAM
core M2/M1
BP Peripheral Bus BP Control Regs
peripheral bus
AP BP
Peripheral SPBA Peripheral
Bus Bus
DECR
GREG0
32
32
GREG1
GREG2
ALU
GREG3
32
GREG4
32
32 GREG5
GREG6
8
SF DF T LM
GREG7
Flags
General Registers
Instruction Decoder
5
16
Instruction
AGU
32 8 32 16
PC
RPC
14 14
SPC
(instruction)
EPC
address
address
address
data
data
data
PCU
• The Program Control Unit (PCU) is described in Program Control Unit (PCU). It
handles the state of the core and generates the instruction fetch addresses.
Instructions are retrieved from the Instruction Bus (IBUS) and stored in the SDMA
core instruction register prior to their decoding. The PCU contains the following
registers:
• The Program Counter (PC) contains the address of the current instruction.
• The Return Program Counter (RPC) contains the address of the instruction that
follows a jump to the subroutine.
• The Start Program Counter (SPC) contains the address of the first instruction of
the current hardware loop.
• End Program Counter (EPC) contains the address of the last instruction of the
current hardware loop.
• The other core registers are the general purpose registers (GREGn) and the flags.
• The general purpose registers can be used to hold data and addresses. They can
be loaded with immediate values (for example, 8-bit data that are encoded in the
instruction), results of calculations that were performed with the ALU, 32-bit
data that comes from the memory or peripherals via the Data Memory Bus
(DMBUS), 32-bit data that comes from the DMAs via the Functional Units Bus
(FUBUS) or another general purpose register. Their content can be the operands
of the ALU, the data to send on either bus (DMBUS or FUBUS), or a pointer to
memory (DMBUS address).
• The general register 0 (GREG0) is also the hardware loop counter. In hardware
loops, it cannot be used for any other purpose. This register uses a dedicated
decrement unit (DECR) shown in Figure 7-3.
• The flags reflect the status of operations:
• SF and DF are set when the last load or store on either bus (FUBUS or
DMBUS) received an error response.
• LM is set when the core is executing instructions inside a hardware loop.
• T is set when the ALU operation result was 0 or the loop counter reaches 0
(the latter is preponderant when an ALU operation is the last instruction of a
hardware loop).
• The ALU has two operands: any general register and either a second general register
or an immediate value. The result is always stored into the first general register. A
NOP function can be utilized by moving a register's contents into itself (For example,
the instruction: mov R0,R0).
• The 16-bit instructions are fetched via the instruction bus (IBUS) whose address is
driven by the PC. The SDMA RAM and ROM are visible to the core as 16-bit
devices through this interface.
• The memory (RAM and ROM), memory mapped registers, and external peripherals
are accessed via the DMBUS. The address is always taken from a general register
whose content is added to a 5-bit immediate value. This is the only available
addressing mode. The DMBUS is a 32-bit data bus. Except for the peripherals that
are external to the SDMA, the address accuracy is the 32-bit word (for example,
adding 1 to an address points to the next word, not the next byte).
• The functional units are accessed via the FUBUS connection. The data is exchanged
with any general register, but the address (which in fact is the instruction and the
selector of the functional unit) comes from an 8-bit field of the corresponding load or
store.
6. Done: The done, yield, or yieldge instructions are used to control channel switching.
When no channel switching is performed, these instructions last a single cycle. When
there is a change of channel or context switch, the delay is variable and depends on
many factors (as detailed in Context Switching).
Id/st
loop-modified
Idf/stf
error in
loop-modified
error in
ack
Data load/store Error in Loop
loop-modified
error in
in Id/st
wait-states
Program
PC is
context Restored
switch
pending
(done) channel(s)
Save Restore
no more
channels
pending pending
channel(s) channel(s)
run_core run_core
when coming from when coming from
Sleep after Reset Sleep
Sleep Debug
Sleep
After Reset in Sleep
debug debug
request request
reset debug
exec_once or request or
exec_core exec_once
completed done
Program
in Sleep debug
debug request or
request wait-states exec_once
branch in Idf/stf completed
7.2.3.2 Scheduler
All channel scheduling hardware is included in the Scheduler.
7.2.3.2.2.1 Channels
A Virtual Channel (hereafter simply called a channel) manages a flow of data through the
SDMA. Flows are typically unidirectional.
The SDMA can have up to 32 simultaneously operating channels, numbered from 0 to
31. Channel 0 is usually dedicated to control the SDMA script downloading. All the
channels can be assigned by the Arm platform software.
48
32
48 6 DMA request 32
DMA DMA requests Channel overflow
to pending channel
requests scanning detection
mapping
32
32
Channel Pending from External DMA Requests EP
32 5
External DMA request Override EO Runnable channels
32 Current Channel
Arm Platform Channel Enable HE evaluation
32
Arm Channel Enable Overide HO
32
16 5
SDMA clock
Long Pulse
Level
Short Pulse
The DMA request inputs are connected to various sources that depend on the SoC. The
exact list of DMA request inputs and their associated number is available in each
respective project-specific chapter.
This is performed with an array of 48 registers that are 32 bits wide: There are 48
Channel Enable Registers (CHNENBLn), one register per DMA request. The DMA
request number selects the Channel Enable Registers, and every bit of this 32-bit register
indicates that the corresponding channel must be activated when it is a 1.
This information is passed on the EP register. For every bit of the Channel Enable
Register that is set, the corresponding bit of the EP register is also set, and the remaining
bits of EP are left unchanged. The transformation of EP is summarized by the following
equation:
EP = EP or CHNENBLn
The EP register is used to know which channels require service because they received a
DMA request.
Typical contents of the CHNENBLn registers are all 0s, except for a single bit set. For
example, a DMA request triggers one channel, but all 0s or several 1s are possible. One
DMA request could activate several channels, and the channel execution sequence can be
controlled by the channel priorities and numbers, as explained in the next sections. The
following table illustrates an example configuration.
NOTE
From the table, the DMA request 0 is programmed to
simultaneously trigger channels 0, 1, and 31. Also, DMA
requests 30-47 are not used in this example. The remaining
channels 2 to 30, are configured to be triggered by DMA
requests 29 to 1, respectively.
Table 7-9. Channel Enable RAM Programming Example
Channel
3 0
DMA Request Number
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Registers EO, DO, HO and HE, are controlled by the Arm platform. EP is controlled by
the DMA requests and their mapping to channels.
Several channels may be runnable at any given time. The ith channel is runnable if (and
only if) the condition below is true:
(HE[i] or HO[i]) and (DO[i]) and (EP[i] or EO[i])
After reset, the HE[i], HO[i], EP[i], and EO[i] bits are all cleared whereas the DO[i] bits
are all set. The functions associated with DO are not available for this device. When
DO[i] is set, the scheduler condition becomes:
(HE[i] or HO[i]) and (EP[i] or EO[i])
The registers in these equations are controlled as follows:
• Arm platform (host) channel enable flag HE[i] may be set or cleared by the Arm
platform with the HSTART and STOP_STAT registers. It can also be cleared by the
ith channel script.
Typical usage is for the Arm platform to set this flag to activate the channel. The flag
is cleared by the SDMA core when the transfer is done.
• Externally triggered channel pending flag EP[i] is set by the scheduler when the
channel was activated by a DMA request. It can be cleared by the ith channel script.
• The Arm platform channel override flag HO[i] may be set or cleared by the Arm
platform. When set, it enables the ith channel to run without the involvement of the
Arm platform.
Typical usage is for the Arm platform to set this flag for channels that do not need
Arm platform supervision such as channels that are controlled by DMA request
events (EP).
• DO should always be set to 1 so that the runnable channel evaluation considers only
HO, HE, EP, and EO.
• Externally triggered channel override flag EO[i] may be set or cleared by the Arm
platform. When set, it prevents the ith channel from stopping and stalling on
incoming peripheral DMA requests. This is the case when the channel is not handling
data transfers with peripherals (for example, a memory to memory transfer).
The SDMA can clear the HE[i], and EP[i] bits by means of a done or notify instruction.
The done instruction causes a reschedule; thus, enabling another channel to preempt the
current one, while the notify instruction does not. The done and notify instructions can
clear either HE[i] or EP[i] (never more than one at a time).
Table 7-11. Channel Switching Decision with a yield, yield(ge), or done (continued)
Instruction Current Next Channel Priorities New Running Channel/Comments
Channel Comparison
Current < Next Next, 1
Not runnable Not runnable none none, 2
(occurs when the channel was disabled by the
Arm platform)
Not runnable Runnable none Next1
(occurs when the channel was disabled by the
Arm platform)
yieldge (done 1) Runnable Not runnable none Current
Runnable Runnable Current > Next Current
Current = Next Next1
Current < Next Next1
Not runnable Not runnable none none2
(occurs when the channel was disabled by the
Arm platform)
Not runnable Runnable none Next1
(occurs when the channel was disabled by the
Arm platform)
done (done>1) Not runnable Not runnable none none2
Runnable Not runnable none Current3
(occurs when the done instruction does not
disable the channel runnable condition)
Not runnable Runnable none Next1
Runnable Runnable none Current3
(occurs when the done instruction does not
disable the channel runnable condition)
1. Current channel script execution is stopped, its context is saved; the next channel context is restored and its script
execution resumes
2. Current channel context is saved and SDMA enters IDLE mode
3. Current channel context is saved, then restored, and the current channel script resumes execution
Finally, when the SDMA is in IDLE mode and a runnable channel is elected as the next
channel, its context is immediately restored and the script execution resumes.
The combinatorial-decision tree supports dynamic modifications of the EP, EO, HE, HO,
and DO flags as well as dynamic modifications of the channel priorities. The propagation
times are detailed in Scheduler Pipeline Timing Diagram.
The decision tree status is available in the PSW register, which is continuously updated.
It contains the next channel priority, the next channel number, the current channel
priority, and the current channel number. When a priority is read as 0, it means the
channel is not runnable.
A few examples of decisions are presented below:
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 987
Smart Direct Memory Access Controller (SDMA)
• Channel 31 is running with priority 5, channels 13 and 24 are pending with the same
priority 5; channel 24 is eligible as the next channel since 24 > 13.
• Channel 31 is running with priority 7, channels 13 and 24 are pending with priority
5; channel 31 is the next channel because its priority is greater than the other pending
channels.
• Channels 7, 23, and 29 are pending with the same priority. Channel 7 is active and
runs a yieldge; it is preempted by channel 29. After a period of time, channel 29 runs
a yieldge, it is then preempted by channel 23 that is the selected channel since
channel 29 is the current channel. Later, channel 23 runs a yieldge and is preempted
by channel 29. Channels 23 and 29 will go on switching after every yieldge until one
of them terminates. It is only at that point that channel 7 becomes eligible again.
• Channel 11 is running with priority 3, and channel 15 is pending with priority 4.
When the channel 31 script executes a yield instruction, it gets preempted by channel
15; then channels 6 and 18 with priority 3 become pending. Because channel 11 was
preempted after executing a yield and there is no pending channel with a strictly
greater priority, it is eligible as the next channel (although its number 11 < 18).
SDMA AP
DMA Mapping to new ctrl regs ctrl regs
request pending channels update update
#n
done
Repeat 32 times
for every channel #i
No Evaluate channel #i
runnable condition
Sort highest priority
channels per number
No is channel #i
Next channel = Channel #i
priority(i) = 0 runnable?
highest number among
highest priority channels
Yes
Channel #i
priority(i) = CHNPRI(i)
yield AND
Yes INT (priority(current))>
INT(priority(next))
yieldge AND
Yes priority (current)>
priority (next) No
Channel #i
No priority(i) = priority(i) + 0.5
No
is the
current channel active: Yes
priority (current)>0?
No
is the next
Yes channel active:
priority (current)>0?
No
END
SDMA Clock
1 2 3 4 5 6 1 2 3
DMA Request
mapping to EP
runnable channels
decision
next channel
Two numbers can be inferred from this timing diagram. First, it takes six SDMA core
clock cycles to update the next channel from a DMA request. Second, it takes three
SDMA core clock cycles to update the next channel from a direct modification of the
condition registers (EP, DO, HE, or HO) by any processor. The processors that can
modify these bits include SDMA with a done instruction or the Arm platform with a
write access through the corresponding control port on their respective peripheral bus).
priority is given to restoring the registers that are required by the next instruction to
be executed. When a register has not been restored and the next instruction needs it,
this instruction gets stalled until the register was restored.
In "dynamic" and "dynamic with no loop" modes, background saving of dirty
registers is performed every time an access to the context RAM is possible and
allowed by the context switch mode.
NOTE
The contents of a channel context space in the context
RAM depends on the selected context switch mode. In
"dynamic" and "dynamic with no loop" modes, the contents
of the context RAM tend to match the contents of the
SDMA registers (except for the PCU registers and flags
that are never saved in the background). In "dynamic
power" and "static" modes, the contents of the context
RAM remain unchanged until the channel terminates with a
done or gets preempted.
It is optimized for accessing SDRAM-like devices. It does not provide control to assign a
privilege level to the DMA access. The burst DMA unit provides the SDMA with means
to do the following:
• Perform up to 8-beat read and write bursts to the Arm platform memory, which
optimizes throughput when accessing SDRAM-type devices because of an internal,
36-byte FIFO
• Access the Arm platform memory at once or twice the SDMA core frequency
• Copy data from one Arm platform memory location to another Arm platform
memory location at the Arm platform bus speed, which provides a very high
throughput
• Control the method for addressing the Arm platform memory (automatic increment
of addresses or frozen addresses-the former aimed at accessing RAM-like memory
and the latter aimed at accessing single-address FIFOs)
• Enable or disable automatic prefetch when reading data from the Arm platform
memory. When the prefetch mode is selected, the burst DMA automatically triggers
external bursts to fill its FIFO without waiting for the SDMA core to request the
corresponding data, greatly improving throughput.
• Rely on the DMA to automatically flush its FIFO content when there is enough data
to generate an 8-beat burst to the Arm platform memory. Or, it forces a flush when a
data transfer must terminate.
• In the former case, the SDMA core may only be stalled when it tries writing data and
there is not enough room left in the FIFO. In the latter case, the core is stalled until
the data is effectively written to the Arm platform memory.
In automatic flush mode, the core receives an acknowledge that does not reflect the
actual error status when the data is effectively written into the Arm platform
memory. This error status is retrieved by a later access to the burst DMA.
Terminating a write data transfer with a forced flush command guarantees that any
bus error to the Arm platform memory is caught.
• Handle address alignment issues between the Arm platform memory map and the
SDMA core data. This enables the core to read or write 32-bit data from the burst
DMA, whereas the corresponding Arm platform address is not 32-bit aligned. This
drastically improves the SDMA scripts' efficiency since the same loop that transfers
32 bits at a time can be used regardless of the start and end addresses in the Arm
platform memory space.
This unit structure and registers are described in Burst DMA Structure and Burst DMA
Registers.
36-byte
FIFO Source Address (MSA)
(MD) Burst DMA
Control
Destination Address (MDA)
32 32 32
FUBUS
FIFO (for example, the bytes that were stored first by the DMA state-machine when
transferring data from the Arm platform memory).
• When the FIFO does not hold as many bytes as required by the SDMA core, the core
is stalled until the missing bytes are read from the Arm platform memory. In the case
of prefetch mode, the DMA controller decides when it should start a burst to Arm
platform memory in order to reduce the risk to not have the required data for the
future accesses of the core. When there is no prefetching, a burst is triggered when
the required data is not available in the FIFO.
Writing a byte, halfword, or word to MD stores 1, 2, or 4 bytes, respectively, at the
end of the FIFO (for example, these bytes are transmitted to the Arm platform
memory after all the other bytes that were previously stored in the FIFO). When the
FIFO does not have enough room left to hold the written data, the SDMA core is
stalled until a sufficient amount of FIFO contents are flushed out to the Arm platform
memory. Flushing is decided by the DMA controller when there are enough bytes in
the FIFO to perform the largest allowed burst to Arm platform memory (the exact
size depends on the burst start address and the AHB 1 Kbyte boundary rule).
However, the SDMA core has the ability to force the flushing operation at any time,
for example, when at the end of the data transfer, prior to channel closure.
• MS (Memory Setup) - Contains the state of the burst DMA control, the two flags that
define whether each address register is incremented after every access to the external
memory, and another flag that is set when a bus error occurred.
7.2.3.3.1.3.3 Transferring Data Between Two Arm platform Memory Locations-Burst DMA
Unit
The following steps copy data between two Arm platform memory locations using the
burst DMA unit:
• Set up the MS flags to reflect the modes for the source and destination addresses (all
the combinations are possible), then initialize the source address register (MSA) and
the destination address register (MDA). Both addresses must be word-aligned.
• Use as many stf MD instructions with the COPY flag as needed. Every instruction
triggers a burst read of a given number of words from the source address (this
number is provided to the burst DMA via the SDMA core general purpose register,
which is referenced in the stf instruction). Once all the data is loaded into the FIFO,
the DMA empties it with a write burst of the same count to the destination address.
The DMA acknowledges prior to instruction completion, which frees the SDMA core
for other tasks at no delay cost.
• Once the transfer is done, there should be a final access to the burst DMA to check
the error status.
• Data copy from one Arm platform memory location to another Arm platform
memory location at memory bus speed, improving throughput
• Control of the method for addressing the Arm platform memory (automatic
increment or decrement of addresses or frozen addresses, the first ones aimed at
accessing RAM-like memory and the last one aimed at accessing single-address
FIFOs)
• Selectable automatic prefetch when reading data from the Arm platform memory. In
prefetch mode, the peripheral DMA automatically fetches another data-without
waiting for the SDMA core to request it-when its data register is empty, which
improves the throughput
• Selectable automatic flush. In this mode, the SDMA core may only be stalled when it
tries writing data and the previous write operation is not finished yet; whereas, in
forced flush mode, the core is stalled until the data is effectively written to the Arm
platform memory.
• In automatic flush mode, the core receives an acknowledge that does not reflect the
actual error status when the data is effectively written into the Arm platform memory
or the peripheral. This error status is retrieved by a later access to the peripheral
DMA. Terminating a write data transfer with a forced flush command guarantees that
any bus error to the Arm platform memory has been caught.
This unit structure and registers are described in Peripheral DMA Structure and
Peripheral DMA Registers.
32 32 32
FUBUS
• PDA (Peripheral Destination Address) holds the destination byte address in the Arm
platform memory map for writing data to this location. This register is automatically
modified every time the core writes a new data into PD.
• PS (Peripheral Setup) contains the state of the peripheral DMA control, two
configuration fields that define the way address registers are modified after every
data access, two additional configuration fields that define the data size to access the
source and destination devices, and another field that contains the latest transfer error
status.
• Store data into PD using the stf PD instruction as many times as needed.
• When the transfer is finished and if the peripheral DMA worked in automatic flush
mode, force the flush of PD. This instruction is stalled until PD contents are
effectively sent to the Arm platform memory or peripheral, and the error status of the
transfer is available in the DF flag.
Refer to Figure 7-4 for an example of the PCU states in debug. The following are the two
debug states:
• When a channel is running (that is, when CCR and CCPRI are different from 0,
which can be read in the PSW register), SDMA can execute a SoftBkpt instruction
from the channel script or receive a debug request. When either happens, the SDMA
enters its "Classical" Debug state, which is described in OnCE and Real-Time
Debug.
• When a channel is not running, the SDMA can be in Sleep state or in Sleep after
Reset state. If a debug request is sent to the core, it enters its Debug in Sleep state.
This debug mode works similarly to the "Classical" Debug state, except it returns to
the original state (Sleep or Sleep after Reset) when the debug mode is left via the
exec_core instruction of the OnCE. From this Debug in Sleep state, the SDMA can
execute a program whereas no channel is running. If a new debug request is sent to
the core or if a SoftBkpt is executed, it comes back to this Debug in Sleep state.
The OnCE is provided with several instructions that can be executed when the core is in
either debug state. The following table summarizes the behavior of these OnCE debug
instructions. There exists other secondary OnCE instructions that are described in OnCE
and Real-Time Debug.
Table 7-12. SDMA in Debug Mode
Instruction Debug Debug in Sleep
exec_once exec_once <instruction> exec_once <instruction>
SDMA executes the <instruction> and returns to the SDMA executes the <instruction> and returns to the
Debug state. The Program Counter (PC) is not Debug in Sleep state. The Program Counter (PC) is
incremented. This command must not be used with an not incremented. This command must not be used
instruction that modifies the PC value. with an instruction that modifies the PC value.
run_core run_core <instruction> run_core <instruction>
SDMA executes the <instruction>, leaves the Debug SDMA executes the <instruction> and returns to its
state and continues executing the channel script from Sleep or Sleep after Reset initial state. This command
the position where it stopped. This command must not must not be used with an instruction that modifies the
be used with an instruction that modifies the PC PC value.
value.
exec_core exec_core <instruction> exec_core <instruction>
It is similar to run_core except it requires an If the previous state was Sleep after Reset, the SDMA
instruction that changes the PC value (jump, returns to this state, and Chn0Addr value overrides
branch...): the SDMA jumps to the new PC value, the PC value.
leaves the Debug state and starts executing
Otherwise, the SDMA jumps to the new PC value and
instructions from this new PC value.
starts executing instructions from this new PC.
NOTE
The feature exec_core in Debug in Sleep after Sleep after Reset
was added for the Channel boot (channel 0) to allow the
debugger to return to Sleep after Reset state with a new PC
The JTAG clock is sampled by the SDMA main clock to determine its rising edge. This
simplifies design and clock management, but it also adds a ratio constraint between those
two clocks. It is guaranteed the JTAG interface works properly when the frequency of
TCK is lower than 1/8th of the frequency of the SDMA main clock (which is about 8
MHz when the SDMA core clock frequency is 66 MHz).
The following table describes these modes, and shows how to switch from one mode to
another.
Table 7-15. Power Modes
Power Sub-blocks Comments
Mode
Core Mem Sche Arm Burs Perip OnC
ories duler platf t heral E
orm DMA DMA
Cont
rol
SLEEP off1 off wait2 wait off off off Set when the PCU state is either Sleep or Sleep after Reset
and the SDMA is not in DEBUG mode. This is the default
mode after reset.
RUN on3 wait wait wait wait wait off Set for the other PCU states that are reachable out of debug:
Program, Data, Change of Flow, Error in Loop, Debug,
Functional Unit, Save, or Restore.
DEBUG on on on on on on on Set regardless of the PCU state when clock gating is turned
off to use the OnCE features (either clk_gating_off pin high
or ONCE_ENB[0] set).
1. off: no clock
2. wait: only clocked when accessed or stimulated
3. on: clock is always running
It is possible to control the SDMA power mode. The procedures to force the SDMA into
either mode are described in SLEEP Mode.
7.2.3.6.2 Reset
After reset (either received from the reset block or a software reset required by the Arm
platform), the SDMA is in IDLE mode. It will start its boot code located at address 0
once a channel is activated.
Activating a channel can be done by the Arm platform after programming a positive
priority and setting the channel bit in the EVTPEND register.
There will not be a context RESTORE for the first channel (bootload channel) called
after a reset because the context data in RAM has not been initialized. Static context
mode should be used for the first channel called after reset to ensure that the all context
RAM for that channel is initialized. Subsequent calls to the same channel or different
channels may use any of the dynamic context modes
There are two ways to make the SDMA boot on a user-defined script. The OnCE (either
via its JTAG interface or its Arm platform Control interface) can be used to download
any code in the SDMA RAM and force the SDMA to boot on that code. Also, the
SDMA_CHN0ADDR register in the Arm platform programming model can be modified
to point to user code in RAM which would need to either have been loaded via the ONCE
or default bootload routine (ex before a S/W reset).
7.2.3.9.3.2 Flags
Each channel has the following four flags:
• The T bit reflects the status of some arithmetic and test instructions. It is set when the
result of an addition or a subtraction is zero and cleared otherwise. It is also the copy
of the tested bits. Finally, it can also be set when the loop counter (GReg0) reaches
zero. When the last instruction of the hardware loop is an operation that can modify
the T flag, its effect on T is discarded and replaced by the GReg0 status.
• Two additional bits, SF and DF, are used to indicate error conditions resulting from
loading data sources and storing to destinations, respectively. Access errors set these
bits, and successful transactions clear them. They can also be cleared by specific
instructions (CLRF and loop). The source fault (SF) is updated by the loads LD and
LDF; the destination fault (DF) is updated by the stores ST and STF.
• Access errors are caused by several conditions including writing to the ROM, writing
to a read-only memory mapped register, accessing an unmapped address, or any
transfer error received by a peripheral when it is accessed.
The SF and DF flags have a major impact on the behavior of the hardware loop: If
SF or DF is set when starting a hardware loop and it is not masked by the loop
instruction, the loop body will not be executed. Inside the loop body, if a load or
store sets the corresponding SF or DF flag, the loop exits immediately. Testing the
status of the T flag at the end of the loop (as well as testing both SF and DF) tells if
the loop exited abnormally as any anticipated exit prevents GReg0 from reaching the
zero value and thus setting the T flag. This is also valid if the fault occurs at the last
instruction of the last loop.
• The last flag is the loop mode flag, LM, which is composed of two bits. The most
significant bit indicates when the processor is currently operating in loop mode. It is
set by the loop instruction and is cleared after execution of the last instruction of the
last loop. The least significant bit is set when the program counter points to the last
instruction of a loop on the last path. It is used for a channel that is restored with this
configuration to know that the next program counter is EPC. As with the dynamic
context switch Greg0, which indicates when the program must get out of the loop, it
can be restored only on the last instruction of the loop. This, however, is too late to
fetch the next instruction after the loop.
otherwise the Context Switch bus is used. It is not possible to control the actual data
transfers that occur on this bus.
Data access is performed with ld and st instructions that take the address from a general
purpose register in the core (GRegn). The mapping between the general purpose register
contents and the address bus is given in the following table:
Table 7-18. GRegn to DMBUS Address Mapping
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
address
Grayed bits are simply discarded but they must be cleared to ensure forward-script
compatibility.
• sz (bit 31) indicates the peripheral data width: 0 is used for a 32-bit peripheral and 1
is used for a 16-bit peripheral.
• address (bits 15 down to 0) is the address of the accessed resource (internal memory,
internal register, or shared peripheral).
Table 7-19. SDMA Data Memory Space
Device SDMA Address (Hex) Size Description
ROM 0x0000 → 0x03FF 4 Kbyte 4 Kbyte internal ROM with boot code and standard routines
Reserved 0x0400 → 0x07FF 4 Kbyte 4 Kbyte Reserved
RAM 0x0800 → 0x0FFF 8 Kbyte 8 Kbyte internal RAM with channels contexts and user data/routines
per1 0x1000 → 0x1FFF 16 Kbyte peripheral 1 memory space (4 Kbyte peripheral's address space)
per2 0x2000 → 0x2FFF 16 Kbyte peripheral 2 memory space (4 Kbyte peripheral's address space)
per3 0x3000 → 0x3FFF 16 Kbyte peripheral 3 memory space (4 Kbyte peripheral's address space)
per4 0x4000 → 0x4FFF 16 Kbyte peripheral 4 memory space (4 Kbyte peripheral's address space)
per5 0x5000 → 0x5FFF 16 Kbyte peripheral 5 memory space (4 Kbyte peripheral's address space)
per6 0x6000 → 0x6FFF 16 Kbyte peripheral 6 memory space (4 Kbyte peripheral's address space)
Registers 0x7000 → 0x7FFF 16 Kbyte Memory mapped registers
per7 0x8000 → 0x8FFF 16 Kbyte peripheral 7 memory space (4 Kbyte peripheral's address space)
per8 0x9000 → 0x9FFF 16 Kbyte peripheral 8 memory space (4 Kbyte peripheral's address space)
per9 0xA000 → 0xAFFF 16 Kbyte peripheral 9 memory space (4 Kbyte peripheral's address space)
per10 0xB000 → 0xBFFF 16 Kbyte peripheral 10 memory space (4 Kbyte peripheral's address space)
per11 0xC000 → 0xCFFF 16 Kbyte peripheral 11 memory space (4 Kbyte peripheral's address space)
per12 0xD000 → 0xDFFF 16 Kbyte peripheral 12 memory space (4 Kbyte peripheral's address space)
per13 0xE000 → 0xEFFF 16 Kbyte peripheral 13 memory space (4 Kbyte peripheral's address space)
per14 0xF000 → 0xFFFF 16 Kbyte peripheral 14 memory space (4 Kbyte peripheral's address space)
2. Use the OnCE (either via its JTAG interface or its Arm platform control registers) to
download any code in the SDMA RAM. Accessing the Memory describes how to
write data to the RAM via the OnCE.
3. Use the OnCE instructions to make the PC default value point to the new boot script
start address, or rely on the ROM startup script, which first jumps to the address in
Channel 0 Boot Address (SDMAARM_CHN0ADDR). (This register default address
points to the standard boot script.)
• yield-These instructions are special cases of the done instruction. They do not modify
the scheduling bits, but allow the highest pending channel (if it exists) to preempt the
current channel if the pending channel priority is strictly greater than the current
channel priority.
• yieldge-These instructions are special cases of the done instruction. They do not
modify the scheduling bits, but allow the highest pending channel (if it exists) to
preempt the current channel if the pending channel priority is strictly greater or equal
to the current channel priority.
• notify-The notify instruction affects the scheduling bits, but does not cause
rescheduling.
Any memory location that is implemented with less than 32 bits (for example, peripheral
registers) causes unimplemented bits to be read as 0s.
All memory accesses will cause either the SF or DF flags in the processor status to be set
if they cause a fault.
What constitutes a fault, especially when accessing peripheral registers, is a property of
the memory location.
• LDr,(b,d)-The load instruction creates an address by adding the displacement field
(d) to the contents of the base register (b). The SDMA location at the resulting
address is read and placed in the destination register (r).
• STr,(b,d)-The store instruction creates an address in the same manner as the load
instruction. The register (r) is stored in the SDMA location at the resulting address.
More information regarding the functional units can be found in Peripheral DMA Unit,
and Burst DMA Unit.
Writing the source address register has two side effects: If the prefetch bit is set, a DMA
read cycle (8-word read access) is issued with the new address. Any data still located in
the buffer is lost. If there is valid write data in the buffer, it is necessary to force the
DMA to completely flush it out before modifying MSA to guarantee all the data is
effectively written to memory.
The MSA register has two modes of programming:
• Frozen-In frozen mode, the MSA register is not modified after DMA accesses.
• Incremented (default mode)-In incremental mode, MSA is incremented by the
number of bytes transferred during read cycles.
An ldf r,MD|SIZE instruction that reads the data buffer may cause a DMA cycle, as
follows:
• If there are less bytes in the FIFO than the size parameter of the instruction. For
instance, if only two bytes are available in MD and a 4-byte read is requested, a burst
read access is executed to complete the two bytes.
• If the prefetch bit is set, and after reading there is enough space in the FIFO to store a
full burst, a burst read access is triggered.
An stf r,MD|SIZE instruction that writes to the data buffer may cause a DMA cycle if the
number of written bytes in MD is higher than 32 (eight words) or if the flush bit is set.
When DMA is used for data transfer between SDMA and EXTMC (reading or writing),
no immediate error is possible because the block manages a data misalignment issue;
therefore, it is allowed to read/write a word to/from a half-word address. However, the
addresses (source or destination) must belong to the EXTMC memory mapping. The only
potential error, in this mode, would be the error sent back by the EXTMC controller
when an access to a super-user page is detected. The whole transfer on the DMA
associated bus will be considered successful when there are no errors seen on the bus
during the transfer. In copy mode, an immediate error could be returned to SDMA as
described in Burst DMA Unit Error Management.
The possible write instructions are listed in the table below (unused bits should always be
cleared).
Table 7-25. Burst DMA STF Instruction List
Binary Assembly Comments
00_0_0_00_00 stf r,MSA Writes content of the SDMA general register (r) to the source address
register. MSA is in incremented mode.
00_0_1_00_00 stf r,MSA|FR Writes content of the SDMA general register (r) to the source address
register. MSA is in frozen mode.
00_1_0_00_00 stf r,MSA|PF Writes content of the SDMA general register (r) to the source address
register, and starts a read burst access. MSA is in incremented mode.
00_1_1_00_00 stf r,MSA|PF|FR Writes content of the SDMA general register (r) to the source address
register, and starts a read burst access.
00_0_0_01_00 stf r,MDA Writes content of the SDMA general register (r) to the destination address
register. MDA is in incremented mode.
00_0_1_01_00 stf r,MDA|FR Writes content of the SDMA general register (r) to the destination address
register. MDA is in frozen mode.
00_1_0_10_00 stf r,MD|SZ0|FL No data transfers between the SDMA and MD, but all valid written data of
the MD is flushed to the memory. An acknowledge or error is sent back to
the SDMA core on transfer completion.
00_0_0_10_01 stf r,MD|SZ8 8-bit (byte) transfer to write buffer MD
00_1_0_10_01 stf r,MD|SZ8|FL 8-bit (byte) transfer to write buffer MD and flush after transfer. All valid
written data of the MD is flushed to memory.
00_0_0_10_10 stf r,MD|SZ16 16-bit (half-word) transfer to write buffer MD
00_1_0_10_10 stf r,MD|SZ16|FL 16-bit (half-word) transfer to write buffer MD and flush after transfer. All
valid written data of the MD is flushed to memory.
00_0_0_10_11 stf r,MD|SZ32 32-bit (word) transfer to write buffer MD
00_1_0_10_11 stf r,MD|SZ32|FL 32-bit (word) transfer to write buffer MD and flush after transfer. All valid
written data of MD is flushed to memory.
00_0_1_10_00 stf r,MD|CPY No data transfer between SDMA and MD but starts a copy transfer whose
length is given by the 4 LSB of r register. (Maximum burst length is eight
words.)
00_0_0_11_11 stf r,MS 32-bit (word) transfer to status register MS
00_0_0_11_00 stf r,MS|SZ0 Clears the error flag (if set). Other MS bits are unchanged; this instruction is
also known as clref MS.
NOTE
When a flush bit is set, the SDMA flushes the FIFO including
the newly written data. An acknowledge is sent to the core
before the flush completes (except if size 0 is used). The goal of
this flush bit is to force a flush, but it is recommended to use it
only when needed (for example, when finishing a row of pixels
during 2D data transfers). Indeed, if this bit is omitted and if
there are more than 32 bytes in the FIFO, a burst write access is
automatically triggered.
Since all the stf r,MD instructions (including the copy mode)
acknowledge the SDMA core before the store is effective
(except if size 0 is used), it is recommended to perform an ldf
from MS before terminating a channel in order to check the
final error status. (The ldf from MS will stall the core until all
the data was flushed out and the transfer status is known.)
After every stf MD instruction, the MDA is incremented by the
number of bytes that are written in MD, except when it is
programmed in frozen mode.
The table below lists the possible write instructions (unused bits should always be
cleared).
Table 7-28. Burst DMA LDF Instruction List
Binary Assembly Comments
00_0_0_00_00 ldf r,MSA Copies the source address register value into an SDMA general register. It
gives the memory address of the next data that will be read with an ldf MD
instruction.
00_0_0_01_00 ldf r,MDA Copies the destination address register value into an SDMA general
register. It gives the memory address where the next incoming data will be
flushed.
00_0_0_10_01 ldf r,MD|SZ8 8-bit (byte) read
00_1_0_10_01 ldf r,MD|SZ8|PF 8-bit (byte) read. If after this reading and the MD FIFO is empty, a burst
read access at the MSA address is triggered.
00_0_0_10_10 ldf r,MD|SZ16 16-bit (half-word) read
00_1_0_10_10 ldf r,MD|SZ16|PF 16-bit (half-word) read. If after this reading, and the MD FIFO is empty, a
burst read access at the MSA address is triggered.
00_0_0_10_11 ldf r,MD|SZ32 32-bit (word) read
00_1_0_10_11 ldf r,MD|SZ32|PF 32-bit (word) read. If after this reading and the MD FIFO is empty, a burst
read access at the MSA address is triggered.
00_0_0_11_00 ldf r,MS Copy the status register value into an SDMA general register.
NOTE
Read data is 0-extended before writing in the SDMA general
registers. When reading the MD register, the DMA takes data
from the FIFO if it is available. If part or whole data is not in
the FIFO, an external burst read access is performed to provide
the missing data. The SDMA is stalled as long as the required
read data is not complete.
After every reading, MSA is incremented by the number of read
bytes from MD FIFO, except when MSA is programmed in
frozen mode.
The basic principle in prefetch mode is for the DMA to anticipate data reads from the
SDMA RISC engine by fetching external bursts of data as soon as there is enough space
in the DMA FIFO to store it. If ever the RISC engine required data that is not available in
the FIFO, the read acknowledge is delayed until the data is available, but it does not have
to wait until the burst completes.
The auto-flush basic principle is similar: An automatic flush is triggered every time there
are eight words to be written in the FIFO. If the FIFO is full and the RISC engine
requires another write, it is stalled until the burst has started and enough space was freed
in the FIFO to store that new data. This means the SDMA RISC engine does not have to
wait for the completion of a burst to receive its acknowledge and continue its processing.
In particular, an auto-flush is executed when DMA is in write mode and if the following
is true:
• If the FIFO is empty and the first write is to a word-aligned address of any size (ex:
the 2 LSB of MDA[1:0]= 0x0), the auto-flush is triggered immediately after the write
of the 32'nd byte.
• If the FIFO is empty, and if MDA is an odd byte address (1, 3, 5, 7,...) and an stf
MD|SZ8 is executed, the byte is flushed to memory. Once MDA increments to a
word aligned address, the auto-flush will be triggered every 32 bytes.
• If the FIFO is empty, and if MDA is a half-word address (2, 6, 0xA,...) and an stf
MD|SZ16 is executed, the two bytes of the incoming data are flushed to memory.
Once MDA increments to a word aligned address, the auto-flush will be triggered
every 32 bytes.
• If the FIFO is empty, and if MDA is not a word-aligned address (ex 1, 2, 3, 5, 6, 7,
9,...), and an stf MD|SZ32 is executed, the first 1 to 3 bytes will be flushed up to the
next word aligned address. Afterwards, an auto-flush will be triggered each time the
FIFO receives 32-bytes.
• Therefore, if an stf MD|SZ32 is executed with MDA equal to 0x1 and with an empty
MD FIFO, the bytes located at addresses 1, 2, and 3 are flushed, and the byte located
at address 4 remains in MD FIFO. This solves the misalignment issue. Additionally,
the next write instructions (stf) complete the FIFO until it contains eight words; then
a burst write is executed by the DMA to empty the FIFO. Protocol on the external
bus does not support bursts of different data types (byte, half-word, or word).
For example, consider the case where data is written using a byte access, stf MD|
SZ8. The value of MDA during the very first byte write determines when the auto-
flush will occur as follows:
• If MDA=0x0, the flush occurs following the write of byte 32
• If MDA=0x1, the flush occurs following the write of byte 1, byte 3 and byte 35.
• If MDA=0x2, the flush occurs following the write of byte 2 and byte 34.
• If MDA=0x3, the flush occurs following the write of byte 1 and byte 33.
• If MDA=0x4, the flush occurs following the write of byte 32
The flush command forces the DMA to flush all MD valid bytes to the EXTMC
controller. An acknowledge is sent immediately to the SDMA, and any potential error is
reported on a future access. It is thus essential to conclude a transfer with a last read from
MS, which will stall the core until all data was flushed out and returned to the transfer
status (acknowledge or error).
NOTE
During this kind of auto-flush (which occurs only at the
beginning of a misaligned write transfer) no acknowledge is
sent back to the SDMA, which is stalled until a flush is
completed.
NOTE
If the FIFO mode changes from a write to a read mode, all
remaining written bytes in MD are lost but no error is returned.
Typically, this happens if an ldf MD is executed after stf MD
instructions. Before a mode change, it is recommended to force
the flush of a potential remaining byte by a stfMD|SZ0|FL
instruction. In the same way, if a FIFO mode changes from a
read to a write mode, all prefetched data present in the FIFO is
lost and no error is returned.
ldi r1,@dst
ldi r1,0x8
MAIN_XFER:
LAST_XFER:
stf r0,MD|CPY
The main transfer loop is executed 12 times; then r0 equals 4 and the last transfer loop is
run.
In this mode, an acknowledge is transmitted to the core as soon as the read burst can start;
thus, a first copy instruction returns an immediate acknowledge and subsequent copy
instructions will be acknowledged as soon as the previous copy has finished.
When an error is received during a write transfer, the error is reported to the next DMA
access. In this case, an error is sent to the SDMA core and the DMA goes to its error
mode. Reading MS gives the number of bytes that remain in MD; reading MDA gives the
address of the error data. Any attempt to read or write MD, or to modify MDA or MSA in
error mode, give rise to an error; therefore, an error flag must be reset by clearing MS at
the end of the SDMA code section responsible for error management.
Table 7-32. Possibilities in ERROR Mode
DMA Instruction Immediate Error Comments
stf rn, MD stf rn, MSA stf rn, MDA Yes Any attempt to modify MD, MSA, MDA will raise an
immediate error and burst DMA remains in error mode. When
address registers are write-accessed, an error is returned.
stf rn, MS No This is the only way to exit error mode. MS[9:8] must be reset
by an stf MS|SZ0 instruction.
ldf rn, MS ldf rn, MSA ldf rn, MDA No MS, MSA, and MDA could be read in error mode without any
side effects (for example, no DMA cycle is triggered).
ldf rn, MD Yes Whatever the DMA direction (read or write), an ldf rn triggers
an immediate error.
done 0 // yield
Reading the register with the ldf instruction has no side effects and gives the address
value of the next data that will be read by the SDMA during an ldf MD instruction.
Writing the source address register may have side effects. If there is valid write data in
the data register and the source address is changed, the write data is discarded. If the
prefetch bit is set, a DMA read cycle is issued with the new address.
When PSA is to be written, you must specify the source target address mode, providing
its size (byte, half-word, or word). This enables omission of the size field in all ldf MD
instructions. When DMA performs a read cycle, its size is given by the value of the PSA
source size register (ssize). If source is a memory in incremented mode, first programmed
in word mode (stf PSA|SZ32|I), and if an SDMA script needs to read bytes from this
memory, the size of the source target must be updated before executing new accesses.
The source address mode and its size are given by labels added to the stf PSA instruction
as described in the write section. The ssize and stype registers are part of the DMA status
register (PS).
Writing to PSA may issue an immediate error if the source size is not compatible with the
value to be written into the PSA register. For instance, writing a 2 in PSA and specifying
that it is memory-accessed in word mode creates an immediate error.
The number of SDMA bytes that will be transferred is given by the PDA size register.
Unlike other SDMA DMAs, PD is not a FIFO: It is not used to accumulate bytes that
from the SDMA and must be packed before being sent to external memories. In read
mode, and if the source address is correctly set up, an ldf instruction will empty PD. If a
prefetch is required along with the instruction, the DMA will initiate a new read transfer.
Reading PD in prefetch mode only stalls the SDMA when the prefetched data is not yet
available. Writing PD only stalls the SDMA if the previous write operation was not
completed. As soon as the previous operation is over, the acknowledge is sent back to the
SDMA RISC engine.
An error flag-part of PS-is set when an external access fails. The error is thus reported to
the next SDMA instruction that involves the peripheral DMA.
NOTE
dtype, dsize, stype, and ssize are updated when PSA and PDA
are written.
Due to the large number of possible stf instructions, the following table provides only a
short list of all the possible write instructions:
Table 7-37. Peripheral DMA STF Instruction List
Binary Assembly Comments
11_00_00_01 stf Rn, PSA|SZ8 |F • Source is a byte, half-word, or word target at the Rn address. Any
11_00_00_10 further PD read instructions will trigger a byte, half-word, or word
stf Rn, PSA|SZ16|F
11_00_00_11 access to the source.
stf Rn, PSA|SZ32|F • Source address is frozen.
11_10_00_01 stf Rn,PSA|SZ8 |F|PF stf • Source is a byte, half-word, or word target at the Rn address. Any
11_10_00_10 Rn,PSA |SZ16|F|PF further PD read instructions will trigger a byte, half-word, or word
11_10_00_11 access to the source.
stf Rn,PSA |SZ32|F|PF
• 1, 2, or 4 bytes are fetched from the peripheral source.
• Source address is frozen.
11_00_01_01 stf Rn, PSA|SZ8 |I stf Rn, • Source is a byte, half-word, or word target at the Rn address. Any
11_00_01_10 PSA|SZ16|I stf Rn, PSA| further PD read instructions will trigger a byte, half-word, or word
11_00_01_11 SZ32|I access to the source.
• Source address is in incremented mode: PSA = PSA + 1,2 or 4
after read PD.
11_10_01_01 stf Rn, PSA|SZ8 |I|PF stf • Source is a byte, half-word, or word target at the Rn address. Any
11_10_01_10 Rn, PSA|SZ16|I|PF stf Rn, further PD read instructions will trigger a byte, half-word, or word
11_10_01_11 PSA|SZ32|I|PF access to the source.
• Source address is in incremented mode: PSA = PSA + 1, 2, or 4
after read PD.
• 1, 2, or 4 bytes are fetched from the peripheral source.
11_00_10_01 stf Rn, PSA|SZ8 |D • Source is a byte, half-word, or word target at the Rn address. Any
11_00_10_10 further PD read instructions will trigger a byte, half-word, or word
stf Rn, PSA|SZ16|D
11_00_10_11 access to the source.
stf Rn, PSA|SZ32|D • Source address is in incremented mode: PSA = PSA-1,2, or 4 after
read PD.
11_10_10_01 stf Rn, PSA|SZ8 |D|PF • Source is a byte, half-word, or word target at the Rn address. Any
11_10_10_10 further PD read instructions will trigger a byte, half-word, or word
stf Rn, PSA|SZ16|D|PF
11_10_10_11 access to the source.
stf Rn, PSA|SZ32|D|PF • Source address is in incremented mode: PSA = PSA-1,2, or 4 after
read PD.
• 1, 2, or 4 bytes are fetched from the peripheral source.
11_00_11_01 stf Rn, PSA|SZ8 |U stf Rn, • Update source pointer to memory, which becomes a pointer to a
11_00_11_10 PSA|SZ16 |U stf Rn, PSA| memory accessed in byte, half-word, or word.
11_00_11_11 SZ32 |U • PSA value is not modified by Rn.
• Bytes present in PD are lost.
11_10_11_01 stf Rn, PSA|SZ8 |PF|U stf • Update source pointer, which becomes a pointer to a target
11_10_11_10 Rn, PSA|SZ16 |PF|U accessed in byte, half-word, or word.
11_10_11_11 • PSA value is not modified by Rn.
stf Rn, PSA|SZ32 |PF|U
• Bytes present in PD are lost.
• 1, 2, or 4 bytes are fetched from the memory source.
11_01_00_01 stf Rn, PDA|SZ8 |F • Destination is a byte, half-word, or word target at the Rn address,
11_01_00_10 and any further PD write instructions will trigger byte, half-word, or
stf Rn, PDA|SZ16|F
11_01_00_11 word access to the destination.
stf Rn, PDA|SZ32|F • Destination address is frozen.
NOTE
When writing PD, size information is not important: It is
embedded in the dsize field of PDA register. If dsize is 1, 2, or
4, then one, two, or four bytes from Rn is written to the PD
register, and automatically flushed out to the destination target.
NOTE
When reading PD, size information is not important: It is
embedded in the ssize field of the PSA register. If ssize is 1, 2,
or 4, the one, two, or four bytes is transferred from PD to Rn.
Read data is 0-extended.
Data is read from the source target at a PSA address, stored in PD, and then automatically
flushed to the destination target at the PDA address. Copy mode is only available for
transfers that involve two targets of the same data path width.
Since copy mode is invoked with an ldf instruction, the loaded general purpose register
loses its previous contents. (However, the new contents are unpredictable as they depend
on temporary values that are seen on the external DMA bus.)
General Purpose register contents. The same mechanism can be used any time PD holds
data that is not written because of a bus error on the DMA interface; when the data was
written via a copy instruction, or via the usual stf PD instruction.
7.2.3.12.3.3 Watchpoints
One output pin is provided to monitor matching trigger conditions that are defined in the
event detection unit.
Each instruction corresponds to a specific action performed on the OnCE. The nature of
the associated data field is clearly identified. The dmov command is followed by a 32-bit
data value (which is a data value for the SDMA); the exec_once and the exec_core
commands are followed by a 16-bit data value (which is an instruction for the SDMA);
the rstatus command is followed by a 16-bit control value (which is the content of the
OnCE status register); the rbuffer command is followed by a 32-bit data value. The
debug_rqst and the run_core commands are followed by a single bit data field (this is a
bypass value). Finally, the bypass instruction enables the SDMA JTAG TAP controller to
be daisy-chained with another JTAG TAP controller. This is a JTAG-only feature. The
set of commands is simple, but enables you to perform any possible task on the SDMA
during a debug process.
During the shift_ir state, the command opcode is shifted into the OnCE controller (for
example, the signal from the TDI pin is shifted into the command register and the TDO
pin receives the signal shifted out). After transferring the four bits of the command, an
update_ir signal is asserted and the command is decoded. The target data register is now
clearly identified and the corresponding control signal is produced, as follows: bypass
enable signal (bp_en), instruction enable signal (inst_en), data enable (data_en), and
status enable signal (stat_en).
During the shift_dr state, the TDI signal is shifted into one of the following target
registers: bypass register (1 bit), SDMA instruction register (16 bits), SDMA data register
(32 bits), or OnCE status register (16 bits). The TDO pin is connected to the output of the
selected register to receive the signals shifted out.
The JTAG access is disabled when the Arm platform access is enabled.
NOTE
On the Arm platform side, the rstatus and bypass commands are
not supported. This register is reset on a JTAG reset.
• ONCE_DATA register (32 bits, read/write)-This 32-bit register is connected to the
SDMA data register. This register is used when executing a dmov or rbuffer
command.
NOTE
Before requesting a dmov command, the 32-bit data to transfer
must be written in the ONCE_DATA register. At the end of the
execution, the register is updated with GReg1 former value.
This register is reset on a JTAG reset.
• ONCE_INSTR register (16 bits, read/write)-This 16-bit register is connected to the
SDMA instruction register. This register is used when executing an exec_core or an
exec_once command.
NOTE
Before requesting an exec_core or an exec_once command, the
appropriate instruction must be written in the ONCE_INSTR
register. This register is reset on a JTAG reset.
• ONCE_STAT register (16 bits, read only)-A read access to the ONCE_STAT
register returns the content of the OnCE status register (OSTAT). This register is
read only.
• The bypass register is not useful when the Arm platform controls the OnCE,
therefore no register is defined in the Arm platform Control block to access the
bypass register.
7.2.3.13.2.3 Conflicts Between the JTAG and the Arm platform Accesses
When Arm platform access to the SDMA OnCE is enabled (that is, when the bit in the
ONCE_ENB register is set), the JTAG access is disabled. This guarantees that the block
is not accessed at the same time on both sides.
It is possible to check whether the JTAG access to the SDMA OnCE is enabled from the
JTAG port. When the JTAG access is disabled, the SDMA TDO always returns 1. The
check requires the following steps:
• Execute a dmov command from debug mode (with neither 0xffffffff nor 0x0 as dmov
value: 0x5a5a5a5a is good).
The following is an example of an exec_core command execution from the Arm platform
side: After writing '010' in the ONCE_CMD register, the OnCE controller asks the
SDMA to execute the instruction contained in the ONCE_INSTR register. The
instruction involved should be available in the ONCE_INSTR register before the
beginning of the execution.
NOTE
Most of the instructions are single-cycle, which omits the
step of polling the status. Loads and stores to DMA units
are typical instructions that might require this polling.
If the JTAG is used, the 16-bit instruction is shifted in the SDMA instruction register
after 16 TCK clock cycles in the shift_dr state. A request is sent to the core when the
update_dr state is decoded in the TAP controller. If the OnCE is driven from the Arm
platform side, the request is sent to the SDMA when detecting a write access to the
ONCE_CMD register. The ONCE_INSTR register must be therefore be loaded first.
• run_core command execution-The run_core command leaves debug mode and
resume normal program execution. The next instruction executed is the last
instruction decoded before entering debug mode. Be sure to restore core context
before re-running the core. This procedure is detailed in Restoring the Context.
• If the JTAG is used, a 1-bit bypass value is shifted in the bypass register in the
shift_dr state. The SDMA is rerun when the update_dr state is decoded in the TAP
controller. If the OnCE is driven from the Arm platform side, the core is rerun when
detecting a write access to the ONCE_CMD register.
• exec_core command execution-The exec_core command resumes program execution
from any address. The 16-bit instruction provided with the exec_core overwrites the
last instruction decoded before entering debug mode. This command is designed to
support change of flow instructions, so that a program execution can be restarted
from any address. After executing an exec_core command, the SDMA leaves debug
mode. The exec_core command is usually used with a jmp instruction.
• If the JTAG is used, the 16-bit branch instruction is shifted in the SDMA instruction
register after 16 TCK clock cycles in the shift_dr state. The SDMA is rerun when the
update_dr state is decoded in the TAP controller. If the OnCE is driven from the Arm
platform side, the SDMA reruns when detecting a write access to the ONCE_CMD
register. The ONCE_INSTR register must therefore be loaded first. For example, to
restart the SDMA from the program address 0x100, the instruction loaded should be
a jump to address 0x100 instruction.
• debug_rqst command execution-The debug_rqst command puts the SDMA in debug
mode. If the JTAG is used, a 1-bit bypass value is shifted in the bypass register
during the shift_dr state. A debug request is sent to the SDMA when the update_dr
state is decoded in the TAP controller. If the OnCE is driven from the Arm platform
side, the debug request is sent when detecting a write access to the ONCE_CMD
register. When the SDMA is already in debug mode, this command is simply
ignored.
• rbuffer command execution-The rbuffer command exports the content of the real
time buffer (RTB). If the JTAG is used, the content of the real time buffer (RTB) is
captured in the SDMA data register during the capture_dr state. The register is
completely shifted out after maintaining the shift_dr state during 32 TCK clock
cycles. If the OnCE is driven from the Arm platform side, the content of the RTB is
captured in the ONCE_DATA register after detecting a write access to the
ONCE_CMD register.
• bypass command execution-This command is only available from the JTAG
interface. It enables daisy-chaining of the SDMA JTAG TAP controller with other
JTAG TAP controllers. This command does not change the SDMA state and can be
executed in any mode (run, debug, or sleep). It selects the bypass register of the TAP
controller.
address value latched from the memory bus does not influence
the result of the address comparison. The event cell address
mask register is cleared on a JTAG reset.
Where PST[3:0] is the SDMA core state, RCV is set when the real-time buffer (RTB) is
modified. EDR, ODR, and SWB are set, respectively, when the SDMA has entered debug
mode because of an external debug request, a OnCE debug_rqst command, or a software
breakpoint. MST is set when the OnCE is controlled from the Arm platform control
interface, and when ECDR is a three-flag set that shows the event cell condition(s) that
put the core in debug mode. The OSTAT never provides more than one reason for
entering debug mode.
There are two ways of accessing OSTAT content, as follows:
1. Send an rstatus command to the OnCE controller through the JTAG, or read the
ONCE_STAT register through the Arm platform access. Executing the rstatus
command through the JTAG can be performed in both user and debug modes.
2. Perform an SDMA read access to the location in the SDMA core memory map
(OSTAT register) debug mode using the exec_once command. With this method of
access, the SDMA state reflected by the PST (processor status bit) is always DATA.
The register may also be accessed by a running application.
'0' tms
'1' tdi TMS/TDI internals
TMS/TDI
posedge_detected
tdo '0'
TDO
'1' TDO internal
The following figure shows synchronization timings. It takes three CLK clock cycles to
synchronize TDI on the SDMA clock.
TCK
CLK
posedge_det
TDI
internal TDI
negedge_det
TDO
The value returned by the command (if there is one) is referred by an assignment. In case
the value returned by the command is not used, the assignment is omitted. For an Arm
platform access, the value returned (it is always a data value) is obtained by reading back
into the SDMA data register.
data_out = my_command(data_in); // returning a data value
To clarify the syntax, the instructions' opcodes are referred to by their names. In practice,
use the corresponding 16-bit encoding.
If the SDMA is not in debug mode, then a debug request must be generated. In this case,
the SDMA enters debug mode at the end of the execution of the current instruction. Use
this snippet:
debug_rqst(-); // debug request
In the following sections, it is assumed that the SDMA was successfully put into debug
mode.
Get the value of the internal flags (SF, DF, T, and LM), of the loop related registers (EPC
and SPC), and of the PC-related registers (PC and RPC). Use a done 5, which is the
formatting instruction dedicated to the debug. This instruction formats the flags and the
values contained in the registers. It also writes the resulting values into the channel
context memory. It should not be used when entering debug from the IDLE state (for
example, with no active channel script running on the SDMA), because it will update a
channel context that may belong to any channel.
exec_once("done 5"); // formatting the value of flags and registers
At this point, the channel context should be up-to-date in memory, and debug operations
should now be possible. However, the context can be exported with the following
instructions:
Exporting the Context
dmov(ctx_base_addr); // loading GReg[1] with the channel
context base address
exec_once("ld GReg0,(GReg1,0)"); // get RPC-PC into GReg0
exec_once("ld GReg1, (GReg1,1)"); // get SPC-EPC into GReg1
Loop_data = dmov(-); // read back the value of Loop registers
exec_once("mov GReg1, GReg0"); // puts the PC info into GReg1
PC_data = dmov(-); // reads back the content of the PC registers
After this sequence of operations, the entire SDMA context is exported via the OnCE.
Once the context in memory is the desired context (with or without applying the previous
instruction sequence), it can be restored to the real PC and loop registers in the SDMA
core:
exec_once("cpShReg"); // restore flags and PC & loop related registers
After this command, the SDMA core PC, RPC, SPC, EPC registers, as well as the flags
contain the same data as what is stored in the context RAM for the current channel.
The following example shows how to restore the context of general registers GReg[0],
GReg[1], GReg[2] and GReg[3].
In the example shown here, it is assumed that the SDMA context is entirely saved. If true,
it is permissible to modify the general purpose registers during debugging activity.
To perform a memory read access, the target address is stored via the OnCE in GReg[1],
then the load instruction is executed on the SDMA (the data loaded from the memory
overwrites the address contained in GReg[1]), and then the result value is read back via
the OnCE.
macro READ: dmov(target_addr); // put the target
address in GReg[1]
exec_once("ld GReg1,(GReg1,0)"); // execute the
load instruction
res_data = dmov(-); // exports the result
data value
For a memory write access, the target address is written in GReg[0], and the value to
store is written in GReg[1]. Then the store instruction is executed on the SDMA.
macro WRITE: dmov(target_addr); // puts the
target address in GReg[1]
exec_once("mov GReg0,GReg1"); // puts the target
address in GReg[0]
dmov(target_data); // puts the target
data in GReg[1]
exec_once("st GReg1,(GReg0,0)"); // performs the
store operation
This sequence is shown as an example; however, many other sequences are possible.
NOTE
This sequence of commands can also be applied to memory-
mapped registers.
If necessary, restart the execution from a different address. In this case, use the exec_core
command. The data field provided with this command must be the encoding of a jump
instruction.
exec_core("jmp start_addr"); // rerun the SDMA from another address
In these two examples, the SDMA exits debug mode and keeps executing the code
fetched from the memory.
A counter, provided with the detection cell, is decreased after an event detection. A
debug request is sent to the core only when the counter reaches the value of 0. It is
possible to disable the use of the counter if a debug request has to be generated after each
event detection.
The event cell is the basic block that supports hardware breakpoints on an address value
and/or data values coming from the SDMA memory bus. The trigger condition that
generates the debug request is a mixed condition based on those values.
The following figure shows the event cell architecture. The event cell contains the
address (stored in the memory address register) and the data (stored in the memory data
register) used during the last memory access. There are some user-defined reference
values located in memory mapped registers-the event cell addresses, the event cell
address mask, the event cell data, and the event cell data mask. These registers are
accessed by standard load/store instructions just like regular memory locations.
Event Cell Address Register (a) Address Comparator (a) Memory Access Type Register
Event Cell Address Register (b) Address Comparator (b) Memory Access Register
addrb_cond
Logic
addr_cond
Logic
event_detect
To define a memory breakpoint, three conditions are taken into account: The first two
conditions are comparisons of the current memory address with user-defined reference
addresses (these conditions are called addressA and addressB). The third condition
consists of a comparison between the data received on the DMBUS and a user-defined
reference data (this condition is called data). An intermediate address condition is set to
express a dependency between addressA and addressB conditions.
7.2.3.14.7.1 Clocks
Because the SDMA uses clock gating to save power, it is necessary to disable the clock
gating and force the clocks to be enabled when using the OnCE.
When the OnCE is accessed through its JTAG interface, clock gating must be disabled
outside the SDMA via a dedicated SDMA input port clk_gating_off. The reason why
detection is not performed automatically by the SDMA internal hardware is that it would
cost power to monitor activity on the JTAG interface.
When the OnCE is accessed through the Arm platform Control interface, clock gating is
automatically turned off. This is done when bit 0 of the ONCE_ENB register (see OnCE
Enable (SDMAARM_ONCE_ENB)) is set. A write access to this register is possible
even when the OnCE clock is not running. If the Arm platform access is used, the bit in
the ONCE_ENB register must be set before any attempt to access any other OnCE
register.
7.2.3.14.7.2 Resets
The OnCE reset is different from the SDMA main reset.
Normally, activating the SDMA reset while keeping the OnCE reset inactive (when
possible) enables you to reset the core without having to reprogram the OnCE.
shift
...
Each cell of the trace buffer contains two reference addresses and a flag. The flag is set
when the addresses stored in the cell correspond to a valid change of flow; otherwise, the
flag is cleared. The three most significant bits are unused.
After every change of flow detection, the address of current instruction and the address of
the target instruction are stored at the top of the Trace Buffer (cell #0). The flag in the
cell is set to indicate that a valid change of flow was detected. Former cell values are
shifted one level down. The Trace Buffer contains the 32 last changes of flow. All the
flags are reset on a software or a hardware reset, and after each transition from debug
mode to user mode.
A memory mapped register of SDMA core, the Trace Buffer register (TB), is provided to
read the content of the Trace Buffer. This operation should be done in debug mode.
Performing a read access to the Trace Buffer register returns the content of the bottom of
the Trace Buffer (cell #31). After every read access, the trace buffer is shifted one level
down, and the flag at the top of the trace buffer is cleared.
A typical OnCE command sequence that retrieves the oldest change-of-flow information
is a follows:
exec_once("mov r1, TB"); // stores the oldest change-of-flow in
GReg1
dmov(-); // retrieves GReg1 contents
0 Program
1 Data
2 Change of Flow
3 Change of Flow in Loop
4 Debug
5 Functional Unit
6 Sleep
7 Context Switch Saving Channel
8 Program in Sleep
9 Data in Sleep
10 Change of Flow in Sleep
11 Change of Flow in Loop in Sleep
12 Debug in Sleep
13 Functional Unit in Sleep
14 Sleep after Reset
15 Context Switch Restoring Channel
debug_yield Pulse that is active when a yield (done 0) or a yieldge (done 1) instruction is executed.
0-
1 yield/yieldge executed
debug_core_run Active when the SDMA core is executing instructions.
0 Debug or sleep mode
Table continues on the next page...
debug_pc[13:0] Program Counter value; it has a meaning when the core is in run mode.
debug_mode Set when the core is in debug.
0-
1 Core is in debug
debug_bus_error Set when an error was received during a load or a store (ld, st, ldf, or stf instruction) and
registered in SF or DF flag.
0 No error during last load/store
1 Error during last load/store
debug_bus_device[4:0] Indicates the device or functional unit that is accessed by the current instruction. The
debug_bus_device output is always valid when in sleep mode, debug mode, or executing any
instruction that does not access the functional units or the memory mapped devices, "no
access" is output.
0 No access
1 MSA
2 MDA
3 MD
4 MS
5 PSA
6 PDA
7 PD
8 PS
9 RESERVED
10 RESERVED
11 RESERVED
12 RESERVED
13 CA
14 CS
15 Reserved
16 Memory (RAM or ROM)
17 Memory mapped register
Table continues on the next page...
The matched_event emulation pin reflects the matching condition status detected by the
Event Detection Unit. Because it can be necessary to detect conditions without triggering
debug requests, it is possible to disable the generation of debug requests by the Event
Detection Unit and still have the matching condition available on the emulation pin. This
can be done by clearing the EN flag in the ECTL register.
All real-time debug outputs are disabled by default (for example, they are stuck to 0) to
avoid power consumption when they are not used. They are enabled when bit 11
(RTDOBS) of the Configuration Register (SDMAARM_CONFIG) is set. Signals
provided to the system JTAG controller for SDMA debug mode status will also be
enabled when the clk_gating_off input is asserted.
ff - flag to clear
00000jjj00000000 - done (done,yield,wait)
00000jjj00000001 - notify
00000xxx00000010 - reserved
00000xxx00000011 - reserved
00000xxx00000100 - reserved
0000000000000101 - softBkpt
0000000100000101 - reserved
0000001000000101 - reserved
0000001100000101 - reserved
0000010000000101 - reserved
0000010100000101 - reserved
0000011000000101 - reserved
0000011100000101 - reserved
0000000000000110 - ret
0000000100000110 - reserved
0000001000000110 - reserved
0000001100000110 - reserved
0000010000000110 - reserved
0000010100000110 - reserved
0000011000000110 - reserved
0000011100000110 - reserved
T ← (GReg[r] == 0)
Assembler:
Syntax: add r,s
Description: Performs the ADDition of the source general register s and the destination
general register r, and stores the result in the destination general register r. The T flag is
set if the result of the operation is 0. It is cleared if the result is not 0.
Instruction Format:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 0 1 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
T ← (GReg[r] == 0)
Assembler:
Syntax: addi r,immediate
ADD GReg[6] and decimal value 112 and store the result in GReg[6]
CPU Flags: T
Cycles: 1
Description: Adds a 0-extended immediate value to a general register; stores the result in
the general register. The flag T is set when the result of the operation is 0; otherwise, it is
cleared. The immediate value is the low-order byte of the instruction and has a maximum
value of 255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 1 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: and r,s
Description: Performs the AND of the source general register s and the destination
general register r, and stores the result in the destination general register r.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 1 1 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: andi r,immediate
AND GReg[7] and decimal value 45 and store the result in GReg[7]
CPU Flags: unaffected
Cycles: 1
Description: Performs an AND between a 0-extended immediate value and a general
register; stores the result in the general register. The immediate value is the low-order
byte of the instruction and has a maximum value of 255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 1 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax:andn r,s
AND GReg[3] and NOT GReg[4] (bit inverted) and store the result in GReg[3]
CPU Flags: Unaffected
Cycles: 1
Description: Performs the AND of the negation of the source general register s and the
destination general register r, and stores the result in the destination general register r.
Instruction Format:
Instruction Fields:
rrr /sss - destination register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: andni r,immediate
AND GReg[0] and decimal value -3 (inverted 32-bit value 2) and store the result in
GReg[0]
CPU Flags: unaffected
Cycles: 1
Description: Performs an AND between the negation of a 0-extended 8-bit immediate
value and a general register; stores the result in the general register. The immediate value
is the low-order byte of the instruction and has a maximum value of 255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 0 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: asr1 r
Example: asr1 3
divide by 2 the signed value of GReg[3] and store the result in GReg[3]
CPU Flags: Unaffected
Cycles: 1
Description: Shift the bits of any general register to the right and keep the same sign: The
left bit (bit 31) is kept untouched.
Instruction Format:
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: bclri r,i
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 1 i i i i i
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00001 - 1
...
11110 - 30
11111 - 31
Assembler:
Syntax:bdf label
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 1 1 p p p p p p p p
Instruction Fields:
00000001 - 1
...
01111110 - 126
01111111 - 127
10000000 - (-128)
10000001 - (-127)
...
11111110 - (-2)
11111111 - (-1)
PC ← PC + 1 + displacement
else
PC ← PC + 1
Assembler:
Syntax: bf label
Example: bf LLL
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 0 0 p p p p p p p p
Instruction Fields:
pppppppp - signed displacement field:
00000000 - 0
00000001 - 1
...
01111110 - 126
01111111 - 127
10000000 - (-128)
10000001 - (-127)
...
11111110 - (-2)
11111111 - (-1)
Assembler:
Syntax: bseti r,i
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 1 0 i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00001 - 1
...
11110 - 30
11111 - 31
Assembler:
Syntax: bsf label
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 1 0 p p p p p p p p
Instruction Fields:
00000001 - 1
...
01111110 - 126
01111111 - 127
10000000 - (-128)
10000001 - (-127)
...
11111110 - (-2)
11111111 - (-1)
PC ← PC + 1 + displacement
else
PC ← PC + 1
Assembler
Syntax: bt label
bt LLL
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 0 1 p p p p p p p p
00000001 - 1
...
01111110- 126
01111111 - 127
10000000 - (-128)
10000001 - (-127)
...
11111110 - (-2)
11111111 - (-1)
Assembler:
Syntax: btsti r,i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
0001 - 1
...
11110 - 30
11111 - 31
SF ← 0
if (ff/2 == 0)
DF ← 0
Assembler:
Syntax: clrf ff
Example: clrf 2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 f f 0 0 0 0 0 1 1 1
Instruction Fields:
ff - flags field:
00 - clear SF and clear DF
01 - clear DF
10 - clear
SF 11 - no clear
Assembler:
Syntax: cmpeq r,s
Compare GReg[7] and GReg[5] and set flag T if they are equal
CPU flags: T
Cycles: 1
Description: Subtracts the destination general register r from the source general register s,
and sets T if the result is 0, clears T if the result is not 0.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 1 0 0 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: cmpeqi r,immediate
Compare GReg[2] and decimal value 13 and set flag T if they are equal
CPU Flags: T
Cycles: 1
Description: Subtracts the 0-extended 8-bit immediate value from the general register,
and sets T if the result is 0, clears T if the result is not 0. The immediate value is the low-
order byte of the instruction.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 0 1 r r r i i i i i i i i
Instruction Fields:
rrr - destination register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
Assembler:
Syntax: cmphs r,s
Compare GReg[0] and GReg[1] and set flag T if GReg[0] is higher than or equal to
GReg[1]
CPU Flags: T
Cycles: 1
Description: Compares the destination general register r and the source general register s,
and sets T if the destination general register r is higher than or equal to the source general
register s, clears T otherwise. The comparison is unsigned.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 1 0 1 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: cmplt r,s
Compare GReg[7] and GReg[4] and set flag T if GReg[7] is lower than GReg[4]
CPU Flags: T
Cycles: 1
Description: Compares the destination general register r and the source general register s,
and sets T if the destination general register r is lower than the source general register s,
clears T otherwise. The comparison is signed.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 1 0 1 0 s s s
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0
if (jjj == 3) HI[CCR] ← 1
if (jjj == 4) EP[CCR] ← 0
CCR ← NCR
else
CCR ← NCR
(CCR stands for Current Channel Register; NCR stands for Next Channel Register)
Assembler:
Syntax: done jjj
Example: done 3
Clear HE bit for the current channel, send an interrupt to the Arm platform for the current
channel and reschedule.
CPU Flags: Unaffected
Cycles: Variable if a context switch is done, 1 otherwise
Description: Clears one of the channel enabling bits (HE or EP for the corresponding
channel number) if required. Sends an interrupt to the corresponding Arm platform by
setting the appropriate flag, if required (HI for the corresponding channel number).
Reschedules according to the mode and the NCP (Next Channel Priority) and CCP
(Current Channel Priority) values. According to the scheduling decision, the NCR (Next
Channel Register) is copied to the CCR (Current Channel Register) and channel contexts
are switched. If several channels with the same highest priority are pending, they are
ordered by their number from 31 down to 0. The higher number is selected (for example,
channel 26 is selected if channels 3, 12, 14, and 26 with the same highest priority are
pending). If no flag is modified, the reschedule can allow the replacement of the current
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 1105
Smart Direct Memory Access Controller (SDMA)
channel by another channel with a priority strictly greater than the current channel
priority (yield). Or, it can allow the replacement of the current channel by another
channel with a priority greater than or equal to the current channel priority (yieldge). In
the latter case, the selected channel will always be the first one with the same priority,
starting from channel number 31 down to channel 0 (the current channel does not belong
to the set of selectable channels).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 j j j 0 0 0 0 0 0 0 0
• done 4 is executed by a channel script that was triggered by a DMA request, when its
task is completed and it requires termination;
• done 5 is used in debug mode only; it copies the PCU registers and flags to the
context memory of the current channel;
Assembler:
Syntax: illegal
Assembler:
Syntax: jmp label
Description: Jumps to the absolute address contained the lower 14 bits of the instruction
(the PC is a 14-bit register).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 a a a a a a a a a a a a a a
00000000000001 - 1
...
11111111111110 - 16382
11111111111111 - 16383
Assembler:
Syntax: jmpr r
Example: jmpr 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 0 1 0 0 0
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
PC ← absolute_address
Assembler:
Syntax: jsr r
Example:jsr LLL
Jumps to subroutine starting at LLL; the assembler translates the label to exact address
CPU Flags: Unaffected
Cycles: 2
Description: Jumps to the subroutine located at the absolute address contained the lower
14 bits of the instruction (the PC is a 14-bit register).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 a a a a a a a a a a a a a a
00000000000001 - 1
...
11111111111110 - 16382
11111111111111 - 16383
PC ← GReg[r]
Assembler:
Syntax: jsrr r
Example:jsrr 5
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 0 1 0 0 1
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
if (transfer_error)
SF ← 1
else
SF ← 0
Assembler:
Syntax: ld r,(b,displacement)
Example: ld 1,(2,23)
Loads data into GReg[1]; the data is located at address obtained by adding decimal value
23 to GReg[2]
CPU Flags: SF
Cycles: 2+n where n is 0 for ROM, RAM or memory mapped registers, and n is the
number of wait-states of the peripheral for a peripheral access
Description: Adds a 5-bit 0-extended displacement to a base address in General Register
b; the result is the address of the data to fetch on the DM bus. The data received from the
bus is stored in the destination General Register r. If an error occurs during the transfer,
the flag SF is set, else it is cleared.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 1 0 r r r d d d d d b b b
001 - GReg[1]
...
111 - GReg[7]
00001 - 1
...
11111 - 31
if (transfer_error)
SF ← 1
SF ←0
Loads data coming from the Burst DMA register MD into GReg[0]; it is a 32-bit access
with no prefetch
CPU Flags: SF
Cycles: 1+n where n is the number of wait-states that may be inserted by the functional
unit
Description: Sends an 8-bit address on the Functional Unit Bus (FU bus) and stores the
data received from the bus in the destination General Register r. If an error occurs during
the transfer, the flag SF is set, else it is cleared.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 0 0 r r r f f f f f f f f
See the following sections for more details of the LDF instruction usage with each
functional unit:
• Burst DMA Read (ldf) for Burst DMA
• Peripheral DMA Read (ldf)-Read Mode for Peripheral DMA
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
ffffffff - functional unit source register and action (unspecified values are reserved):
00000000 - MSA
00000100 - MDA
00001001 - MD byte
00001010 - MD halfword
00001011 - MD word
00001100 - MS
01000000 - DSA
11000000 - PSA
11001000 - PD
11010000 - PDA
11111111 - PS
Assembler:
Syntax: ldi r,immediate
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: ldrpc r
Example: ldrpc 3
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 0 1 0 1 0
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
SF ← 0
if (ff/2 == 0)
DF ← 0
PC ← PC + loop_size + 1
else
SPC ← PC + 1
EPC ← PC + loop_size + 1
LM ← 1
PC ← PC + 1
PC ← EPC
GReg[0] ← GReg[0] - 1
if (GReg[0] == 0)
LM ← 0
PC ← EPC
else
PC ← SPC
else
PC ← nextPC(instruction)
T ← 1
else
T ← 0
Assembler:
Syntax: loop n{,ff}
Executes GReg[0] times the instructions comprised between PC+1 and PC+3 (included);
ff=1 clears the DF flag before starting the loop. When omitted, the ff field is set to 0
(clearing both SF and DF).
CPU Flags: LM[1:0], T
Cycles: 2 when the loop count (GReg[0]) is 0 or SF or DF is set at loop start, 1+1 when
the loop starts but exits abnormally (SF or DF set inside the loop which adds 1 cycle to
the offending load or store to jump to EPC), 1 when the loop is executed normally
Description: The loop instruction executes a sequence of instructions several times. The
number of times is given by the contents of GReg[0], the loop counter. SDMA will jump
to the first instruction after the end of the loop if the value in GReg[0] is 0. Otherwise the
SDMA enters loop mode. It sets the most significant bit of the LM flag that will only be
reset once the last instruction of the last loop is executed. The instructions in the loop are
executed GReg[0] times. The management of fault flags (SF and DF) is as follows. When
entering the hardware loop, SF and DF can be cleared according to the ff field of the
instruction. After that operation, if any flag is still set the loop will not be executed. The
SDMA will jump to the first instruction after the end of the loop without entering loop
mode. During the execution of the loop, if any fault flag is set by a LD, LDF, ST, or STF
instruction, the SDMA will immediately exit loop mode and jump to the first instruction
after the end of the loop. In that case, GReg0 is not decremented for that last piece of the
loop body execution (even if the SF or DF flag is set at the last instruction of the loop
body). The T flag reflects the state of GReg[0] after the end of the loop, which is an
indicator of the complete execution of the loop. If the loop exited because of an error (SF
or DF set), GReg[0] will not be 0 at the end of the loop, hence T will be cleared. If the
loop executes without fault, GReg[0] will be 0 at the end of the loop, hence T will be set.
The boundary case when a source or destination fault occurs at the last instruction of the
last loop is considered as an anticipated exit of the loop, which causes the T flag to be
cleared. If the last instruction executed before leaving the hardware loop also tries to
modify the T flag, the flag is updated according to the value of GReg[0], NOT according
to the result of the last executed instruction.
Limitations:
1. 1. Jump instructions (JMP, JMPR, JSR, JSRR, BF, BT, BSF, BDF) are not allowed
inside the hardware loop.
2. 2. GReg[0] cannot be written to inside the hardware loop (it can be read).
3. 3. The empty loop (0 instruction in the body) is forbidden.
4. 4. If GReg[0] == 0 at the start of the loop, which causes a jump to EPC, the T flag is
not updated.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 0 f f n n n n n n n n
Instruction Fields:
ff - flags field:
01 - clear DF
10 - clear SF
...
Assembler:
Syntax: lsl1 r
Example: lsl1 2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 1 1 1
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
Assembler:
Syntax: lsr1 r
Example: lsr1 4
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 1 0 1
Instruction Fields:
rrr - destination register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 1119
Smart Direct Memory Access Controller (SDMA)
Syntax: mov r,s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 0 0 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
if (jjj&2 == 2)
HE[CCR] ← 0
if (jjj&1== 1)
HI[CCR] ← 1
else if (jjj == 4)
else
Example: notify 3
clears the HE bit for the current channel and sends an interrupt to the Host for the current
channel
CPU Flags: Unaffected
Cycles: 1
Description: Clears one of the channel enabling bits (HE or EP for the corresponding
channel number) if required, sends an interrupt to the corresponding Arm platform by
setting the appropriate flag if required (HI for the corresponding channel number).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 j j j 0 0 0 0 0 0 0 1
101 - RESERVED
110 - RESERVED
111 - RESERVED
Assembler:
Syntax: or r,s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 1 0 1 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: ori r,immediate
ORs GReg[1] and the decimal value 56 and stores the result in GReg[1]
CPU Flags: unaffected
Cycles: 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: ret
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
Assembler:
Syntax: revb r
Example: revb 5
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 0 0 0
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: revblo r
Example: revblo 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 0 0 1
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: ror1 r
Example: ror1 3
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 1 0 0
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: rorb r
Example: rorb 2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 0 0 0 1 0 0 1 0
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
DF ← 1
else
DF ← 0
Assembler:
Syntax: st r,(b,displacement)
Example: st 7,(0,9)
stores the value from GReg[7] into memory at address obtained by adding decimal value
9 to GReg[0]
CPU Flags: DF
Cycles: 2+n where n is 0 for ROM, RAM or memory mapped registers, and n is the
number of wait-states of the peripheral for a peripheral access
Description: Adds a 5-bit 0-extended displacement to a base address in General Register
b; the result is the address of the data to store on the DM bus. The data sent on the bus
comes from the source General Register r. If an error occurs during the transfer, the flag
DF is set, else it is cleared.
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 1 1 r r r d d d d d b b b
Instruction Fields:
rrr / bbb - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
...
11111 - 31
if (transfer_error) 0
DF ← 1 0
else 0
DF ← 0
stores the 32-bit contents of GReg[3] to the Burst DMA register MD; waits until the flush
to external memory is completed
CPU Flags: DF
Cycles: 1+n where n is the number of wait-states that may be inserted by the functional
unit
Description: Sends an 8-bit address on the Functional Unit Bus (FU bus) and sends the
contents of the source General Register r on the bus. If an error occurs during the transfer,
the flag DF is set, else it is cleared.
Table 7-53. Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 0 1 r r r f f f f f f f f
See the following sections for more details of the STF instruction usage with each
functional unit:
• Burst DMA Write (stf) for Burst DMA
• Peripheral DMA Write (stf)-Write Mode for Peripheral DMA
Instruction Fields:
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
ffffffff - functional unit destination register and action (unspecified values are reserved):
00000000 - MSA in incremented mode
00001001 - MD byte
00001010 - MD halfword
00001011 - MD word
00001100 - clear MS error flag
00001111 - MS
00010000 - MSA in frozen mode
T ← (GReg[r] == 0)
Assembler:
Syntax: sub r,s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 1 0 0 s s s
Instruction Fields:
rrr / sss - register fields:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
T ← (GReg[r] == 0)
Assembler:
Syntax: sub r,immediate
SUBtracts decimal value 255 from GReg[1] and stores the result in GReg[1]
CPU Flags: T
Cycles: 1
Description: Subtracts a 0-extended 8-bit immediate value from a General Register;
stores the result in the General Register. The flag T is set when the result of the operation
is 0; otherwise, it is cleared. The immediate value is the low-order byte of the instruction
and has a maximum value of 255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 0 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: tst r,s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 1 0 0 0 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: tsti r,immediate
ANDs GReg[5] and decimal value 13 and sets T if the result is non-null
CPU Flags: T
Cycles: 1
Description: Performs the AND of a 0-extended 8-bit immediate value and the
destination General Register r, and sets T if the result is not 0, clears T if the result is 0.
The immediate value is the low-order byte of the instruction and has a maximum value of
255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 0 0 r r r i i i i i i i i
Instruction Fields:
rrr - destination register field:
000 - GReg[0]
001 - GReg[1]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
00000001 - 1
...
11111110 - 254
11111111 - 255
Assembler:
Syntax: xor r,s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 r r r 1 0 0 1 0 s s s
Instruction Fields:
rrr / sss - register field:
000 - GReg[0]
001 - GReg[1]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
111 - GReg[7]
Assembler:
Syntax: xori r,immediate
XORs GReg[5] and decimal value 5 and stores the result in GReg[7]
CPU Flags: Unaffected
Cycles: 1
Description: Performs an eXclusive OR between a 0-extended 8-bit immediate value and
a General Register; stores the result in the General Register. The immediate value is the
low-order byte of the instruction and has a maximum value of 255 (0xFF).
Instruction Format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 0 r r r i i i i i i i i
Instruction Fields:
rrr - register field:
000 - GReg[0]
001 - GReg[1]
010 - GReg[2]
011 - GReg[3]
100 - GReg[4]
101 - GReg[5]
110 - GReg[6]
00000001 - 1
...
11111110 - 254
11111111 - 255
stf r1, MSA|PF ; Update source address, triggers data pre-fetch in the
; background
mov R0,R0 ; Execute multiple assembly instructions, none of which
; read
mov R0,R0 ; or write data to/from MD
stf MD|SZ0|FL ; Flush FIFO without writing data. If the pre-fetch is still
; in progress when this instruction is executed, there
; could be undefined operation
A work-around to avoid any undesirable results is to first read MD to ensure the pre-fetch
is complete before the flush is attempted.
Work-Around to previous example
Data Buffer
currentBDptr
baseBDptr
CCB31
chanDesc Data Buffer
status
The previous figure shows an example how these data structures are linked to pass
command and pointers to data buffers. The SDMA's MC0PTR register holds the base
address of the Channel 0 Control Block (CCB0). The Channel 0 control block holds a
pointer to the array of buffer descriptors. The buffer descriptors are used to tell the
channel 0 (boot channel) what to do as described Buffer Descriptor Format.
The buffer descriptors form an array of programmable size. If the last buffer descriptor is
marked by the Wrap flag-bit W=1, the array of buffer descriptor is treated as a ring with
some logically continuous portion owned by the Arm platform with D=0, and the
remainder owned by the SDMA with D=1. The count field of the buffer descriptor
indicates how much data has been transmitted.
If Arm platform has prepared 3 buffers to be filled by the SDMA script, it has also
prepared 3 BD, one for each buffer. The Cont and Wrap bits are used to organize the
buffers in a circular way. For example, CONTinous bit is set to 1 in the 2 first BDs and
Wrap is set in the 3rd BD. The SDMA script opens and processes BD#1. Since
CONTinous bit is set for this BD, the SDMA will open the second BD and it will process
it. Each time a BD is processed, its Done bit is reset by the SDMA. After the 3rd BD, if
CONTinous is not set but if Wrap is set, the SDMA script stops here and the next time the
channel will be triggered, the script will open the BD pointed by the currentBDptr pointer
of the CCB and it will correspond to the first buffer descriptor.
If the CONTinous bit and Wrap bits are both set in the 3rd BD, the script will close it and
it will try to open the first BD. An error may occur at this point if the BD#1 has already
been processed and its Done bit is 0. The SDMA script cannot process a BD with a Done
bit to 0. It means the BD is not ready to be processed. To avoid this situation, the
CONTinous bit should not be set for the last BD if Wrap is set, and the Interrupt flag
must set for the last BD. It will warn the owner of the BD that all the BDs have been
processed and it has to re-set to 1 the Done bit of all the BD's if it desires the SDMA to
fill them again. Basically, if the Arm platform expects the SDMA to fill up the buffers in
a circular fashion, then it's the responsibility of the Arm platform to set the Done bit of a
buffer descriptor at an appropriate time.
AP MEM
AP BD1, BD2 & BD3
Buffer 1 CD 25
(25 bytes)
CD 50
Buffer 2
Incoming Data SDMA
(50 bytes)
IWD 25
Buffer 3
(25 bytes) Interrupt to AP
(HI)
The previous figure shows an example buffer descriptor flow. When the incoming data is
stored and fills the first buffer of 25 bytes, the SDMA script opens the second BD
because the CONTinuous bit was set. Then next incoming data is put in the second
buffer. After receiving 50 bytes, the second buffer descriptor is also closed. The Done bit
is reset and the third BD is opened. After receiving another 25 bytes, the third buffer is
full and an interrupt is sent to the Arm platform because the Interrupt flag is set in the 3rd
BD. The CONTinuous flag is not present the transfer is over. The next time the script will
be triggered, the BD to be opened will be the first buffer descriptor since the Wrap flag
was set in the 3rd BD. It is the Arm platform responsibility to set the Done bit of all the
BD if it wants to use the same buffers.
used, the count field is expressed in "long" (32-bit words), this command can be used
to download channel contexts to the context channel area in RAM.
• C0_GET_[PM-DM]: write to the buffer descriptor's data buffer the content of the
SDMA local memory from the address pointed to by the "extended buffer address"
field for the length defined by the count in the buffer descriptor. C0_GET_PM is
used to dump some part of the Program Memory (may be used to dump context of a
channel), therefore count is expressed in "shorts"; while C0_GET_DM is used to
dump to the buffer descriptor's data buffer, so the count field is in "longs."
• C0_SETCTX: load a context into the SDMA context page area. The handling script
decodes the channel number from the 5 MSB of the command field of the buffer
descriptor. Using the channel number the script computes the offset of the context
data pointer for the channel relative to the context page base to use as the destination
address in SDMA memory. Then the C0_SET_DM command explained above is
invoked to load SDMA RAM from memory. The counter indicates the size in words
of the context structure.
• Command value: (in binary) cccc c111, where ccccc is the channel number (5 bits).
For instance, 0x0F means set context for channel 1, 0xFF means set context for
channel 31.
• C0_GETCTX: write to the buffer descriptor's data buffer the content of the SDMA
context page area. The handling script decodes the channel number from the 5 MSB
of the command field of the buffer descriptor. Using this channel number, the script
computes the offset of the context data pointer for the channel relative to the context
page base to use as the source address for the copy. Then the C0_GET_DM
command explained above is invoked to copy the context to memory. The counter
indicates the size in words of the context structure.
• Command value: (in binary): cccc c011, where ccccc is the channel number (5 bits).
For instance, 0x03 means get context of channel 1, 0xFB means get context of
channel 31.
NOTE
To download channel context, C0_SETDM and
C0_SETCTXT command can be used but the second one is
easier because the channel number is embedded into the
command field, whereas with the C0_SETDM, the pointer
to the channel context area must be written into the
extended buffer address field of the buffer descriptor.
0x960 Content
Channel 10 Context Area
0xC00
Channel 1 Script
Channel 4 Script
Scripts and Data
Area
Channel 10 Script
SDMA Register
MC0PTR
Buffer Address
00100111 0 0 1 0 1 20
BD1 - SET CONTEXT CH#1 Buffer Address
Interrupt = 0,
Cont=1, Done = 1
Extended Buffer Address (Unused)
BD2 - SET CONTEXT CH#4
Interrupt = 0, 01010111 0 0 1 0 1 20
Cont=1, Done = 1
Buffer Address
BD3 - SET CONTEXT CH#10
Interrupt = 0, Extended Buffer Address (Unused)
Cont=1, Done = 1
00000100 0 0 1 0 1 10
BD4 - SET_PM
Interrupt = 0, Buffer Address
Cont=1, Done = 1
Extended Buffer Address
BD5 - SET_PM
Interrupt = 0, 00000100 0 0 1 0 1 40
Cont=1, Done = 1
Buffer Address
BD6 - SET_PM
Interrupt = 1, Extended Buffer Address
Cont=0, Done = 1
00000100 0 1 0 0 1 50
Buffer Address
AP Memory Space
Channel 4 context
(32) longs)
Context Area
Channel 10 context
(32 longs)
Scripts Area
Channel 1 script
(16 shorts)
Channel 4 script
(64 shorts)
Channel 10 script
(80 shorts)
31 30 29 16 15 14 13 0
_ _
SF RPC T PC
_
LM EPC DF SPC
NOTE
These scripts are provided as examples of how to use DMA
blocks to perform required data transfers: They are not
"official" programs.
The SDMA core only monitors data transfer status. It is assumed source and destination
address values are already present in two SDMA general registers (r1 and r2). For this
example, it is also assumed that a 32-bit word-to-move for source-to-destination address
is present in r0 and equals 64.
Data Moves in External Memory
1 stf r1,MSA // Source address setup
4 ldi r1,0x8
MAIN_XFER:
LAST_XFER:
All instructions are performed in one cycle (jumps excepted). Instruction 7 triggers a
copy transfer: A read burst access of 8-word starts, data is staged in MD and then a write
burst of 8 words is executed. Instruction 8, 9, 5, and 6 are executed while the burst access
is in progress. If this access is not complete when instruction 7 is executed a second time,
SDMA stalls on this instruction as long as the previous copy transfer is not over. In this
case, the instruction is no longer a one-cycle instruction.
During the main loop (MAIN_XFER), r1 always equals 8, so burst lengths are 8 words.
On the last ldf |CPY instruction (10), r1 equals the reminder of r0 divided by 8; therefore,
the length of bursts triggered in copy mode equal r1 value, which is between 1 and 7.
7.2.6.2.2.1 Source and Destination Target Have the Same Data Path Width
When the source and destination target have the same data path width, the following is
true:
• Source target is a half-word (16-bit) peripheral located at address 0x1002.
• Destination is a half-word (16-bit) peripheral located at address 0x2006.
It is assumed the address values are already present in two SDMA general registers (r1,
r2). The script for a transfer of 10 half-word is as follows:
Same Data Path Width for Source and Destination
//SETUP SECTION
1 stf r1, PSA|SZ16|F //r1=0x1002 Source address register setup
2 stf r2, PDA|SZ16|F //r2=0x2006 Destination address register
setup
3 bdf ERROR_ADDR_SETUP
4 ldi r0,0xa //loop counter is 10
//MAIN LOOP TRANFER
copy_loop:
5 loop 2,0
6 ldf r7,PD|CPY //Reads 1 half-word from src and writes to
dest.
7 yield
8 bdf ERROR_DURING_XFER
ERROR_ADDR_SETUP:
//correction of PSA/PDA setup and jumps to main loop transfer
ERROR_DURING_XFER:
//flag error is set,
//PS can be read to know if error occurs during read or write access.
If a data transfer must occur between two word peripherals, only the setup section should
be updated. The transfer itself is always performed by the hardware loop instruction.
All instructions are executed in one cycle (change of flow excepted). On instruction 6, a
single read access is triggered, read data is staged in PD, and a write-to-destination is
executed. When the transfers are in progress, the SDMA can execute he next instructions
in parallel. If instruction 6, which performs the copy transfer, is executed while the
previous access is not over, SDMA is stalled and instruction ldf is a multi-cycle
instruction.
7.2.6.2.2.2 Source and Destination Target Have a Different Data Path Width
When the source and destination target have a different data path width, copy mode
cannot be used, and any attempt to initiate a copy transfer immediately raises an error,
which is stored in the SF flag.
The following example shows the SDMA code that could transfer 10 words from a word
(32-bit) peripheral to a half-word peripheral whose addresses are preliminary and stored
in r1 and r2.
On instruction 1, when the source address register is programmed and a data prefetch is
required, a read access is executed. In parallel, the SDMA executes instructions 2 to 5.
On instruction 6, the SDMA tries to read data that was fetched by instruction 1. If data is
ready, the ldf will be a one cycle instruction; otherwise, the SDMA is stalled as long as
the read access is not finished. Then, the 16 LSB of the read data is stored in PD and
automatically flushed to the destination peripheral. In parallel, the SDMA executes the
rotation instructions (8, 9), and stores the 16 MSB of the read data into PD. If a previous
write access is finished, instruction 10 will be a one-cycle instruction.
The main loop transfer may appear inefficient, but due to wait states imposed to the
peripheral DMA each time an external access is performed, a software pipeline is in
place. During the time needed to flush PD, the SDMA executes the move and rotation
operations. SDMA executes instructions in parallel with DMA accesses.
On instruction 1, the source address register of the peripheral DMA is programmed and
data is fetched. This data is stored in PD and the SDMA reads PD during instruction 7,
which is a one-cycle instruction that is read-access finished. On the same instruction (7),
a data prefetch is required and a read access to the source peripheral is executed. In
parallel, the SDMA stored the previous read data into the data register of MD. When MD
(which is an eight-word FIFO) is full, a burst write access is executed to empty the FIFO.
As long as the next SDMA instructions do not access the burst DMA, they will be one-
cycle instructions. The following figures show how the peripheral DMA and burst DMA
work in parallel.
1 2 3
Clk
SDMA
ldf PD stf MD yield ldf PD stf MD yield Idf PD stf MD yield
Instruction
peripheral
data 0 data 1
DMA port
1 wait state 2 wait states
As seen in the figure above, the read access triggered by the ldf PD instruction is
symbolized by the blue bar when in progress. After wait states, the read data (data 0, data
1) is stored in PD on the clk rising edge. On edge 2, data 0 is available in PD so it can be
transferred to the SDMA general register r1, and then stored in MD FIFO. On edge 3,
data 1 is not in PD; therefore, SDMA is stalled on the ldf instruction, which lasts two
cycles. The figure below shows an example of when MD FIFO is full with data.
1 2 3
Clk
SDMA
ldf PD stf MD yield ldf PD stf MD yield Idf PD stf MD
Instruction
peripheral
data 8 data9
DMA port
8-word burst
Burst DMA
4 wait-states ack ack ack ack
port
MD
data 0 data 1 data 2 data 3
data 1 data 2 data 3 data 4
data 2 data 3 data 4 data 5
data 3 data 4 data 5 data 6
data 4 data 5 data 6 data 7
data 5 data 6 data 7 data 8
data 6 data 7 data 8
data 7 data 8
In the previous figure, the write bar means the burst DMA is performing a write burst
access. The latency to have the first write acknowledge is four cycles. SDMA is stalled
on instruction stf because no acknowledge was received, MD FIFO is full, and there is no
empty slot to store data 9. When an acknowledge is sampled by the burst DMA, FIFO is
shifted and data 8 is written. As long as there is at least one empty slot in MD FIFO, the
stf MD instruction lasts one cycle.
On instruction 1, a read burst of 8 words begins. Read data is staged into MD. On
instruction 7 (and if data is available in MD), 32 bits are copied into r1. Then instruction
8 writes them into PD and an automatic flush is executed. The SDMA core, peripheral
DMA, and burst DMA can work in parallel as long as no SDMA instruction tries to start
a new write access on the peripheral DMA while the previous access is still in progress,
or as long as there is data in MD when the SDMA tries to read it.
Since the internal memory (Arm platform RAM) is accessed via the peripheral DMA and
the external memory is accessed via the burst DMA, the SDMA scripts that are described
in Transfer Between Peripheral and External Memory can be reused. The exception is
that the peripheral DMA address registers (PSA or PDA, depending on the script) should
be programmed in incremented mode rather than frozen mode.
The Arm platform controls the SDMA by means of several interface registers. Those
registers are described in the current section.
All registers are clocked with the SDMA clock (which means the Arm platform must
ensure that the SDMA clock is running when it wants to access any register).
SDMAARM memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
30BD_0000 Arm platform Channel 0 Pointer (SDMAARM1_MC0PTR) 32 R/W 0000_0000h 7.2.7.1/1220
30BD_0004 Channel Interrupts (SDMAARM1_INTR) 32 w1c 0000_0000h 7.2.7.2/1220
30BD_0008 Channel Stop/Channel Status (SDMAARM1_STOP_STAT) 32 w1c 0000_0000h 7.2.7.3/1220
30BD_000C Channel Start (SDMAARM1_HSTART) 32 R/W 0000_0000h 7.2.7.4/1221
30BD_0010 Channel Event Override (SDMAARM1_EVTOVR) 32 R/W 0000_0000h 7.2.7.5/1221
30BD_0014 Channel BP Override (SDMAARM1_DSPOVR) 32 R/W FFFF_FFFFh 7.2.7.6/1222
30BD_0018 Channel Arm platform Override (SDMAARM1_HOSTOVR) 32 R/W 0000_0000h 7.2.7.7/1222
30BD_001C Channel Event Pending (SDMAARM1_EVTPEND) 32 w1c 0000_0000h 7.2.7.8/1222
30BD_0024 Reset Register (SDMAARM1_RESET) 32 R 0000_0000h 7.2.7.9/1223
7.2.7.10/
30BD_0028 DMA Request Error Register (SDMAARM1_EVTERR) 32 R 0000_0000h
1224
Channel Arm platform Interrupt Mask 7.2.7.11/
30BD_002C 32 R/W 0000_0000h
(SDMAARM1_INTRMASK) 1224
7.2.7.12/
30BD_0030 Schedule Status (SDMAARM1_PSW) 32 R 0000_0000h
1225
7.2.7.13/
30BD_0034 DMA Request Error Register (SDMAARM1_EVTERRDBG) 32 R 0000_0000h
1225
7.2.7.14/
30BD_0038 Configuration Register (SDMAARM1_CONFIG) 32 R/W 0000_0003h
1226
7.2.7.15/
30BD_003C SDMA LOCK (SDMAARM1_SDMA_LOCK) 32 R/W 0000_0000h
1227
7.2.7.16/
30BD_0040 OnCE Enable (SDMAARM1_ONCE_ENB) 32 R/W 0000_0000h
1228
7.2.7.17/
30BD_0044 OnCE Data Register (SDMAARM1_ONCE_DATA) 32 R/W 0000_0000h
1228
7.2.7.18/
30BD_0048 OnCE Instruction Register (SDMAARM1_ONCE_INSTR) 32 R/W 0000_0000h
1229
7.2.7.19/
30BD_004C OnCE Status Register (SDMAARM1_ONCE_STAT) 32 R 0000_E000h
1229
Table continues on the next page...
R HI[31:0]
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R HE
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R HSTART_HE
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 - Reserved
1 - Reset value.
R EP
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESCHED
RESET
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R CHNERR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 No running channel
1 Active channel priority
12–8 The Next Channel Register indicates the number of the next scheduled pending channel with the highest
NCR[4:0] priority.
7–4 The Current Channel Priority indicates the priority of the current active channel. When the priority is 0, no
CCP[2:0] channel is running: The SDMA is idle and the CCR value has no meaning. In the case that the SDMA has
finished running the channel and has entered sleep state, CCP will indicate the priority of previous running
channel.
0 No running channel
1 Active channel priority
CCR[4:0] The Current Channel Register indicates the number of the channel that is being executed by the SDMA.
SDMA. In the case that the SDMA has finished running the channel and has entered sleep state, CCR will
indicate the previous running channel.
R CHNERR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 0 0
DSPDMA
RTDOBS
ACR CSM
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SRESET_LOCK_
R 0
LOCK
CLR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 LOCK disengaged.
1 LOCK enabled.
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 ENB
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The value of ENB cannot be changed if the LOCK bit in the SDMA_LOCK register is set.
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Program
1 Data
2 Change of Flow
3 Change of Flow in Loop
4 Debug
5 Functional Unit
6 Sleep
7 Save
8 Program in Sleep
9 Data in Sleep
10 Change of Flow in Sleep
11 Change Flow in Loop in Sleep
12 Debug in Sleep
13 Functional Unit in Sleep
14 Sleep after Reset
15 Restore
11 After each write access to the real time buffer (RTB), the RCV bit is set. This bit is cleared after execution
RCV of an rbuffer command and on a JTAG reset.
10 This flag is raised when the SDMA has entered debug mode after an external debug request.
EDR
9 This flag is raised when the SDMA has entered debug mode after a OnCE debug request.
ODR
8 This flag is raised when the SDMA has entered debug mode after a software breakpoint.
SWB
7 This flag is raised when the OnCE is controlled from the Arm platform peripheral interface.
MST
0 The JTAG interface controls the OnCE.
1 The Arm platform peripheral interface controls the OnCE.
6–3 This read-only field is reserved and always has the value 0.
Reserved
ECDR Event Cell Debug Request. If the debug request comes from the event cell, the reason for entering debug
mode is given by the EDR bits. If all three bits of the EDR are reset, then it did not generate any debug
request. If the cell did generate a debug request, then at least one of the EDR bits is set (the meaning of
the encoding is given below). The encoding of the EDR bits is useful to find out more precisely why the
debug request was generated. A debug request from an event cell is generated for a specific combination
of the addra_cond, addrb_cond, and data_cond conditions. The value of those fields is given by the EDR
bits.
Table continues on the next page...
0 rstatus
1 dmov
2 exec_once
3 run_core
4 exec_core
5 debug_rqst
6 rbuffer
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0
SMSZ
CHN0ADDR
W
Reset 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0
R EVENTS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 EVENTS[47:32]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 0
CNF3
CNF2
NUM3[5:0] NUM2[5:0]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 0
CNF1
CNF0
NUM1[5:0] NUM0[5:0]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 channel
1 DMA request
29–24 Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
NUM3[5:0] number i.
23 This read-only field is reserved and always has the value 0.
Reserved
22 Configuration of the SDMA event line number i that is connected to the cross-trigger. It determines
CNF2 whether the event line pulse is generated by receiving a DMA request or by starting a channel script
execution.
0 channel
1 DMA request
21–16 Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
NUM2[5:0] number i.
15 This read-only field is reserved and always has the value 0.
Reserved
14 Configuration of the SDMA event line number i that is connected to the cross-trigger. It determines
CNF1 whether the event line pulse is generated by receiving a DMA request or by starting a channel script
execution.
Table continues on the next page...
0 channel
1 DMA request
NUM0[5:0] Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
number i.
R 0 0
CNF7
CNF6
NUM7[5:0] NUM6[5:0]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 0
CNF5
CNF4
NUM5[5:0] NUM4[5:0]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 channel
1 DMA request
0 channel
1 DMA request
21–16 Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
NUM6[5:0] number i.
15 This read-only field is reserved and always has the value 0.
Reserved
14 Configuration of the SDMA event line number i that is connected to the cross-trigger. It determines
CNF5 whether the event line pulse is generated by receiving a DMA request or by starting a channel script
execution
0 channel
1 DMA request
13–8 Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
NUM5[5:0] number i.
7 This read-only field is reserved and always has the value 0.
Reserved
6 Configuration of the SDMA event line number i that is connected to the cross-trigger. It determines
CNF4 whether the event line pulse is generated by receiving a DMA request or by starting a channel script
execution.
0 channel
1 DMA request
NUM4[5:0] Contains the number of the DMA request or channel that triggers the pulse on the cross-trigger event line
number i.
Address: Base address + 100h offset + (4d × i), where i=0d to 31d
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 CHNPRIn
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SW_DONE_DIS2
DONE_SEL3
DONE_SEL2
R 0 0
CH_SEL3 CH_SEL2
W
Reset 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SW_DONE_DIS1
SW_DONE_DIS0
DONE_SEL1
DONE_SEL0
R 0 0
CH_SEL1 CH_SEL0
W
Reset 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1
SW_DONE_DIS6
DONE_SEL7
DONE_SEL6
R 0 0
CH_SEL7 CH_SEL6
W
Reset 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SW_DONE_DIS5
SW_DONE_DIS4
DONE_SEL5
DONE_SEL4
R 0 0
CH_SEL5 CH_SEL4
W
Reset 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1
The following section describes SDMA control registers available to the BP.
NOTE
These registers are physically implemented in all platforms, but
are not accessible when the SDMA BP control port is not
connected. Reset values are calculated to allow the system to
work when those registers cannot be accessed.
All registers are clocked with the SDMA clock (which means the SDMA clock must be
running when the BP wants to access any register).
SDMABP memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
30BD_0000 Channel 0 Pointer (SDMABP1_DC0PTR) 32 R/W 0000_0000h 7.2.8.1/1243
Table continues on the next page...
R DI
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R DE
W w1c
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R DSTART_DE
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R CHNERR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R CHNERR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The actual SDMA memory mapped registers are summarized in the following sections;
for peripherals' memory maps, refer to the respective chapters.
The following definitions serve as a key for the SDMA internal register summary.
SDMACORE memory map
Absolute
Width Section/
address Register name Access Reset value
(in bits) page
(hex)
30BD_0000 Arm platform Channel 0 Pointer (SDMACORE1_MC0PTR) 32 R 0000_0000h 7.2.9.1/1249
30BD_0008 Current Channel Pointer (SDMACORE1_CCPTR) 32 R 0000_0000h 7.2.9.2/1249
30BD_000C Current Channel Register (SDMACORE1_CCR) 32 R 0000_0000h 7.2.9.3/1250
30BD_0010 Highest Pending Channel Register (SDMACORE1_NCR) 32 R 0000_0000h 7.2.9.4/1250
30BD_0014 External DMA Requests Mirror (SDMACORE1_EVENTS) 32 R 0000_0000h 7.2.9.5/1251
30BD_0018 Current Channel Priority (SDMACORE1_CCPRI) 32 R 0000_0000h 7.2.9.6/1252
30BD_001C Next Channel Priority (SDMACORE1_NCPRI) 32 R 0000_0000h 7.2.9.7/1252
Table continues on the next page...
R MC0PTR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 CCPTR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 CCR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 NCR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NOTE
This register is very useful in the case of DMA requests that are
active when a peripheral FIFO level is above the programmed
watermark. The activation of the DMA request (rising edge) is
detected by the SDMA logic and it can enable one or several
channels. One of the channels accesses the peripheral and reads
or writes a number of data that matches the watermark level
(for example, if the watermark is four words, the channel reads
or writes four words).
If the channel is effectively executed long after the DMA
request was received, reading or writing the watermark number
of data may not be sufficient to reset the DMA request (for
example, if the FIFO watermark is four and at the channel
execution it already contains nine pieces of data). This means
no new rising edge may be detected by the SDMA, although
there still remains transfers to perform. Therefore, if the
channel were terminated at that time, it would not be restarted,
causing potential overrun or underrun of the peripheral.
The proposed mechanism is for the channel to check this
register after it has performed the "watermark" number of
accesses to the peripheral. If the bit for the DMA request that
triggers this channel is set, it means there is still another
watermark number of data to transfer. This goes on until the bit
is cleared. The same script can be used for multiple channels
that require this behavior. The script can determine its channel
number from the CCR register and infer the corresponding
DMA request bit to check. It needs a reference table that is
coherent with the request-channel matrix that the Arm platform
programmed.
Address: Base address + 14h offset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R EVENTS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 CCPRI
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 no running channel
R 0 NCPRI
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 EN CNT ECTC[1:0] DTC[1:0] ATC[1:0] ABTC[1:0] AATC[1:0] ATS[1:0]
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Cell is disabled.
1 Cell is enabled.
12 Event Counter Enable. The event counter enable bit determines if the cell counter is used during the event
CNT detection. In order to use the event counter during an event detection process, the event cell counter
register should be loaded with a value equal to the number of times minus one that an event occurs before
a debug request is sent. After every event detection, the counter is decreased. When the counter reaches
Table continues on the next page...
0 Counter is disabled.
1 Counter is enabled.
11–10 The event cell trigger condition bits select the combination of address and data matching conditions that
ECTC[1:0] generate the final address/data condition. During program execution, if this event cell trigger condition
goes to 1, a debug request is sent to the SDMA. The EN bit must be set to enable the debug request
generation.
00 address ONLY
01 data ONLY
10 address AND data
11 address OR data
9–8 The data trigger condition bits define when data is considered matching after comparison with the data
DTC[1:0] register of the event detection unit. The operations are performed on unsigned values.
00 equal
01 not equal
10 greater than
11 less than
7–6 The address trigger condition bits select how the two address conditions (addressA and addressB) are
ATC[1:0] combined to define the global address matching condition. The supported combinations are described, as
follows.
00 addressA ONLY
01 addrA AND addrB
10 addrA OR addrB
11 reserved
5–4 The Address B Trigger Condition (ABTC) controls the operations performed by address comparator B. All
ABTC[1:0] operations are performed on unsigned values. This comparator B outputs the addressB condition.
00 equal
01 not equal
10 greater than
11 less than
3–2 The Address A Trigger Condition (AATC) controls the operations performed by address comparator A. All
AATC[1:0] operations are performed on unsigned values. This comparator A outputs the addressA condition.
00 equal
01 not equal
10 greater than
11 less than
ATS[1:0] The access type select bits define the memory access type required on the SDMA memory bus.
00 read ONLY
01 write ONLY
10 read or write
11 -
NOTE: There is a common address mask value for both address comparators. If bit i of this register is
set, then bit i of the address value latched from the memory bus does not influence the result of
the address comparison. The register is cleared on a JTAG reset.
R 0 TBF TADDR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R TADDR CHFADDR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Invalid information
1 Valid information
27–14 The target address is the address taken after the execution of the change of flow instruction.
TADDR
CHFADDR The change of flow address is the address where the change of flow is taken when executing a change of
flow instruction.
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 Program
1 Data
2 Change of Flow
3 Change of Flow in Loop
4 Debug
5 Functional Unit
6 Sleep
7 Save
8 Program in Sleep
9 Data in Sleep
10 Change of Flow in Sleep
11 Change Flow Loop Sleep
12 Debug in Sleep
13 Functional Unit in Sleep
Table continues on the next page...
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMSZ
R 0 CHN0ADDR[13:0]
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
APEND
R 0 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LOCK
R 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R 0 EVENTS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.1 Introduction
The enhanced direct memory access (eDMA) controller is capable of performing
complex data transfers with minimal intervention from a host processor. The hardware
microarchitecture includes:
• A DMA engine that performs:
• Source address and destination address calculations
• Data-movement operations
• Local memory containing transfer control descriptors for each of the 32 channels
eDMA system
Write Address
Write Data
0
1
2
Transfer Control
Descriptor (TCD)
n-1
64
Address Path
Control
Data Path
Write Data
Address
eDMA eDMA
Peripheral Done
Request
All the channels provide the same functionality. This structure allows data transfers associated
with one channel to be preempted after the completion of a read/write sequence if a higher priority
channel activation is asserted while the primary channel is active.
After a channel is activated, it runs until the minor loop is completed, unless preempted by a
higher priority channel. This provides a mechanism (enabled by CHn_PRI[ECP]) where a large
data transfer can be preempted to minimize the time another channel is blocked from execution.
Table continues on the next page...
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 1213
Enhanced Direct Memory Access (eDMA)
7.3.1.3 Features
The eDMA is a highly programmable data-transfer engine optimized to minimize any
required intervention from the host processor. It is intended for use in applications where
the data size to be transferred is statically known and not defined within the transferred
data itself. The eDMA module features:
• All data movement via dual-address transfers: read from source, write to destination
eDMA
Write address
Write data
0
1
2
Transfer control
descriptor (TCD)
n-1
64
Address path
Control
Data path
Write data
Address
eDMA eDMA
peripheral done
request
This example uses the assertion of the eDMA peripheral request signal to request service
for channel n. Channel activation via software and the TCDn_CSR[START] field follows
the same basic flow as peripheral requests. The eDMA request input signal is registered
internally and then routed through the eDMA engine: first through the control module,
then into the program model and channel arbitration.
In the next cycle, the channel arbitration begins using fixed-priority plus the optional
round-robin algorithm. After arbitration is complete, the activated channel number is sent
through the address path and converted into the required address to access the local
memory for TCDn. Next, the TCD memory is accessed and the required descriptor is
read from the local memory and then loaded into the eDMA engine address path's
primary or secondary channel execution registers. The TCD memory is 64 bits wide to
minimize the time needed to fetch the activated channel descriptor and load it into the
address path registers.
The following diagram illustrates the second part of the basic data flow:
eDMA
Write address
Write data
0
1
2
Transfer control
descriptor (TCD)
n-1
64
Address path
Control
Data path
Write data
Address
eDMA eDMA
peripheral done
request
The modules associated with the data transfer (address path, data path, and control) go
through the required sequence of source reads and destination writes to perform the
actual data movement. The source reads are initiated, and the fetched data is temporarily
stored in the data path block until it is gated onto the internal bus during the destination
write. This source read/destination write processing continues until the byte count,
NBYTES, has been transferred.
After NBYTES of data has been moved, the final phase of the basic data flow is
performed. In this segment, the address path logic performs the required updates to
certain fields in the appropriate TCD (for example, SADDR, DADDR, CITER). If the
major iteration count is exhausted, additional operations are performed. These include the
final address adjustments and reloading of the BITER field into the CITER field.
Assertion of an optional interrupt request also occurs at this time, as does a possible fetch
of a new TCD from memory using the scatter/gather address pointer included in the
descriptor (if scatter/gather is enabled). The updates to the TCD memory and the
assertion of an interrupt request are shown in the following diagram.
eDMA
Write address
Write data
0
1
2
Transfer control
descriptor (TCD)
n-1
64
Address path
Control
Data path
Write data
Address
eDMA eDMA
peripheral done
request
The error status fields are read-only. These error indicators are sticky and cannot be
cleared. They show the last recorded error until the DMA is reset. The valid field (VLD)
is used to determine if a new error condition exists. This field is the logical OR of each
channel's error interrupt field (ERR).
After the software has resolved any errors and cleared all of the error interrupt fields, the
valid field is cleared to 0 but the cause of the last error is still indicated.
The following figure shows how each DMA request initiates one minor-loop transfer, or
iteration, without CPU intervention. DMA arbitration can occur after each minor loop,
and one level of minor loop DMA preemption is allowed. The number of minor loops in
a major loop is specified by the beginning iteration count (BITER).
Current major
loop iteration
Source or destination memory count (CITER)
DMA request
• Minor loop 3
•
•
DMA request
DMA request
• Minor loop 1
•
•
The following figure lists the memory array terms and how the TCD settings are related.
For fixed arbitration, the overall priority can be considered a number composed of three
concatenated priority levels: CHn_GRPRI :CHn_PRI:CH_NUM. The largest number has
the highest priority and the lowest number has the lowest priority.
For round-robin arbitration, the priority number is CHn_GRPRI :0:X. The module rotates
through the CHn_PRI=0 channels requesting service without regard to priority among
these channels. Any channel within the arbitration group for which CHn_PRI is greater
than 0 will be serviced before the round-robin channels.
TCDn_CITER = TCDn_BITER = 1
TCDn_NBYTES = 16
TCDn_SADDR = 0x1000
TCDn_SOFF = 1
TCDn_ATTR[SSIZE] = 0
TCDn_SLAST = -16
TCDn_DADDR = 0x2000
TCDn_DOFF = 4
TCDn_ATTR[DSIZE] = 2
TCDn_DLAST_SGA= –16
TCDn_CSR[INTMAJ] = 1
TCDn_CSR[START] = 1 (should be written last after all other fields have been initialized)
All other TCDn fields = 0
TCDn_CITER = TCDn_BITER = 2
TCDn_SLAST = –32
TCDn_DLAST_SGA = –32
a. Read byte from location 0x1000, read byte from location 0x1001, read byte from
0x1002, read byte from 0x1003.
b. Write 32 bits to location 0x2000 → first iteration of the minor loop.
c. Read byte from location 0x1004, read byte from location 0x1005, read byte from
0x1006, read byte from 0x1007.
d. Write 32 bits to location 0x2004 → second iteration of the minor loop.
e. Read byte from location 0x1008, read byte from location 0x1009, read byte from
0x100A, read byte from 0x100B.
f. Write 32 bits to location 0x2008 → third iteration of the minor loop.
g. Read byte from location 0x100C, read byte from location 0x100D, read byte
from 0x100E, read byte from 0x100F.
h. Write 32 bits to location 0x200C → last iteration of the minor loop.
6. eDMA engine writes: TCDn_SADDR = 0x1010, TCDn_DADDR = 0x2010,
TCDn_CITER = 1.
7. eDMA engine writes: CHn_CSR[ACTIVE] = 0.
8. The channel retires, which concludes one iteration of the major loop. The eDMA
goes idle or services the next channel.
9. Second hardware (eDMA peripheral) requests channel service.
10. The channel is selected by arbitration for servicing.
11. eDMA engine writes: CHn_CSR[DONE] = 0, TCDn_CSR[START] = 0,
CHn_CSR[ACTIVE] = 1.
12. eDMA engine reads: Channel TCD data from local memory to internal register file.
13. The source-to-destination transfers are executed as follows:
a. Read byte from location 0x1010, read byte from location 0x1011, read byte from
0x1012, read byte from 0x1013.
b. Write 32 bits to location 0x2010 → first iteration of the minor loop.
c. Read byte from location 0x1014, read byte from location 0x1015, read byte from
0x1016, read byte from 0x1017.
d. Write 32 bits to location 0x2014 → second iteration of the minor loop.
e. Read byte from location 0x1018, read byte from location 0x1019, read byte from
0x101A, read byte from 0x101B.
f. Write 32 bits to location 0x2018 → third iteration of the minor loop.
g. Read byte from location 0x101C, read byte from location 0x101D, read byte
from 0x101E, read byte from 0x101F.
h. Write 32 bits to location 0x201C → last iteration of the minor loop → major loop
complete.
14. eDMA engine writes: TCDn_SADDR = 0x1000, TCDn_DADDR = 0x2000,
TCDn_CITER = 2 (TCDn_BITER).
15. eDMA engine writes: CHn_CSR[ACTIVE] = 0, CHn_CSR[DONE] = 1,
CHn_INT[INT] = 1.
16. The channel retires, which concludes with the major loop complete. The eDMA goes
idle or services the next channel.
The best method to test for minor-loop completion when using hardware-initiated (that is,
peripheral-initiated) service requests is to read the TCDn_CITER field and test for a
change. The hardware request and acknowledge handshake signals are not visible in the
programmer's model.
The TCD status fields execute the following sequence for a hardware-activated channel:
TCDn_CSR
CHn_CSR fields
Stage field State
START ACTIVE DONE
Initiate channel service request via hardware
1 0 0 0
(peripheral request asserted).
2 0 1 0 Channel is executing.
3a 0 0 0 Channel has completed the minor loop and is idle.
3b 0 0 1 Channel has completed the major loop and is idle.
For both activation types, the major-loop-complete status is explicitly indicated via the
CHn_CSR[DONE] field.
The TCDn_CSR[START] field is cleared to 0 automatically when the channel begins
execution, regardless of how the channel activates.
TCDn_CITER[ELINK] = 1
TCDn_CITER[LINKCH] = 0xC
TCDn_CITER[CITER] value = 0x4
TCDn_CSR[MAJORELINK] = 1
TCDn_CSR[MAJORLINKCH] = 0x7
executes as:
1. Minor loop done → set TCD12_CSR[START] field
2. Minor loop done → set TCD12_CSR[START] field
3. Minor loop done → set TCD12_CSR[START] field
4. Minor loop done, major loop done→ set TCD7_CSR[START] field
When minor loop linking is enabled (TCDn_CITER[ELINK] = 1), the
TCDn_CITER[CITER] field uses a nine-bit vector to form the current iteration count.
When minor loop linking is disabled (TCDn_CITER[ELINK] = 0), the
TCDn_CITER[CITER] field uses a 15-bit vector to form the current iteration count. The
bits associated with the TCDn_CITER[LINKCH] field are concatenated onto the CITER
value to increase the range of the CITER.
Note
The TCDn_CITER[ELINK] field and the
TCDn_BITER[ELINK] field must be equal — if they are not, a
configuration error is reported. The CITER and BITER vector
widths must be equal to calculate the major loop halfway done
interrupt point.
The following table summarizes how a DMA channel can link to another DMA channel,
that is, use another channel's TCD, at the end of a loop.
2. Ensure there is no DMA service request from the SPI by verifying that
MP_HRS[HRS] is 0 for the appropriate channel. If no service request is present,
disable the DMA channel by clearing the channel's ERQ field to 0. If a service
request is present, wait until the request has been processed and the HRS field reads
0.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0020h SADDR
{
0024h SMOD SSIZE DMOD DSIZE SOFF
0028h
{
DMLOE
SMLOE
002Ch SLAST
0030h DADDR
CITER.ELINK
Reserved
CITER or
0034h CITER DOFF
CITER.LINKCH
0038h DLAST_SGA
MAJOR.ELINK
BITER.ELINK
INTMAJOR
INTHALF
Reserved
Reserved
START
DREQ
EEOP
BITER or
ESDA
ESG
003Ch BITER BWC MAJOR.LINKCH
BITER.LINKCH
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7.3.5.5.2.1 Offset
Register Offset
MP_CSR 0h
7.3.5.5.2.2 Function
The Management Page Control register defines the basic operating configuration of the
DMA.
Arbitration uses a two-tier priority system; group and channel priority. The eDMA
assigns each channel to a priority group. Group arbitration is fixed-priority and cannot be
changed. Channel arbitration uses fixed priority and may be configured to use a selective
round-robin scheme for specified channels within each priority group. For fixed-priority
arbitration, eDMA selects for execution the highest priority channel requesting service in
the highest priority arbitration group.
The channel priority registers assign the relative priorities within each arbitration group;
see CHn_PRI. All channels with a non-zero CHn_PRI value use fixed-priority
arbitration.
When you enable round-robin arbitration, all channels with channel priority set to zero do
not have a priority and, of those channels requesting service, are cycled through (from
high to low channel number) without regard to priority relative to each other within the
same priority group. Any channel with a non-zero CHn_PRI value automatically has a
higher priority over the round-robin channels. A channel's priority group is assigned in
Channel Arbitration Group (CH0_GRPRI - CH31_GRPRI).
NOTE
For correct operation, changes to the CSR[ERCA, GCLC,
GMRC] fields must be performed when the DMA channels are
inactive; that is, when the CSR[ACTIVE] field is 0.
7.3.5.5.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
ACTIVE_ID
Reserved
Reserved
ACTIVE
W
Reset 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 Reserved
0 Reserved
0 Reserved
R
GMRC
ERCA
EDBG
GCLC
HALT
ECX
HAE
CX
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.5.2.4 Fields
Field Function
31 DMA Active Status
0b - eDMA is idle
ACTIVE
1b - eDMA is executing a channel
30-29 Reserved
—
28-24 Active Channel ID
ACTIVE_ID This field identifies the channel number that is executing when the ACTIVE bit is 1.
23-16 Reserved
—
15-10 Reserved
—
9 Cancel Transfer
CX When set to 1, this field cancels the remaining data transfer, stops the executing channel, and forces the
minor loop to finish. The cancel takes effect after the last write of the current read/write sequence. CX
clears itself to 0 after the cancel has been honored. This cancel retires the channel normally as if the
minor loop had been completed.
0b - Normal operation
1b - Cancel the remaining data transfer
8 Cancel Transfer With Error
ECX Cancellation of the remaining data transfer is similar to that of the CX field. Execution of the the channel
is stopped and the minor loop is forced to finish. The cancellation takes effect after the last write of the
current read/write sequence. The ECX field clears itself to 0 after the cancel is honored. In addition to
Table continues on the next page...
Field Function
cancelling the transfer, ECX treats the cancel as an error condition, thus updating Management Page
Error Status (MP_ES) and generating an optional error interrupt.
0b - Normal operation
1b - Cancel the remaining data transfer
7 Global Master ID Replication Control
GMRC NOTE: If master ID replication is disabled, the privileged protection level (Supervisor mode) for DMA
transfers is used.
0b - Master ID replication disabled for all channels
1b - Master ID replication available and controlled by each channel's CHn_SBR[EMI] setting
6 Global Channel Linking Control
0b - Channel linking disabled for all channels
GCLC
1b - Channel linking available and controlled by each channel's link settings
5 Halt DMA Operations
HALT This field stalls the start of any new channels. Executing channels are allowed to complete. Channel
execution resumes when this field is cleared to 0.
0b - Normal operation
1b - Stall the start of any new channels
4 Halt After Error
HAE When this field is set to 1, any error causes the HALT field to be set to 1. Then all service requests are
ignored until the HALT field is cleared to 0.
0b - Normal operation
1b - Any error causes the HALT field to be set to 1
3 Reserved
—
2 Enable Round Robin Channel Arbitration
0b - Round-robin channel arbitration disabled. Fixed priority arbitration used for channel selection
ERCA
within each group
1b - Round-robin channel arbitration enabled. Round-robin arbitration used for channel selection
within each group
1 Enable Debug
EDBG When in debug mode, the DMA stalls the start of a new channel. Executing channels are allowed to
complete. DMA resumes channel execution when the system exits debug mode or clears the EDBG field
to 0.
0b - Debug mode disabled. When in debug mode, the DMA continues to operate
1b - Debug mode is enabled. When in debug mode, the DMA stalls the start of a new channel
0 Reserved
—
7.3.5.5.3.1 Offset
Register Offset
MP_ES 4h
7.3.5.5.3.2 Function
The ES provides information concerning the last recorded channel error. Channel errors
can be caused by:
• An illegal setting in the transfer control descriptor
• An error termination to a bus master read or write cycle
• An uncorrectable error that occurred when the device was accessing the TCD SRAM
• A "cancel transfer with error" request was made via the corresponding cancel transfer
field or input signal
Upon any error condition, the software must initialize the TCD of the channel that
contains the error, as it is in an incomplete state after an error. See Fault reporting and
handling for more details.
7.3.5.5.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
ERRCHN
Reserved
VLD
R
0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7.3.5.5.3.4 Fields
Field Function
31 Valid
VLD Logical OR of all ERR status fields.
0b - No ERR fields are set to 1
1b - At least one ERR field is set to 1, indicating a valid error exists that software has not cleared
30-29 Reserved
—
28-24 Error Channel Number or Canceled Channel Number
ERRCHN The channel number of the last recorded error or last recorded error-canceled transfer.
23-9 Reserved
Table continues on the next page...
Field Function
—
8 Transfer Canceled
ECX The ECX operation is a management page function. When employed, the targeted channel's CHn_ES
register reports an unspecified error; that is, only the ERR field is set to 1. The management page has full
view of the error condition.
0b - No canceled transfers
1b - Last recorded entry was a canceled transfer by the error cancel transfer input
7 Source Address Error
SAE When this field is 1, it indicates that TCDn_SADDR is inconsistent with TCDn_ATTR[SSIZE].
0b - No source address configuration error
1b - Last recorded error was a configuration error detected in the TCDn_SADDR field
6 Source Offset Error
SOE When this field is 1, it indicates that TCDn_SOFF is inconsistent with TCDn_ATTR[SSIZE].
0b - No source offset configuration error
1b - Last recorded error was a configuration error detected in the TCDn_SOFF field
5 Destination Address Error
DAE When this field is 1, it indicates that TCDn_DADDR is inconsistent with TCDn_ATTR[DSIZE].
0b - No destination address configuration error
1b - Last recorded error was a configuration error detected in the TCDn_DADDR field
4 Destination Offset Error
DOE When this field is 1, it indicates that TCDn_DOFF is inconsistent with TCDn_ATTR[DSIZE].
0b - No destination offset configuration error
1b - Last recorded error was a configuration error detected in the TCDn_DOFF field
3 NBYTES/CITER Configuration Error
NCE This error indicates that one of the following has occurred:
• TCDn_NBYTES is not a multiple of TCDn_ATTR[SSIZE] and TCDn_ATTR[DSIZE]
• TCDn_CITER[CITER] is equal to zero
• TCDn_CITER[ELINK] is not equal to TCDn_BITER[ELINK]
7.3.5.5.4.1 Offset
Register Offset
MP_INT 8h
7.3.5.5.4.2 Function
This register shows the current state of the interrupt service requests for all eDMA
channels.
7.3.5.5.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R INT
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R INT
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.5.4.4 Fields
Field Function
31-0 Interrupt Request Status
INT The INT register presents the interrupt request status for each eDMA channel. Depending on the
appropriate field setting in the transfer control descriptors, the eDMA engine generates an interrupt on
data transfer completion. The eDMA routes channel interrupt requests to the interrupt controller. During
the interrupt service routine associated with any given channel, it is the software's responsibility to clear
the appropriate field in the channel’s interrupt request register, CHn_INT, thus negating the interrupt
request.
0b - Interrupt request for corresponding channel not present
1b - Interrupt request for corresponding channel present
7.3.5.5.5.1 Offset
Register Offset
MP_HRS Ch
7.3.5.5.5.2 Function
The hardware request status register (HRS) shows the current state of the hardware
service request signaling as seen by eDMA's arbitration logic.
7.3.5.5.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R HRS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R HRS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.5.5.4 Fields
Field Function
31-0 Hardware Request Status
HRS The HRS bit for its respective channel remains asserted for the period when a hardware request is
present on the channel. After the request is completed and the channel is free, the hardware
automatically clears the corresponding HRS bit to 0.
0b - Hardware service request for corresponding channel is not present
1b - Hardware service request for corresponding channel is present
7.3.5.5.6.1 Offset
For n = 0 to 31:
Register Offset
CHn_GRPRI 100h + (n × 4h)
7.3.5.5.6.2 Function
The contents of this register define the arbitration group associated with each channel.
Using a fixed-priority group arbitration scheme, eDMA evaluates the arbitration group
priorities by numeric value from highest group number to lowest; for example, 0 is the
lowest priority, 1 is the next higher priority, then 2, 3, and so on. The range of the group
priority values is limited to the values of 0 through 31. Within each arbitration group, the
channel priority assignment CHn_PRI determines the highest-priority channel.
7.3.5.5.6.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0
GRPRI
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.5.6.4 Fields
Field Function
31-5 Reserved
—
4-0 Arbitration Group For Channel n
GRPRI Fixed-priority arbitration group number.
7.3.5.6.2.1 Offset
For n = 0 to 31:
Register Offset
CHn_CSR 0h + (n × 1000h)
7.3.5.6.2.2 Function
This register contains several fields related to hardware and interrupt requests,
configuration, and status for the given channel.
7.3.5.6.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
ACTIVE
DONE
R
W1C
W
0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EARQ
EBW
ERQ
EEI
W
0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.6.2.4 Fields
Field Function
31 Channel Active
ACTIVE The ACTIVE field indicates the channel was selected by arbitration and is executing the prescribed
transfers. The eDMA sets it to 1 when channel service begins, and clears it to 0 as the minor loop
completes or when any error condition is detected. Except for dynamic scatter/gather or dynamic channel
linking, you must not modify the transfer control descriptor when a channel is active.
30 Channel Done
DONE The DONE field indicates the eDMA has completed the major loop. The eDMA engine sets this field as
the CITER count reaches zero. If enabled, the eDMA generates an interrupt request corresponding to this
completed channel. The software clears it, or the hardware clears it when the channel is activated.
NOTE: This field must be cleared to 0 before writing the MAJORELINK or ESG fields.
29-4 Reserved
—
3 Enable Buffered Writes
EBW When buffered writes are enabled, all writes except for the last write sequence of the minor loop are
signaled by the eDMA as bufferable.
0b - Buffered writes on system bus disabled. Buffered writes on system bus disabled
1b - Buffered writes on system bus enabled. Bufferable write signal asserted on all system bus
writes except during last write sequence
2 Enable Error Interrupt
EEI
Table continues on the next page...
Field Function
The EEI field enables the error interrupt signal for the channel. The DMA error indicator and the error
interrupt enable flag must be asserted before an error interrupt request for a given channel is asserted to
the interrupt controller.
0b - Error signal for corresponding channel does not generate error interrupt
1b - Assertion of error signal for corresponding channel generates error interrupt request
1 Enable Asynchronous DMA Request In Stop Mode For Channel
EARQ The enable asynchronous DMA request field (EARQ) does not affect DMA operations. When set to 1, this
field allows the hardware service request enable field (ERQ) to propagate out of the DMA to the power
controller. When cleared to 0, this field masks the hardware service request enable field to the power
controller.
0b - Disable asynchronous DMA request for the channel
1b - Enable asynchronous DMA request for the channel
0 Enable DMA Request
ERQ Disable a channel's hardware service request at the source before clearing the channel's ERQ field. The
DMA hardware request input signal and the enable request field (ERQ) must be asserted before a
channel's hardware service request is accepted. The state of the eDMA enable request field does not
affect a channel service request made explicitly through software or channel linking. The state of the ERQ
field does not affect the channel's START field.
0b - DMA hardware request signal for corresponding channel disabled
1b - DMA hardware request signal for corresponding channel enabled
7.3.5.6.3.1 Offset
For n = 0 to 31:
Register Offset
CHn_ES 4h + (n × 1000h)
7.3.5.6.3.2 Function
The ES provides information concerning the last recorded channel error. Channel errors
can be caused by:
• An illegal setting in the transfer control descriptor
• An error termination to a bus master read or write cycle
The ERR field signals the presence of an error for the channel. The eDMA engine signals
the occurrence of an error condition by setting the appropriate field in this register. The
outputs of this register are enabled by the contents of the CHn_CSR[EEI] field, then
logically summed across all channels to form an error interrupt request, which may be
routed to the interrupt controller.
During the execution of the interrupt service routine associated with any DMA errors, it
is software's responsibility to clear the appropriate bit, negating the error-interrupt
request. The normal DMA channel completion indicators (setting the transfer control
descriptor DONE flag and the possible assertion of an interrupt request) are not affected
when eDMA detects an error. The contents of this ERR register field can also be polled
because a non-zero value indicates the presence of a channel error, regardless of the state
of the EEI mask.
The state of any given channel's error indicators is affected by writes to this register.
Writing a 1 to the ERR field clears the channel's error status, and writing a 0 has no
effect.
An unspecified error, where only the ERR field is set to 1, indicates that either a transfer
was cancelled with an error. The Management Page Error Status register has full view of
the error condition.
See Fault reporting and handling for more details.
7.3.5.6.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R ERR Reserved
W W1C 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7.3.5.6.3.4 Fields
Field Function
31 Error In Channel
0b - An error in this channel has not occurred
ERR
1b - An error in this channel has occurred
30-8 Reserved
—
7 Source Address Error
SAE TCDn_SADDR is inconsistent with TCDn_ATTR[SSIZE].
0b - No source address configuration error
1b - Last recorded error was a configuration error detected in the TCDn_SADDR field
Field Function
6 Source Offset Error
SOE TCDn_SOFF is inconsistent with TCDn_ATTR[SSIZE].
0b - No source offset configuration error
1b - Last recorded error was a configuration error detected in the TCDn_SOFF field
5 Destination Address Error
DAE TCDn_DADDR is inconsistent with TCDn_ATTR[DSIZE].
0b - No destination address configuration error
1b - Last recorded error was a configuration error detected in the TCDn_DADDR field
4 Destination Offset Error
DOE TCDn_DOFF is inconsistent with TCDn_ATTR[DSIZE].
0b - No destination offset configuration error
1b - Last recorded error was a configuration error detected in the TCDn_DOFF field
3 NBYTES/CITER Configuration Error
NCE This error indicates that one of the following has occurred:
• TCDn_NBYTES is not a multiple of TCDn_ATTR[SSIZE] and TCDn_ATTR[DSIZE]
• TCDn_CITER[CITER] is equal to zero
• TCDn_CITER[ELINK] is not equal to TCDn_BITER[ELINK]
7.3.5.6.4.1 Offset
For n = 0 to 31:
Register Offset
CHn_INT 8h + (n × 1000h)
7.3.5.6.4.2 Function
The INT field signals the presence of an interrupt request for the channel. Depending on
the appropriate bit setting in the transfe control descriptors, the eDMA engine generates
an interrupt on data transfer completion.
The outputs of this register are directly routed to the interrupt controller. During the
interrupt service routine associated with any given channel, it is the software's
responsibility to clear the appropriate bit, negating the interrupt request. On writes to
INT, a 1 clears the channel's interrupt request. A zero has no effect on the channel's
current interrupt status.
7.3.5.6.4.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0 INT
W W1C
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.6.4.4 Fields
Field Function
31-1 Reserved
—
0 Interrupt Request
0b - Interrupt request for corresponding channel cleared
INT
1b - Interrupt request for corresponding channel active
7.3.5.6.5.1 Offset
For n = 0 to 31:
Register Offset
CHn_SBR Ch + (n × 1000h)
7.3.5.6.5.2 Function
The Channel System Bus register places identification and attribute information on the
system bus interface for the eDMA.
The ATTR register outputs the register values onto the system bus interface for further
decoding by the security system.
7.3.5.6.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 Reserved
0 Reserved
R
ATTR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R PAL 0 MID
W
Reset 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
7.3.5.6.5.4 Fields
Field Function
31-23 Reserved
—
22-17 Attribute Output
ATTR DMA's system bus attribute output value.
16 Reserved
—
15 Privileged Access Level
PAL This field controls DMA's protection level on the system bus when the channel is active.
NOTE: When you enable master ID replication, the value captured in this register is the privilege level of
the core or other master writing the channel's transfer control descriptor, which is the lower byte
of TCDn_CSR.
0b - User protection level for DMA transfers
1b - Privileged protection level for DMA transfers
14-5 Reserved
—
4-0 Master ID
Field Function
MID This field controls the DMA's master ID on the system bus when the channel is active.
NOTE: The ID captured in this register reflects the master ID of the core or other master writing the
channel's control attributes, which are in the lower byte of TCDn_CSR.
7.3.5.6.6.1 Offset
For n = 0 to 31:
Register Offset
CHn_PRI 10h + (n × 1000h)
7.3.5.6.6.2 Function
The contents of these registers define unique priorities associated with each channel
within the same channel group. Channel grouping is programmed via Channel Arbitration
Group (CH0_GRPRI - CH31_GRPRI).
The channel priorities within a group are evaluated by numeric value; for example, 0 is
the lowest priority, 1 is the next higher priority, then 2, 3, and so on. Software must
program the channel priorities with unique values; otherwise, channel numbers with the
same, non-zero value, will be selected based on channel number with the higher channel
number having higher priority.
If more than one channel in a group has an arbitration priority level value of zero, then
the arbitration mode field MP_CSR[ERCA] is used to determine the arbitration scheme
for all channels with APL=0 within a group.
When you enable round-robin channel arbitration (MP_CSR[ERCA] = 1), all channels
with APL=0 within a group will use a round-robin arbitration scheme, which rotates
among these channels requesting service without regard to priority. Round-robin provides
a fairness mechanism within an arbitration group.
When you enable fixed-priority channel arbitration (MP_CSR[ERCA] = 0), eDMA
selects channels with APL=0 based on channel number, with the higher channel number
having higher priority.
7.3.5.6.6.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R Reserved
ECP DPA
W 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
APL
W 0
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.3.5.6.6.4 Fields
Field Function
31 Enable Channel Preemption
0b - Channel cannot be suspended by a higher-priority channel's service request
ECP
1b - Channel can be temporarily suspended by a higher-priority channel's service request
30 Disable Preempt Ability
0b - Channel can suspend a lower-priority channel
DPA
1b - Channel cannot suspend any other channel, regardless of channel priority
29-3 Reserved
—
2-0 Arbitration Priority Level
APL Channel priority level for arbitration within the assigned arbitration group.
7.3.5.6.7.1 Offset
For n = 0 to 31:
Register Offset
TCDn_SADDR 20h + (n × 1000h)
7.3.5.6.7.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
SADDR
W
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
SADDR
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.7.3 Fields
Field Function
31-0 Source Address
SADDR Memory address pointing to the source data.
7.3.5.6.8.1 Offset
For n = 0 to 31:
Register Offset
TCDn_SOFF 24h + (n × 1000h)
7.3.5.6.8.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
SOFF
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.8.3 Fields
Field Function
15-0 Source Address Signed Offset
Field Function
SOFF Sign-extended offset applied to the current source address to form the next-state value as each source
read is completed.
7.3.5.6.9.1 Offset
For n = 0 to 31:
Register Offset
TCDn_ATTR 26h + (n × 1000h)
7.3.5.6.9.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
SMOD SSIZE DMOD DSIZE
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.9.3 Fields
Field Function
15-11 Source Address Modulo
SMOD This field defines a specific address range, which is the value after the SADDR + SOFF calculation is
performed on the original register value. Setting this field makes it easy to implement a circular data
queue.
For data queues requiring power-of-2-sized bytes, the queue must start at a 0-modulo-size address and
the SMOD field must be set to the appropriate value for the queue, freezing the required number of upper
address bits.
The value programmed into this field specifies the number of lower address bits that are allowed to
change. For a circular queue application, you typically set TCDn_SOFF[SOFF] to the transfer size to
implement post-increment addressing, with the SMOD function constraining the addresses to a 0-modulo-
size range.
00000b - Source address modulo feature disabled
00001b - Source address modulo feature enabled for any non-zero value [1-31]
10-8 Source Data Transfer Size
000b - 8-bit
SSIZE
001b - 16-bit
010b - 32-bit
011b - 64-bit
Table continues on the next page...
Field Function
100b - 16-byte
101b - 32-byte
110b - 64-byte
111b - Reserved
7-3 Destination Address Modulo
DMOD See the SMOD definition.
2-0 Destination Data Transfer Size
DSIZE See the SSIZE definition.
7.3.5.6.10.1 Offset
For n = 0 to 31:
Register Offset
TCDn_NBYTES_MLOFF 28h + (n × 1000h)
NO
7.3.5.6.10.2 Function
The TCDn_NBYTES field defines the number of bytes to transfer per service request.
Minor loop offsets are address offset values added to the final source address
(TCDn_SADDR), or destination address (TCDn_DADDR), upon minor loop completion.
Minor loop completion is when the channel has finished the service request and has
transferred NBYTES. When minor loop offsets are enabled, the minor loop offset value
(TCDn_NBYTES_MLOFFYES[MLOFF]) is added to the final source address
(TCDn_SADDR), to the final destination address (TCDn_DADDR), or to both, prior to
the addresses being written back to the TCD. If the major loop is complete, the minor
loop offset is ignored and the major loop address offsets (TCDn_SLAST_SDA and
TCDn_DLAST_SGA) are used to compute the next TCDn_SADDR and TCDn_DADDR
values.
When minor loop mapping is enabled (SMLOE or DMLOE is 1),
TCDn_NBYTES_MLOFFNO /TCDn_NBYTES_MLOFFYES is redefined. A portion of
TCDn_NBYTES_MLOFFNO/TCDn_NBYTES_MLOFFYES is used to specify multiple
fields:
• A source enable bit (SMLOE) to specify the minor loop offset must be applied to the
source address (TCDn_SADDR) upon minor loop completion
• A destination enable bit (DMLOE) to specify the minor loop offset must be applied
to the destination address (TCDn_DADDR) upon minor loop completion
• The sign extended minor loop offset value (MLOFF)
The same offset value (MLOFF) is used for both source and destination minor loop
offsets. When either minor loop offset is enabled (SMLOE set or DMLOE set), the
NBYTES field is reduced to 10 bits. If both minor loop offsets are disabled (SMLOE
cleared and DMLOE cleared), the NBYTES field is a 30-bit vector.
One of two register profiles (this register or TCDn_NBYTES_MLOFFYES), defines the
number of bytes to transfer per request. Which register to use depends on whether source
or destination minor loop mapping is enabled.
TCDn_NBYTES_MLOFFNO/TCDn_NBYTES_MLOFFYES is defined as follows:
• If SMLOE = 0 and DMLOE = 0, then see the TCDn_NBYTES_MLOFFNO register
description.
• If either SMLOE or DMLOE is 1, then see the TCDn_NBYTES_MLOFFYES
register description.
7.3.5.6.10.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
NBYTES
SMLOE
DMLOE
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
NBYTES
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.10.4 Fields
Field Function
31 Source Minor Loop Offset Enable
SMLOE Selects whether the minor loop offset is applied to the source address upon minor loop completion.
0b - Minor loop offset not applied to SADDR
1b - Minor loop offset applied to SADDR
30 Destination Minor Loop Offset Enable
Table continues on the next page...
Field Function
DMLOE Selects whether the minor loop offset is applied to the destination address upon minor loop completion.
0b - Minor loop offset not applied to DADDR
1b - Minor loop offset applied to DADDR
29-0 Number of Bytes To Transfer Per Service Request
NBYTES Number of bytes to be transferred for each service request of the channel.
When a channel activates, the module loads the appropriate TCD contents into the eDMA engine and
performs the appropriate reads and writes until the byte transfer count has been reached. This process is
normally an indivisible operation and cannot be halted. It can, however, be stalled by using the bandwidth
control field, or via preemption.
After the byte count is exhausted, the SADDR and DADDR values are written back into the TCD memory,
and the major loop iteration count (CITER) is decremented by one and written back to the TCD memory.
If the major iteration count is complete, additional processing is performed.
7.3.5.6.11.1 Offset
For n = 0 to 31:
Register Offset
TCDn_NBYTES_MLOFF 28h + (n × 1000h)
YES
7.3.5.6.11.2 Function
The TCDn_NBYTES field defines the number of bytes to transfer per service request.
Minor loop offset is an address offset value added to the final source address
(TCDn_SADDR) or destination address (TCDn_DADDR) upon minor loop completion.
Minor loop completion occurs when the channel has finished the service request and has
transferred NBYTES. Minor loop offsets are enabled by setting either the source enable
bit (SMLOE) or the destination enable bit (DMLOE).
The source enable bit (SMLOE) specifies the minor loop offset value (MLOFF) that is to
be applied to the source address (TCDn_SADDR) upon minor loop completion. The
destination enable bit (DMLOE) specifies the minor loop offset (MLOFF) that is to be
applied to the destination address (TCDn_DADDR) upon minor loop completion.
If the major loop is complete, the minor loop offsets are ignored and the major loop
address offsets (TCDn_SLAST_SDA and TCDn_DLAST_SGA) are used to compute the
next TCDn_SADDR and TCDn_DADDR values.
When you enable the minor loop offset overlay (either SMLOE or DMLOE is 1), eDMA
redefines TCDn_NBYTES_MLOFFNO /TCDn_NBYTES_MLOFFYES. A portion of
TCDn_NBYTES_MLOFFNO/TCDn_NBYTES_MLOFFYES specifies the sign-
extended minor loop offset value (MLOFF). The same offset value (MLOFF) applies to
both source and destination minor loop offsets. When the minor loop offset is enabled,
you must align it to the transfer size of the source or destination it is associated with.
When either minor loop offset is enabled (SMLOE set or DMLOE set), the NBYTES
field is reduced to 10 bits. If both minor loop offsets are disabled (SMLOE cleared and
DMLOE cleared), the NBYTES field is a 30-bit vector.
One of two register profiles (this register or TCDn_NBYTES_MLOFFNO) defines the
number of bytes to transfer per request. Which register to use depends on whether source
or destination minor loop mapping is enabled.
TCDn_NBYTES_MLOFFYES is defined as follows:
• If either minor loop offset is enabled (SMLOE or DMLOE = 1), then see the
TCDn_NBYTES_MLOFFYES register description.
• If SMLOE and DMLOE are both 0, then see the TCDn_NBYTES_MLOFFNO
register description.
7.3.5.6.11.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
SMLOE
DMLOE
MLOFF
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MLOFF NBYTES
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.11.4 Fields
Field Function
31 Source Minor Loop Offset Enable
SMLOE Selects whether the minor loop offset is applied to the source address upon minor loop completion.
0b - Minor loop offset not applied to SADDR
1b - Minor loop offset applied to SADDR
30 Destination Minor Loop Offset Enable
DMLOE Selects whether the minor loop offset is applied to the destination address upon minor loop completion.
Table continues on the next page...
Field Function
0b - Minor loop offset not applied to DADDR
1b - Minor loop offset applied to DADDR
29-10 Minor Loop Offset
MLOFF If SMLOE or DMLOE is 1, this field represents a sign-extended offset applied to the source or destination
address to form the next-state value after the minor loop completes.
9-0 Number of Bytes To Transfer Per Service Request
NBYTES The number of bytes to be transferred in each service request of the channel.
As a channel activates, the module loads the appropriate TCD contents into the eDMA engine and
performs the appropriate reads and writes until the minor byte transfer count has been reached. This is
an indivisible operation and cannot be halted. It can, however, be stalled by using the bandwidth control
field, or via preemption.
After the minor count is exhausted, the SADDR and DADDR values are written back into the TCD
memory, and the major iteration count is decremented and restored to the TCD memory. If the major
iteration count is complete, additional processing is performed.
7.3.5.6.12.1 Offset
For n = 0 to 31:
Register Offset
TCDn_SLAST_SDA 2Ch + (n × 1000h)
7.3.5.6.12.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
SLAST_SDA
W
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
SLAST_SDA
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.12.3 Fields
Field Function
31-0 Last Source Address Adjustment / Store DADDR Address
SLAST_SDA Source last address adjustment or the system memory address for destination address (DADDR)
storage.
If (TCDn_CSR[ESDA] = 0), then:
• Adjustment value is added to the source address at the completion of the major iteration count.
This value can be used to restore the source address to the initial value or adjust the address to
reference the next data structure.
• This field uses two's complement notation for the final source address adjustment.
Otherwise:
• This address points to the 32-bit-aligned memory location where the destination address (DADDR)
is to be stored in system memory. By saving the final destination address in system memory via the
ESDA feature, you are able to compute the size of a variable destination data buffer by simply
subtracting the beginning DADDR from the final, saved DADDR. This feature is used together with
the scatter/gather operation to prevent the loss of the final DADDR, which is overwritten during the
scatter/gather operation.
The "Store Destination Address" (SDA) value must be a 32-bit-aligned location because the eDMA
forces the lower two address bits of the SLAST_SDA field to zero when ESDA is enabled. The
module performs this write operation when the major loop is done; that is, when the major iteration
count (CITER) decrements to zero.
7.3.5.6.13.1 Offset
For n = 0 to 31:
Register Offset
TCDn_DADDR 30h + (n × 1000h)
7.3.5.6.13.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DADDR
W
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
DADDR
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.13.3 Fields
Field Function
31-0 Destination Address
DADDR Memory address pointing to the destination data.
7.3.5.6.14.1 Offset
For n = 0 to 31:
Register Offset
TCDn_DOFF 34h + (n × 1000h)
7.3.5.6.14.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
DOFF
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.14.3 Fields
Field Function
15-0 Destination Address Signed Offset
DOFF Sign-extended offset that is applied to the current destination address to form the next-state value as
each destination write is completed.
7.3.5.6.15 TCD Current Major Loop Count (Minor Loop Channel Linking
Disabled) (TCD0_CITER_ELINKNO - TCD31_CITER_ELINKNO)
7.3.5.6.15.1 Offset
For n = 0 to 31:
i.MX 8M Plus Applications Processor Reference Manual, Rev. 2, 02/2024
NXP Semiconductors 1265
Enhanced Direct Memory Access (eDMA)
Register Offset
TCDn_CITER_ELINKNO 36h + (n × 1000h)
7.3.5.6.15.2 Function
If TCDn_CITER[ELINK] is 0, the TCDn_CITER register is defined as follows.
7.3.5.6.15.3 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
CITER
ELINK
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.15.4 Fields
Field Function
15 Enable Link
ELINK As the channel completes the minor loop, this flag enables linking to another channel as defined by the
relevant LINKCH field. The link target channel initiates a channel service request via an internal
mechanism that sets the TCDn_CSR[START] bit of the specified channel to 1.
If channel linking is disabled, the CITER value is extended to 15 bits in place of a link channel number. If
the major loop is exhausted, this link mechanism is suppressed in favor of MAJORELINK channel linking.
NOTE: This field must be equal to the BITER[ELINK] field; otherwise, a configuration error is reported.
0b - Channel-to-channel linking disabled
1b - Channel-to-channel linking enabled
14-0 Current Major Iteration Count
CITER This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current major loop count for the
channel. It is decremented each time the channel finishes a service request and is written back to TCD
memory. After the major iteration count is exhausted, the channel performs a number of operations — for
example, final source and destination address calculations — and optionally generates an interrupt to
signal channel completion before reloading the CITER field from the Beginning Iteration Count (BITER)
field.
NOTE: When the CITER field is initially loaded by software, it must be set to the same value as that
contained in the BITER field.
NOTE: If the channel is configured to execute a single service request, the initial values of BITER and
CITER should be 0x0001.
7.3.5.6.16 TCD Current Major Loop Count (Minor Loop Channel Linking
Enabled) (TCD0_CITER_ELINKYES - TCD31_CITER_ELINKYES)
7.3.5.6.16.1 Offset
For n = 0 to 31:
Register Offset
TCDn_CITER_ELINKYE 36h + (n × 1000h)
S
7.3.5.6.16.2 Function
If TCDn_CITER[ELINK] is 1, the TCDn_CITER register is defined as follows.
7.3.5.6.16.3 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 Reserved
R
LINKCH
CITER
ELINK
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.16.4 Fields
Field Function
15 Enable Link
ELINK As the channel completes the minor loop, this flag enables linking to another channel as defined by the
relevant LINKCH field. When enabled, an internal mechanism sets the TCDn_CSR[START] field of the
specified channel (LINKCH) upon minor loop completion.
If channel linking is disabled, the CITER value is extended to 15 bits in place of a link channel number. If
the major loop is exhausted, this link mechanism is suppressed in favor of MAJORELINK channel linking.
NOTE: This field must be equal to the BITER[ELINK] field; otherwise, a configuration error is reported.
0b - Channel-to-channel linking disabled
1b - Channel-to-channel linking enabled
14 Reserved
—
13-9 Minor Loop Link Channel Number
LINKCH If channel-to-channel linking is enabled (ELINK = 1), then after the minor loop is exhausted the eDMA
engine initiates a channel service request to the channel defined by this field by writing that channel’s
TCDn_CSR[START] field to 1.
8-0 Current Major Iteration Count
CITER
Field Function
This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current major loop count for the
channel. It is decremented each time the channel finishes a service request and is written back to the
TCD memory. After the major iteration count is exhausted, the channel performs a number of operations
— for example, final source and destination address calculations — and optionally generates an interrupt
to signal channel completion before reloading the CITER field from the Beginning Iteration Count (BITER)
field.
NOTE: When the CITER field is initially loaded by software, it must be set to the same value as that
contained in the BITER field.
NOTE: If the channel is configured to execute a single service request, the initial values of BITER and
CITER should be 0x0001.
7.3.5.6.17.1 Offset
For n = 0 to 31:
Register Offset
TCDn_DLAST_SGA 38h + (n × 1000h)
7.3.5.6.17.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
DLAST_SGA
W
Reset u u u u u u u u u u u u u u u u
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
DLAST_SGA
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.17.3 Fields
Field Function
31-0 Last Destination Address Adjustment / Scatter Gather Address
DLAST_SGA Adjustment of the last destination address or the memory address for the next transfer control descriptor
to be loaded into this channel (scatter/gather).
If (TCDn_CSR[ESG] = 0) then:
Field Function
• Adjustment value is added to the destination address at the completion of the major iteration count.
This value can apply to restore the destination address to the initial value or adjust the address to
reference the next data structure.
• This field uses two's complement notation for the final destination address adjustment.
Otherwise:
• This address points to the beginning of a 0-modulo 32-byte region containing the next transfer
control descriptor to be loaded into this channel. This channel reload is performed as the major
iteration count completes. The scatter/gather address must be 0-modulo 32-byte, or else a
configuration error is reported.
7.3.5.6.18.1 Offset
For n = 0 to 31:
Register Offset
TCDn_CSR 3Ch + (n × 1000h)
7.3.5.6.18.2 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MAJORLINKCH
MAJORELINK
INTMAJOR
INTHALF
START
DREQ
EEOP
ESDA
BWC
ESG
W
0
Reset u u u u u u u u u u u u u u u 0
7.3.5.6.18.3 Fields
Field Function
15-14 Bandwidth Control
BWC Throttles the amount of bus bandwidth consumed by the eDMA. Generally, as the eDMA processes the
minor loop, it continuously generates read/write sequences until the minor count is exhausted. This field
forces eDMA to stall after the completion of each read/write access, to control the bus request bandwidth
seen by the system bus interconnect.
NOTE: If the source and destination sizes are equal, this field is ignored between the first and second
transfers and after the last write of each minor loop. This behavior is a side effect of reducing
start-up latency.
Table continues on the next page...
Field Function
00b - No eDMA engine stalls
01b - Reserved
10b - eDMA engine stalls for 4 cycles after each R/W
11b - eDMA engine stalls for 8 cycles after each R/W
13 Reserved
—
12-8 Major Loop Link Channel Number
MAJORLINKCH If (MAJORELINK = 0) then:
• No channel-to-channel linking, or chaining, is performed after the major loop counter is exhausted.
Otherwise:
• After the major loop counter is exhausted, the eDMA engine initiates a channel service request at
the channel defined by this field by setting that channel’s TCDn_CSR[START] field to 1.
7 Enable Store Destination Address
ESDA As the channel completes the major loop by either the current iteration counter (CITER) decrementing to
0, or by receiving an enabled end-of-packet signal, this field enables writing the destination address
(DADDR) to the address stored in the SLAST_SDA field. The value written to system memory is the last
DADDR value prior to the DLAST_SGA offset being applied, or overwritten by an enabled scatter/gather
operation. When the SDA bit is 1, SLAST_SDA contains the write pointer instead of the final source
address offset. Because this is a pointer and not a final offset, a last source address offset of zero is
applied to SADDR instead of the SLAST_SGA value.
0b - Ability to store destination address to system memory disabled
1b - Ability to store destination address to system memory enabled
6 Enable End-Of-Packet Processing
EEOP When enabled by the EEOP field, an end-of-packet hardware input signal directs eDMA to discontinue
executing the active channel, and to treat the shutdown as the major-loop-completed event. If the EEOP
field is 1, the end-of-packet signal from supported peripherals is accepted. If the EEOP field is 0, the end-
of-packet input is ignored. With an end-of-packet retirement, the current TCD destination address (or
ESDA-saved destination address), minus the software-saved initial address (DADDR), reflects the total
amount of data transferred.
0b - End-of-packet operation disabled
1b - End-of-packet hardware input signal enabled
5 Enable Link When Major Loop Complete
MAJORELINK As the channel completes the major loop, this flag enables linking to another channel defined by
MAJORLINKCH. The link target channel initiates a channel service request via an internal mechanism
that sets the TCDn_CSR[START] field of the specified channel.
NOTE: To support the dynamic linking coherency model, this field is forced to 0 if written when
TCDn_CSR[DONE] is 1.
0b - Channel-to-channel linking disabled
1b - Channel-to-channel linking enabled
4 Enable Scatter/Gather Processing
ESG As the channel completes the major loop, this flag enables scatter/gather processing in the current
channel. If enabled, the eDMA engine uses TCDn_DLAST_SGA as a memory pointer to a 0-modulo 32-
bit address containing a 32-byte data structure, which is loaded as the transfer control descriptor into
local memory.
NOTE: To support the dynamic scatter/gather coherency model, this field is forced to 0 if written when
TCDn_CSR[DONE] is 1.
0b - Current channel’s TCD is normal format
1b - Current channel’s TCD specifies scatter/gather format.
Field Function
3 Disable Request
DREQ If this flag is 1, the eDMA hardware automatically clears the corresponding ERQ bit when the current
major iteration count reaches 0.
0b - No operation. Channel’s ERQ field not affected
1b - Clear the ERQ field to 0 upon major loop completion, thus disabling hardware service
requests. Channel’s ERQ field cleared to 0 when major loop complete
2 Enable Interrupt If Major Counter Half-complete
INTHALF If this flag is 1, the channel generates an interrupt request by setting the appropriate field in the INT
register to 1 when the current major iteration count reaches the halfway point. Specifically, the
comparison performed by the eDMA engine is (CITER = (BITER/2)). This halfway point interrupt request
is provided to support double-buffered, also known as ping-pong, schemes, or other types of data
movement where the processor needs an early indication of the transfer’s progress.
NOTE: If BITER = 1, do not use INTHALF; use INTMAJOR instead.
0b - Halfway point interrupt disabled
1b - Halfway point interrupt enabled
1 Enable Interrupt If Major count complete
INTMAJOR If this flag is 1, the channel generates an interrupt request by setting the appropriate field in the INT
register to 1 when the current major iteration count (CITER) reaches 0.
0b - End-of-major loop interrupt disabled
1b - End-of-major loop interrupt enabled
0 Channel Start
START If this flag is 1, the channel is requesting service. The eDMA hardware automatically clears this flag to 0
after the channel begins execution.
0b - Channel not explicitly started
1b - Channel explicitly started via a software-initiated service request
7.3.5.6.19 TCD Beginning Major Loop Count (Minor Loop Channel Linking
Disabled) (TCD0_BITER_ELINKNO - TCD31_BITER_ELINKNO)
7.3.5.6.19.1 Offset
For n = 0 to 31:
Register Offset
TCDn_BITER_ELINKNO 3Eh + (n × 1000h)
7.3.5.6.19.2 Function
If the TCDn_BITER[ELINK] field is 0, the TCDn_BITER register is defined as follows.
7.3.5.6.19.3 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BITER
ELINK
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.19.4 Fields
Field Function
15 Enables Link
ELINK As the channel completes the minor loop, this flag enables linking to another channel as defined by
BITER[LINKCH]. The link target channel initiates a channel service request via an internal mechanism
that sets the TCDn_CSR[START] field of the specified channel. If channel linking is disabled, the BITER
value extends to 15 bits in place of a link channel number. If the major loop is exhausted, this link
mechanism is suppressed in favor of the MAJORELINK channel linking.
NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field;
otherwise, a configuration error is reported. As the major iteration count is exhausted, eDMA
reloads the contents of this field into the CITER field.
0b - Channel-to-channel linking disabled
1b - Channel-to-channel linking enabled
14-0 Starting Major Iteration Count
BITER As the transfer control descriptor is first loaded by software, this 9-bit (ELINK = 1) or 15-bit (ELINK = 0)
field must be set equal to the value in the CITER field. As the major iteration count is exhausted, eDMA
reloads the contents of this field into the CITER field. If the channel is configured to execute a single
service request, the initial values of BITER and CITER must be 0x0001.
7.3.5.6.20 TCD Beginning Major Loop Count (Minor Loop Channel Linking
Enabled) (TCD0_BITER_ELINKYES - TCD31_BITER_ELINKYES)
7.3.5.6.20.1 Offset
For n = 0 to 31:
Register Offset
TCDn_BITER_ELINKYE 3Eh + (n × 1000h)
S
7.3.5.6.20.2 Function
If the TCDn_BITER[ELINK] field is set, the TCDn_BITER register is defined as
follows.
7.3.5.6.20.3 Diagram
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 Reserved
R
LINKCH
BITER
ELINK
W
Reset u u u u u u u u u u u u u u u u
7.3.5.6.20.4 Fields
Field Function
15 Enable Link
ELINK As the channel completes the minor loop, this flag enables linking to another channel as defined by
BITER[LINKCH]. The link target channel initiates a channel service request via an internal mechanism
that sets the TCDn_CSR[START] field of the specified channel. If channel linking disables, the BITER
value extends to 15 bits in place of a link channel number. If the major loop is exhausted, this link
mechanism is suppressed in favor of the MAJORELINK channel linking.
NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field;
otherwise, a configuration error is reported. As the major iteration count is exhausted, eDMA
reloads the contents of this field into the CITER field.
0b - Channel-to-channel linking disabled
1b - Channel-to-channel linking enabled
14 Reserved
—
13-9 Link Channel Number
LINKCH If channel-to-channel linking is enabled (ELINK = 1), then after the minor loop is exhausted, the eDMA
engine initiates a channel service request at the channel defined by this field by setting that channel’s
TCDn_CSR[START] field.
NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field;
otherwise, a configuration error is reported. As the major iteration count is exhausted, eDMA
reloads the contents of this field into the CITER field.
8-0 Starting Major Iteration Count
BITER As the transfer control descriptor is first loaded by software, this 9-bit (ELINK = 1) or 15-bit (ELINK = 0)
field must be set equal to the value in the CITER field. As the major iteration count is exhausted, eDMA
reloads the contents of this field into the CITER field. If the channel is configured to execute a single
service request, the initial values of BITER and CITER must be 0x0001.
7.4.1 Overview
The Interrupt Request Steering (IRQ_STEER) module redirects/steers the incoming
interrupts to output interrupts of a selected/designated channel as specified by a set of
configuration registers.
Output
Interrupt
Channel 1
Wakeup
Input
Interrupts
Output
Interrupt
Wakeup
Output
Interrupt
Channel n
Wakeup
The following figure shows the high-level operation of one channel of the IRQ_STEER
module.
Output
Interrupt
Group
Input
Interrupts OR by 64
OR Wakeup
SET MSTRSTAT
7.4.1.2 Features
The IRQ_STEER module supports:
• 3 IRQ channels
• 160 interrupts per channel
NXP Semiconductors
2 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
3 63 62 61 60 59 58 57 56 55 54 53 52 52 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
4 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7.4.2.2 Clocks
The following table describes the clock sources for the IRQ_STEER module. Please see
Clock Controller Module (CCM) for clock setting, configuration and gating information.
Table 7-67. IRQ_STEER Clocks
Clock name Description
ipg_clk Peripheral clock
7.4.4.1.2.1 Offset
Register Offset
CHn_MASK0 4h
CHn_MASK1 8h
CHn_MASK2 Ch
CHn_MASK3 10h
CHn_MASK4 14h
7.4.4.1.2.2 Function
The MASK registers are used to mask any of the 160 individual interrupts.
7.4.4.1.2.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
MASKFLD
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
MASKFLD
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.4.4.1.2.4 Fields
Field Function
31-0 Mask bits
MASKFLD See Table 7-66 for the correlation between an interrupt and its register and bit offset.
00000000000000000000000000000000b - Mask interrupt
00000000000000000000000000000001b - Do not mask interrupt
7.4.4.1.3.1 Offset
Register Offset
CHn_SET0 18h
CHn_SET1 1Ch
CHn_SET2 20h
CHn_SET3 24h
CHn_SET4 28h
7.4.4.1.3.2 Function
This register is used to force an interrupt.
7.4.4.1.3.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R
FORCEFLD
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
FORCEFLD
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.4.4.1.3.4 Fields
Field Function
31-0 Force interrupt.
FORCEFLD See Table 7-66 for the correlation between an interrupt and its register and bit offset.
00000000000000000000000000000000b - Normal operation
00000000000000000000000000000001b - Force interrupt
7.4.4.1.4.1 Offset
Register Offset
CHn_STATUS0 2Ch
CHn_STATUS1 30h
CHn_STATUS2 34h
CHn_STATUS3 38h
CHn_STATUS4 3Ch
7.4.4.1.4.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R STATUS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R STATUS
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.4.4.1.4.3 Fields
Field Function
31-0 Status of an interrupt
STATUS See Table 7-66 for the correlation between an interrupt and its register and bit offset.
00000000000000000000000000000000b - Interrupt is not set.
00000000000000000000000000000001b - Interrupt is set.
7.4.4.1.5.1 Offset
Register Offset
CHn_MINTDIS 40h
7.4.4.1.5.2 Function
Table 7-68. Interrupt disable mapping
STATUS bit Interrupts disabled
2 191 - 128
1 127 - 64
0 63 - 0
7.4.4.1.5.3 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R 0
DISABLE
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.4.4.1.5.4 Fields
Field Function
31-3 Reserved
—
2-0 Each bit of this field disables the corresponding interrupts in table above.
000b - Enable interrupts
DISABLE
001b - Disable interrupts
7.4.4.1.6.1 Offset
Register Offset
CHn_MSTRSTAT 44h
7.4.4.1.6.2 Diagram
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
R 0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
STATUS
R
0
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7.4.4.1.6.3 Fields
Field Function
31-1 Reserved
—
0 Status of all interrupts
0b - No interrupts are asserted.
STATUS
1b - At least one interrupt is asserted.
8.1.1 Overview
The chip contains a limited number of pins, most of which have multiple signal options.
These signal-to-pin and pin-to-signal options are selected by the input-output multiplexer
called IOMUX. The IOMUX is also used to configure other pin characteristics, such as
voltage level, drive strength, and hysteresis.
The muxing options table lists the external signals grouped by the module instance, the
muxing options for each signal, and the registers used to route the signal to the chosen
pad.
8.2.1 Overview
The IOMUX Controller (IOMUXC), together with the IOMUX, enables the IC to share
one pad to several functional blocks. This sharing is done by multiplexing the pad's input
and output signals.
Every module requires a specific pad setting (such as pull up or keeper), and for each
pad, there are up to 8 muxing options (called ALT modes). The pad settings parameters
are controlled by the IOMUXC.
The IOMUX consists only of combinatorial logic combined from several basic IOMUX
cells. Each basic IOMUX cell handles only one pad signal's muxing.
PAD Settings
PAD Settings
Registers
MUX Control
Registers
IOMUXC
. .
IOMUX IO Pad
Cells
. Cells
.
. .
IPMUX
HW
signal
moduleY
CFG
AIPS Reg
moduleX IOMUX IORING
8.2.1.2 Features
The IOMUXC features include:
• 32-bit software mux control registers (IOMUXC_SW_MUX_CTL_PAD_<PAD
NAME> or IOMUXC_SW_MUX_CTL_GRP_<GROUP NAME>) to configure 1 of
8 alternate (ALT) MUX_MODE fields of each pad or a predefined group of pads and
to enable the forcing of an input path of the pad(s) (SION bit).
• 32-bit software pad control registers
(IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME> or
IOMUXC_SW_PAD_CTL_GRP_<GROUP NAME>) to configure specific pad
settings of each pad, or a predefined group of pads.
• 32-bit general purpose registers - several (GPR0 to GPRn) 32-bit registers according
to SoC requirements for any usage.
• 32-bit input select control registers to control the input path to a module when more
than one pad drives this module input.
Each SW MUX/PAD CTL IOMUXC register handles only one pad or one pad's group.
Only the minimum number of registers required by software are implemented by
hardware. For example, if only ALT0 and ALT1 modes are used on Pad x then only one
bit register will be generated as the MUX_MODE control field in the software mux
control register of Pad x.
The software mux control registers may allow the forcing of pads to become input (input
path enabled) regardless of the functional direction driven. This may be useful for
loopback and GPIO data capture.
The IOMUX consists of a number (about the number of pads in the SoC) of basic
iomux_cell units. If only one functional mode is required for a specific pad, there is no
need for IOMUX and the signals can be connected directly from the module to the I/O.
The IOMUX cell is required whenever two or more functional modes are required for a
specific pad or when one functional mode and the one test mode are required.
The basic iomux_cell design, which allows two levels of HW signal control (in ALT6
and ALT7 modes - ALT7 gets highest priority) is shown in Figure 8-2.
IOMUXC_SW_MUX_CTRL_<PAD>[MUX_MODE]
SW_PAD_CTL
ALT0
ALT1
: PAD0
ALTn
ALT0
ALT1
<SOURCE>_SELECT_INPUT :
ALTn
Peripheral1 DATA_IN IOMUXC_SW_MUX_CTRL_<PAD>[MUX_MODE]
SW_PAD_CTL
ALT0
ALT1
:
PAD1
ALTn
ALT0
ALT1
:
ALTn
8.2.2.4 Daisy chain - multi pads driving same module input pin
In some cases, more than one pad may drive a single module input pin. Such cases
require the addition of one more level of IOMUXing; all of these input signals are
muxed, and a dedicated software controlled register controls the mux in order to select
the required input path.
A module port involved in "daisy chain" requires two software configuration commands,
one for selecting the mode for this pad (programable via the
IOMUXC_SW_MUX_CTL_<PAD> registers) and one for defining it as the input path
(via the daisy chain registers).
This means that a module port involved in "daisy chain" requires two software
configuration commands, one for selecting the mode for this pad (programable via the
IOMUXC_SW_MUX_CTL_<PAD> registers) and one for defining it as the input path
(via the daisy chain registers). The daisy chain is illustrated in the figure below.
IOMUX IORING
IOMUX Cells
To module D
To module F
A
To module X
ALT x select
To module G
To module X
Module X B
To module H
ALT x select
Daisy Chain
To module X
select
To module M
C
To module N
ALT x select
8.2.2.5 Clocks
The table found here describes the clock sources for IOMUXC.
Please see Clock Controller Module (CCM) for clock setting, configuration and gating
information.
Table 8-5. IOMUXC Clocks
Clock name Clock Root Description
ipg_clk_s ipg_clk_root Peripheral access clock
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_DBG_ACK_M7_MASK
GPR_TZASC1_SECURE_
QOS_CLK_TX_CLK_SEL
GPR_ENET_QOS_CLK_
IOMUXC_GPR_ENET1_
IOMUXC_GPR_ENET_
IOMUXC_GPR_ENET_
R
QOS_RGMII_EN
BOOT_LOCK
RGMII_EN
GEN_EN
GPR_DBG_ACK_A53_ GPR_ENET_QOS_
Reserved
MASK INTF_SEL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IOMUXC_GPR_ENET1_TX_
GPR_ANAMIX_IPT_MODE
GPR_GPT1_CAPIN2_SEL
GPR_GPT1_CAPIN1_SEL
GPR_ENET1_EVENT0IN_
GPR_ENET_QOS_DIS_
GPR_ENET_QOS_
R
EVENT0IN_SEL
CRC_CHK
GPR_IRQ
CLK_SEL
SEL
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_
R CORE
SIGH
Reserved T_
GPR_
W CTM_
SEL
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_FLEXSPI_O_IPG_STOP_ACK
GPR_SDAM1_IPG_STOP_ACK
GPR_ENET1_IPG_STOP_ACK
GPR_CAN2_IPG_STOP_ACK
GPR_CAN1_IPG_STOP_ACK
R CPU_STANDBYWFE CPU_STANDBYWFI
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_FLEXSPI_I_IPG_STOP
GPR_SDMA1_IPG_STOP
GPR_ENET1_IPG_STOP
GPR_CAN2_IPG_STOP
GPR_CAN1_IPG_STOP
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 WFE
27–24 From CA53. Status of CPU STANDBYWFI low power states.
CPU_
MSB: status of core 3 STANDBYWFI low power state
STANDBYWFI
LSB: status of core 0 STANDBYWFI low power state
1 WFI
23–22 This field is reserved.
-
21 CAN2 stop acknowledge
GPR_CAN2_
IPG_STOP_ACK 0 stop acknowledge is not asserted
1 stop acknowledge is asserted, peripheral is in STOP mode
20 CAN1 stop acknowledge
GPR_CAN1_
IPG_STOP_ACK 0 stop acknowledge is not asserted
1 stop acknowledge is asserted, peripheral is in STOP mode
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_WDOG3_MASK
R
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_RMW_S_WAIT_
GPR_WDOG2_MASK
GPR_WDOG1_MASK
GPR_RMW_WAIT_
GPR_ENABLE_
R
BVALID_CPL
BVALID_CPL
UPSIZER
Reserved Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
GPR_M7_INITVTOR Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
LOCK_GPR_TZASC_ID_
LOCK_GPR_EXC_ERR_
LOCK_GPR_SEC_ERR_
LOCK_GPR_TZASC_EN
R
SWAP_BYPASS
RESP_EN
RESP_EN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_TZASC_ID_SWAP_
GPR_OCRAM_A_TZ_EN
GPR_EXC_ERR_RESP_
GPR_SEC_ERR_RESP_
GPR_TZASC_EN
R
BYPASS
EN
EN
Reserved GPR_OCRAM_A_TZ_START_ADDR
Reset 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
LOCK_GPR_OCRAM_S_
CAAM_IPS_MANAGER
LOCK_GPR_OCRAM_
LOCK_GPR_CAAM_
LOCK_GPR_
TZ_EN
TZ_EN
Reserved OCRAM_S_TZ_ LOCK_GPR_OCRAM_TZ_START_ADDR
START_ADDR
W
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_CAAM_CAAM_IPS_
GPR_OCRAM_S_TZ_EN
GPR_OCRAM_TZ_EN
R
MANAGER
Reserved
GPR_OCRAM_S_TZ_
GPR_OCRAM_TZ_START_ADDR
START_ADDR
Reset 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_PCIE_DIAG_BUS_
GPR_PCIE1_CTRL_
DIAG_CTRL_BUS
R
Reserved
GPR_PCIE1_CTRL_DIAG_
SEL
Reserved
STATUS_BUS_SELECT
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_PCIE1_CTRL_
Reserved
DEVICE_TYPE
Reset 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_AWCACHE_USDHC
GPR_ARCACHE_USDHC
GPR_AWCACHE_PCIE_
GPR_ARCACHE_PCIE_
GPR_AWCACHE_USB2
GPR_AWCACHE_USB1
GPR_ARCACHE_USB2
GPR_ARCACHE_USB1
GPR_AWCACHE_PCIE
GPR_ARCACHE_PCIE
R
Reserved
Reserved
Reserved
Reserved
EN
EN
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_PCIE_PHY_PLL_
R
REF_CLK_SEL
GPR_PCIE_PHY_CTRL_
Reserved Reserved
BUS
Reset 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_PCIE_CLKREQ_B_
GPR_PCIE_CLKREQ_B_
GPR_PCIE_REF_USE_
GPR_PCIE_APP_CLK_
R
OVERRIDE_EN
OVERRIDE
PM_EN
PAD
Reserved Reserved
Reset 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
GPR_GPUMIX_GPR_AXI_LIMIT_BEAT_LIMIT_GPU2D GPR_GPUMIX_GPR_AXI_LIMIT_BEAT_LIMIT_GPU3D
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_GPUMIX_GPR_AXI_
GPR_GPUMIX_GPR_AXI_
LIMIT_ENABLE_GPU2D
LIMIT_ENABLE_GPU3D
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R PCIE_DIAG_STATUS
W
Reset 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0*
* Notes:
• For reset: [31:0] - N/A
Reset
Bit
Reset
Bit
28
29
30
31
GPR_RAWNAND_M_D_ GPR_APBHDMA_M_D_
0
0
15
31
Field
GPR_
GPR_
GPR_
GPR_
5_ARADDR32 4_HADDR32
APBHDMA_M_
APBHDMA_M_
AXI master.
D_4_HADDR33
D_4_HADDR32
A_0_ARADDR33
A_0_ARADDR32
GPR_RAWNAND_M_D_ GPR_APBHDMA_M_D_
CORESIGHT_M_
CORESIGHT_M_
0
0
14
30
5_ARADDR33 4_HADDR33
GPR_RAWNAND_M_D_ GPR_CORESIGHT_M_A_
0
0
13
29
5_AWADDR32 0_ARADDR32
IOMUX Controller (IOMUXC)
GPR_RAWNAND_M_D_ GPR_CORESIGHT_M_A_
0
0
12
28
5_AWADDR33 0_ARADDR33
GPR_USDHC1_M_D_6_ GPR_CORESIGHT_M_A_
0
0
11
27
ARADDR32 0_AWADDR32
10
26
ARADDR33 0_AWADDR33
Address: 3034_0000h base + 50h offset = 3034_0050h
GPR_USDHC1_M_D_6_ GPR_DAP_M_D_0_
0
0
25
AWADDR32 HADDR32
GPR_USDHC1_M_D_6_ GPR_DAP_M_D_0_
0
0
24
AWADDR33 HADDR33
GPR_USDHC2_M_D_7_ GPR_ENET1_M_E_0_
7
0
0
23
ARADDR32 ARADDR32
GPR_USDHC2_M_D_7_ GPR_ENET1_M_E_0_
6
0
0
22
Description
ARADDR33 ARADDR33
0
0
21
AWADDR32 AWADDR32
0
0
20
AWADDR33 AWADDR33
GPR_USDHC3_M_D_8_ GPR_ENET1_M_E_1_
3
0
0
19
ARADDR32 ARADDR32
0
0
18
ARADDR33 ARADDR33
8.2.3.21 General Purpose Register 20 (IOMUXC_GPR_GPR20)
GPR_USDHC3_M_D_8_ GPR_ENET1_M_E_1_
1
0
0
17
AWADDR32 AWADDR32
This chip supports 34-bit addresses. This register contains address bits [33:32] for each
GPR_USDHC3_M_D_8_ GPR_ENET1_M_E_1_
0
0
0
16
AWADDR33 AWADDR33
NXP Semiconductors
Chapter 8 Chip IO and Pinmux
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
GPR_SDMA1_M_D_2_
GPR_SDMA1_M_D_2_
GPR_SDMA1_M_D_3_
GPR_SDMA1_M_D_3_
GPR_SDMA1_M_D_3_
GPR_SDMA1_M_D_3_
R
AWADDR32
AWADDR33
ARADDR32
ARADDR33
HADDR32
HADDR33
Reserved
Reset 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0*
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reset 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0*
* Notes:
• For reset: -
[31:26] - 0x0
-
[25:0] - N/A
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SJC_CHALLENGE_RESPONSE_AUTHENTICATION_FAIL
R
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GPR_M7_HCLK_AUTO_GATE_EN
R
GPR_M7_HCLK_GATE_EN
GPR_M7_CPUWAIT
Reserved
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
W
Reserved
Reset 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* 0*
* Notes:
• For reset: -
[31:24] - N/A
-
[23:0] - 0x0
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_GPIO1_IO[0] — Select mux mode: ALT0 mux port: GPIO1_IO00 of instance: gpio1
001 ALT1_CCM_ENET_PHY_REF_CLK_ROOT — Select mux mode: ALT1 mux port:
CCM_ENET_PHY_REF_CLK_ROOT of instance: ccm
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[1] — Select mux mode: ALT0 mux port: GPIO1_IO01 of instance: gpio1
001 ALT1_PWM1_OUT — Select mux mode: ALT1 mux port: PWM1_OUT of instance: pwm1
011 ALT3_ISP_SHUTTER_TRIG_0 — Select mux mode: ALT3 mux port: ISP_SHUTTER_TRIG_0 of
instance: isp
101 ALT5_REF_CLK_24M — Select mux mode: ALT5 mux port: REF_CLK_24M of instance: anamix
110 ALT6_CCM_EXT_CLK2 — Select mux mode: ALT6 mux port: CCM_EXT_CLK2 of instance: ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[2] — Select mux mode: ALT0 mux port: GPIO1_IO02 of instance: gpio1
001 ALT1_WDOG1_WDOG_B — Select mux mode: ALT1 mux port: WDOG1_WDOG_B of instance:
wdog1
011 ALT3_ISP_FLASH_TRIG_0 — Select mux mode: ALT3 mux port: ISP_FLASH_TRIG_0 of
instance: isp
101 ALT5_WDOG1_WDOG_ANY — Select mux mode: ALT5 mux port: WDOG1_WDOG_ANY of
instance: wdog1
111 ALT7_SJC_DE_B — Select mux mode: ALT7 mux port: SJC_DE_B of instance: sjc
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_GPIO1_IO[3] — Select mux mode: ALT0 mux port: GPIO1_IO03 of instance: gpio1
001 ALT1_USDHC1_VSELECT — Select mux mode: ALT1 mux port: USDHC1_VSELECT of instance:
usdhc1
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
000 ALT0_GPIO1_IO[4] — Select mux mode: ALT0 mux port: GPIO1_IO04 of instance: gpio1
001 ALT1_USDHC2_VSELECT — Select mux mode: ALT1 mux port: USDHC2_VSELECT of instance:
usdhc2
011 ALT3_ISP_SHUTTER_OPEN_0 — Select mux mode: ALT3 mux port: ISP_SHUTTER_OPEN_0 of
instance: isp
101 ALT5_SDMA1_EXT_EVENT[1] — Select mux mode: ALT5 mux port: SDMA1_EXT_EVENT01 of
instance: sdma1
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[5] — Select mux mode: ALT0 mux port: GPIO1_IO05 of instance: gpio1
001 ALT1_M7_NMI — Select mux mode: ALT1 mux port: M7_NMI of instance: m7
011 ALT3_ISP_FL_TRIG_1 — Select mux mode: ALT3 mux port: ISP_FL_TRIG_1 of instance: isp
101 ALT5_CCM_PMIC_READY — Select mux mode: ALT5 mux port: CCM_PMIC_READY of instance:
ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_GPIO1_IO[6] — Select mux mode: ALT0 mux port: GPIO1_IO06 of instance: gpio1
001 ALT1_ENET_QOS_MDC — Select mux mode: ALT1 mux port: ENET_QOS_MDC of instance:
enet_qos
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
000 ALT0_GPIO1_IO[7] — Select mux mode: ALT0 mux port: GPIO1_IO07 of instance: gpio1
001 ALT1_ENET_QOS_MDIO — Select mux mode: ALT1 mux port: ENET_QOS_MDIO of instance:
enet_qos
011 ALT3_ISP_FLASH_TRIG_1 — Select mux mode: ALT3 mux port: ISP_FLASH_TRIG_1 of
instance: isp
101 ALT5_USDHC1_WP — Select mux mode: ALT5 mux port: USDHC1_WP of instance: usdhc1
110 ALT6_CCM_EXT_CLK4 — Select mux mode: ALT6 mux port: CCM_EXT_CLK4 of instance: ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[8] — Select mux mode: ALT0 mux port: GPIO1_IO08 of instance: gpio1
001 ALT1_ENET_QOS_1588_EVENT0_IN — Select mux mode: ALT1 mux port:
ENET_QOS_1588_EVENT0_IN of instance: enet_qos
010 ALT2_PWM1_OUT — Select mux mode: ALT2 mux port: PWM1_OUT of instance: pwm1
011 ALT3_ISP_PRELIGHT_TRIG_1 — Select mux mode: ALT3 mux port: ISP_PRELIGHT_TRIG_1 of
instance: isp
100 ALT4_ENET_QOS_1588_EVENT0_AUX_IN — Select mux mode: ALT4 mux port:
ENET_QOS_1588_EVENT0_AUX_IN of instance: enet_qos
101 ALT5_USDHC2_RESET_B — Select mux mode: ALT5 mux port: USDHC2_RESET_B of instance:
usdhc2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_GPIO1_IO[9] — Select mux mode: ALT0 mux port: GPIO1_IO09 of instance: gpio1
001 ALT1_ENET_QOS_1588_EVENT0_OUT — Select mux mode: ALT1 mux port:
ENET_QOS_1588_EVENT0_OUT of instance: enet_qos
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[10] — Select mux mode: ALT0 mux port: GPIO1_IO10 of instance: gpio1
010 ALT2_PWM3_OUT — Select mux mode: ALT2 mux port: PWM3_OUT of instance: pwm3
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[11] — Select mux mode: ALT0 mux port: GPIO1_IO11 of instance: gpio1
010 ALT2_PWM2_OUT — Select mux mode: ALT2 mux port: PWM2_OUT of instance: pwm2
100 ALT4_USDHC3_VSELECT — Select mux mode: ALT4 mux port: USDHC3_VSELECT of instance:
usdhc3
101 ALT5_CCM_PMIC_READY — Select mux mode: ALT5 mux port: CCM_PMIC_READY of instance:
ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[12] — Select mux mode: ALT0 mux port: GPIO1_IO12 of instance: gpio1
001 ALT1_USB1_PWR — Select mux mode: ALT1 mux port: usb1_PWR of instance: usb1
101 ALT5_SDMA2_EXT_EVENT[1] — Select mux mode: ALT5 mux port: SDMA2_EXT_EVENT01 of
instance: SDMA2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[13] — Select mux mode: ALT0 mux port: GPIO1_IO13 of instance: gpio1
001 ALT1_USB1_OC — Select mux mode: ALT1 mux port: usb1_OC of instance: usb1
101 ALT5_PWM2_OUT — Select mux mode: ALT5 mux port: PWM2_OUT of instance: pwm2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_GPIO1_IO[14] — Select mux mode: ALT0 mux port: GPIO1_IO14 of instance: gpio1
001 ALT1_USB2_PWR — Select mux mode: ALT1 mux port: usb2_PWR of instance: usb2
100 ALT4_USDHC3_CD_B — Select mux mode: ALT4 mux port: USDHC3_CD_B of instance: usdhc3
101 ALT5_PWM3_OUT — Select mux mode: ALT5 mux port: PWM3_OUT of instance: pwm3
110 ALT6_CCM_CLKO1 — Select mux mode: ALT6 mux port: CCM_CLKO1 of instance: ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_GPIO1_IO[15] — Select mux mode: ALT0 mux port: GPIO1_IO15 of instance: gpio1
001 ALT1_USB2_OC — Select mux mode: ALT1 mux port: usb2_OC of instance: usb2
100 ALT4_USDHC3_WP — Select mux mode: ALT4 mux port: USDHC3_WP of instance: usdhc3
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_ENET_QOS_MDC — Select mux mode: ALT0 mux port: ENET_QOS_MDC of instance:
enet_qos
010 ALT2_AUDIOMIX_SAI6_TX_DATA[0] — Select mux mode: ALT2 mux port:
AUDIOMIX_SAI6_TX_DATA00 of instance: sai6
101 ALT5_GPIO1_IO[16] — Select mux mode: ALT5 mux port: GPIO1_IO16 of instance: gpio1
110 ALT6_USDHC3_STROBE — Select mux mode: ALT6 mux port: USDHC3_STROBE of instance:
usdhc3
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_ENET_QOS_MDIO — Select mux mode: ALT0 mux port: ENET_QOS_MDIO of instance:
enet_qos
010 ALT2_AUDIOMIX_SAI6_TX_SYNC — Select mux mode: ALT2 mux port:
AUDIOMIX_SAI6_TX_SYNC of instance: sai6
011 ALT3_AUDIOMIX_PDM_BIT_STREAM[3] — Select mux mode: ALT3 mux port:
AUDIOMIX_PDM_BIT_STREAM03 of instance: pdm
101 ALT5_GPIO1_IO[17] — Select mux mode: ALT5 mux port: GPIO1_IO17 of instance: gpio1
110 ALT6_USDHC3_DATA5 — Select mux mode: ALT6 mux port: USDHC3_DATA5 of instance:
usdhc3
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC1_CLK — Select mux mode: ALT0 mux port: USDHC1_CLK of instance: usdhc1
001 ALT1_ENET1_MDC — Select mux mode: ALT1 mux port: ENET1_MDC of instance: enet1
011 ALT3_I2C5_SCL — Select mux mode: ALT3 mux port: I2C5_SCL of instance: i2c5
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC1_CMD — Select mux mode: ALT0 mux port: USDHC1_CMD of instance: usdhc1
001 ALT1_ENET1_MDIO — Select mux mode: ALT1 mux port: ENET1_MDIO of instance: enet1
011 ALT3_I2C5_SDA — Select mux mode: ALT3 mux port: I2C5_SDA of instance: i2c5
100 ALT4_UART1_RX — Select mux mode: ALT4 mux port: UART1_RX of instance: uart1
101 ALT5_GPIO2_IO[1] — Select mux mode: ALT5 mux port: GPIO2_IO01 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_DATA0 — Select mux mode: ALT0 mux port: USDHC1_DATA0 of instance:
usdhc1
001 ALT1_ENET1_RGMII_TD1 — Select mux mode: ALT1 mux port: ENET1_RGMII_TD1 of instance:
enet1
011 ALT3_I2C6_SCL — Select mux mode: ALT3 mux port: I2C6_SCL of instance: i2c6
100 ALT4_UART1_RTS_B — Select mux mode: ALT4 mux port: UART1_RTS_B of instance: uart1
101 ALT5_GPIO2_IO[2] — Select mux mode: ALT5 mux port: GPIO2_IO02 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC1_DATA1 — Select mux mode: ALT0 mux port: USDHC1_DATA1 of instance:
usdhc1
001 ALT1_ENET1_RGMII_TD0 — Select mux mode: ALT1 mux port: ENET1_RGMII_TD0 of instance:
enet1
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_DATA2 — Select mux mode: ALT0 mux port: USDHC1_DATA2 of instance:
usdhc1
001 ALT1_ENET1_RGMII_RD0 — Select mux mode: ALT1 mux port: ENET1_RGMII_RD0 of instance:
enet1
011 ALT3_I2C4_SCL — Select mux mode: ALT3 mux port: I2C4_SCL of instance: i2c4
100 ALT4_UART2_TX — Select mux mode: ALT4 mux port: UART2_TX of instance: uart2
101 ALT5_GPIO2_IO[4] — Select mux mode: ALT5 mux port: GPIO2_IO04 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_DATA3 — Select mux mode: ALT0 mux port: USDHC1_DATA3 of instance:
usdhc1
001 ALT1_ENET1_RGMII_RD1 — Select mux mode: ALT1 mux port: ENET1_RGMII_RD1 of instance:
enet1
011 ALT3_I2C4_SDA — Select mux mode: ALT3 mux port: I2C4_SDA of instance: i2c4
100 ALT4_UART2_RX — Select mux mode: ALT4 mux port: UART2_RX of instance: uart2
101 ALT5_GPIO2_IO[5] — Select mux mode: ALT5 mux port: GPIO2_IO05 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC1_DATA4 — Select mux mode: ALT0 mux port: USDHC1_DATA4 of instance:
usdhc1
001 ALT1_ENET1_RGMII_TX_CTL — Select mux mode: ALT1 mux port: ENET1_RGMII_TX_CTL of
instance: enet1
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_DATA5 — Select mux mode: ALT0 mux port: USDHC1_DATA5 of instance:
usdhc1
001 ALT1_ENET1_TX_ER — Select mux mode: ALT1 mux port: ENET1_TX_ER of instance: enet1
011 ALT3_I2C1_SDA — Select mux mode: ALT3 mux port: I2C1_SDA of instance: i2c1
100 ALT4_UART2_CTS_B — Select mux mode: ALT4 mux port: UART2_CTS_B of instance: uart2
101 ALT5_GPIO2_IO[7] — Select mux mode: ALT5 mux port: GPIO2_IO07 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_DATA6 — Select mux mode: ALT0 mux port: USDHC1_DATA6 of instance:
usdhc1
001 ALT1_ENET1_RGMII_RX_CTL — Select mux mode: ALT1 mux port: ENET1_RGMII_RX_CTL of
instance: enet1
011 ALT3_I2C2_SCL — Select mux mode: ALT3 mux port: I2C2_SCL of instance: i2c2
100 ALT4_UART3_TX — Select mux mode: ALT4 mux port: UART3_TX of instance: uart3
101 ALT5_GPIO2_IO[8] — Select mux mode: ALT5 mux port: GPIO2_IO08 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC1_DATA7 — Select mux mode: ALT0 mux port: USDHC1_DATA7 of instance:
usdhc1
001 ALT1_ENET1_RX_ER — Select mux mode: ALT1 mux port: ENET1_RX_ER of instance: enet1
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_RESET_B — Select mux mode: ALT0 mux port: USDHC1_RESET_B of instance:
usdhc1
001 ALT1_ENET1_TX_CLK — Select mux mode: ALT1 mux port: ENET1_TX_CLK of instance: enet1
011 ALT3_I2C3_SCL — Select mux mode: ALT3 mux port: I2C3_SCL of instance: i2c3
100 ALT4_UART3_RTS_B — Select mux mode: ALT4 mux port: UART3_RTS_B of instance: uart3
101 ALT5_GPIO2_IO[10] — Select mux mode: ALT5 mux port: GPIO2_IO10 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC1_STROBE — Select mux mode: ALT0 mux port: USDHC1_STROBE of instance:
usdhc1
011 ALT3_I2C3_SDA — Select mux mode: ALT3 mux port: I2C3_SDA of instance: i2c3
100 ALT4_UART3_CTS_B — Select mux mode: ALT4 mux port: UART3_CTS_B of instance: uart3
101 ALT5_GPIO2_IO[11] — Select mux mode: ALT5 mux port: GPIO2_IO11 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC2_CD_B — Select mux mode: ALT0 mux port: USDHC2_CD_B of instance: usdhc2
101 ALT5_GPIO2_IO[12] — Select mux mode: ALT5 mux port: GPIO2_IO12 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC2_CLK — Select mux mode: ALT0 mux port: USDHC2_CLK of instance: usdhc2
010 ALT2_ECSPI2_SCLK — Select mux mode: ALT2 mux port: ECSPI2_SCLK of instance: ecspi2
011 ALT3_UART4_RX — Select mux mode: ALT3 mux port: UART4_RX of instance: uart4
101 ALT5_GPIO2_IO[13] — Select mux mode: ALT5 mux port: GPIO2_IO13 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC2_CMD — Select mux mode: ALT0 mux port: USDHC2_CMD of instance: usdhc2
010 ALT2_ECSPI2_MOSI — Select mux mode: ALT2 mux port: ECSPI2_MOSI of instance: ecspi2
011 ALT3_UART4_TX — Select mux mode: ALT3 mux port: UART4_TX of instance: uart4
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC2_DATA0 — Select mux mode: ALT0 mux port: USDHC2_DATA0 of instance:
usdhc2
010 ALT2_I2C4_SDA — Select mux mode: ALT2 mux port: I2C4_SDA of instance: i2c4
011 ALT3_UART2_RX — Select mux mode: ALT3 mux port: UART2_RX of instance: uart2
100 ALT4_AUDIOMIX_PDM_BIT_STREAM[0] — Select mux mode: ALT4 mux port:
AUDIOMIX_PDM_BIT_STREAM00 of instance: pdm
101 ALT5_GPIO2_IO[15] — Select mux mode: ALT5 mux port: GPIO2_IO15 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC2_DATA1 — Select mux mode: ALT0 mux port: USDHC2_DATA1 of instance:
usdhc2
010 ALT2_I2C4_SCL — Select mux mode: ALT2 mux port: I2C4_SCL of instance: i2c4
011 ALT3_UART2_TX — Select mux mode: ALT3 mux port: UART2_TX of instance: uart2
100 ALT4_AUDIOMIX_PDM_BIT_STREAM[1] — Select mux mode: ALT4 mux port:
AUDIOMIX_PDM_BIT_STREAM01 of instance: pdm
101 ALT5_GPIO2_IO[16] — Select mux mode: ALT5 mux port: GPIO2_IO16 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_USDHC2_DATA2 — Select mux mode: ALT0 mux port: USDHC2_DATA2 of instance:
usdhc2
010 ALT2_ECSPI2_SS0 — Select mux mode: ALT2 mux port: ECSPI2_SS0 of instance: ecspi2
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC2_DATA3 — Select mux mode: ALT0 mux port: USDHC2_DATA3 of instance:
usdhc2
010 ALT2_ECSPI2_MISO — Select mux mode: ALT2 mux port: ECSPI2_MISO of instance: ecspi2
011 ALT3_AUDIOMIX_SPDIF1_IN — Select mux mode: ALT3 mux port: AUDIOMIX_SPDIF1_IN of
instance: spdif
100 ALT4_AUDIOMIX_PDM_BIT_STREAM[3] — Select mux mode: ALT4 mux port:
AUDIOMIX_PDM_BIT_STREAM03 of instance: pdm
101 ALT5_GPIO2_IO[18] — Select mux mode: ALT5 mux port: GPIO2_IO18 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC2_RESET_B — Select mux mode: ALT0 mux port: USDHC2_RESET_B of instance:
usdhc2
101 ALT5_GPIO2_IO[19] — Select mux mode: ALT5 mux port: GPIO2_IO19 of instance: gpio2
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_USDHC2_WP — Select mux mode: ALT0 mux port: USDHC2_WP of instance: usdhc2
101 ALT5_GPIO2_IO[20] — Select mux mode: ALT5 mux port: GPIO2_IO20 of instance: gpio2
110 ALT6_CORESIGHT_EVENTI — Select mux mode: ALT6 mux port: CORESIGHT_EVENTI of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_ALE — Select mux mode: ALT0 mux port: NAND_ALE of instance: nand
001 ALT1_FLEXSPI_A_SCLK — Select mux mode: ALT1 mux port: FLEXSPI_A_SCLK of instance:
flexspi
010 ALT2_AUDIOMIX_SAI3_TX_BCLK — Select mux mode: ALT2 mux port:
AUDIOMIX_SAI3_TX_BCLK of instance: sai3
011 ALT3_ISP_FL_TRIG_0 — Select mux mode: ALT3 mux port: ISP_FL_TRIG_0 of instance: isp
100 ALT4_UART3_RX — Select mux mode: ALT4 mux port: UART3_RX of instance: uart3
101 ALT5_GPIO3_IO[0] — Select mux mode: ALT5 mux port: GPIO3_IO00 of instance: gpio3
110 ALT6_CORESIGHT_TRACE_CLK — Select mux mode: ALT6 mux port:
CORESIGHT_TRACE_CLK of instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_CE0_B — Select mux mode: ALT0 mux port: NAND_CE0_B of instance: nand
001 ALT1_FLEXSPI_A_SS0_B — Select mux mode: ALT1 mux port: FLEXSPI_A_SS0_B of instance:
flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_CE1_B — Select mux mode: ALT0 mux port: NAND_CE1_B of instance: nand
001 ALT1_FLEXSPI_A_SS1_B — Select mux mode: ALT1 mux port: FLEXSPI_A_SS1_B of instance:
flexspi
010 ALT2_USDHC3_STROBE — Select mux mode: ALT2 mux port: USDHC3_STROBE of instance:
usdhc3
100 ALT4_I2C4_SCL — Select mux mode: ALT4 mux port: I2C4_SCL of instance: i2c4
101 ALT5_GPIO3_IO[2] — Select mux mode: ALT5 mux port: GPIO3_IO02 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[0] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE00 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_CE2_B — Select mux mode: ALT0 mux port: NAND_CE2_B of instance: nand
001 ALT1_FLEXSPI_B_SS0_B — Select mux mode: ALT1 mux port: FLEXSPI_B_SS0_B of instance:
flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_CE3_B — Select mux mode: ALT0 mux port: NAND_CE3_B of instance: nand
001 ALT1_FLEXSPI_B_SS1_B — Select mux mode: ALT1 mux port: FLEXSPI_B_SS1_B of instance:
flexspi
010 ALT2_USDHC3_DATA6 — Select mux mode: ALT2 mux port: USDHC3_DATA6 of instance:
usdhc3
100 ALT4_I2C3_SDA — Select mux mode: ALT4 mux port: I2C3_SDA of instance: i2c3
101 ALT5_GPIO3_IO[4] — Select mux mode: ALT5 mux port: GPIO3_IO04 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[2] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE02 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_CLE — Select mux mode: ALT0 mux port: NAND_CLE of instance: nand
001 ALT1_FLEXSPI_B_SCLK — Select mux mode: ALT1 mux port: FLEXSPI_B_SCLK of instance:
flexspi
010 ALT2_USDHC3_DATA7 — Select mux mode: ALT2 mux port: USDHC3_DATA7 of instance:
usdhc3
100 ALT4_UART4_RX — Select mux mode: ALT4 mux port: UART4_RX of instance: uart4
101 ALT5_GPIO3_IO[5] — Select mux mode: ALT5 mux port: GPIO3_IO05 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[3] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE03 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_DATA00 — Select mux mode: ALT0 mux port: NAND_DATA00 of instance: nand
001 ALT1_FLEXSPI_A_DATA[0] — Select mux mode: ALT1 mux port: FLEXSPI_A_DATA00 of
instance: flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_DATA01 — Select mux mode: ALT0 mux port: NAND_DATA01 of instance: nand
001 ALT1_FLEXSPI_A_DATA[1] — Select mux mode: ALT1 mux port: FLEXSPI_A_DATA01 of
instance: flexspi
010 ALT2_AUDIOMIX_SAI3_TX_SYNC — Select mux mode: ALT2 mux port:
AUDIOMIX_SAI3_TX_SYNC of instance: sai3
011 ALT3_ISP_PRELIGHT_TRIG_0 — Select mux mode: ALT3 mux port: ISP_PRELIGHT_TRIG_0 of
instance: isp
100 ALT4_UART4_TX — Select mux mode: ALT4 mux port: UART4_TX of instance: uart4
101 ALT5_GPIO3_IO[7] — Select mux mode: ALT5 mux port: GPIO3_IO07 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[5] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE05 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_DATA02 — Select mux mode: ALT0 mux port: NAND_DATA02 of instance: nand
001 ALT1_FLEXSPI_A_DATA[2] — Select mux mode: ALT1 mux port: FLEXSPI_A_DATA02 of
instance: flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_DATA03 — Select mux mode: ALT0 mux port: NAND_DATA03 of instance: nand
001 ALT1_FLEXSPI_A_DATA[3] — Select mux mode: ALT1 mux port: FLEXSPI_A_DATA03 of
instance: flexspi
010 ALT2_USDHC3_WP — Select mux mode: ALT2 mux port: USDHC3_WP of instance: usdhc3
011 ALT3_UART4_RTS_B — Select mux mode: ALT3 mux port: UART4_RTS_B of instance: uart4
100 ALT4_ISP_FL_TRIG_1 — Select mux mode: ALT4 mux port: ISP_FL_TRIG_1 of instance: isp
101 ALT5_GPIO3_IO[9] — Select mux mode: ALT5 mux port: GPIO3_IO09 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[7] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE07 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_DATA04 — Select mux mode: ALT0 mux port: NAND_DATA04 of instance: nand
001 ALT1_FLEXSPI_B_DATA[0] — Select mux mode: ALT1 mux port: FLEXSPI_B_DATA00 of
instance: flexspi
010 ALT2_USDHC3_DATA0 — Select mux mode: ALT2 mux port: USDHC3_DATA0 of instance:
usdhc3
011 ALT3_FLEXSPI_A_DATA[4] — Select mux mode: ALT3 mux port: FLEXSPI_A_DATA04 of
instance: flexspi
100 ALT4_ISP_SHUTTER_TRIG_1 — Select mux mode: ALT4 mux port: ISP_SHUTTER_TRIG_1 of
instance: isp
101 ALT5_GPIO3_IO[10] — Select mux mode: ALT5 mux port: GPIO3_IO10 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[8] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE08 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_DATA05 — Select mux mode: ALT0 mux port: NAND_DATA05 of instance: nand
001 ALT1_FLEXSPI_B_DATA[1] — Select mux mode: ALT1 mux port: FLEXSPI_B_DATA01 of
instance: flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_DATA06 — Select mux mode: ALT0 mux port: NAND_DATA06 of instance: nand
001 ALT1_FLEXSPI_B_DATA[2] — Select mux mode: ALT1 mux port: FLEXSPI_B_DATA02 of
instance: flexspi
010 ALT2_USDHC3_DATA2 — Select mux mode: ALT2 mux port: USDHC3_DATA2 of instance:
usdhc3
011 ALT3_FLEXSPI_A_DATA[6] — Select mux mode: ALT3 mux port: FLEXSPI_A_DATA06 of
instance: flexspi
100 ALT4_ISP_PRELIGHT_TRIG_1 — Select mux mode: ALT4 mux port: ISP_PRELIGHT_TRIG_1 of
instance: isp
101 ALT5_GPIO3_IO[12] — Select mux mode: ALT5 mux port: GPIO3_IO12 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[10] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE10 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_DATA07 — Select mux mode: ALT0 mux port: NAND_DATA07 of instance: nand
001 ALT1_FLEXSPI_B_DATA[3] — Select mux mode: ALT1 mux port: FLEXSPI_B_DATA03 of
instance: flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_DQS — Select mux mode: ALT0 mux port: NAND_DQS of instance: nand
001 ALT1_FLEXSPI_A_DQS — Select mux mode: ALT1 mux port: FLEXSPI_A_DQS of instance:
flexspi
010 ALT2_AUDIOMIX_SAI3_MCLK — Select mux mode: ALT2 mux port: AUDIOMIX_SAI3_MCLK of
instance: sai3
011 ALT3_ISP_SHUTTER_OPEN_0 — Select mux mode: ALT3 mux port: ISP_SHUTTER_OPEN_0 of
instance: isp
100 ALT4_I2C3_SCL — Select mux mode: ALT4 mux port: I2C3_SCL of instance: i2c3
101 ALT5_GPIO3_IO[14] — Select mux mode: ALT5 mux port: GPIO3_IO14 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[12] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE12 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_RE_B — Select mux mode: ALT0 mux port: NAND_RE_B of instance: nand
001 ALT1_FLEXSPI_B_DQS — Select mux mode: ALT1 mux port: FLEXSPI_B_DQS of instance:
flexspi
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_READY_B — Select mux mode: ALT0 mux port: NAND_READY_B of instance: nand
010 ALT2_USDHC3_RESET_B — Select mux mode: ALT2 mux port: USDHC3_RESET_B of instance:
usdhc3
100 ALT4_I2C3_SCL — Select mux mode: ALT4 mux port: I2C3_SCL of instance: i2c3
101 ALT5_GPIO3_IO[16] — Select mux mode: ALT5 mux port: GPIO3_IO16 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[14] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE14 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_NAND_WE_B — Select mux mode: ALT0 mux port: NAND_WE_B of instance: nand
010 ALT2_USDHC3_CLK — Select mux mode: ALT2 mux port: USDHC3_CLK of instance: usdhc3
100 ALT4_I2C3_SDA — Select mux mode: ALT4 mux port: I2C3_SDA of instance: i2c3
101 ALT5_GPIO3_IO[17] — Select mux mode: ALT5 mux port: GPIO3_IO17 of instance: gpio3
110 ALT6_CORESIGHT_TRACE[15] — Select mux mode: ALT6 mux port: CORESIGHT_TRACE15 of
instance: coresight
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_NAND_WP_B — Select mux mode: ALT0 mux port: NAND_WP_B of instance: nand
010 ALT2_USDHC3_CMD — Select mux mode: ALT2 mux port: USDHC3_CMD of instance: usdhc3
100 ALT4_I2C4_SCL — Select mux mode: ALT4 mux port: I2C4_SCL of instance: i2c4
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
011 ALT3_GPT1_COMPARE3 — Select mux mode: ALT3 mux port: GPT1_COMPARE3 of instance:
gpt1
101 ALT5_GPIO5_IO[5] — Select mux mode: ALT5 mux port: GPIO5_IO05 of instance: gpio5
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_ECSPI1_SCLK — Select mux mode: ALT0 mux port: ECSPI1_SCLK of instance: ecspi1
001 ALT1_UART3_RX — Select mux mode: ALT1 mux port: UART3_RX of instance: uart3
010 ALT2_I2C1_SCL — Select mux mode: ALT2 mux port: I2C1_SCL of instance: i2c1
011 ALT3_AUDIOMIX_SAI7_RX_SYNC — Select mux mode: ALT3 mux port:
AUDIOMIX_SAI7_RX_SYNC of instance: sai7
101 ALT5_GPIO5_IO[6] — Select mux mode: ALT5 mux port: GPIO5_IO06 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_ECSPI1_MOSI — Select mux mode: ALT0 mux port: ECSPI1_MOSI of instance: ecspi1
001 ALT1_UART3_TX — Select mux mode: ALT1 mux port: UART3_TX of instance: uart3
010 ALT2_I2C1_SDA — Select mux mode: ALT2 mux port: I2C1_SDA of instance: i2c1
011 ALT3_AUDIOMIX_SAI7_RX_BCLK — Select mux mode: ALT3 mux port:
AUDIOMIX_SAI7_RX_BCLK of instance: sai7
101 ALT5_GPIO5_IO[7] — Select mux mode: ALT5 mux port: GPIO5_IO07 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_ECSPI1_MISO — Select mux mode: ALT0 mux port: ECSPI1_MISO of instance: ecspi1
001 ALT1_UART3_CTS_B — Select mux mode: ALT1 mux port: UART3_CTS_B of instance: uart3
010 ALT2_I2C2_SCL — Select mux mode: ALT2 mux port: I2C2_SCL of instance: i2c2
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_ECSPI1_SS0 — Select mux mode: ALT0 mux port: ECSPI1_SS0 of instance: ecspi1
001 ALT1_UART3_RTS_B — Select mux mode: ALT1 mux port: UART3_RTS_B of instance: uart3
010 ALT2_I2C2_SDA — Select mux mode: ALT2 mux port: I2C2_SDA of instance: i2c2
011 ALT3_AUDIOMIX_SAI7_TX_SYNC — Select mux mode: ALT3 mux port:
AUDIOMIX_SAI7_TX_SYNC of instance: sai7
101 ALT5_GPIO5_IO[9] — Select mux mode: ALT5 mux port: GPIO5_IO09 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_ECSPI2_SCLK — Select mux mode: ALT0 mux port: ECSPI2_SCLK of instance: ecspi2
001 ALT1_UART4_RX — Select mux mode: ALT1 mux port: UART4_RX of instance: uart4
010 ALT2_I2C3_SCL — Select mux mode: ALT2 mux port: I2C3_SCL of instance: i2c3
011 ALT3_AUDIOMIX_SAI7_TX_BCLK — Select mux mode: ALT3 mux port:
AUDIOMIX_SAI7_TX_BCLK of instance: sai7
101 ALT5_GPIO5_IO[10] — Select mux mode: ALT5 mux port: GPIO5_IO10 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_ECSPI2_MOSI — Select mux mode: ALT0 mux port: ECSPI2_MOSI of instance: ecspi2
001 ALT1_UART4_TX — Select mux mode: ALT1 mux port: UART4_TX of instance: uart4
010 ALT2_I2C3_SDA — Select mux mode: ALT2 mux port: I2C3_SDA of instance: i2c3
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
101 ALT5_GPIO5_IO[12] — Select mux mode: ALT5 mux port: GPIO5_IO12 of instance: gpio5
000 ALT0_ECSPI2_MISO — Select mux mode: ALT0 mux port: ECSPI2_MISO of instance: ecspi2
001 ALT1_UART4_CTS_B — Select mux mode: ALT1 mux port: UART4_CTS_B of instance: uart4
010 ALT2_I2C4_SCL — Select mux mode: ALT2 mux port: I2C4_SCL of instance: i2c4
011 ALT3_AUDIOMIX_SAI7_MCLK — Select mux mode: ALT3 mux port: AUDIOMIX_SAI7_MCLK of
instance: sai7
100 ALT4_CCM_CLKO1 — Select mux mode: ALT4 mux port: CCM_CLKO1 of instance: ccm
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_ECSPI2_SS0 — Select mux mode: ALT0 mux port: ECSPI2_SS0 of instance: ecspi2
001 ALT1_UART4_RTS_B — Select mux mode: ALT1 mux port: UART4_RTS_B of instance: uart4
010 ALT2_I2C4_SDA — Select mux mode: ALT2 mux port: I2C4_SDA of instance: i2c4
100 ALT4_CCM_CLKO2 — Select mux mode: ALT4 mux port: CCM_CLKO2 of instance: ccm
101 ALT5_GPIO5_IO[13] — Select mux mode: ALT5 mux port: GPIO5_IO13 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_I2C1_SCL — Select mux mode: ALT0 mux port: I2C1_SCL of instance: i2c1
001 ALT1_ENET_QOS_MDC — Select mux mode: ALT1 mux port: ENET_QOS_MDC of instance:
enet_qos
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_I2C1_SDA — Select mux mode: ALT0 mux port: I2C1_SDA of instance: i2c1
001 ALT1_ENET_QOS_MDIO — Select mux mode: ALT1 mux port: ENET_QOS_MDIO of instance:
enet_qos
011 ALT3_ECSPI1_MOSI — Select mux mode: ALT3 mux port: ECSPI1_MOSI of instance: ecspi1
101 ALT5_GPIO5_IO[15] — Select mux mode: ALT5 mux port: GPIO5_IO15 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_I2C2_SCL — Select mux mode: ALT0 mux port: I2C2_SCL of instance: i2c2
001 ALT1_ENET_QOS_1588_EVENT1_IN — Select mux mode: ALT1 mux port:
ENET_QOS_1588_EVENT1_IN of instance: enet_qos
010 ALT2_USDHC3_CD_B — Select mux mode: ALT2 mux port: USDHC3_CD_B of instance: usdhc3
011 ALT3_ECSPI1_MISO — Select mux mode: ALT3 mux port: ECSPI1_MISO of instance: ecspi1
100 ALT4_ENET_QOS_1588_EVENT1_AUX_IN — Select mux mode: ALT4 mux port:
ENET_QOS_1588_EVENT1_AUX_IN of instance: enet_qos
101 ALT5_GPIO5_IO[16] — Select mux mode: ALT5 mux port: GPIO5_IO16 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_I2C2_SDA — Select mux mode: ALT0 mux port: I2C2_SDA of instance: i2c2
001 ALT1_ENET_QOS_1588_EVENT1_OUT — Select mux mode: ALT1 mux port:
ENET_QOS_1588_EVENT1_OUT of instance: enet_qos
010 ALT2_USDHC3_WP — Select mux mode: ALT2 mux port: USDHC3_WP of instance: usdhc3
011 ALT3_ECSPI1_SS0 — Select mux mode: ALT3 mux port: ECSPI1_SS0 of instance: ecspi1
101 ALT5_GPIO5_IO[17] — Select mux mode: ALT5 mux port: GPIO5_IO17 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_I2C3_SCL — Select mux mode: ALT0 mux port: I2C3_SCL of instance: i2c3
001 ALT1_PWM4_OUT — Select mux mode: ALT1 mux port: PWM4_OUT of instance: pwm4
010 ALT2_GPT2_CLK — Select mux mode: ALT2 mux port: GPT2_CLK of instance: gpt2
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_I2C3_SDA — Select mux mode: ALT0 mux port: I2C3_SDA of instance: i2c3
001 ALT1_PWM3_OUT — Select mux mode: ALT1 mux port: PWM3_OUT of instance: pwm3
010 ALT2_GPT3_CLK — Select mux mode: ALT2 mux port: GPT3_CLK of instance: gpt3
011 ALT3_ECSPI2_MOSI — Select mux mode: ALT3 mux port: ECSPI2_MOSI of instance: ecspi2
101 ALT5_GPIO5_IO[19] — Select mux mode: ALT5 mux port: GPIO5_IO19 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_I2C4_SCL — Select mux mode: ALT0 mux port: I2C4_SCL of instance: i2c4
001 ALT1_PWM2_OUT — Select mux mode: ALT1 mux port: PWM2_OUT of instance: pwm2
010 ALT2_PCIE_CLKREQ_B — Select mux mode: ALT2 mux port: PCIE_CLKREQ_B of instance: pcie
011 ALT3_ECSPI2_MISO — Select mux mode: ALT3 mux port: ECSPI2_MISO of instance: ecspi2
101 ALT5_GPIO5_IO[20] — Select mux mode: ALT5 mux port: GPIO5_IO20 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_I2C4_SDA — Select mux mode: ALT0 mux port: I2C4_SDA of instance: i2c4
001 ALT1_PWM1_OUT — Select mux mode: ALT1 mux port: PWM1_OUT of instance: pwm1
011 ALT3_ECSPI2_SS0 — Select mux mode: ALT3 mux port: ECSPI2_SS0 of instance: ecspi2
101 ALT5_GPIO5_IO[21] — Select mux mode: ALT5 mux port: GPIO5_IO21 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_UART1_RX — Select mux mode: ALT0 mux port: UART1_RX of instance: uart1
001 ALT1_ECSPI3_SCLK — Select mux mode: ALT1 mux port: ECSPI3_SCLK of instance: ecspi3
101 ALT5_GPIO5_IO[22] — Select mux mode: ALT5 mux port: GPIO5_IO22 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_UART1_TX — Select mux mode: ALT0 mux port: UART1_TX of instance: uart1
001 ALT1_ECSPI3_MOSI — Select mux mode: ALT1 mux port: ECSPI3_MOSI of instance: ecspi3
101 ALT5_GPIO5_IO[23] — Select mux mode: ALT5 mux port: GPIO5_IO23 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_UART2_RX — Select mux mode: ALT0 mux port: UART2_RX of instance: uart2
001 ALT1_ECSPI3_MISO — Select mux mode: ALT1 mux port: ECSPI3_MISO of instance: ecspi3
011 ALT3_GPT1_COMPARE3 — Select mux mode: ALT3 mux port: GPT1_COMPARE3 of instance:
gpt1
101 ALT5_GPIO5_IO[24] — Select mux mode: ALT5 mux port: GPIO5_IO24 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_UART2_TX — Select mux mode: ALT0 mux port: UART2_TX of instance: uart2
001 ALT1_ECSPI3_SS0 — Select mux mode: ALT1 mux port: ECSPI3_SS0 of instance: ecspi3
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_UART3_RX — Select mux mode: ALT0 mux port: UART3_RX of instance: uart3
001 ALT1_UART1_CTS_B — Select mux mode: ALT1 mux port: UART1_CTS_B of instance: uart1
010 ALT2_USDHC3_RESET_B — Select mux mode: ALT2 mux port: USDHC3_RESET_B of instance:
usdhc3
011 ALT3_GPT1_CAPTURE2 — Select mux mode: ALT3 mux port: GPT1_CAPTURE2 of instance:
gpt1
100 ALT4_CAN2_TX — Select mux mode: ALT4 mux port: CAN2_TX of instance: can2
101 ALT5_GPIO5_IO[26] — Select mux mode: ALT5 mux port: GPIO5_IO26 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
000 ALT0_UART3_TX — Select mux mode: ALT0 mux port: UART3_TX of instance: uart3
001 ALT1_UART1_RTS_B — Select mux mode: ALT1 mux port: UART1_RTS_B of instance: uart1
010 ALT2_USDHC3_VSELECT — Select mux mode: ALT2 mux port: USDHC3_VSELECT of instance:
usdhc3
011 ALT3_GPT1_CLK — Select mux mode: ALT3 mux port: GPT1_CLK of instance: gpt1
100 ALT4_CAN2_RX — Select mux mode: ALT4 mux port: CAN2_RX of instance: can2
101 ALT5_GPIO5_IO[27] — Select mux mode: ALT5 mux port: GPIO5_IO27 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
000 ALT0_UART4_RX — Select mux mode: ALT0 mux port: UART4_RX of instance: uart4
001 ALT1_UART2_CTS_B — Select mux mode: ALT1 mux port: UART2_CTS_B of instance: uart2
010 ALT2_PCIE_CLKREQ_B — Select mux mode: ALT2 mux port: PCIE_CLKREQ_B of instance: pcie
Table continues on the next page...
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R Reserved
Reset
000 ALT0_UART4_TX — Select mux mode: ALT0 mux port: UART4_TX of instance: uart4
001 ALT1_UART2_RTS_B — Select mux mode: ALT1 mux port: UART2_RTS_B of instance: uart2
011 ALT3_GPT1_CAPTURE1 — Select mux mode: ALT3 mux port: GPT1_CAPTURE1 of instance:
gpt1
100 ALT4_I2C6_SDA — Select mux mode: ALT4 mux port: I2C6_SDA of instance: i2c6
101 ALT5_GPIO5_IO[29] — Select mux mode: ALT5 mux port: GPIO5_IO29 of instance: gpio5
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved SION MUX_MODE
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reset
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R
Reserved
Reserved
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: BOOT_MODE0
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: BOOT_MODE1
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: BOOT_MODE2
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: BOOT_MODE3
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: JTAG_MOD
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: JTAG_TDI
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: JTAG_TMS
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: JTAG_TCK
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: JTAG_TDO
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO00
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO01
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO02
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO03
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO04
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO05
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO06
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO07
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO08
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO09
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO10
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO11
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO12
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO13
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO14
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: GPIO1_IO15
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_MDC
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_MDIO
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TD3
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TD2
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TD1
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TD0
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TX_CTL
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_TXC
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RX_CTL
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RXC
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RD0
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RD1
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RD2
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: ENET_RD3
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
Reset
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
Reserved
Reserved PE HYS PUE ODE FSEL DSE
Reset
0 HYS_0_CMOS — CMOS
1 HYS_1_SCHMITT — Schmitt
6 Pull Up / Down Config. Field
PUE
Select one out of next values for pad: SD1_CLK
Table continues on the next page...
00 DSE_X1 — X1
10 DSE_X2 — X2
01 DSE_X4 — X4
11 DSE_X6 — X6
0 This field is reserved.
- Reserved
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16