MT8390 IoT Processor Datasheet
MT8390 IoT Processor Datasheet
DATASHEET
Version: 1.9
Release date: 2024-04-24
Use of this document and any information contained therein is subject to the terms and conditions set forth in
Exhibit 1 Terms and Conditions. This document is subject to change without notice.
Table of Contents
List of Figures
List of Tables
1 Introduction
Dual-core Arm® Cortex®-A78 processor LPDDR4(X): Up to 8 GB, with memory data rate up
Hexa-core Arm Cortex-A55 processor to LPDDR4(X)-3733
Arm Mali™-G57 MC3 3D Graphics Accelerator (GPU) Display output supporting 4K30 + 4K60 resolution
with Vulkan® 1.1, OpenGL ES 3.2 and OpenCL™ 2.2 Image processing: 32MP @ 30fps for single camera
Single-core AI Processor Unit (APU) Cadence® capture; 16MP + 16MP @ 30fps for dual camera
Tensilica®VP6 processor with AI Accelerator (AIA) capture
Single-core Cadence HiFi 5 Audio Engine DSP Video encoding: 4K @ 30 fps with HEVC/H.264
Video decoding: 4K @ 75 fps with
AV1/VP9/HEVC/H.264
MT8390
Application Processing Memory Compute Engines
Arm DynamIQ 2 × EMI HiFi 5 2D/3D GPU
(64-bit LPDDR4(X)) Audio DSP Mali-G57
Two core Six core
Arm Cortex-A78 Arm Cortex-A55 128KB On-chip Boot ROM
Single-Core APU Dual-Core SCP
64KB L1I 64KB L1D 32KB L1I 32KB L1D 192KB On-chip SRAM Vision P6 + AIA MDSP RV55
5 × I2C
HDMI/DP Audio WDT PCIe
2 × I3C
Feature MT8390
SPDIF_OUT 1
I2C 5
Inter-Integrated Circuit
I3C 2(1)
Universal Asynchronous Receiver/Transmitter UART 4
Serial Peripheral Interface SPI 6 (master mode only)
USB Port 0 USB 2.0 DRD
Universal Serial Bus USB Port 1 SS USB 3.1 Gen1 DRD
USB Port 2 USB 2.0 DRD
KeyPad Scanner KeyPad 2×2
General Purpose I/O pins GPIO 177
Pulse Width Modulation PWM Up to 4
Peripheral Component Interconnect Express PCIe Gen2, 1-lane, RC mode
Gigabit Ethernet Network Interface Controller ENIC MII/RMII/RGMII
Miscellaneous
Auxiliary ADC AUXADC 12-bit, 6-channel
GPT 5 × 32-bit and 1 × 64-bit
Timers SYSTMR 64-bit
(2)
WDT Yes
Thermal Controller TCSYS Yes
1. I3C5 and I3C6 support MIPI I3C® (SDR mode only).
2. The Watchdog Timer (WDT) is part of the Top Reset Generation Unit (TOPRGU).
2 Preface
The interface clock frequency documented in this datasheet is the maximum clock frequency, which corresponds to the
maximum programmable frequency on the particular output clock. The frequency defines the maximum limit supported
by the device and does not consider into account any system limitation (layouts, connectors, and so forth).
The system designer should take into account these system considerations and the device timing characteristics as well and
should determine properly the maximum frequency supported to transfer the data on the corresponding interface.
The timing parameter values do not include delays by board routes. Timing values may be adjusted by
increasing/decreasing such delays. If needed, external logic hardware such as buffers may be used to compensate any
timing differences.
2.3 Abbreviations
A
ACP
Accelerate Coherency Port
ADC
Analog to Digital Convertor
AE
Auto Exposure
AER
Advanced Error Reporting
AES
Advanced Encryption Standard
AF
Auto Focus
AFBC
ARM Frame Buffer Compression
AHB
Advanced High-Performance Bus
AI
Artificial Intelligence
AIA
AI Accelerator
ALLM
Auto Low Latency Mode
AP
Application Processor
APB
Advanced Peripheral Bus
APC
Address Protection Controller
API
Application Programming Interface
APMCU
Application Processing Microcontroller Unit
APU
AI Processor Unit
APXGPT
Application Processor X General Purpose Timer
ASPM
Active State Power Management
ASRC
Asynchronous Sample Rate Converter
ASSR
Alternative Scrambler Seed Reset
AUXADC
Auxiliary Analog/Digital Converter
AV
Audio Video
AVB
Audio Video Bridge
AWB
Auto White Balance
AXI
Advanced eXtensible Interface
B
BCLK
Baud Clock
BD
Buffer Descriptor
BDP
Buffer Descriptor Present
BTA
Bus Turnaround
C
CBS
Credit-based Shaper
CCC
Common Command Code
CCU
Camera Control Unit
CDR
Clock and Data Recovery
CEC
Consumer Electronics Control
CG
Clock Gating
CIC
Configuration Information Capability
CKSYS
Clock System
CKSQ
Clock Squarer
CMDE
Command Engine
CMDQ
Command Queue
CPHA
Clock Phase
CPOL
Clock Polarity
CPU
Central Processing Unit
CPUBIU
CPU Bus Interface Unit
CRC
Cyclic Redundancy Check
CS
Complete Spilt
CSC
Color Space Conversion
CSI
Camera Serial Interface
CTS
Clear to Send
CTSI
Clear to Send Interrupt
CV
Computer Vision
D
DA
Destination Address
DAA
Dynamic Address Assignment
DDC
Display Data Channel
DDR
Dual Data Rate
DFS
Dynamic Frequency Scaling
DLL
Divisor Latch LS (Least Significant Bit)
DLM
Divisor Latch MS (Most Significant Bit)
DMA
Direct Memory Access
DMIC
Digital Microphone
DO
Digital Output
DP
DisplayPort
DP TX
DisplayPort Transmitter
DP TX AUX
DisplayPort Transmitter Auxiliary Channel
DPI
Display Parallel Interface
DRAM
Dynamic Random Access Memory
DRD
Dual-Role-Device
DRE
Dark Region Enhancement
DRM
Digital Rights Management
DSC
Display Stream Compression
DSD
Direct Stream Digital
DSI
Display Serial Interface
DSP
Digital Signal Processor
DSU
DynamicIQ Shared Unit. Also referred to as the “CPU cluster” or “cluster” in this document.
DVFS
Dynamic Voltage and Frequency Scaling
DVI
Digital Visual Interface
E
ECC
Error Correction Code/Error Checking and Correction
ECRC
Endpoint Cyclic Redundancy Check
ED
Endpoint
EDID
Extended Display Identification Data
EDMA
External Data Memory Access
eDP
Embedded DisplayPort
EEE
Energy Efficient Ethernet
EINT
External Interrupt
ELSI
Enable Line Status Interrupt
EMI
External Memory Interface
eMMC
Embedded MultiMediaCard
ENIC
Ethernet Network Interface Controller
EOL
End of List
ERBFI
Enable RX Buffer Full Interrupt
ETBEI
Enable TX Buffer Empty Interrupt
F
FCR IIR
FIFO Control Register/Interrupt Identification Register
FD
Face Detection
FIFO
First In First Out
FHD
Full High-Definition
FLADJ
Frame Length Adjustment Register
FM
Fast Mode
FM+
Fast Mode Plus
FPU
Floating Point Unit
FSM
Finite State Machine
G
GIC
Generic Interrupt Controller
GPGPU
General Purpose computing on GPU
GPIO
General-purpose Input/Output
GPT
General-Purpose Timer
GPU
Graphics Processing Unit
H
HCI
Host Controller Interface
HCLK
Hopping Clock
HDCP
High-bandwidth Digital Content Protection
HDMI
High Definition Multimedia Interface
HDMITX
High Definition Multimedia Interface Transmitter
HDR
High Dynamic Range
HEIF
High Efficiency Image File
HLG
Hybrid Log Gamma
HLOS
High-Level Operating System
HP
Half Precision
HPD
Hot Plug Detect
HSYNC
Horizontal Sync
HWO
Hardware Ownership
I
I2C
Inter-Integrated Circuit
I2S
Inter-IC Sound
I3C
Improved Inter-Integrated Circuit
ICE
In-Circuit Emulator
IECR
Interrupt Enable Clear Register
IER
Interrupt Enable Register
IESER
Interrupt Enable Set Register
IMODI
Interrupt Moderation Interval
INTC
Internal Interrupt Controller
IoC
Interrupt On Completion
IoT
Internet of Things
IPC
Inter-Processor Communication
IPG
Inter-Packet Gap
IPPC
IP Power Control
IRQ
Interrupt Request
ISA
Instruction Set Architecture
ISP
Image Signal Processor
ISR
Interrupt Service Routine
J
JTAG
Joint Test Action Group
K
KP
Keypad
L
L1PMSS
L1 Power Management Substates
L2TCM
L2 Tightly-Coupled-Memory
LCD
Liquid-Crystal Display
LCR
Line Control Register
LFPS
Low Frequency Periodic Signaling
LPM
Lower power management
LSB
Least Significant Bit
LSR
Line Status Register
LTR
Latency Tolerance Reporting
LTSSM
Link Training and Status State Machine
LVTS
Low Voltage Thermal Sensor
M
MAC
Multiply-Accumulate/Media Access Control
MBIST
Memory Built-In Self-Test
MBOX
Mailbox
MCR
Modem Control Register
MCU
Microcontroller Unit
MDC
Management Data Clock
MDIO
Management Data Input/Output
MDLA
MediaTek Deep Learning Accelerators
MFG
MediaTek Flexible Graphics
MII
Media Independent Interface
MIPI
Mobile Industry Processor Interface
MISO
Master in slave out
MMU
Memory Management Unit
MOSI
Master out slave in
MPP
Multi-Page Program
MPS
Maximum Packet Size
MPU
Memory Protection Unit
MSA
Main Stream Attribute
MSB
Most Significant Bit
MSDC
MMC (MultiMediaCard) and SD (Secure Digital) Controller
MSI
Message Signaled Interrupt
MSR
Modem Status Register
MTL
MAC Transaction Layer
MTT
Multiple Transaction Translator
MUX
Multiplexer
N
NN
Neural Network
O
OTG
On-The-Go
P
PCIe
Peripheral Component Interconnect Express
PCLK
Peripheral Clock
PCM
Pulse Code Modulation
PDM
Pulse Density Modulation
PHY
Physical Layer
PHYA
Analog PHY
PHYD
Digital PHY
PIF
Processor Interface
PIO
Programmed Input/Output
PIPE
PHY Interface for PCI Express
PLL
Phase-Locked Loop
PMIC
Power Management Integrated Circuit
PMSS
Power Management Substates
POR
Power-On-Reset
PP
Page Program
PPB
Private Peripheral Bus
PPS
Pulse-Per-Second
PVT
Process, Voltage, and Temperature
PWM
Pulse Width Modulation
PQ
Perceptual Quantizer
Q
QE
Quad Enable
QMU
Queue Management Unit
QoS
Quality of Service
R
RBR
RX Buffer Register
RC
Root Complex
RGMII
Reduced GMII
RH
Relative Humidity
RL
Read Latency
RMII
Reduced MII
RMS
Root Mean Square
RPU
Region Protection Unit
RQS
Receive Queue Size
RSF
Receive Store and Forward
RTC
Real Time Clock
RTOS
Real Time Operating System
RTS
Request to Send
RTSI
Request to Send Interrupt
RX
Receiver
S
SA
Source Address
SAR
Successive Approximation Register
SCK
Serial Clock
SCL
Serial Clock Line
SCP
System Companion Processor
SCR
Scratch Register
SDA
Serial Data Line
SDIO
Secure Digital Input/Output
SDK
Software Development Kit
SDM
Sigma-Delta Modulation
SDR
Single Data Rate/Standard Dynamic Range
SDRAM
Synchronous Dynamic Random-Access Memory
SFD
Start of Frame Delimiter
SIMD
Single Instruction Multiple Data
SM
Standard Mode
SMI
Smart Multimedia Interface
SNFC
Serial NOR Flash Controller
SoC
System on Chip
SP
Single Precision
SPDIF
Sony/Philips Digital Interface Format
SPI
Serial Peripheral Interface
SPM
System Power Management
SRAM
Static Random Access Memory
SRC
Sampling Rate Converter
SSC
Spread Spectrum Clocking
SSUSB
SuperSpeed Universal Serial Bus
SYSTMR
System Timer
SW
Software
SYSRAM
System Static Random Access Memory
T
TCM
Tightly Coupled Memory
TCSYS
Thermal Control Subsystem
TDM
Time Division Multiplexing
TE
Tearing Effect
THR
TX Holding Register
THRE
TX Holding Register Empty
TLP
Transaction Layer Packet
TMDS
Transition-Minimized Differential Signaling
TOPRGU
Top Reset Generation Unit
TOPS
Tera Operations Per Second
TQS
Transmit Queue Size
TRB
Transfer Request Block
TSMCU
Thermal Sensing Micro Circuit Unit
TSN
Time-Sensitive Networking
TT
Transaction Translator
TTC
Transmit Threshold Control
TU
Transfer Unit
TX
Transmitter
TXQEN
Transmit Queue Enable
U
UART
Universal Asynchronous Receiver/Transmitter
UI
Unit Interval
USB
Universal Serial Bus
UTMI
USB2.0 Transceiver Macrocell Interface
V
VBID
Vertical Blanking ID
VC
Virtual Channel
VDEC
Video Decoder
VENC
Video Encoder
VIC
Vectored Interrupt Controller
VLIW
Very Long Instruction Word
VP6
Tensilica Vision Processor 6
VPP
Video Processing Pipe
VRR
Variable Refresh Rate
VSYNC
Vertical Synchronization
W
WDT
Watchdog Timer
WEL
Write Enable Latch
WIP
Write in Progress
WPE
Warp Engine
WRR
Weighted Round Robin
X
xHCI
Extensible Host Controller Interface
XIP
eXecute in Place
XOFF
Transmit Off
XON
Transmit On
Z
ZLP
Zero Length Packet
3 Features Description
The MT8390 device is a highly-integrated, powerful platform designed for a wide range of Artificial Intelligence (AI) and
Internet of Things (IoT) use cases requiring high-performance edge processing, advanced multimedia and connectivity
capabilities, multiple high-resolution cameras, connected touchscreen displays, and use of a multi-tasking High-Level
Operating System (HLOS).
The highly-capable octa-core application processor utilizes the Arm® DynamIQ™ technology by combining high-
performance Cortex-A78 and power-efficient Cortex-A55 cores, equipped with Arm Neon™ engine. The application
processor offers the necessary processing power to support the latest OpenOS, along with its demanding applications such
as web browsing, email and games. This content can be enhanced by the 2D/3D graphics accelerator (Arm Mali-G57 MC3
GPU) and then visualized on a high-resolution touchscreen display. To provide advanced multimedia applications and
services such as streaming audio and video, the device features multi-standard video encoder and decoder engines, and an
advanced audio subsystem.
The AI Processor Unit (APU) enables deep learning, Neural Network (NN) acceleration, and Computer Vision (CV)
applications. The latter, combined with the up to 32MP camera, can clearly and accurately perform AI-vision functions such
as facial recognition, object identification, scene analysis, optical character recognition and much more.
An extensive set of interfaces, connectivity, flexible storage and memory options further enhance the capabilities of the
device and give product designers freedom to customize.
3.1.1 Overview
The MCUSYS (the application processor subsystem) is responsible for running the operating system and application
programs, providing different levels of power efficiency and computing power to satisfy a wide range of system power and
performance requirements. It is composed of:
A local bus fabric (CPUBIU, Central Processing Unit (CPU) Bus Interface Unit)
An interrupt controller (GIC-600)
A CPU cluster (DSU with the CA78 and CA55 cores)
The Cortex-A55 cores are specifically optimized for power efficiency to minimize the power consumption for daily usage
scenarios and lightweight applications, while the Cortex-A78 cores are designed for performance-driven applications, and
providing the best user experiences for heavy tasks.
The MCUSYS supports the DVFS (Dynamic Voltage Frequency Scaling) technology to allow the CPU to run at different
frequencies and voltage configurations depending on the application requirements. Additionally, the power of each CPU
core can be individually turned off when not in use. In the standby mode, the MCUSYS can be completely shut down to
further reduce power consumption.
3.1.2 Features
6 × Arm Cortex-A55 cores with 32KB I/D cache and 128KB L2 cache
2 × Arm Cortex-A78 cores with 64KB I/D cache and 256KB L2 cache
2MB L3 cache
Interrupt controller, Arm GIC (Generic Interrupt Controller)-600
Advanced DVFS mechanism
1.7GHz MCU
DynamIQ CFG
APB
2MB L3
128 128
S1 1.7GHz S0
CPUBIU GIC-600
AXI
M1 M2 M0
128 128
128 64
The CPUBIU routes transactions to dedicated memory channels, reducing path latency and improving access performance,
but it does not support coherency functions. The GIC-600 supports and manages interrupts in the MCUSYS for interrupt
masking, prioritization, and security. Additionally, the debug logic of the MCUSYS supports static debugging to connect to
the system via certain interfaces (e.g. via the JTAG), allowing cross-triggering of internal and external trigger events for
debugging.
3.1.6 References
3.2.1 Overview
MFG (MediaTek Flexible Graphics) contains the Mali-G57 Graphics Processing Unit (GPU) and clock/reset control logic. The
Mali-G57 series of GPUs process extremely complicated graphics and perform general processing tasks assigned by the
main application processor.
3.2.2 Features
The Mali-G57 GPU includes the following features:
A programmable architecture.
An API feature set with support for shader-based and fixed-function graphics Application Programming Interfaces
(APIs).
Anti-aliasing capabilities.
An effective core for General-Purpose Computing on GPU (GPGPU) applications.
High memory bandwidth and low power consumption for 3D graphics content.
Performance leading 3D graphics.
Arm AMBA® 1 AXI slave interface for GPU configuration.
1 x 256-bit Arm AMBA 1 AXI master interface for external memory access.
Easy integration.
Latency tolerance.
Compressed texture formats.
Configurable per-core power management for enabling the optimal power and performance combination for each
application.
Coherency aware interconnects for system memory and resource sharing.
Arm Frame Buffer Compression (AFBC) 1.3.
8-bit, 10-bit, and 16-bit YUV input and output formats.
3.3.1 Overview
The Digital Signal Processor (DSP) is responsible for running the operating system and application programs. It comprises:
The Cadence HiFi 5 DSP is a highly optimized audio processor geared for efficient execution of audio and voice codecs and
pre- and post-processing modules.
The HiFi 5 DSP is a five-slot VLIW (Very Long Instruction Word) machine that can execute up to eight 32x32-bit MACs,
sixteen 32x16-bit MACs, and sixteen 16x16-bit MACs per cycle. It has the ability to issue two 128-bit loads per cycle, or one
load and one store of 128 bits per cycle for the parallel loads and stores of the operand and results. The HiFi 5 DSP offers
the additional floating-point precision support for enhanced audio and voice processing through an optional Single
Precision Floating Point Unit (SP FPU), which can perform eight single precision IEEE-754 floating-point MACs per cycle.
Since the audio and voice processing at the front-end is conducted in the frequency domain, both the floating-point and
fixed-point MAC operations in the HiFi 5 DSP are enhanced to operate on complex data types.
For supporting neural network-based speech recognition algorithms, the HiFi 5 DSP provides a Neural Network Extension
option that enables the hardware to perform up to thirty-two 8x16, 4x16, and 8x8-bit MACs per cycle. The multiplication
operations support both signed and unsigned operands as well as operands with 4-bit precision. A few speech neural
network implementations also use half-precision floating-point variables. For such networks, the HiFi 5 DSP offers a HP
(Half Precision) FPU option that provides up to 16 half-precision IEEE-754 floating point MACs per cycle. The instruction set
is designed to address both dot products and convolution operations to cover several types of neural network
implementations used in the speech recognition.
3.3.2 Features
Single-core Cadence HiFi 5 DSP operates at 720 MHz (0P75V), including:
64KB L1 I-cache
128KB L1 D-cache
Data retention not supported by Pre-fetch buffer, I-cache, D-cache, ITag, and DTag JTAG (Joint Test Action Group)
25 interrupts configurable by intc
Supports the SPM to control power sequence.
Peripheral:
512KB L2TCM
One UART
Five mailboxes
Ten semaphores
One system timer
One watchdog timer
System
signal Interrupt
ADSP SYS
HiFi5 Core
BReset Master AXI
Reset
Synchronizer
JTAG
interface
Access DSP AUDIO
Port Xtensa LX WDT DSP_CFG
UART SYS
DReset
Debug
Trace Module Slave AXI
Memory
ICache
DCache
Prefetch
System
Perisys
RAM
Pipeline length 7
Instruction memory fetch latency 2
Cycle of execute stage 1
Cycle of modify stage 3
Cycle of write-back stage 4
To further enhance cache performance, the data cache supports write-back operations. Additionally, the data cache can be
switched programmatically between write-back and write-through modes.
Both the instruction cache and data cache support dynamic-cache-way-disable. This feature allows for the independent
disabling and re-enabling of cache ways in both caches. It also facilitates power saving, as you can clean cache ways before
disabling them and initialize cache ways when enabling them. When a cache way is disabled, the cache memory block from
service is removed, and therefore the total cache capacity is reduced by “1/(number of ways in service)”.
[Link] Interrupt
1. After the WAITI instruction is completed, the DSP sets the interrupt level in the [Link] register to the value
encoded by the instruction.
2. The processor then waits for all processor memory interfaces to become idle and asserts the DSP_PWaitMode signal.
3. During this time, all processor operations are suspended until a non-masked interrupt occurs.
Note:
Please refer to Xtensa LX7 Microprocessor Data Book 22.5.
3.3.9 Reference
3.4.1 Overview
The MediaTek AI Processor Unit System (APUSYS) significantly enhances multimedia performance by exhibiting remarkable
computing capabilities. The key components of the APUSYS are:
Single-core programmable Tensilica Vision Processor 6 (VP6), for both the traditional Computer Vision (CV) algorithms
and Neural Network (NN) algorithms.
Single-core MediaTek Deep Learning Accelerators (MDLA), for the NN algorithms.
The hardware design is specifically optimized for job allocation between the NN (MDLA) and CV (VP6) engines, resulting in
efficient performance. The External Direct Memory Access (EDMA) engine supports data movement and format
conversion.
For external interface parts, there are four AXI buses to access the external DRAM. The APUSYS exchanges data with other
subsystems through the external DRAM.
3.4.2 Features
The VP6 supports both the AI and CV.
Per core configuration
L1 Instruction memory per core: 64 KB + 128 KB cache
L1 data memory per core: 128 KB + 128 KB
vFPU to support high-precision requirement applications
Top performance:
Fix 8: 0.43 TOPS
Fix 16: 0.11 TOPS
FP16: 0.05 TOPS
FP32: 0.03 TOPS
APUSYS
VP6 MDLA
APU NoC
IOMMU eDMA
EMI
DRAM
[Link] VP6
[Link].1 Overview
The Tensilica Vision-P6 DSP (VP6) is a programmable AI processor unit with high-performance and high-flexibility for vision
applications. There is one VP6 in APUSYS.
Each VP6 has a 5-slot Very Long Instruction Word (VLIW) architecture. To achieve high-performance computing, it utilizes
the multiply-accumulate (MAC) unit to compute up to 256 8 bits x 8 bits MACs in one cycle. To achieve high-throughput
bandwidth for computing, it uses up to “2-slot 64-byte loads” or “1-slot 64-byte load and 1-slot 64-byte store” to access
128-byte data bandwidth in one cycle.
Each VP6 is a vector Single Instruction Multiple Data (SIMD) DSP. For high-flexibility programming, it supports 64-way 8-bit
operations, 32-way 16-bit operations, and 16-way 32-bit operations in fixed-point format. It also supports 16-way single-
precision operations and 32-way half-precision operations in floating-point format.
Each VP6 supports special features. The Scatter/Gather operations enhance random accessing to local Data RAM, and the
histogram operations accelerate binning function.
[Link].2 Features
DMEM0 DMEM1
Bank0 Bank1 Bank0 Bank1
128b
core iDMA
I$
[Link] MDLA
[Link].1 Overview
The MediaTek Deep Learning Accelerator (MDLA) comprises three primary components and handles the following tasks:
Command engine (CMDE): Decodes commands and maps them to the corresponding registers. It receives input
commands and converts them into a format that is interpretable by other components of the MDLA.
Convolutional engines and non-convolutional engines: Operate on the input to efficiently generate the desired tensor
data.
[Link].2 Features
Convolutional engine
Convolutional 2D
Depth-wise convolutional
Fully connected
Transpose convolutional
Dilated convolutional
Element-wise engine
Element-wise functions:
BN, Mul, Add, Sub, Max, Min, Abs, Neg, Sqr, IN_sub
Activation functions:
ReLu, ReLu1, ReLu6, PreLu, Sigmoid, Tanh, Elu, GeLu, Exp, Rcp, Sqrt, Mish, Rsqrt
Pool engine
Pooling functions:
Global pooling, Local pooling
Resize function
Resize bilinear, resize nearest (nearest-neighbor interpolation), resize nearest floor
Transpose engine
C-W transpose
Depth2Space
Space2Depth
Store engine: Reshape
MDLA
Conv. Engine
Element-wise Engine
CMDE
Pool Engine
Transpose Engine
Store Engine
[Link] EDMA
[Link].1 Overview
The External Direct Memory Access (EDMA) serves the exchange and conversion of data formats between the
APUSYS and other subsystems or engines. This allows the computing engines, such as the MDLA and VP6, to
avoid the negative effects of inconsistent data formats from other subsystems. Consequently, the exchanged data
format within the APUSYS is more uniform and efficient.
[Link].2 Features
Normal functions:
Data copy
Fill constants
Numeric conversion
F16 to F32
F32 to F16
Format conversion
RGGB to Bayer
Bayer to RGGB
APP
Intrusion detection, face recognition, ...
Public NN Framework
TensorFlow, PyTorch, ANN, ...
APUSYS
MDLA VP6
EDMA
To enable effective uses of the APU, public frameworks provide a reliable foundation, on which software can be
built. These frameworks offer a structured approach to application development and are designed to simplify the
process. Several open-source NN frameworks, including TensorFlow, PyTorch, and ANN, are used to construct
Software Development Kits (SDK), which provide APIs and libraries that allow developers to access and control
both the MDLA and VPU hardware.
3.5.1 Introduction
System Companion Processor (SCP) is a microprocessor subsystem with a two-core MDSP RV55 processor and peripherals.
The SCP subsystem is designed to handle specific tasks for SoC, sensor control, and the future extension tasks.
3.5.2 Features
SCP includes the following features:
It stores the data received from serial communication interface (e.g. I2C, I3C, UART, SPI, and GPIO) and loads the
data transmitted to the serial communication interface. Therefore, APMCU or RV55 can require the data by
accessing this memory space.
Interrupt Controller (INTC and EINT)
The INTC module is used to pre-integrate all interrupt sources into RV55 VIC, providing mask/unmask control and
polarity configuration for each interrupt signal. It can also group similar interrupts together.
The EINT module is used for the de-bounce (anti-glitch) and edge detection functions for stabilizing the external
IO interrupt source. It is located ahead of INTC.
Serial Communication interfaces (e.g. I2C, I3C, SPI-M, UART, GPIO)
Several kinds of serial communication interfaces and general purpose I/O are provided to connect with external
devices or to print some information logs.
SCP mailbox (SCP < - > APMCU)
Virtual addresses are allocated to L2TCM physical address function in the SCP mailbox. Therefore, the APMCU can
write down the message to inform each other that the programmable task has been completed or has exchanged
data.
While the message is present in L2TCM, write the command into the mailbox command register. This mechanism
triggers an interrupt to inform APMCU or RV55 that there are messages present in the corresponding L2TCM
(physical address).
Clock Controller
The controller includes clock source MUX, clock divider, and clock gate. According to the DVFS table and current
application scenario, it can be programmable to generate the SCP internal clocks.
Timer/Watchdog Timer (WDT)
Timer is a counter with programmable time intervals. You can set the counter initial value and enable the timer.
When the timer counts down to zero, a timeout interrupt is generated to inform RV55.
A watchdog timer is an electronic timer that is used to detect and recover from RV55 malfunctions. During the
normal operation, the RV55 regularly resets the watchdog timer to prevent a timeout. If, due to a hardware fault
or a program error, the computer fails to reset the watchdog, the timer elapses and generates a timeout interrupt
to inform APMCU that RV55 stops working.
AXI Interconnect
128
The clock source of the SCP subsystem is provided by HF_FSCP_CK, CLK_32K, CLK_26M, or CLK_ULPOSC (the four clocks are
configured by the CLK_SW_SEL control register CR setting. Bus, RV55, and IP bus interface clock are controlled by the
divider selection (MUX) control register and clock gating (CG) control register The SCP clock structure is as Figure 3-9
shows.
Note:
When switching clock sources, make sure that the destination clock source exists.
F_ULPOSC_CORE_CK
(clk_high_core)
UART_MAIN_CLK
/1
0
1
F_ULPOSC_CK
(clk_high)
0
0x10721040 [0]
HF_FSCP_CLK /8
00 BCLK
CLK_32K 01 CG TMR BCLK
F_ULPOSC_CK /8 10
0x10721048 [1:0]
HF_FSCP_CLK /4
00 I3C BCLK
CLK_32K
01 CG I3C0 BCLK
F_ULPOSC_CK /4 10 CG I2C0 BCLK
11
F_ULPOSC_CK /2
0x10721050 [1:0]
CLK_26M
00
CLK_32K 01 UART BCLK
CG UART BCLK
UART_MAIN_CLK 10
F_ULPOSC_CK /1
0
0x10721044 [1:0]
CLK_26M
00
CLK_32K 01 UART1 BCLK
CG UART1 BCLK
UART_MAIN_CLK 10
F_ULPOSC_CK /1
0
0x10721044 [17:16]
The SCP clock control is also responsible for SCP sleep control. When RV55 enters the idle state, which means it is waiting
for interrupts, the clock controller automatically changes the SCP system clock to the slow clock of 32 kHz or 26 MHz. The
SCP system resumes operations (the clock returns to the fast clock) after the IRQ (Interrupt Request) triggers the INTC,
which is introduced in Section 3.5.8.
In order to comply with the low speed IO protocol, the peripherals need to operate at the special clock period, I2C bclk, I3C
bclk, SPI bclk, or UART bclk. The clock divider selection control register and the clock gating (CG) control register of low
speed peripherals and IO are shown in Figure 3-9.
RV32 Int/Mul/Atomic/Floating
Privilege mode
Standard control and status registers
Standard interrupt and exception
Little endian
The external interface for MD32RV processor contains:
Instruction AXI bus and Data AXI bus (AMBA 3 AXI protocol)
The APB interface can be used to debug the software through an on-chip bus
Supports conventional JTAG ICE for run control and debug, and depends on configuration
16 interrupt sources for external devices to trigger interrupt requests (need to collocate with INTC group function)
Interface:
System Clock and Reset: CLK/RST
Interrupt: External, Fast, SysTimer Interrupts
Debug interface: JTAG, Debug, APB, Cross-Trigger
Performance and Debug Monitor: Output PMU, Core status for monitor, CG/Halt status
Pre-defined Region: Low power access TCM/CACHE
AXI
SRAM (Static Random-Access Memory): ICACHE/DCACHE/TBUF
Micro arc:
6-stage pipeline, IF/PD/ID/E1/E2/WB
3 execution pipelines (2 Integer engines and 1 FPU engine)
Dynamic branch predication
Dual MACs
Single load/store
Non-blocking hardware divider
Halt for interrupt instruction
For SCP boot-up, the image must be loaded into L2TCM by other application processors (APMCU). A basic boot sequence
of SCP MCUSYS from the APMCU point of view is as follows:
Among which:
3.5.6 JTAG
SCP RV55 supports two kinds of interfaces for CM4 debugging. One is the dedicated JTAG from Pinmux, and the other is
from APMCU debug top DAP interface.
RV55
IRQ
VIC
Group
Interrupt signals from inside IRQ
of SCP subsystem
(UART, SPI, I2C, I3C, EINT, Enable Polarity Sync
DMA, etc.) (Mask) SCP clock control
SCP clock
Sleep IRQ resumes
3.5.9 Timer
Timer is a countdown counter with programmable time intervals. You can set the counter initial value. When the timer
counts to zero, it triggers a timeout interrupt to inform RV55. The block diagram is shown in Figure 3-12.
Clk_32K
Clk_26M
Clk mux
Timer_EN
IRQ_clr
bclk
Sel
Configuration Register
APB Channel
You can select different clock sources (32 kHz, 26 MHz mclk and bclk) to determine the clock period. You can also set the
counter initial value to create a time interval. When the timer setup is complete, CM4 can enable the timer to start the
counter. The waveform is as Figure 3-13 shows.
Timer enable
Run Run
Count Finish
IRQ_clr
3 cycles
While the counter counts to the stop value, the timer triggers an interrupt signal to inform CM4. CM4 needs to give an
interrupt clear command to restart the timer.
3.5.10 WDT
A watchdog timer is an electronic timer that is used to detect and recover from RV55 malfunctions. During normal
operations, the RV55 regularly resets the watchdog timer to prevent a timeout. If, due to a hardware fault or program
error, the RV55 fails to reset the watchdog, the timer elapses and generates a timeout interrupt to inform APMCU that
RV55 should cease operations. Then, APMCU may trigger a software reset to place RV55 in a safe state and restore normal
system operations. The block diagram is as shown in Figure 3-14.
Count
down Zero? WDT
Clk_32K
Counter Event IRQ
WDT_kick_rst
WDT reset
Timer_EN
value
Configuration Register
APB Channel
The purpose of enabling APMCU and setting up SCP WDT is that the APMCU needs to detect the malfunction of RV55. In
order to avoid the WDT from triggering an interrupt, RV55 needs to reset (WDT_kick_rst) WDT counter periodically.
3.5.11 Semaphore
In SCP, a register-based semaphore is designed for shared resource management between two masters (APMCU and
RV55). In real applications, the two masters (APMCU and RV55) may need to use a shared resource (e.g. I2C port in SCP),
and you can use this register-based semaphore for privilege management over the shared resources. A master can have
access to the shared resource after it takes the semaphore successfully. A master should release the taken semaphore after
it has completed the control of the shared resource. As shown in Figure 3-15, there are a total of 16-bit assigned fields for
source permission check. For example, suppose that bit 0 is defined as UART0 source permission. The RV55 can write a flag
(1’b1) to R_SEMA_H[0] if R_SEMA_M[0] is 1’b0. Otherwise, the semaphore hardware does not allow RV55 to set
R_SEMA_H[0] as 1’b1. This purpose of this process is to prevent overlapping in resource allocation.
SEMAPHORE
RV55 R_SEMA_H[0] R_SEMA_M[0] R_SEMA_H[8] R_SEMA_M[8] APMCU
R_SEMA_H[1] R_SEMA_M[1] R_SEMA_H[9] R_SEMA_M[9]
3.5.12 GPIO
Please refer to Section 3.12.9 General-purpose Input/Output (GPIO).
3.5.13 UART
Please refer to Section 3.12.2 Universal Asynchronous Receiver/Transmitter (UART).
The system address map from the SCP view can be configured by some register settings.
3.6 Memory
[Link] Overview
The Dynamic Random-Access Memory Controller (DRAMC) supports the DRAM bus configuration of 4 channels of
LPDDR4/4X 16-bit at 3,733 MHz (3,733 Mbps/per bit channel). When operating in the four-channel mode, this
configuration enables a maximum DRAM bandwidth of up to 29.16 GB/s.
[Link] Features
The External Memory Interface (EMI) controller schedules requests from the masters and issues commands to the DRAM
controller. It conducts flow control for the DRAM controller and masters to avoid DRAM stall or data overflow/underflow,
minimizing the latency of the processor path to enhance the performance and increase DRAM efficiency. Furthermore, it
informs clock control to gate the clock when there are no transactions to be processed.
The LPDDR4X DRAM supports a maximum shuffle capacity of up to 7 frequencies, enabling it to dynamically operate at the
suitable frequency and voltage for the user’s scenario, bandwidth requirement, and low power control to achieve a
balance between performance and power. Table 3-15 displays the Dynamic Frequency Scaling (DFS) with 7 operating
frequencies in Mbps. The additional capability is programmable to fine-tune performance and production requirements.
The DRAMC transmits requests from the EMI to the DRAM protocol. Configurable registers that can be programmed by the
CPU allow the DRAMC to operate in different modes.
The requests from the EMI scheduler are pushed to the command pool to wait for execution in order.
The bus scheduler inspects the pre-charge/active pool and command FIFO, and decides which SDRAM bus command,
for example, PRECHARGE, ACTIVE, READ or WRITE, is issued to the SDRAM bus in order to maximize the bus utilization
rate and reduce the response latency.
The timing controller is responsible for the integrity of the SDRAM bus timing, such as pre-charge to active delay (tRP),
active to command delay (tRCD), and bus turn-around time. The bus scheduler then refers to the information and
chooses the next SDRAM bus command.
The DDR PHY unit generates SDRAM bus commands, transmitting data and DQS to the SDRAM, and receiving data and
DQS from the SDRAM.
The response generator produces the response signals and data to the EMI scheduler.
As Figure 3-16 shows, besides the DRAMC that consists of a lower power controller, there are also the digital physical part
(DPHY) and analog physical part (APHY).
The low power controller responds to DRAMC low power control, such as power domain shutdown, startup, and
Dynamic Voltage Frequency Scaling (DVFS).
The DPHY is the middle level design covering the pin-mux and calibration operations, as well as the interface protocol
between the DRAMC and APHY.
The APHY is an analog high-speed DDRPHY responsible for the high-speed I/O design for the DDR Interface operation,
with an integrated local PLL (Phase-Locked Loop) to generate the target frequency for the local design usage.
[Link].1 Clock
The clock source of the DRAM system (DRAMSYS) APHY is from its PLL, while the other one is from the SoC PLL, as Figure
3-17 shows. This clock structure supports the DRAMSYS in different modes, such as active, idle and DVFS, as well as
dynamic clock management for the low power design.
DRAMC
DRAMC DPHY APHY
Command
Buffer
IO
Pinmux
Arbiter Interface
Bridge
PLL
Runtime Calibration
HW/SW
Testing
Low Power
[Link].2 Reset
The asynchronous reset is sourced from the SoC, while the software reset on the DRAMSYS is sourced from the internal
MediaTek low power controller.
The LPDDR4-SDRAM uses an un-matched DQS-DQ path for lower power, so the DQS-strobe must arrive at the SDRAM ball
prior to the DQ signal by the amount of Tdqs2DQ. The DQS-strobe output is driven tWPRE before the first valid rising
strobe edge. The tWPRE pre-amble should be 2xtCK. The DQS strobe must be trained to arrive at the DQ pad center-
aligned with the DQ-data. The DQ-data must be held for tDIVW (data input valid window) and the DQS must be
periodically trained to stay centered in the tDIVW to compensate for timing changes due to temperature and voltage
variation. Burst data is captured by the SDRAM on successive edges of DQS until the 16-bit or 32-bit data burst is complete.
The DQS-strobe must remain active (toggling) for tWPST (WRITE post-amble) after the completion of the burst WRITE.
After a burst WRITE operation, tWR must be satisfied before a PRECHARGE command to the same bank can be issued.
A burst read command is initiated with CS, and CA[5:0] asserted to the proper state at the rising edge of CK, as defined by
the LPDDR4 Command Truth Table. The command address bus inputs determine the starting column address for the burst.
The two low-order address bits are not transmitted on the CA bus and are implied to be “0”, so that the starting burst
address is always a multiple of four, for example, 0x0, 0x4, 0x8, 0Xc. The Read Latency (RL) is defined from the last rising
edge of the clock that completes a read command, for example, the second rising edge of the CAS-2 command, to the
rising edge of the clock, from which the tDQSCK delay is measured. The first valid data is available RL * tCK + tDQSCK +
tDQSQ after the rising edge of Clock that completes a read command. The data strobe output is driven tRPRE before the
first valid rising strobe edge. The first data-bit of the burst is synchronized with the first valid (i.e., post-preamble) rising
edge of the data strobe. Each subsequent data out appears on each DQ pin, edge-aligned with the data strobe. At the end
of a burst, the DQS signals are driven for another half cycle post-amble, or for a 1.5-cycle post-amble if the programmable
post-amble bit is set in the mode register.
The following diagram and table illustrate the power domain and voltage terms and purpose of the DRAMC. For DRAM
relative voltage constraints, refer to the JEDEC standard specification.
The EMI LPDDR4X timing characteristics are compliant with JEDEC Standard—JESD209-4D.
Figure 3-21 shows the schematic connections for a 64-bit interface using 2 × 2 × 16-bit devices.
[Link] References
LPDDR4X specification: [Link]
[Link] Overview
The External Memory Interface (EMI) controller schedules requests from the masters and issues commands to DRAMC in
an efficient way. The block conducts flow control for DRAMC and masters to avoid DRAMC stalling or data overflow or
underflow. It also minimizes the latency of processor path to enhance the performance and tries to increase the DRAMC
efficiency. The block also informs clock control to gate the clock when it does not find any transaction right now.
[Link] Features
The EMI controller receives AXI master commands and issues them to the DRAMC. It supports all AXI transaction type
commands except for the fixed and cache commands. There are plenty of schedule options to schedule the command. The
main features are as follows:
128 16
DRAMC LPDDR4x16
APMCU /
System 128
/
Multimedia / 128 16
System 128 DRAMC LPDDR4x16
/
GPU /
128 EMI
APU /
Audio 128
/
System
128 16
DRAMC LPDDR4x16
The EMI is a bridge between several systems and the DRAM controller. For Cortex Application Processing Microcontroller
Unit (APMCU) system, two 128-bit AXI ports are provided for the connection. For multimedia masters such as display,
VENC, VDEC, and camera, two 128-bit AXI ports are provided for the connection. For the GPU and APU, two 128-bit AXI
ports are provided for the connection.
Besides, there is a 128-bit AXI port for connecting to the audio system and a 128-bit AXI port for connecting to the
peripherals.
To ensure that each master port can own the equal bandwidth QoS, EMI provides the following QoS Policy:
Priority
Each request from each master can be grouped into three levels, High, Normal, and Low, and EMI serves these
requests in the order of priority. Requests with ultra-signal and starvation are grouped into the High group. The
requests whose allocated bandwidth is not exceeded are assigned to the Normal group. The requests whose allocated
bandwidth is exceeded are categorized into the Low group.
Starvation Prevention
To avoid request starvation, starvation counters are set for each master port. When the starvation counter reaches
zero, the request is promoted to the High group for prioritized execution. Also, the read/write channel has individual
starvation counter settings for either read or write latency-sensitive commands.
Bandwidth Limiter
EMI provides the bandwidth limiter for each master port to ensure that each master has the minimum quota for
bandwidth sharing. The amount of bandwidth allocation is configurable.
To improve the SDRAM efficiency and minimize the latency, EMI provides several configuration options:
3.7 Storage
[Link] Overview
The MMC (MultiMediaCard) and SD (Secure Digital) Controller (MSDC) offers a high throughput data transfers
while power consumption and data security between device local hosts and memory cards are taken into
consideration.
[Link] Features
The device has integrated 3 MSDC modules, MSDC0, MSDC1, and MSDC2. MSDC0 is used as the MMC™/eMMC
interface, MSDC1 is used as the SD interface, and MSDC2 is used as the SD/SDIO interface.
Each MSDC module supports the following key features:
MSDC_TOP
msdc_src_ck
As Figure 3-23 illustrates, the MSDC consists of three primary components: MSDC_GDMA, MSDC_CORE and MSDC_REG.
MSDC_GDMA: The DMA engine, facilitating data transfer between the MSDC and memory.
MSDC_CORE: The main controller of the MSDC, managing data transfer between the host and the device.
MSDC_REG: The register to configure the MSDC.
When MSDC_CFG.PIO_MODE is set, the MSDC operates in the PIO (Programmed Input/Output) mode and receives data
from the device. The software can read data from the PIO_RXDATA register when MSDC_FIFOCS.RXFIFOCNT is not 0 (data
buffer empty).
Upon transfer completion, an interrupt is generated. The software is responsible for clearing the interrupt bit after
receiving it.
When MSDC_CFG.PIO_MODE is set, the MSDC operates in the PIO mode and sends data to the device. The software can
write data from the PIO_TXDATA register when MSDC_FIFOCS.TXFIFOCNT is not 8’h80 (data buffer full).
Upon transfer completion, an interrupt is generated. The software is responsible of clearing the interrupt bit after receiving
it.
When MSDC_CFG.PIO_MODE is not set, the MSDC operates in the DMA mode. It receives data from the device and writes
it to the target DRAM address through the MSDC_GDMA control. The software must configure the DMA_SA register with
the start address in DRAM.
Upon transfer completion, an interrupt is generated. The software is responsible of clearing the interrupt bit after receiving
it.
SD_XFER_COMPLETE is set when the DMA controller has transferred all the data and the CRC (Cyclic Redundancy
Check) has been done.
(DMA_CTRL.LAST_BUF = 0) DMA_DONE is set when the DMA controller has transferred all the data set in the DMA
controller.
(DMA_CTRL.LAST_BUF = 1) DMA_DONE is set at the same time as SD_XFER_COMPLETE.
When MSDC_CFG.PIO_MODE is not set, the MSDC operates in the DMA mode. It receives data from DRAM through
MSDC_GDMA control and writes it to the device. The software must configure the DMA_SA register with the start address
in DRAM.
Upon transfer completion, an interrupt is generated. The software is responsible of clearing the interrupt bit after receiving
it.
SD_XFER_COMPLETE is set when the DMA controller has transferred all the data and the CRC has been done.
(DMA_CTRL.LAST_BUF = 0) DMA_DONE is set when the DMA controller has transferred all the data set in the DMA
controller.
(DMA_CTRL.LAST_BUF = 1) DMA_DONE is set at the same time as SD_XFER_COMPLETE.
Figure 3-28 illustrates the definition of the voltage switch command (CMD11), which can be executed (even when the card
is locked) in the ready state and does not alter the state.
A response of type R1 signifies that the card starts the voltage switch sequence. If the host detects no response, a power
cycle should be executed. There are four cases, in which the card indicates no response to CMD11:
To initiate the MSDC function, the following settings should be programmed in the prescribed manner.
This section introduces the suggested MSDC command sequence for different scenarios.
The software should always check SDC_STA.CMDBUSY before issuing a new command, and should also check
SDC_STA.SDCBUSY for R1b response type and data transfer commands.
The host controller incorporates a tuning algorithm to ensure stable data sampling, command response and CRC status
from the device. Both command and data have a pad delay (pad_delay). The tuning flow is illustrated as follows.
start
pad_delay=0
Store result
pad_delay++
no
pad_delay
==64?
yes
Analysis result
end
The communication protocol between the controller and device is implemented through an advanced 11-signal or
6-signal bus. See Table 3-22 for more details.
(3.7)(1)
No. Name Type eMMC SD/SDHC/SDXC SDIO Description
8 MSDC0_DAT4 DIO DAT4 Serial data line bit 4
9 MSDC0_DAT5 DIO DAT5 Serial data line bit 5
10 MSDC0_DAT6 DIO DAT6 Serial data line bit 6
11 MSDC0_DAT7 DIO DAT7 Serial data line bit 7
12 MSDC0/1/2_CMD DIO CMD CMD CMD Command/bus state
(2)
13 SD_WP I WP Write protection
14 SD_INS(2) I INS Card insertion
(1) All embedded pull-up and pull-down resistors can be disabled by programming the corresponding control registers if
optimal pull-up or pull-down resistors are required on the system board.
(2) SD_WP and SD_INS signals are not provided by the MSDC controller. These functions can be accomplished using GPIO
pins, if needed.
Table 3-24 and Figure 3-31 present the MSDC timing characteristics in High Speed mode.
Table 3-25 and Figure 3-32 present the MSDC timing characteristics in SDR12, SDR25, SDR50, and SDR104 modes.
Table 3-26 and Figure 3-33 present the MSDC timing characteristics in DDR50 mode.
Table 3-27 and Figure 3-34 present the MSDC timing characteristics in HS200 mode.
(1) Unit Interval (UI) is one bit nominal time. For example, UI = 5 ns at 200 MHz.
(2) Total allowable shift of output valid window (th_DAT/CMD) from last system tuning procedure ∆td_DAT/CMD is 2600 ps for ∆T from -25 °C to
125 °C during operation.
(3) The minimum value is equal to 2.88 ns at 208 MHz.
(4) The absolute maximum value of tRISE_CLK and tFALL_CLK is 10 ns regardless of the clock frequency.
Table 3-28, Figure 3-35 and Figure 3-36 present the MSDC timing characteristics in HS400 mode.
SR Slew rate (with respect to VOH/VOL and HS400 reference load) 1.125 V/ns
[Link] Overview
A Serial NOR Flash Controller (SNFC) provides convenient access to high-speed serial NOR flash devices. The SNFC
supports:
The SPI clock speed can reach up to 52 MHz for the single-bit SPI, dual-bit SPI and quad-bit SPI. The combination of the
SNFC and the serial NOR flash is an important component of system bootup and can also replace DRAM, executing within
the NOR flash chip (XIP, eXecute in Place). SPI can also complete the access of serial NOR flash. The difference between SPI
and SNFC is that the SNFC is specifically tailored for NOR flash memory, making it more efficient.
[Link] Features
SPI bus compatible serial interface for common serial NOR flash devices.
Maps out a 512-byte page program buffer and supports multi-page programs.
Supports the SPI mode (single-bit) to transfer page program and 1-byte program.
Supports the 4-byte address mode; 3-byte address mode compatible.
Supports single-bit read, dual output and dual I/O read, as well as quad output and quad I/O read mode.
Reads serial NOR flash data through the direct read, PIO (Programmed Input/Output) read, or DMA read mode.
Serial
SNFC_Prefetch NOR
Flash
APB Interface
SNFC_Regs
SNFC_Arb
SNFC_DMA Direct_Read_Map
AXI Master
Figure 3-37 illustrates the block diagram of the SNFC, which includes the following.
The SNFC integrates commonly used serial NOR flash operations commands, enabling convenient access to the serial NOR
flash. Even without any configuration, it can directly read data from the serial NOR flash. In addition to the conventional
reading, the SNFC also supports writing to the serial NOR flash, and configuring serial NOR flash operations.
The SNFC handles all commands, addresses, data sequences and serial interface protocols. It allows reading of serial NOR
flash in three ways as stated in Table 3-30.
The SNFC supports the following two ways to write to the serial NOR flash.
This operation reads the JEDEC ID of the serial NOR flash, including the 1-byte manufacturer ID and 2-byte device ID. The
operation sequence is illustrated in Figure 3-38, and the programming flow is in Table 3-32.
CS#
0 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 28 29 30 31
SCLK
Command
SI 9Fh
MSB MSB
The SNFC facilitates three erase operations, namely Sector Erase, Block Erase and Chip Erase, for serial NOR flash. These
erase operations are executed to clear the data of designated part to “1”. However, before you send the erase command, it
is important to execute a WREN (WRITE enable) instruction that sets the WEL (Write Enable Latch).
The Sector Erase command is used for a 4KB sector, while the Block Erase command is used for a 64KB block, and the Chip
Erase command for the entire serial NOR flash. The erase-command formats are as follows.
CS#
0 1 2 3 4 5 6 7 8 9 29 30 31
SCLK
Command 24-Bit Addres s
MSB LSB
Table 3-34 Sector Erase and Block Erase Operation Programming Flow
Step Address Register Name Local Address R/W Value Description
Write the operation
8’h20 or command of
1 SF_Base+0x34 REG_SF_PRGDATA5 REG_SF_PRGDATA5[7:0] W
8’hd8 Sector Erase (0x20) or
Block Erase (0xd8).
Write erase address
bit31:bit24. This register
2 SF_Base+0x30 REG_SF_PRGDATA4 REG_SF_PRGDATA4[7:0] W addr[31:24] only needs to be set
when it is in 4-byte
address mode.
Write erase address
3 SF_Base+0x2c REG_SF_PRGDATA3 REG_SF_PRGDATA3[7:0] W addr[23:16]
bit23:bit16.
Write erase address
4 SF_Base+0x28 REG_SF_PRGDATA2 REG_SF_PRGDATA2[7:0] W addr[15:8]
bit15:bit8.
Write erase address
5 SF_Base+0x24 REG_SF_PRGDATA1 REG_SF_PRGDATA1[7:0] W addr[7:0]
bit7:bit0.
Write the process cycle
count:
6’h20 or Set 0x20 for 3-byte
6 SF_Base+0x04 REG_SF_CNT REG_SF_CNT[5:0] W
6’h28 address mode.
Set 0x28 for 4-byte
address mode.
Trigger the controller to
send the erase operation
7 SF_Base+0x00 REG_SF_CMD REG_SF_CMD[2] W 1’b1
sequence to the serial
NOR flash.
When this bit is 1'b0, the
8 SF_Base+0x00 REG_SF_CMD REG_SF_CMD[2] R 1’b0 controller processing is
done.
(Polling serial NOR flash
status)
9 SF_Base+0x00 REG_SF_CMD REG_SF_CMD[1] W 1’b1 Send read flash status
command to serial NOR
flash.
CS#
0 1 2 3 4 5 6 7
SCLK
Command
SI 60h/C7h
The programming command is utilized to program the memory to “0”. Prior to initiating the programming process, a WREN
command must be executed to set the WEL bit. The SNFC supports two kinds of programming operations: Page Program
and PIO Program.
CS#
0 1 2 3 4 5 6 7 8 9 10 28 29 30 31 32 33 34 35 36 37 38 39
SCLK
Command 24-Bit Addres s Data Byte 1
MSB MSB
CS#
2072
2073
2074
2075
2076
2077
2078
2079
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
SCLK
Data Byte 2 Data Byte 3 Data Byte 256
SI 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Furthermore, there are three cases of the two programming operations mentioned above.
The SNFC provides three modes for reading data from the flash device:
The standard SPI link format is combined with command, address and data bytes. The read operation format and sequence
of the single-bit SPI mode is depicted in Figure 3-42. Additionally, the controller supports dual output, dual I/O, quad
output, and quad I/O read modes. For the corresponding register configuration, refer to REG_SF_DUAL (SF_Base+0xcc) in
Section [Link].5.
For a 4-byte address, set LARGE_ADDR_EN (SF_Base+0xcc [4]) to enable the address cycle to increase from 24 bits to 32
bits.
CS#
0 1 2 3 4 5 6 7 8 9 10 28 29 30 31 32 33 34 35 36 37 38 39
SCLK
Command 24-Bit Addres s
MSB
The hardware engine supports copying data from the serial NOR flash to the SRAM via SNFC_DMA. Prior to triggering
SNFC_DMA, the source address, destination start address and end address must be appropriately configured. Once
initiated, the hardware engine automatically copies data from the serial NOR flash device to the designated destination
address.
The CPU can directly read serial NOR flash data through the AXI bus. For instance, the CPU can directly issue the data
address and length, and the SNFC returns the corresponding data. The application supports the following operations:
The system executes the memory copy function via the CPU data instruction.
The system DMA (e.g., Crypto DMA) requests serial NOR flash data.
The SNFC supports the quad-bit SPI read mode to enhance read performance, which includes the quad output mode and
quad I/O read mode. The format is similar to the single-bit SPI link format, with the addition of a dummy cycle.
This format comprises of:
Command
Address (quad output single-bit; quad I/O quad-bit)
Dummy cycle (quad output for at least eight dummy cycles; quad I/O for at least six dummy cycles)
Data
Note that the definition of the QE (Quad Enable) bit mentioned in this section may differ based on the flash vendor. Refer
to Serial NOR Flash Datasheet for more information, such as the MX25L25635F series and the W25Q256JW series.
The differences in the address and dummy cycle format between the quad output and quad I/O are illustrated in Figure 3-43
and Figure 3-44, respectively.
CS#
0 1 2 3 4 5 6 7 8 9 10 28 29 30 31 32 38 39 40 41 42 43
SCLK
Command 24-Bit Addres s Configurable Data out 1 Data out 2 Data out 3
dummy cycles
SIO0 68h A23 A22 A21 A3 A2 A1 A0 4 0 4 0 4
MSB
High-Z
SIO1 5 1 5 1 5
High-Z
SIO2 6 2 6 2 6
High-Z
SIO3 7 3 7 3 7
Figure 3-43 Quad Output Read Mode Sequence (Address Sent in the Single-bit Mode)
CS#
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
SCLK
Command 24-Bit Addres s Configurable Data out 1 Data out 2 Data out 3
dummy cycles
SIO0 EA/EBh 20 16 12 8 4 0 4 0 4 0 4
MSB
High-Z
SIO1 21 17 13 9 5 1 5 1 5 1 5
High-Z
SIO2 22 18 14 10 6 2 6 2 6 2 6
High-Z
SIO3 23 19 15 11 7 3 7 3 7 3 7
Figure 3-44 Quad I/O Read Mode Sequence (Address Sent in the 4-bit Mode)
To enter the quad-bit read mode, refer to the programming flow as below:
To exit the quad-bit read mode, refer to the programming flow as below:
1. Set REG_SF_DUAL (SF_Base+0xcc)[3] and [2] = 1b’0 to disable the SNFC quad-bit mode.
2. Disable the QE bit of the serial NOR flash.
For most serial NOR flash devices, the default address is a 3-byte address. The following sections introduce how to enter
and exit space larger than 16MB.
To avoid synchronization problems between the SNFC and serial NOR flash device following an entire chip reset, refer to
the planned recovery sequence as follows:
1. Release power down (OP code 0xab, SPI) to wake up the serial NOR flash device and avoid entering the power down
mode.
2. Perform a software reset of the device (OP code 0x66/0x99, SPI) to reset the serial NOR flash device.
3. Initialize the serial NOR flash device by reading the JEDEC ID and detecting the serial NOR flash type.
4. Disable the serial NOR flash protection and send WRSR (OP code 0x01) to clear the protection bit.
5. Determine whether to enter the quad-byte address mode or not (OP Code 0xb7), depending on the serial NOR flash
size (>16MB).
6. Set the serial NOR flash operation mode (SPI/SPI-D/SPI-Q) and enable or disable the QE bit using the WRSR (OP code
0x01) operation.
7. Set the SNFC register (including the control bit and OP code setting) for SPI/SPI-D/SPI-Q modes.
Table 3-46 and Figure 3-45 present the SNOR timing characteristics.
[Link].6 Reference
Serial NOR flash datasheets for series such as the MX25L25635F and the W25Q256JW.
3.8 Display
[Link] Overview
The Display Controller, also referred to as VPPSYS, is the abbreviation of “Video Data Processing Pipe Subsystem.” It is used
to support camera video post processing, video decoder post processing, video preprocessing for video encoder or APU
and pixel data processing for Display. The data processing includes resize, sharpen, composition, HDR (High Dynamic
Range), warpage, color, gamma, etc. VPPSYS also contains multiple video IO interfaces, including HDMI_TX, DP_TX,
eDP_TX, DSI (Display Serial Interface), and Digital video out.
VPPSYS consists of three hardware parts, SVPP, DVPP, and WPE. S stands for time-share, D stands for display, while WPE is
for image warpage. The following sections show the features of each hardware part and the operation modes.
[Link] Features
WPE:
Backward grid-map based image warpage
Max map size: 640x640
Single data processing core that can process 300 Mpixels/sec
DVPP-0:
4-layer RGB image compositor
One display image resizer (up-scaling)
Preference color adjustment
Global contrast adjustment
Display CSC, Gamma, Dither, and Post_mask
MIPI DSC display data compression
Single display data processing pipe
Max image width for each display data processor pipe is 3840 pixels
Max pixel throughput of each display data processor pipe is 300 Mpixels/sec (Htotal*Vtotal*fps <= 300 Mpixels/s)
DVPP-1:
Two read DRAM agents (support AFBC) that support Dolby video HDR (Dolby HDR and HDR10+)
Two read DRAM agents (do not support AFBC) that support Dolby graphic SDR (Standard Dynamic Range) to HDR
Two display image resizers (up-scaling)
4-layer image compositor compliant with Dolby HDR requirements
The max supported video definition of DVPP-1 is 4K60 (3840x2160x60fps)
Figure 3-46 shows the application position of VPPSYS inside the SoC. Figure 3-47 shows the possible application connection
of SVPP-x and WPE. Figure 3-48 shows the possible application connection of DVPP-x and Display output interfaces. The
best pixel throughput of each display IO interface is also shown in the diagram. Note that only the orange blocks are
included in the scope of VPPSYS documentation.
DRAM
frame buffer s VENC
DRAM
AI
Mipi CSI Camera ISP frame buffer s
VPP s HDMI_TX
DVPP s
Digital video
DRAM
frame buffer s
DRAM
frame buffer s
Warp
Slice with 512 pixel
Usage : time shared for camera data manipulation DRAM
frame buffer s
VENC
SVPP-0 ( RSZ, SHP, Rotate)
DRAM
frame buffer s
DRAM DRAM AI or Else ...
frame buffer Camera ISP frame buffer s
Up to 4 layer blending
DRAM 2*DSI
{
frame buffer
Blender RDMA DVPP-0 ( Color, CSC, GCE, Gamma, dither )
DRAM
Video or Graphic frame buffer Single pipe: up to eDP
(Video have HDR decoded) DRAM 4K@30
frame buffer DSC
DRAM
frame buffer RSZ
Up to 4 layer blending DP
Fixed to 2 video + 2 Graphic
{
DVPP-1 HDMI_TX
Video (support Dolby, HDR10,
DRAM HDR10+, HLG videos )
(SDR or HDR) frame buffer Digital video
DRAM
frame buffer RSZ
{
DRAM
Graphic frame buffer
(SDR only) DRAM RSZ
frame buffer
Figure 3-48 Possible Application Connection of DVPP-x and Display Output Interfaces
SVPP: It is a multipurpose image data processor. The data input could be from DRAM and WPE. The data output target is
DRAM. Main features of SVPP are image-resizer, image-sharpener, HDR decode, composition, and image rotation.
DVPP: There are two kinds of DVPP in VPPSYS. DVPP-0 is for SDR display on integrated display panel (DSI, eDP) or external
display (DP, HDMI). DVPP-1 is for HDR (Dolby HDR, HDR10+) external display (DP, HDMI). There is one display data
processor inside DVPP-0. DVPP-0 supports conventional display data processor features like color, gamma, dither, while
DVPP-1 is dedicated to standard HDR (Dolby HDR, HDR10+) display. Color or gamma tuning has to be merged with HDR
data processing.
WPE: It is a free-form image warpage accelerator. The input is the source image and a warpage map. The map is an array of
grids in a rectangle arrangement. Each grid contains a backward vector pointing out the coordinate in the source image
that needs to be warped to the new position in the destination image. The output of WPE can be an SVPP or DRAM buffer.
There are three operation modes in VPPSYS, SW mode, Video mode, and DSI-CMD mode. Each data processor hardware
(SVPP-x, WPE, DVPP-0, DVPP-1) can be operated in either one of these three operation modes.
SW mode: As the name implies, the software initiates the hardware operation (one image frame), waits for the HW job
done signal (INTR) and then updates the hardware setting of the next job and kicks off again.
Video mode: In this operation mode, the hardware operation is tied to the video timing of Video IO interfaces, including
HDMI_TX, DSI (video mode), DP_TX, and eDP_TX. The video timing generator inside these video IO blocks will create Vsync
and VDE signals for hardware data processor pipe. By these signals, the hardware automatically and repeatedly knows
when to start a new image frame. To stop and reset the hardware, the software receives the timing signal, by INTR, to
know the period that allows change of hardware settings or information read back.
DSI-CMD mode: This mode is available when using a DSI command mode display panel. A TE (Tearing Effect) signal from
the display panel is received by the SoC, which then informs the software by the INTR signal. The software, depending on
the necessary system operation, updates the hardware setting with the new image frame, which is going to replace the
image data inside the frame buffer in display panel.
[Link] Overview
The DSI is based on MIPI Alliance Specification, supporting high-speed serial data transfer between host processor
and peripheral devices such as display modules. The device includes two DSI controllers, DSI0 and DSI1. DSI
should work with the MIPI_TX_Config module to obtain its engine clock from Analog PHY Macro. And it should
work with DMA engines in the previous stage of the display path to read out frame pixels from memory, performs
frames packing and lane distribution, and then sends the data to a dedicated MIPI D-PHY/C-PHY TX core for
serializing.
[Link] Features
Each DSI controller provides the following key features:
called MIPI_TX_Config here, is used to control MIPI TX related registers for lane swap function and analog PHY macro. Lane
swap function in MIPI_TX_Config is used to select the order of data and clock lanes. Analog PHY macro converts digital
signals to analog signals.
slice
MIPI TX configuration module
DSI Controller
(Display Serial
Analog PHY Macro
Interface Controller)
Lane_Swap
ANA_MIPI
TX_PAD
Async_fifo
The horizontal size of input data received by DSI is defined by DSI register DSI_WIDTH[14:0]. The unit of DSI_WIDTH[14:0]
is pixel. The vertical size of input data received by DSI is defined by DSI register DSI_HEIGHT[14:0]. The unit of
DSI_HEIGHT[14:0] is line. The payload length transferred by DSI is defined by DSI register PS_WC[14:0]. The unit of
PS_WC[14:0] is byte. The line number transferred by DSI is defined by DSI register VACT_NL[14:0]. The unit of
VACT_NL[14:0] is line.
The PS_WC[14:0] is calculated according to DSI_WIDTH[14:0] and PS_SEL[3:0]. The formula of PS_WC[14:0] are
DSI_WIDTH[14:0]*(24/8) for RGB888,
DSI_WIDTH[14:0]*(30/8) for RGB101010,
DSI_WIDTH]14:0]*(24/8) – n for compress (n=0,1,2, payload length sometimes may not be a multiple of three after DSC
compression)
DSI supports RGB888, RGB101010 and compress mode. The data format is defined by DSI register PS_SEL[3:0](3: RGB888,
4: RGB101010, 5: compress). The compress mode is used in DSC compress.
DSI supports video and command mode, which is defined by the DSI register MODE_CON[1:0].
2’b00: command mode
DSI also supports D-PHY or C-PHY transmission, which is defined by the DSI register CPHY_EN.
0: DPHY mode
1: CPHY mode
DSI supports one to four lanes for D-PHY transmission. DSI supports one to three trios for C-PHY transmission, which is
defined by DSI register LANE_NUM[3:0].
4’b0001: 1 lane or 1 trio
4’b0011: 2 lanes or 2 trios
4’b0111: 3 lanes or 3 trios
4’b1111: 4 lanes
Command mode refers to an operation in which transactions primarily take the form of sending commands and data to a
peripheral, such as a display module, which incorporates a display controller. In command mode, long and short packets
can be sent to the peripheral, and data can be read/written from/to frame buffer of the peripheral. Command mode
operation requires a bidirectional interface.
Video mode refers to an operation in which transfers from the host processor to the peripheral take the form of a real-time
pixel stream. Video information should only be transmitted using HS mode. In video mode, sync-event, sync-pulse and
burst modes are supported. These terms are used throughout the following sections:
Sync-Pulse – Enables the peripheral to accurately reconstruct original video timing, including sync pulse widths.
Sync-Event – Similar to the one above, but accurate reconstruction of sync pulse widths is not required.
Burst Mode – RGB pixel packets are time-compressed, leaving more time during a scan line for LP mode (saving power)
or for multiplexing other transmissions onto the DSI link.
Detailed timing and packet sequence are shown in Figure 3-51, Figure 3-52 and Figure 3-53.
Transmission packet components used in Figure 3-51, Figure 3-52, and Figure 3-53 are defined in Figure 3-50.
Figure 3-51 Video Mode Interface Timing: Non-burst Mode with Sync Pulses
Figure 3-52 Video Mode Interface Timing: Non-burst Mode with Sync Events
[Link].1 Initialization
Figure 3-54 illustrates the waveform of the initialization sequence to enable the DSI analog block and power up the DSI
analog block’s PLL. Follow the steps described in Table 3-47 to achieve the initialization sequence.
If Efuse option is realized, please read the Efuse results and write to DSI_*_RTCODE0~4 before RG_DSI_BG_CORE_EN is asserted.
Write to DSI_*_RTCODE0~4
5'b10000 5'bXXXXX 5'bXXXXX
RG_DSI_BG_CORE_EN >1us
RG_DSI_BG_LPF_EN
RG_DSI_PLL_SDM_PCW[31:0]
RG_DSI_PLL_SDM_PCW_CHG
Must be 1'b1 while enabling PLL
AD_DSI_PLL_SDM_PWR_ON >30ns
(controlled by RG) >1us
DA_DSI_PLL_SDM_PWR_ACK
AD_DSI_PLL_SDM_ISO_EN
(controlled by RG)
If DSI goes into suspend mode or power saving mode, you can power off the DSI analog block. Figure 3-55 illustrates the
waveform of the power-off sequence to disable the DSI analog block and power off the DSI analog block’s PLL. The power-
off programming steps are listed in Table 3-48. To avoid unexpected power consumption, make sure that all registers are in
the default settings.
Normal operation
LPTX_PRE_OE ends & DSI analog
(Hardware control power off ) block power off
RG_DSI_PLL_SDM_PCW_CHG
Must be 1'b1 while enabling PLL
AD_DSI_PLL_SDM_PWR_ON > 30ns
(controlled by RG)
DA_DSI_PLL_SDM_PWR_ACK
AD_DSI_PLL_SDM_ISO_EN
(controlled by RG)
> 30ns
RG_DSI_PLL_EN > 30ns
RG_DSI_BG_CORE_EN
RG_DSI_BG_LPF_EN
All of the timing parameters defined in the MIPI specification should be properly set in the DSI controller programmable
registers for correct timing control. The written value is based on the DSI internal clock cycle period, which is related to DSI
analog block PLL clock settings through MIPI TX Config engine. And the written value cannot be zero.
For example, the D-PHY timing parameter THS-PREPARE must be between 40 ns + 4 * UI and 85 ns + 6 * UI, where UI means
time interval, which is equal to the duration of any HS state on clock lane. If the clock lane is set to 500 MHz frequency, as
well as bit-rate 1 Gbps, the UI should be 1 ns. In other words, the value of THS-PREPARE must between 44 and 91 ns. The
internal DSI clock is 8x divided by data rate, as well as 125 MHz. To satisfy THS-PREPARE, the register value DA_HS_PREP should
be 6 to 11 (see Table 3-49).
Table 3-50 lists the D-PHY timing parameters that should be configured in the DSI registers. Note that for different bit-rate
requirements, the UI values vary. For more precise timing control, select DSI internal clock as fast as possible. However, the
faster DSI internal clock is set, the more power is wasted. A suitable clock is beneficial to the optimization of system power
consumption.
Table 3-50 D-PHY Global Operation Timing Parameter Defined by MIPI Specification
Parameter Description Min Max Unit
Timeout for receiver to detect absence of Clock transitions and
TCLK-MISS 60 ns
disable the Clock Lane HS-RX.
Time that the transmitter continues to send HS clock after the
last associated Data Lane has transitioned to LP Mode. Interval is 60 ns +
TCLK-POST ns
defined as the period from the end of THS-TRAIL to the beginning 52*UI
of TCLK-TRAIL.
Time that the HS clock shall be driven by the transmitter prior to
TCLK-PRE any associated Data Lane beginning the transition from LP to HS 8 UI
mode.
Time that the transmitter drives the Clock Lane LP-00 Line state
TCLK-PREPARE immediately before the HS-0 Line state starting the HS 38 95 ns
transmission.
Time interval during which the HS receiver should ignore any
TCLK-SETTLE Clock Lane HS transitions, starting from the beginning of TCLK- 95 300 ns
PREPARE.
Time for the Clock Lane receiver to enable the HS line Time for Dn
TCLK-TERM-EN termination, starting from the time point when Dn crosses to reach 38 ns
VIL,MAX. VTERM-EN
Time that the transmitter drives the HS-0 state after the last
TCLK-TRAIL 60 ns
payload clock bit of a HS transmission burst.
TCLK-PREPARE + TCLK- TCLK-PREPARE + time that the transmitter drives the HS-0 state prior
300 ns
ZERO to starting the Clock.
Time for the Data Lane receiver to enable the HS line Time for Dn
35 ns +
TD-TERM-EN termination, starting from the time point when Dn crosses to reach
4*UI
VIL,MAX. VTERM-EN
Transmitted time interval from the start of THS-TRAIL or TCLK-TRAIL, to 105 ns +
TEOT
the start of the LP-11 state following a HS burst. n*12*UI
THS-EXIT Time that the transmitter drives LP-11 following a HS burst. 100 ns
Time that the transmitter drives the Data Lane LP-00 Line state
85 ns +
THS-PREPARE immediately before the HS-0 Line state starting the HS 40 ns + 4*UI ns
6*UI
transmission
The registers of D-PHY timing parameters for data lanes and clock lane are illustrated in Figure 3-56 and Figure 3-57,
respectively. The registers for BTA (Bus Turnaround) timing are illustrated in Figure 3-58. The unit of them is the clock
period of the DSI internal clock.
Table 3-51 lists the C-PHY timing parameters that should be configured in the DSI registers. Note that for different symbol-
rate requirements, the UI values vary. For example, the UI should be 1 ns when the symbol rate is set to 1Gsps. The
internal DSI clock is 7x divided by the symbol rate, as well as 142.8571 MHz.
Table 3-51 C-PHY Global Operation Timing Parameter Defined by MIPI Specification
Parameter Description Min Max Unit
Time that the transmitter drivers the 3-wire LP-000 line state immediately before
T3-PREPARE 38 95 ns
the HS_+x line state starting the HS transmission.
The length of the first part of the preamble. T3-PREBEGIN should be adjustable at the
T3-PREBEGIN 7 448 UI
transmitter from 7 UI minimum to 448 UI maximum in increments of 7 UI.
The length of the programmable sequence section of the preamble. The length of
T3-PROGSEQ T3-PROGSEQ can be configured by CPHY_PROGSEQ_SKIP_EN (0: T3-PROGSEQ = 14 UI, 1: 0 or 14 UI
T3-PROGSEQ = 0 UI).
T3-PREEND The length of the end of the preamble. 7 UI
The registers of C-PHY timing parameters for data lanes and clock lane are illustrated in Figure 3-59. The registers for BTA
timing are illustrated in Figure 3-58. The unit of them is the clock period of the DSI internal clock.
DSI supports video mode traffic sequences, including sync pulse mode, sync event mode and burst mode. To facilitate the
translation of the parameters of packets, see the timing diagrams below for the corresponding register settings. The DSI
register of VSA_NL, VBP_NL, VACT_NL and VFP_NL are used to control the line numbers, and the unit is number of lines.
The ranges of HSA (HPW), HBP, and HFP are specified by DDIC, and the unit is pixel. They are controlled by the DSI register
of DSI_HSA_WC, DSI_HBP_WC and DSI_HFP_WC. The unit of DSI_*_WC is byte (8 bits).
A non-burst sync-pulse mode enables the peripheral to accurately reconstruct original video timing, including sync pulse
widths. A timing diagram for sync-pulse mode is shown in Figure 3-60, which also shows registers mappings to lines of
VSA/VBP/VACT/VFP periods.
VACT_NL
A non-burst sync-event mode is similar to the pulse-sync mode, but accurate reconstruction of sync pulse widths is not
required. Therefore, a single sync event is substituted. The timing diagram is shown in Figure 3-61.
VACT_NL
A burst mode allows RGB pixel packets to be time-compressed, leaving more time during a scan line for LP mode to save
power or for multiplexing other transmissions onto DSI link. The timing diagram is shown in Figure 3-62.
VACT_NL
DSI supports command mode transmission through writing commands to a dedicated command queue. By configuring
commands and triggering, the transmission can be executed sequentially.
DSI has a dedicated command queue that is 32-bit in width and up to 128-entry in depth, as shown in Figure 3-63. To
simplify the settings for transmitting a packet in the command mode, the command queue is designed to categorize all
possible transmission types and commands into four primary instructions and unifies all DSI specification commands into
one or several 32-bit-wide instructions. Figure 3-63 also illustrates a 32-bit instruction structure with the instruction format
of CONFG byte.
32-bit
Main instruction ( 4 bytes )
Instruction 0
Data 1 Data 0 Data ID CONFG.
Instruction 1
Instruction 2
Type-0 instruction is used to transmit short packets. Table 3-53 lists the formats of type-0 instruction where (Data ID + Data
0 + Data 1) is constructed by a DSI short packet command (without ECC).
To send the “Turn on Peripheral” and “Color Mode On” commands, which are transmitted via LP TX and HS TX respectively,
request a slave response after the second command is finished, and translate the descriptions into two 32-bit instructions.
See the steps illustrated in Table 3-54.
Type-1 command is used to write data into the frame buffer. As shown in Table 3-55, there are 4 bytes constructing this
type of instruction where Mem_start_0 and Mem_start_1 can be generic commands defined by slave vendors or DCS
commands. Mem_start_1 is optional, i.e. the memory start/continue command can be single-byte as DCS defines. It
depends on the CL bit of the CONFG. The byte indicates whether the DSI controller sends Mem_start_1 or not.
Since the length of frame butter to be updated is not constant, this type of instruction may send several long packets to
the slave. The payload data and length of each packet (excluding mem_start_0 and mem_start_1) are prepared by the
RDMA controller that couples the output of image data path or layer overlay result to the DSI controller. For the first
packet, mem_start_0 and mem_start_1 (if CL = 1) are used as the parameters to inform the slave that the host is starting to
write the frame buffer. For the remaining packets, the register value DSI_RWMEM_CONTI[15:0] will be used as the
parameters to inform the slave side to write these data following the last pixel of the previous packet. For more flexibility,
Mem_start_0, Mem_start_1, DSI_RWMEM_CONTI[15:0] and CL are all programmable.
You need to set up two registers to define the packet length and packet count for a frame-based type-1 transmission.
Frame width in bytes should be set to PS_WC, and frame height in lines should be set to DSI_VACT_NL, respectively. These
two registers are used in both video and command mode frame data transmission.
Refer to the example in Table 3-56 to write the frame buffer via DCS commands in the HS TX mode.
Type-2 instruction is used to send a long packet. As shown in Table 3-57, this type of main instruction requires several sub-
instructions that do not have CONFIG. To send a type-2 command, write a CONFIG with TYPE = 2 and packet header
information (Data ID + 2-byte word count) to entry 0, and write a series of data bytes in size of word count to the following
entries, excluding ECC and checksum. The bytes in the following entries are treated as long packet data instead of the next
instruction until the word count size is reached. The command queue count should be set as the number of multiple
entries used.
The type-2 command is sent in LPTX mode due to memory latency in reading sub-instruction data. Besides, the type-2
command should be sent individually without the next instruction followed. For the 32-entry command queue, the
maximum word count for a long packet is 124 bytes.
WC 1 WC 0 Data ID CONFG.
See Table 3-58 for the example of sending three parameters (0 x 33, 0 x 22, 0 x 11) by a generic long packet command with
3-byte word count.
Type-3 instruction is used for reading frame buffer. As shown in Table 3-59, the format is the same as that of type-1. When
this instruction is executed, the host first sends a short packet with memory start parameter given in byte 2 and byte 3 and
automatically issues the next packet by memory continuous parameters programmed in DSI_RWMEM_CONTI[15:0]. The
number of total packets required to be sent depends on the DSI_FRM_BC and “maximum return packet size”. For example,
to read 1,024 bytes from the frame buffer in the slave, and the “maximum return packet size” is set to “4”, there will be
another 255 short packets with memory continuous parameters to be sent successively after the first short packet
described in main instruction is sent.
See Table 3-60 for an example of using the type-3 instruction to perform the frame buffer read.
[Link].5.1 Peripheral TE
DSI has the ability to receive peripheral Tearing Effect (TE) signals via the BTA process. The TE signal is the LPTX transmitted
signal from the panel. Before starting to receive TE signals from the peripheral, make sure a DCS command of
“set_tear_on” is sent and register configuration of TE is enabled in the peripheral to avoid TE hanged issue. Here is an
example in Table 3-61 to show how to trigger TE commands by command queue.
[Link].5.2 External TE
In certain cases, an external TE pin may be used instead of TE signals for some reasons. DSI supports this mechanism to
issue external TE interrupt signals. Refer to the sequences shown in Table 3-62 for detailed control information.
The switch between video mode and command mode is controlled by MODE_CON (DSI base address + 0 x 014[1:0]). And
this switch is allowed only when DSI is not busy. Switching the mode while DSI is still busy causes DSI to hang up. There are
three ways to know if DSI is non-busy, which are shown in Table 3-63, Table 3-64, and Table 3-65.
The D-PHY lane swap function can swap the source of all lanes. The source of each lane can be chosen by MIPI_TX_*_SEL,
which is shown in Table 3-66. The schematic diagram of lane swap mux is shown in Figure 3-64.
LANE2_HSDATA_source 0 LANE2_LPDATA_P_source 0
LANE2_LPDATA_N_source 1
LANE0_HSDATA_source 2 LANE0_LPDATA_P_source 2
LANE0_LPDATA_N_source 3
LANEC_HSDATA_source 4 LANE*_HSDATA_output LANEC_LPDATA_P_source 4 LANE*_LPDATA_output
(*: 2, 0, C, 1, 3) LANEC_LPDATA_N_source 5 (*: 2, 0, C, 1, 3)
LANE1_HSDATA_source 6 LANE1_LPDATA_P_source 6
LANE1_LPDATA_N_source 7
LANE3_HSDATA_source 8 LANE3_LPDATA_P_source 8
LANE3_LPDATA_N_source 9
MIPI_TX_*_HSDATA_SEL MIPI_TX_*_SEL
The C-PHY trio swap function can swap the source of all trios. The source of each trio can be chosen by MIPI_TX_*_SEL,
which is shown in Table 3-67. The schematic diagram of trio swap mux is shown in Figure 3-65.
T0A_DATA_source 0
T0B_DATA_source 1 T0_HS_CTRL_source 0
T0C_DATA_source 2
T1A_DATA_source 3
T1B_DATA_source 4 T*_HS_CTRL_output
T*_DATA_output T1_HS_CTRL_source 1
T1C_DATA_source 5 (*: 0, 1, 2)
T2A_DATA_source 6 *: T0A, T0B, T0C,
T2B_DATA_source 7 T1A, TB, T1C,
T2C_DATA_source 8 T2A, T2B, T2C T2_HS_CTRL_source 2
MIPI_TX_*_SEL MIPI_TX_CPHY*_HS_SEL
[Link] Overview
The device includes two DPI controllers, DPI0 and DPI1, which output digital video data and timing signals. DPI0 is
used to directly interface with an external display panel, while DPI1 provides data and timings to the HDMITX
module.
[Link] Features
Table 3-70 and Figure 3-66 present timing characteristics for DPI in the device.
Timing generator (tgen): Generate timing signals like vsync, hsync, and de.
Pattern generator (pat): Generate an internal pattern. If a pattern is enabled, the input data is replaced by the internal
pattern data.
FIFO controller (afifo): Turn 1T1P or 1T2P to 1T1P and turn mm_clk to dpi_pixel_clk.
Matrix: Perform color space conversion and support 19 internal matrices as well as programmable matrix.
Chroma low pass filter (clpf) and YUV422: Down sample YUV444 to YUV422.
Embedded sync (embsync): Embed sync signals to data channel and support BT656-like output format.
Outstage: Support channel swap and DDR, output video data and timing.
The following figure shows the DPI programming flow diagram. Firstly, configure each timing register based on the target
frame timing. Then, reset and enable DPI.
[Link] Overview
The EDPTX provides the electrical transport for video and auxiliary data between the device and an external display
module. The communication link is handled through the eDP Auxiliary Channel (EDPAUX).
[Link] Features
EDP_TX_HPD DI EDPTX hot plug detect AC32, AA35, F4, AA7, Y5, K30
EDP TX MAC
EDP PHY
Transmitter TX PHY
SW
AUX
The pixel clock and link clock serve as the main clocks in DP. Hence, the design is related to the speed limitation. The
Transfer Unit (TU) calculator generates the appropriate TU value to avoid TBC FIFO from being empty or full. The lane
arbiter splits video data into 4/2/1 DP lanes. The video data packer packages video data into DP format. Meanwhile, the
video MN GEN circuit calculates the M value, which is inserted to Vertical Blanking ID (VBID) and Main Stream Attribute
(MSA) packets. VBID includes the vblank flag, field flag, interlace flag (I mode), video mute flag, audio mute flag, HDCP sync
detect flag, and DSC flag, while MSA includes video timing information (HV_total, HV_width, etc.). Finally, the symbol mixer
contains VBID, MSA, and video data.
Pixel
Domain
VBID
Link To Transmitter
Symbol
Domain
Mixer
link_clk
Video MN Gen. MSA
stream_clk
Video
data
Video
Lane Video
Timing Gen MUX Data
Arbiter TBC FIFO
Pattern Packer TU
Gen Calculator
32 32 32 40 40 40 Lane 0 40
Lane TOP
TX Training Control
The software controls PHY TX to transmit AUX sequence and receive RX site reply data by PHY RX.
phy_tx
Register
control
phy_rx
[Link].1 MSA
dptx_reg_3030_dp_enc_4p[9:0] = 10’h3ff
dptx_reg_3010_dp_enc_4p[15:0]: htotal
dptx_reg_3014_dp_enc_4p[15:0]: vtotal
dptx_reg_3018_dp_enc_4p[15:0]: hstart
dptx_reg_301C_dp_enc_4p[15:0]: vstart
dptx_reg_3020_dp_enc_4p[15:0]: hwidth
dptx_reg_3024_dp_enc_4p[15:0]: vheigth
dptx_reg_3028_dp_enc_4p[14:0]: hsw
dptx_reg_3028_dp_enc_4p[15]: hsp
dptx_reg_302C_dp_enc_4p[14:0]: vsw
dptx_reg_302C_dp_enc_4p[15]: vsp
The lane number control register exists in the encoder and transmitter.
dptx_reg_3000_dp_enc_4p[4]
dptx_reg_3406_dp_trans_4p[1]: PN swap
[Link].12 TU Calculation
dptx_reg_367C_dp_tx_aux[12] = 1’b1
dptx_reg_3670_dp_tx_aux[10] = 1’b0
dptx_reg_3658_dp_tx_aux[10] = 1’b0
Wait for Reply value Trigger FIFO ren Wait Clear all IRQ Complete
IRQ …
This flow is different. Since the AUX sequence has no length, data_num and wdata can be ignored. Note that no_length has
to be cleared after the communication is completed.
no_length
Wait for IRQ Reply value Clear all IRQ Complete Clear no_length
The flow is the same as DPCD write no length, but it is a write command.
When toggling dptx_reg_3620_dp_tx_aux[8], the software could poll dptx_reg_368C_dp_tx_aux[0]. If this bit is 1’b0, it will
read the next data. Before reading the next data, clear the dptx_reg_368C_dp_tx_aux[0] status by
dptx_reg_368C_dp_tx_aux[1].
When toggling dptx_reg_3634_dp_tx_aux, the software could poll dptx_reg_368C_dp_tx_aux[2]. If this bit is 1’b0, it will
write the next data to this FIFO. Before writing the next data to TX FIFO, clear the dptx_reg_368C_dp_tx_aux[2] status by
dptx_reg_368C_dp_tx_aux[3].
[Link] Overview
The DPTX provides digital video and auxiliary data transfer between the device and an external display module.
The communication link is handled through the DP Auxiliary Channel (DPAUX).
[Link] Features
The DP_TX_MAC block is the main design. It supports HBR2 solution. Source video signals can come from GPU. The AUX
can be controlled by the software.
DP TX MAC
TX PHY ATOP
Transmitter TX PHY
SW
AUX
The pixel clock and link clock serve as the main clocks in DP. Hence, the design is related to the speed limitation. The
Transfer Unit (TU) calculator generates the appropriate TU value to avoid TBC FIFO from being empty or full. The lane
arbiter splits video data into 4/2/1 DP lanes. The video data packer packages video data into DP format. Meanwhile, the
video MN GEN circuit calculates the M value, which is inserted to Vertical Blanking ID (VBID) and Main Stream Attribute
(MSA) packets. VBID includes the vblank flag, field flag, interlace flag (I mode), video mute flag, audio mute flag, HDCP sync
detect flag, and DSC flag, while MSA includes video timing information (HV_total, HV_width, etc.). Finally, the symbol mixer
contains VBID, MSA and video data.
Audio RS
sample Audio Audio Encoder
SDP Packer
Packer FIFO &
CRC
link_clk
128fs_clk Audio MN Gen. and FREQ VBID
xtal_clk Symbol
To Transmitter
Mixer
link_clk
stream_clk Video MN Gen. and FREQ MSA
xtal_clk
HVDE
Video
M Lane Video
Timing Gen Data
UX Arbiter TBC FIFO
Pattern Packer TU
Gen calculator
32 32 32 40 40 40 Lane 0 40
Lane TOP
TX Training Control
[Link].3 DP TX AUX
The software controls PHY TX to transmit AUX sequence and receive RX site reply data by PHY RX.
phy_tx
Register
control
phy_rx
[Link].1 MSA
dptx_reg_3030_dp_enc_4p[9:0] = 10’h3ff
dptx_reg_3010_dp_enc_4p[15:0]: htotal
dptx_reg_3014_dp_enc_4p[15:0]: vtotal
dptx_reg_3018_dp_enc_4p[15:0]: hstart
dptx_reg_301C_dp_enc_4p[15:0]: vstart
dptx_reg_3020_dp_enc_4p[15:0]: hwidth
dptx_reg_3024_dp_enc_4p[15:0]: vheigth
dptx_reg_3028_dp_enc_4p[14:0]: hsw
dptx_reg_3028_dp_enc_4p[15]: hsp
dptx_reg_302C_dp_enc_4p[14:0]: vsw
dptx_reg_302C_dp_enc_4p[15]: vsp
The lane number control register exists in the encoder and transmitter.
dptx_reg_3000_dp_enc_4p[4]
dptx_reg_3406_dp_trans_4p[1]: PN swap
[Link].12 TU Calculation
dptx_reg_367C_dp_tx_aux[12] = 1’b1
dptx_reg_3670_dp_tx_aux[10] = 1’b0
dptx_reg_3658_dp_tx_aux[10] = 1’b0
Wait for Reply value Trigger FIFO ren Wait Clear all IRQ Complete
IRQ …
This flow is different. Since the AUX sequence has no length, data_num and wdata can be ignored. Note that no_length has
to be cleared after the communication is completed.
dptx_reg_362C_dp_tx_aux[0]: No length setting
no_length
Wait for IRQ Reply value Clear all IRQ Complete Clear no_length
The flow is the same as DPCD write no length, but it is a write command.
When toggling dptx_reg_3620_dp_tx_aux[8], the software could poll dptx_reg_368C_dp_tx_aux[0]. If this bit is 1’b0, it will
read the next data. Before reading the next data, clear the dptx_reg_368C_dp_tx_aux[0] status by
dptx_reg_368C_dp_tx_aux[1].
When toggling dptx_reg_3634_dp_tx_aux, the software could poll dptx_reg_368C_dp_tx_aux[2]. If this bit is 1’b0, it will
write the next data to this FIFO. Before writing the next data to TX FIFO, clear the dptx_reg_368C_dp_tx_aux[2] status by
dptx_reg_368C_dp_tx_aux[3].
[Link] Overview
The HDMITX module encodes video, audio, and control data into Transition-Minimized Differential Signaling (TMDS)
format for digital transmission based on HDMI Specification 2.0b and transfers the uncompressed digital data
streams to an HDMI-compatible sink device.
[Link] Features
HPD line
Discovery by EDID
Video process
pixel_clk
vs/hs/de
rgb[47:0]
video_data[23:0] AV mix
HDCP1.X 0 xor_data[23:0]
1
data_out[39:0]
HDCP2.X
AIP
bclk
lrck/sdx
audio_data[8:0]
mclk
spdif
pll_clk
Data is transmitted in the same way as described in the specification of HDMI 2.0b.
3.9 Imaging
The Camera Imaging Subsystem (CAMSYS) is built around a feature-rich Image Signal Processor (ISP) and a deep learning
Face Detection (FD) engine. The ISP processes data received either from camera sensors through MIPI CSI-2 interface or
system DRAM.
The ISP consists of 2 main engines: Pass 1 (P1) and Pass 2 (P2).
P1 receives raw data from the camera sensor, executes lens and sensor compensation algorithms, and converts the
image into YUV format.
P2 obtains data from P1 through DRAM and further enhances the image quality, such as noise reduction, preference
color adjustment, edge enhancement, etc.
Note:
The block diagram only represents a typical use case. The path may differ for other scenarios, such as debugging, tuning and
engineering modes.
[Link] Overview
The Face Detection (FD) engine uses a convolutional neural network algorithm to detect faces on a source image and
output the detected coordinates of the face windows and their confidence values.
[Link] Features
The FD engine supports the following key features:
[Link] Overview
The CSI is based on the MIPI Alliance Specification for Camera Serial Interface 2 (MIPI CSI-2) Version 2.1. The CSI provides
high-speed serial data transfer between the ISP and external camera image sensors.
The device features two MIPI CSI-2 controllers (CSI0 and CSI1), which are fully compliant with the MIPI CSI-2 specification.
The CSI0 controller and the CSI1 controller utilize a combined MIPI D-PHY/C-PHY physical layer. The PHY layer is based on
MIPI D-PHY Specification Revision 2.1 and MIPI C-PHY Specification Revision 1.2. It acts as a physical link between the CSI
controllers and image sensors.
[Link] Features
The MIPI CSI-2 implementation in the device provides the following key features:
Primary CSI-2 interface (CSI0), which can be used in the following configuration:
Two 2-data lane interfaces in D-PHY mode, or
One 4-data lane interface in D-PHY mode, or
One 3-trio interface in C-PHY mode, or
Two 2-trio interfaces in C-PHY mode
D-PHY supports 2.5Gbps per lane and C-PHY supports 4.5Gsps per trio
Secondary CSI-2 interface (CSI1), which can be used in one of the following configurations:
One 4-data lane interface in D-PHY mode, or
One 3-trio interface in C-PHY mode
DPHY supports 2.5Gbps per lane and C-PHY supports 4.5Gsps per trio
Pixel formats: RAW8/RAW10/RAW12/RAW14/YUV422 8-bit
No support for D-PHY escape mode and bus turnaround
The CSI timing characteristics are compliant with MIPI CSI-2 Specification v2.1, MIPI D-PHY Specification v1.2, and
MIPI C-PHY Specification v1.2.
ISP_CK
seninf_top_mux seninf_cam_mux
PHY_CSI0_CK
seninf1 seninf_mux_1
Sensor0 clk domain Async FIFO BUFFER
MIPI
2D sensor CDPHY_TOP phy_seninf_mux_0
seninf2
MIPI seninf_mux_2 cam1
2D sensor
Async FIFO
BUFFER
seninf4 cam3
seninf_mux_4
Async FIFO
BUFFER
cam4
seninf_mux_5
BUFFER
cam5
seninf_mux_6
BUFFER
cam6
seninf_mux_7
BUFFER
cam7
seninf_mux_8
BUFFER
cam8
VC/DT group (1st)
cam9
seninf_mux*8 (buffer*8)
Figure 3-86 Block Diagram of CSI Modules (D-PHY and C-PHY mode)
Sensor
init
4-Lane D-PHY
Cam Mode
Setting seninf
Setting seninf_top_mux
Setting seninf_mux
Setting seninf_cam_mux
MIPI Sensor
Streaming out
Normal Operation
seninf_sen0_mclk
CKSYS
seninf_top seninf_cam_mux
seninf_top_mux
seninf_mux_1
seninf_mux_3
Performance setting
eFuse reading
Read eFuse value according to eFuse map, and set the eFuse value to the corresponding registers.
Step Description Register Name Register Bit Field Bit Field Value Address
DPHY_RX_LANE_EN dphy_rx_ld2_en 1’b1 0x11ED2000
DPHY_RX_LANE_EN dphy_rx_ld3_en 1’b1 0x11ED2000
3 Disable software reset DPHY_RX_LANE_EN dphy_rx_sw_rst 1’b0 0x11ED2000
Table 3-83 4D1C Clock Lane and Data Lane Setting Top Programming Outline
Step Description Register Name Register Bit Field Bit Field Value Address
CK_DATA Mux
1 DPHY_RX_LANE_SELECT dphy_rx_ck_data_mux_en 1’b1 0x11ED2004
enable
Configure
2 DPHY_RX_LANE_SELECT rg_dphy_rx_lc0_sel 3’h2 0x11ED2004
clock lane
DPHY_RX_LANE_SELECT rg_dphy_rx_ld0_sel 3’h1 0x11ED2004
Set data lane DPHY_RX_LANE_SELECT rg_dphy_rx_ld1_sel 3’h3 0x11ED2004
3
enable DPHY_RX_LANE_SELECT rg_dphy_rx_ld2_sel 3’h0 0x11ED2004
DPHY_RX_LANE_SELECT rg_dphy_rx_ld3_sel 3’h4 0x11ED2004
DPHY_RX_CLOCK_LANE0_HS_PARAMETER rg_dphy_rx_lc0_hs_settle_parameter 8’h28 0x11ED2010
rg_cdphy_rx_ld0_trio0_hs_settle_para
DPHY_RX_DATA_LANE0_HS_PARAMETER 8’h28 0x11ED2020
meter
rg_cdphy_rx_ld1_trio1_hs_settle_para
Configure DPHY_RX_DATA_LANE1_HS_PARAMETER 8’h28 0x11ED2024
4 meter
settle time
rg_cdphy_rx_ld2_trio2_hs_settle_para
DPHY_RX_DATA_LANE2_HS_PARAMETER 8’h28 0x11ED2028
meter
rg_cdphy_rx_ld3_trio3_hs_settle_para
DPHY_RX_DATA_LANE3_HS_PARAMETER 8’h28 0x11ED202C
meter
phy_seninf_mux_setting
seninf setting
seninf_top_mux setting
1 Seninf top mux 1 input source selection SENINF_TOP_MUX_CTRL_0 rg_seninf_mux1_src_sel 4’b0000 0x16010010
seninf_mux_1 setting
seninf_cam_mux setting
This section describes the master clock option for the image sensor. In most cases, the clock system of the external image
sensor module requires a reference clock source. There are 3 master clocks named CMMCLK0, CMMCLK1 and CMMCLK2.
The master clocks can be obtained from different clock sources that are not integrated in the CSI controller. The CKSYS
provides a variety of master clock options from internal clock system. The supported clock can be
6/12/13/19.2/24/26/48/52 MHz.
3.10 Video
[Link] Overview
This Video Encoder (VENC) is a mainstream video encoder. It consists of 2 video encoders: H.264 and HEVC. The
VENC is capable of encoding 4K video at 30 frames per second (FPS) with promising superior video quality for
H.264 and HEVC. Furthermore, it supports pixel bit-depth up to 8 bits. This design also supports various encoding
methods that satisfy basic requirements of easy software controllability. Furthermore, with advanced encoding
technology, it delivers astonishing high quality video while maintaining low memory bandwidth requirements. The
VENC also considers the usage of portable devices and provides several power saving capabilities.
[Link] Features
The VENC has the following main features:
Table 3-92 presents the supported video formats and their capabilities.
Figure 3-90 shows a brief overview of the IP architecture and local on-chip-bus architecture. The interface for
controlling it consists of ARM APB and MediaTek proprietary SMI (Smart Multimedia Interface) bus. It reports a
hardware event through an interrupt or software polling. In addition, it adopts several SMI ports and one APB
port. The video encoder core includes the following modules: DMA, ME, MC, TQ, DB, and EC. The input to the
video encoder is image data. After the encoding process, the bitstream is sent to DRAM by the system bus.
System Bus
DMA
APB
ME VENC
CPU
DB
EC
MC Interrupt
TQ
DMA acquires and stores back the image data and bitstream from and to memory according to the configured
address.
ME conducts motion estimation to decide motion vector for later encoding.
MC conducts motion compensation to give predicted pixel values.
TQ conducts transform and quantization operations and writes reconstructed pixels to DB and quantized transformed
coefficients to EC.
DB conducts de-blocking operations and allows DMA to store back the processed frame as the next frame’s reference
frame.
EC conducts entropy encoding, and the coding can be variable length code, context based arithmetic code, or context
based variable length code. The encoded bitstream is written to memory by DMA.
[Link] Overview
The Video Decoder (VDEC) accelerator is designed to provide multi-standard video decoding, relieving the Central
Processing Unit (CPU) load and providing high performance video. It receives a compressed video bitstream as
input, performs the decoding process, and then sends the reconstructed video to the display.
[Link] Features
HEVC
Main profile 4K2K @ 75fps/160 Mbps, 8 bits
Main 10 profile 4K2K @ 75fps/160 Mbps, 10 bits
HEIF
Main profile maximum resolution 16383 × 16383, 8 bits
Main10 profile maximum resolution 16383 × 16383, 10 bits
VP9
Profile 0 4K2K @ 75 fps/120 Mbps, 8 bits
Profile 2 4K2K @ 75 fps/120 Mbps, 10 bits
AV1
Main profile 0 4K2K @ 75 fps/120 Mbps, 8/10 bits
AVC
Constrained Baseline 4K2K @ 75fps/160 Mbps, 8 bits
Main/High profile 4K2K @ 75fps/160 Mbps, 8 bits
High 10 profile 4K2K @ 75fps/160 Mbps, 10 bits
MPEG-4
Simple Profile 1080p @ 60 fps/60 Mbps, 8 bits
Advanced Simple Profile 1080p @ 60 fps/60 Mbps, 8 bits
MPEG-2
Main profile 1080p @ 60 fps/60 Mbps, 8 bits
VP8
1080p @ 60 fps/40 Mbps, 8 bits
H.263
Baseline profile 1080p @ 60 fps/60 Mbps
3.11 Audio
3.11.1 Overview
The MediaTek audio system allows data exchange among the AP and external components. The following
interfaces are available.
3.11.2 Features
PMIC audio CODEC playing
Supports 8/11.025/12/16/22.05/24/32/44.1/48/96/192 kHz sampling rate playing
PMIC audio CODEC recording
Supports 8/16/32/48/96/192 kHz sampling rate recording
One master I2S output (I2SO1):
2-channel I2S output. Sampling rates from 8 kHz to 192 kHz, up to 32 bits.
16-channel TDM output. Sampling rates from 8 kHz to 48 kHz, up to 32 bits.
One master or slave I2S output (I2SO2):
8-channel I2S output. Sampling rates from 8 kHz to 192 kHz, up to 32 bits
16-channel TDM output with 48 kHz sampling rate
One master or slave I2S input (I2SIN):
8-channel I2S input. Sampling rates from 8 kHz to 192 kHz and resolution up to 32 bits
16-channel TDM input. Sampling rates from 8 kHz to 48 kHz, up to 32 bits, or 16-channel direct path to memory
One master or slave TDM input (TDMIN):
16-channel TDM output with 48 kHz sampling rate and bit resolution up to 32 bits
2-channel I2S input. Sampling rates from 8 kHz to 192 kHz and resolution up to 32 bits
One master 8-channel High-Definition Multimedia Interface (HDMI™) audio output (HDMITX):
Sampling rates from 8 kHz to 192 kHz with a resolution of up to 32 bits
8-channel DisplayPort™ audio output with sampling rates from 8 kHz to 192 kHz, up to 24 bits
One S/PDIF input. Sampling rates include 32, 44.1, 48, 88.2, 96, 176.4, and 192 kHz
One S/PDIF output with 32, 44.1, 48, 88.2, 96, and 192 kHz sampling rates
One master or slave PCM interface with Sampling Rate Converter (SRC). Supported sampling rates: 8, 16, 32,
44.1, and 48 kHz with bit resolution up to 24 bits
One slave 8-channel I2S input (AUDIO IN) with sampling rate from 8 kHz to 192 kHz with bit resolution up to
24 bits
4 × Pulse Density Modulation (PDM) interfaces for up to 4 stereo Digital Microphones (DMICs). Support of
one-wire and two-wire modes with 8, 16, 32, and 48 kHz PCM sampling rates and 24 bits.
A proprietary audio interface for PMIC CODEC
2-channel DAC. Supports up to 192 kHz sampling rate
2-channel ADC. Supports up to 192 kHz sampling rate
Hardware gain function and general ASRC to enhance the audio quality and flexibility of mix engine. The flexible mix
engine system for data exchange between the interfaces without CPU intervention.
2 × stereo hardware gain
12 × stereo general-purpose Asynchronous Sample Rate Converters (ASRC) for sampling rate conversion and slave
mode clock tracking
4 × stereo memory-based ASRC
32-channel channel merge
5 × APLL can support up to 5 clock rates at the same time
64KB internal audio SRAM
Voice wakeup (in MediaTek PMIC codec)
Device
DMIC1_DAT I2SO1_D[0-11]
2 × DMIC PDM1 I2SO1
DMIC2_DAT I2SO2_D[0-7]
2 × DMIC PDM2 I2SO2
DMIC3_DAT TDMIN_D
2 × DMIC PDM3 TDM IN
DMIC4_DAT I2SIN_D[0-3]
2 × DMIC PDM4 I2S IN
SPDIF_OUT
SPDIF OUT
SPDIF_IN[0-1]
MPHONE_MULTI SPDIF IN
Top Bus
AHB
SPLIN_D[0-3]
MPHONE_MULTI2 I2S AUDIO IN
HDMITX
HDMITX
DP
DPTX
Table 3-94 and Figure 3-92 present timing characteristics for the I2S modules in the device.
IIS01
MCK
LRCK
IIS07
DO
IIS08 IIS10
DI
Table 3-96, Figure 3-93, and Figure 3-94 present timing characteristics for the PCM interfaces in the device.
SYNC
PCM5
TX
PCM6 PCM7
RX
PCM3 PCM2
PCM8 PCM9
RX
PCM5
TX
Table 3-98 and Figure 3-95 present timing characteristics for the TDM interfaces in the device.
TDM1
MCK
TDM5
WS
TDM6
SDOUT
TDM7 TDM8
SDIN
Table 3-99 and Figure 3-96 present timing characteristics for the PDM interface in the device.
CLK
PDM2 PDM3
PDM4 PDM5
DAT
3.12 Connectivity
[Link] Overview
The I3C/I2C controller is a bi-directional, two-wire serial interface that utilizes Serial Clock Line (SCL) and Serial Data Line
(SDA) signals. These signals can be driven by either the master or the slave in both I2C and I3C, with the exception that SCL
is only driven by the master in I3C. This generic controller supports the master role and conforms to the I3C/I2C
specification.
[Link] Features
apb_reg
When the I3C/I2C master writes data to the slave, the data flow direction is:
APB interface FIFO Master Bus Slave
When the I3C/I2C master reads data from the slave, the data flow direction is:
Slave Bus Master FIFO APB interface
Figure 3-98 shows the wording conventions that are used subsequently.
In both I2C and I3C protocols, transactions begin with a Start condition (S) and are terminated by a Stop condition (P).
Transaction Description
Start condition When bus is free, a high to low transition on the SDA line while SCL is high.
Repeated Start condition When bus is busy, a high to low transition on the SDA line while SCL is high.
Stop condition When bus is busy, a low to high transition on the SDA line while SCL is high.
The I2C master is equipped to detect the bus status. Prior to controlling the bus to transfer data, the master initiates a
detection process. If the bus is busy, the master waits until a stop condition is detected.
SCL1(Master drive)
SCL2(Slave drive)
SCL(Bus)
In certain scenarios, the master may need to communicate with the slave, but the slave may not be ready to receive or
send data. This can occur when the internal FIFO of the slave is full or empty. In such cases, after the master pulls SCL low,
the slave actively and continuously pulls down the SCL, thus enabling clock stretching.
[Link].4 I2C Standard Mode (SM), Fast Mode (FM), and Fast Mode Plus (FM+)
Master Write
Master Read
Figure 3-100 illustrates the basic transfer format utilized by the SM/FM/FM+ of I2C. A more complex transfer format is
described in Section [Link].
Initially, the master sends a start condition. Following this, the master sends the 7-bit static address of the I2C slave device
with which it intends to communicate. Once the slave responds to the addressing, the master sends or receives the data.
Upon completion of the data transfer, the master sends a stop condition, and the bus returns to the free state.
Master Write
Master Read
Figure 3-101 depicts the differences between the frame formats employed by the I2C HS mode and I2C SM/FM/FM+.
Notably, the I2C HS mode introduces a fixed master code (00001XXX) that broadcasts to all slaves supporting the HS mode,
allowing them to transition to high speed. The master then sends a repeat start condition signal followed by the same
frame format as in SM/FM/FM+.
The I3C master supports the I3C Specification v1.0 SDR mode, including:
The procedure of DAA is employed to assign dynamic addresses to I3C slaves, as all I3C slaves must have a dynamic address
to complete data transfer.
Master Write
Master Read
I3C Reserved Byte
S A R I3C Slave Address A DATA T P
7'h7E,RnW = 0
SDR private write/read is a basic communication mode similar to the I2C HS mode with the frame format shown in Figure
3-103, where 7E is the I3C reserved address to indicate that this message is an I3C message.
The I3C master controller supports broadcast CCC (command codes 0x00 to 0x7F) to write to all I3C slaves on the I3C bus.
The master controller supports direct CCC (command codes 0x80 to 0xFE) to the specific I3C slave on the I3C Bus.
[Link] Interrupts
[Link].1 Multi-User
The I3C/I2C master supports the multi-user function, enabling multiple hosts (including CCU (Camera Control Unit), AP,
SCP, etc.) to poll to control the I3C/I2C master, as illustrated in Figure 3-106. In case of using AP/SCP multi-user, it is advised
to use the FIFO mode on the non-XPU side. Moreover, if the AP multi-user is employed, the IRQ of the AP's I3C/I2C channel
2 can only be sent to the AP and CCU, and not to the SCP.
The I3C/I2C master controller offers a FIFO mode. Along with the slave address register, the controller integrates a 16-byte
deep FIFO. This feature enables the AP to prepare up to 16 bytes of data for a write transfer or read up to 16 bytes of data
for a read transfer.
The AP_DMA facilitates communication between the I2C master controller and the system. To enable efficient data
transfer, configuration of the DMA settings is necessary in advance. These settings include the target memory address and
the TX/RX transfer direction and transfer length, in addition to the slave address register.
The I3C/I2C master controller is designed to be generic to support a wide range of devices that may utilize different
combinations of transfer formats. The supported formats and examples are described in the following sections.
Wording conventions:
Word Description
Transfer Anything encapsulated within a START and STOP or repeated START.
Number of bytes within the transfer (TRANSFER_LEN (I2Cn Base address +
Transfer length
0x14)/TRANSFER_LEN_AUX (I2Cn Base address + 0x6C)).
Transaction The top unit. Everything combined equals 1 transaction.
Transaction length Number of transfers to be conducted (TRANSAC_LEN (I2Cn Base address + 0x18)).
The I2C master writes 1-byte data to the I2C slave or reads 1-byte data from it. The I3C master is compatible with this
transfer format.
The I2C master writes N-byte data to the I2C slave or reads N-byte data from it. The I3C master is compatible with this
transfer format.
N (Bytes + Ack)
Multi Byte Read
A/
S Slave Address A DATA P
nA
N (Bytes + Ack/nAck)
The I2C master first writes N-byte data to the I2C slave. After a repeated START condition, the I2C master reads M-byte
data from the I2C slave. The I3C master is compatible with this transfer format. Note that only the “read after write
sequence” is supported; the “write after read sequence” is not supported.
Transaction (TRANSAC_LEN=2)
TRANSFER_LEN TRANSFER_LEN_AUX
[Link].4 Transfer Length Change after First Transfer Completion (No Direction Changed)
Under the condition of changing the transfer length without changing the transfer direction in the write/read mode, the
I2C master first writes N-byte data to the I2C slave. After a repeated START condition, the I2C master writes/reads M-byte
data to the I2C slave. The I3C master is compatible with this transfer format.
Figure 3-110 Change Transfer Length in Write/Read Mode (No Direction Change)
When the I2C master performs X transfers, between each two transfers, it is in the pause state and issues an interrupt. At
this time, software can change the length, slave address and direction of the next transfer and then restart the transfer.
The I3C master is compatible with this transfer format. Note that this function is only supported in the FIFO mode.
[Link] AC Timing
Table 3-105, Figure 3-112, Table 3-106, and Figure 3-113 present timing characteristics for the I2C interfaces in in SS/FS/FS+
modes.
Table 3-105 I2C AC Timing Parameters for Standard, Fast, and Fast-mode Plus
Standard-mode Fast-mode Fast-mode Plus
Symbol Parameter Unit Remark
Min Max Min Max Min Max
Serial Clock Line (SCL)
fSCL 0 100 0 400 0 1000 kHz -
clock frequency
Hold time (repeated)
tHD;STA 4.0 - 0.6 - 0.26 - µs -
START condition
LOW period of the SCL
tLOW 4.7 - 1.3 - 0.5 - µs -
clock
HIGH period of the SCL
tHIGH 4.0 - 0.6 - 0.26 - µs -
clock
Set-up time for a
tSU;STA repeated START 4.7 - 0.6 - 0.26 - µs -
condition
For the I3C AC timing of the SDR mode, please refer to the MIPI I3C specification.
Start
Clear interrupt
SCL frequency
configuration
Transaction
configuration
Trigger start
End
Figure 3-114 shows the programming workflow of the I3C/I2C master. To initiate transmission of register data to the
master, the AP must first clear the interrupt and then configure the frequency division factor of the SCL to correspond to
the low and high speeds (for the I2C HS mode or the I3C SDR mode). Then, the AP configures relevant registers for
transmission such as the slave address, transfer length, and transaction length. The transmission is then triggered by the
Start register. Upon completion of the transfer or in the event of an error, an interrupt is generated, which should be
cleared after the transmission is completed correctly or an error occurs.
[Link] Overview
The Universal Asynchronous Receiver/Transmitter (UART) is a full duplex serial communication channel between the chip
and external devices. It is designed to be compatible with a range of standard software drivers and offer M16C450 and
M16550A modes.
The UART supports word lengths from 5 to 8 bits, an optional parity bit, and one or two stop bits, all of which are fully
programmable via the CPU interface. Additionally, the UART includes:
Furthermore, the UART is equipped with two Direct Memory Access (DMA) handshake lines for indicating when the FIFOs
are ready to transfer data to the CPU and can generate interrupts from any of these sources.
After the hardware reset, the UART is in the M16C450 mode; however, it can be enabled to enter the M16550A mode,
which adds more advanced functions. These extensions are individually selectable via software control.
[Link] Features
Maskable interrupts
Two independent 32-depth FIFOs for transmit and receive
Data transfer: Supports DMA (Transmit/Receive) transfer
Escape character sequence detection
Baud Rate
Generator
Clock
uart_tx
TX Machine
TX FIFO
uart_rts
Hardware
uart_cts
Flow Control
The figure above depicts the block diagram of UART, which consists of
The UART supports full-duplex serial communication through its TX and RX channels, each of which contains an FSM (TX
FSM or RX FSM) and a 32-byte FIFO (TX FIFO or RX FIFO). The FSM indicates the current transfer stage of the TX or RX
channel, while the FIFOs store the data to be sent or received. The APB interface allows the system to:
The modem control enables the UART to support the hardware flow control.
[Link].1 Signals
[Link].1.3 Clock
The UART has two clock input ports: Peripheral Clock (PCLK) and Baud Clock (BCLK).
The PCLK is the APB clock with its frequency determined by the APB.
The BCLK is the UART function clock with two levels of clock sources available for the UART to select the
adapted clock frequency, allowing flexible implementation of multiple UARTs.
[Link].1.4 Reset
The UART features one asynchronous reset input port, which can be triggered by the hardware reset, power reset,
or software reset bit, which can reset the initial values of all UART registers, FIFOs, and state machines.
The UART is connected to the APB as an APB slave, allowing all UART registers to be programmed or read via the APB.
Data transmitted to the outside via the TX FIFO can be written by the APB.
Data received from the outside can be read from the APB via the RX FIFO.
[Link].1.7 Interrupt
When there is an output interrupt request, poll the UART interrupt identification register for more information
about the interrupt, as described in Section [Link].4.
start bit bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7 parity bit stop bit stop bit
This section describes the clocks and special clocking requirements of the UART. For the definitions of PCLK and
BCLK, please refer to Section [Link].1.3.
The PCLK is primarily used for programing registers and also plays the roles below. The PCLK must be always running
when the UART is in use.
The write clock of a TX FIFO
The read clock of an RX FIFO
Synchronization of FIFO.
The BCLK is used for all state machines, writing RX FIFOs, and reading TX FIFOs. The BCLK must always be running
when the UART is in use. To ensure a fixed baud rate when transmitting or receiving data, the BCLK must be kept in
one clock source.
Note that for the 16x oversampling of input characters, the BCLK frequency is preferably greater than or equal to 16x the
request baud rate. There is no special requirement for the PCLK.
The UART generates several types of interrupts, as detailed in Table 3-109 and Table 3-110.
Interrupt
Interrupt Request Bit
Interrupt Type Identification Interrupt Factor Notes
(UARTn_IER)
(UARTn_IIR)
If a rising edge is feature is
RTSI IIR[5:0] = 100000b detected on the RTS, the enabled.
interrupt occurs. (EFR[4] = 1)
When an XOFF character
XOFF1 IIR[5:0] = 010000b is received, the interrupt
occurs.
The UART provides more enhanced features than the industry-standard 16550. This includes hardware flow control,
software flow control, and the escape function.
The hardware flow control uses two dedicated signals, Clear to Send (CTS) and Request to Send (RTS) signals, to indicate
whether the UART is ready to receive data or send data.
This feature is highly advantageous in embedded applications where the Interrupt Service Routine (ISR) latency is difficult
to predict and control. The MCU is relieved from the requirement of fetching the received data within a fixed amount of
time.
The software flow control uses special programmable characters, XON and XOFF, to handle the flow of data. When XOFF is
received, the UART transmission is halted and does not resume until XON is received.
Note:
To enable any of the enhancement features, the enhanced mode bit EFR[4] must be set. If it is not set, IER[7:5], FCR[5:4], and
MCR[7:6] cannot be written, ensuring the UART is backward compatible with software written for 16C450 and 16550A devices.
When the oversampling ratio between the UART clock and baud rate is less than 8, it is necessary to enable the guard time function
of the UART TX device to ensure the MediaTek UART RX works properly. Otherwise, frame errors could occur and the received data
could get corrupted.
The Escape function can be enabled by configuring ESCAPE_EN and ESCAPE_DAT for the software flow control. The normal
character sent in the TX FIFO is escaped to its inverse code if it matches XON/XOFF/ESCAPE_DAT and the transmit state
machine sends ESCAPE_DAT before the inverse code. When the receive state machine receives the ESCAPE_DAT character,
it abandons the character and escapes the next character to its inverse code before saving it to the RX FIFO.
The DLL (Divisor Latch LS (Least Significant Bit)) and DLM (Divisor Latch MS (Most Significant Bit)) act as clock dividers to
obtain the required baud rate based on the BCLK frequency.
Note:
The DLL and DLM can only be updated if LCR[7] is set (“1”). Note that the division by 1 generates a BAUD signal that is constantly
high. The example below shows the divider that needs to generate a given baud rate from the clock inputs of 26 MHz.
Note:
SPEED UART sample counter base
0: Based on 16*baud_pulse, baud_rate = system clock frequency/16/{DLM, DLL}
1: Based on 8*baud_pulse, baud_rate = system clock frequency/8/{DLM, DLL}
2: Based on 4*baud_pulse, baud_rate = system clock frequency/4/{DLM, DLL}
Note:
When HIGHSPEED = 3, the sample_count is the threshold value for the UART sample counter (sample_num).
Sample Count = clock source/baud rate/{DLM. DLL} - 1
For example, clock source: 26 MHz, baud rate: 4800 bps; DLM: 0x00, DLL: 0x16
If High Speed (0x24) = 0, 1 or 2: Unnecessary to set SAMPLE_COUNT
If High Speed (0x24) = 3: 26 MHz/4800/0x16 - 1 ~= 245 SAMPLE_COUNT = 245
Note:
If HIGHSPEED = 3, UART gets the input data when sample_count = sample_num.
The SAMPLE_POINT is usually ROUNDDOWN ((SAMPLE_COUNT+1)/2 - 1).
For example, if the clock source = 26 MHz, the baud rate = 4800 bps,
DLL: 0x00, and DLL: 0x16&SAMPLE_COUNT = 245
SAMPLE_POINT = ROUNDDOWN ((245+1)/2 – 1) = 122 (sample the central point to decrease inaccuracy)
FRACDIV_L and FRACDIV_M act as baud rate accuracy compensation factors to reduce baud rate errors.
Note:
FRACDIV_L: Add sampling count (+1) from state data7 to state data0 in order to improve fractional divisor.
Note:
FRACDIV_M: Add sampling count in the stop state and the parity state to improve the fractional dividers.
FRACDIV_L/FRACDIV_M: Add one sampling period to each symbol to increase baud rate accuracy.
n n+L[0] n+L[1] n+L[2] n+L[3] n+L[4] n+L[5] n+L[6] n+L[7] n+M[0] n+M[1]
Bit extend number = ROUND ((clock source/baud rate/{DLM. DLL} – (SAMPLE_COUNT + 1))*10)
For example, if the clock source = 26 MHz, the baud rate = 4800 bps;
DLM: 0x00, DLL: 0x16, and SAMPLE_COUNT = 245.
Bit extend number = ROUND ((26 MHz/4800/0x16 – (245+1))*10) = 2
Therefore, it should compensate for 2 bits of one frame (e.g. FRACDIV_L = 0x44, FRACDIV_M = 0x00).
Refer to Table 3-114 for more details.
When the RX Buffer is almost full or a byte is being transferred into the RX FIFO, the DR bit of the LSR is “1” and the
received data can be read by the RX Buffer Register (RBR).
The software can read the received data either by responding to a received interrupt (IIR[5:0] = 000100b), or by
polling the DR bit status directly. If FIFOs are enabled, the received data in the RX FIFO can be read by reading RBR.
In special scenarios where the system needs to enter the sleep mode while the UART is either transmitting or receiving
characters, the UART hardware provides sleep_req and sleep_ack mechanisms to avoid conflicts. Set sleep_req and then
poll sleep_ack until its status becomes “1”, which indicates that the UART has entered an idle status (TX idle and RX idle).
The figure below depicts the specific UART baud rate waveform.
One character
UARTx_RX
UARTx_TX
The table below suggests the UART baud rate setting from a clock input of 30 MHz.
DLL
DLM
HIGHSPEED
SAMPLE_COUNT
SAMPLE_POINT
FRACDIV_M
FRACDIV_L
Once the baud rate is set, the UART is able to start transmitting data by filling the TX FIFO and receiving data from the RX
FIFO. See Table 3-118 for an example of how to set the baud rate to 115,200 bps using a clock input of 30 MHz.
Start
FIFO register settings:
Enable FIFO: Set 0x08[0] to 1 b1
FIFO Control Register Settings
TX FIFO Trigger Threshold 0x08[5:4]
(Set TX FIFO Trigger Threshold and Enable FIFOs) 2 b00: 1 byte (down to trigger)
2 b01: 4 bytes (down to trigger)
2 b10: 8 bytes (down to trigger)
No 2 b11: 14 bytes (down to trigger)
THRE Bit of LSR
Is 1 ?
Yes
Set Transmit Data to TX
Holding Register(THR)
Figure 3-118 UART Data Transmission with THRE Bit Status Polling
Start
FIFO register settings:
Enable FIFO: Set 0x08[0] to 1 b1
FIFO Control Register Settings
RX FIFO Trigger Threshold 0x08[7:6]
(Set RX FIFO Trigger Threshold and Enable FIFOs) 2 b00: 1 byte (up to trigger)
2 b01: 6 bytes (up to trigger)
2 b10: 12 bytes (up to trigger)
No 2 b11: register 0x50[4:0] (up to trigger)
DR Bit of LSR Is
1 ?
Yes
Set Transmit Data to RX
Buffer Register(RBR)
[Link].4 Reference
16550 UART
The Serial Peripheral Interface Master (SPIM) is a four-pin synchronous serial interface used for short-distance
communication, primarily in embedded systems. The device features six SPIM controllers.
Six SPIMs in PERISYS. They can support up to 52 MHz. SPIM0 is quad mode SPI, while SPIM1/SPIM2/SPIM3/SPIM4/SPIM5 is
dual mode SPI.
Three SPIMs in SCPSYS. They can support up to 26 MHz. SCP_SPIM0/SCP_SPIM1/SCP_SPIM2 is single mode SPI.
Two configurable transmit modes:
TX DMA mode—the SPI controller automatically fetches the transmitted data (to be put on the MOSI (Master
Output Slave Input) line) from memory
TX FIFO mode—the data to be transmitted on the MOSI line is written to FIFO before the start of the transaction.
Two configurable receive modes:
RX DMA mode—the SPI controller automatically stores the received data (from the MISO (Master Input Slave
Output) line) into memory.
RX FIFO mode—the received data is kept in RX FIFO of the SPI controller. The processor must read back the data by
itself.
Configurable chip-select setup, hold, and idle times
Programmable serial clock high and low times
Configurable transmit and receive bit order (MSB or LSB)
Adjustable endian order from/to memory system
Programmable byte length for transmission
Unlimited length for transmission using dedicated pause mode
Configurable option to control chip-select de-assertion between byte transfers
Supports all clock polarity and phase modes
SPIM signal descriptions
CSB
Control and Status CLK
APB Main SPI PAD_MACRO
Register MO
MI
APB
In the FIFO mode, software can write data into the TX FIFO via SPI_TX_DATA, or read data from the RX FIFO via
SPI_RX_DATA.
In the DMA mode, the SPI is capable of automatically retrieving data from or sending data to SYSRAM via the AHB after
the software configures the DMA parameters.
As introduced in Section [Link].2, the following table extends further regarding the SPI features.
Features Description
SPI_CLK = SOURCE_CLK/2n (n ∈ N*)
The default SOURCE_CLK value is 208 MHz.
SCP_SPIM[0-2] support up to 26 MHz.
TX modes(1)
– TX DMA mode(2): The SPI controller automatically fetches
the transmitted data (to be put on the MOSI line) from
memory.
– TX FIFO mode: Data transmitted on the MOSI line is
Two configurable TX/RX modes: TX/RX DMA mode written to FIFO before the transaction starts.
and TX/RX FIFO mode RX modes(3)
– RX DMA mode: The SPI controller automatically stores
the received data (from the MISO line) to memory.
– RX FIFO mode: Data received is stored in the RX FIFO of
the SPI controller. The processor itself must read back the
data.
Configurable chip-select setup time, hold time and
Refer to Figure 3-121.
idle time
Configurable option to control CS_N de-assert
Refer to Figure 3-123.
between byte transfers
TX:
– In the TX DMA mode, data on the MOSI line is prepared
priorly in memory(4), and the SPI controller automatically
reads the data.
– In the TX FIFO mode, writing the SPI_TX_DATA register
means to write 4 bytes to TX FIFO, whose pointer
The depth of the TX and RX FIFO is 32 bytes. automatically moves towards the next 4 bytes.
RX:
– In the RX DMA mode, data on the MISO line is
automatically moved by the SPI controller.
– In the RX FIFO mode, reading from the SPI_RX_DATA
register means to read 4 bytes from the RX FIFO, whose
pointer automatically moves towards the next 4 bytes.
Programmable serial clock high time and low time The high and low time can be set separately. Thus, for a given
baud rate, the serial clock with a wide range of a duty cycle is
generated.
PACKET_LENGTH defines the number of bytes in one packet.
The number of bytes in one packet = PACKET_LENGTH+1.
PACKET_LOOP_CNT defines the number of packets within
Programmable byte length for transmission one transaction. The number of packets in one transaction =
PACKET_LOOP_CNT+1.
Total bytes of one transaction = (PACKET_LENGTH+1) *
(PACKET_LOOP_CNT+1)
Features Description
Achieved by the pause mode operation.
In this mode, the CS_N signal is always active (in other modes,
Unlimited length for transmission using the
normally low) after the transmission. At this time, the SPI
dedicated pause mode
controller is in the PAUSE_IDLE state and ready to receive the
resume command. Refer to Figure 3-122 for the state transition.
There are four communication modes: mode 0/1/2/3 (Figure
3-124).
The modes define the SCLK edge on which the MOSI line
toggles and the master samples to the MISO line. The modes
Supports all clock polarity and phase modes
also define the SCLK steady level: clock/high/low, when the
clock is inactive.
Each mode is formally defined with a pair of parameters
namely “Clock Polarity (CPOL)” and “Clock Phase” (CPHA).
(1) The value of SPI_TX_SRC must be 4-byte aligned.
(2) TX data must always be prepared before a transaction. In the DMA mode, TX_DMA_EN must be set to 1’b1. In the FIFO mode,
software must put data into the TX FIFO through the SPI_TX_DATA register.
(3) The value of SPI_RX_DST must be 4-byte aligned.
(4) For theory of operations, please refer to Section [Link].6.
CS_N
idle time
Data Transmission
CS_N
SCK
(CPOL=0)
SCK Edge
Number 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
SCK
(CPOL=1)
SAMPLE MOSI/MISO
(CPHA=0)
SAMPLE MOSI/MISO
(CPHA=1)
activate
IDLE
! (pause)
BUSY
pause
PAUSE IDLE
resume
CS_N
CS_N
SCK
Table 3-123 presents timing characteristics for the SPIM in the device.
1. Prepare the data in the memory with its start address to be the “source address.”
2. Set the timing and protocol for the SPI transmission (see Figure 3-122 for detailed setup parameters).
3. Fill in the “destination address,” which is the start address to place the received data, and “source address”, which is
the start address to place the data to be transmitted, into the registers SPI_RX_DST and SPI_TX_SRC, respectively.
4. Write 1 to CMD_ACT to start the transfer.
5. Get the data received from the buffer prepared starting from “destination address”.
The device has three USB subsystems with integrated PHYs—one SuperSpeed (SS) USB 3.1 Gen1 DRD and two USB
2.0 Dual-Role-Devices (DRD).
The module contains a pair of U3 Gen1 PHY and U3 Gen1 MAC for SuperSpeed connection, as well as a pair of U2 PHY and
U2 MAC for High-, Full- and Low-Speed connection.
The USB2.0 dual role capability allows the port to support On-The-Go (OTG) host and peripheral functions. When operating
in the USB2.0 host role, the port is controlled by the host controller (xHC), which manages all devices connected through
its root hub ports. Conversely, when operating in the peripheral role, the port is controlled by the device (DEV) controller.
[Link] Features
USB 3.1 SS Gen1 with 5 Gbps TX and 5 Gbps RX (USB Port 1 only)
Embedded USB 3.1 Gen1 PHY with 32-bit @ 125 MHz PIPE interface
U0/U1/U2/U3 states
USB 2.0 Full-Speed (FS) 12 Mbps and High-Speed (HS) 480 Mbps
Embedded USB 2.0 PHY with 16-bit @ 30 MHz UTMI+ interface
Lower Power Management (LPM)
Host role features:
Host controller based on eXtensible Host Controller Interface (xHCI) Revision 1.1
Dedicated DMA channel for USB 3.1 data transfer
Support of all USB compliant data transfer types (Control/Bulk/Interrupt/Isochronous)
Support of connection to USB 2.0/USB 3.0 Hubs
Support of up to 15 devices
Support of up to 64 endpoints
Device (peripheral) role features:
Proprietary application layer device controller
Chip
TXP/TXN
U3 Gen1 EMI
U3 Gen1 PHY DEV Controller
MAC
RXP/RXN
The SSUSB is the designated application for the MediaTek USB host controllers as mentioned in Section [Link]. Each PHY
is equipped with its own MAC for protocol packet management. Figure 3-128 illustrates the architecture of the SSUSB host.
The xHCI controller manages all endpoint and device resources. Dynamic allocation of resources for different ports is
achievable by software, which can also enable or disable each port separately.
[Link].1.1 Features
Hardware supports USB 3.1 SuperSpeed Gen1 with 5 Gb/s TX and 5 Gb/s RX bandwidth.
Hardware supports USB 2.0 with Full-speed 12 Mbps/High-speed 480 Mbps.
Embedded USB 3.1 Gen1PHY with 32-bit 125 MHz PIPE interface
Embedded USB 2.0 PHY with 16-bit/30 MHz UTMI
AHB interface for register access
AXI3 interface for DMA access
Extensible xHCI Revision 1.1 based host controller
Figure 3-129 illustrates the architecture of the USB2 device function. The USB 2.0 PHY and MAC operate independently for
different transmission lines. As only one link can connect to the USB host at a time, they share the same endpoint and
buffer management unit.
The linked-list queue of the USB2 device is inherited from the MediaTek unified USB with similar descriptor definition.
EMI
EP & Buffer Queue
Management Management DMA
Unit Unit
USB2.0 USB2.0 MCU
DP/DM
PHY MAC
[Link].2.1 Features
The suggested programming sequence of TX EPn (e.g., EP1) is shown in the table below.
The suggested programming sequence of RX EPn (e.g.,EP2) is shown in the table below.
There are certain differences between the MediaTek Host Controller (xHC) and the standard xHCI.
The MediaTek xHC does not implement completion codes because some TRB (Transfer Request Block) types are
defined in xHCI specification. A detailed description is in Section [Link].1.1.
The MediaTek xHC proposes a scheduling mechanism for synchronous endpoints to simplify the hardware design. The
mechanism is described in Section [Link].1.2.
Interrupt moderation Interval (IMODI): The standard xHCI interval is 250 ns, while the MediaTek xHC interval is 2 µs.
Only one of the xHCI extended capability codes, “Supported Protocol” (ID code = ’d2), is implemented in the MediaTek
xHC.
Configuration Information Capability (CIC) feature
The following features are not implemented in the MediaTek xHC:
Frame Length Adjustment Register (FLADJ)
The latency tolerance messaging LTV, LTM, and BEL
The BUS_INTERVAL_ADJUSTMENT_MESSAGE notification packet
The following TRB types are not implemented in the MediaTek xHC:
Force event command TRB (TRB Type = 18, optional normative)
Negotiate bandwidth command TRB (TRB Type = 19, optional normative)
Set latency tolerance value command TRB (TRB Type = 20, optional normative)
Get port bandwidth command TRB (TRB Type = 21)
Bandwidth request event TRB (TRB Type = 35)
Doorbell event TRB (TRB Type = 36)
To simplify the hardware design for bandwidth calculation and scheduling on synchronous endpoints, a proprietary
scheduling algorithm is proposed. To implement this algorithm for the MediaTek Host Controller Driver (xHCD), it is
necessary to patch the standard Linux xHCD driver. The patch includes the following two steps:
1. Calculate whether there is enough bandwidth reserved for the endpoint(s) to be added.
2. Determine a set of parameters specifying the scheduling for synchronous endpoint(s) to be added.
Bandwidth Calculation
Due to offloading of bandwidth calculation by the xHCD, the MediaTek xHC is able to process the following xHCI commands
with greater ease:
In addition, the get port bandwidth command TRB is never replaced on the command ring for the MediaTek xHC because
all bandwidth information is directly visible to the xHCD.
Decide the Software Scheduling Parameters
The xHCD implements the proprietary scheduling algorithm to enable easy scheduling of synchronous endpoints by the
xHC. Prior to issuing the configure endpoint TRB, a set of parameters is defined for each device slot and its related
synchronous endpoint. To incorporate these proprietary parameters into the MediaTek xHC, certain reserved fields of the
endpoint context are utilized to store their values.
The extra software scheduling parameters are implemented through the commands specified in the xHCI specification, as
some reserved DWs in the endpoint context are still available. These additional fields are exclusively reserved for
synchronous endpoints, such as isochronous and interrupt endpoints. Table 3-130 shows the modified endpoint context,
with the extra defined fields highlighted in orange, and Table 3-131 lists the definitions.
The relation between the extra defined field parameters and microframes is illustrated in the figure below.
For example: EP5 parameters, mult = 0, maxburst = 6, interval = 4
1. EP5 service interval = 2^(4 - 1) = 8 microfames. EP5 total pkts = (mult + 1) x (maxburst + 1) = 7
2. The parameters of the extra defined fields can be scheduled as the following figure shows.
Figure 3-130 Relation between Extra Defined Fields Parameters and Microframes
The relation between the extra defined field parameters and microframes for split transaction at full-speed/low-speed is
illustrated in the figure below.
For example: Split IN Transaction for FS/LS. If EP internal = 1 (1ms)
The software flow of “xhci_add_endpoint” configuration by a standard xHCI driver is illustrated in Figure 3-132. To add
extra defined field parameters to endpoint context, a sub-flow is patched. This patched sub-flow is marked by red dash line
in Figure 3-133.
The software flow of “xhci_drop_endpoint” configured by a standard xHCI driver is illustrated in Figure 3-134. To drop
software recording extra defined field parameters, a sub-flow is patched. This patched sub-flow is marked by red dash line
in Figure 3-135.
Refer to the Linux standard xHCI kernel driver (version 4.5 or later) in drivers/usb/host/mtk-xhci-sch.c file for more details
about the extra defined field parameters for endpoint scheduling.
Idle mode
TX mode
RX mode
Sequence 3
IDLE
Sequence 1 Sequence 2
TX Mode RX Mode
Upon power-on or reset, EP0 goes into the “IDLE” mode. After receiving a SETUP transaction:
[Link] is set.
[Link] is cleared.
An interrupt is generated to notify software.
The software unloads FIFO and decodes the command which, depending on the type, enables the software to do the
following:
(Sequence 1/IN DATA) W1C [Link] and set [Link].
EP0 goes to TX mode.
(Sequence 2/OUT DATA) W1C [Link].
EP0 goes to RX mode.
(Sequence 3/NO DATA) process command. Then, W1C [Link] and set [Link] (or set
[Link]) simultaneously.
EP0 stays in “IDLE” state.
IDLE
SetupPktRdy Set?
No
(Interrupt)
Yes Return
Decode Command
Return
No
Return
State -> RX Mode
Sequence 3
Interrupt
IN Status
Setup IN Status
(ACK or
(NAK)
STALL)
Command
SW Actions Process
Latency
W1C SetupPktRdy & Set
Unload command DataEnd or SendStall
[Link].3.2 TX Mode
Normal Flow
Software loads data packet (<=EP0CSR.MaxPktSz0) to FIFO0, and sets [Link] to send it to the host.
If [Link] is set, software only needs to set [Link] for the last data packet (a short packet).
After sending data packet to the host, [Link] is cleared and an interrupt is generated to notify software.
Software repeats the previous step until the required amount of data is sent, and set [Link] to leave
DATA phase.
Error Cases
If a SETUP transaction is received in TX mode (DATA phase), [Link] is set and an interrupt is
generated. Software aborts the current command and moves on to decode the new command.
TX Mode
AutoSet &
No Data Length == Yes
MaxPktSz0
Yes
FIFOFull?
No
Yes Yes
Return
Sequence 1
OUT
Interrupt
Interrupt
Interrupt
Interrupt
OUT
Status
Setup IN Data IN Data IN Data Status
(ACK or
(NAK)
STALL)
SW Actions
Set TxPktRdy
Set TxPktRdy Set TxPktRdy Set DataEnd or
Load FIFO
Load FIFO Load FIFO SendStall
W1C SetupPktRdy &
Set DPHTX
Unload command & means registers are set simultaneously
[Link].3.3 RX Mode
Normal flow
After receiving data packet (<=EP0CSR.MaxPktSz0), hardware sets [Link] and generates an interrupt.
Software unloads data packet (<=EP0CSR.MaxPktSz0) from FIFO0 and W1C [Link].
If [Link] is set, [Link] is cleared automatically after data packet is unloaded, unless the
data packet is of a size of 0. Software needs to W1C [Link] under this condition.
Software repeats the previous step until the required amount of data is received or a short packet is received, and
set [Link] to leave the DATA phase.
Error cases
If a SETUP transaction is received in the RX mode (DATA phase), [Link] is set and an interrupt is
generated. Software aborts the current command and moves on to decode the new command.
RX Mode
RxPktRdy
Set? No
(interrupt)
Yes
Read RxCount0
(value = N)
N>0
N=0
Read N bytes from
FIFO0
AutoClear
No Yes
Set?
Yes Yes
Return
Sequence 2
Interrupt
Interrupt
Interrupt
Interrupt
IN Status
IN Status
Setup OUT Data OUT Data OUT Data (ACK or
(NAK)
STALL)
SW Actions
W1C SetupPktRdy W1C RxPktRdy W1C RxPktRdy W1C RxPktRdy Set DataEnd or
SendStall
Unload FIFO Unload FIFO Unload FIFO
Unload command
The Queue Management Unit (QMU) is designed to unload software effort to serve DMA interrupts. By preparing GPD
(USB) and the Buffer Descriptor (BD), software links data buffers and triggers the QMU to send/receive data to the
host/from the device at a time.
Item Description
Must contain a pointer pointing to a data buffer.
BD Capable of linking to another BD.
Capable of extension. Data is placed in memory immediately after this BD.
Must contain a pointer pointing to a data buffer if this GPD (USB) does not link to any BD.
Capable of linking to several BDs.
Capable of extension. Data is placed in memory immediately after this GPD (USB).
Maps to a transfer on the USB. Data buffers are concatenated and transferred on the USB,
data packet by data packet. Each data packet is smaller than Maximum Packet Size (MPS).
GPD (USB) The order data buffers are concatenated.
– GPD (USB) extension
– GPD (USB) data buffer
For each BD in the chain
– BD extension
– BD data buffer
This section provides a brief description of BD and GPD (USB), with a comprehensive descriptor format presented in the
following section for a more thorough understanding.
Figure 3-145 shows the format of TX GPD (USB)/BD. For detailed description, refer to Section [Link].4.4 and [Link].4.5.
Bit B B B B B
Location 31 24 16 8 0 offset
I B B H
NGPDP[35:32] DBBDP[35:32] GPD Check Sum O P D W 0x00
C S P O
Bit B B B B B
Location 31 24 16 8 0 offset
E
NBDP[35:32] DBP[35:32] BD Check Sum O 0x00
L
Figure 3-146 shows the format of RX GPD (USB)/BD. For detailed description, refer to Section [Link].4.4 and [Link].4.5.
Bit B B B B B
Location 31 24 16 8 0 offset
I B B H
Allow Data Buffer Length GPD Check Sum O P D W 0x00
C S P O
NGPDP DBBDP
Transferred Data Length 0x 0 C
[35:32] [35:32]
Bit B B B B B
Location 31 24 16 8 0 offset
E
Allow Data Buffer Length
BD Check Sum O 0x00
(DWORD Aligned )
L
NBDP DBP
Transferred Data Length 0x 0 C
[35:32] [35:32]
Field Description
If TXQ_CS_EN / RXQ_CS_EN bit is set, an interrupt is issued when checksum
validation fails.
Q_CS16B_EN decides the way that checksum value is calculated.
– 0: Over the first 12 bytes of this BD.
– 1: Over the first 16 bytes of this BD.
(RX only) Allow Data Buffer
Indicates the length of the assigned data buffer.
Length
Next BD Pointer Point to the next BD. Refer to EOL description.
Data Buffer Point to data buffer
(TX only) Data Buffer Length Indicates the length of the assigned data buffer.
After receiving a transfer, the length of data transferred to the data buffer is written
(RX only) Transferred Data Length
to this field.
0: Not to use BD extension feature.
(TX only) BD Extension Length 1-255: Specifies the BD extension buffer size. BD extension buffer is placed in
memory immediately after this BD.
TX Mode
Async Stop Queue request
Software Software
Stop Queue TXQ Initialization
Attach GPD
Return Restart
(TXQCSRn.TXQ_START=1)
Hardware
TX Error(s) Interrupt
Execute GPD
Tx Empty Interrupt
Async Request
No
Return
During the operation of TXQ, certain scenarios may arise that require the software to halt the current transfer. In such
cases, there are two notification methods employed to inform the host.
The first method involves explicitly notifying the host by STALLing EP.
The second method involves implicitly notifying the host by sending a short packet to terminate the current transfer.
Regardless of the chosen notification method, it is essential for the host to perform error handling, and the device side
must initiate the TXQ restart procedure based on the specific application requirements.
Start
Set [Link] to
notify host
Set TXQCSRn.TXQ_STOP to
stop TXQ
TXQCSRn.
No
TXQ_ACTIVE=0?
Yes
Use
EP_RST.EP_OUT_RST[n]
(EPCTRL) to reset EP
Return
In this scenario, the host receives a ZLP, leading to the termination of the IN transfer. As EPOUT_RST is not utilized, data is
fetched before the TXQ is halted. Upon the resumption of the TXQ, the data may be transmitted to the host as required.
Start
TXQCSRn.
No
TXQ_ACTIVE=0?
Yes
Set [Link]=0
[Link]? Yes
Set [Link]=1
1st Set
[Link]
Yes
= 1 after Stop
Queue
No
Set [Link]=1
Restart TXQ by
TXQCSRn.TXQ_START
Return
In this scenario, the device software must ensure that the short packet aligns with the description specified in GPD (USB)
to allow the host to receive the short packet and terminate the IN transfer. As EPOUT_RST is not employed, the data is
fetched before the TXQ is halted. Upon the resumption of the TXQ, the data may be transmitted to the host as required.
Start
TXQCSRn.
No
TXQ_ACTIVE=0?
Yes
[Link]? Yes
Set [Link]=0
Set [Link]=1
Set [Link]=1
Return
Start
Set TXQCSRn.TXQ_STOP to
stop TXQ
Wait TXQCSR N.
No
TXQ_ACTIVE = 0?
Yes
Use
EP_RST.EP_OUT_RST[n]
(EPCTRL) to reset EP
Return
Follow GPD
Get GPD
NextGPDPtr Any Bus Transaction Errors
Update GPD
HWO=0 &&
Execute IOC
No GPD HWO=1? Software
(*2)
TX Error Handling
Yes
Return Comments:
No (*1): When BDP = 0, length error interrupt asserts if GPD ExtLen
= 0 & BufLen = 0
Yes GPD BPS=1? (*2): Interrupt asserts after HWO is cleared
(*3): length error interrupt asserts if BD ExtLen = 0 & BufLen = 0
(*D): Data will be concatenated, split into data packets (size <=
TxMaxPktSz), and transferred
Yes
BD checksum &
No
GPD BD=1? length correct? (*3)
Software
No Yes
TX Error Handling
BD ExtLen!=0? Yes
Yes GPD BufLen=0?
Yes BD EOL=1? No
Follow BD NextBDPtr
Note that if a "bus transaction error" occurs, the TXQn endpoint error interrupt is asserted. The bus transaction error shall
not occur in the normal case.
RX Mode
Async Stop Queue request
Software Software
Stop Queue RXQ Initialization
Attach GPD/BD
Return Restart
(RXQCSRn.RXQ_START=1)
Hardware
RX Error(s) Interrupt
Execute GPD
Rx Empty Interrupt
Async Request
No
Return
During the operation of RXQ, certain scenarios may arise that require the software to halt the current transfer. In such
cases, there are two notification methods employed to inform the host.
The first method involves explicitly notifying the host by STALLing EP.
The second method involves silently dropping packets.
In the first case, the host must perform error handling. Upon the resumption of the RXQ, the device side initiates the
restart procedures based on the specific application requirements.
Start
Set [Link] to
notify host
Set RXQCSRn.RXQ_STOP to
stop RXQ
RXQCSRn.
No
RXQ_ACTIVE=0?
Yes
Use EP_RST.EP_IN_RST[n]
(EPCTRL) to reset EP
Return
The device may experience reception errors due to the interruption and resumption of RXQ while the host is engaged in an
OUT transfer. During this process, some packets may be dropped, thereby corrupting the received data. To mitigate this
issue, the device must perform error handling procedures.
Start
Set RXQCSR.RXQ_STOP to
stop RXQ
RXQCSRn.
No
RXQ_ACTIVE=0?
Yes
[Link]
Yes
Y?
W1C [Link]
Restart RXQ by
RXQCSRn.RXQ_START
Return
Start
Set RXQCSRn.RXQ_STOP to
stop RXQ
Wait RXQCSR N.
No
RXQ_ACTIVE = 0?
Yes
Use EP_RST.EP_IN_RST[n]
(EPCTRL) to reset EP
Return
Follow GPD
Get GPD
NextGPDPtr Any Bus Transaction Errors
Update GPD
HWO=0 &&
Execute IOC Software
(*1) No GPD HWO=1? RX Error Handling
Return Comments:
Yes (*1): Interrupt asserts after HWO is cleared
No (*2): BD Transfer Length <= BD AllowLen
(*3): Update GPD Transfer Length with 0, if Total Transfer Length
Yes GPD BPS=1? > 65535
(*D): Data receiving is terminated if
I. Short packet is received, or
II. Received Total Data Length / Data Length reaches GPD / BD
No AllowLen
GPD checksum
Follow GPD BDPtr
correct?
Yes
Yes
Software
No RX Error Handling
BD checksum No
Yes GPD AllowLen=0? correct & BD
AllowLen!=0?
Data length > GPD AllowLen
Software &
RX Error Handling No Yes BD EOL=1
Total Data length > Transfer GPD AllowLen Transfer BD AllowLen Bytes
GPD AllowLen Bytes of Data to GPD BufPtr of Data to BD BufPtr
(*D) (*D)
Follow BD
NextBDPtr
Total Data length=GPD AllowLen Data length=BD AllowLen
or or
Short Packet Received Short Packet Received
Update Total
Transfer Length to
GPD Update Transfer
Short Packet Data length=
(*3) Length to BD
Received BD AllowLen
(*2)
Yes BD EOL=1? No
Note that if a "bus transaction error" occurs, the RXQn endpoint error interrupt is asserted. The bus transaction error shall
not occur in the normal case.
Condition Description
For the USB device, each EP has its own independent interrupt status bit, in order
Endpoint TX/RX INT (0x80)
to indicate which EP interrupt occurs.
The USB device does the transfer by QMU block. At QMU, software needs to fill
GPD (USB) or BD to queue transfer.
TXQ Err INT (0x780,0x790):
TXQ Err INT (0x780,0x790), TX Queue GPD (USB)/BD Checksum Error
RXQ Err INT(0x7c0,0x7d0) TX Queue GPD (USB) Data Buffer Length Error
RXQ Err INT (0x7c0,0x7d0):
RX Queue Generic Packet Descriptor Checksum Error
RX Queue Generic Packet Descriptor Data Buffer Length Error
2. ISR (USB)
Only ISR (USB) in “leaf” node can be W1C; ISR (USB) in “non-leaf” node is RU.
“Leaf” node ISR (USB) should be W1C to clear ISR (USB) in “non-leaf” node after the corresponding events are served.
The IER can be set/cleared by writing 1 to Interrupt Enable Set Register (IESER)/Interrupt Enable Clear Register (IECR),
except for MAC2_INTR/MAC3_INTR/EP_CTRL_INTR.
If the low level IER is not set, when an event happens, it is reflected in the low level ISR (USB), but not the high level ISR
(USB) (as shown in the left side of the figure below).
If the low level IER is set, when an event happens, it is reflected in the low level ISR (USB) and high level ISR (USB) (As
shown in the right side of the figure below)
Interrupt Behavior
A queue does not stop when
A queue is completed when GPD is done with IOC = 1.
TX A queue stops when
A queue is empty.
There is a queue, checksum, or length error.
A queue does not stop when
A queue is completed when GPD is done with IOC = 1.
There is a queue or ZLP error.
RX
A queue stops when
A queue is empty.
There is a queue, checksum, or length error.
The figure below depicts the related status/mask/mask set/mask clear registers for each group.
31 0
0x700
QISAR0
(RU/W1C) Bitwise QMU Group 0
0x704 AND
QIER0
(RO)
0x708 W1S
0x70C W1C
31 0
0x710
QISAR1
(RU/W1C) Bitwise QMU Group 1
0x714 AND
QIER1
(RO)
0x718 W1S
0x71C W1C
31 0
0x740
QEMIR
(RU/W1C) Bitwise QMU Group 2
0x744 AND
QEMIER
(RO)
0x748 W1S
0x74C W1C
QMU Group 3
31 0
0x780
TQERRIR0
(RU/W1C) Bitwise
0x784 AND
TQERRIER0
(RO)
0x788 W1S
0x78C W1C
QMU Group 4
31 0 31 0
0x7C0 0x7D0
RQERRIR0 RQERRIR1
(RU/W1C) (RU/W1C) Bitwise
0x7C4 0x7D4 AND
RQERRIER0 REQERRIER1
(RO) (RO)
In order to conserve power, USB provides registers for software to power down the unnecessary hardware parts.
lpm_mode = 0 and lpm_hrwe = 0: Normal LPM mode, enable hardware remote wakeup.
SSUSB_DEV.MAC_U2_EN_CTRL [20:16] = 0x1f: Enable LPM to accept check and accept LPM request when all QMU/EP
are inactive.
Therefore, the device can resume the bus as long as EP FIFO is ready, and the flow control assures that the EP has data to
transfer or accept.
For periodic (isochronous/interrupt) EPs, the host can easily predict the point to send/receive data. Therefore, it is better
for the host to determine the time point to resume the bus and process transfers. It is suggested to disable
L1_EXIT_EP_OUT_CHK and L1_EXIT_EP_IN_CHK for periodic EPs.
USB 2.0
Upon receiving bus reset
USB 3.1 Gen1
When entering the “Polling” state
When receiving a warm Reset, and then entering the “Polling” state.
When receiving a hot reset.
[Link].2 EP Reset
The EPs are reset by hardware when the following conditions happen.
USB 2.0
Upon receiving bus reset
Reset
Data toggle
FIFO pointer (FIFO address register is not touched)
EP flow control status
USB 3.1 Gen1
When entering the “Polling” state
When receiving a warm reset, and then entering the “Polling” state.
When receiving a hot reset.
Reset
EP sequence number
EP flow control status
EP packet pending status
EP packet counter
EP active status
FIFO pointer (FIFO address register is not touched.)
The following commands may affect the EP application and its configuration.
SET_CONFIGURATION
SET_INTERFACE
CLEAR_FEATURE ENDPOINT_HALT
[Link] EPn MCU Mode Top Programming Outline (BULK Interrupt Mode Only)
[Link] defines the maximum packet size (in bytes). Software can load data into FIFOn at a time.
IN transfer flow
a. Software checks whether FIFOn is full. If not, software loads a data packet to FIFOn, and sets [Link].
b. After a data packet is sent to the host, an interrupt is generated to notify software to repeat the operation until all
data is sent to the host.
TX Mode
FIFOFull? Yes
No
No
SW Set TxPktRdy
No
Return
[Link] defines the maximum packet size (in bytes). Software can load data from FIFOn at a time.
OUT transfer flow:
1. [Link] is set and an interrupt is generated to notify software.
2. Software reads RXnCSR3.EP_RX_COUNT, unloads RXnCSR3.EP_RX_COUNT bytes from FIFOn and W1C
[Link].
3. Software repeats operation until there is no more data.
RX Mode
RxPktRdy Set?
No
(Interrupt)
Yes
Read EP_RX_COUNT
(value=M)
M>0
SW W1C RxPktRdy
Set SendStall
No
Return
[Link] References
Protocol
Universal Serial Bus 3.1 Specification, Revision 1.0, July 26, 2013
Universal Serial Bus Specification, Revision 2.0, April 27, 2000
Extensible Host Controller Interface (xHCI) for Universal Serial Bus, Revision 1.1,12/20/2013
PHY
PHY Interface for the PCI Express, SATA, and USB 3.1 Architectures, Version 4.3
UTMI+ Specification, Revision 1.0, February 25th, 2004
Bus
AMBA AXI and ACE Protocol Specification AXI3, AXI4, and AXI4-Lite ACE and ACE-Lite, 28 October 2011
The PHY is responsible for managing the low-level protocol and signaling functions. This includes data serialization and de-
serialization, 8b/10b encoding/decoding (5 Gbps), analog buffers, elastic buffers and receiver detection.
The controller interfaces with the PHY via a PIPE (SuperSpeedPlus) interface. The PIPE supports 32 bits * 125 MHz (5 Gbps).
[Link] Features
USB3.1 MAC
PIPE Interface
Block Align
Symbol Lock 128b/132b Decoder
Parallel to
Serial Serial to
Parallel
CDR
RX Receiver
TX Driver
and Equalizer
Figure 3-169 displays the USB3.1 PHY block diagram, which comprises two main sub-modules: the Physical Layer Analog
Block (PHYA) and the Physical Layer Digital Block (PHYD).
For the FT/debug mode, the I2C interfaces (sif_scl, sif_sdin, sif_sdout, and sif_sden) of the PEXTP_PHY_TOP connection
should be verified and controlled through the pin. In addition, in the FT/debug mode, the Schmitt trigger should be
enabled at the pads of I2C SDA/SCL. Refer to Figure 3-170 for the I2C signal connection.
sif_sdout
sif_sden
Table 3-135 USB 3.1 Spread Spectrum Clock (SSC) Electrical Characteristics
Description Min. Typ. Max. Unit
SSC modulation rate 30 - 33 kHz
SSC deviation +0/-4000 (Gen 1) - +0/-5000(Gen 1) ppm
Note:
Refer to USB 3.1 Specification Revision 1.1, Section 6.5.4, Table 6-17.
Table 3-136 USB 3.1 Gen1 Transmitter and Receiver Electrical Characteristics
Description Min. Typ. Max. Unit
Transmitter Parameters
Data rate 10 GT/s
Unit interval* 199.94 (Gen 1) - 200.06 (Gen 1) ps
TX differential peak to peak voltage swing 0.8 1 1.2 V
TX eye width 0.625 (Gen 1) - - UI
[Link].3 I2C
[Link].4 AHB
[Link] Overview
Ethernet Network Interface Controller (ENIC) enables a host to transmit and receive data over Ethernet in compliance with
the IEEE 802.3-2015.
[Link] Features
The device features one ENIC, supporting the following key features:
Standard compliance:
MII/RMII/RGMII
IEEE 802.3-2015 for Ethernet MAC
IEEE 1588-2008 for precision networked clock synchronization
IEEE 802.1AS-2011 and 802.1-Qav-2009 for Audio Video (AV) traffic
IEEE 802.1Qbv-2015, 802.1Qbu-2016, and 802.1AS-Rev D5.0 for Time-Sensitive Networking (TSN) traffic
IEEE 802.3az-2010 for Energy Efficient Ethernet (EEE)
MAC features:
10/100/1000 Mbps speed mode
Half-duplex operation:
This section provides a block diagram to illustrate the main components and functions of the module. An AXI Master
interface is connected to all DMA channels. The DMA arbiter provides help in arbitration of all the paths (Transmit and
Receive) in all channels. Each channel has a separate set of Control and Status registers (CSR) for managing the Transmit
and Receive functions, descriptor handling, and interrupt handling.
[Link].1 Functions of IP
PHY Interface
ETHER_QOS supports the following PHY interfaces:
Reduced GMII (RGMII)
Media Independent Interface (MII)
Reduced MII (RMII)
DMA
The DMA has independent TX and RX engines, and a CSR space. The TX engine transfers data from the system memory
to the device port (MTL), whereas the RX engine transfers data from the device port to the system memory. The DMA
engine uses descriptors to efficiently move data from source to destination with minimal application CPU intervention.
The DMA is designed for packet-oriented data transfers such as packets in Ethernet. The DMA controller can be
programmed to interrupt the application CPU for situations such as Packet Transmit and Receive Transfer completion,
and other normal or error conditions.
The DMA and the application communicate through the following two data structures:
The DMA supports up to 4 TX and 4 RX Descriptor lists (or DMA channels). The base address of each list is written to
the respective TX Descriptor List Address register and RX Descriptor List Address register. The descriptor list is forward
linked and the next descriptor is always considered at a fixed offset to the current one. The offset is controlled by the
DSL field of DMA_Ch[n]_Control register. The number of descriptors in the list is programmed in the respective TX (or
RX) Descriptor Ring Length register. Once the DMA processes the last descriptor in the list, it automatically jumps back
to the descriptor in the List Address register to create a descriptor ring. Note that the 4 TX and 4 RX queues can be
controlled by multiple CPUs. The application should set access right protection in APMIXED.
The descriptor lists reside in the physical memory address space of the application. Each descriptor can point to a
maximum of two buffers in the system memory. This enables two buffers to be used, physically addressed, rather than
contiguous buffers in memory.
A data buffer resides in the application physical memory space and consists of an entire packet or part of a packet but
cannot exceed a single packet. Buffers only contain data. Buffer status is maintained in the descriptor. Data chaining
refers to packets that span multiple data buffers. However, a single descriptor cannot span multiple packets. The DMA
skips to the data buffer of the next packet when EOP is detected.
MAC
The MAC supports RGMII/MII/RMII towards the PHY chip. The PHY interface can be selected only once after reset.
The IEEE 802.3 standard defines the Ethernet frame format as follows: An Ethernet frame has a minimum length of 64
bytes and a maximum length of 1518 bytes, excluding the preamble and the SFD bytes. An Ethernet frame consists of the
following fields:
Optional MAC frames can be VLAN tagged with an additional 4-bytes field (VLAN tag and VLAM info) inserted between the
MAC Source Address and the Length/Type Field. VLAN tagging is defined by the IEEE P802.1q specification.
The IEEE 802.3 defined pause frame has the following format:
There is no Payload Length field found within a pause frame and a pause frame is always padded with 42 bytes (0x00).
If a pause frame with a pause value greater than zero (XOFF Condition) is received, the MAC stops transmitting data as
soon as the current frame transfer is completed. The MAC stops transmitting data for the value defined in pause quanta.
One pause quanta fraction refers to 512-bit times.
If a pause frame with a pause value of zero (XON Condition) is received, the transmitter is allowed to send data
immediately.
The Core implements an MII for 10/100 Mbps, an RMII for 10/100 Mbps, and an RGMII for 10/100/1000 Mbps mode of
operation.
On Transmit, all data transfers are synchronous to tx_clk rising edge. The MII data enable signal txen_o is asserted to
indicate the start of a new frame and remains asserted until the last byte of the frame is present on txd_o(3:0) bus.
Between frames, txen_o remains de-asserted.
If a frame experiences internal errors the frame is subsequently transmitted with the MII mii_txer error signal for one
clock cycle at any time during the packet transfer.
On receive, all signals are sampled on the rx_clk rising edge. The MII data enable signal rxdv_i is asserted by the
PHY to indicate the start of a new frame and remains asserted until the last byte of the frame is present on rxd_i(3:0)
bus. Between frames, rxdv_i remains de-asserted.
If the PHY detects an error on the frame received from the line, the PHY asserts the MII error signal, rxer_i, for at least
one clock cycle at any time during the packet transfer.
On Transmit for 1000M, all data transfers are synchronous to tx_clk rising edge or tx_clk falling edge. The GMII data
enable signal txen_o is asserted to indicate the start of a new frame and remains asserted until the last byte of the
frame is present on txd_o(3:0) bus. Between frames, txen_o remains de-asserted.
If a frame experiences internal errors, the frame is subsequently transmitted with txen_o de-asserting synchronous to
tx_clk rising edge or tx_clk falling edge at any time during the packet transfer.
On receive for 1000M, all signals are sampled on rx_clk rising edge or rx_clk falling edge. The RGMII data enable
signal rxdv_i is asserted by the PHY to indicate the start of a new frame and remains asserted until the last byte of the
frame is present on rxd_i(3:0) bus. Between frames, rxdv_i remains de-asserted.
If the PHY detects an error on the frame received from the line, the PHY asserts the RGMII error signal, rxdv_i, for at
least half clock cycle at any time during the packet transfer.
On Transmit for 10/100M, all data transfers are synchronous to tx_clk rising edge. The GMII data enable signal
txen_o is asserted to indicate the start of a new frame and remains asserted until the last byte of the frame is present
on txd_o(3:0) bus. Between frames, txen_o remains de-asserted. Note that the frequency of tx_clk is 25M in 100M
mode and 2.5M in 10M mode.
If a frame experiences internal errors, the frame is subsequently transmitted with txen_o de-asserting synchronous to
tx_clk rising edge or tx_clk falling edge at any time during the packet transfer.
On receive for 10/100M, all signals are sampled on rx_clk rising edge. The RGMII data enable signal rxdv_i is
asserted by the PHY to indicate the start of a new frame and remains asserted until the last byte of the frame is present on
rxd_i(3:0) bus. Between frames, rxdv_i remains de-asserted. Note that the frequency of rx_clk is 25M in 100M
mode and 2.5M in 10M mode.
If the PHY detects an error on the frame received from the line, the PHY asserts the RGMII error signal, rxdv_i, for at
least half clock cycle at any time during the packet transfer.
The RMII specification reduces the data interfaces from 4-bit (nibble) data to 2-bit (di-bit) data. In addition, control is
reduced to 3 signals and one clock. Thus, the total signal connection is reduced to 8 pins.
The following figure shows the RMII mode connection between a MAC and an RMII Ethernet Transceiver.
TX signals:
TX_EN indicates that the MAC is presenting di-bits on TXD[1:0] for transmission. TX_EN shall be asserted
synchronously with the first nibble of the preamble and shall remain asserted while all di-bits to be transmitted are
presented. The MAC should assert TX_EN negated prior to the first REF_CLK rising edge following the final di-bit of a
frame.
TXD[1:0] shall transition synchronously with respect to REF_CLK. When TX_EN is asserted, TXD[1:0] are accepted for
transmission by the PHY.
In 10Mbps operation, as the REF_CLK frequency is 10 times the data rate in 10Mb/s mode, the value on TXD[1:0] must
be stable for 10 clocks, allowing the PHY to sample every 10th cycle.
RX signals:
CRS_DV shall be asserted by the PHY when the receive medium is non-idle. CRS_DV is asserted asynchronously on
detection of carrier due to the criteria relevant to the operating mode.
The data on RXD[1:0] is considered valid once CRS_DV is asserted. However, since the assertion of CRS_DV is
asynchronous relative to REF_CLK, the data on RXD[1:0] shall be “00” until proper receive signal decoding takes place.
As the REF_CLK frequency is 10 times the data rate in 10 Mbps mode, the value on RXD[1:0] may be sampled every 10th
cycle by the MAC.
1. Preamble Processing
MAC Core checks for the start frame delimiter (SFD) byte. Before the SFD, a 0- to 7-byte preamble is acceptable. The
following shows cases of no preamble and odd preamble.
0 1 2 3 4 5 6 7 8 9 10 11
RXCLK
RXDV
RXD 5 5 5 5 D DA DA DA DA
odd preamble
Figure 3-189 Odd Preamble Case
Control and VLAN frames (Frame Length/Type field 0x8808 and 0x8100 respectively) are processed by the Core as
described in the two following sections.
The NIC supports 802.1q tag-based VLAN ingress check, and it can support up to 4 VLANs, set in registers, where
these VLAN IDs can be any in 4K VLAN space. Internally, the controller uses 4 bits of "My VLAN ID Control Register" to
enable VLAN ingress check for each pre-defined VLAN ID. When at least one of the pre-defined VLAN ID is enabled,
RX MAC will compare the pre-defined VLAN ID with the tagged VID of the received packet. If one of them is matched,
the packet will be received; otherwise, it will be dropped, and the relevant MIB counter will be increased by 1
accordingly.
Please note that VLAN ingress check has no effect on non-VALN tagged packets. When a received packet is VLAN-
tagged, the tag can be stripped from the packet or retained with the packet. No matter VLAN tag is stripped or not,
the VLAN tag information will be stamped at RX Descriptor.
4. CRC
The CRC-32 field is always checked in the received side. The CRC polynomial, as specified in the 802.3 Standard, is:
FCS(X) = X 32 +X 26 +X 23 +X 22 +X 16 +X 12 +X 11 +X 10 +X 8 +X 7 +X 5 +X 4 +X 2 +X 1 +1
The 32 bits of the CRC value are placed in the FCS field so that the X31 term is the right-most bit of the first octet.
The CRC bits are thus received in the following order: X31, X30,..., X1, X0.
If a CRC-32 error is detected, the frame is marked invalid and the frame status bit 1 indicating a CRC error is set to
“1”.
5. Frame Padding
In receive, the MAC does not remove the padding octets even if the Payload length is less than 46 bytes (42 bytes for
VLAN tagged frames)
6. Frame Truncation
Since NIC does not do length field checking, so that function of frame truncation is not implemented.
7. Hash Table
A 256-bit Hash table is implemented for multicast and unicast addresses filter function. It operates as follows.
First, on receiving a multicast MAC address frame, it calculates a 8-bit Hash Value from destination MAC address of
the frame.
Next, it compares the calculated Hash Value with the SelectBit_n(n = 0 to 255) references of the MAC Address Hash
Filter Table.
The Hash Value results are aggregated form CRC32 calculation from when CRC32 is used in the following generator
polynomial to degenerate the destination MAC address (48 bits).
Generator Polynomial: = x32+ x26+ x 23+ x22+ x16+ x12+ x11+ x10+ x8+ x7+ x5+ x4+ x2+ x1+ 1
The following shows a 256-bit hash table and the process of hash value generation.
The magic packet is a broadcast frame containing anywhere within its payload 6 bytes of all 255 (FF FF FF FF FF FF in
hexadecimal), followed by sixteen repetitions of the target computer's 48-bit MAC address, for a total of 102 bytes.
When Wake-on-LAN is enabled, TX MAC powers down and RX MAC only scans Magic Packet and does not forward
any packet to the system memory. After detecting the Magic Packet, MAC asserts an WOL interrupt to the CPU and
wakes up the CPU accordingly.
Ethernet Frame transmission starts when the Transmit FIFO holds enough data. Once a transfer has started, the transmit
engine performs the following tasks:
Send Preamble
Send SFD
Send Payload
Send Padding
(Option to add padding by MAC)
Send CRC
(Option to replace CRC by MAC)
Table 3-138 and Figure 3-194 present timing characteristics for the ENIC MII in the device.
Table 3-139 and Figure 3-195 ENIC RMII Timing Diagram present timing characteristics for the ENIC RMII in the device.
Table 3-140 and Figure 3-196 ENIC RGMII Timing Diagram present timing characteristics for the ENIC RGMII in the device.
Table 3-141 and Figure 3-197 present timing characteristics for the ENIC MDIO in the device.
MDIO4 td_MDO_ MAC Delay time, MDIO output (MAC to PHY) 4.804 11.479 ns
Initializing DMA
Complete the following steps to initialize the DMA:
1. Provide a software reset. This resets all of the MAC internal registers and logic. (bit 0 of DMA_Mode).
2. Wait for the completion of the reset process (poll bit 0 of the DMA_Mode, which is only cleared after the reset
operation is completed).
3. Program the following fields to initialize the DMA_SysBus_Mode Register:
a. AAL
b. Fixed burst or undefined burst
c. Burst mode values in the case of the AHB interface, OSR_LMT in the case of the AXI bus interface.
d. If fixed length value is enabled, select the maximum burst length possible on the AXI bus (bits [7:1])
4. Create a descriptor list for TX and RX. In addition, ensure that the RX descriptors are owned by DMA (set bit 31 of
descriptor TDES3/RDES3).
5. Program the TX and RX Ring length registers (DMA_CH(#i)_TxDesc_Ring_Length (for i = 0; i <=
DWC_EQOS_NUM_DMA_TX_CH-1) and DMA_CH(#i)_RxDesc_Ring_Length (for i = 0; i <=
DWC_EQOS_NUM_DMA_RX_CH-1)). The ring length must be programmed to at least 4.
6. Initialize RX and TX descriptor list addresses with the base address of the TX and RX descriptor
(DMA_CH(#i)_TxDesc_List_Address (for i = 0; i <= DWC_EQOS_NUM_DMA_TX_CH-1),
DMA_CH(#i)_RxDesc_List_Address (for i = 0; i <= DWC_EQOS_NUM_DMA_RX_CH-1)). Also, program the TX and
RX tail pointer registers indicating to the DMA about the available descriptors (DMA_CH(#i)_TxDesc_Tail_Pointer
(for i = 0; i <= DWC_EQOS_NUM_DMA_TX_CH-1) and DMA_CH(#i)_RxDesc_Tail_Pointer (for i = 0; i <=
DWC_EQOS_NUM_DMA_RX_CH-1)).
7. Program the settings of the following registers for the parameters like maximum burst-length (PBL) initiated by
DMA, descriptor skip lengths, OSP in the case of TxDMA, RBSZ in the case of RxDMA, and so on:
DMA_CH(#i)_Control (for i = 0; i <= DWC_EQOS_NUM_DMA_TX_CH-1)
DMA_CH(#i)_TX_Control (for i = 0; i <= DWC_EQOS_NUM_DMA_TX_CH-1)
DMA_CH(#i)_RX_Control (for i = 0; i <= DWC_EQOS_NUM_DMA_RX_CH-1)
8. Enable the interrupts by programming the DMA_CH(#i)_Interrupt_Enable (for i = 0; i <=
DWC_EQOS_NUM_DMA_TX_CH-1) register.
9. Start the RX and TX DMAs by setting SR (bit 0) of the DMA_CH(#i)_RX_Control (for i = 0; i <=
DWC_EQOS_NUM_DMA_RX_CH-1) and ST (bit 0) of the DMA_CH(#i)_TX_Control (for i = 0; i <=
DWC_EQOS_NUM_DMA_TX_CH-1) register to 10. Repeat steps 4 to 9 for all the TX DMA and RX DMA selected
channels in the hardware.
10. Repeat steps 4 to 9 for all the TX DMA and RX DMA channels selected in the hardware.
1. Program the TX Scheduling (SCHALG) and Receive Arbitration Algorithm (RAA) fields in MTL_Operation_Mode to
initialize the MTL operation in the case of multiple TX and RX queues.
2. Program the RX Queue to DMA mapping in MTL_RxQ_DMA_Map0 and MTL_RxQ_DMA_Map1 registers.
3. Program the following fields to initialize the mode of operation in the MTL_TxQ0_Operation_Mode register
a. Transmit Store And Forward (TSF) or Transmit Threshold Control (TTC) in the case of threshold mode
b. Transmit Queue Enable (TXQEN) to value 2‘b10 to enable Transmit Queue0
Initializing MAC
The following MAC initialization operations can be performed after DMA initialization. If the MAC initialization is
completed before the DMA is configured, enable the MAC RX (last step in the following sequence) only after the DMA
is active. Otherwise, received frames will fill in the RX FIFO and overflow.
1. Provide the MAC address registers: MAC_Address0_High and MAC_Address0_Low. If more than one MAC address
is enabled in your configuration (during configuration in the coreConsultant), program the MAC addresses
appropriately.
2. Program the following fields to set the appropriate filters for the incoming frames in the MAC_Packet_Filter
register:
a. Receive All
b. Promiscuous mode
c. Hash or Perfect Filter
d. Unicast, multicast, broadcast, and control frames filter settings
3. Program the following fields for proper flow control in the MAC_Q0_Tx_Flow_Ctrl register:
a. Pause time and other Pause frame control bits
b. Transmit Flow control bits
c. Flow Control Busy
4. Program the MAC_Interrupt_Enable register as required, and if applicable, for your configuration.
5. Program the appropriate fields in the MAC_Configuration register, for example, Inter-packet gap, while
transmission and jabber are disabled.
6. Set bits 0 and 1 in MAC_Configuration registers to start the MAC TX and RX.
1. For normal TX and RX interrupts, read the interrupt status. Then, poll the descriptors, reading the status of the
descriptor owned by the Host (either TX or RX).
2. Set appropriate values for the descriptors, ensuring that TX and RX descriptors are owned by the DMA to resume
the transmission and reception of data.
3. If the descriptors are not owned by the DMA (or no descriptor is available), the DMA goes into the SUSPEND state.
The transmission or reception can be resumed by freeing the descriptors and writing the descriptor tail pointer to
TX/RX tail pointer register (DMA_CH[n]_TxDesc_Tail_Pointer and DMA_CH[n]_RxDesc_Tail_Pointer).
4. The values of the current host TX or RX descriptor address pointer can be read for the debugging process
(DMA_CH[n]_Current_App_TxDesc and DMA_CH[n]_Current_App_RxDesc).
5. The values of the current host transmit buffer address pointer and receive buffer address pointer can be read for
the debugging process (Register DMA_CH[n]_Current_App_TxBuffer and DMA_CH[n]_Current_App_RxBuffer).
1. Disable the TX DMA (if applicable) by clearing Bit 0 (ST) of DMA_CH(#i)_TX_Control (for i = 0; i <=
DWC_EQOS_NUM_DMA_TX_CH-1) Register.
2. Wait for all the previous frame transmissions to complete. Check this by reading the appropriate bits of
MTL_TxQ0_Debug Register (TRCSTS is not 01 and TXQSTS=0).
3. Disable the MAC TX and MAC RX by clearing Bit (RE) and Bit 1 (TE) of the MAC_Configuration Register.
4. Disable the RX DMA (if applicable) after making sure that the data in the RX FIFO is transferred to the system
memory (by reading the appropriate bits of MTL_TxQ0_Debug Register, PRXQ=0 and RXQSTS=00).
5. Make sure that both TX Queue and RX Queue are empty (TXQSTS is 0 in MTL_TxQ0_Debug Register and RXQSTS is
0 in MTL_RxQ0_Debug Register).
6. To restart the operation, first start the DMAs, and then enable the MAC TX and RX.
1. Program the TX queue size in the TQS field of MTL_TxQ[n]_Operation_Mode register. The size of the queue is
determined based on the value programmed in TQS field. In the Transmit operation, the number of channels is
equal to the number of the queues. For this reason, the Channel to Queue mapping is fixed.
2. For a queue to be used, the queue needs to be enabled in TXQEN in the corresponding
MTL_TxQ[n]_Operation_Mode Register. In DMA configurations, ST bit of DMA_CH[n]_Tx_Control Register and the
corresponding TXQEN in MTL_TxQ[n]_Operation Mode Register need to be enabled.
3. The scheduling method needs to be programmed in SCHALG of MTL_Operation_Mode register.
4. Program the MTL_TxQ[n]_Quantum_Weight for generic or DCB queue as per the selected algorithm. In case of
CBS algorithm in AVB queues, the MTL_TxQ[n]_ETS_Control, MTL_TxQ[n]_SendSlopeCredit, MTL_TxQ[n]_HiCredit
and MTL_TxQ[n]_LoCredit registers also need to be programmed as required.
5. If DCB is enabled and PFC function is required, program MAC_TxQ_Prty_Map0 Register to assign a fixed priority to
the queue. This assigned priority is used to determine whether the corresponding queue should stop transmitting
packet based on the received PFC packet.
Receive
1. Program the Receive queue size in the RQS field of MTL_RxQ[n]_Operation_Mode Register. Based on the value
programmed in RQS field, the size of the queue is determined.
2. Enable the Receive Queues 0 to 7 in the fields RXQ0EN to RXQ7EN in MAC_RxQ_Ctrl0 Register for AV or DCB. In
DMA configurations, SR bit of statically or dynamically mapped DMA_CH[n]_Rx_Control Register and
corresponding RXQ[n]_EN in MAC_RxQ_Ctrl0 Register needs to be enabled.
3. The MAC routes the RX packets to the RX Queues based on following packet types:
a. AV PTP Packets: Based on the programming of AVPTPQ in MAC_RxQ_Ctrl1 Register.
b. AV Untagged Control packets: Based on the programming of AVCPQ in MAC_RxQ_Ctrl1 Register.
c. Data Center Bridging (DCB) related Link Layer Discovery Protocol (LLDP) packets. Program DCBCPQ in
MAC_RxQ_Ctrl1 Register to indicate to MAC which queue should get the DCB packets.
d. VLAN Tag Priority field in VLAN Tagged packets: Program PSRQ7-0 of the MAC_RxQ_Ctrl2 and MAC_RxQ_Ctrl3
Register for the routing of tagged packets based on the USP (user Priority) field of the received packets to the
RX Queues 0 to 7.
e. The AV tagged control and data packets are also routed based on PSRQ field of the MAC_RxQ_Ctrl2 and
MAC_RxQ_Ctrl3 registers.
4. If multiple RX DMA channels are enabled, the following programming should be done for proper arbitration and
mapping:
a. Program the RAA field of MTL_Operation_Mode register to select the arbitration algorithm to decide which
RxQ is read out from the RxFIFO memory.
b. Program the MTL_RxQ[n]_Control to decide the weights and the packet arbitration for each RxQ.
c. If static mapping is programmed in MTL_RxQ_DMA_Map[n] register (RXQ[n]DADMACH is reset to 0), bits
RXQx2DMA and others need to be programmed to select the channel for which each queue is mapped.
d. Set RXQ[n]DADMACH bit in MTL_RxQ_DMA_Map0 Register to select dynamic mapping of packets in each
RxQueue.
e. In dynamic channel mapping, the routing of a packet to a specific RxDMA channel is decided by the value of
DCS field in the lowest MAC Address Register.
You can enable the timestamp feature by setting Bit 0 of the MAC_Timestamp_Control Register. However, it is
essential that the timestamp counter should be initialized after this bit is set. Complete the following steps during
DWC_ether_qos initialization:
1. Set the offset (positive or negative) in the Timestamp Update registers (MAC_System_Time_Seconds_Update
and MAC_System_Time_Nanoseconds_Update).
2. Set Bit 3 (TSUPDT) of the MAC_Timestamp_Control Register. The value in the Timestamp Update registers is
added to or subtracted from the system time when the TSUPDT bit is cleared.
To synchronize or update the system time to reduce system-time jitter (fine correction method), complete the
following steps:
1. With the help of the algorithm explained in “System Time Register Module”, calculate the rate by which you
want to make the system time increment slower or faster.
2. Update the MAC_Timestamp_Addend with the new value and set Bit 5 of the MAC_Timestamp_Control
Register.
3. Wait for the time for which you want the new value of the Addend register to be active. You can do this by
enabling the Timestamp Trigger interrupt after the system time reaches the target value.
4. Program the required target time in MAC_PPS[n]_Target_Time_Seconds Register and
MAC_PPS[n]_Target_Time_Nanoseconds Register.
5. Enable the Timestamp interrupt in bit 12 of MAC_Interrupt_Enable register.
6. Set Bit 4 in Register MAC_Timestamp_Control.
7. When this trigger causes an interrupt, read MAC_Interrupt_Status Register.
8. Reprogram MAC_Timestamp_Addend Register with the old value and set Bit 5 again.
[Link] Overview
The PCIe controller adheres to the Intel® PIPE (PHY interface for the PCIe) interface, facilitating seamless
integration with PIPE-compliant PHY. Moreover, the controller conforms to the AMBA® AXI4 specifications. It
supports differential bus speeds of PCIe Gen1 (2.5 Gbps), PCIe Gen2 (5.0 Gbps).
[Link] Features
PHY MAC
AXI
PCIe Internal
AXI Master
TX/RX Register
Layer Components
Physical layer Refer to Section [Link]
When operating in root port mode, the PCIe controller enables the local processor to send an I/O request TLP via the AXI4
slave interface by configuring the address translation table appropriately.
In cases where the target address of a write request from the AXI slave matches the address translation table for I/O
TLP, the PCIe controller will transmit an I/O write TLP.
Similarly, if the target address of a read request from the AXI slave matches the address translation table for I/O TLP,
the PCIe controller will transmit an I/O read TLP.
Table 3-143 RC Set Address Translation Table for I/O TLP Example
For AXI slave0 Table0: 0x0800 to 0x081F
Offset Register Name Bit Location Action Value Description
0x800 ATR_IMPL [0] W 1’b1 The table is enabled.
ATR_SIZE [6:1] W 6’d19 Table Size is 2^ (19+1) = 1MB
SRC_ADDR[ATR_SIZE:0] will be ignored to align
SRC_ADDR_LSB [31:12] W 20’b0
the Table size
Any AXI address in 0xCCCCCCCC_00000000 to
0x804 SRC_ADDR_MSB [31:0] W 32’hCCCCCCCC
0xCCCCCCCC_000FFFFF range will match table0.
The local processor is capable of transmitting message TLP via the AXI4 slave interface by configuring the address
translation table accordingly. Once the PCIe controller receives a specific message TLP, it will notify the local processor via
an [Link] message TLP.
In the default PLDA mode, the local processor sends a message via an AXI slave transaction, which is equivalent to a full
message TLP. This includes the 4DW header that specifies the message code and routing information, as well as the
payload if the message TLP contains data.
For instance, if the AXI slave transaction contains 12DW data, the first 4DW is the message header, while the last 8DW is
reserved for message data. The local processor must ensure that the contents are properly prepared, including header
format, message code, and message payload, within the 12DW data from the AXI slave.
In the message pool mode, the local processor sends a message, and the PCIe controller can aggregate several AXI slave
transactions to form a complete Message TLP if those transactions match the Address Translation Table for Message. In
this mode, the maximum length for a Message TLP is 8DW, including the 4DW header and a maximum of 4DW data.
For instance, suppose the local processor intends to send a message TLP with a length of 6DW, but a single AXI slave
transaction contains a maximum of 2DW. In that case, the local processor can activate the message pool mode register and
issue three AXI transactions, each with a length of 2DW, to transmit a 6DW message TLP.
The system can transmit incoming messages from the PCIe interface to either an internal register or an AXI master,
depending on the message type and reception message register settings. To activate this message forwarding functionality,
the software must properly configure the "PMSG_RECEPTION_SETTINGS" register, which ranges from 0x3F0 to 0x3FF.
The messages below are supported by the PCIe controller and forwarded to a dedicated destination.
Unlock Message
ATS Message
LTR Message
Optimized Buffer Flush/Fill
Vendor Defined Type0
Vendor Defined Type1
In the case of an LTR message, it is imperative that the message is forwarded to the internal register, and it must be
directed to a fixed destination address of 0x1A4. Therefore, LTR_DEST_ADDR register of “PMSG_RECEPTION_SETTINGS1
(0x3F4)” must be fixed to 0x1A4.
For other supported messages, there is flexibility in whether they are forwarded to the internal register or the AXI master
interface.
For other supported messages, there is the option to forward them either to the internal register or the AXI master
interface.
Once the PCIe controller receives an LTR message TLP, the message contents will be written into the internal register
"PCIE_LTR_VALUES" (0x1A4), and the status register "LTR_MSG_RECEIVED" (0x14C [0]) will be set. This setting generates a
Local Interrupt to notify the local processor.
When the PCIe controller receives a supported message TLP and the "PMSG_DEST_ID" is set to internal register, the entire
message TLP contents, comprising both the header and data, are written into the internal register
"PCIE_RECEIVED_MESSAGE" (0xCE0 to 0xCFF). Additionally, the status register "PCIE_MSG_RECEIVED" (0x14C [1]) is set.
This setting generates a local interrupt to notify the local processor.
[Link].3 Reset
The PCIe controller features two reset input ports: the power on reset and the PERST#, which is a fundamental reset
defined in the PCIe specification. Additionally, the controller provides a software reset controller register, "PCIE_RST_CTRL"
(0x148), which can be utilized to reset various modules within the PCIe controller.
There are several PCIe link state transitions referred to as "Pl Exit Events." When a "Pl Exit Event" occurs, the PCIe
controller automatically resets certain logic to clear the register back to its default value. The following describes the state
transitions associated with the "Pl Exit Event":
Exit Description
LTSSM exits the Disable state or the link is unexpectedly down; then, LTSSM returns to the [Link]
Dl Up Exit
State.
Hot Reset Exit LTSSM exits the Hot Reset State and returns to the [Link] state.
L2 Exit LTSSM exits the L2 state and returns to the [Link] state.
LTSSM Exit LTSSM enters the [Link] state from any state except the upper state.
In Rootport mode, if a "Pl Exit Event" occurs, the PCIe controller will reset the PHY, physical layer, data link layer, and
transaction layer, with the exception of the configuration space.
Internal
br_reg_rstn
PERST# Register
pl_pipe_rstn PHY
Depend on Depend on
ahb_apb_rstn Yes Yes No No
PCIE_RST_CTRL[9] PCIE_RST_CTRL[8]
Depend on Depend on
axi_rstn Yes Yes No No
PCIE_RST_CTRL[9] PCIE_RST_CTRL[8]
Depend on
br_reg_rstn Yes No No No No
PCIE_RST_CTRL[10]
Depend on Depend on
br_rstn Yes Yes No No
PCIE_RST_CTRL[9] PCIE_RST_CTRL[8]
Depend on
Depend on
tl_crstn Yes PCIE_RST_CTRL[6] No Yes No
PCIE_RST_CTRL[11]
(only for EP)
Depend on Depend on
tl_rstn Yes No Yes No
PCIE_RST_CTRL[7] PCIE_RST_CTRL[6]
Depend on Depend on
ref_rstn Yes No Yes No
PCIE_RST_CTRL[7] PCIE_RST_CTRL[6]
Depend on Depend on
pl_rstn Yes No Yes No
PCIE_RST_CTRL[5] PCIE_RST_CTRL[14]
Depend on Depend on
pl_pipe_rstn Yes No No Yes
PCIE_RST_CTRL[4] PCIE_RST_CTRL[12]
The ISTATUS_LOCAL (located at PCIE_MAC Base address + 0x0184) register reports the interrupt source in bits 31 to 0 when
any of the following events occurs. The host processor has the ability to enable or mask each interrupt source
independently by setting or clearing the corresponding bit in the IMASK_LOCAL (located at PCIE_MAC Base address +
0x0180) register. PCIe has the capability to generate interrupts to the Local processor for the following events:
Bit Description
Bit [31] System error signaled
Bit [30] PM/LTR/Hotplug event for RC
Bit [29] AER Event for RC
Bit [28] Message TLP received except LTR and PTM
Bit [27] Asserted when PCI interrupt line D is asserted
Bit [26] Asserted when PCI interrupt line C is asserted
Bit [25] Asserted when PCI interrupt line B is asserted
Bit [24] Asserted when PCI interrupt line A is asserted
Bit [23] L2 Wakeup: Asserted when L2 wakeup event happened
Bit [22]: PCIe discard error: Asserted to signal a completion timeout on a PCIe read request
Bit [21]: PCIe fetch error: Asserted to indicate that an error occurred on a PCIe read request
Bit [20]: PCIe post error: Asserted to indicate that an error occurred on a PCIe write request
Bit [19]: PCIe PTM message received: Asserted to indicate that a precise time message was received
Bit [18]: AXI discard error: Asserted to signal a completion timeout on an AXI read request
Bit Description
Bit [17]: AXI fetch error: Asserted to indicate that an error occurred on an AXI read request
Bit [16]: AXI post error: Asserted to indicate that an error occurred on an AXI write request
Bit [15:8]: Multiple MSI received: Report MSI events to the local processor. Bit number i corresponds to
function number i
Bit [7:0] Reserved for RC mode because DMA engines are not implemented
The occurrence of any of these events leads to the reporting of the interrupt source in the "ISTATUS_LOCAL (0x184)"
register. The Host processor has the ability to enable or mask each interrupt source independently by setting or clearing
the corresponding bit in the "IMASK_LOCAL (0x180)" register. For detailed information about these registers, refer to
“MT8390 Register Map”.
When an interrupt source is active and not masked, an interrupt is generated on the AXI domain and reported through the
"pcie_interrupt_out" output port. The processing of this interrupt upon receipt by the Local processor is application-
specific. However, in general, the local processor:
Reads the “ISTATUS_LOCAL (0x184)” register to determine the source of the interrupt.
Reads any other bridge configuration space status registers if required.
Reads any PCIe configuration space registers if required.
Reads any PCIe device status registers if required.
Performs the requisite actions.
Clears the “ISTATUS_LOCAL (0x184)” interrupt source by writing 1 to the corresponding bit.
Bit Interrupt Source Level2 Mark Level2 Status Level1 Mark Level1 Status
Receive MSI for MSI MSI Function3 Mark
MSI Function3 Status (0xC34)
Funciton3 (0xC38)
Internal DMA4 Error N/A Internal DMA4 Status (0x520)
12 Receive MSI for MSI MSI Function4 Mark 0x180[12] 0x184[12]
MSI Function4 Status (0xC44)
Funciton4 (0xC48)
Internal DMA5 Error N/A Internal DMA5 Status (0x560)
13 Receive MSI for MSI MSI Function5 Mark 0x180[13] 0x184[13]
MSI Function5 Status (0xC54)
Funciton5 (0xC58)
Internal DMA6 Error N/A Internal DMA6 Status (0x5A0)
14 Receive MSI for MSI MSI Function6 Mark 0x180[14] 0x184[14]
MSI Function6 Status (0xC64)
Funciton6 (0xC68)
Internal DMA7 Error N/A Internal DMA7 Status (0x5E0)
15 Receive MSI for MSI MSI Function7 Mark 0x180[15] 0x184[15]
MSI Function7 Status (0xC74)
Funciton7 (0xC78)
ADT to Local Mark
AXI ADT Event: Post Error AXI ADT Status (0x1E0~0x1EF)
16 (0x1AC[24]) 0x180[16] 0x184[16]
N/A N/A N/A
AXI ADT Event: Fetch ADT to Local Mark
AXI ADT Status (0x1E0~0x1EF)
17 Error (0x1AC[25]) 0x180[17] 0x184[17]
N/A N/A N/A
AXI ADT Event: Discard ADT to Local Mark
AXI ADT Status (0x1E0~0x1EF)
18 Error (0x1AC[26]) 0x180[18] 0x184[18]
N/A N/A N/A
ADT to Local Mark
AXI ADT Event: Doorbell AXI ADT Status (0x1E0~0x1EF)
(0x1AC[27])
19 0x180[19] 0x184[19]
Precise Time Message
N/A PTM Register (0xD80~0xD93)
Received
PCIe ADT Event: Post ADT to Local Mark PCIe ADT Status
20 Error (0x1AC[28]) (0x1D8~0x1DF) 0x180[20] 0x184[20]
N/A N/A N/A
PCIe ADT Event: Fetch ADT to Local Mark PCIe ADT Status
21 Error (0x1AC[29]) (0x1D8~0x1DF) 0x180[21] 0x184[21]
N/A N/A N/A
PCIe ADT Event: Discard ADT to Local Mark PCIe ADT Status
22 Error (0x1AC[30]) (0x1D8~0x1DF) 0x180[22] 0x184[22]
N/A N/A N/A
ADT to Local Mark PCIe ADT Status
PCIe ADT Event: Doorbell
23 (0x1AC[31]) (0x1D8~0x1DF) 0x180[23] 0x184[23]
L2 Remote Wakeup N/A N/A
Interrupt line A is
24 N/A N/A 0x180[24] 0x184[24]
asserted
Bit Interrupt Source Level2 Mark Level2 Status Level1 Mark Level1 Status
Interrupt line B is
25 N/A N/A 0x180[25] 0x184[25]
asserted
Interrupt line C is
26 N/A N/A 0x180[26] 0x184[26]
asserted
Interrupt line D is
27 N/A N/A 0x180[27] 0x184[27]
asserted
Message Status Register
Message Received N/A
(0x14C)
28 0x180[28] 0x184[28]
Message Status Register
LTR Message Received N/A
(0x14C)
29 AER Event N/A N/A 0x180[29] 0x184[29]
30 Receive PME Message N/A N/A 0x180[30] 0x184[30]
Reset Event N/A N/A
31 0x180[31] 0x184[31]
System Error N/A N/A
In the root port mode, the PCIe controller is capable of generating a local interrupt to inform the local processor when it
receives an INTX message from an endpoint. Upon receiving an ASSERT INTX message, the PCIe controller sets the
"INT_EVT" bit in the "ISTATUS_LOCAL (0x184)" register, and this status remains asserted until the Root Complex (RC)
receives a DEASSERT INTX message from the endpoint.
If "ISTATUS_CTRL[3] (0x1AC)" equals 0, the local processor is responsible for clearing the corresponding "INT_EVT"
status bit to complete the INTX handle flow.
If "ISTATUS_CTRL[3] (0x1AC)" equals 1, the hardware automatically clears the corresponding "INT_EVT" status bit upon
receiving a DEASSERT INTX message from the endpoint.
Root Complex
Set enable bit in IMASK_LOCAL
(0x180)
In Root port mode, the PCIe Controller has the capability to support up to eight MSI capture addresses, and the local
processor can set them to the "IMSI_LO_ADDR (0xC00 + 0x10N, N = 0 to 7)" and "IMSI_HI_ADDR (0xC80 + 0x04N, N = 0 to
7)" registers.
Whenever the core receives a memory write request at any of these addresses, it signals in the "ISTATUS_LOCAL (0x184)"
register that an MSI has been received, and logs the received message number in the "ISTATUS_MSI (0xC04 + 0x10*N, N =
0 to 7)" register.
Root Complex
Set MSI Capture
Address IMSI_LO_ADDR_F0 and
IMSI_HI_ADDR_F0
(0x0C00 and 0x0C80)
The ASPM L0s low-power state can be initiated by both the endpoint and rootport cores. This state does not require any
application action, as it is automatically handled by the core.
The core enters the ASPM L0s state after a pre-defined period of PCIe transmit inactivity, which is set by the ASPM L0s
entry delay (in steps of 256ns from 1 - 31) defined by the "PCIE_PEX_SPC2 (0x0D8)" register.
The core exits the ASPM L0s state as soon as a packet needs to be transmitted to the PCIe.
The core automatically handles the low-power state without requiring any action from the application.
The core enters ASPM L1 after a specific period of inactivity, which is determined by the ASPM L1 entry delay. This
delay is set by the "PCIE_PEX_SPC2 (0x0D8)" register and can be adjusted in increments of 256ns between 1 and 31.
The core exits ASPM L1 when it needs to transmit a packet to the PCIe or when its link partner exits the low-power
state.
Only endpoint cores can initiate the entry to the ASPM L1 low-power state.
The endpoint core enters ASPM L1 after a specific period of inactivity, determined by the ASPM L1 entry delay set by
the "PCIE_PEX_SPC2 (0x0D8)" register.
The Rootport core enters ASPM L1 when requested by its link partner and there are no packets to be transmitted to the
PCIe.
Both cores exit ASPM L1 when a packet needs to be transmitted to the PCIe or when the link partner exits the low-
power state.
Note:
If the downstream port (Rootport) declines the core’s request to enter ASPM L1 after the specified period of activity, the link will remain
in its full operational state. In this case, the endpoint waits for 10μs before requesting ASPM L1 entry again, following the guidelines of
the PCIe Specification.
Only an endpoint core can initiate the entry to the L1 low-power state, but only when its legacy low-power state is not D0.
The core automatically handles this low-power state and does not require any action from the application.
To enter L1, an endpoint core must set its legacy low-power state to D1, D2, or D3, as indicated by the
"PCIE_ISTATUS_PM (0x19C)" register. Any changes to the legacy power state are reported by the "PM_EVT" bit of the
"ISTATUS_LOCAL (0x184)" register.
The endpoint core enters L1 when there are no more packets to be transmitted. On the other hand, a Rootport core
enters L1 when its link partner requests entry and there are no packets to be transmitted to the PCIe.
Both cores exit L1 as soon as a packet needs to be transmitted.
An endpoint core exits L1 either when directed to do so by its link partner or by setting the "Send_PME" bit in the
"PCIE_ICMD_PM (0x198)" register. This sends a power management event to request that the link partner changes its
legacy power state.
The L2 low-power state enables the PCIe link to be completely turned off, but it can only be initiated by a Rootport core.
To enter the L2 state, a Rootport core disables the link as soon as its link partner is ready and the application sets the
"Turn_Off_Link" bit in the "PCIE_ICMD_PM (0x198)" register.
The Rootport core exits the L2 state and re-enables the link when the application clears the "Turn_Off_Link" bit in the
"PCIE_ICMD_PM (0x198)" register.
In contrast, an endpoint core automatically enters the L2 state when directed to do so by its link partner. It can only
exit L2 if directed to do so by its link partner or by setting the "WAKE_N" bit in the "PCIE_MISC_CTRL (0x348)" register.
The latter option sends a request to the link partner to re-enable the link.
Root Complex
Sets Turn_Off_Link bit in
the PCIE_ICMD_PM (0x198)
CLKREQ# is an optional side-band pin that may be available in certain form factors, and is utilized to reduce power
consumption. This feature is supported by the clock power management and L1 PM substates with CLKREQ# features. It
should be noted that only one of these power-saving techniques can be used at any given time.
The functionality of CLKREQ# is implemented through the link capability and link control registers present in the
configuration space. When multiple functions are enabled, each function must be capable of utilizing CLKREQ#.
When CLKREQ# is employed to manage power consumption in the L2 state, the MAC transitions from the P0 to the P2 low
power state to halt the reference clock, and subsequently deasserts CLKREQ#.
In the event that bit [8] of the “PCIE_ICMD_PM (0x198)” register for RC (RC CLKREQ# Clock control) is set to 1 upon entry
into the L1 state, the MAC transitions directly from P0 to P2, bypassing P1. Upon exiting the L1 or L2 states, CLKREQ# is
asserted to restart the Reference Clock.
The waveform below demonstrates an L1 entry where the application does not allow clock removal (bit [8] of the
“PCIE_ICMD_PM (0x198)” register = 0), followed by an L1 entry where clock removal is permitted (bit [8] of the
“PCIE_ICMD_PM (0x198)” register = 1).
L1 PM sub-states (L1SS) is an extension to the PCIe Specification that permits further power savings in the L1 and ASPM L1
states. This feature is configured through the L1 PM sub-states capability and the T_POWEROFF parameter found in bits
[7:5] of the “PCIE_PEX_L1SS (0x0E0)” register.
If any L1PM Substate enable bit in the configuration space is set to 1 while the core is in the L1 state, it has the ability to
transition to the L1.1 or L1.2 sub-states if all the necessary conditions for this transition are met.
In the event that the L1PM Substate enable bit in the configuration space is set to 0 upon L1 entry, the core will remain in
the L1.0 state. The core's present state is indicated by bits [10:8] of the “PCIE_ISTATUS_PM (0x19C)” register (l1pm_sm).
The PIPE clock (PL_PCLK) may be halted when the core is in the L1.1 or L1.2 sub-states. However, the Transaction Layer
clock (TL_CLK) must continue to operate, albeit at a very low frequency, so that any traffic on the transaction layer transmit
interface will prompt the core to assert CLKREQ# and exit low-power mode.
If the PCIe registers (PCIe configuration space registers or bridge registers) are accessed via the PCIe link while the core is in
L1, L1.1, or L1.2, the core must exit the low power states. Conversely, if the registers are accessed via the AXI, the core
does not need to exit low power mode.
Convert PCIe read and write requests to any AXI4 master interface read and write transaction.
Convert any AXI4 slave interface read and write transaction to PCIe read and write requests.
Convert an address between PCIe domain and AXI domain.
[Link].1.1.1 RC mode
In the Root port mode, the core allows the implementation of up to sixteen translation tables.
During the transfer of PCIe received requests to the AXI master, the bridge performs a windows match utilizing the PCIe 64-
bit address. Once a match is detected, the Bridge proceeds to forward the request to the intended AXI4 master interface,
along with the corresponding AXI base address.
For instance, in the diagram below, if a write request is received at address 64’hBBBBBBBB_00020140, the bridge matches
the address with the PCIe window's tables. Upon finding a match in Table 2, the request is forwarded to the AXI4-Master
#0 interface located at address 64’hCCCCCCCC_00000000 + 17’h0140.
The diagram below illustrates the PCIe to AXI4 master address translation in the root port mode.
MEM32 DDDDDDDD_00000000
AAA0 0000
AAA1 FFFF
Space #1 Table 1 Table #1
DDDDDDDD_0001FFFF
The address translation method utilized for transferring AXI receive requests to the PCIe interface is comparable. The core
allows for up to eight translation tables to be implemented per implemented AXI4-slave interface.
The following diagram illustrates the AXI4 slave to PCIe address translation.
00000 BBBBBBBB_00000000
ABF0 0000
ABF1 FFFF
SLV0 - Table #1 Table 1 Space #1
1FFFF BBBBBBBB_0001FFFF
DDDDDDDD_00000000
DDDDDDDD_0000FFFF SLV1 - Table #0 AXI4 Slave #1 Address Space
0000
Table 0 Space #0 CCCCCCCC_00000000
CCCCCCCC_0000FFFF
FFFF
BBBBBBBB_00000000
SLV0 - Table #0
BBBBBBBB_0001FFFF
The address translation registers are categorized into six sections based on the internal bus slave port to be translated, as
presented in Table 3-155.
Table 3-157 Set Address Translation Table for PCIe to AXI Direction
For Table0: 0x0600 to 0x061F
Offset Register Name Bit Location Action Value Description
0x600 ATR_IMPL [0] W 1’b1 The table is enabled.
ATR_SIZE [6:1] W 6’d14 Table Size is 2^ (14+1) =32KB.
SRC_ADDR[ATR_SIZE:0] will be ignored to align
SRC_ADDR_LSB [31:12] W 20’b0
the Table size.
Any memory address in 0x00000000_00000000
0x604 SRC_ADDR_MSB [31:0] W 32’b0 to 0x00000000_000007FFF range will match
table0.
00000 BBBBBBBB_00000000
ABF0 0000
ABF1 FFFF
SLV0 - Table #1 Table 1 Space #1
1FFFF BBBBBBBB_0001FFFF
DDDDDDDD_00000000
DDDDDDDD_0000FFFF SLV1 - Table #0 AXI4 Slave #1 Address Space
0000
Table 0 Space #0 CCCCCCCC_00000000
CCCCCCCC_0000FFFF
FFFF
BBBBBBBB_00000000
SLV0 - Table #0
BBBBBBBB_0001FFFF
Table 3-158 Set Address Translation Table for AXI to PCIe Direction
For AIX Slave0 Table0: 0x0800 to 0x081F
Offset Register Name Bit Location Action Value Description
0x800 ATR_IMPL [0] W 1’b1 The table is enabled.
ATR_SIZE [6:1] W 6’d16 Table Size is 2^ (16+1) =128KB.
SRC_ADDR[ATR_SIZE:0] is ignored to align the
SRC_ADDR_LSB [31:12] W 20’b0
table size.
Any AXI address between
32’hAAAAAAA
0x804 SRC_ADDR_MSB [31:0] W 0xAAAAAAAA_00000000 to
A
0xAAAAAAAA_00001FFFF will match table0.
TRSL_ADDR[ATR_SIZE:0] will be ignored to
0x808 TRSL_ADDR_LSB [31:12] W 20’b0
align the Table size.
Any AXI address hits table0 will be mapped to
0x80C TRSL_ADDR_MSB [31:0] W 32’hBBBBBBBB 0xBBBBBBBB_00000000 to
0xBBBBBBBB_000001FFFF.
0x810 TRSL_ID [3:0] W 4’d0 To PCIe interface
TRSF_PARAM [18:16] W 3’d0 Memory TLP
TRSF_PARAM [19] W 1’b0 NW flag is 0
TRSF_PARAM [22:20] W 3’b0 No snoop
TRSF_PARAM [23] W 1’b0 ECRC is not forwarded.
TRSF_PARAM [26:24] W 3’b0 TC is 0.
The CPU located in a specific locality can access its own configuration space, as well as the configuration space of other
devices (in RC mode). This can be achieved through the utilization of the AHB/AXI4-Lite Slave interface or the AXI4 Slave
interface.
In order to access the PCIe controller register within the range of addresses 0x1000 to 0x1FFF, the accesses are routed
through the PCIe controller backend configuration space interface. This allows a local processor to effectively read from or
write to the PCIe controller configuration space.
To access the desired function's configuration Space, it is necessary to appropriately configure the "PCIE_CFGNUM
(0x140)" register prior to accessing the configuration space. See below for the definitions.
In the root port mode, the PCIe controller allows the local processor to access bridge configuration Space and send CFG
read and write requests via the PCIe interface. To accomplish this, the local processor should configure the "PCIE_CFGNUM
(0x140)" register accordingly and access the desired register.
Offset Description
0x4000 - 0x7FFF Reserved
The internal register of PCIe controller can control PCIe controller. It includes Control, Status, Interrupt, and Event registers.
It maps to PCIe module register offset 0x0000 (PCIE_MAC Base address+0x0000).
The PCIe Configuration Space and PCIe Extended Configuration Space are accessible through PCIe Configuration Space
interface. The Configuration Space register maps to PCIe module register offset 0x1000 (PCIE_MAC Base address+0x1000).
Table 3-164 PCIe Configuration Space and PCIe Extended Configuration Space
Offset Description
0x0000 - 0x003F Type 0/1 standard PCI configuration header
0x0040 - 0x007F Reserved
0x0080 - 0x00BB PCIe capability
0x00BC - 0x00CF Reserved
0x00D0 - 0x00DB MSI-X capability
0x00DC - 0x00DF Reserved
0x00E0 - 0x00F7 MSI capability
0x00F8 - 0x00FF PCI power management capability
0x0100 - 0x0107 Vendor-Specific capability
0x0108 - 0x010F LTR capability
Offset Description
0x0110 - 0x011F L1 PM substates capability
0x0120 - 0x01CF Reserved
0x01D0 - 0x01DB PTM capability
0x01DC - 0x01FF Reserved
0x0200 - 0x0247 AER capability
0x0248 - 0x02FF Reserved
0x0300 - 0x032B Secondary PCIe extended capability
0x032C - 0x0FFF Reserved
[Link].1 Overview
The PCIe PHY is responsible for managing the fundamental PCIe protocol and signaling aspects. This includes critical
functionalities such as data serialization and de-serialization, 8b/10b encoding/decoding, analog buffers, elastic buffers,
and receiver detection mechanisms. The primary objective of this block is to synchronize the data's clock domain from the
original PCIe rate to one that is compatible with the general logic.
[Link].2 Features
PCIE_LNx_RXN
PCIE_LNx_TXN
PCIE_LNx_RXP
PCIE_LNx_TXP
TX Driver RX FE
TX Serial
CDR
Parallel to Serial
De-Serial Serial to Parallel
8b/10b 8b/10b
128b/130b 128b/130b Elastic Buffer
Encoder Decoder
PIPE Interface
PIPE Interface
MAC
Figure 3-219 depicts the block diagram of the PCIe PHY, which comprises two primary sub-modules.
Analog PHY (PHYA): Contains the TX driver, serializer, RX front-end, CDR, and de-serializer.
Digital PHY (PHYD): Includes essential features such as 8b/10b encoding/decoding, and elastic buffers. These elastic
buffers are utilized to account for any differences in frequencies between the bit rates at each end of a link, whereby
the PCIe Specification stipulates that the elastic buffer can cover a range of ± 300 ppm.
The interface between the PHY and PCIe controller follows the PIPE specification.
REFCLK+
PCIe RC >>
Reference PCIe Endpoint
Clock
REFCLK-
>>
Zc-DC Zc-DC
Figure 3-220 PCIe 100 MHz Reference Clock (REFCLK) Architecture on PCB
The request for loopback functionality can be conveyed by setting Symbol 5 bit 2 of the Training Sequence (TS1) ordered
set. Upon issuing the loopback request, both the MAC (LTSSM) and PHY must be in Loopback mode. Therefore, the PCIe
MAC is responsible for controlling the power-down, Loopback, and TXElecIdle features of the PHY through the PIPE
interface. Consequently, the PCIe PHY is set to Loopback mode.
PHY transmits data. MAC provides data bytes to be sent every clock
0 0
cycle.
P0: 2’b00 0 1 PHY does not transmit data and is in electrical idle.
1 0 PHY goes into loopback mode (Far-end loopback).
1 1 Illegal. MAC should never do this.
Upon entering Polling state, the compliance pattern will be transmitted. The Compliance state is designed to evaluate the
conformity of the transmitter and interconnect in the device under test setup with the voltage and timing specifications
outlined in the PCIe base or CEM standards. To enter polling compliance, one of the following conditions must be met:
(a) the enter compliance bit in the Link Control 2 register is set to 1'b1 before entering polling active state; or
(b) a passive test load is applied to all transmitter lanes.
The PCIe electrical characteristics conform to the standards specified in the PCIe Base Specification Revision 4.0 and PCIe
Card Electromechanical Specification Revision 4.0 for system board usages.
(3) Refer to PCI Express Card Electromechanical Specification Revision 4.0, Section 4.8.1, Table 29.
[Link] References
[Link] Appendix
The table below enumerates the signals present in the AXI4 master 0 interface. These signals are also utilized for the
following interface signals:
The following table lists the signals in the AXI4 Slave 0 interface. The same signals are used for the AXI4 Slave 1
(axi4_slv1_), AXI4 Slave 2 (axi4_slv2_), and AXI4 Slave 3 (axi4_slv3_) interface signals.
The keypad module contains 2 submodules, KP0 and KP1. KP0 supports single keys, and KP1 supports double keys. Figure
3-221 and Figure 3-222 show the structural block diagrams of Keypad Top and KP1.
kp0_row_enable[1:0]
f32k_ck
keypad_krow_oe[1:0]
KP0
APB kp0_row_scan[1:0]
(single key)
keypad_kcol_i[1:0] keypad_krow_o[1:0]
kp0_irq_b
kp_irq_b
row_enable[1:0]
row_scan[1:0]
2'h3
col_enable[1:0] keypad_kcol_oe[1:0]
KP1 col_scan[1:0]
keypad_kcol_o[1:0]
keypad_krow_i[1:0] (double key) kp1_irq_b
2'h3
KP1
32kHz clk
Kp_counter
kp_fsm
irq_b
APB_BUS Kp_register
keypad_kcol_i[1:0] keypad_krow_o[1:0]
keypad_krow_oe[1:0]
keypad_krow_i[1:0] Kp_scanner keypad_kcol_o[1:0]
keypad_kcol_oe[1:0]
Module Description
Kp_scanner Scans the keypad state.
Kp_FSM Manages the working flow of the keypad and generates an IRQ signal.
Kp_counter Counts the de-bounce time.
Each time the key is pressed or released, i.e. something different in the 2 × 2 matrix, the key detection block senses the
change and recognizes if a key has been pressed or released. Whenever the key status changes and becomes stable, a
keypad IRQ is issued. Then, the MCU can read the key(s) pressed directly in the KP_MEM1 and KP_MEM2 registers. The
status register can only be changed by the key press detection FSM.
Key press detection depends on the HIGH or LOW level of the external keypad interface. If the keys are pressed at the
same time, and a key shares the same column and the same row with other keys, the pressed key cannot be correctly
decoded. For example, if there are three keys pressed: key1 = (x1, y1), key2 = (x2, y2), and key3 = (x1, y2), both key3 and
key4 = (x2, y1) are detected, and therefore, they cannot be distinguished correctly. Hence, the keypad detects only one key
or two keys pressed simultaneously in any combination. Pressing more than two keys simultaneously in a specific pattern
may cause wrong information retrieval.
When the state of the key matrix changes, there is a de-bounce time. Set a suitable de-bounce time before enabling the
Keypad. If the time value is set too small, the Keypad becomes overly sensitive and detects multiple unexpected key
presses.
The 2 × 2 double Keypad supports a 2 × 2 × 2 = 8-key matrix. The 8 keys are divided into 4 subgroups, and each
group consists of 2 keys and a 20 Ω resistor.
Device
KCOL1
KCOL0
KROW0 0 2
1 3
KROW1 13 15
14 16
[Link] Overview
The General-Purpose Input/Output (GPIO) peripheral provides dedicated pins that are configurable as either inputs or
outputs. Each GPIO pin has the following key functions:
[Link] Features
The MT8390 offers the following types of pin control for GPIO. The corresponding I/O cells are described in the tables
below.
Setting the GPIO_DIR register to 1 configures the GPIO as the output mode.
Setting the GPIO_DIR register to 0 configures the GPIO as the input mode.
When the GPIO_MODE register is set to be 0, the GPIO function (i.e., Aux Func.0) is selected. Additional registers, such
as GPIO_DOUT, are also programmable to control the output state (e.g., output low or output high).
When the GPIO_MODE register is set to any other values, the corresponding pin-mux function, for example, Aux
Func.1 or Aux Func.2, is selected.
When the GPIO_MODE register is set to 0, the GPIO function (i.e., Aux Func.0) is selected. Additional registers such as
PU and PD are also programmable for other required usages, such as input high-Z, input pull down, or input pull high.
Note that the PU and PD settings for each pin are separated into different control register domains.
When the GPIO_MODE register is set to other values, one of the other pin mux functions such as Aux Func.1 or Aux
Func.2, is selected.
See below for the example of writing the output value through the following registers.
Latch @ SYSRST#
SYSRST#
INPUT/OUTPUT
GPIO_DIN
Control GPIO_DIR
GPIO Logic APB
GPIO_MODE
GPIO_DOUT
BUS
PU/PD I/F
DRV_STRENGTH
The I/O pins of the MT8390 can be programmed for multiple purposes, such as GPIO, NAND and SPI, by setting the
GPIO_MODE register for different functions. Note that all functions must comply with the priority rule.
When there are more than one I/O set as the same output function, all of the selected I/Os are able to output specific
signals.
When there are more than one I/O set as the same input (or bi-directional) function, only the I/O with the largest
GPIO index works functionally.
Table 3-185 lists the strapping pins. The strapping pin state is latched when the system “resetb” changes from low to high.
The strapping pin state decides which stage mode the system enters, or where the BROM boots from. When the strapping
stage is completed, the strapping pin state can be changed.
To exit the strapping mode, configure the register TPBANK in the GPIO. Refer to Table 3-186 for more details.
To enable certain function on certain pads, change the GPIO mode of the pad. When the GPIO_MODE register is set to 0,
the GPIO function (i.e., Aux Func.0) is selected. When the GPIO_MODE register is set to any other values, the
corresponding pin-mux function, for example, Aux Func.1 or Aux Func.2, is selected.
When a certain pad’s GPIO mode is configured as 0, you can configure the pad output value and observe the input value.
When the pad GPIO mode is not 0, you cannot configure the pad output value by GPIO setting. You can observe the pad
input value when the pad holds on stable.
1. If you want to configure the pad output value, follow the steps below.
Step 1: Set GPIO_MODE as 0
Step 2: Set GPIO_DIR as 1
Step 3: Setting GPIO_DOUT as 1 means output high, while setting GPIO_DOUT as 0 means output low
2. If you want to observe the pad input value, follow the steps below.
Step 1: Set GPIO_MODE as 0
Step 2: Set GPIO_DIR as 0
Step 3: Setting GPIO_DIN as 1 means input high, while setting GPIO_DIN as 0 means input low
The pins of pads can be configured when needed, but the default value should be sufficient for most scenarios.
[Link] Overview
The Pulse Width Modulation (PWM) is a technique designed to generate pulse sequences with programmable frequency
and duration for various applications, including but not limited to Liquid-Crystal Display (LCD) backlight and charging.
Prior to enabling the PWM, the pulse sequences must be prepared in the registers. The PWM then reads the stored pulse
sequences to generate the expected waveform to meet specific requirements of the given applications.
[Link] Features
Different PWM modes as listed below are available.
PWM UNIT
DATA_ACCESS
Control and Status
APB (PWM_SEND_DATA0,
Register
PWM_SEND_DATA1)
Figure 3-225 illustrates the PWM block diagram, which consists of several functional components:
The PWM outputs waveforms through the PAD pins. The theoretical methodology for generating PWM waveforms differs
across modes, as outlined in Section [Link]. The PWM generates waveforms by dividing frequencies and data
sequences in a specific manner as described in the following sections.
The PWM generates a waveform by dividing the frequency in the normal mode.
Bclk To PAD
PWM
APB
The PWM module generates a waveform by data sequence generation in the PWM FIFO, memory and random modes.
AHB To PAD
PWM
APB
32-bit
ON OFF
guard_duration=0
pwm_thresh+1 pwm_thresh+1
idle_value
The frequency is determined by PWM_DATA_WIDTH (PWM Base address+0x00AC) [12:0] and the duty cycle is determined
by PWM_THRESH (PWM Base address+0x00B0) [12:0].
𝐶𝐿𝐾𝑆𝑅𝐶
PWM Frequency =
𝐶𝐿𝐾𝐷𝐼𝑉 ∗ (𝐷𝐴𝑇𝐴_𝑊𝐼𝐷𝑇𝐻 + 1)
Without consideration of GUARD_DURATION (PWM Base address+0x8C) [15:0], the duty cycle is:
𝑃𝑊𝑀_𝑇𝐻𝑅𝐸𝑆𝐻 + 1
Duty cycle =
𝐷𝐴𝑇𝐴_𝑊𝐼𝐷𝑇𝐻 + 1
Guard_ duration (PWM Base address+0x08C) [15:0] is the time interval between two complete waveforms. When
PWM_WAVE_NUM (PWM Base address+0x00A8) [15:0] = 0, it means that hardware is continuously outputting the
waveform, and the waveform can only be terminated by disabling PWM.
SEND SEND
DATA1 DATA0
PWM
64-bit
Stop bit
position
PWM is not enabled
or is done
lduration hduration
guard_value idle_value
~ ~ ~ ~
0 1 1 0 1 0 1 1 0 1
guard_duration
send_data0 send_data1 send_data0 send_data1
If the pulse sequence data is less than or equal to 64-bit, the data can be directly set in PWM_SEND_DATA0 (PWM Base
address+0x00A0) [31:0], PWM_SEND_DATA1 (PWM Base address+0x00A4) [31:0] and SRCSEL (PWM Base address+0x0000)
[5] =0 to reduce memory bandwidth, where SRCSEL is set to 0 to indicate that PWM is in FIFO mode. STOP_BITPOS (PWM
Base address+0x0000) [14:9] is used to indicate the stop bit position in the total 64-bit data.
For example, if STOP_BITPOS (PWM Base address+0x0000) [14:9] is 31, only PWM_SEND_DATA0 (PWM Base
address+0x00A0) [31:0] is generated. And if STOP_BITPOS (PWM Base address+0x0000) [14:9] is 63, PWM_SEND_DATA0
(PWM Base address+0x00A0) [31:0] and PWM_SEND_DATA1 (PWM Base address+0x00A4) are generated.
lduration hduration
guard_value idle_value
~ ~ ~ ~
0 1 1 0 1 0 1 1 0 1
guard_duration
send_data0 send_data1 send_data0 send_data1
In the periodical mode, all pulse sequences are repeatedly generated by the number of PWM_WAVE_NUM (PWM Base
address+0x00A8) [15:0]. If PWM_WAVE_NUM (PWM Base address+0x00A8) [15:0] =0, the hardware continuously outputs
waveforms, and the waveform generation can be stopped by PWM_ENABLE (PWM global Base address+0x0000) [31:0].
SRCSEL (PWM Base address+0x0000) [5] =1 means the memory mode. The pulse sequence data is put in memory with
address set by PWM_BUF0_BASE_ADDR (PWM Base address+0x0090) [31:0] and PWM_BUF0_BASE_ADDR2 (PWM Base
address+0x00BC) [3:0]. The length is PWM_BUF0_SIZE (PWM Base address+0x0094) [15:0]. STOP_BITPOS (PWM Base
address+0x0000) [14:9] indicates the stop bit position in the last 32-bit data.
Memory
32-bit
On the other hand, the pulse sequence is stored in dual memory buffers in random mode. Figure 3-232 shows the format
of pulse sequences stored in the memory.
The valid bit indicates that the data is ready in the respective memory buffer. The PWM generation clears this bit after all
data in that buffer is fetched. The memory buffers are set by the address PWM_BUF0_BASE_ADDR (PWM Base
address+0x0090) [31:0] and PWM_BUF0_SIZE (PWM Base address+0x0094) [15:0] for memory 0, and
PWM_BUF1_BASE_ADDR (PWM Base address +0x0098) [31:0] and PWM_BUF1_SIZE (PWM Base address+0x009C) [15:0]
for memory 1.
The program should prepare for the pulse sequence and set the valid bit to 1 in time before all data in other memory
buffers is fetched. Otherwise, the hardware issues an UNDERFLOW interrupt to inform that the pulse generation stops
because there is no valid data. If an UNDERFLOW interrupt is received, the software needs to disable PWM, set the valid
bit again, and enable PWM to restart pulse generation.
32-bit 32-bit
3.13 Miscellaneous
[Link].1 Overview
The SYSTMR is a 64-bit and always-on up-counter used as a universal timer in the device. The counter value of
SYSTMR is passed to the application cores (A78 and A55), SCP, GPU, and other processors to provide uniform
system timestamps for operating systems such as Android™, Linux®, and RTOS (Real-Time Operating System).
[Link].2 Feature
SYSTMR is a general counter with the function of counting up and counting down. However, in low power mode, we use a
compensation mechanism to ensure that the exact counter value can be maintained between 26m clock and 32k clock.
The relationship between 26 MHz and 32 kHz is not an integer, so there is a Quantization Error.
1. 26 MHz/32.768 kHz =793.4570313. One cycle of 32.768 kHz takes 793.4570313 cycles of 26 MHz.
2. After adding the integer 793, each cycle of 32 kHz causes 0.45703125 cycles of 26 MHz error (about 17.5781 ns).
3. One cycle of 32 kHz produces an error of 17.5781 ns; 56.8889M cycles of 32k produces an error of about 1 second ->
the time to accumulate a 1-second error is 1736.11 seconds.
It means every 1736.11 seconds pass, there is a 1-second error. In order to eliminate the Quantization Error, conduct the
following analysis:
1. Use the moving average and find 793.45703125 => 793.45703125 = 793*X + 794*(1-X ) => X= 0.54296875.
2. To find the best P and Q by Numerical Analysis, use 793*(139/256) + 794*(117/256) = 793.45703125.
In every 256 32k cycles, add 139 times 793 and 117 times 794 to realize the compensation mechanism.
[Link].6.1 Counter
Although SYSTMR uses a 26 MHz clock source, the counter value is updated at a frequency of 13M. The counter value of
SYSTMR is about 76.92 ns per unit. When running at 26 MHz, the counter value increases by 1; when running at 32 kHz,
the counter value increases by 396 or 397.
In the CNTCR register, the counter is mainly controlled by the following bits. For a more complete register introduction,
refer to “MT8390 Register Map.”
CNT_32K_AS_EN
This bit decides when 26 MHz is turned off, whether SYSTMR is switched to update the counter at 32 kHz frequency. If
this bit is not enabled, the counter pauses when 26 MHz is turned off. In general, this bit should not be disabled.
COMP_15_EN
In compensation v1.5, SYSTMR only uses one hardware counter to count the counter value. At the 26 MHz clock, the
counter adds 1 every cycle; when 26 MHz is turned off, SYSTMR uses the 32 kHz clock, as the discussion of 1.5 Low
Power, adding 396 or 397 every cycle.
COMP_20_EN/COMP_25_EN
In compensation v2.0, SYSTMR uses a 26 MHz counter and a 32 kHz counter to count the counter values, and the two
counters count at 26 MHz and 32 kHz clocks, respectively. SYSTMR is mainly based on the 32 kHz counter because the
32 kHz counter is always counting and will not be turned off.
Every time the 32 kHz clock rises, the 26 MHz counter is aligned with the 32 kHz counter, and then the 26 MHz counter
value continues to increment at 26 MHz frequency.
In normal mode, SYSTMR outputs a 26 MHz counter value. Turning off the 26 MHz clock means low power mode is
enabled. The 26 MHz counter pauses, and SYSTMR switches to output the 32 kHz counter value.
However, this architecture may result in discontinuous SYSTMR values. For systems that are sensitive to continuous count
values, the software must enable COMP_25_EN to solve the discontinuity issue.
[Link].6.2 Timer
The software can control timer and interrupt through the following register.
The software can set the timer value through the following register.
[Link].1 Overview
The Application Processor General-Purpose Timer (APXGPT) module consists of five sets of GPTs that feature 32-bit up-
counters and one set of GPTs that contain 64-bit up-counters. Section [Link].3 shows the block diagram. Each GPT
supports four operation modes as follows. For further details, see Table 3-196 and Section [Link].6.
ONE-SHOT mode
REPEAT mode
KEEP-GO mode
FREERUN mode
Each GPT can operate on either of the two clock sources: 32.768 kHz Real-Time Clock (RTC) or the 13 MHz system clock,
with a 4-bit pre-scaler that provides a programmable clock frequency from these two clock sources.
By selecting the desired modes and working clocks, a specific time delay can be obtained. Upon reaching a programmable
timer value, an Interrupt Request (IRQ) will be sent to the CPU and System Power Management (SPM).
[Link].2 Features
cnt_64[63:0]
GPT[5]
GPT[1]
slow_ck
GPT[0]
f13m_ck
sw_cg_en[0]
clk_ctrl[0] APXGPT_
en[0]
CK_GEN
irq_ack[0]
mode[1:0] en_d2 apxgpt_ck
event_b0
The APXGPT is primarily built upon an up-counter that counts using the rising edge of a clock. The operating clock
frequency can be selected from two sources, usually 13 MHz and 32.768 kHz, which can be internally divided to provide
additional frequency options. As the clock period is known, the counter boundary should be set to obtain a specific time
delay. The time is then calculated by multiplying the count by the clock period. Upon reaching the counter boundary, an
interrupt request will be generated.
The table below presents detailed descriptions for the four operation modes of each GPT.
[Link].4.1 Clocking
slow_clock
f13m_ck
pclk_ck
hclk_ck
The first two clocks serve as the operation clock of the up-counter. Select one of them through the register setting. The
APB clock (PCLK) and hopping clock (HCLK) are bus-related clocks.
[Link].4.2 Interrupts
When the GPT reaches the programmable compared value of the up-counter, “GPTn” (n = 0, 1, 2, 3, 4, 5) generates an
interrupt request (IRQ) to send to the GPU. These GPT interrupts are merged and connected to the SPM.
Upon GPT triggering an IRQ, it issues a wake-up signal to the "Sleep Control" to wake up the MCU if it is in the sleep mode.
The read operation value of the GPT6 64-bit timer is split into two 32-bit APB reads. The lower word is read first, followed
by the higher word. The read operation of lower word freezes the “read value” of the higher word, but does not freeze the
timer counting. This ensures that the separated read operation acquires the correct timer value.
When programming and utilizing the GPT, note the following points:
The counter value can be read at any time when the clock source is the system clock or the RTC.
The comparative value can be programmed at any time. If it is rewritten during a count operation, the counter is reset
to 0 and restarts the count.
The following sections describe the operating sequence of all the operation modes, using GPT0 as an example to
demonstrate the programming sequence.
APXGPT base Refer to the The lower word of the timer count
1 GPT5_COUNT_L RO
address + 0x00A8 description. of GPT5.
Read the higher 32 bits of the GPT5 counter.
APXGPT base Refer to the The higher word of the timer count
2 GPT5_COUNT_H RO
address + 0x00B0 description. of GPT5.
The WDT module is a part of TOPRGU. For more information refer to Section 5.5 Reset.
[Link] Overview
The Auxiliary Analog/Digital Converter (AUXADC) module is designed to identify the plugged peripheral and
perform temperature and voltage measurement. There are 6 input channels that allow diverse applications, such
as temperature/voltage measurement and light sensing. The device features one AUXADC module.
[Link] Features
lowbattery_irq PDN_AUXADC
ad_adc_comp
control ADC_SFS ADC_SDATA ADC VIN5
AUXADC_CORE
immidiate_str VIN7
autoset_str
APB puwait_en adc_rdy
AUXADC_REG
sel_latch
adc_state AUXADC_IF
latch_data
In the immediate mode, AUXADC samples the value once only when the flag in the AUXADC_CON1 register is set. For
example, if the flag IMM0 in AUXADC_CON1 is set, the module samples the data for channel 0. The IMM flags have to
be cleared and set again to initialize another sampling. The value sampled for channel 0 is stored in the register
AUXADC_DAT0. If the AUTOSET(x) flag in the register AUXADC_CON0 is set, the auto-sampling function is enabled in
channel(x). The module samples the data for channel(x) whenever the corresponding data register is read.
If multiple channels are selected at the same time, the tasks are performed sequentially on every selected channel
from channel 5 to channel 0.
Background detection and interrupt
If background detection is enabled, AUXADC automatically compares the selected channel data with the user-defined
value. If the results are continuously greater or less than the given value, AUXADC issues an interrupt to inform the
system user.
Table 3-203 presents timing and functional characteristics for AUXADC in the device.
Successive-Approximation Register (SAR) ADC provides low power consumption, cost-effective and medium resolution. The
AUXADC module has the SAR ADC architecture.
The following shows an example of 12-bit conversion. VREF is the reference voltage of AUXADC.
AUXADC implements a binary search algorithm. An initial register VDA value, the mid-value between (212-1) and 0, is
compared with the input voltage VIN. The value represents VREF /2. If VIN is bigger than VDA, the output of comparison is 1,
and the MSB is 1. Otherwise, the MSB is 0. Subsequently, bit 11 is set to 1, and another comparison is done. Bit10 to bit 0
are executed as the previous action. Then, the 12-bit digital value is available.
Comparator
VIN
-
VDA
+
VREF
Digital-analog
12-bit
SAR digital logic
converison
VDA
8/8 VREF
7/8 VREF
6/8 VREF
5/8 VREF
4/8 VREF
3/8 VREF
2/8 VREF
VIN
1/8 VREF
Comparison
bit11=0 bit10=0 bit9=1 bit8=0 bit7=1 bit6=0 bit5=1 bit4=1 bit3=0 bit2=0 bit1=1 bit0=1
[Link] Introduction
Thermal management is crucial on the SoC platform. Through thermal management, an SoC can operate within specific
temperature constraints whole fulfilling computing performance requirements. Operations under over-temperature
condition for a long period of time may cause reliability issues.
The thermal management system includes several thermal sensors embedded in possible hotspots on the die and a
thermal controller module for periodic measurement for each hotspot. The measurement results are read by the software.
However, in order to minimize software efforts for monitoring temperature, the thermal controller generates interrupts to
a system handler for abnormal conditions.
[Link] Features
Thermal controller periodically polls all sensors for SoC operating within a pre-defined temperature range to avoid function
failure and reliability issues. According to the temperature measurement, the system performance can be adjusted for a
system design with power dissipation being monitored. Figure 3-238 shows the temperature measurement scheme. Note
that the hottest location in an SoC may vary in different applications.
When the thermal controller informs the software of an abnormal condition, the consecutive power reduction
methodology should be efficient and with low latency.
ADC value
Small
HOT
HOT threshold
HOT2NORMAL threshold
High offset
Low offset
NORMAL
COLD threshold
COLD
Large
Figure 3-239 shows the interrupt conditions of high and low temperature monitors. Software can determine which
temperature sensors to be monitored. Once any of the following three interrupt conditions occur in any of the monitored
temperature sensors, an interrupt is generated.
Cold interrupt: Asserted when the temperature crosses and falls below the cold threshold.
Hot interrupt: Asserted when the temperature crosses and rises above the hot threshold.
Hot-to-normal interrupt: Asserted when the temperature crosses and falls below the hot-to-normal threshold.
Figure 3-240 shows the Finite State Machine (FSM) diagram. The states are as listed below.
COLD_ST: The temperature is lower than the cold threshold.
NORMAL_ST: The temperature is within the hot-to-normal threshold and cold threshold.
HOT1_ST: The temperature is within the hot-to-normal threshold and hot threshold, and the previous state is
NORMAL_ST.
VERY_HOT_ST: The temperature is higher than the hot threshold.
HOT2_ST: The temperature is within the hot-to-normal threshold and hot threshold, and the previous state is
VERY_HOT_ST.
Hot threshold
Hot to normal
threshold
Cold threshold
Hot to
Cold Cold Hot
normal
interrupt interrupt interrupt
interrupt
HOT2
NORMAL
VERY_HOT
COLD
HOT1
The system also provides a feature to control the junction temperature within the pre-defined HIGH-OFFSET and LOW-
OFFSET. Figure 3-241 depicts the concept of the feature and Figure 3-242 shows the FSM. There are two interrupts and two
alarms:
LOW-OFFSET alarm to RGU: Asserted when the temperature crosses and drops below the low offset.
HIGH-OFFSET alarm to RGU: Asserted when the temperature crosses and rises above the high offset.
LOW-OFFSET Interrupt: Asserted when the temperature crosses and drops below the low offset. The FSM transitions
from the NORMAL state into the LOW OFFSET state.
HIGH-OFFSET Interrupt: Asserted when the temperature crosses and rises above the high offset. The FSM transitions
from the NORMAL state into the HIGH OFFSET state.
Hot threshold
High offset
Monitor
temprature
Low offset
Cold threshold
Low offset Low offset
interrupt/ interrupt/
alarm High offsetalarm
interrupt/alarm
NORMAL
HIGH
OFFSET
LOW
OFFSET
Thermal sensors are placed at different locations within a die for monitoring the junction temperatures of the different die
locations.
eMMC
SPI NOR
4 Ball Map
Figure 4-1 presents simplified diagram of the location of the balls on the package.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
A 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
B 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
C 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
D 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
E 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
F 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
G 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
H 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
J 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
K 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
L 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
M 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
N 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
P 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
R 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
T 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
U 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
V 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
W 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AA 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AB 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AC 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AD 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AE 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AF 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AG 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AH 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AJ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AK 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AL 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AM 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AN 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AP 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AR 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AT 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
AU 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
For detailed information about package outlines, thermal characteristics, and markings, see Chapter 7 Package
Information.
Table 4-1 shows pin mapping on the top left part of the package.
A DUMMY DUMMY EMI2_TP EMI2_DQ8 DVSS DVSS EMI2_DMI1 EMI2_DQ15 EMI2_DQ0 EMI2_DMI0
B DUMMY EMI2_EXTR DVSS DVSS DVSS EMI2_DQS1_T DVSS EMI2_DQ14 DVSS EMI2_DQ7 DVSS EMI2_DQ1 DVSS
C DVSS MSDC1_DAT3 MSDC1_DAT2 DVSS EMI2_DQS1_C DVSS DVSS EMI2_DQ12 DVSS DVSS DVSS DVSS
D MSDC1_DAT1 MSDC1_DAT0 MSDC1_CMD MSDC1_CLK DVSS DVSS EMI2_DQ13 EMI2_DQ10 DVSS DVSS DVSS DVSS EMI2_DQ3
E DVDD18_MSDC1 SPIM2_MISO CMMPDN1 CMMCLK0 CMMCLK1 DVSS EMI2_DQ9 DVSS EMI2_DQ11 DVSS EMI2_DQS0_C DVSS EMI2_DQ5
F SPIM2_MOSI CMMCLK2 SCL5 SDA5 DVSS DVSS DVSS DVSS EMI2_DQS0_T DVSS DVSS
G SPIM2_CLK SPIM2_CSB CMMRST0 CMMPDN0 CMMRST1 SDA6 DVDD28_MSDC1 DVSS DVSS DVSS DVSS DVSS EMI2_DQ2
H DVSS DVSS DVSS SCL6 DVSS DVSS DVSS DVSS DVSS DVSS
J DVSS CSI1A_L1P_T0C CSI1A_L1N_T1A CSI1A_L0N_T0B CSI1A_L0P_T0A DVSS DVSS DVSS DVSS DVSS DVDD18_IORT DVSS AVDD12_EMI2
K CSI1B_L0N_T0B DVSS CSI1B_L0P_T0A CSI1A_L2N_T1C CSI1A_L2P_T1B DVSS DVSS DVSS DVSS AVDD075_EMI2
L CSI1B_L1P_T0C CSI1B_L1N_T1A DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVDD_CORE
Table 4-2 shows pin mapping on the top center part of the package.
14 15 16 17 18 19 20 21 22 23 24 25
C DVSS DVSS EMI2_CA1 DVSS EMI2_CS0 DVSS EMI3_CS0 DVSS EMI3_CA1 DVSS DVSS DVSS
D DVSS DVSS DVSS EMI2_CA5 DVSS NC DVSS DVSS EMI3_CA3 DVSS DVSS EMI3_DQ5
E DVSS DVSS DVSS EMI2_CA4 DVSS DVSS DVSS DVSS EMI3_CA4 DVSS DVSS EMI3_DQ3
F DVSS EMI2_CA2 EMI2_CA3 DVSS EMI2_CK_T DVSS EMI3_CK_T DVSS DVSS NC DVSS DVSS
G EMI2_DQ4 DVSS NC DVSS EMI2_CK_C DVSS EMI3_CK_C DVSS EMI3_CA5 EMI3_CA2 DVSS EMI3_DQ4
H DVSS DVSS DVSS DVSS DVSS NC DVSS DVSS DVSS DVSS DVSS DVSS
J DVSS AVDDQ_EMI2 DVSS AVDDQ_EMI2 DVSS AVDDQ_EMI2 DVSS AVDDQ_EMI2 DVSS AVDDQ_EMI2 AVDD18_EMI2 DVSS
K AVDDQ_EMI2 AVDD2_EMI2 AVDDQ_EMI2 AVDD2_EMI2 AVDDQ_EMI2 AVDD2_EMI2 AVDDQ_EMI2 AVDD2_EMI2 AVDDQ_EMI2 AVDD2_EMI2 AVDD075_EMI2 DVSS
M DVDD_MM DVSS DVDD_SRAM_MM DVSS DVDD_MM DVDD_MM DVDD_CORE DVDD_PROC_B DVDD_SRAM_PROC_B DVSS DVSS DVDD_PROC_B
N DVDD_MM DVDD_MM DVSS DVDD_MM DVSS DVDD_MM DVDD_CORE DVDD_PROC_B DVDD_PROC_B DVSS DVDD_PROC_B DVDD_PROC_B
Table 4-3 shows pin mapping on the top right part of the package.
EMI3_DQ1 DVSS EMI3_DQ7 DVSS EMI3_DQ14 DVSS DVSS EMI3_DQS1_C DVSS DVSS EMI2_RESET_N DUMMY B
DVSS EMI3_DQ2 DVSS EMI3_DQ11 DVSS DVSS EMI3_DQ13 DVSS EMI3_DQ8 DVSS DVSS DVDD18_IOEMMC C
DVSS DVSS DVSS DVSS DVSS DVSS DVSS EMMC_DAT0 DVSS EMMC_DAT4 EMMC_DAT2 EMMC_DAT7 D
DVSS EMI3_DQS0_T DVSS EMI3_DQ12 EMI3_DQ10 DVSS EMMC_DAT3 DVSS EMMC_RSTB EMMC_DSL EMMC_DAT6 E
DVSS EMI3_DQS0_C DVSS DVSS DVSS DVSS EMMC_CLK EMMC_CMD DVSS DVSS EMMC_DAT1 EMMC_DAT5 F
DVSS DVSS DVSS DVSS I2SO2_D2 I2SO2_D1 I2SIN_D2 I2SIN_D1 DVSS DVSS I2SIN_MCK DVDD18_IOLT G
DVSS DVDD18_VQPS DVSS DVSS DVSS KPCOL0 I2SO2_D3 I2SO2_BCK I2SO2_MCK I2SIN_D3 I2SIN_BCK H
DVSS DVSS DVSS DVSS KPROW0 KPCOL1 I2SO2_D0 I2SO2_WS I2SIN_WS I2SIN_D0 J
SPMI_M_
DVDD_PROC_B DVDD_PROC_B DVDD_PROC_B DVSS KPROW1 PWRAP_SPI_CK PWRAP_SPI_CSN SPMI_M_SCL PMIC_WATCHDOG SCL4 SDA4 K
SDA
PWRAP_SPI_ PMIC_
DVDD_PROC_B DVDD_PROC_B DVDD_PROC_B DVSS PWRAP_SPI_MI PMIC_SRCLKENA1 SDA1 L
MO SRCLKENA0
AUD_DAT_ AUD_SYNC_
DVDD_PROC_B DVDD_PROC_B DVDD_PROC_B DVSS SCP_VREQ_VAO AUD_DAT_MISO1 AUD_CLK_MOSI AUD_DAT_MOSI0 SCL1 DVSS M
MISO0 MOSI
DVDD_SRAM_
DVSS DVSS DVSS DMIC1_CLK DMIC1_DAT AUD_DAT_MOSI1 DMIC2_CLK DVSS PMIC_RTC32K_CK N
PROC_B
Table 4-4 shows pin mapping on the middle left part of the package.
P CSI0B_L0N_T0B CSI0B_L0P_T0A CSI0B_L1P_T0C CSI0B_L1N_T1A CSI0B_L2P_T1B CSI0B_L2N_T1C DVSS AVDD12_CSI0 DVSS DVSS DVSS DVSS
DVDD_SRAM
R DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS
_MM
T JTDO JTRST DVSS JTDI JTCK JTMS SPIM1_MISO SPIM1_MOSI SPIM1_CSB SPIM1_CLK SPIM0_CLK DVSS
U UART0_TXD UART0_RXD UART2_TXD UART2_RXD SPIM0_MIO2 SPIM0_MIO3 DVDD28_IODPI GPIO01 DVDD_CORE DVDD_CORE
AVDD18_
V UART1_TXD UART1_RXD GPIO09 GPIO10 SPIM0_CSB SPIM0_MOSI SPIM0_MISO DVSS
PLLGP34
AVDD18_
W SDA3 SCL3 GPIO06 GPIO07 GPIO08 SDA0 GPIO05 GPIO11 DVSS
PLLGP34
Y SCL2 SCL0 DSI1_DSI_TE GPIO02 GPIO03 GPIO04 DSI0_LCM_RST GPIO00 DISP_PWM1 DVDD_APU
AA PCIE_CLKREQ_N SDA2 PCIE_PERESET_N PCIE_WAKE_N DPI_D11 DPI_D12 DSI0_DSI_TE DPI_D5 DISP_PWM0 DVDD18_IORM DSI1_LCM_RST DVDD_APU
DVDD_SRAM
AB DPI_CK DPI_DE DPI_D4 DPI_D15 DPI_D9 DPI_D8 DPI_D7 DPI_D2 DPI_D0 DVSS
_APU
DVDD_SRAM
AC DPI_D3 DPI_D10 DPI_D13 DPI_D14 DPI_D6 DPI_D1 DVSS
_GPU
AD DVDD18_IODPI DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DPI_VSYNC DPI_HSYNC DVSS DVDD_GPU
AVDD12_ AVDD075_DRV
AE AUXIN3 AUXIN2 AUXIN4 AUXIN5 AUXIN0 REFP DVSS DVSS AVDD18_DSI DVSS DVDD_GPU
AUXADC _DSI
Table 4-5 shows pin mapping on the middle center part of the package.
P DVDD_MM DVDD_CORE DVSS DVDD_MM DVSS DVDD_MM DVDD_MM DVSS DVSS DVSS DVDD_PROC_L DVSS
DVDD_SRAM_
R DVDD_MM DVDD_CORE DVSS DVDD_MM DVSS DVDD_MM DVDD_MM DVDD_PROC_L DVSS DVSS DVDD_PROC_L
PROC_L
T DVDD_MM DVDD_MM DVDD_MM DVDD_MM DVSS DVDD_CORE DVDD_PROC_L DVSS DVSS DVDD_PROC_L
TN_
U DVDD_CORE DVDD_CORE DVDD_CORE DVDD_CORE AVDD12_PLLGP1 DVDD_CORE DVSS DVDD_PROC_L DVSS DVDD_PROC_L DVDD_PROC_L
APPLLGP
AVDD12_ DVDD_SRAM_
V DVSS DVDD_APU DVDD_CORE DVDD_CORE TP_APPLLGP AVDD18_PLLGP1 DVSS DVDD_PROC_L DVSS DVSS
PLLGP34 PROC_L
AVDD12_
W DVSS DVDD_APU AVDD18_APU DVSS DVDD_CORE DVDD_CORE DVSS DVSS DVSS DVDD_PROC_L DVSS
PLLGP34
Y DVDD_APU DVSS DVDD_APU DVDD_APU DVSS DVDD_CORE DVDD_CORE DVSS DVDD_SRAM_CORE DVDD_CORE DVDD_CORE DVDD_CORE
AA DVDD_APU DVSS DVDD_APU DVDD_APU DVSS DVDD_CORE DVDD_CORE DVSS DVSS DVDD_CORE DVDD_CORE DVSS
AB DVDD_APU DVSS DVDD_APU DVSS DVSS DVDD_CORE DVDD_CORE DVSS DVSS DVDD_CORE DVDD_CORE DVSS
AC DVDD_GPU DVDD_GPU AVDD12_PLLGP2 AVDD18_PLLGP2 DVSS DVDD_CORE DVDD_CORE DVSS DVSS DVDD_CORE DVDD_CORE DVSS
AD DVDD_GPU DVDD_GPU DVDD_GPU DVSS DVSS DVDD_ADSP DVDD_ADSP DVSS DVDD_SRAM_CORE DVDD_CORE DVDD_CORE DVSS
AE DVDD_GPU DVDD_GPU DVDD_GPU DVSS DVSS DVDD_ADSP DVDD_ADSP DVSS DVSS DVDD_CORE DVDD_CORE
Table 4-6 shows pin mapping on the Middle Right part of the package.
DVDD_PROC_L DVDD_PROC_L DVDD_PROC_L DVSS GPIO13 GPIO14 SYSRSTB USB1_VBUS_VALID TESTMODE DVSS DVSS DVSS T
DVDD_PROC_L DVDD_PROC_L AVDD18_USB_P2 AVDD33_USB_P2 DVSS DVSS GPIO15 AVDD33_USB_P0 DVSS DVSS USB_DM_P1 USB_DP_P1 U
DVSS DVDD_PROC_L DVSS DVSS DVSS AVDD33_USB_P1 DVSS USB_DP_P2 USB_DM_P2 DVSS V
AVDD18_USB_P0 AVDD12_USB_P0 DVSS USB_DM_P0 USB_DP_P0 DVSS DVSS DVSS SSUSB_RXN SSUSB_RXP W
DVSS AVDD12_USB_P1 AVDD12_USB_P2 DVSS DVSS DVSS SSUSB_TXP SSUSB_TXN DVSS DVSS Y
DVDD28_
DVSS DVSS AVDD18_USB_P1 DVSS DVSS DVSS GPIO17 AA
MSDC2
DVDD18_
DVSS DVSS DVSS PCM_DI GPIO16 DPTX_HPD HDMITX_PWR5V MSDC2_DAT3 MSDC2_DAT2 AB
MSDC2
MSDC2_
DVSS AVDD12_CKSQ AVDD18_CKSQ PCM_CLK DVDD18_IOLM HDMITX_SCL HDMITX_SDA DVSS MSDC2_CLK MSDC2_DAT0 AD
DAT1
DVSS DVSS DVSS DVSS DVSS DVSS DVSS X26M_IN DVSS DVSS AE
Table 4-7 shows pin mapping on the Bottom Left part of the package.
AF AVDD18_AUXADC AUXIN1 DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVDD_SRAM_GPU
AH DVSS DSI0_D3N DSI0_D1N_T2B DSI0_D1P_T2A DSI0_D0N_T1A DSI0_CKP_T1B DSI0_CKN_T1C DVSS DVSS AVDD12_DSI AVDD18_PCIE DVSS
AJ DSI0_D3P_T2C DVSS DVSS DVSS DVSS DVSS DVSS AVDD12_PCIE DVSS DVSS
AL DVSS DVSS DSI1_D2P_T0A DSI1_D2N_T0B DSI1_D0P_T0C DSI1_D1N_T2B DSI1_D1P_T2A DSI1_D3P_T2C DVSS DVSS DVSS DVSS EMI1_DQ4
AM PCIE_LN0_TXP PCIE_LN0_TXN DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS EMI1_DQS0_C DVSS DVSS
AN DVSS PCIE_CKN PCIE_CKP DVSS DVSS DVSS EMI1_DQ10 EMI1_DQ12 DVSS EMI1_DQS0_T DVSS EMI1_DQ3
AP PCIE_LN0_RXN PCIE_LN0_RXP DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS DVSS EMI1_DQ5
AR DVSS EMI0_TP EMI1_DQ8 DVSS EMI1_DQ13 DVSS DVSS EMI1_DQ11 DVSS EMI1_DQ2 DVSS DVSS
AT DUMMY EMI0_EXTR DVSS DVSS EMI1_DQS1_C DVSS DVSS EMI1_DQ14 DVSS EMI1_DQ7 DVSS EMI1_DQ1 DVSS
AU DUMMY DUMMY DVSS EMI1_DQ9 EMI1_DQS1_T DVSS EMI1_DMI1 EMI1_DQ15 EMI1_DQ0 EMI1_DMI0
1 2 3 4 5 6 7 8 9 10 11 12 13
Table 4-8 shows pin mapping on the Bottom Center part of the package.
AF DVDD_GPU DVDD_GPU DVDD_GPU DVDD_GPU DVSS DVDD_ADSP DVDD_ADSP DVSS DVDD_SRAM_CORE DVDD_CORE DVDD_CORE
AG DVDD_CORE
AH AVDD075_EMI0 AVDD2_EMI0 AVDDQ_EMI0 AVDD2_EMI0 AVDDQ_EMI0 AVDD2_EMI0 AVDDQ_EMI0 AVDD2_EMI0 AVDDQ_EMI0 AVDD2_EMI0 AVDD075_EMI0 AVDD18_EMI0
AJ AVDD12_EMI0 AVDDQ_EMI0 DVSS AVDDQ_EMI0 DVSS AVDDQ_EMI0 DVSS AVDDQ_EMI0 DVSS AVDDQ_EMI0 AVDDQ_EMI0 DVSS
AK DVSS DVSS DVSS DVSS DVSS NC DVSS DVSS DVSS DVSS DVSS DVSS
AL DVSS EMI1_CA2 EMI1_CA5 DVSS EMI1_CK_C DVSS EMI0_CK_C DVSS NC DVSS EMI0_DQ4 EMI0_DQ2
AM DVSS NC DVSS DVSS EMI1_CK_T DVSS EMI0_CK_T DVSS EMI0_CA3 EMI0_CA2 DVSS DVSS
AN DVSS DVSS EMI1_CA4 DVSS DVSS DVSS DVSS EMI0_CA4 DVSS DVSS DVSS EMI0_DQ5
AP DVSS DVSS EMI1_CA3 DVSS DVSS NC DVSS EMI0_CA5 DVSS DVSS DVSS EMI0_DQ3
AR DVSS DVSS EMI1_CA1 DVSS EMI1_CS0 DVSS EMI0_CS0 DVSS EMI0_CA1 DVSS DVSS DVSS
14 15 16 17 18 19 20 21 22 23 24 25
Table 4-9 shows pin mapping on the Bottom Right part of the package.
DVSS DVSS DVSS DVSS DVSS EDP_LN1_TXN EDP_LN1_TXP DVSS DVSS DVSS EDPAUXP EDPAUXN AF
AVDD18_EDPTX AVDD12_EDPTX DVSS EDP_LN0_TXN EDP_LN0_TXP DVSS DVSS DVSS DVSS DP_LN0_TXP AG
DVSS DVSS DVSS AVDD12_DPTX DVSS DVSS DVSS DP_LN2_TXN DP_LN2_TXP DVSS DPAUXP DPAUXN AJ
DVSS DVSS DVSS DVSS DVSS DP_LN3_TXN DP_LN3_TXP DVSS DVSS HDMITX21_CH2_P AK
DVSS DVSS DVSS DVSS EMI0_DQ10 EMI0_DQ13 DVSS DVSS DVSS DVSS DVSS AP
HDMITX21_CLK_ HDMITX21_CLK_
DVSS DVSS DVSS EMI0_DQ12 DVSS DVSS EMI0_DQS1_C DVSS AR
P M
EMI0_DQ1 DVSS EMI0_DQ7 DVSS EMI0_DQ14 DVSS EMI0_DQS1_T DVSS DVSS DVSS DVSS DUMMY AT
26 27 28 29 30 31 32 33 34 35 36 37
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO3 DIO 0
TP_GPIO3_AO DIO 1
SPIM5_MISO DIO 2
GPIO03 Y7 UCTS1 DI 3 0 DVDD18_IORM OFF I
DMIC4_CLK DO 4
I2SIN_D0 DI 5
I2SO2_D0 DO 6
GPIO4 DIO 0
TP_GPIO4_AO DIO 1
SPDIF_IN2 DI 2
GPIO04 Y8 I2SO1_MCK DO 3 0 DVDD18_IORM OFF I
DMIC4_DAT DI 4
I2SIN_D1 DI 5
I2SO2_D1 DO 6
GPIO5 DIO 0
TP_GPIO5_AO DIO 1
SPDIF_IN1 DI 2
GPIO05 W7 I2SO1_BCK DO 3 0 DVDD18_IORM OFF I
DMIC4_DAT_R DI 4
I2SIN_D2 DI 5
I2SO2_D2 DO 6
GPIO6 DIO 0
TP_GPIO6_AO DIO 1
SPDIF_IN0 DI 2
GPIO06 W3 I2SO1_WS DO 3 0 DVDD18_IORM OFF I
DMIC1_CLK DO 4
I2SIN_D3 DI 5
I2SO2_D3 DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO7 DIO 0
TP_GPIO7_AO DIO 1
SPIM3_CSB DO 2
GPIO07 W4 TDMIN_MCK DIO 3 0 DVDD18_IORM OFF I
DMIC1_DAT DI 4
CMVREF0 DO 5
CLKM0 DO 6
GPIO8 DIO 0
TP_GPIO0_AO DIO 1
SPIM3_CLK DO 2
GPIO08 W5 TDMIN_BCK DIO 3 0 DVDD18_IORM OFF I
DMIC1_DAT_R DI 4
CMVREF1 DO 5
CLKM1 DO 6
GPIO9 DIO 0
TP_GPIO1_AO DIO 1
SPIM3_MOSI DIO 2
GPIO09 V4 TDMIN_LRCK DIO 3 0 DVDD18_IORM OFF I
DMIC2_CLK DO 4
CMFLASH0 DO 5
PWM_0 DO 6
GPIO10 DIO 0
TP_GPIO2_AO DIO 1
SPIM3_MISO DIO 2
GPIO10 V5 TDMIN_DI DI 3 0 DVDD18_IORM OFF I
DMIC2_DAT DI 4
CMFLASH1 DO 5
PWM_1 DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO11 DIO 0
TP_GPIO3_AO DIO 1
SPDIF_OUT DO 2
GPIO11 W8 0 DVDD18_IORM OFF I
I2SO1_D0 DO 3
DMIC2_DAT_R DI 4
CMVREF6 DO 6
GPIO12 DIO 0
TP_GPIO4_AO DIO 1
GPIO12 R31 0 DVDD18_IOLT OFF I
SPIM4_CSB DO 2
HDMITX20_HTPLG DI 7
GPIO13 DIO 0
TP_GPIO5_AO DIO 1
GPIO13 T30 0 DVDD18_IOLT OFF I
SPIM4_CLK DO 2
HDMITX20_CEC DIO 7
GPIO14 DIO 0
TP_GPIO6_AO DIO 1
GPIO14 T31 0 DVDD18_IOLT OFF I
SPIM4_MOSI DIO 2
HDMITX20_SCL DIO 7
GPIO15 DIO 0
TP_GPIO7_AO DIO 1
GPIO15 U32 0 DVDD18_IOLT OFF I
SPIM4_MISO DIO 2
HDMITX20_SDA DIO 7
GPIO16 DIO 0
TP_GPIO0_AO DIO 1
GPIO16 AB32 0 DVDD18_IOLM OFF I
UTXD3 DO 2
HDMITX20_PWR5V DO 7
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO17 DIO 0
TP_GPIO1_AO DIO 1
URXD3 DI 2
GPIO17 AA35 0 DVDD18_IOLM OFF I
CMFLASH2 DO 3
EDP_TX_HPD DI 4
CMVREF7 DO 6
GPIO18 DIO 0
TP_GPIO2_AO DIO 1
CMFLASH0 DO 2
CMMPDN0 G4 CMVREF4 DO 3 0 DVDD18_IORT OFF I
TDMIN_MCK DIO 4
UTXD1 DO 5
TP_UTXD1_AO DO 6
GPIO19 DIO 0
TP_GPIO3_AO DIO 1
CMFLASH1 DO 2
CMMRST0 G3 CMVREF5 DO 3 0 DVDD18_IORT OFF I
TDMIN_BCK DIO 4
URXD1 DI 5
TP_URXD1_AO DI 6
GPIO20 DIO 0
TP_GPIO4_AO DIO 1
CMFLASH2 DO 2
CMMPDN1 E3 CLKM2 DO 3 0 DVDD18_IORT OFF I
TDMIN_LRCK DIO 4
URTS1 DO 5
TP_URTS1_AO DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO21 DIO 0
TP_GPIO5_AO DIO 1
CMFLASH3 DO 2
CMMRST1 G5 CLKM3 DO 3 0 DVDD18_IORT OFF I
TDMIN_DI DI 4
UCTS1 DI 5
TP_UCTS1_AO DI 6
GPIO22 DIO 0
CMMCLK0 E4 CMMCLK0 DO 1 0 DVDD18_IORT OFF I
TP_GPIO6_AO DIO 5
GPIO23 DIO 0
CMMCLK1 DO 1
CMMCLK1 E5 PWM_2 DO 3 0 DVDD18_IORT OFF I
TP_GPIO7_AO DIO 5
DP_TX_HPD DI 6
GPIO24 DIO 0
CMMCLK2 DO 1
CMMCLK2 F4 0 DVDD18_IORT OFF I
PWM_3 DO 3
EDP_TX_HPD DI 6
GPIO25 DIO 0
LCM_RST DO 1
DSI0_LCM_RST Y9 0 DVDD18_IORM OFF I
LCM1_RST DO 2
DP_TX_HPD DI 3
GPIO26 DIO 0
DSI_TE DI 1
DSI0_DSI_TE AA7 0 DVDD18_IORM OFF I
DSI1_TE DI 2
EDP_TX_HPD DI 3
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO27 DIO 0
LCM1_RST DO 1
LCM_RST DO 2
DSI1_LCM_RST AA11 0 DVDD18_IORM OFF I
DP_TX_HPD DI 3
CMVREF2 DO 4
PWM_2 DO 6
GPIO28 DIO 0
DSI1_TE DI 1
DSI_TE DI 2
DSI1_DSI_TE Y5 0 DVDD18_IORM OFF I
EDP_TX_HPD DI 3
CMVREF3 DO 4
PWM_3 DO 6
GPIO29 DIO 0
DISP_PWM0 AA9 DISP_PWM0 DO 1 0 DVDD18_IORM OFF I
DISP_PWM1 DO 2
GPIO30 DIO 0
DISP_PWM1 DO 1
DISP_PWM1 Y11 DISP_PWM0 DO 2 0 DVDD18_IORM OFF I
CMFLASH3 DO 3
PWM_1 DO 4
GPIO31 DIO 0
UTXD0 DO 1
UART0_TXD U2 TP_UTXD1_AO DO 2 1 DVDD18_IORM PU OH
TP_UTXD2_AO DO 4
SSPM_UTXD_AO DO 7
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO32 DIO 0
URXD0 DI 1
UART0_RXD U3 TP_URXD1_AO DI 2 1 DVDD18_IORM PU I
TP_URXD2_AO DI 4
SSPM_URXD_AO DI 7
GPIO33 DIO 0
UTXD1 DO 1
UART1_TXD V1 0 DVDD18_IORM OFF I
URTS2 DO 2
TP_UTXD1_AO DO 4
GPIO34 DIO 0
URXD1 DI 1
UART1_RXD V2 0 DVDD18_IORM OFF I
UCTS2 DI 2
TP_URXD1_AO DI 4
GPIO35 DIO 0
UTXD2 DO 1
UART2_TXD U4 URTS1 DO 2 0 DVDD18_IORM OFF I
TP_URTS1_AO DO 4
TP_UTXD2_AO DO 5
GPIO36 DIO 0
URXD2 DI 1
UART2_RXD U5 UCTS1 DI 2 0 DVDD18_IORM OFF I
TP_UCTS1_AO DI 4
TP_URXD2_AO DI 5
JTMS T6 GPIO37 DIO 0 1 DVDD18_IORM PU I
JTCK T5 GPIO38 DIO 0 1 DVDD18_IORM OFF I
JTDI T4 GPIO39 DIO 0 1 DVDD18_IORM PU I
JTDO T1 GPIO40 DIO 0 1 DVDD18_IORM OFF OL
JTRST T2 GPIO41 DIO 0 1 DVDD18_IORM PU I
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO42 DIO 0
KPCOL0 H31 1 DVDD18_IOLT PU I
KPCOL0 DIO 1
GPIO43 DIO 0
KPCOL1 DIO 1
KPCOL1 J31 0 DVDD18_IOLT OFF I
DP_TX_HPD DI 2
CMFLASH2 DO 3
GPIO44 DIO 0
KPROW0 J30 1 DVDD18_IOLT OFF OL
KPROW0 DIO 1
GPIO45 DIO 0
KPROW1 DIO 1
KPROW1 K30 EDP_TX_HPD DI 2 0 DVDD18_IOLT OFF I
CMFLASH3 DO 3
I2SIN_MCK DIO 4
GPIO46 DIO 0
DP_TX_HPD DI 1
DPTX_HPD AB33 0 DVDD18_IOLM OFF I
PWM_0 DO 2
VBUSVALID_2P DI 3
GPIO47 DIO 0
PCIE_WAKE_N AA4 0 DVDD18_IORM OFF I
WAKEN DI 1
GPIO48 DIO 0
PCIE_PERESET_N AA3 0 DVDD18_IORM OFF I
PERSTN DO 1
GPIO49 DIO 0
PCIE_CLKREQ_N AA1 0 DVDD18_IORM OFF I
CLKREQN DIO 1
GPIO50 DIO 0
HDMITX_PWR5V AB34 HDMITX20_PWR5V DO 1 0 DVDD18_IOLM OFF I
IDDIG_1P DI 3
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO51 DIO 0
HDMITX20_HTPLG DI 1
HDMITX_HTPLG AC32 0 DVDD18_IOLM OFF I
EDP_TX_HPD DI 2
USB_DRVVBUS_1P DO 3
GPIO52 DIO 0
HDMITX_CEC AC33 HDMITX20_CEC DIO 1 0 DVDD18_IOLM OFF I
VBUSVALID_1P DI 3
GPIO53 DIO 0
HDMITX_SCL AD32 HDMITX20_SCL DIO 1 0 DVDD18_IOLM OFF I
IDDIG_2P DI 3
GPIO54 DIO 0
HDMITX_SDA AD33 HDMITX20_SDA DIO 1 0 DVDD18_IOLM OFF I
USB_DRVVBUS_2P DO 3
GPIO55 DIO 0
SCL0 DIO 1
SCL0 Y4 1 DVDD18_IORM PU I
SCP_SCL0 DIO 2
SCP_SCL1 DIO 3
GPIO56 DIO 0
SDA0 DIO 1
SDA0 W6 1 DVDD18_IORM PU I
SCP_SDA0 DIO 2
SCP_SDA1 DIO 3
GPIO57 DIO 0
SCL1 M36 1 DVDD18_IOLT PU I
SCL1 DIO 1
GPIO58 DIO 0
SDA1 L36 1 DVDD18_IOLT PU I
SDA1 DIO 1
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO59 DIO 0
SCL2 DIO 1
SCL2 Y2 1 DVDD18_IORM PU I
SCP_SCL0 DIO 2
SCP_SCL1 DIO 3
GPIO60 DIO 0
SDA2 DIO 1
SDA2 AA2 1 DVDD18_IORM PU I
SCP_SDA0 DIO 2
SCP_SDA1 DIO 3
GPIO61 DIO 0
SCL3 DIO 1
SCL3 W2 1 DVDD18_IORM PU I
SCP_SCL0 DIO 2
SCP_SCL1 DIO 3
GPIO62 DIO 0
SDA3 DIO 1
SDA3 W1 1 DVDD18_IORM PU I
SCP_SDA0 DIO 2
SCP_SDA1 DIO 3
GPIO63 DIO 0
SCL4 K36 1 DVDD18_IOLT PU I
SCL4 DIO 1
GPIO64 DIO 0
SDA4 K37 1 DVDD18_IOLT PU I
SDA4 DIO 1
GPIO65 DIO 0
SCL5 DIO 1
SCL5 F5 1 DVDD18_IORT PU I
SCP_SCL0 DIO 2
SCP_SCL1 DIO 3
GPIO66 DIO 0
SDA5 DIO 1
SDA5 F6 1 DVDD18_IORT PU I
SCP_SDA0 DIO 2
SCP_SDA1 DIO 3
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO67 DIO 0
SCL6 DIO 1
SCL6 H7 1 DVDD18_IORT PU I
SCP_SCL0 DIO 2
SCP_SCL1 DIO 3
GPIO68 DIO 0
SDA6 DIO 1
SDA6 G6 1 DVDD18_IORT PU I
SCP_SDA0 DIO 2
SCP_SDA1 DIO 3
GPIO69 DIO 0
SPIM0_CSB DO 1
SPIM0_CSB V6 SCP_SPI0_CS DO 2 0 DVDD18_IORM OFF I
DMIC3_CLK DO 3
CMVREF0 DO 5
GPIO70 DIO 0
SPIM0_CLK DO 1
SPIM0_CLK T11 SCP_SPI0_CK DO 2 0 DVDD18_IORM OFF I
DMIC3_DAT DI 3
CMVREF1 DO 5
GPIO71 DIO 0
SPIM0_MOSI DIO 1
SPIM0_MOSI V7 SCP_SPI0_MO DO 2 0 DVDD18_IORM OFF I
DMIC3_DAT_R DI 3
CMVREF2 DO 5
GPIO72 DIO 0
SPIM0_MISO DIO 1
SPIM0_MISO V8 SCP_SPI0_MI DI 2 0 DVDD18_IORM OFF I
DMIC4_CLK DO 3
CMVREF3 DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO73 DIO 0
SPIM0_MIO2 DIO 1
UTXD3 DO 2
SPIM0_MIO2 U7 0 DVDD18_IORM OFF I
DMIC4_DAT DI 3
CLKM0 DO 4
CMVREF4 DO 5
GPIO74 DIO 0
SPIM0_MIO3 DIO 1
URXD3 DI 2
SPIM0_MIO3 U8 0 DVDD18_IORM OFF I
DMIC4_DAT_R DI 3
CLKM1 DO 4
CMVREF5 DO 5
GPIO75 DIO 0
SPIM1_CSB DO 1
SCP_SPI1_A_CS DO 2
SPIM1_CSB T9 0 DVDD18_IORM OFF I
TDMIN_MCK DIO 3
SCP_SCL0 DIO 4
CMVREF6 DO 5
GPIO76 DIO 0
SPIM1_CLK DO 1
SCP_SPI1_A_CK DO 2
SPIM1_CLK T10 0 DVDD18_IORM OFF I
TDMIN_BCK DIO 3
SCP_SDA0 DIO 4
CMVREF7 DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO77 DIO 0
SPIM1_MOSI DIO 1
SPIM1_MOSI T8 SCP_SPI1_A_MO DO 2 0 DVDD18_IORM OFF I
TDMIN_LRCK DIO 3
SCP_SCL1 DIO 4
GPIO78 DIO 0
SPIM1_MISO DIO 1
SPIM1_MISO T7 SCP_SPI1_A_MI DI 2 0 DVDD18_IORM OFF I
TDMIN_DI DI 3
SCP_SDA1 DIO 4
GPIO79 DIO 0
SPIM2_CSB DO 1
SCP_SPI2_CS DO 2
SPIM2_CSB G2 I2SO1_MCK DO 3 0 DVDD18_IORT OFF I
UTXD2 DO 4
TP_UTXD2_AO DO 5
PCM_SYNC DIO 6
GPIO80 DIO 0
SPIM2_CLK DO 1
SCP_SPI2_CK DO 2
SPIM2_CLK G1 I2SO1_BCK DO 3 0 DVDD18_IORT OFF I
URXD2 DI 4
TP_URXD2_AO DI 5
PCM_CLK DIO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO81 DIO 0
SPIM2_MOSI DIO 1
SCP_SPI2_MO DO 2
SPIM2_MOSI F2 I2SO1_WS DO 3 0 DVDD18_IORT OFF I
URTS2 DO 4
TP_URTS2_AO DO 5
PCM_DO DO 6
GPIO82 DIO 0
SPIM2_MISO DIO 1
SCP_SPI2_MI DI 2
SPIM2_MISO E2 I2SO1_D0 DO 3 0 DVDD18_IORT OFF I
UCTS2 DI 4
TP_UCTS2_AO DI 5
PCM_DI DI 6
GPIO83 DIO 0
USB0_IDDIG R36 0 DVDD18_IOLT OFF I
IDDIG DI 1
GPIO84 DIO 0
USB0_DRV_VBUS P36 0 DVDD18_IOLT OFF I
USB_DRVVBUS DO 1
GPIO85 DIO 0
USB0_VBUS_VALID P34 0 DVDD18_IOLT OFF I
VBUSVALID DI 1
GPIO86 DIO 0
IDDIG_1P DI 1
UTXD1 DO 2
USB1_IDDIG R34 URTS2 DO 3 0 DVDD18_IOLT OFF I
PWM_2 DO 4
TP_GPIO4_AO DIO 5
AUXIF_ST0 DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO87 DIO 0
USB_DRVVBUS_1P DO 1
URXD1 DI 2
USB1_DRV_VBUS R33 UCTS2 DI 3 0 DVDD18_IOLT OFF I
PWM_3 DO 4
TP_GPIO5_AO DIO 5
AUXIF_CLK0 DO 6
GPIO88 DIO 0
VBUSVALID_1P DI 1
UTXD2 DO 2
USB1_VBUS_VALID T33 URTS1 DO 3 0 DVDD18_IOLT OFF I
CLKM2 DO 4
TP_GPIO6_AO DIO 5
AUXIF_ST1 DO 6
GPIO89 DIO 0
IDDIG_2P DI 1
URXD2 DI 2
USB2_IDDIG P31 UCTS1 DI 3 0 DVDD18_IOLT OFF I
CLKM3 DO 4
TP_GPIO7_AO DIO 5
AUXIF_CLK1 DO 6
GPIO90 DIO 0
USB2_DRV_VBUS P32 USB_DRVVBUS_2P DO 1 0 DVDD18_IOLT OFF I
UTXD3 DO 2
GPIO91 DIO 0
USB2_VBUS_VALID R30 VBUSVALID_2P DI 1 0 DVDD18_IOLT OFF I
URXD3 DI 2
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO92 DIO 0
PWRAP_SPI_CSN K32 1 DVDD18_IOLT PU OH
PWRAP_SPI0_CSN DO 1
GPIO93 DIO 0
PWRAP_SPI_CK K31 1 DVDD18_IOLT OFF OL
PWRAP_SPI0_CK DO 1
GPIO94 DIO 0
PWRAP_SPI_MO L30 PWRAP_SPI0_MO DIO 1 1 DVDD18_IOLT OFF I
PWRAP_SPI0_MI DIO 2
GPIO95 DIO 0
PWRAP_SPI_MI L31 PWRAP_SPI0_MI DIO 1 1 DVDD18_IOLT OFF I
PWRAP_SPI0_MO DIO 2
GPIO96 DIO 0
PMIC_SRCLKENA0 L33 1 DVDD18_IOLT PU OH
SRCLKENA0 DO 1
GPIO97 DIO 0
PMIC_SRCLKENA1 L34 1 DVDD18_IOLT PU OH
SRCLKENA1 DO 1
GPIO98 DIO 0
SCP_VREQ_VAO M31 0 DVDD18_IOLT OFF I
SCP_VREQ_VAO DO 1
GPIO99 DIO 0
PMIC_RTC32K_CK N37 1 DVDD18_IOLT OFF I
RTC32K_CK DI 1
GPIO100 DIO 0
PMIC_WATCHDOG K34 1 DVDD18_IOLT OFF OL
WATCHDOG DO 1
GPIO101 DIO 0
AUD_CLK_MOSI DO 1
AUD_CLK_MOSI M33 0 DVDD18_IOLT OFF I
I2SO1_MCK DO 2
I2SIN_BCK DIO 3
GPIO102 DIO 0
AUD_SYNC_MOSI DO 1
AUD_SYNC_MOSI M35 0 DVDD18_IOLT OFF I
I2SO1_BCK DO 2
I2SIN_WS DIO 3
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO103 DIO 0
AUD_DAT_MOSI0 DO 1
AUD_DAT_MOSI0 M34 0 DVDD18_IOLT OFF I
I2SO1_WS DO 2
I2SIN_D0 DI 3
GPIO104 DIO 0
AUD_DAT_MOSI1 DO 1
AUD_DAT_MOSI1 N33 0 DVDD18_IOLT OFF I
I2SO1_D0 DO 2
I2SIN_D1 DI 3
GPIO105 DIO 0
AUD_DAT_MISO0 DI 1
AUD_DAT_MISO0 M30 0 DVDD18_IOLT OFF I
VOW_DAT_MISO DI 2
I2SIN_D2 DI 3
GPIO106 DIO 0
AUD_DAT_MISO1 DI 1
AUD_DAT_MISO1 M32 0 DVDD18_IOLT OFF I
VOW_CLK_MISO DI 2
I2SIN_D3 DI 3
GPIO107 DIO 0
I2SIN_MCK DIO 1
SPLIN_MCK DI 2
I2SIN_MCK G36 0 DVDD18_IOLT OFF I
SPDIF_IN0 DI 3
CMVREF4 DO 4
AUXIF_ST0 DO 5
GPIO108 DIO 0
I2SIN_BCK DIO 1
SPLIN_LRCK DI 2
I2SIN_BCK H36 0 DVDD18_IOLT OFF I
DMIC4_CLK DO 3
CMVREF5 DO 4
AUXIF_CLK0 DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO109 DIO 0
I2SIN_WS DIO 1
SPLIN_BCK DI 2
I2SIN_WS J36 0 DVDD18_IOLT OFF I
DMIC4_DAT DI 3
CMVREF6 DO 4
AUXIF_ST1 DO 5
GPIO110 DIO 0
I2SIN_D0 DI 1
SPLIN_D0 DI 2
I2SIN_D0 J37 0 DVDD18_IOLT OFF I
DMIC4_DAT_R DI 3
CMVREF7 DO 4
AUXIF_CLK1 DO 5
GPIO111 DIO 0
I2SIN_D1 DI 1
I2SIN_D1 G33 SPLIN_D1 DI 2 0 DVDD18_IOLT OFF I
DMIC3_CLK DO 3
SPDIF_OUT DO 4
GPIO112 DIO 0
I2SIN_D2 DI 1
SPLIN_D2 DI 2
I2SIN_D2 G32 0 DVDD18_IOLT OFF I
DMIC3_DAT DI 3
TDMIN_MCK DIO 4
I2SO1_WS DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO113 DIO 0
I2SIN_D3 DI 1
SPLIN_D3 DI 2
I2SIN_D3 H35 0 DVDD18_IOLT OFF I
DMIC3_DAT_R DI 3
TDMIN_BCK DIO 4
I2SO1_D0 DO 5
GPIO114 DIO 0
I2SO2_MCK H34 I2SO2_MCK DO 1 0 DVDD18_IOLT OFF I
I2SIN_MCK DIO 2
GPIO115 DIO 0
I2SO2_BCK H33 I2SO2_BCK DIO 1 0 DVDD18_IOLT OFF I
I2SIN_BCK DIO 2
GPIO116 DIO 0
I2SO2_WS J34 I2SO2_WS DIO 1 0 DVDD18_IOLT OFF I
I2SIN_WS DIO 2
GPIO117 DIO 0
I2SO2_D0 J33 I2SO2_D0 DO 1 0 DVDD18_IOLT OFF I
I2SIN_D0 DI 2
GPIO118 DIO 0
I2SO2_D1 G31 I2SO2_D1 DO 1 0 DVDD18_IOLT OFF I
I2SIN_D1 DI 2
GPIO119 DIO 0
I2SO2_D2 DO 1
I2SIN_D2 DI 2
I2SO2_D2 G30 0 DVDD18_IOLT OFF I
UTXD3 DO 3
TDMIN_LRCK DIO 4
I2SO1_MCK DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO120 DIO 0
I2SO2_D3 DO 1
I2SIN_D3 DI 2
I2SO2_D3 H32 0 DVDD18_IOLT OFF I
URXD3 DI 3
TDMIN_DI DI 4
I2SO1_BCK DO 5
GPIO121 DIO 0
PCM_CLK DIO 1
SPIM4_CSB DO 2
PCM_CLK AD30 0 DVDD18_IOLM OFF I
SCP_SPI1_B_CS DO 3
TP_UTXD2_AO DO 4
AUXIF_ST0 DO 5
GPIO122 DIO 0
PCM_SYNC DIO 1
SPIM4_CLK DO 2
PCM_SYNC AC31 0 DVDD18_IOLM OFF I
SCP_SPI1_B_CK DO 3
TP_URXD2_AO DI 4
AUXIF_CLK0 DO 5
GPIO123 DIO 0
PCM_DO DO 1
SPIM4_MOSI DIO 2
PCM_DO AC30 0 DVDD18_IOLM OFF I
SCP_SPI1_B_MO DO 3
TP_URTS2_AO DO 4
AUXIF_ST1 DO 5
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO124 DIO 0
PCM_DI DI 1
SPIM4_MISO DIO 2
PCM_DI AB31 0 DVDD18_IOLM OFF I
SCP_SPI1_B_MI DI 3
TP_UCTS2_AO DI 4
AUXIF_CLK1 DO 5
GPIO125 DIO 0
DMIC1_CLK DO 1
DMIC1_CLK N30 SPINOR_CK DO 2 0 DVDD18_IOLT OFF I
TDMIN_MCK DIO 3
LVTS_FOUT DO 6
GPIO126 DIO 0
DMIC1_DAT DI 1
DMIC1_DAT N31 SPINOR_CS DO 2 0 DVDD18_IOLT OFF I
TDMIN_BCK DIO 3
LVTS_SDO DO 6
GPIO127 DIO 0
DMIC1_DAT_R DI 1
DMIC1_DAT_R P30 SPINOR_IO0 DIO 2 0 DVDD18_IOLT OFF I
TDMIN_LRCK DIO 3
LVTS_26M DI 6
GPIO128 DIO 0
DMIC2_CLK DO 1
DMIC2_CLK N34 SPINOR_IO1 DIO 2 0 DVDD18_IOLT OFF I
TDMIN_DI DI 3
LVTS_SCF DI 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO129 DIO 0
DMIC2_DAT DI 1
DMIC2_DAT P33 SPINOR_IO2 DIO 2 0 DVDD18_IOLT OFF I
SPDIF_IN1 DI 3
LVTS_SCK DI 6
GPIO130 DIO 0
DMIC2_DAT_R DI 1
DMIC2_DAT_R P35 SPINOR_IO3 DIO 2 0 DVDD18_IOLT OFF I
SPDIF_IN2 DI 3
LVTS_SDI DI 6
GPIO131 DIO 0
DPI_D0 DO 1
GBE_TXD3 DO 2
DPI_D0 AB9 DMIC1_CLK DO 3 0 DVDD28_IODPI OFF I
I2SO2_MCK DO 4
TP_GPIO0_AO DIO 5
SPIM5_CSB DO 6
GPIO132 DIO 0
DPI_D1 DO 1
GBE_TXD2 DO 2
DPI_D1 AC9 DMIC1_DAT DI 3 0 DVDD28_IODPI OFF I
I2SO2_BCK DIO 4
TP_GPIO1_AO DIO 5
SPIM5_CLK DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO133 DIO 0
DPI_D2 DO 1
GBE_TXD1 DO 2
DPI_D2 AB8 DMIC1_DAT_R DI 3 0 DVDD28_IODPI OFF I
I2SO2_WS DIO 4
TP_GPIO2_AO DIO 5
SPIM5_MOSI DIO 6
GPIO134 DIO 0
DPI_D3 DO 1
GBE_TXD0 DO 2
DPI_D3 AC4 DMIC2_CLK DO 3 0 DVDD28_IODPI OFF I
I2SO2_D0 DO 4
TP_GPIO3_AO DIO 5
SPIM5_MISO DIO 6
GPIO135 DIO 0
DPI_D4 DO 1
GBE_RXD3 DI 2
DPI_D4 AB3 DMIC2_DAT DI 3 0 DVDD28_IODPI OFF I
I2SO2_D1 DO 4
TP_GPIO4_AO DIO 5
WAKEN DI 6
GPIO136 DIO 0
DPI_D5 DO 1
GBE_RXD2 DI 2
DPI_D5 AA8 DMIC2_DAT_R DI 3 0 DVDD28_IODPI OFF I
I2SO2_D2 DO 4
TP_GPIO5_AO DIO 5
PERSTN DO 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO137 DIO 0
DPI_D6 DO 1
GBE_RXD1 DI 2
DMIC3_CLK DO 3
DPI_D6 AC8 0 DVDD28_IODPI OFF I
I2SO2_D3 DO 4
TP_GPIO6_AO DIO 5
CLKREQN DIO 6
PWM_0 DO 7
GPIO138 DIO 0
DPI_D7 DO 1
GBE_RXD0 DI 2
DPI_D7 AB7 0 DVDD28_IODPI OFF I
DMIC3_DAT DI 3
CLKM2 DO 4
TP_GPIO7_AO DIO 5
GPIO139 DIO 0
DPI_D8 DO 1
GBE_TXC DIO 2
DPI_D8 AB6 DMIC3_DAT_R DI 3 0 DVDD28_IODPI OFF I
CLKM3 DO 4
TP_UTXD2_AO DO 5
UTXD2 DO 6
GPIO140 DIO 0
DPI_D9 DO 1
GBE_RXC DI 2
DPI_D9 AB5 DMIC4_CLK DO 3 0 DVDD28_IODPI OFF I
PWM_2 DO 4
TP_URXD2_AO DI 5
URXD2 DI 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO141 DIO 0
DPI_D10 DO 1
GBE_RXDV DI 2
DPI_D10 AC5 DMIC4_DAT DI 3 0 DVDD28_IODPI OFF I
PWM_3 DO 4
TP_URTS2_AO DO 5
URTS2 DO 6
GPIO142 DIO 0
DPI_D11 DO 1
GBE_TXEN DO 2
DPI_D11 AA5 DMIC4_DAT_R DI 3 0 DVDD28_IODPI OFF I
PWM_1 DO 4
TP_UCTS2_AO DI 5
UCTS2 DI 6
GPIO143 DIO 0
DPI_D12 DO 1
GBE_MDC DO 2
DPI_D12 AA6 0 DVDD28_IODPI OFF I
CLKM0 DO 4
SPIM3_CSB DO 5
UTXD1 DO 6
GPIO144 DIO 0
DPI_D13 DO 1
GBE_MDIO DIO 2
DPI_D13 AC6 0 DVDD28_IODPI OFF I
CLKM1 DO 4
SPIM3_CLK DO 5
URXD1 DI 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO145 DIO 0
DPI_D14 DO 1
GBE_TXER DO 2
DPI_D14 AC7 0 DVDD28_IODPI OFF I
CMFLASH0 DO 4
SPIM3_MOSI DIO 5
GBE_AUX_PPS2 DIO 6
GPIO146 DIO 0
DPI_D15 DO 1
GBE_RXER DI 2
DPI_D15 AB4 0 DVDD28_IODPI OFF I
CMFLASH1 DO 4
SPIM3_MISO DIO 5
GBE_AUX_PPS3 DIO 6
GPIO147 DIO 0
DPI_HSYNC DO 1
GBE_COL DI 2
DPI_HSYNC AD11 I2SO1_MCK DO 3 0 DVDD28_IODPI OFF I
CMVREF0 DO 4
SPDIF_OUT DO 5
URTS1 DO 6
GPIO148 DIO 0
DPI_VSYNC DO 1
GBE_INTR DI 2
DPI_VSYNC AD10 I2SO1_BCK DO 3 0 DVDD28_IODPI OFF I
CMVREF1 DO 4
SPDIF_IN0 DI 5
UCTS1 DI 6
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO149 DIO 0
DPI_DE DO 1
GBE_AUX_PPS0 DIO 2
DPI_DE AB2 I2SO1_WS DO 3 0 DVDD28_IODPI OFF I
CMVREF2 DO 4
SPDIF_IN1 DI 5
UTXD3 DO 6
GPIO150 DIO 0
DPI_CK DO 1
GBE_AUX_PPS1 DIO 2
DPI_CK AB1 I2SO1_D0 DO 3 0 DVDD28_IODPI OFF I
CMVREF3 DO 4
SPDIF_IN2 DI 5
URXD3 DI 6
GPIO151 DIO 0
EMMC_DAT7 D37 1 DVDD18_IOEMMC PU I
MSDC0_DAT7 DIO 1
GPIO152 DIO 0
EMMC_DAT6 E36 1 DVDD18_IOEMMC PU I
MSDC0_DAT6 DIO 1
GPIO153 DIO 0
EMMC_DAT5 F37 1 DVDD18_IOEMMC PU I
MSDC0_DAT5 DIO 1
GPIO154 DIO 0
EMMC_DAT4 D35 1 DVDD18_IOEMMC PU I
MSDC0_DAT4 DIO 1
GPIO155 DIO 0
EMMC_RSTB E34 1 DVDD18_IOEMMC PU OH
MSDC0_RSTB DO 1
GPIO156 DIO 0
EMMC_CMD F33 1 DVDD18_IOEMMC PU I
MSDC0_CMD DIO 1
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO157 DIO 0
EMMC_CLK F32 1 DVDD18_IOEMMC OFF OL
MSDC0_CLK DO 1
GPIO158 DIO 0
EMMC_DAT3 E32 1 DVDD18_IOEMMC PU I
MSDC0_DAT3 DIO 1
GPIO159 DIO 0
EMMC_DAT2 D36 1 DVDD18_IOEMMC PU I
MSDC0_DAT2 DIO 1
GPIO160 DIO 0
EMMC_DAT1 F36 1 DVDD18_IOEMMC PU I
MSDC0_DAT1 DIO 1
GPIO161 DIO 0
EMMC_DAT0 D33 1 DVDD18_IOEMMC PU I
MSDC0_DAT0 DIO 1
GPIO162 DIO 0
EMMC_DSL E35 1 DVDD18_IOEMMC OFF I
MSDC0_DSL DI 1
GPIO163 DIO 0
MSDC1_CMD D3 MSDC1_CMD DIO 1 0 DVDD28_MSDC1 OFF I
SPDIF_OUT DO 2
GPIO164 DIO 0
MSDC1_CLK D4 MSDC1_CLK DO 1 0 DVDD28_MSDC1 OFF I
SPDIF_IN0 DI 2
GPIO165 DIO 0
MSDC1_DAT0 D2 MSDC1_DAT0 DIO 1 0 DVDD28_MSDC1 OFF I
SPDIF_IN1 DI 2
GPIO166 DIO 0
MSDC1_DAT1 D1 MSDC1_DAT1 DIO 1 0 DVDD28_MSDC1 OFF I
SPDIF_IN2 DI 2
GPIO167 DIO 0
MSDC1_DAT2 C4 MSDC1_DAT2 DIO 1 0 DVDD28_MSDC1 OFF I
PWM_0 DO 2
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO168 DIO 0
MSDC1_DAT3 DIO 1
MSDC1_DAT3 C3 0 DVDD28_MSDC1 OFF I
PWM_1 DO 2
CLKM0 DO 3
GPIO169 DIO 0
MSDC2_CMD DIO 1
MSDC2_CMD AC35 0 DVDD28_MSDC2 OFF I
LVTS_FOUT DO 2
TDMIN_MCK DIO 6
GPIO170 DIO 0
MSDC2_CLK DO 1
MSDC2_CLK AD35 0 DVDD28_MSDC2 OFF I
LVTS_SDO DO 2
TDMIN_BCK DIO 6
GPIO171 DIO 0
MSDC2_DAT0 DIO 1
MSDC2_DAT0 AD37 0 DVDD28_MSDC2 OFF I
LVTS_26M DI 2
TDMIN_LRCK DIO 6
GPIO172 DIO 0
MSDC2_DAT1 DIO 1
MSDC2_DAT1 AD36 0 DVDD28_MSDC2 OFF I
LVTS_SCF DI 2
TDMIN_DI DI 6
GPIO173 DIO 0
MSDC2_DAT2 AB37 MSDC2_DAT2 DIO 1 0 DVDD28_MSDC2 OFF I
LVTS_SCK DI 2
GPIO174 DIO 0
MSDC2_DAT3 AB35 MSDC2_DAT3 DIO 1 0 DVDD28_MSDC2 OFF I
LVTS_SDI DI 2
GPIO175 DIO 0
SPMI_M_SCL K33 1 DVDD18_IOLT OFF OL
SPMI_M_SCL DIO 1
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
GPIO176 DIO 0
SPMI_M_SDA K35 1 DVDD18_IOLT OFF I
SPMI_M_SDA DIO 1
SYSRSTB T32 SYSRSTB DI DVDD18_IOLT
TESTMODE T34 TESTMODE DI DVDD18_IOLT
X26M_IN AE34 X26M_IN AI AVDD12_CKSQ
EMI0_CA0 AT22 EMI0_CA0 DO DDRIO AVDDQ_EMI
EMI0_CA1 AR22 EMI0_CA1 DO DDRIO AVDDQ_EMI
EMI0_CA2 AM23 EMI0_CA2 DO DDRIO AVDDQ_EMI
EMI0_CA3 AM22 EMI0_CA3 DO DDRIO AVDDQ_EMI
EMI0_CA4 AN21 EMI0_CA4 DO DDRIO AVDDQ_EMI
EMI0_CA5 AP21 EMI0_CA5 DO DDRIO AVDDQ_EMI
EMI0_CK_C AL20 EMI0_CK_C DO DDRIO AVDDQ_EMI
EMI0_CK_T AM20 EMI0_CK_T DO DDRIO AVDDQ_EMI
EMI0_CKE0 AU20 EMI0_CKE0 DO DDRIO AVDDQ_EMI
EMI0_CKE1 AT20 EMI0_CKE1 DO DDRIO AVDDQ_EMI
EMI0_CS0 AR20 EMI0_CS0 DO DDRIO AVDDQ_EMI
EMI0_CS1 AU22 EMI0_CS1 DO DDRIO AVDDQ_EMI
EMI0_DMI0 AU25 EMI0_DMI0 DIO DDRIO AVDDQ_EMI
EMI0_DMI1 AU31 EMI0_DMI1 DIO DDRIO AVDDQ_EMI
EMI0_DQ0 AU27 EMI0_DQ0 DIO DDRIO AVDDQ_EMI
EMI0_DQ1 AT26 EMI0_DQ1 DIO DDRIO AVDDQ_EMI
EMI0_DQ10 AP30 EMI0_DQ10 DIO DDRIO AVDDQ_EMI
EMI0_DQ11 AN29 EMI0_DQ11 DIO DDRIO AVDDQ_EMI
EMI0_DQ12 AR29 EMI0_DQ12 DIO DDRIO AVDDQ_EMI
EMI0_DQ13 AP31 EMI0_DQ13 DIO DDRIO AVDDQ_EMI
EMI0_DQ14 AT30 EMI0_DQ14 DIO DDRIO AVDDQ_EMI
EMI0_DQ15 AU29 EMI0_DQ15 DIO DDRIO AVDDQ_EMI
EMI0_DQ2 AL25 EMI0_DQ2 DIO DDRIO AVDDQ_EMI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
EMI0_DQ3 AP25 EMI0_DQ3 DIO DDRIO AVDDQ_EMI
EMI0_DQ4 AL24 EMI0_DQ4 DIO DDRIO AVDDQ_EMI
EMI0_DQ5 AN25 EMI0_DQ5 DIO DDRIO AVDDQ_EMI
EMI0_DQ6 AT24 EMI0_DQ6 DIO DDRIO AVDDQ_EMI
EMI0_DQ7 AT28 EMI0_DQ7 DIO DDRIO AVDDQ_EMI
EMI0_DQ8 AU34 EMI0_DQ8 DIO DDRIO AVDDQ_EMI
EMI0_DQ9 AN31 EMI0_DQ9 DIO DDRIO AVDDQ_EMI
EMI0_DQS0_C AN27 EMI0_DQS0_C DIO DDRIO AVDDQ_EMI
EMI0_DQS0_T AM27 EMI0_DQS0_T DIO DDRIO AVDDQ_EMI
EMI0_DQS1_C AR32 EMI0_DQS1_C DIO DDRIO AVDDQ_EMI
EMI0_DQS1_T AT32 EMI0_DQS1_T DIO DDRIO AVDDQ_EMI
EMI0_EXTR AT2 EMI0_EXTR AIO DDRIO AVDDQ_EMI
EMI0_RESET_N AU35 EMI0_RESET_N DO DDRIO AVDDQ_EMI
EMI0_TP AR3 EMI0_TP AIO DDRIO AVDDQ_EMI
EMI1_CA0 AT16 EMI1_CA0 DO DDRIO AVDDQ_EMI
EMI1_CA1 AR16 EMI1_CA1 DO DDRIO AVDDQ_EMI
EMI1_CA2 AL15 EMI1_CA2 DO DDRIO AVDDQ_EMI
EMI1_CA3 AP16 EMI1_CA3 DO DDRIO AVDDQ_EMI
EMI1_CA4 AN16 EMI1_CA4 DO DDRIO AVDDQ_EMI
EMI1_CA5 AL16 EMI1_CA5 DO DDRIO AVDDQ_EMI
EMI1_CK_C AL18 EMI1_CK_C DO DDRIO AVDDQ_EMI
EMI1_CK_T AM18 EMI1_CK_T DO DDRIO AVDDQ_EMI
EMI1_CKE0 AU18 EMI1_CKE0 DO DDRIO AVDDQ_EMI
EMI1_CKE1 AT18 EMI1_CKE1 DO DDRIO AVDDQ_EMI
EMI1_CS0 AR18 EMI1_CS0 DO DDRIO AVDDQ_EMI
EMI1_CS1 AU16 EMI1_CS1 DO DDRIO AVDDQ_EMI
EMI1_DMI0 AU13 EMI1_DMI0 DIO DDRIO AVDDQ_EMI
EMI1_DMI1 AU7 EMI1_DMI1 DIO DDRIO AVDDQ_EMI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
EMI1_DQ0 AU11 EMI1_DQ0 DIO DDRIO AVDDQ_EMI
EMI1_DQ1 AT12 EMI1_DQ1 DIO DDRIO AVDDQ_EMI
EMI1_DQ10 AN8 EMI1_DQ10 DIO DDRIO AVDDQ_EMI
EMI1_DQ11 AR9 EMI1_DQ11 DIO DDRIO AVDDQ_EMI
EMI1_DQ12 AN9 EMI1_DQ12 DIO DDRIO AVDDQ_EMI
EMI1_DQ13 AR6 EMI1_DQ13 DIO DDRIO AVDDQ_EMI
EMI1_DQ14 AT8 EMI1_DQ14 DIO DDRIO AVDDQ_EMI
EMI1_DQ15 AU9 EMI1_DQ15 DIO DDRIO AVDDQ_EMI
EMI1_DQ2 AR11 EMI1_DQ2 DIO DDRIO AVDDQ_EMI
EMI1_DQ3 AN13 EMI1_DQ3 DIO DDRIO AVDDQ_EMI
EMI1_DQ4 AL13 EMI1_DQ4 DIO DDRIO AVDDQ_EMI
EMI1_DQ5 AP13 EMI1_DQ5 DIO DDRIO AVDDQ_EMI
EMI1_DQ6 AT14 EMI1_DQ6 DIO DDRIO AVDDQ_EMI
EMI1_DQ7 AT10 EMI1_DQ7 DIO DDRIO AVDDQ_EMI
EMI1_DQ8 AR4 EMI1_DQ8 DIO DDRIO AVDDQ_EMI
EMI1_DQ9 AU4 EMI1_DQ9 DIO DDRIO AVDDQ_EMI
EMI1_DQS0_C AM11 EMI1_DQS0_C DIO DDRIO AVDDQ_EMI
EMI1_DQS0_T AN11 EMI1_DQS0_T DIO DDRIO AVDDQ_EMI
EMI1_DQS1_C AT5 EMI1_DQS1_C DIO DDRIO AVDDQ_EMI
EMI1_DQS1_T AU5 EMI1_DQS1_T DIO DDRIO AVDDQ_EMI
EMI2_CA0 B16 EMI2_CA0 DO DDRIO AVDDQ_EMI
EMI2_CA1 C16 EMI2_CA1 DO DDRIO AVDDQ_EMI
EMI2_CA2 F15 EMI2_CA2 DO DDRIO AVDDQ_EMI
EMI2_CA3 F16 EMI2_CA3 DO DDRIO AVDDQ_EMI
EMI2_CA4 E17 EMI2_CA4 DO DDRIO AVDDQ_EMI
EMI2_CA5 D17 EMI2_CA5 DO DDRIO AVDDQ_EMI
EMI2_CK_C G18 EMI2_CK_C DO DDRIO AVDDQ_EMI
EMI2_CK_T F18 EMI2_CK_T DO DDRIO AVDDQ_EMI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
EMI2_CKE0 A18 EMI2_CKE0 DO DDRIO AVDDQ_EMI
EMI2_CKE1 B18 EMI2_CKE1 DO DDRIO AVDDQ_EMI
EMI2_CS0 C18 EMI2_CS0 DO DDRIO AVDDQ_EMI
EMI2_CS1 A16 EMI2_CS1 DO DDRIO AVDDQ_EMI
EMI2_DMI0 A13 EMI2_DMI0 DIO DDRIO AVDDQ_EMI
EMI2_DMI1 A7 EMI2_DMI1 DIO DDRIO AVDDQ_EMI
EMI2_DQ0 A11 EMI2_DQ0 DIO DDRIO AVDDQ_EMI
EMI2_DQ1 B12 EMI2_DQ1 DIO DDRIO AVDDQ_EMI
EMI2_DQ10 D8 EMI2_DQ10 DIO DDRIO AVDDQ_EMI
EMI2_DQ11 E9 EMI2_DQ11 DIO DDRIO AVDDQ_EMI
EMI2_DQ12 C9 EMI2_DQ12 DIO DDRIO AVDDQ_EMI
EMI2_DQ13 D7 EMI2_DQ13 DIO DDRIO AVDDQ_EMI
EMI2_DQ14 B8 EMI2_DQ14 DIO DDRIO AVDDQ_EMI
EMI2_DQ15 A9 EMI2_DQ15 DIO DDRIO AVDDQ_EMI
EMI2_DQ2 G13 EMI2_DQ2 DIO DDRIO AVDDQ_EMI
EMI2_DQ3 D13 EMI2_DQ3 DIO DDRIO AVDDQ_EMI
EMI2_DQ4 G14 EMI2_DQ4 DIO DDRIO AVDDQ_EMI
EMI2_DQ5 E13 EMI2_DQ5 DIO DDRIO AVDDQ_EMI
EMI2_DQ6 B14 EMI2_DQ6 DIO DDRIO AVDDQ_EMI
EMI2_DQ7 B10 EMI2_DQ7 DIO DDRIO AVDDQ_EMI
EMI2_DQ8 A4 EMI2_DQ8 DIO DDRIO AVDDQ_EMI
EMI2_DQ9 E7 EMI2_DQ9 DIO DDRIO AVDDQ_EMI
EMI2_DQS0_C E11 EMI2_DQS0_C DIO DDRIO AVDDQ_EMI
EMI2_DQS0_T F11 EMI2_DQS0_T DIO DDRIO AVDDQ_EMI
EMI2_DQS1_C C6 EMI2_DQS1_C DIO DDRIO AVDDQ_EMI
EMI2_DQS1_T B6 EMI2_DQS1_T DIO DDRIO AVDDQ_EMI
EMI2_EXTR B2 EMI2_EXTR AIO DDRIO AVDDQ_EMI
EMI2_RESET_N B36 EMI2_RESET_N DO DDRIO AVDDQ_EMI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
EMI2_TP A3 EMI2_TP AIO DDRIO AVDDQ_EMI
EMI3_CA0 B22 EMI3_CA0 DO DDRIO AVDDQ_EMI
EMI3_CA1 C22 EMI3_CA1 DO DDRIO AVDDQ_EMI
EMI3_CA2 G23 EMI3_CA2 DO DDRIO AVDDQ_EMI
EMI3_CA3 D22 EMI3_CA3 DO DDRIO AVDDQ_EMI
EMI3_CA4 E22 EMI3_CA4 DO DDRIO AVDDQ_EMI
EMI3_CA5 G22 EMI3_CA5 DO DDRIO AVDDQ_EMI
EMI3_CK_C G20 EMI3_CK_C DO DDRIO AVDDQ_EMI
EMI3_CK_T F20 EMI3_CK_T DO DDRIO AVDDQ_EMI
EMI3_CKE0 A20 EMI3_CKE0 DO DDRIO AVDDQ_EMI
EMI3_CKE1 B20 EMI3_CKE1 DO DDRIO AVDDQ_EMI
EMI3_CS0 C20 EMI3_CS0 DO DDRIO AVDDQ_EMI
EMI3_CS1 A22 EMI3_CS1 DO DDRIO AVDDQ_EMI
EMI3_DMI0 A25 EMI3_DMI0 DIO DDRIO AVDDQ_EMI
EMI3_DMI1 A31 EMI3_DMI1 DIO DDRIO AVDDQ_EMI
EMI3_DQ0 A27 EMI3_DQ0 DIO DDRIO AVDDQ_EMI
EMI3_DQ1 B26 EMI3_DQ1 DIO DDRIO AVDDQ_EMI
EMI3_DQ10 E30 EMI3_DQ10 DIO DDRIO AVDDQ_EMI
EMI3_DQ11 C29 EMI3_DQ11 DIO DDRIO AVDDQ_EMI
EMI3_DQ12 E29 EMI3_DQ12 DIO DDRIO AVDDQ_EMI
EMI3_DQ13 C32 EMI3_DQ13 DIO DDRIO AVDDQ_EMI
EMI3_DQ14 B30 EMI3_DQ14 DIO DDRIO AVDDQ_EMI
EMI3_DQ15 A29 EMI3_DQ15 DIO DDRIO AVDDQ_EMI
EMI3_DQ2 C27 EMI3_DQ2 DIO DDRIO AVDDQ_EMI
EMI3_DQ3 E25 EMI3_DQ3 DIO DDRIO AVDDQ_EMI
EMI3_DQ4 G25 EMI3_DQ4 DIO DDRIO AVDDQ_EMI
EMI3_DQ5 D25 EMI3_DQ5 DIO DDRIO AVDDQ_EMI
EMI3_DQ6 B24 EMI3_DQ6 DIO DDRIO AVDDQ_EMI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
EMI3_DQ7 B28 EMI3_DQ7 DIO DDRIO AVDDQ_EMI
EMI3_DQ8 C34 EMI3_DQ8 DIO DDRIO AVDDQ_EMI
EMI3_DQ9 A34 EMI3_DQ9 DIO DDRIO AVDDQ_EMI
EMI3_DQS0_C F27 EMI3_DQS0_C DIO DDRIO AVDDQ_EMI
EMI3_DQS0_T E27 EMI3_DQS0_T DIO DDRIO AVDDQ_EMI
EMI3_DQS1_C B33 EMI3_DQS1_C DIO DDRIO AVDDQ_EMI
EMI3_DQS1_T A33 EMI3_DQS1_T DIO DDRIO AVDDQ_EMI
DSI0_CKN_T1C AH7 DSI0_CKN_T1C AIO AVDD12_DSI
DSI0_CKP_T1B AH6 DSI0_CKP_T1B AIO AVDD12_DSI
DSI0_D0N_T1A AH5 DSI0_D0N_T1A AIO AVDD12_DSI
DSI0_D0P_T0C AG5 DSI0_D0P_T0C AIO AVDD12_DSI
DSI0_D1N_T2B AH3 DSI0_D1N_T2B AIO AVDD12_DSI
DSI0_D1P_T2A AH4 DSI0_D1P_T2A AIO AVDD12_DSI
DSI0_D2N_T0B AG6 DSI0_D2N_T0B AIO AVDD12_DSI
DSI0_D2P_T0A AG7 DSI0_D2P_T0A AIO AVDD12_DSI
DSI0_D3N AH2 DSI0_D3N AIO AVDD12_DSI
DSI0_D3P_T2C AJ3 DSI0_D3P_T2C AIO AVDD12_DSI
DSI1_CKN_T1C AK6 DSI1_CKN_T1C AIO AVDD12_DSI
DSI1_CKP_T1B AK7 DSI1_CKP_T1B AIO AVDD12_DSI
DSI1_D0N_T1A AK5 DSI1_D0N_T1A AIO AVDD12_DSI
DSI1_D0P_T0C AL5 DSI1_D0P_T0C AIO AVDD12_DSI
DSI1_D1N_T2B AL6 DSI1_D1N_T2B AIO AVDD12_DSI
DSI1_D1P_T2A AL7 DSI1_D1P_T2A AIO AVDD12_DSI
DSI1_D2N_T0B AL4 DSI1_D2N_T0B AIO AVDD12_DSI
DSI1_D2P_T0A AL3 DSI1_D2P_T0A AIO AVDD12_DSI
DSI1_D3N AK8 DSI1_D3N AIO AVDD12_DSI
DSI1_D3P_T2C AL8 DSI1_D3P_T2C AIO AVDD12_DSI
CSI0A_L0N_T0B N3 CSI0A_L0N_T0B AIO AVDD12_CSI
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
CSI0A_L0P_T0A N2 CSI0A_L0P_T0A AIO AVDD12_CSI
CSI0A_L1N_T1A N5 CSI0A_L1N_T1A AIO AVDD12_CSI
CSI0A_L1P_T0C N4 CSI0A_L1P_T0C AIO AVDD12_CSI
CSI0A_L2N_T1C N6 CSI0A_L2N_T1C AIO AVDD12_CSI
CSI0A_L2P_T1B M6 CSI0A_L2P_T1B AIO AVDD12_CSI
CSI0B_L0N_T0B P1 CSI0B_L0N_T0B AIO AVDD12_CSI
CSI0B_L0P_T0A P2 CSI0B_L0P_T0A AIO AVDD12_CSI
CSI0B_L1N_T1A P4 CSI0B_L1N_T1A AIO AVDD12_CSI
CSI0B_L1P_T0C P3 CSI0B_L1P_T0C AIO AVDD12_CSI
CSI0B_L2N_T1C P6 CSI0B_L2N_T1C AIO AVDD12_CSI
CSI0B_L2P_T1B P5 CSI0B_L2P_T1B AIO AVDD12_CSI
CSI1A_L0N_T0B J4 CSI1A_L0N_T0B AIO AVDD12_CSI
CSI1A_L0P_T0A J5 CSI1A_L0P_T0A AIO AVDD12_CSI
CSI1A_L1N_T1A J3 CSI1A_L1N_T1A AIO AVDD12_CSI
CSI1A_L1P_T0C J2 CSI1A_L1P_T0C AIO AVDD12_CSI
CSI1A_L2N_T1C K6 CSI1A_L2N_T1C AIO AVDD12_CSI
CSI1A_L2P_T1B K7 CSI1A_L2P_T1B AIO AVDD12_CSI
CSI1B_L0N_T0B K3 CSI1B_L0N_T0B AIO AVDD12_CSI
CSI1B_L0P_T0A K5 CSI1B_L0P_T0A AIO AVDD12_CSI
CSI1B_L1N_T1A L4 CSI1B_L1N_T1A AIO AVDD12_CSI
CSI1B_L1P_T0C L3 CSI1B_L1P_T0C AIO AVDD12_CSI
SSUSB_RXN W36 SSUSB_RXN AI AVDD12_SSUSB
SSUSB_RXP W37 SSUSB_RXP AI AVDD12_SSUSB
SSUSB_TXN Y34 SSUSB_TXN AO AVDD12_SSUSB
SSUSB_TXP Y33 SSUSB_TXP AO AVDD12_SSUSB
PCIE_CKN AN3 PCIE_CKN AIO AVDD12_PCIE
PCIE_CKP AN4 PCIE_CKP AIO AVDD12_PCIE
PCIE_LN0_RXN AP1 PCIE_LN0_RXN AIO AVDD12_PCIE
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
PCIE_LN0_RXP AP2 PCIE_LN0_RXP AIO AVDD12_PCIE
PCIE_LN0_TXN AM2 PCIE_LN0_TXN AIO AVDD12_PCIE
PCIE_LN0_TXP AM1 PCIE_LN0_TXP AIO AVDD12_PCIE
DP_LN0_TXN AH35 DP_LN0_TXN AIO AVDD12_DPTX
DP_LN0_TXP AG35 DP_LN0_TXP AIO AVDD12_DPTX
DP_LN1_TXN AH31 DP_LN1_TXN AIO AVDD12_DPTX
DP_LN1_TXP AH32 DP_LN1_TXP AIO AVDD12_DPTX
DP_LN2_TXN AJ33 DP_LN2_TXN AIO AVDD12_DPTX
DP_LN2_TXP AJ34 DP_LN2_TXP AIO AVDD12_DPTX
DP_LN3_TXN AK31 DP_LN3_TXN AIO AVDD12_DPTX
DP_LN3_TXP AK32 DP_LN3_TXP AIO AVDD12_DPTX
DPAUXN AJ37 DPAUXN AIO AVDD12_DPTX
DPAUXP AJ36 DPAUXP AIO AVDD12_DPTX
EDP_LN0_TXN AG29 EDP_LN0_TXN AIO AVDD12_EDPTX
EDP_LN0_TXP AG30 EDP_LN0_TXP AIO AVDD12_EDPTX
EDP_LN1_TXN AF31 EDP_LN1_TXN AIO AVDD12_EDPTX
EDP_LN1_TXP AF32 EDP_LN1_TXP AIO AVDD12_EDPTX
EDPAUXN AF37 EDPAUXN AIO AVDD12_EDPTX
EDPAUXP AF36 EDPAUXP AIO AVDD12_EDPTX
USB_DM_P0 W31 USB_DM_P0 AIO AVDD33_USB_P0
USB_DM_P1 U36 USB_DM_P1 AIO AVDD33_USB_P1
USB_DM_P2 V35 USB_DM_P2 AIO AVDD33_USB_P2
USB_DP_P0 W32 USB_DP_P0 AIO AVDD33_USB_P0
USB_DP_P1 U37 USB_DP_P1 AIO AVDD33_USB_P1
USB_DP_P2 V34 USB_DP_P2 AIO AVDD33_USB_P2
AUXIN0 AE6 AUXIN0 AIO AVDD18_AUXADC
AUXIN1 AF2 AUXIN1 AIO AVDD18_AUXADC
AUXIN2 AE3 AUXIN2 AIO AVDD18_AUXADC
Ball Name Ball Location Signal Name Signal Type Aux. Function Reset Function Buffer Type Power Domain PU/PD Reset IO Reset
AUXIN3 AE2 AUXIN3 AIO AVDD18_AUXADC
AUXIN4 AE4 AUXIN4 AIO AVDD18_AUXADC
AUXIN5 AE5 AUXIN5 AIO AVDD18_AUXADC
REFP AE7 REFP AIO AVDD18_AUXADC
HDMITX21_CH0_M AN34 HDMITX21_CH0_M AIO AVDD18_HDMITX21
HDMITX21_CH0_P AN35 HDMITX21_CH0_P AIO AVDD18_HDMITX21
HDMITX21_CH1_M AM37 HDMITX21_CH1_M AIO AVDD18_HDMITX21
HDMITX21_CH1_P AM36 HDMITX21_CH1_P AIO AVDD18_HDMITX21
HDMITX21_CH2_M AL35 HDMITX21_CH2_M AIO AVDD18_HDMITX21
HDMITX21_CH2_P AK35 HDMITX21_CH2_P AIO AVDD18_HDMITX21
HDMITX21_CLK_M AR35 HDMITX21_CLK_M AIO AVDD18_HDMITX21
HDMITX21_CLK_P AR34 HDMITX21_CLK_P AIO AVDD18_HDMITX21
5 Electrical Characteristics
Stresses above the values listed in Table 5-1 may cause permanent damage to the device. The recommended minimum
and maximum values are guaranteed in the worst conditions of ambient temperature, supply voltage, and frequencies
based on characterization results. Exposure to absolute maximum rating conditions may affect device reliability. The
operating conditions in Table 5-2 must not be exceeded in order to ensure correct operation and reliability of the device.
All parameters specified in this document refer to these operating conditions, unless noted otherwise.
5.5 Reset
5.5.1 Overview
The Top Reset Generation Unit (TOPRGU) is responsible for generating and distributing reset signals to various subsystems
to ensure that the system operates in a stable and reliable manner. It consists of a Watchdog Timer (WDT), which helps
protect against potential system crashes by monitoring system operation and resetting it if an unexpected event occurs.
5.5.2 Features
Hardware reset signals for the whole chip
PAD_EINT
IRQ irq
external_reset_request
Thermal
PAD_WATCHDOG
WDT
RESET_B wdt_event
PMIC
In addition, enhanced features such as a watchdog timer, configurable handling mode to reset requests, and dual-mode
reset event handling are provided for advanced usage.
Watchdog timer
TOPRGU provides a watchdog timer that generates a timeout event when it counts down to 0.
Watchdog timer can be used to reset the system or raise an interrupt to the system when a timeout occurs. For
detailed usage, see Section [Link] and [Link].
1. The IDLE state: No reset event has occurred and the watchdog counter is kicked periodically.
2. The IRQ state: When a reset event occurs for the first time in the dual-mode, the TOPRGU triggers an interrupt
instead of a reset. The watchdog counter automatically restarts and waits for a timeout again. For more details about
the dual-mode, refer to Section [Link].
3. The Reset state: When the watchdog counter times out again, the TOPRGU triggers a watchdog reset to reset the
entire chip.
1. Trigger PAD_ SYSRSTB to reset the WDT_MODE to the default value. Note that this register cannot be reset by the
watchdog reset.
2. Program WDT_MODE.
The watchdog counter is kicked periodically, with the period referred to as the "Watchdog Timer length". The configuration
steps are as follows.
The TOPRGU is set to the dual-mode by default while all reset requests are in the IRQ mode by default. This means that the
interrupt is triggered (instead of the watchdog reset) immediately. To trigger the watchdog reset but not the interrupt, the
corresponding configuration of each reset request can be changed so that it is configured either as a reset or as an IRQ.
The dual-mode in the TOPRGU means that an IRQ is triggered first when a reset event occurs, followed by a watchdog
reset if the watchdog timer times out again.
The watchdog timer auto-restarts after an interrupt is triggered. The AP should clear the WDT_STA after receiving the
interrupt from the TOPRGU. When the interrupt is issued, the watchdog timer is restarted to {WDT_LENGTH, {9{1’b1}}}
and the watchdog reset is triggered when the timer expires. {WDT_LENGTH, {9{1’b1}}} means that the WDT timeout
period is a multiple of 512*T32k = 15.6 ms.
6 Clock Characteristics
The device has two external input clocks—low frequency (RTC32K_CK) and high frequency (X26M_IN).
Figure 6-1 shows the external clock sources and clock outputs.
7 Package Information
MEDIATEK
ARM
NNNNNN#N
YYWW-&&&&&
XXXXXX-%
Companion chips:
MT6319—Integrated Power Management IC (PMIC)
MT6365—Integrated Power Management IC
MT6680—Integrated Power Management IC
MA5721F—Integrated Power Management IC
8.2 Trademarks
Arm, Jazelle, Cortex, TrustZone, AMBA, and Thumb are registered trademarks of Arm Limited (or its subsidiaries) in the US
and/or elsewhere.
Mali, CoreSight, Neon, and DynamIQ are trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
Cadence and Tensilica are registered trademarks of Cadence Design Systems, Inc.
MIPI and MIPI I3C are registered trademarks of MIPI Alliance, Inc.
All other product or service names are the property of their respective owners.
Your access to and use of this document and the information contained herein (collectively this “Document”) is subject to your (including the corporation
or other legal entity you represent, collectively “You”) acceptance of the terms and conditions set forth below (“T&C”). By using, accessing or
downloading this Document, You are accepting the T&C and agree to be bound by the T&C. If You don’t agree to the T&C, You may not use this
Document and shall immediately destroy any copy thereof.
This Document contains information that is confidential and proprietary to MediaTek Inc. and/or its affiliates (collectively “MediaTek”) or its licensors
and is provided solely for Your internal use with MediaTek’s chipset(s) described in this Document and shall not be used for any other purposes (including
but not limited to identifying or providing evidence to support any potential patent infringement claim against MediaTek or any of MediaTek’s suppliers
and/or direct or indirect customers). Unauthorized use or disclosure of the information contained herein is prohibited. You agree to indemnify MediaTek
for any loss or damages suffered by MediaTek for Your unauthorized use or disclosure of this Document, in whole or in part.
MediaTek and its licensors retain titles and all ownership rights in and to this Document and no license (express or implied, by estoppels or otherwise) to
any intellectual propriety rights is granted hereunder. This Document is subject to change without further notification. MEDIATEK DOES NOT ASSUME ANY
RESPONSIBILITY ARISING OUT OF OR IN CONNECTION WITH ANY USE OF, OR RELIANCE ON, THIS DOCUMENT, AND SPECIFICALLY DISCLAIMS ANY AND ALL
LIABILITY, INCLUDING, WITHOUT LIMITATION, CONSEQUENTIAL OR INCIDENTAL DAMAGES.
THIS DOCUMENT AND ANY OTHER MATERIALS OR TECHNICAL SUPPORT PROVIDED BY MEDIATEK IN CONNECTION WITH THIS DOCUMENT, IF ANY, ARE
PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE. MEDIATEK SPECIFICALLY DISCLAIMS
ALL WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, COMPLETENESS OR ACCURACY AND ALL
WARRANTIES ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE. MEDIATEK SHALL NOT BE RESPONSIBLE
FOR ANY MEDIATEK DELIVERABLES MADE TO MEET YOUR SPECIFICATIONS OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
Without limiting the generality of the foregoing, MEDIATEK MAKES NO WARRANTY, REPRESENTATION OR GUARANTEE REGARDING THE SUITABILITY OF
ITS PRODUCTS FOR ANY PARTICULAR PURPOSE, NOR DOES MEDIATEK ASSUME ANY LIABILITY ARISING OUT OF THE APPLICATION OR USE OF ANY
PRODUCT, CIRCUIT OR SOFTWARE. You agree that You are solely responsible for the designing, validating and testing Your product incorporating
MediaTek’s product and ensure such product meets applicable standards and any safety, security or other requirements.
The above T&C and all acts in connection with the T&C or this Document shall be governed, construed and interpreted in accordance with the laws of
Taiwan, without giving effect to the principles of conflicts of law.