blob: 90751477b5e1d0aa54ab5a0c1ba6b0ac304a8bb2 [file] [log] [blame]
Michal Simekec48b6c2018-08-22 14:55:27 +02001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * (C) Copyright 2014 - 2018 Xilinx, Inc.
4 * Michal Simek <michal.simek@xilinx.com>
5 */
6
7#include <common.h>
8#include <fdtdec.h>
9#include <malloc.h>
10#include <asm/io.h>
11#include <asm/arch/hardware.h>
12
13DECLARE_GLOBAL_DATA_PTR;
14
15int board_init(void)
16{
17 printf("EL Level:\tEL%d\n", current_el());
18
19 return 0;
20}
21
22int board_early_init_r(void)
23{
Michal Simekfb771792019-01-28 11:08:00 +010024 u32 val;
Michal Simekec48b6c2018-08-22 14:55:27 +020025
Michal Simekfb771792019-01-28 11:08:00 +010026 if (current_el() != 3)
27 return 0;
Michal Simekec48b6c2018-08-22 14:55:27 +020028
Michal Simek47a766f2019-01-28 11:12:41 +010029 debug("iou_switch ctrl div0 %x\n",
30 readl(&crlapb_base->iou_switch_ctrl));
31
Michal Simekfb771792019-01-28 11:08:00 +010032 writel(IOU_SWITCH_CTRL_CLKACT_BIT |
Michal Simek47a766f2019-01-28 11:12:41 +010033 (CONFIG_IOU_SWITCH_DIVISOR0 << IOU_SWITCH_CTRL_DIVISOR0_SHIFT),
Michal Simekfb771792019-01-28 11:08:00 +010034 &crlapb_base->iou_switch_ctrl);
Michal Simekec48b6c2018-08-22 14:55:27 +020035
Michal Simekfb771792019-01-28 11:08:00 +010036 /* Global timer init - Program time stamp reference clk */
37 val = readl(&crlapb_base->timestamp_ref_ctrl);
38 val |= CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT;
39 writel(val, &crlapb_base->timestamp_ref_ctrl);
Michal Simekec48b6c2018-08-22 14:55:27 +020040
Michal Simekfb771792019-01-28 11:08:00 +010041 debug("ref ctrl 0x%x\n",
42 readl(&crlapb_base->timestamp_ref_ctrl));
Michal Simekec48b6c2018-08-22 14:55:27 +020043
Michal Simekfb771792019-01-28 11:08:00 +010044 /* Clear reset of timestamp reg */
45 writel(0, &crlapb_base->rst_timestamp);
Michal Simekec48b6c2018-08-22 14:55:27 +020046
Michal Simekfb771792019-01-28 11:08:00 +010047 /*
48 * Program freq register in System counter and
49 * enable system counter.
50 */
51 writel(COUNTER_FREQUENCY,
52 &iou_scntr_secure->base_frequency_id_register);
Michal Simekec48b6c2018-08-22 14:55:27 +020053
Michal Simekfb771792019-01-28 11:08:00 +010054 debug("counter val 0x%x\n",
55 readl(&iou_scntr_secure->base_frequency_id_register));
Michal Simekec48b6c2018-08-22 14:55:27 +020056
Michal Simekfb771792019-01-28 11:08:00 +010057 writel(IOU_SCNTRS_CONTROL_EN,
58 &iou_scntr_secure->counter_control_register);
59
60 debug("scntrs control 0x%x\n",
61 readl(&iou_scntr_secure->counter_control_register));
62 debug("timer 0x%llx\n", get_ticks());
63 debug("timer 0x%llx\n", get_ticks());
Michal Simekec48b6c2018-08-22 14:55:27 +020064
65 return 0;
66}
67
68int dram_init_banksize(void)
69{
70 fdtdec_setup_memory_banksize();
71
72 return 0;
73}
74
75int dram_init(void)
76{
77 if (fdtdec_setup_mem_size_base() != 0)
78 return -EINVAL;
79
80 return 0;
81}
82
83void reset_cpu(ulong addr)
84{
85}