summaryrefslogtreecommitdiff
path: root/plat/renesas/rcar/bl2_plat_setup.c
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut+renesas@gmail.com>2019-01-05 13:56:03 +0100
committerMarek Vasut <marek.vasut+renesas@gmail.com>2019-04-02 03:40:51 +0200
commitbfbf5df405d5e99d6df1060ab8da479c8f1524ab (patch)
tree582f4693134bbc4da93da85fbc76a3129d2ac843 /plat/renesas/rcar/bl2_plat_setup.c
parent5b4f022be4f0c72709e3a526574de1d79b385a4c (diff)
rcar_gen3: plat: Add initial D3 support
Add R-Car D3 SoC platform specifics. Driver, PFC, QoS, DDR init code will be added separately. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Diffstat (limited to 'plat/renesas/rcar/bl2_plat_setup.c')
-rw-r--r--plat/renesas/rcar/bl2_plat_setup.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/plat/renesas/rcar/bl2_plat_setup.c b/plat/renesas/rcar/bl2_plat_setup.c
index 7442942c..d21ddf50 100644
--- a/plat/renesas/rcar/bl2_plat_setup.c
+++ b/plat/renesas/rcar/bl2_plat_setup.c
@@ -76,6 +76,9 @@ static void bl2_init_generic_timer(void);
#elif RCAR_LSI == RCAR_E3
#define TARGET_PRODUCT RCAR_PRODUCT_E3
#define TARGET_NAME "R-Car E3"
+#elif RCAR_LSI == RCAR_D3
+#define TARGET_PRODUCT RCAR_PRODUCT_D3
+#define TARGET_NAME "R-Car D3"
#elif RCAR_LSI == RCAR_AUTO
#define TARGET_NAME "R-Car H3/M3/M3N"
#endif
@@ -242,6 +245,9 @@ void bl2_plat_flush_bl31_params(void)
if (product == RCAR_PRODUCT_H3 && RCAR_CUT_VER20 > cut)
goto tlb;
+ if (product == RCAR_PRODUCT_D3)
+ goto tlb;
+
/* Disable MFIS write protection */
mmio_write_32(MFISWPCNTR, MFISWPCNTR_PASSWORD | 1);
@@ -430,6 +436,10 @@ static void bl2_populate_compatible_string(void *fdt)
ret = fdt_setprop_string(fdt, 0, "compatible",
"renesas,ebisu");
break;
+ case BOARD_DRAAK:
+ ret = fdt_setprop_string(fdt, 0, "compatible",
+ "renesas,draak");
+ break;
default:
NOTICE("BL2: Cannot set compatible string, board unsupported\n");
panic();
@@ -458,6 +468,10 @@ static void bl2_populate_compatible_string(void *fdt)
ret = fdt_appendprop_string(fdt, 0, "compatible",
"renesas,r8a77990");
break;
+ case RCAR_PRODUCT_D3:
+ ret = fdt_appendprop_string(fdt, 0, "compatible",
+ "renesas,r8a77995");
+ break;
default:
NOTICE("BL2: Cannot set compatible string, SoC unsupported\n");
panic();
@@ -598,6 +612,11 @@ static void bl2_advertise_dram_size(uint32_t product)
dram_config[1] = 0x100000000ULL;
#endif /* RCAR_DRAM_DDR3L_MEMCONF == 0 */
break;
+
+ case RCAR_PRODUCT_D3:
+ /* 512MB */
+ dram_config[1] = 0x20000000ULL;
+ break;
}
bl2_advertise_dram_entries(dram_config);
@@ -617,6 +636,7 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
const char *product_h3 = "H3";
const char *product_m3 = "M3";
const char *product_e3 = "E3";
+ const char *product_d3 = "D3";
const char *lcs_secure = "SE";
const char *lcs_cm = "CM";
const char *lcs_dm = "DM";
@@ -629,7 +649,7 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
const char *boot_qspi80 = "QSPI Flash(80MHz)";
const char *boot_emmc25x1 = "eMMC(25MHz x1)";
const char *boot_emmc50x8 = "eMMC(50MHz x8)";
-#if RCAR_LSI == RCAR_E3
+#if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3)
const char *boot_hyper160 = "HyperFlash(150MHz)";
#else
const char *boot_hyper160 = "HyperFlash(160MHz)";
@@ -696,6 +716,9 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
case RCAR_PRODUCT_E3:
str = product_e3;
break;
+ case RCAR_PRODUCT_D3:
+ str = product_d3;
+ break;
default:
str = unknown;
break;
@@ -736,6 +759,7 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
case BOARD_EBISU:
case BOARD_STARTER_KIT_PRE:
case BOARD_EBISU_4D:
+ case BOARD_DRAAK:
break;
default:
type = BOARD_UNKNOWN;
@@ -774,9 +798,17 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
str = boot_qspi80;
break;
case MODEMR_BOOT_DEV_EMMC_25X1:
+#if RCAR_LSI == RCAR_D3
+ ERROR("BL2: Failed to Initialize. eMMC is not supported.\n");
+ panic();
+#endif
str = boot_emmc25x1;
break;
case MODEMR_BOOT_DEV_EMMC_50X8:
+#if RCAR_LSI == RCAR_D3
+ ERROR("BL2: Failed to Initialize. eMMC is not supported.\n");
+ panic();
+#endif
str = boot_emmc50x8;
break;
default:
@@ -940,7 +972,9 @@ void bl2_platform_setup(void)
static void bl2_init_generic_timer(void)
{
-#if RCAR_LSI == RCAR_E3
+#if RCAR_LSI == RCAR_D3
+ uint32_t reg_cntfid = EXTAL_DRAAK;
+#elif RCAR_LSI == RCAR_E3
uint32_t reg_cntfid = EXTAL_EBISU;
#else /* RCAR_LSI == RCAR_E3 */
uint32_t reg;