blob: 3485449b6bf1167e8e02316fcb83477c9fced750 [file] [log] [blame]
Zhenguo Lidacff812021-09-07 19:45:37 +08001/* SPDX-License-Identifier: GPL-2.0-only */
2
Zhenguo Lidacff812021-09-07 19:45:37 +08003#include <console/console.h>
4#include <device/mmio.h>
5#include <soc/addressmap.h>
Rex-BC Chen2efb6142021-12-06 13:12:44 +08006#include <soc/tracker.h>
Zhenguo Lidacff812021-09-07 19:45:37 +08007#include <soc/tracker_common.h>
8
Rex-BC Chenac6070a2021-12-02 19:57:46 +08009__weak void tracker_setup(void)
10{
11 /* do nothing. */
12}
13
Zhenguo Lidacff812021-09-07 19:45:37 +080014static void tracker_dump_data(void)
15{
16 int i, j, k;
17 int size;
18 uintptr_t reg;
19 struct tracker *tra;
20
21 for (j = 0; j < TRACKER_NUM; j++) {
22 tra = &tracker_data[j];
23
24 if (!(read32((void *)(tra->base_addr)) & tra->timeout))
25 continue;
26
27 printk(BIOS_INFO, "**Dump %s debug register start**\n", tra->str);
28 for (k = 0; k < 2; k++) {
Zhenguo Lidacff812021-09-07 19:45:37 +080029 size = 2 * tra->entry;
30 for (i = 0; i < size; i++) {
31 reg = tra->base_addr + tra->offset[k] + i * 4;
32 printk(BIOS_INFO, "%#lx:%#x,", reg, read32((void *)reg));
33
34 if (i % 4 == 3 || i == size - 1)
35 printk(BIOS_INFO, "\n");
36 }
37 }
38
39 printk(BIOS_INFO, "**Dump %s debug register end**\n", tra->str);
40 }
41}
42
43void bustracker_init(void)
44{
45 tracker_dump_data();
Rex-BC Chen2efb6142021-12-06 13:12:44 +080046 tracker_setup();
Zhenguo Lidacff812021-09-07 19:45:37 +080047}