^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * linux/drivers/video/w100fb.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Frame Buffer Device for ATI w100 (Wallaby)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (C) 2002, ATI Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Copyright (C) 2004-2005 Richard Purdie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Copyright (c) 2005 Ian Molton <spyro@f2s.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * Modified to work with 2.6 by Richard Purdie <rpurdie@rpsys.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * w32xx support by Ian Molton
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #if !defined (_W100FB_H)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define _W100FB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /* Block CIF Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define mmCHIP_ID 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define mmREVISION_ID 0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define mmWRAP_BUF_A 0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define mmWRAP_BUF_B 0x000C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define mmWRAP_TOP_DIR 0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define mmWRAP_START_DIR 0x0014
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define mmCIF_CNTL 0x0018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define mmCFGREG_BASE 0x001C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define mmCIF_IO 0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define mmCIF_READ_DBG 0x0024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define mmCIF_WRITE_DBG 0x0028
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define cfgIND_ADDR_A_0 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define cfgIND_ADDR_A_1 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define cfgIND_ADDR_A_2 0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define cfgIND_DATA_A 0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define cfgREG_BASE 0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define cfgINTF_CNTL 0x0005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define cfgSTATUS 0x0006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define cfgCPU_DEFAULTS 0x0007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define cfgIND_ADDR_B_0 0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define cfgIND_ADDR_B_1 0x0009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define cfgIND_ADDR_B_2 0x000A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define cfgIND_DATA_B 0x000B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define cfgPM4_RPTR 0x000C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define cfgSCRATCH 0x000D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define cfgPM4_WRPTR_0 0x000E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define cfgPM4_WRPTR_1 0x000F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* Block CIF End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* Block CP Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define mmSCRATCH_UMSK 0x0280
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define mmSCRATCH_ADDR 0x0284
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define mmGEN_INT_CNTL 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define mmGEN_INT_STATUS 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* Block CP End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /* Block DISPLAY Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define mmLCD_FORMAT 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define mmGRAPHIC_CTRL 0x0414
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define mmGRAPHIC_OFFSET 0x0418
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define mmGRAPHIC_PITCH 0x041C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define mmCRTC_TOTAL 0x0420
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define mmACTIVE_H_DISP 0x0424
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define mmACTIVE_V_DISP 0x0428
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define mmGRAPHIC_H_DISP 0x042C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define mmGRAPHIC_V_DISP 0x0430
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define mmVIDEO_CTRL 0x0434
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define mmGRAPHIC_KEY 0x0438
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define mmBRIGHTNESS_CNTL 0x045C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define mmDISP_INT_CNTL 0x0488
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define mmCRTC_SS 0x048C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define mmCRTC_LS 0x0490
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define mmCRTC_REV 0x0494
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define mmCRTC_DCLK 0x049C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define mmCRTC_GS 0x04A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define mmCRTC_VPOS_GS 0x04A4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define mmCRTC_GCLK 0x04A8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define mmCRTC_GOE 0x04AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define mmCRTC_FRAME 0x04B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define mmCRTC_FRAME_VPOS 0x04B4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define mmGPIO_DATA 0x04B8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define mmGPIO_CNTL1 0x04BC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define mmGPIO_CNTL2 0x04C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define mmLCDD_CNTL1 0x04C4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define mmLCDD_CNTL2 0x04C8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define mmGENLCD_CNTL1 0x04CC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define mmGENLCD_CNTL2 0x04D0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #define mmDISP_DEBUG 0x04D4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #define mmDISP_DB_BUF_CNTL 0x04D8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define mmDISP_CRC_SIG 0x04DC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define mmCRTC_DEFAULT_COUNT 0x04E0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #define mmLCD_BACKGROUND_COLOR 0x04E4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #define mmCRTC_PS2 0x04E8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #define mmCRTC_PS2_VPOS 0x04EC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define mmCRTC_PS1_ACTIVE 0x04F0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define mmCRTC_PS1_NACTIVE 0x04F4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define mmCRTC_GCLK_EXT 0x04F8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) #define mmCRTC_ALW 0x04FC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) #define mmCRTC_ALW_VPOS 0x0500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) #define mmCRTC_PSK 0x0504
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define mmCRTC_PSK_HPOS 0x0508
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define mmCRTC_CV4_START 0x050C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define mmCRTC_CV4_END 0x0510
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define mmCRTC_CV4_HPOS 0x0514
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define mmCRTC_ECK 0x051C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define mmREFRESH_CNTL 0x0520
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define mmGENLCD_CNTL3 0x0524
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define mmGPIO_DATA2 0x0528
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define mmGPIO_CNTL3 0x052C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define mmGPIO_CNTL4 0x0530
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define mmCHIP_STRAP 0x0534
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define mmDISP_DEBUG2 0x0538
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define mmDEBUG_BUS_CNTL 0x053C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define mmGAMMA_VALUE1 0x0540
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define mmGAMMA_VALUE2 0x0544
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define mmGAMMA_SLOPE 0x0548
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define mmGEN_STATUS 0x054C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define mmHW_INT 0x0550
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) /* Block DISPLAY End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) /* Block GFX Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define mmDST_OFFSET 0x1004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define mmDST_PITCH 0x1008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define mmDST_Y_X 0x1038
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define mmDST_WIDTH_HEIGHT 0x1198
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define mmDP_GUI_MASTER_CNTL 0x106C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define mmBRUSH_OFFSET 0x108C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define mmBRUSH_Y_X 0x1074
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define mmDP_BRUSH_FRGD_CLR 0x107C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define mmSRC_OFFSET 0x11AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define mmSRC_PITCH 0x11B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define mmSRC_Y_X 0x1034
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define mmDEFAULT_PITCH_OFFSET 0x10A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define mmDEFAULT_SC_BOTTOM_RIGHT 0x10A8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define mmDEFAULT2_SC_BOTTOM_RIGHT 0x10AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define mmSC_TOP_LEFT 0x11BC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define mmSC_BOTTOM_RIGHT 0x11C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define mmSRC_SC_BOTTOM_RIGHT 0x11C4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define mmGLOBAL_ALPHA 0x1210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define mmFILTER_COEF 0x1214
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define mmMVC_CNTL_START 0x11E0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define mmE2_ARITHMETIC_CNTL 0x1220
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define mmDP_CNTL 0x11C8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define mmDP_CNTL_DST_DIR 0x11CC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define mmDP_DATATYPE 0x12C4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define mmDP_MIX 0x12C8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define mmDP_WRITE_MSK 0x12CC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define mmENG_CNTL 0x13E8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define mmENG_PERF_CNT 0x13F0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) /* Block GFX End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) /* Block IDCT Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define mmIDCT_RUNS 0x0C00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define mmIDCT_LEVELS 0x0C04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define mmIDCT_CONTROL 0x0C3C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define mmIDCT_AUTH_CONTROL 0x0C08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define mmIDCT_AUTH 0x0C0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) /* Block IDCT End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) /* Block MC Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define mmMEM_CNTL 0x0180
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define mmMEM_ARB 0x0184
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define mmMC_FB_LOCATION 0x0188
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define mmMEM_EXT_CNTL 0x018C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define mmMC_EXT_MEM_LOCATION 0x0190
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define mmMEM_EXT_TIMING_CNTL 0x0194
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #define mmMEM_SDRAM_MODE_REG 0x0198
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define mmMEM_IO_CNTL 0x019C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define mmMC_DEBUG 0x01A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define mmMC_BIST_CTRL 0x01A4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define mmMC_BIST_COLLAR_READ 0x01A8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define mmTC_MISMATCH 0x01AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define mmMC_PERF_MON_CNTL 0x01B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define mmMC_PERF_COUNTERS 0x01B4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) /* Block MC End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) /* Block BM Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define mmBM_EXT_MEM_BANDWIDTH 0x0A00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define mmBM_OFFSET 0x0A04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define mmBM_MEM_EXT_TIMING_CNTL 0x0A08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define mmBM_MEM_EXT_CNTL 0x0A0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define mmBM_MEM_MODE_REG 0x0A10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define mmBM_MEM_IO_CNTL 0x0A18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define mmBM_CONFIG 0x0A1C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) #define mmBM_STATUS 0x0A20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define mmBM_DEBUG 0x0A24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) #define mmBM_PERF_MON_CNTL 0x0A28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #define mmBM_PERF_COUNTERS 0x0A2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define mmBM_PERF2_MON_CNTL 0x0A30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define mmBM_PERF2_COUNTERS 0x0A34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) /* Block BM End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) /* Block RBBM Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define mmWAIT_UNTIL 0x1400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define mmISYNC_CNTL 0x1404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define mmRBBM_STATUS 0x0140
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define mmRBBM_CNTL 0x0144
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #define mmNQWAIT_UNTIL 0x0150
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) /* Block RBBM End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) /* Block CG Start: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define mmCLK_PIN_CNTL 0x0080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define mmPLL_REF_FB_DIV 0x0084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define mmPLL_CNTL 0x0088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define mmSCLK_CNTL 0x008C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define mmPCLK_CNTL 0x0090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define mmCLK_TEST_CNTL 0x0094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define mmPWRMGT_CNTL 0x0098
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define mmPWRMGT_STATUS 0x009C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) /* Block CG End: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) /* default value definitions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #define defWRAP_TOP_DIR 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #define defWRAP_START_DIR 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define defCFGREG_BASE 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define defCIF_IO 0x000C0902
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define defINTF_CNTL 0x00000011
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define defCPU_DEFAULTS 0x00000006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define defHW_INT 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define defMC_EXT_MEM_LOCATION 0x07ff0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define defTC_MISMATCH 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define W100_CFG_BASE 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define W100_CFG_LEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define W100_REG_BASE 0x10000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define W100_REG_LEN 0x2000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #define MEM_INT_BASE_VALUE 0x100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define MEM_EXT_BASE_VALUE 0x800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #define MEM_INT_SIZE 0x05ffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define MEM_WINDOW_BASE 0x100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define MEM_WINDOW_SIZE 0xf00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define WRAP_BUF_BASE_VALUE 0x80000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define WRAP_BUF_TOP_VALUE 0xbffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define CHIP_ID_W100 0x57411002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define CHIP_ID_W3200 0x56441002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define CHIP_ID_W3220 0x57441002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) /* Register structure definitions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) struct wrap_top_dir_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) u32 top_addr : 23;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) u32 : 9;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) union wrap_top_dir_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) struct wrap_top_dir_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) struct wrap_start_dir_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) u32 start_addr : 23;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) u32 : 9;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) union wrap_start_dir_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) struct wrap_start_dir_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) struct cif_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) u32 swap_reg : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) u32 swap_fbuf_1 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) u32 swap_fbuf_2 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) u32 swap_fbuf_3 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) u32 pmi_int_disable : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) u32 pmi_schmen_disable : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) u32 intb_oe : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) u32 en_wait_to_compensate_dq_prop_dly : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) u32 compensate_wait_rd_size : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) u32 wait_asserted_timeout_val : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) u32 wait_masked_val : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) u32 en_wait_timeout : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) u32 en_one_clk_setup_before_wait : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) u32 interrupt_active_high : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) u32 en_overwrite_straps : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) u32 strap_wait_active_hi : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) u32 lat_busy_count : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) u32 lat_rd_pm4_sclk_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) u32 dis_system_bits : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) u32 dis_mr : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) u32 cif_spare_1 : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) union cif_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) struct cif_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) struct cfgreg_base_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) u32 cfgreg_base : 24;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) u32 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) union cfgreg_base_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) struct cfgreg_base_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) struct cif_io_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) u32 dq_srp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) u32 dq_srn : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) u32 dq_sp : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) u32 dq_sn : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) u32 waitb_srp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) u32 waitb_srn : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) u32 waitb_sp : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) u32 waitb_sn : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) u32 intb_srp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) u32 intb_srn : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) u32 intb_sp : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) u32 intb_sn : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) union cif_io_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) struct cif_io_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) struct cif_read_dbg_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) u32 unpacker_pre_fetch_trig_gen : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) u32 dly_second_rd_fetch_trig : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) u32 rst_rd_burst_id : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) u32 dis_rd_burst_id : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) u32 en_block_rd_when_packer_is_not_emp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) u32 dis_pre_fetch_cntl_sm : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) u32 rbbm_chrncy_dis : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) u32 rbbm_rd_after_wr_lat : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) u32 dis_be_during_rd : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) u32 one_clk_invalidate_pulse : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) u32 dis_chnl_priority : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) u32 rst_read_path_a_pls : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) u32 rst_read_path_b_pls : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) u32 dis_reg_rd_fetch_trig : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) u32 dis_rd_fetch_trig_from_ind_addr : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) u32 dis_rd_same_byte_to_trig_fetch : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) u32 dis_dir_wrap : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) u32 dis_ring_buf_to_force_dec : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) u32 dis_addr_comp_in_16bit : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) u32 clr_w : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) u32 err_rd_tag_is_3 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) u32 err_load_when_ful_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) u32 err_load_when_ful_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) u32 : 7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) union cif_read_dbg_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) struct cif_read_dbg_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) struct cif_write_dbg_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) u32 packer_timeout_count : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) u32 en_upper_load_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) u32 en_chnl_change_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) u32 dis_addr_comp_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) u32 dis_load_same_byte_addr_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) u32 dis_timeout_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) u32 dis_timeout_during_rbbm : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) u32 dis_packer_ful_during_rbbm_timeout : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) u32 en_dword_split_to_rbbm : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) u32 en_dummy_val : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) u32 dummy_val_sel : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) u32 mask_pm4_wrptr_dec : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) u32 dis_mc_clean_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) u32 err_two_reqi_during_ful : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) u32 err_reqi_during_idle_clk : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) u32 err_global : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) u32 en_wr_buf_dbg_load : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) u32 en_wr_buf_dbg_path : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) u32 sel_wr_buf_byte : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) u32 dis_rd_flush_wr : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) u32 dis_packer_ful_cond : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) u32 dis_invalidate_by_ops_chnl : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) u32 en_halt_when_reqi_err : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) u32 cif_spare_2 : 5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) union cif_write_dbg_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) struct cif_write_dbg_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) struct intf_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) unsigned char ad_inc_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) unsigned char ring_buf_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) unsigned char rd_fetch_trigger_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) unsigned char rd_data_rdy_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) unsigned char ad_inc_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) unsigned char ring_buf_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) unsigned char rd_fetch_trigger_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) unsigned char rd_data_rdy_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) union intf_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) unsigned char val : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) struct intf_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) struct cpu_defaults_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) unsigned char unpack_rd_data : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) unsigned char access_ind_addr_a : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) unsigned char access_ind_addr_b : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) unsigned char access_scratch_reg : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) unsigned char pack_wr_data : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) unsigned char transition_size : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) unsigned char en_read_buf_mode : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) unsigned char rd_fetch_scratch : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) union cpu_defaults_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) unsigned char val : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) struct cpu_defaults_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) struct crtc_total_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) u32 crtc_h_total : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) u32 crtc_v_total : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) union crtc_total_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) struct crtc_total_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) struct crtc_ss_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) u32 ss_start : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) u32 ss_end : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) u32 ss_align : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) u32 ss_pol : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) u32 ss_run_mode : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) u32 ss_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) union crtc_ss_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) struct crtc_ss_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) struct active_h_disp_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) u32 active_h_start : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) u32 active_h_end : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) union active_h_disp_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) struct active_h_disp_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) struct active_v_disp_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) u32 active_v_start : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) u32 active_v_end : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) union active_v_disp_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) struct active_v_disp_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) struct graphic_h_disp_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) u32 graphic_h_start : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) u32 graphic_h_end : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) union graphic_h_disp_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) struct graphic_h_disp_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) struct graphic_v_disp_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) u32 graphic_v_start : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) u32 graphic_v_end : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) union graphic_v_disp_u{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) struct graphic_v_disp_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) struct graphic_ctrl_t_w100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) u32 color_depth : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) u32 portrait_mode : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) u32 low_power_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) u32 req_freq : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) u32 en_crtc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) u32 en_graphic_req : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) u32 en_graphic_crtc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) u32 total_req_graphic : 9;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) u32 lcd_pclk_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) u32 lcd_sclk_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) u32 pclk_running : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) u32 sclk_running : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) struct graphic_ctrl_t_w32xx {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) u32 color_depth : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) u32 portrait_mode : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) u32 low_power_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) u32 req_freq : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) u32 en_crtc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) u32 en_graphic_req : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) u32 en_graphic_crtc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) u32 total_req_graphic : 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) u32 lcd_pclk_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) u32 lcd_sclk_on : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) u32 pclk_running : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) u32 sclk_running : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) u32 : 5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) union graphic_ctrl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) struct graphic_ctrl_t_w100 f_w100;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) struct graphic_ctrl_t_w32xx f_w32xx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) struct video_ctrl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) u32 video_mode : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) u32 keyer_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) u32 en_video_req : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) u32 en_graphic_req_video : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) u32 en_video_crtc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) u32 video_hor_exp : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) u32 video_ver_exp : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) u32 uv_combine : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) u32 total_req_video : 9;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) u32 video_ch_sel : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) u32 video_portrait : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) u32 yuv2rgb_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) u32 yuv2rgb_option : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) u32 video_inv_hor : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) u32 video_inv_ver : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) u32 gamma_sel : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) u32 dis_limit : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) u32 en_uv_hblend : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) u32 rgb_gamma_sel : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) union video_ctrl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) struct video_ctrl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) struct disp_db_buf_cntl_rd_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) u32 en_db_buf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) u32 update_db_buf_done : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) u32 db_buf_cntl : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) u32 : 24;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) union disp_db_buf_cntl_rd_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) struct disp_db_buf_cntl_rd_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) struct disp_db_buf_cntl_wr_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) u32 en_db_buf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) u32 update_db_buf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) u32 db_buf_cntl : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) u32 : 24;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) union disp_db_buf_cntl_wr_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) struct disp_db_buf_cntl_wr_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) struct gamma_value1_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) u32 gamma1 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) u32 gamma2 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) u32 gamma3 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) u32 gamma4 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) union gamma_value1_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) struct gamma_value1_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) struct gamma_value2_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) u32 gamma5 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) u32 gamma6 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) u32 gamma7 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) u32 gamma8 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) union gamma_value2_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) struct gamma_value2_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) struct gamma_slope_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) u32 slope1 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) u32 slope2 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) u32 slope3 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) u32 slope4 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) u32 slope5 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) u32 slope6 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) u32 slope7 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) u32 slope8 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) u32 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) union gamma_slope_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) struct gamma_slope_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) struct mc_ext_mem_location_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) u32 mc_ext_mem_start : 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) u32 mc_ext_mem_top : 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) union mc_ext_mem_location_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) struct mc_ext_mem_location_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) struct mc_fb_location_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) u32 mc_fb_start : 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) u32 mc_fb_top : 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) union mc_fb_location_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) struct mc_fb_location_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) struct clk_pin_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) u32 osc_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) u32 osc_gain : 5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) u32 dont_use_xtalin : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) u32 xtalin_pm_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) u32 xtalin_dbl_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) u32 : 7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) u32 cg_debug : 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) union clk_pin_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) struct clk_pin_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) struct pll_ref_fb_div_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) u32 pll_ref_div : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) u32 : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) u32 pll_fb_div_int : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) u32 pll_fb_div_frac : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) u32 pll_reset_time : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) u32 pll_lock_time : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) union pll_ref_fb_div_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) struct pll_ref_fb_div_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) struct pll_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) u32 pll_pwdn : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) u32 pll_reset : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) u32 pll_pm_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) u32 pll_mode : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) u32 pll_refclk_sel : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) u32 pll_fbclk_sel : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) u32 pll_tcpoff : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) u32 pll_pcp : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) u32 pll_pvg : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) u32 pll_vcofr : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) u32 pll_ioffset : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) u32 pll_pecc_mode : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) u32 pll_pecc_scon : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) u32 pll_dactal : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) u32 pll_cp_clip : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) u32 pll_conf : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) u32 pll_mbctrl : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) u32 pll_ring_off : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) union pll_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) struct pll_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) struct sclk_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) u32 sclk_src_sel : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) u32 sclk_post_div_fast : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) u32 sclk_clkon_hys : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) u32 sclk_post_div_slow : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) u32 disp_cg_ok2switch_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) u32 sclk_force_reg : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) u32 sclk_force_disp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) u32 sclk_force_mc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) u32 sclk_force_extmc : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) u32 sclk_force_cp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) u32 sclk_force_e2 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) u32 sclk_force_e3 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) u32 sclk_force_idct : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) u32 sclk_force_bist : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) u32 busy_extend_cp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) u32 busy_extend_e2 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) u32 busy_extend_e3 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) u32 busy_extend_idct : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) u32 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) union sclk_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) struct sclk_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) struct pclk_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) u32 pclk_src_sel : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) u32 pclk_post_div : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) u32 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) u32 pclk_force_disp : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) u32 : 15;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) union pclk_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) struct pclk_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) #define TESTCLK_SRC_PLL 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) #define TESTCLK_SRC_SCLK 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) #define TESTCLK_SRC_PCLK 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) /* 4 and 5 seem to by XTAL/M */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) #define TESTCLK_SRC_XTAL 0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) struct clk_test_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) u32 testclk_sel : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) u32 : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) u32 start_check_freq : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) u32 tstcount_rst : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) u32 : 15;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) u32 test_count : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) union clk_test_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) struct clk_test_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) struct pwrmgt_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) u32 pwm_enable : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) u32 pwm_mode_req : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) u32 pwm_wakeup_cond : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) u32 pwm_fast_noml_hw_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) u32 pwm_noml_fast_hw_en : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) u32 pwm_fast_noml_cond : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) u32 pwm_noml_fast_cond : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) u32 pwm_idle_timer : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) u32 pwm_busy_timer : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) union pwrmgt_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) struct pwrmgt_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) #define SRC_DATATYPE_EQU_DST 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) #define ROP3_SRCCOPY 0xcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) #define ROP3_PATCOPY 0xf0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) #define GMC_BRUSH_SOLID_COLOR 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) #define GMC_BRUSH_NONE 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) #define DP_SRC_MEM_RECTANGULAR 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) #define DP_OP_ROP 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) struct dp_gui_master_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) u32 gmc_src_pitch_offset_cntl : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) u32 gmc_dst_pitch_offset_cntl : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) u32 gmc_src_clipping : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) u32 gmc_dst_clipping : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) u32 gmc_brush_datatype : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) u32 gmc_dst_datatype : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) u32 gmc_src_datatype : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) u32 gmc_byte_pix_order : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) u32 gmc_default_sel : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) u32 gmc_rop3 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) u32 gmc_dp_src_source : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) u32 gmc_clr_cmp_fcn_dis : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) u32 gmc_wr_msk_dis : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) u32 gmc_dp_op : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) union dp_gui_master_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) struct dp_gui_master_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) struct rbbm_status_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) u32 cmdfifo_avail : 7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) u32 hirq_on_rbb : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) u32 cprq_on_rbb : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) u32 cfrq_on_rbb : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) u32 hirq_in_rtbuf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) u32 cprq_in_rtbuf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) u32 cfrq_in_rtbuf : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) u32 cf_pipe_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) u32 eng_ev_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) u32 cp_cmdstrm_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) u32 e2_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) u32 rb2d_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) u32 rb3d_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) u32 se_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) u32 re_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) u32 tam_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) u32 tdm_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) u32 pb_busy : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) u32 gui_active : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) union rbbm_status_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) struct rbbm_status_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) struct dp_datatype_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) u32 dp_dst_datatype : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) u32 : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) u32 dp_brush_datatype : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) u32 dp_src2_type : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) u32 dp_src2_datatype : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) u32 dp_src_datatype : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) u32 : 11;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) u32 dp_byte_pix_order : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) u32 : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) union dp_datatype_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) struct dp_datatype_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) struct dp_mix_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) u32 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) u32 dp_src_source : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) u32 dp_src2_source : 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) u32 : 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) u32 dp_rop3 : 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) u32 dp_op : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) u32 : 7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) union dp_mix_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) struct dp_mix_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) struct eng_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) u32 erc_reg_rd_ws : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) u32 erc_reg_wr_ws : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) u32 erc_idle_reg_wr : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) u32 dis_engine_triggers : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) u32 dis_rop_src_uses_dst_w_h : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) u32 dis_src_uses_dst_dirmaj : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) u32 : 6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) u32 force_3dclk_when_2dclk : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) u32 : 19;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) union eng_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) struct eng_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) struct dp_cntl_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) u32 dst_x_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) u32 dst_y_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) u32 src_x_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) u32 src_y_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) u32 dst_major_x : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) u32 src_major_x : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) u32 : 26;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) union dp_cntl_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) struct dp_cntl_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) struct dp_cntl_dst_dir_t {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) u32 : 15;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) u32 dst_y_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) u32 : 15;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) u32 dst_x_dir : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) union dp_cntl_dst_dir_u {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) u32 val : 32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) struct dp_cntl_dst_dir_t f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) } __attribute__((packed));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924)