xref: /linux/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn60.h (revision 4e69c1856bfd9ffb7e9d335a25842fa211628929)
1*7f7d7ea1SAurabindo Pillai /* SPDX-License-Identifier: MIT */
2*7f7d7ea1SAurabindo Pillai 
3*7f7d7ea1SAurabindo Pillai /* Copyright 2025 Advanced Micro Devices, Inc. */
4*7f7d7ea1SAurabindo Pillai 
5*7f7d7ea1SAurabindo Pillai #ifndef _DMUB_DCN60_H_
6*7f7d7ea1SAurabindo Pillai #define _DMUB_DCN60_H_
7*7f7d7ea1SAurabindo Pillai 
8*7f7d7ea1SAurabindo Pillai #include "dmub_dcn31.h"
9*7f7d7ea1SAurabindo Pillai 
10*7f7d7ea1SAurabindo Pillai struct dmub_srv;
11*7f7d7ea1SAurabindo Pillai 
12*7f7d7ea1SAurabindo Pillai /* DCN60 register definitions. */
13*7f7d7ea1SAurabindo Pillai 
14*7f7d7ea1SAurabindo Pillai #define DMUB_DCN60_REGS() \
15*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_CNTL) \
16*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_CNTL2) \
17*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SEC_CNTL) \
18*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX0_SIZE) \
19*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX0_RPTR) \
20*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX0_WPTR) \
21*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX1_BASE_ADDRESS) \
22*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX1_SIZE) \
23*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX1_RPTR) \
24*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INBOX1_WPTR) \
25*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX0_BASE_ADDRESS) \
26*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX0_SIZE) \
27*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX0_RPTR) \
28*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX0_WPTR) \
29*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX1_BASE_ADDRESS) \
30*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX1_SIZE) \
31*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX1_RPTR) \
32*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_OUTBOX1_WPTR) \
33*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW0_OFFSET) \
34*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW1_OFFSET) \
35*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW2_OFFSET) \
36*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW3_OFFSET) \
37*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW4_OFFSET) \
38*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW5_OFFSET) \
39*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW6_OFFSET) \
40*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW7_OFFSET) \
41*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW0_OFFSET_HIGH) \
42*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW1_OFFSET_HIGH) \
43*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW2_OFFSET_HIGH) \
44*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW3_OFFSET_HIGH) \
45*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW4_OFFSET_HIGH) \
46*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW5_OFFSET_HIGH) \
47*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW6_OFFSET_HIGH) \
48*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW7_OFFSET_HIGH) \
49*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW0_BASE_ADDRESS) \
50*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW1_BASE_ADDRESS) \
51*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW2_BASE_ADDRESS) \
52*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW3_BASE_ADDRESS) \
53*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW4_BASE_ADDRESS) \
54*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW5_BASE_ADDRESS) \
55*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW6_BASE_ADDRESS) \
56*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW7_BASE_ADDRESS) \
57*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW0_TOP_ADDRESS) \
58*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW1_TOP_ADDRESS) \
59*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW2_TOP_ADDRESS) \
60*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW3_TOP_ADDRESS) \
61*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW4_TOP_ADDRESS) \
62*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW5_TOP_ADDRESS) \
63*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW6_TOP_ADDRESS) \
64*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_CW7_TOP_ADDRESS) \
65*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION4_OFFSET) \
66*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION4_OFFSET_HIGH) \
67*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION4_TOP_ADDRESS) \
68*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION5_OFFSET) \
69*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION5_OFFSET_HIGH) \
70*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION5_TOP_ADDRESS) \
71*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION6_OFFSET) \
72*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION6_OFFSET_HIGH) \
73*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION6_TOP_ADDRESS) \
74*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH0) \
75*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH1) \
76*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH2) \
77*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH3) \
78*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH4) \
79*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH5) \
80*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH6) \
81*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH7) \
82*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH8) \
83*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH9) \
84*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH10) \
85*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH11) \
86*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH12) \
87*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH13) \
88*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH14) \
89*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH15) \
90*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH16) \
91*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_SCRATCH17) \
92*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_GPINT_DATAIN0) \
93*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_GPINT_DATAIN1) \
94*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_GPINT_DATAOUT) \
95*7f7d7ea1SAurabindo Pillai 	DMUB_SR(CC_DC_PIPE_DIS) \
96*7f7d7ea1SAurabindo Pillai 	DMUB_SR(MMHUBBUB_SOFT_RESET) \
97*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DCN_VM_FB_LOCATION_BASE) \
98*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DCN_VM_FB_OFFSET) \
99*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_TIMER_CURRENT) \
100*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INST_FETCH_FAULT_ADDR) \
101*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_UNDEFINED_ADDRESS_FAULT_ADDR) \
102*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_DATA_WRITE_FAULT_ADDR) \
103*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REGION3_TMR_AXI_SPACE) \
104*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INTERRUPT_ENABLE) \
105*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INTERRUPT_ACK) \
106*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_INTERRUPT_STATUS) \
107*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_RDY) \
108*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG0) \
109*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG1) \
110*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG2) \
111*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG3) \
112*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG4) \
113*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG5) \
114*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG6) \
115*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG7) \
116*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG8) \
117*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG9) \
118*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG10) \
119*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG11) \
120*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG12) \
121*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG13) \
122*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_MSG14) \
123*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_INBOX0_RSP) \
124*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_OUTBOX0_RDY) \
125*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_OUTBOX0_MSG0) \
126*7f7d7ea1SAurabindo Pillai 	DMUB_SR(DMCUB_REG_OUTBOX0_RSP) \
127*7f7d7ea1SAurabindo Pillai 	DMUB_SR(HOST_INTERRUPT_CSR)
128*7f7d7ea1SAurabindo Pillai 
129*7f7d7ea1SAurabindo Pillai #define DMUB_DCN60_FIELDS() \
130*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_CNTL, DMCUB_ENABLE) \
131*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_CNTL, DMCUB_TRACEPORT_EN) \
132*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_CNTL2, DMCUB_SOFT_RESET) \
133*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_SEC_CNTL, DMCUB_SEC_RESET) \
134*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_SEC_CNTL, DMCUB_MEM_SEC_LVL) \
135*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_SEC_CNTL, DMCUB_MEM_UNIT_ID) \
136*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_SEC_CNTL, DMCUB_SEC_RESET_STATUS) \
137*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW0_TOP_ADDRESS, DMCUB_REGION3_CW0_TOP_ADDRESS) \
138*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW0_TOP_ADDRESS, DMCUB_REGION3_CW0_ENABLE) \
139*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW1_TOP_ADDRESS, DMCUB_REGION3_CW1_TOP_ADDRESS) \
140*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW1_TOP_ADDRESS, DMCUB_REGION3_CW1_ENABLE) \
141*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW2_TOP_ADDRESS, DMCUB_REGION3_CW2_TOP_ADDRESS) \
142*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW2_TOP_ADDRESS, DMCUB_REGION3_CW2_ENABLE) \
143*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW3_TOP_ADDRESS, DMCUB_REGION3_CW3_TOP_ADDRESS) \
144*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW3_TOP_ADDRESS, DMCUB_REGION3_CW3_ENABLE) \
145*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW4_TOP_ADDRESS, DMCUB_REGION3_CW4_TOP_ADDRESS) \
146*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW4_TOP_ADDRESS, DMCUB_REGION3_CW4_ENABLE) \
147*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW5_TOP_ADDRESS, DMCUB_REGION3_CW5_TOP_ADDRESS) \
148*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW5_TOP_ADDRESS, DMCUB_REGION3_CW5_ENABLE) \
149*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW6_TOP_ADDRESS, DMCUB_REGION3_CW6_TOP_ADDRESS) \
150*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW6_TOP_ADDRESS, DMCUB_REGION3_CW6_ENABLE) \
151*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW7_TOP_ADDRESS, DMCUB_REGION3_CW7_TOP_ADDRESS) \
152*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_CW7_TOP_ADDRESS, DMCUB_REGION3_CW7_ENABLE) \
153*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION4_TOP_ADDRESS, DMCUB_REGION4_TOP_ADDRESS) \
154*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION4_TOP_ADDRESS, DMCUB_REGION4_ENABLE) \
155*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION5_TOP_ADDRESS, DMCUB_REGION5_TOP_ADDRESS) \
156*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION5_TOP_ADDRESS, DMCUB_REGION5_ENABLE) \
157*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION6_TOP_ADDRESS, DMCUB_REGION6_TOP_ADDRESS) \
158*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION6_TOP_ADDRESS, DMCUB_REGION6_ENABLE) \
159*7f7d7ea1SAurabindo Pillai 	DMUB_SF(MMHUBBUB_SOFT_RESET, DMUIF_SOFT_RESET) \
160*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DCN_VM_FB_LOCATION_BASE, FB_BASE) \
161*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DCN_VM_FB_OFFSET, FB_OFFSET) \
162*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_INBOX0_WPTR, DMCUB_INBOX0_WPTR) \
163*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_REGION3_TMR_AXI_SPACE, DMCUB_REGION3_TMR_AXI_SPACE) \
164*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_INTERRUPT_ENABLE, DMCUB_GPINT_IH_INT_EN) \
165*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_INTERRUPT_ACK, DMCUB_GPINT_IH_INT_ACK) \
166*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_INTERRUPT_STATUS, DMCUB_REG_OUTBOX0_RSP_INT_STAT) \
167*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_INBOX0_RSP_INT_ACK) \
168*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_INBOX0_RSP_INT_STAT) \
169*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_INBOX0_RSP_INT_EN) \
170*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_OUTBOX0_RDY_INT_ACK) \
171*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_OUTBOX0_RDY_INT_STAT) \
172*7f7d7ea1SAurabindo Pillai 	DMUB_SF(HOST_INTERRUPT_CSR, HOST_REG_OUTBOX0_RDY_INT_EN) \
173*7f7d7ea1SAurabindo Pillai 	DMUB_SF(DMCUB_CNTL, DMCUB_PWAIT_MODE_STATUS)
174*7f7d7ea1SAurabindo Pillai 
175*7f7d7ea1SAurabindo Pillai #define DCN60_EXTERNAL_MMHUB_REGS() \
176*7f7d7ea1SAurabindo Pillai 	MMHUB_SR(MMMC_VM_FB_LOCATION_BASE) \
177*7f7d7ea1SAurabindo Pillai 	MMHUB_SR(MMMC_VM_FB_OFFSET)
178*7f7d7ea1SAurabindo Pillai 
179*7f7d7ea1SAurabindo Pillai #define DCN60_EXTERNAL_MMHUB_FIELDS() \
180*7f7d7ea1SAurabindo Pillai 	DMUB_SF(MMMC_VM_FB_LOCATION_BASE, FB_BASE) \
181*7f7d7ea1SAurabindo Pillai 	DMUB_SF(MMMC_VM_FB_OFFSET, FB_OFFSET)
182*7f7d7ea1SAurabindo Pillai 
183*7f7d7ea1SAurabindo Pillai struct dmub_srv_dcn60_reg_offset {
184*7f7d7ea1SAurabindo Pillai #define DMUB_SR(reg) uint32_t reg;
185*7f7d7ea1SAurabindo Pillai #define MMHUB_SR(reg) uint32_t reg;
186*7f7d7ea1SAurabindo Pillai 	DMUB_DCN60_REGS()
187*7f7d7ea1SAurabindo Pillai 	DMCUB_INTERNAL_REGS()
188*7f7d7ea1SAurabindo Pillai 	DCN60_EXTERNAL_MMHUB_REGS()
189*7f7d7ea1SAurabindo Pillai #undef MMHUB_SR
190*7f7d7ea1SAurabindo Pillai #undef DMUB_SR
191*7f7d7ea1SAurabindo Pillai };
192*7f7d7ea1SAurabindo Pillai 
193*7f7d7ea1SAurabindo Pillai struct dmub_srv_dcn60_reg_shift {
194*7f7d7ea1SAurabindo Pillai #define DMUB_SF(reg, field) uint8_t reg##__##field;
195*7f7d7ea1SAurabindo Pillai 	DMUB_DCN60_FIELDS()
196*7f7d7ea1SAurabindo Pillai 	DCN60_EXTERNAL_MMHUB_FIELDS()
197*7f7d7ea1SAurabindo Pillai #undef DMUB_SF
198*7f7d7ea1SAurabindo Pillai };
199*7f7d7ea1SAurabindo Pillai 
200*7f7d7ea1SAurabindo Pillai struct dmub_srv_dcn60_reg_mask {
201*7f7d7ea1SAurabindo Pillai #define DMUB_SF(reg, field) uint32_t reg##__##field;
202*7f7d7ea1SAurabindo Pillai 	DMUB_DCN60_FIELDS()
203*7f7d7ea1SAurabindo Pillai 	DCN60_EXTERNAL_MMHUB_FIELDS()
204*7f7d7ea1SAurabindo Pillai #undef DMUB_SF
205*7f7d7ea1SAurabindo Pillai };
206*7f7d7ea1SAurabindo Pillai 
207*7f7d7ea1SAurabindo Pillai struct dmub_srv_dcn60_regs {
208*7f7d7ea1SAurabindo Pillai 	const struct dmub_srv_dcn60_reg_offset offset;
209*7f7d7ea1SAurabindo Pillai 	const struct dmub_srv_dcn60_reg_mask mask;
210*7f7d7ea1SAurabindo Pillai 	const struct dmub_srv_dcn60_reg_shift shift;
211*7f7d7ea1SAurabindo Pillai };
212*7f7d7ea1SAurabindo Pillai 
213*7f7d7ea1SAurabindo Pillai extern const struct dmub_srv_dcn60_regs dmub_srv_dcn60_regs;
214*7f7d7ea1SAurabindo Pillai 
215*7f7d7ea1SAurabindo Pillai void dmub_dcn60_reset(struct dmub_srv *dmub);
216*7f7d7ea1SAurabindo Pillai 
217*7f7d7ea1SAurabindo Pillai void dmub_dcn60_reset_release(struct dmub_srv *dmub);
218*7f7d7ea1SAurabindo Pillai 
219*7f7d7ea1SAurabindo Pillai void dmub_dcn60_backdoor_load(struct dmub_srv *dmub,
220*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw0,
221*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw1);
222*7f7d7ea1SAurabindo Pillai 
223*7f7d7ea1SAurabindo Pillai void dmub_dcn60_backdoor_load_zfb_mode(struct dmub_srv *dmub,
224*7f7d7ea1SAurabindo Pillai 		      const struct dmub_window *cw0,
225*7f7d7ea1SAurabindo Pillai 		      const struct dmub_window *cw1);
226*7f7d7ea1SAurabindo Pillai 
227*7f7d7ea1SAurabindo Pillai void dmub_dcn60_setup_windows(struct dmub_srv *dmub,
228*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw2,
229*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw3,
230*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw4,
231*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw5,
232*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *cw6,
233*7f7d7ea1SAurabindo Pillai 			      const struct dmub_window *region6);
234*7f7d7ea1SAurabindo Pillai 
235*7f7d7ea1SAurabindo Pillai void dmub_dcn60_setup_mailbox(struct dmub_srv *dmub,
236*7f7d7ea1SAurabindo Pillai 			      const struct dmub_region *inbox1);
237*7f7d7ea1SAurabindo Pillai 
238*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_inbox1_wptr(struct dmub_srv *dmub);
239*7f7d7ea1SAurabindo Pillai 
240*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_inbox1_rptr(struct dmub_srv *dmub);
241*7f7d7ea1SAurabindo Pillai 
242*7f7d7ea1SAurabindo Pillai void dmub_dcn60_set_inbox1_wptr(struct dmub_srv *dmub, uint32_t wptr_offset);
243*7f7d7ea1SAurabindo Pillai 
244*7f7d7ea1SAurabindo Pillai void dmub_dcn60_setup_out_mailbox(struct dmub_srv *dmub,
245*7f7d7ea1SAurabindo Pillai 			      const struct dmub_region *outbox1);
246*7f7d7ea1SAurabindo Pillai 
247*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_outbox1_wptr(struct dmub_srv *dmub);
248*7f7d7ea1SAurabindo Pillai 
249*7f7d7ea1SAurabindo Pillai void dmub_dcn60_set_outbox1_rptr(struct dmub_srv *dmub, uint32_t rptr_offset);
250*7f7d7ea1SAurabindo Pillai 
251*7f7d7ea1SAurabindo Pillai bool dmub_dcn60_is_hw_init(struct dmub_srv *dmub);
252*7f7d7ea1SAurabindo Pillai 
253*7f7d7ea1SAurabindo Pillai bool dmub_dcn60_is_supported(struct dmub_srv *dmub);
254*7f7d7ea1SAurabindo Pillai 
255*7f7d7ea1SAurabindo Pillai void dmub_dcn60_set_gpint(struct dmub_srv *dmub,
256*7f7d7ea1SAurabindo Pillai 			  union dmub_gpint_data_register reg);
257*7f7d7ea1SAurabindo Pillai 
258*7f7d7ea1SAurabindo Pillai bool dmub_dcn60_is_gpint_acked(struct dmub_srv *dmub,
259*7f7d7ea1SAurabindo Pillai 			       union dmub_gpint_data_register reg);
260*7f7d7ea1SAurabindo Pillai 
261*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_gpint_response(struct dmub_srv *dmub);
262*7f7d7ea1SAurabindo Pillai 
263*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_gpint_dataout(struct dmub_srv *dmub);
264*7f7d7ea1SAurabindo Pillai 
265*7f7d7ea1SAurabindo Pillai void dmub_dcn60_enable_dmub_boot_options(struct dmub_srv *dmub, const struct dmub_srv_hw_params *params);
266*7f7d7ea1SAurabindo Pillai 
267*7f7d7ea1SAurabindo Pillai void dmub_dcn60_skip_dmub_panel_power_sequence(struct dmub_srv *dmub, bool skip);
268*7f7d7ea1SAurabindo Pillai 
269*7f7d7ea1SAurabindo Pillai union dmub_fw_boot_status dmub_dcn60_get_fw_boot_status(struct dmub_srv *dmub);
270*7f7d7ea1SAurabindo Pillai 
271*7f7d7ea1SAurabindo Pillai void dmub_dcn60_setup_outbox0(struct dmub_srv *dmub,
272*7f7d7ea1SAurabindo Pillai 			      const struct dmub_region *outbox0);
273*7f7d7ea1SAurabindo Pillai 
274*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_outbox0_wptr(struct dmub_srv *dmub);
275*7f7d7ea1SAurabindo Pillai 
276*7f7d7ea1SAurabindo Pillai void dmub_dcn60_set_outbox0_rptr(struct dmub_srv *dmub, uint32_t rptr_offset);
277*7f7d7ea1SAurabindo Pillai 
278*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_get_current_time(struct dmub_srv *dmub);
279*7f7d7ea1SAurabindo Pillai 
280*7f7d7ea1SAurabindo Pillai void dmub_dcn60_get_diagnostic_data(struct dmub_srv *dmub);
281*7f7d7ea1SAurabindo Pillai 
282*7f7d7ea1SAurabindo Pillai void dmub_dcn60_configure_dmub_in_system_memory(struct dmub_srv *dmub);
283*7f7d7ea1SAurabindo Pillai void dmub_dcn60_send_inbox0_cmd(struct dmub_srv *dmub, union dmub_inbox0_data_register data);
284*7f7d7ea1SAurabindo Pillai void dmub_dcn60_clear_inbox0_ack_register(struct dmub_srv *dmub);
285*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_read_inbox0_ack_register(struct dmub_srv *dmub);
286*7f7d7ea1SAurabindo Pillai 
287*7f7d7ea1SAurabindo Pillai void dmub_dcn60_send_reg_inbox0_cmd_msg(struct dmub_srv *dmub,
288*7f7d7ea1SAurabindo Pillai 		union dmub_rb_cmd *cmd);
289*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_read_reg_inbox0_rsp_int_status(struct dmub_srv *dmub);
290*7f7d7ea1SAurabindo Pillai void dmub_dcn60_read_reg_inbox0_cmd_rsp(struct dmub_srv *dmub,
291*7f7d7ea1SAurabindo Pillai 		union dmub_rb_cmd *cmd);
292*7f7d7ea1SAurabindo Pillai void dmub_dcn60_write_reg_inbox0_rsp_int_ack(struct dmub_srv *dmub);
293*7f7d7ea1SAurabindo Pillai void dmub_dcn60_clear_reg_inbox0_rsp_int_ack(struct dmub_srv *dmub);
294*7f7d7ea1SAurabindo Pillai void dmub_dcn60_enable_reg_inbox0_rsp_int(struct dmub_srv *dmub, bool enable);
295*7f7d7ea1SAurabindo Pillai 
296*7f7d7ea1SAurabindo Pillai void dmub_dcn60_write_reg_outbox0_rdy_int_ack(struct dmub_srv *dmub);
297*7f7d7ea1SAurabindo Pillai void dmub_dcn60_read_reg_outbox0_msg(struct dmub_srv *dmub, uint32_t *msg);
298*7f7d7ea1SAurabindo Pillai void dmub_dcn60_write_reg_outbox0_rsp(struct dmub_srv *dmub, uint32_t *msg);
299*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_read_reg_outbox0_rsp_int_status(struct dmub_srv *dmub);
300*7f7d7ea1SAurabindo Pillai void dmub_dcn60_enable_reg_outbox0_rdy_int(struct dmub_srv *dmub, bool enable);
301*7f7d7ea1SAurabindo Pillai uint32_t dmub_dcn60_read_reg_outbox0_rdy_int_status(struct dmub_srv *dmub);
302*7f7d7ea1SAurabindo Pillai 
303*7f7d7ea1SAurabindo Pillai #endif /* _DMUB_DCN60_H_ */
304