xref: /openbmc/u-boot/arch/arm/include/asm/arch-rockchip/sdram.h (revision 7d6c78f5731e71c7619c621c4c7e30c56f0fd9bf)
15ff093abSSimon Glass /*
25ff093abSSimon Glass  * Copyright (c) 2015 Google, Inc
35ff093abSSimon Glass  *
45ff093abSSimon Glass  * Copyright 2014 Rockchip Inc.
55ff093abSSimon Glass  *
65ff093abSSimon Glass  * SPDX-License-Identifier:	GPL-2.0
75ff093abSSimon Glass  */
85ff093abSSimon Glass 
95ff093abSSimon Glass #ifndef _ASM_ARCH_RK3288_SDRAM_H__
105ff093abSSimon Glass #define _ASM_ARCH_RK3288_SDRAM_H__
115ff093abSSimon Glass 
125ff093abSSimon Glass enum {
135ff093abSSimon Glass 	DDR3 = 3,
145ff093abSSimon Glass 	LPDDR3 = 6,
155ff093abSSimon Glass 	UNUSED = 0xFF,
165ff093abSSimon Glass };
175ff093abSSimon Glass 
185ff093abSSimon Glass struct rk3288_sdram_channel {
19*7d6c78f5SKever Yang 	/*
20*7d6c78f5SKever Yang 	 * bit width in address, eg:
21*7d6c78f5SKever Yang 	 * 8 banks using 3 bit to address,
22*7d6c78f5SKever Yang 	 * 2 cs using 1 bit to address.
23*7d6c78f5SKever Yang 	 */
245ff093abSSimon Glass 	u8 rank;
255ff093abSSimon Glass 	u8 col;
265ff093abSSimon Glass 	u8 bk;
275ff093abSSimon Glass 	u8 bw;
285ff093abSSimon Glass 	u8 dbw;
295ff093abSSimon Glass 	u8 row_3_4;
305ff093abSSimon Glass 	u8 cs0_row;
315ff093abSSimon Glass 	u8 cs1_row;
32ce26e8a1SXu Ziyuan #if CONFIG_IS_ENABLED(OF_PLATDATA)
339ca7e672SSimon Glass 	/*
349ca7e672SSimon Glass 	 * For of-platdata, which would otherwise convert this into two
359ca7e672SSimon Glass 	 * byte-swapped integers. With a size of 9 bytes, this struct will
369ca7e672SSimon Glass 	 * appear in of-platdata as a byte array.
37ce26e8a1SXu Ziyuan 	 *
38ce26e8a1SXu Ziyuan 	 * If OF_PLATDATA enabled, need to add a dummy byte in dts.(i.e 0xff)
399ca7e672SSimon Glass 	 */
409ca7e672SSimon Glass 	u8 dummy;
41ce26e8a1SXu Ziyuan #endif
425ff093abSSimon Glass };
435ff093abSSimon Glass 
445ff093abSSimon Glass struct rk3288_sdram_pctl_timing {
455ff093abSSimon Glass 	u32 togcnt1u;
465ff093abSSimon Glass 	u32 tinit;
475ff093abSSimon Glass 	u32 trsth;
485ff093abSSimon Glass 	u32 togcnt100n;
495ff093abSSimon Glass 	u32 trefi;
505ff093abSSimon Glass 	u32 tmrd;
515ff093abSSimon Glass 	u32 trfc;
525ff093abSSimon Glass 	u32 trp;
535ff093abSSimon Glass 	u32 trtw;
545ff093abSSimon Glass 	u32 tal;
555ff093abSSimon Glass 	u32 tcl;
565ff093abSSimon Glass 	u32 tcwl;
575ff093abSSimon Glass 	u32 tras;
585ff093abSSimon Glass 	u32 trc;
595ff093abSSimon Glass 	u32 trcd;
605ff093abSSimon Glass 	u32 trrd;
615ff093abSSimon Glass 	u32 trtp;
625ff093abSSimon Glass 	u32 twr;
635ff093abSSimon Glass 	u32 twtr;
645ff093abSSimon Glass 	u32 texsr;
655ff093abSSimon Glass 	u32 txp;
665ff093abSSimon Glass 	u32 txpdll;
675ff093abSSimon Glass 	u32 tzqcs;
685ff093abSSimon Glass 	u32 tzqcsi;
695ff093abSSimon Glass 	u32 tdqs;
705ff093abSSimon Glass 	u32 tcksre;
715ff093abSSimon Glass 	u32 tcksrx;
725ff093abSSimon Glass 	u32 tcke;
735ff093abSSimon Glass 	u32 tmod;
745ff093abSSimon Glass 	u32 trstl;
755ff093abSSimon Glass 	u32 tzqcl;
765ff093abSSimon Glass 	u32 tmrr;
775ff093abSSimon Glass 	u32 tckesr;
785ff093abSSimon Glass 	u32 tdpd;
795ff093abSSimon Glass };
805ff093abSSimon Glass check_member(rk3288_sdram_pctl_timing, tdpd, 0x144 - 0xc0);
815ff093abSSimon Glass 
825ff093abSSimon Glass struct rk3288_sdram_phy_timing {
835ff093abSSimon Glass 	u32 dtpr0;
845ff093abSSimon Glass 	u32 dtpr1;
855ff093abSSimon Glass 	u32 dtpr2;
865ff093abSSimon Glass 	u32 mr[4];
875ff093abSSimon Glass };
885ff093abSSimon Glass 
895ff093abSSimon Glass struct rk3288_base_params {
905ff093abSSimon Glass 	u32 noc_timing;
915ff093abSSimon Glass 	u32 noc_activate;
925ff093abSSimon Glass 	u32 ddrconfig;
935ff093abSSimon Glass 	u32 ddr_freq;
945ff093abSSimon Glass 	u32 dramtype;
95*7d6c78f5SKever Yang 	/*
96*7d6c78f5SKever Yang 	 * DDR Stride is address mapping for DRAM space
97*7d6c78f5SKever Yang 	 * Stride	Ch 0 range	Ch1 range	Total
98*7d6c78f5SKever Yang 	 * 0x00		0-256MB		256MB-512MB	512MB
99*7d6c78f5SKever Yang 	 * 0x05		0-1GB		0-1GB		1GB
100*7d6c78f5SKever Yang 	 * 0x09		0-2GB		0-2GB		2GB
101*7d6c78f5SKever Yang 	 * 0x0d		0-4GB		0-4GB		4GB
102*7d6c78f5SKever Yang 	 * 0x17		N/A		0-4GB		4GB
103*7d6c78f5SKever Yang 	 * 0x1a		0-4GB		4GB-8GB		8GB
104*7d6c78f5SKever Yang 	 */
1055ff093abSSimon Glass 	u32 stride;
1065ff093abSSimon Glass 	u32 odt;
1075ff093abSSimon Glass };
1085ff093abSSimon Glass 
1095ff093abSSimon Glass #endif
110