xref: /aosp_15_r20/external/coreboot/src/soc/mediatek/common/include/soc/lastbus_v2.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef SOC_MEDIATEK_COMMON_LASTBUS_V2_H
4 #define SOC_MEDIATEK_COMMON_LASTBUS_V2_H
5 
6 #define TIMEOUT_THRES_SHIFT		16
7 #define TIMEOUT_TYPE_SHIFT		1
8 #define LASTBUS_TIMEOUT_CLR		0x0200
9 #define LASTBUS_DEBUG_CKEN		0x0008
10 #define LASTBUS_DEBUG_EN		0x0004
11 #define LASTBUS_TIMEOUT			0x0001
12 
13 struct lastbus_idle_mask {
14 	u32 reg_offset;
15 	u32 reg_value;
16 };
17 
18 struct lastbus_monitor {
19 	const char *name;
20 	uintptr_t base;
21 	size_t num_ports;
22 	u16 bus_freq_mhz;
23 	size_t num_idle_mask;
24 	const struct lastbus_idle_mask *idle_masks;
25 };
26 
27 struct lastbus_config {
28 	const char *latch_platform;
29 	unsigned int timeout_ms;
30 	unsigned int timeout_type;
31 	unsigned int num_used_monitors;
32 	const struct lastbus_monitor *monitors;
33 };
34 
35 void lastbus_init(void);
36 extern const struct lastbus_config lastbus_cfg;
37 
38 #endif
39