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