diff options
author | Antonio Niño Díaz <antonio.ninodiaz@arm.com> | 2019-01-31 10:22:36 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-31 10:22:36 +0000 |
commit | 5ce301b5cf2850a767d37a6478b04699494169b9 (patch) | |
tree | 079db5b6413c59d500ae91cd84c6a328de261f15 /drivers | |
parent | b57eb972624e74dfae827ea4f961fc7f2bddb779 (diff) | |
parent | c87c8f85b1b3e72521216bbae2de42e9feca854f (diff) | |
download | platform_external_arm-trusted-firmware-5ce301b5cf2850a767d37a6478b04699494169b9.tar.gz platform_external_arm-trusted-firmware-5ce301b5cf2850a767d37a6478b04699494169b9.tar.bz2 platform_external_arm-trusted-firmware-5ce301b5cf2850a767d37a6478b04699494169b9.zip |
Merge pull request #1793 from marex/arm/master/fixes-v2.0.0
Arm/master/fixes v2.0.0
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/renesas/rcar/cpld/ulcb_cpld.c | 4 | ||||
-rw-r--r-- | drivers/renesas/rcar/pwrc/pwrc.c | 40 | ||||
-rw-r--r-- | drivers/renesas/rcar/pwrc/pwrc.h | 1 | ||||
-rw-r--r-- | drivers/staging/renesas/rcar/ddr/ddr_a/ddr_init_e3.c | 12 | ||||
-rw-r--r-- | drivers/staging/renesas/rcar/ddr/ddr_b/boot_init_dram.c | 8 |
5 files changed, 54 insertions, 11 deletions
diff --git a/drivers/renesas/rcar/cpld/ulcb_cpld.c b/drivers/renesas/rcar/cpld/ulcb_cpld.c index 6b0361497..483085373 100644 --- a/drivers/renesas/rcar/cpld/ulcb_cpld.c +++ b/drivers/renesas/rcar/cpld/ulcb_cpld.c @@ -24,6 +24,9 @@ #define GPIO_INOUTSEL2 0xE6052004 #define GPIO_INOUTSEL6 0xE6055404 +/* General IO/Interrupt Switching Register */ +#define GPIO_IOINTSEL6 0xE6055400 + /* GPIO/perihperal function select */ #define PFC_GPSR2 0xE6060108 #define PFC_GPSR6 0xE6060118 @@ -93,6 +96,7 @@ static void cpld_init(void) gpio_pfc(PFC_GPSR2, SSTBZ); gpio_pfc(PFC_GPSR6, MOSI); + gpio_set_value(GPIO_IOINTSEL6, SCLK, 0); gpio_set_value(GPIO_OUTDT6, SCLK, 0); gpio_set_value(GPIO_OUTDT2, SSTBZ, 1); gpio_set_value(GPIO_OUTDT6, MOSI, 0); diff --git a/drivers/renesas/rcar/pwrc/pwrc.c b/drivers/renesas/rcar/pwrc/pwrc.c index b005caff6..d7f088094 100644 --- a/drivers/renesas/rcar/pwrc/pwrc.c +++ b/drivers/renesas/rcar/pwrc/pwrc.c @@ -768,3 +768,43 @@ count_ca57: done: return count; } + +int32_t rcar_pwrc_cpu_on_check(uint64_t mpidr) +{ + uint64_t i; + uint64_t j; + uint64_t cpu_count; + uintptr_t reg_PSTR; + uint32_t status; + uint64_t my_cpu; + int32_t rtn; + uint32_t my_cluster_type; + + const uint32_t cluster_type[PLATFORM_CLUSTER_COUNT] = { + RCAR_CLUSTER_CA53, + RCAR_CLUSTER_CA57 + }; + const uintptr_t registerPSTR[PLATFORM_CLUSTER_COUNT] = { + RCAR_CA53PSTR, + RCAR_CA57PSTR + }; + + my_cluster_type = rcar_pwrc_get_cluster(); + + rtn = 0; + my_cpu = mpidr & ((uint64_t)(MPIDR_CPU_MASK)); + for (i = 0U; i < ((uint64_t)(PLATFORM_CLUSTER_COUNT)); i++) { + cpu_count = rcar_pwrc_get_cpu_num(cluster_type[i]); + reg_PSTR = registerPSTR[i]; + for (j = 0U; j < cpu_count; j++) { + if ((my_cluster_type != cluster_type[i]) || (my_cpu != j)) { + status = mmio_read_32(reg_PSTR) >> (j * 4U); + if ((status & 0x00000003U) == 0U) { + rtn--; + } + } + } + } + return (rtn); + +} diff --git a/drivers/renesas/rcar/pwrc/pwrc.h b/drivers/renesas/rcar/pwrc/pwrc.h index 3cdac694c..d4d6fc441 100644 --- a/drivers/renesas/rcar/pwrc/pwrc.h +++ b/drivers/renesas/rcar/pwrc/pwrc.h @@ -44,6 +44,7 @@ void rcar_pwrc_enable_interrupt_wakeup(uint64_t mpidr); void rcar_pwrc_clusteroff(uint64_t mpidr); void rcar_pwrc_cpuoff(uint64_t mpidr); void rcar_pwrc_cpuon(uint64_t mpidr); +int32_t rcar_pwrc_cpu_on_check(uint64_t mpidr); void rcar_pwrc_setup(void); uint32_t rcar_pwrc_get_cpu_wkr(uint64_t mpidr); diff --git a/drivers/staging/renesas/rcar/ddr/ddr_a/ddr_init_e3.c b/drivers/staging/renesas/rcar/ddr/ddr_a/ddr_init_e3.c index 62997bc0d..c289c88fd 100644 --- a/drivers/staging/renesas/rcar/ddr/ddr_a/ddr_init_e3.c +++ b/drivers/staging/renesas/rcar/ddr/ddr_a/ddr_init_e3.c @@ -1137,13 +1137,13 @@ uint32_t recovery_from_backup_mode(void) /* ddr backupmode end */ if (ddrBackup) { - NOTICE("[WARM_BOOT]"); + NOTICE("BL2: [WARM_BOOT]\n"); } else { - NOTICE("[COLD_BOOT]"); + NOTICE("BL2: [COLD_BOOT]\n"); } /* ddrBackup */ err = rcar_dram_update_boot_status(ddrBackup); if (err) { - NOTICE("[BOOT_STATUS_UPDATE_ERROR]"); + NOTICE("BL2: [BOOT_STATUS_UPDATE_ERROR]\n"); return INITDRAM_ERR_I; } /* err */ @@ -1672,9 +1672,9 @@ int32_t rcar_dram_init(void) md = *((volatile uint32_t*)RST_MODEMR); ddr = (md & 0x00080000) >> 19; if (ddr == 0x0) { - NOTICE("BL2: DDR1584(%s)", RCAR_E3_DDR_VERSION); + NOTICE("BL2: DDR1584(%s)\n", RCAR_E3_DDR_VERSION); } else if(ddr == 0x1){ - NOTICE("BL2: DDR1856(%s)", RCAR_E3_DDR_VERSION); + NOTICE("BL2: DDR1856(%s)\n", RCAR_E3_DDR_VERSION); } /* ddr */ rcar_dram_get_boot_status(&ddrBackup); @@ -1691,8 +1691,6 @@ int32_t rcar_dram_init(void) failcount = 1; } /* dataL */ - NOTICE("..%d\n", failcount); /* rev.0.05 */ - if (failcount == 0) { return INITDRAM_OK; } else { diff --git a/drivers/staging/renesas/rcar/ddr/ddr_b/boot_init_dram.c b/drivers/staging/renesas/rcar/ddr/ddr_b/boot_init_dram.c index 78f0f1146..f4bfdde1c 100644 --- a/drivers/staging/renesas/rcar/ddr/ddr_b/boot_init_dram.c +++ b/drivers/staging/renesas/rcar/ddr/ddr_b/boot_init_dram.c @@ -2826,7 +2826,7 @@ static uint32_t pll3_freq(uint32_t on) set_freqchgack(0); if (timeout) { - FATAL_MSG("Time out[2]"); + FATAL_MSG("BL2: Time out[2]\n"); return (1); } return (0); @@ -3012,13 +3012,13 @@ static uint32_t init_ddr(void) ***********************************************************************/ #ifdef DDR_BACKUPMODE if (ddrBackup) { - NOTICE("[WARM_BOOT]"); + NOTICE("BL2: [WARM_BOOT]\n"); } else { - NOTICE("[COLD_BOOT]"); + NOTICE("BL2: [COLD_BOOT]\n"); } err = rcar_dram_update_boot_status(ddrBackup); if (err) { - NOTICE("[BOOT_STATUS_UPDATE_ERROR]"); + NOTICE("BL2: [BOOT_STATUS_UPDATE_ERROR]\n"); return INITDRAM_ERR_I; } #endif |