Introduction
The High-Speed Connectivity clocking and reset system generates clocks and Resets for the peripherals, interconnect, and other system elements. There are two system PLLs to generate high-frequency signals that are used as clock sources for the several clock generators in MMI.
System PLL Units
There are two PLL in the High-Speed Connectivity Module. Each PLL has suggested usage:
- MMI PLL: There are two modes for this PLL which generates clocks
for different Subsystems
- Normal Mode: Provides Core clock to GPU Subsystem and MMI Debug Clock. Display Controller will use clocks from PL
- DC Internal Mode: Provides Video clock and Timestamp clock to Display Controller and MMI Debug Clock. GPU will use the PS_AXI_DMA_CLK.
- UDH PLL: Provides clock to USB and DisplayPort Subsystems.
Refer to the following figure for the PS High-Speed Connectivity clock diagram that shows the two PLL and internal muxes that generate various clocks to the peripherals.
The following table shows the PS High-Speed Connectivity peripheral clock frequency (at 2MP speedgrade) generated by the 2 PLLs.
| Clock Name | Target Frequency (MHz) at 2MP | Selected PLL sources |
|---|---|---|
| 10GbE 1G | ||
| ip_cmt_pspll_clkout1_gem (loopback) | 62.5 | MMI PLL |
| 10GbE 2.5G | ||
| ip_cmt_pspll_clkout1_gem (loopback) | 156.25 | MMI PLL |
| 10GbE 5G | ||
| ip_cmt_pspll_clkout1_gem (loopback) | 78.125 | MMI PLL |
| 10GbE 10G | ||
| ip_cmt_pspll_clkout1_gem (loopback) | 156.25 | MMI PLL |
| PCIe | ||
| ip_cmt_pspll_clkout1_pcie (intercore loopback) | 1000 | MMI PLL |
| MEMCLEAR | ||
| ip_cmt_pspll_clkout1_gem | 900 | MMI PLL |
| ip_cmt_pspll_clkout1_pcie | 1000 | MMI PLL |
| USB | ||
| USB3_ref_clk | 24 | External Reference |
| USB2_ref_clk | 24 | MMI UDHPLL |
| dp_aux_clk | 16 | MMI UDHPLL |
| DP/DC | ||
| Pixel_clk (DC_INTERNAL) | 594 | MMI PLL |
| I2S_clk(DC_INTERNAL) | 12.288 1 | MMI UDHPLL |
| 27m_ref_clk(DC_EXTERNAL) | 27 | MMI UDHPLL |
| 27m_ref_clk(DC_INTERNAL) | 27 | MMI PLL |
| GPU | ||
| gpu_pll_clk (DC_EXTERNAL) | 900 | MMI PLL |
|
||
System Resets
The High-Speed Connectivity module has two pin level reset and several register level block resets. The reset sequences are divied into three functional areas.
- The power-on reset sequence.
- The management of other signals in the system to trigger system reset.
- The ability (in software) to reset each individual functional unit.
Clock Programming
System PLL Operation
The voltage-controlled oscillator (VCO) in the PLL synthesizes the output frequency based on the feedback multiplier. The VCO supports both fractional and integer multipliers. The fractional mode is enabled by setting PLL_FRAC_CFG[ENABLED] to 1.
The VCO output frequency (FVCO) is determined using the following equation.
FVCO = FREFCLK x M.F
In this equation, the FREFCLK is an input reference clock frequency, M is the integer part of the multiplier value, and F is the fractional part.
The output frequency (FCLKOUT), after the divider stage, is determined by the following equation.
FCLKOUT = FVCO/O
In this equation, O is the 10-bit output divider
PLL Programming Sequence
- Program FBDIV and CLKOUTDIV in MMIPLL_CTRL Register
- Program Helper Data for MMIPLL_CFG using the helper data in Helper Data Table
- Assert Bypass
- Assert Reset. This is when the values of FBDIV and CLKOUTDIV captured into PLL
- De-assert Reset
- Check for LOCK. Wail until PLL_STATUS[LOCK] = 1
- De-assert Bypass
- Program divider by programming DIVISOR0 field of Clock Generator Control registers.
PLL Integer Divide Helper Data Table
For each unique value multiplier value, program the PLLs using registers in the MMI_CRX and MMI_UDH_PLL register sets. Each of the two PLLs have a set of integer programming parameters:
- {MMI, UDH}_PLL_CFG[CP]
- {MMI, UDH}_PLL_CFG[RES]
- {MMI, UDH}_PLL_CFG[LFHF]
- {MMI, UDH}_PLL_CFG[LOCK_DLY]
- {MMI, UDH}_PLL_CFG[LOCK_CNT]
The helper data values provides the PLL configuration register programming values when the PLL is in integer mode.
| FBDIV | CP | RES | LFHF | LOCK_DLY | LOCK_CNT |
|---|---|---|---|---|---|
| 25 | 3 | 10 | 3 | 63 | 1000 |
| 26 | 3 | 10 | 3 | 63 | 1000 |
| 27 | 4 | 6 | 3 | 63 | 1000 |
| 28 | 4 | 6 | 3 | 63 | 1000 |
| 29 | 4 | 6 | 3 | 63 | 1000 |
| 30 | 4 | 6 | 3 | 63 | 1000 |
| 31 | 6 | 1 | 3 | 63 | 1000 |
| 32 | 6 | 1 | 3 | 63 | 1000 |
| 33 | 4 | 10 | 3 | 63 | 1000 |
| 34 | 5 | 6 | 3 | 63 | 1000 |
| 35 | 5 | 6 | 3 | 63 | 1000 |
| 36 | 5 | 6 | 3 | 63 | 1000 |
| 37 | 5 | 6 | 3 | 63 | 1000 |
| 38 | 5 | 6 | 3 | 63 | 975 |
| 39 | 3 | 12 | 3 | 63 | 950 |
| 40 | 3 | 12 | 3 | 63 | 925 |
| 41 | 3 | 12 | 3 | 63 | 900 |
| 42 | 3 | 12 | 3 | 63 | 875 |
| 43 | 3 | 12 | 3 | 63 | 850 |
| 44 | 3 | 12 | 3 | 63 | 850 |
| 45 | 3 | 12 | 3 | 63 | 825 |
| 46 | 3 | 12 | 3 | 63 | 800 |
| 47 | 3 | 12 | 3 | 63 | 775 |
| 48 | 3 | 12 | 3 | 63 | 775 |
| 49 | 3 | 12 | 3 | 63 | 750 |
| 50 | 3 | 12 | 3 | 63 | 750 |
| 51 | 3 | 2 | 3 | 63 | 725 |
| 52 | 3 | 2 | 3 | 63 | 700 |
| 53 | 3 | 2 | 3 | 63 | 700 |
| 54 | 3 | 2 | 3 | 63 | 675 |
| 55 | 3 | 2 | 3 | 63 | 675 |
| 56 | 3 | 2 | 3 | 63 | 650 |
| 57 | 3 | 2 | 3 | 63 | 650 |
| 58 | 3 | 2 | 3 | 63 | 625 |
| 59 | 3 | 2 | 3 | 63 | 625 |
| 60 | 3 | 2 | 3 | 63 | 625 |
| 61 to 82 | 3 | 2 | 3 | 63 | 600 |
| 83 to 102 | 4 | 2 | 3 | 63 | 600 |
| 103 | 5 | 2 | 3 | 63 | 600 |
| 104 | 5 | 2 | 3 | 63 | 600 |
| 105 | 5 | 2 | 3 | 63 | 600 |
| 106 | 5 | 2 | 3 | 63 | 600 |
| 107 to 125 | 3 | 4 | 3 | 63 | 600 |
Clock Configuration Register Overview
System PLL Control Registers
| Register Name | Reset value and Address offset | Register Parameter | Reset State |
|---|---|---|---|
| MMIPLL_CTRL |
0001_2C09 h, 0xC00040 |
[RESET] [BYPASS] [FBDIV] [DIV2] [PRE_SRC] [POST_SRC] |
Held in reset. Bypass enabled. 48 h. Divide by 2. PS_REF_CLK. PS_REF_CLK. |
| UDH_PLL_CTRL |
0001_4809 h, 0xE90040 |
[RESET] [BYPASS] [FBDIV] [DIV2] [PRE_SRC] |
Held in reset. Bypass enabled. 48 h. Divide by 2. PS_REF_CLK. |
| Register | Reset Value, Register Set and Address Offset | Register Parameter | Reset State |
|---|---|---|---|
| MMI_GPU_REF_CTRL |
0200_2500 h, MMI_CRX, 0xc00100 |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
| MMI_DBG_REF_CTRL |
0000_2500 h, MMI_CRX, 0xC00104 |
[DIVISOR0]: [CLKACT]: |
25 h Disabled |
| MMI_AUX0_REF_CTRL |
0200_2500 h, MMI_CRX, 0xC00110 |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
| MMI_AUX1_REF_CTRL |
0200_2500 h, MMI_CRX, 0xC00114 |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
| USB2PHY_REF_CLK_CTRL |
0000_2500 h, MMI_UDH_PLL, 0xE90100 |
[DIVISOR0]: [RESET_DIV]: |
25 h. Not in Reset |
| DP_AUX_CLK_CTRL |
0200_2500 h, MMI_UDH_PLL, 0xE90108 |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
| DC_27M_CLK_CTRL |
0200_2500 h, MMI_UDH_PLL, 0xE9010C |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
| SOCDMA_CLK_CTRL |
0200_2500 h, MMI_UDH_PLL, 0xC00110 |
[DIVISOR0]: [CLKACT]: |
25 h. Enabled. |
Reset Configuration Register Overview
The following table describes the registers that can be used to configure resets for different peripherals.
| Register Name | Register Field | Description |
|---|---|---|
| RST_GPU |
RESET RECOV_RESET |
Software control register for GPU block. RECOV_RESET: Reset entire GPU system except system error registers Reset when asserted to 1, and the reset pulse must be a minimum of 32 GPU clock cycles |
| RST_PCIE_GEM | SS_CFG_POR |
Software control register for PCIeGEM subsystem. Reset when asserted to 1 and only reset during POR. |
| RST_PCIE0 |
RESET PER_RESET |
Software control register for PCIe0 reset. Block will be reset when asserted to 1 |
| RST_PCIE1 |
RESET PER_RESET |
Software control register for PCIe1 reset. PER_RESET: This reset is shared with Aurora HSDP, when Aurora is enabled, this reset must be de-asserted to reset GT. Reset when asserted to 1. |
| RST_GEM |
CFG_RESET TSU_RESET RESET |
Software control register for GEM resets. CFG_RESET: This reset clears all the registers to default reset values. TSU_RESET: This reset clears only TSU related registers to default reset values. RESET: This raw resets the internal 10GbE sub-blocks, such as MAC, PCS, DMA. Registers are not cleared, and configuration is retained. Reset when asserted to 1. |
| RST_DC |
SS_CFG_POR RESET |
Software control register for DC reset. SS_CFG_POR: DC subsystem is reset when asserted to 1 and only reset during POR. |
| RST_UDH |
SS_CFG_POR TRNG2HDCP_RESET TRNG_RESET HDCPRAM_RESET USB2_RESET USB3_RESET DRD_RESET AUX_RESET DP_RESET |
Software control register for UDH resets. SS_CFG_POR: UDH Subsystem is reset when asserted to 1 and only reset during POR. |
| RST_GTY |
RESET1 RESET2 RESET3 |
Software control register for GT. Reset when asserted to 1 and only reset during POR. |
| RST_DBG | RESET |
Software control register for SoC debug logic. Reset when asserted to 1 and only reset during POR. |
| RST_SYSMON |
SEQ_RST CFG_RST |
Software control register for MMI SYSMON. SEQ_RST: All configuration is preserved, only sequence is lost (less inclusive). CFG_RST: eFuse preserved, APB configuration is preserved, and sequence is lost (more inclusive). |