coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
tracker_v2.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/mmio.h>
4 #include <soc/addressmap.h>
5 #include <soc/tracker.h>
6 #include <soc/tracker_common.h>
7 
8 /*
9  * for systracker:
10  * offset[0] dump from offset 0x100 ~ 0x2F8.
11  * offset[1] dump from offset 0x300 ~ 0x4FC
12  *
13  * for infra tracker:
14  * offset[0] dump from offset 0x100 ~ 0x1F8
15  * offset[1] dump from offset 0x300 ~ 0x3FC
16  *
17  * for perisys tracker:
18  * offset[0] dump from offset 0x100 ~ 0x2F8
19  * offset[1] dump from offset 0x300 ~ 0x4FC
20  */
22  [TRACKER_SYSTRACKER] = {
24  .timeout = BUS_DBG_CON_TIMEOUT,
25  .entry = SYS_TRACK_ENTRY,
26  .offset[0] = AR_TRACK_OFFSET,
27  .offset[1] = AW_TRACK_OFFSET,
28  .str = "systracker",
29  },
31  .base_addr = INFRA_TRACKER_BASE,
32  .timeout = BUSTRACKER_TIMEOUT,
33  .entry = INFRA_ENTRY_NUM,
34  .offset[0] = AR_TRACK_OFFSET,
35  .offset[1] = AW_TRACK_OFFSET,
36  .str = "infra_tracker",
37  },
39  .base_addr = PERI_TRACKER_BASE,
40  .timeout = BUSTRACKER_TIMEOUT,
41  .entry = PERI_ENTRY_NUM,
42  .offset[0] = AR_TRACK_OFFSET,
43  .offset[1] = AW_TRACK_OFFSET,
44  .str = "peri_tracker",
45  },
46 };
47 
48 void tracker_setup(void)
49 {
50  u32 val;
51  /*
52  * Set infra/peri tracker timeout.
53  * timeout = clock_in_mhz * 1000 / 16 * timeout_in_ms
54  *
55  * timeout: 200ms
56  * infra tracker clock: 156MHz
57  * peri tracker clock: 78MHz
58  */
59  val = 156 * 1000 / 16 * 200;
62 
63  val = 78 * 1000 / 16 * 200;
66 
67  /* Enable infra/peri tracer because tracker and tracer share the same enable bit. */
70 
71  /*
72  * Enable infra/peri tracker.
73  * bit[0] - BUS_DBG_EN
74  * bit[1] - TIMEOUT_EN
75  * bit[2] - SLV_ERR_EN
76  * bit[13] - HALT_ON_TIMEOUT_EN
77  * bit[14] - BUS_OT_WEN_CTRL
78  */
79  val = BIT(0) | BIT(1) | BIT(2) | BIT(13) | BIT(14);
82 }
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
#define BIT(nr)
Definition: ec_commands.h:45
@ DBG_TRACKER_BASE
Definition: addressmap.h:47
@ BUS_TRACE_MONITOR_BASE
Definition: addressmap.h:10
@ INFRA_TRACKER_BASE
Definition: addressmap.h:45
@ PERI_TRACKER_BASE
Definition: addressmap.h:40
uint32_t u32
Definition: stdint.h:51
uintptr_t base_addr
u8 val
Definition: sys.c:300
#define BUS_DBG_CON_TIMEOUT
#define AW_TRACK_OFFSET
Definition: tracker_v1.h:9
#define SYS_TRACK_ENTRY
Definition: tracker_v1.h:6
@ TRACKER_SYSTRACKER
Definition: tracker_v1.h:12
@ TRACKER_NUM
Definition: tracker_v1.h:13
#define AR_TRACK_OFFSET
Definition: tracker_v1.h:8
struct tracker tracker_data[TRACKER_NUM]
Definition: tracker_v2.c:21
void tracker_setup(void)
Definition: tracker_v2.c:48
#define BUS_TRACE_CON_AO_2
Definition: tracker_v2.h:12
#define BUS_TRACE_CON_2
Definition: tracker_v2.h:11
#define INFRA_ENTRY_NUM
Definition: tracker_v2.h:16
#define PERI_ENTRY_NUM
Definition: tracker_v2.h:17
@ TRACKER_PERISYSTRACKER
Definition: tracker_v2.h:27
@ TRACKER_INFRATRACKER
Definition: tracker_v2.h:26
#define BUS_TRACE_CON_1
Definition: tracker_v2.h:9
#define BUS_DBG_TIMER_CON1
Definition: tracker_v2.h:8
#define BUS_DBG_TIMER_CON0
Definition: tracker_v2.h:7
#define BUS_TRACE_CON_AO_1
Definition: tracker_v2.h:10
#define BUSTRACKER_TIMEOUT
Definition: tracker_v2.h:22
#define BUS_TRACE_EN
Definition: tracker_v2.h:13