1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <device/mmio.h> 4 #include <soc/addressmap.h> 5 #include <soc/lastbus_v2.h> 6 7 static const struct lastbus_idle_mask infra_ao_mask[] = { 8 { 9 .reg_offset = 0x04, 10 .reg_value = 0x2, 11 }, 12 { 13 .reg_offset = 0x08, 14 .reg_value = 0x10000, 15 }, 16 }; 17 18 static const struct lastbus_idle_mask peri_ao_mask[] = { 19 { 20 .reg_offset = 0x04, 21 .reg_value = 0x20000, 22 }, 23 }; 24 25 static const struct lastbus_idle_mask fmem_ao_mask[] = { 26 { 27 .reg_offset = 0x14, 28 .reg_value = 0x204, 29 }, 30 }; 31 32 static const struct lastbus_monitor monitors[] = { 33 { 34 .name = "debug_ctrl_ao_INFRA_AO", 35 .base = INFRA_AO_DBUG_BASE, 36 .num_ports = 34, 37 .num_idle_mask = ARRAY_SIZE(infra_ao_mask), 38 .idle_masks = infra_ao_mask, 39 .bus_freq_mhz = 78, 40 }, 41 { 42 .name = "debug_ctrl_ao_INFRA2_AO", 43 .base = INFRA2_AO_DBUG_BASE, 44 .num_ports = 9, 45 .num_idle_mask = 0, 46 .bus_freq_mhz = 78, 47 }, 48 { 49 .name = "debug_ctrl_ao_PERI_AO", 50 .base = PERI_AO_BASE, 51 .num_ports = 25, 52 .num_idle_mask = ARRAY_SIZE(peri_ao_mask), 53 .idle_masks = peri_ao_mask, 54 .bus_freq_mhz = 78, 55 }, 56 { 57 .name = "debug_ctrl_ao_PERI_AO2", 58 .base = PERI_AO2_BASE, 59 .num_ports = 20, 60 .num_idle_mask = 0, 61 .bus_freq_mhz = 78, 62 }, 63 { 64 .name = "debug_ctrl_ao_PERI_PAR_AO", 65 .base = PERI_PAR_AO_BASE, 66 .num_ports = 18, 67 .num_idle_mask = 0, 68 .bus_freq_mhz = 78, 69 }, 70 { 71 .name = "debug_ctrl_ao_FMEM_AO", 72 .base = FMEM_AO_BASE, 73 .num_ports = 28, 74 .num_idle_mask = ARRAY_SIZE(fmem_ao_mask), 75 .idle_masks = fmem_ao_mask, 76 .bus_freq_mhz = 78, 77 }, 78 }; 79 80 const struct lastbus_config lastbus_cfg = { 81 .latch_platform = "MT8188", 82 .timeout_ms = 200, 83 .timeout_type = 0, 84 .num_used_monitors = ARRAY_SIZE(monitors), 85 .monitors = monitors, 86 }; 87