blob: 471702f9352c82ef0a1ff50de6ce9770d14aed21 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Kever Yang50fb9982017-02-22 16:56:35 +08002/*
3 * Copyright (C) 2016-2017 Rockchip Electronics Co., Ltd
Kever Yang50fb9982017-02-22 16:56:35 +08004 */
5
6#ifndef _ASM_ARCH_SDRAM_RK3399_H
7#define _ASM_ARCH_SDRAM_RK3399_H
8
Kever Yang50fb9982017-02-22 16:56:35 +08009struct rk3399_ddr_pctl_regs {
10 u32 denali_ctl[332];
11};
12
13struct rk3399_ddr_publ_regs {
14 u32 denali_phy[959];
15};
16
17struct rk3399_ddr_pi_regs {
18 u32 denali_pi[200];
19};
20
21struct rk3399_msch_regs {
22 u32 coreid;
23 u32 revisionid;
24 u32 ddrconf;
25 u32 ddrsize;
26 u32 ddrtiminga0;
27 u32 ddrtimingb0;
28 u32 ddrtimingc0;
29 u32 devtodev0;
30 u32 reserved0[(0x110 - 0x20) / 4];
31 u32 ddrmode;
32 u32 reserved1[(0x1000 - 0x114) / 4];
33 u32 agingx0;
34};
35
36struct rk3399_msch_timings {
37 u32 ddrtiminga0;
38 u32 ddrtimingb0;
39 u32 ddrtimingc0;
40 u32 devtodev0;
41 u32 ddrmode;
42 u32 agingx0;
43};
44
45struct rk3399_ddr_cic_regs {
46 u32 cic_ctrl0;
47 u32 cic_ctrl1;
48 u32 cic_idle_th;
49 u32 cic_cg_wait_th;
50 u32 cic_status0;
51 u32 cic_status1;
52 u32 cic_ctrl2;
53 u32 cic_ctrl3;
54 u32 cic_ctrl4;
55};
56
57/* DENALI_CTL_00 */
58#define START 1
59
60/* DENALI_CTL_68 */
61#define PWRUP_SREFRESH_EXIT (1 << 16)
62
63/* DENALI_CTL_274 */
64#define MEM_RST_VALID 1
65
Jagan Teki97867c82019-07-15 23:51:05 +053066struct rk3399_sdram_channel {
67 struct sdram_cap_info cap_info;
Kever Yang50fb9982017-02-22 16:56:35 +080068 struct rk3399_msch_timings noc_timings;
69};
70
Kever Yang50fb9982017-02-22 16:56:35 +080071struct rk3399_sdram_params {
72 struct rk3399_sdram_channel ch[2];
Jagan Tekid2f92d02019-07-15 23:51:06 +053073 struct sdram_base_params base;
Kever Yang50fb9982017-02-22 16:56:35 +080074 struct rk3399_ddr_pctl_regs pctl_regs;
75 struct rk3399_ddr_pi_regs pi_regs;
76 struct rk3399_ddr_publ_regs phy_regs;
77};
78
79#define PI_CA_TRAINING (1 << 0)
80#define PI_WRITE_LEVELING (1 << 1)
81#define PI_READ_GATE_TRAINING (1 << 2)
82#define PI_READ_LEVELING (1 << 3)
83#define PI_WDQ_LEVELING (1 << 4)
84#define PI_FULL_TRAINING 0xff
85
86#endif