mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-22 11:13:07 +00:00
06fc74102a
On i.MX7ULP B0, the DDR clock target is increased from 320Mhz to 380Mhz. We update DDR clock relevant settings to approach the target. But since the limitation on LCDIF pix clock for HDMI output (refer "mx7ulp_evk: Change APLL and its PFD0 frequencies"), we set DDR clock to 352.8Mhz (25.2Mhz * 14) by using the clock path: APLL PFD0 -> DDR CLK -> NIC0 -> NIC1 -> LCDIF clock To reduce the impact to entire system, the NIC0_DIV and NIC1_DIV are kept, so the divider 14 is calculated as: 14 = (NIC0_DIV + 1) * (NIC1_DIV + 1) * (LCDIF_PCC_DIV + 1) NIC0_DIV: 1 NIC1_DIV: 0 LCDIF_PCC_DIV: 6 APLL and APLL PFD0 settings: PFD0 FRAC: 27 APLL MULT: 22 APLL NUM: 1 APLL DENOM: 20 This patch applies the new settings for both DCD and plugin. There is no DDR script change on this new frequency. Overnight memtester is passed. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
216 lines
3.9 KiB
ArmAsm
216 lines
3.9 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
|
* Copyright 2019 NXP
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
.macro imx7ulp_ddr_freq_decrease
|
|
ldr r2, =0x403f0000
|
|
ldr r3, =0x00000000
|
|
str r3, [r2, #0xdc]
|
|
|
|
ldr r2, =0x403e0000
|
|
ldr r3, =0x01000020
|
|
str r3, [r2, #0x40]
|
|
ldr r3, =0x01000000
|
|
str r3, [r2, #0x500]
|
|
|
|
ldr r3, =0x80808080
|
|
str r3, [r2, #0x50c]
|
|
ldr r3, =0x00160002
|
|
str r3, [r2, #0x508]
|
|
ldr r3, =0x00000001
|
|
str r3, [r2, #0x510]
|
|
ldr r3, =0x00000014
|
|
str r3, [r2, #0x514]
|
|
ldr r3, =0x00000001
|
|
str r3, [r2, #0x500]
|
|
|
|
ldr r3, =0x01000000
|
|
wait1:
|
|
ldr r4, [r2, #0x500]
|
|
and r4, r3
|
|
cmp r4, r3
|
|
bne wait1
|
|
|
|
ldr r3, =0x8080801B
|
|
str r3, [r2, #0x50c]
|
|
|
|
ldr r3, =0x00000040
|
|
wait2:
|
|
ldr r4, [r2, #0x50c]
|
|
and r4, r3
|
|
cmp r4, r3
|
|
bne wait2
|
|
|
|
ldr r3, =0x00000001
|
|
str r3, [r2, #0x30]
|
|
ldr r3, =0x11000020
|
|
str r3, [r2, #0x40]
|
|
|
|
ldr r2, =0x403f0000
|
|
ldr r3, =0x42000000
|
|
str r3, [r2, #0xdc]
|
|
|
|
.endm
|
|
|
|
.macro imx7ulp_evk_ddr_setting
|
|
|
|
imx7ulp_ddr_freq_decrease
|
|
|
|
/* Enable MMDC PCC clock */
|
|
ldr r2, =0x40b30000
|
|
ldr r3, =0x40000000
|
|
str r3, [r2, #0xac]
|
|
|
|
/* Configure DDR pad */
|
|
ldr r0, =0x40ad0000
|
|
ldr r1, =0x00040000
|
|
str r1, [r0, #0x128]
|
|
ldr r1, =0x0
|
|
str r1, [r0, #0xf8]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0xd8]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x108]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x104]
|
|
ldr r1, =0x00010000
|
|
str r1, [r0, #0x124]
|
|
ldr r1, =0x0000018C
|
|
str r1, [r0, #0x80]
|
|
ldr r1, =0x0000018C
|
|
str r1, [r0, #0x84]
|
|
ldr r1, =0x0000018C
|
|
str r1, [r0, #0x88]
|
|
ldr r1, =0x0000018C
|
|
str r1, [r0, #0x8c]
|
|
|
|
ldr r1, =0x00010000
|
|
str r1, [r0, #0x120]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x10c]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x110]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x114]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x118]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x90]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x94]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x98]
|
|
ldr r1, =0x00000180
|
|
str r1, [r0, #0x9c]
|
|
ldr r1, =0x00040000
|
|
str r1, [r0, #0xe0]
|
|
ldr r1, =0x00040000
|
|
str r1, [r0, #0xe4]
|
|
|
|
ldr r0, =0x40ab0000
|
|
ldr r1, =0x00008000
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0xA1390003
|
|
str r1, [r0, #0x800]
|
|
ldr r1, =0x0D3900A0
|
|
str r1, [r0, #0x85c]
|
|
ldr r1, =0x00400000
|
|
str r1, [r0, #0x890]
|
|
|
|
ldr r1, =0x40404040
|
|
str r1, [r0, #0x848]
|
|
ldr r1, =0x40404040
|
|
str r1, [r0, #0x850]
|
|
ldr r1, =0x33333333
|
|
str r1, [r0, #0x81c]
|
|
ldr r1, =0x33333333
|
|
str r1, [r0, #0x820]
|
|
ldr r1, =0x33333333
|
|
str r1, [r0, #0x824]
|
|
ldr r1, =0x33333333
|
|
str r1, [r0, #0x828]
|
|
|
|
ldr r1, =0x24922492
|
|
str r1, [r0, #0x8c0]
|
|
ldr r1, =0x00000800
|
|
str r1, [r0, #0x8b8]
|
|
|
|
ldr r1, =0x00020052
|
|
str r1, [r0, #0x4]
|
|
ldr r1, =0x292C42F3
|
|
str r1, [r0, #0xc]
|
|
ldr r1, =0x00100A22
|
|
str r1, [r0, #0x10]
|
|
ldr r1, =0x00120556
|
|
str r1, [r0, #0x38]
|
|
ldr r1, =0x00C700DB
|
|
str r1, [r0, #0x14]
|
|
ldr r1, =0x00211718
|
|
str r1, [r0, #0x18]
|
|
|
|
ldr r1, =0x0F9F26D2
|
|
str r1, [r0, #0x2c]
|
|
ldr r1, =0x009F0E10
|
|
str r1, [r0, #0x30]
|
|
ldr r1, =0x0000003F
|
|
str r1, [r0, #0x40]
|
|
ldr r1, =0xC3190000
|
|
str r1, [r0, #0x0]
|
|
|
|
ldr r1, =0x00008010
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x00008018
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x003F8030
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x003F8038
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0xFF0A8030
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0xFF0A8038
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x04028030
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x04028038
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x83018030
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x83018038
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x01038030
|
|
str r1, [r0, #0x1c]
|
|
ldr r1, =0x01038038
|
|
str r1, [r0, #0x1c]
|
|
|
|
ldr r1, =0x20000000
|
|
str r1, [r0, #0x83c]
|
|
|
|
ldr r1, =0x00001800
|
|
str r1, [r0, #0x20]
|
|
ldr r1, =0xA1310000
|
|
str r1, [r0, #0x800]
|
|
ldr r1, =0x00020052
|
|
str r1, [r0, #0x4]
|
|
ldr r1, =0x00011006
|
|
str r1, [r0, #0x404]
|
|
ldr r1, =0x00000000
|
|
str r1, [r0, #0x1c]
|
|
|
|
.endm
|
|
|
|
.macro imx7ulp_clock_gating
|
|
.endm
|
|
|
|
.macro imx7ulp_qos_setting
|
|
.endm
|
|
|
|
.macro imx7ulp_ddr_setting
|
|
imx7ulp_evk_ddr_setting
|
|
.endm
|
|
|
|
/* include the common plugin code here */
|
|
#include <asm/arch/mx7ulp_plugin.S>
|