1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2015-2023, Renesas Electronics Corporation. 3*91f16700Schasinglulu * All rights reserved. 4*91f16700Schasinglulu * 5*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 6*91f16700Schasinglulu */ 7*91f16700Schasinglulu 8*91f16700Schasinglulu #define RCAR_DDR_VERSION "rev.0.42" 9*91f16700Schasinglulu #define DRAM_CH_CNT 0x04 10*91f16700Schasinglulu #define SLICE_CNT 0x04 11*91f16700Schasinglulu #define CS_CNT 0x02 12*91f16700Schasinglulu 13*91f16700Schasinglulu /* order : CS0A, CS0B, CS1A, CS1B */ 14*91f16700Schasinglulu #define CSAB_CNT (CS_CNT * 2) 15*91f16700Schasinglulu 16*91f16700Schasinglulu /* order : CH0A, CH0B, CH1A, CH1B, CH2A, CH2B, CH3A, CH3B */ 17*91f16700Schasinglulu #define CHAB_CNT (DRAM_CH_CNT * 2) 18*91f16700Schasinglulu 19*91f16700Schasinglulu /* pll setting */ 20*91f16700Schasinglulu #define CLK_DIV(a, diva, b, divb) (((a) * (divb)) / ((b) * (diva))) 21*91f16700Schasinglulu #define CLK_MUL(a, diva, b, divb) (((a) * (b)) / ((diva) * (divb))) 22*91f16700Schasinglulu 23*91f16700Schasinglulu /* for ddr deisity setting */ 24*91f16700Schasinglulu #define DBMEMCONF_REG(d3, row, bank, col, dw) \ 25*91f16700Schasinglulu (((d3) << 30) | ((row) << 24) | ((bank) << 16) | ((col) << 8) | (dw)) 26*91f16700Schasinglulu 27*91f16700Schasinglulu #define DBMEMCONF_REGD(density) \ 28*91f16700Schasinglulu (DBMEMCONF_REG((density) % 2, ((density) + 1) / \ 29*91f16700Schasinglulu 2 + (29 - 3 - 10 - 2), 3, 10, 2)) 30*91f16700Schasinglulu 31*91f16700Schasinglulu #define DBMEMCONF_VAL(ch, cs) (DBMEMCONF_REGD(DBMEMCONF_DENS(ch, cs))) 32*91f16700Schasinglulu 33*91f16700Schasinglulu /* refresh mode */ 34*91f16700Schasinglulu #define DBSC_REFINTS (0x0) 35*91f16700Schasinglulu 36*91f16700Schasinglulu /* system registers */ 37*91f16700Schasinglulu #define CPG_FRQCRB (CPG_BASE + 0x0004U) 38*91f16700Schasinglulu 39*91f16700Schasinglulu #define CPG_PLLECR (CPG_BASE + 0x00D0U) 40*91f16700Schasinglulu #define CPG_MSTPSR5 (CPG_BASE + 0x003CU) 41*91f16700Schasinglulu #define CPG_SRCR4 (CPG_BASE + 0x00BCU) 42*91f16700Schasinglulu #define CPG_PLL3CR (CPG_BASE + 0x00DCU) 43*91f16700Schasinglulu #define CPG_ZB3CKCR (CPG_BASE + 0x0380U) 44*91f16700Schasinglulu #define CPG_FRQCRD (CPG_BASE + 0x00E4U) 45*91f16700Schasinglulu #define CPG_SMSTPCR5 (CPG_BASE + 0x0144U) 46*91f16700Schasinglulu #define CPG_CPGWPR (CPG_BASE + 0x0900U) 47*91f16700Schasinglulu #define CPG_SRSTCLR4 (CPG_BASE + 0x0950U) 48*91f16700Schasinglulu 49*91f16700Schasinglulu #define CPG_FRQCRB_KICK_BIT BIT(31) 50*91f16700Schasinglulu #define CPG_PLLECR_PLL3E_BIT BIT(3) 51*91f16700Schasinglulu #define CPG_PLLECR_PLL3ST_BIT BIT(11) 52*91f16700Schasinglulu #define CPG_ZB3CKCR_ZB3ST_BIT BIT(11) 53*91f16700Schasinglulu 54*91f16700Schasinglulu #define RST_BASE (0xE6160000U) 55*91f16700Schasinglulu #define RST_MODEMR (RST_BASE + 0x0060U) 56*91f16700Schasinglulu 57*91f16700Schasinglulu #define LIFEC_CHIPID(x) (0xE6110040U + 0x04U * (x)) 58*91f16700Schasinglulu 59*91f16700Schasinglulu /* DBSC registers */ 60*91f16700Schasinglulu #include "../ddr_regs.h" 61*91f16700Schasinglulu 62*91f16700Schasinglulu #define DBSC_DBMONCONF4 0xE6793010U 63*91f16700Schasinglulu 64*91f16700Schasinglulu #define DBSC_PLL_LOCK(ch) (0xE6794054U + 0x100U * (ch)) 65*91f16700Schasinglulu #define DBSC_PLL_LOCK_0 0xE6794054U 66*91f16700Schasinglulu #define DBSC_PLL_LOCK_1 0xE6794154U 67*91f16700Schasinglulu #define DBSC_PLL_LOCK_2 0xE6794254U 68*91f16700Schasinglulu #define DBSC_PLL_LOCK_3 0xE6794354U 69*91f16700Schasinglulu 70*91f16700Schasinglulu /* STAT registers */ 71*91f16700Schasinglulu #define MSTAT_SL_INIT 0xE67E8000U 72*91f16700Schasinglulu #define MSTAT_REF_ARS 0xE67E8004U 73*91f16700Schasinglulu #define MSTATQ_STATQC 0xE67E8008U 74*91f16700Schasinglulu #define MSTATQ_WTENABLE 0xE67E8030U 75*91f16700Schasinglulu #define MSTATQ_WTREFRESH 0xE67E8034U 76*91f16700Schasinglulu #define MSTATQ_WTSETTING0 0xE67E8038U 77*91f16700Schasinglulu #define MSTATQ_WTSETTING1 0xE67E803CU 78*91f16700Schasinglulu 79*91f16700Schasinglulu #define QOS_BASE1 (0xE67F0000U) 80*91f16700Schasinglulu #define QOSCTRL_RAS (QOS_BASE1 + 0x0000U) 81*91f16700Schasinglulu #define QOSCTRL_FIXTH (QOS_BASE1 + 0x0004U) 82*91f16700Schasinglulu #define QOSCTRL_RAEN (QOS_BASE1 + 0x0018U) 83*91f16700Schasinglulu #define QOSCTRL_REGGD (QOS_BASE1 + 0x0020U) 84*91f16700Schasinglulu #define QOSCTRL_DANN (QOS_BASE1 + 0x0030U) 85*91f16700Schasinglulu #define QOSCTRL_DANT (QOS_BASE1 + 0x0038U) 86*91f16700Schasinglulu #define QOSCTRL_EC (QOS_BASE1 + 0x003CU) 87*91f16700Schasinglulu #define QOSCTRL_EMS (QOS_BASE1 + 0x0040U) 88*91f16700Schasinglulu #define QOSCTRL_INSFC (QOS_BASE1 + 0x0050U) 89*91f16700Schasinglulu #define QOSCTRL_BERR (QOS_BASE1 + 0x0054U) 90*91f16700Schasinglulu #define QOSCTRL_RACNT0 (QOS_BASE1 + 0x0080U) 91*91f16700Schasinglulu #define QOSCTRL_STATGEN0 (QOS_BASE1 + 0x0088U) 92*91f16700Schasinglulu 93*91f16700Schasinglulu /* other module */ 94*91f16700Schasinglulu #define THS1_THCTR 0xE6198020U 95*91f16700Schasinglulu #define THS1_TEMP 0xE6198028U 96