coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
spm.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_MEDIATEK_MT8173_SPM_H__
4 #define __SOC_MEDIATEK_MT8173_SPM_H__
5 
6 #include <soc/addressmap.h>
7 #include <soc/mtcmos.h>
8 #include <stddef.h>
9 
10 enum {
11  SPM_PROJECT_CODE = 0xb16
12 };
13 
14 enum {
15  DISP_PWR_STA_MASK = 0x1 << 3,
16  DISP_SRAM_PDN_MASK = 0xf << 8,
17  DISP_SRAM_ACK_MASK = 0x1 << 12,
18  AUDIO_PWR_STA_MASK = 0x1 << 24,
19  AUDIO_SRAM_PDN_MASK = 0xf << 8,
20  AUDIO_SRAM_ACK_MASK = 0xf << 12,
21 };
22 
23 struct mtk_spm_regs {
26  u32 power_on_val0; /* 0x010 */
29  u32 clk_settle; /* 0x100 */
31  u32 ca7_cpu0_pwr_con; /* 0x200 */
35  u32 vde_pwr_con; /* 0x210 */
37  u32 ca7_cpu1_pwr_con; /* 0x218 */
39  u32 ca7_cpu3_pwr_con; /* 0x220 */
41  u32 ven_pwr_con; /* 0x230 */
45  u32 dpy_pwr_con; /* 0x240 */
46  u32 ca7_cputop_l2_pdn; /* 0x244 */
49  struct { /* 0x25c */
52  } ca7_cpu[4];
53  u32 gcpu_sram_con; /* 0x27c */
54  u32 dpy2_pwr_con; /* 0x280 */
57  u32 mcu_pwr_con; /* 0x290 */
61  u32 ca15_cpu_pwr_con[4]; /* 0x2a0 */
62  u32 ca15_cputop_pwr_con; /* 0x2b0 */
63  u32 ca15_l1_pwr_con; /* 0x2b4 */
64  u32 ca15_l2_pwr_con; /* 0x2b8 */
66  u32 mfg_2d_pwr_con; /* 0x2c0 */
70  u32 pcm_con0; /* 0x310 */
74  u32 pcm_reg_data_ini; /* 0x320 */
76  u32 pcm_event_vector0; /* 0x340 */
81  u32 pcm_mas_pause_mask; /* 0x354 */
86  u32 pcm_reg_data[16]; /* 0x380 */
98  u32 clk_con; /* 0x400 */
102  u32 apmcu_pwrctl; /* 0x600 */
105  u32 pwr_status; /* 0x60c */
106  u32 pwr_status_2nd; /* 0x610 */
108  u8 reserved19[0x720 - 0x618];
109  u32 sleep_timer_sta; /* 0x720 */
111  u32 sleep_twam_con; /* 0x760 */
115  u32 sleep_twam_status3; /* 0x770 */
121  u32 pcm_wdt_timer_val; /* 0x824 */
124  u32 pcm_md32_mailbox; /* 0x830 */
127  u32 sleep_isr_mask; /* 0x900 */
130  u32 sleep_isr_raw_sta; /* 0x910 */
135  u8 reserved26[0xb00 - 0x924];
136  u32 pcm_reserve; /* 0xb00 */
141  u32 pcm_debug_con; /* 0xb20 */
143  u32 ca7_cpu_irq_mask[4]; /* 0xb30 */
146  u32 pcm_pasr_dpd[4]; /* 0xb60 */
147  u8 reserved30[0xf00 - 0xb70];
148  u32 sleep_ca7_wfi_en[4]; /* 0xf00 */
150 };
151 
152 check_member(mtk_spm_regs, sleep_ca15_wfi_en[3], 0xf1c);
153 
154 static struct mtk_spm_regs *const mtk_spm = (void *)SPM_BASE;
155 
156 static const struct power_domain_data disp[] = {
157  {
159  .pwr_sta_mask = DISP_PWR_STA_MASK,
160  .sram_pdn_mask = DISP_SRAM_PDN_MASK,
161  .sram_ack_mask = DISP_SRAM_ACK_MASK,
162  },
163 };
164 
165 static const struct power_domain_data audio[] = {
166  {
168  .pwr_sta_mask = AUDIO_PWR_STA_MASK,
169  .sram_pdn_mask = AUDIO_SRAM_PDN_MASK,
170  .sram_ack_mask = AUDIO_SRAM_ACK_MASK,
171  },
172 };
173 
174 #endif /* __SOC_MEDIATEK_MT8173_SPM_H__ */
static const struct power_domain_data disp[]
Definition: spm.h:156
static struct mtk_spm_regs *const mtk_spm
Definition: spm.h:154
@ SPM_PROJECT_CODE
Definition: spm.h:11
check_member(mtk_spm_regs, sleep_ca15_wfi_en[3], 0xf1c)
@ DISP_SRAM_ACK_MASK
Definition: spm.h:17
@ DISP_PWR_STA_MASK
Definition: spm.h:15
@ DISP_SRAM_PDN_MASK
Definition: spm.h:16
@ AUDIO_SRAM_ACK_MASK
Definition: spm.h:20
@ AUDIO_PWR_STA_MASK
Definition: spm.h:18
@ AUDIO_SRAM_PDN_MASK
Definition: spm.h:19
static const struct power_domain_data audio[]
Definition: spm.h:165
@ SPM_BASE
Definition: addressmap.h:19
uint32_t u32
Definition: stdint.h:51
uint8_t u8
Definition: stdint.h:45
u32 pwr_status
Definition: spm.h:105
u32 ca7_cpu2_pwr_con
Definition: spm.h:38
u32 sleep_twam_status0
Definition: spm.h:112
u32 pcm_reserve
Definition: spm.h:136
u32 sleep_wakeup_misc
Definition: spm.h:132
u32 sleep_md32_isr_raw_sta
Definition: spm.h:131
u32 reserved13[17]
Definition: spm.h:69
u32 sleep_cpu_wakeup_event
Definition: spm.h:118
u32 reserved25[2]
Definition: spm.h:129
u32 reserved15
Definition: spm.h:80
u32 sleep_timer_sta
Definition: spm.h:109
u32 power_on_val0
Definition: spm.h:26
u32 ca7_cputop_l2_pdn
Definition: spm.h:46
u32 ca15_cpu_pwr_con[4]
Definition: spm.h:61
u32 pcm_event_vector5
Definition: spm.h:92
u32 pcm_src_req
Definition: spm.h:139
u32 sleep_wakeup_event_mask
Definition: spm.h:117
u32 ca7_cputop_l2_sleep
Definition: spm.h:47
u32 sleep_ca7_wfi_en[4]
Definition: spm.h:148
u32 mfg_pwr_con
Definition: spm.h:36
u32 sleep_ca15_wfi_en[4]
Definition: spm.h:149
u32 pcm_con1
Definition: spm.h:71
u32 ca7_cpu_irq_mask[4]
Definition: spm.h:143
u32 reserved12
Definition: spm.h:65
u32 pcm_im_ptr
Definition: spm.h:72
u32 pcm_event_reg_sta
Definition: spm.h:87
u32 pcm_pwr_io_en
Definition: spm.h:82
u32 dpy_pwr_con
Definition: spm.h:45
u32 ca7_cpu3_pwr_con
Definition: spm.h:39
u32 pcm_event_vector1
Definition: spm.h:77
u32 reserved29[4]
Definition: spm.h:145
u32 reserved16[7]
Definition: spm.h:85
struct mtk_spm_regs::@881 ca7_cpu[4]
u32 pcm_im_host_rw_ptr
Definition: spm.h:89
u32 pcm_md32_mailbox
Definition: spm.h:124
u32 vde_pwr_con
Definition: spm.h:35
u32 vpu_sram_con
Definition: spm.h:68
u32 ven_pwr_con
Definition: spm.h:41
u32 reserved6[4]
Definition: spm.h:48
u32 sleep_isr_status
Definition: spm.h:128
u32 reserved
Definition: spm.h:51
u32 md_pwr_con
Definition: spm.h:55
u32 ifr_sramrom_con
Definition: spm.h:58
u32 sleep_subsys_idle_sta
Definition: spm.h:134
u32 dis_pwr_con
Definition: spm.h:44
u32 pcm_reserve2
Definition: spm.h:137
u32 pwr_status_2nd
Definition: spm.h:106
u32 sleep_isr_raw_sta
Definition: spm.h:130
u8 reserved19[0x720 - 0x618]
Definition: spm.h:108
u32 isp_pwr_con
Definition: spm.h:43
u32 pcm_im_len
Definition: spm.h:73
u8 reserved26[0xb00 - 0x924]
Definition: spm.h:135
u32 pcm_wdt_timer_out
Definition: spm.h:122
u32 pcm_pasr_dpd[4]
Definition: spm.h:146
u32 reserved14[7]
Definition: spm.h:75
u32 audio_pwr_con
Definition: spm.h:60
u32 reserved4
Definition: spm.h:34
u32 ca7_cpu1_pwr_con
Definition: spm.h:37
u32 ca15_l2_pwr_con
Definition: spm.h:64
u32 pcm_reg_data_ini
Definition: spm.h:74
u32 reserved3[63]
Definition: spm.h:30
u32 pcm_mas_pause_mask
Definition: spm.h:81
u32 ap_bsi_req
Definition: spm.h:107
u32 pcm_event_vector4
Definition: spm.h:91
u32 sleep_isr_mask
Definition: spm.h:127
u32 reserved21[39]
Definition: spm.h:116
u32 sleep_twam_status3
Definition: spm.h:115
u8 reserved30[0xf00 - 0xb70]
Definition: spm.h:147
u32 ca7_cpu0_pwr_con
Definition: spm.h:31
u32 pcm_event_vector2
Definition: spm.h:78
u32 reserved2[58]
Definition: spm.h:28
u32 reserved17[6]
Definition: spm.h:97
u32 pcm_sw_int_set
Definition: spm.h:95
u32 sleep_dual_vcore_pwr_con
Definition: spm.h:99
u32 dpy2_pwr_con
Definition: spm.h:54
u32 pcm_md32_irq
Definition: spm.h:125
u32 reserved20[15]
Definition: spm.h:110
u32 sleep_twam_status1
Definition: spm.h:113
u32 l1_pdn
Definition: spm.h:50
u32 pcm_im_host_rw_dat
Definition: spm.h:90
u32 pcm_sw_int_clear
Definition: spm.h:96
u32 ca15_cpu_irq_mask[4]
Definition: spm.h:144
u32 pcm_wdt_timer_val
Definition: spm.h:121
u32 clk_con
Definition: spm.h:98
u32 reserved18[125]
Definition: spm.h:101
u32 reserved11[2]
Definition: spm.h:56
u32 reserved27[4]
Definition: spm.h:140
u32 apmcu_pwrctl
Definition: spm.h:102
u32 pcm_fsm_sta
Definition: spm.h:88
u32 pcm_timer_val
Definition: spm.h:83
u32 gcpu_sram_con
Definition: spm.h:53
u32 sleep_ptpod2_con
Definition: spm.h:100
u32 pcm_event_vector6
Definition: spm.h:93
u32 ca7_dbg_pwr_con
Definition: spm.h:32
u32 sleep_bus_protect_rdy
Definition: spm.h:133
u32 mjc_pwr_con
Definition: spm.h:59
u32 reserved5[3]
Definition: spm.h:40
u32 ca15_l1_pwr_con
Definition: spm.h:63
u32 power_on_val1
Definition: spm.h:27
u32 pcm_event_vector0
Definition: spm.h:76
u32 mfg_2d_pwr_con
Definition: spm.h:66
u32 pcm_flags
Definition: spm.h:138
u32 pcm_timer_out
Definition: spm.h:84
u32 sleep_md32_wakeup_event_mask
Definition: spm.h:119
u32 pcm_reg_data[16]
Definition: spm.h:86
u32 reserved1[3]
Definition: spm.h:25
u32 pcm_event_vector7
Definition: spm.h:94
u32 ap_dvfs_con_set
Definition: spm.h:103
u32 pcm_debug_con
Definition: spm.h:141
u32 poweron_config_set
Definition: spm.h:24
u32 mfg_async_pwr_con
Definition: spm.h:67
u32 ca7_cputop_pwr_con
Definition: spm.h:33
u32 sleep_twam_con
Definition: spm.h:111
u32 reserved22[2]
Definition: spm.h:120
u32 ifr_pwr_con
Definition: spm.h:42
u32 reserved28[3]
Definition: spm.h:142
u32 clk_settle
Definition: spm.h:29
u32 ap_stanby_con
Definition: spm.h:104
u32 mcu_pwr_con
Definition: spm.h:57
u32 ca15_cputop_pwr_con
Definition: spm.h:62
u32 sleep_twam_status2
Definition: spm.h:114
u32 reserved23
Definition: spm.h:123
u32 pcm_con0
Definition: spm.h:70
u32 reserved24[50]
Definition: spm.h:126
u32 pcm_event_vector3
Definition: spm.h:79
void * pwr_con
Definition: mtcmos.h:7