summaryrefslogtreecommitdiff
path: root/plat
diff options
context:
space:
mode:
authorHaojian Zhuang <haojian.zhuang@linaro.org>2018-02-17 12:06:18 +0800
committerHaojian Zhuang <haojian.zhuang@linaro.org>2018-02-17 12:06:18 +0800
commit135d713c7ad2a27aac761d2942d4233399c74088 (patch)
treea276e1373dcc74f3efacd3f1b2e128a31f51dfd7 /plat
parentcc40f7fe017ad15884d7b7b93f9f9a702443f80b (diff)
hikey960: avoid hardcode on uart port
Avoid hardcode on uart port. The uart port could be auto detected on HiKey960 platform. Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Diffstat (limited to 'plat')
-rw-r--r--plat/hisilicon/hikey960/hikey960_pm.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/plat/hisilicon/hikey960/hikey960_pm.c b/plat/hisilicon/hikey960/hikey960_pm.c
index 6609530c..22963c4f 100644
--- a/plat/hisilicon/hikey960/hikey960_pm.c
+++ b/plat/hisilicon/hikey960/hikey960_pm.c
@@ -29,6 +29,7 @@
#define DMAC_GLB_REG_SEC 0x694
#define AXI_CONF_BASE 0x820
+static unsigned int uart_base;
static uintptr_t hikey960_sec_entrypoint;
static void hikey960_pwr_domain_standby(plat_local_state_t cpu_state)
@@ -263,7 +264,7 @@ hikey960_pwr_domain_suspend_finish(const psci_power_state_t *target_state)
if (hisi_test_ap_suspend_flag(cluster)) {
hikey960_sr_dma_reinit();
gicv2_cpuif_enable();
- console_init(PL011_UART6_BASE, PL011_UART_CLK_IN_HZ,
+ console_init(uart_base, PL011_UART_CLK_IN_HZ,
PL011_BAUDRATE);
}
@@ -295,6 +296,19 @@ static const plat_psci_ops_t hikey960_psci_ops = {
int plat_setup_psci_ops(uintptr_t sec_entrypoint,
const plat_psci_ops_t **psci_ops)
{
+ unsigned int id = 0;
+ int ret;
+
+ ret = hikey960_read_boardid(&id);
+ if (ret == 0) {
+ if (id == 5300U)
+ uart_base = PL011_UART5_BASE;
+ else
+ uart_base = PL011_UART6_BASE;
+ } else {
+ uart_base = PL011_UART6_BASE;
+ }
+
hikey960_sec_entrypoint = sec_entrypoint;
INFO("%s: sec_entrypoint=0x%lx\n", __func__,