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