From 845d8fbb6e47cf13688298836648fd2e403891ea Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 25 Feb 2019 14:57:08 +0100 Subject: rcar_gen3: Add M3-W 3.0 support Add support for the M3W 3.0 SoC and synchronize the upstream ATF with Renesas downstream ATF release v2.0.1. Signed-off-by: Marek Vasut --- plat/renesas/rcar/bl2_plat_setup.c | 15 ++++++++++++--- plat/renesas/rcar/include/rcar_def.h | 3 ++- plat/renesas/rcar/include/rcar_version.h | 2 +- plat/renesas/rcar/platform.mk | 8 ++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) (limited to 'plat/renesas') diff --git a/plat/renesas/rcar/bl2_plat_setup.c b/plat/renesas/rcar/bl2_plat_setup.c index 2debbf94e..350df127a 100644 --- a/plat/renesas/rcar/bl2_plat_setup.c +++ b/plat/renesas/rcar/bl2_plat_setup.c @@ -236,7 +236,7 @@ void bl2_plat_flush_bl31_params(void) product = reg & RCAR_PRODUCT_MASK; cut = reg & RCAR_CUT_MASK; - if (product == RCAR_PRODUCT_M3) + if (product == RCAR_PRODUCT_M3 && RCAR_CUT_VER30 > cut) goto tlb; if (product == RCAR_PRODUCT_H3 && RCAR_CUT_VER20 > cut) @@ -693,8 +693,17 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2, break; } - if (RCAR_PRODUCT_M3_CUT11 == product_cut) { - NOTICE("BL2: PRR is R-Car %s Ver.1.1 / Ver.1.2\n", str); + if ((RCAR_PRODUCT_M3 == product) && + (RCAR_CUT_VER20 == (reg & RCAR_MAJOR_MASK))) { + if (RCAR_M3_CUT_VER11 == (reg & RCAR_CUT_MASK)) { + /* M3 Ver.1.1 or Ver.1.2 */ + NOTICE("BL2: PRR is R-Car %s Ver.1.1 / Ver.1.2\n", + str); + } else { + NOTICE("BL2: PRR is R-Car %s Ver.1.%d\n", + str, + (reg & RCAR_MINOR_MASK) + RCAR_M3_MINOR_OFFSET); + } } else { major = (reg & RCAR_MAJOR_MASK) >> RCAR_MAJOR_SHIFT; major = major + RCAR_MAJOR_OFFSET; diff --git a/plat/renesas/rcar/include/rcar_def.h b/plat/renesas/rcar/include/rcar_def.h index 3bb03f2e5..6bbd6fa7b 100644 --- a/plat/renesas/rcar/include/rcar_def.h +++ b/plat/renesas/rcar/include/rcar_def.h @@ -154,7 +154,7 @@ #define RCAR_PRODUCT_M3N U(0x00005500) #define RCAR_PRODUCT_E3 U(0x00005700) #define RCAR_CUT_VER10 U(0x00000000) -#define RCAR_CUT_VER11 U(0x00000001) /* H3/M3N Ver.1.1 */ +#define RCAR_CUT_VER11 U(0x00000001) /* H3/M3N/E3 Ver.1.1 */ #define RCAR_M3_CUT_VER11 U(0x00000010) /* M3 Ver.1.1/Ver.1.2 */ #define RCAR_CUT_VER20 U(0x00000010) #define RCAR_CUT_VER30 U(0x00000020) @@ -164,6 +164,7 @@ #define RCAR_MAJOR_SHIFT U(4) #define RCAR_MINOR_SHIFT U(0) #define RCAR_MAJOR_OFFSET U(1) +#define RCAR_M3_MINOR_OFFSET U(2) #define RCAR_PRODUCT_H3_CUT10 (RCAR_PRODUCT_H3 | U(0x00)) /* 1.0 */ #define RCAR_PRODUCT_H3_CUT11 (RCAR_PRODUCT_H3 | U(0x01)) /* 1.1 */ #define RCAR_PRODUCT_H3_CUT20 (RCAR_PRODUCT_H3 | U(0x10)) /* 2.0 */ diff --git a/plat/renesas/rcar/include/rcar_version.h b/plat/renesas/rcar/include/rcar_version.h index 5c8805c2e..e43632407 100644 --- a/plat/renesas/rcar/include/rcar_version.h +++ b/plat/renesas/rcar/include/rcar_version.h @@ -9,7 +9,7 @@ #include -#define VERSION_OF_RENESAS "2.0.0" +#define VERSION_OF_RENESAS "2.0.1" #define VERSION_OF_RENESAS_MAXLEN (128) extern const uint8_t version_of_renesas[VERSION_OF_RENESAS_MAXLEN]; diff --git a/plat/renesas/rcar/platform.mk b/plat/renesas/rcar/platform.mk index 97d6ddc7b..715b8ae17 100644 --- a/plat/renesas/rcar/platform.mk +++ b/plat/renesas/rcar/platform.mk @@ -38,10 +38,12 @@ $(eval $(call add_define,RCAR_H3N)) $(eval $(call add_define,RCAR_AUTO)) RCAR_CUT_10:=0 RCAR_CUT_11:=1 +RCAR_CUT_13:=3 RCAR_CUT_20:=10 RCAR_CUT_30:=20 $(eval $(call add_define,RCAR_CUT_10)) $(eval $(call add_define,RCAR_CUT_11)) +$(eval $(call add_define,RCAR_CUT_13)) $(eval $(call add_define,RCAR_CUT_20)) $(eval $(call add_define,RCAR_CUT_30)) @@ -98,6 +100,10 @@ else RCAR_LSI_CUT:=0 else ifeq (${LSI_CUT},11) RCAR_LSI_CUT:=1 + else ifeq (${LSI_CUT},13) + RCAR_LSI_CUT:=3 + else ifeq (${LSI_CUT},30) + RCAR_LSI_CUT:=20 else $(error "Error: ${LSI_CUT} is not supported.") endif @@ -130,6 +136,8 @@ else # disable compatible function. ifeq (${LSI_CUT},10) RCAR_LSI_CUT:=0 + else ifeq (${LSI_CUT},11) + RCAR_LSI_CUT:=1 else $(error "Error: ${LSI_CUT} is not supported.") endif -- cgit v1.2.3