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