1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd 4*4882a593Smuzhiyun * Author: Chris Zhong <zyw@rock-chips.com> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _CDN_DP_REG_H 8*4882a593Smuzhiyun #define _CDN_DP_REG_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <linux/bitops.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define ADDR_IMEM 0x10000 13*4882a593Smuzhiyun #define ADDR_DMEM 0x20000 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* APB CFG addr */ 16*4882a593Smuzhiyun #define APB_CTRL 0 17*4882a593Smuzhiyun #define XT_INT_CTRL 0x04 18*4882a593Smuzhiyun #define MAILBOX_FULL_ADDR 0x08 19*4882a593Smuzhiyun #define MAILBOX_EMPTY_ADDR 0x0c 20*4882a593Smuzhiyun #define MAILBOX0_WR_DATA 0x10 21*4882a593Smuzhiyun #define MAILBOX0_RD_DATA 0x14 22*4882a593Smuzhiyun #define KEEP_ALIVE 0x18 23*4882a593Smuzhiyun #define VER_L 0x1c 24*4882a593Smuzhiyun #define VER_H 0x20 25*4882a593Smuzhiyun #define VER_LIB_L_ADDR 0x24 26*4882a593Smuzhiyun #define VER_LIB_H_ADDR 0x28 27*4882a593Smuzhiyun #define SW_DEBUG_L 0x2c 28*4882a593Smuzhiyun #define SW_DEBUG_H 0x30 29*4882a593Smuzhiyun #define MAILBOX_INT_MASK 0x34 30*4882a593Smuzhiyun #define MAILBOX_INT_STATUS 0x38 31*4882a593Smuzhiyun #define SW_CLK_L 0x3c 32*4882a593Smuzhiyun #define SW_CLK_H 0x40 33*4882a593Smuzhiyun #define SW_EVENTS0 0x44 34*4882a593Smuzhiyun #define SW_EVENTS1 0x48 35*4882a593Smuzhiyun #define SW_EVENTS2 0x4c 36*4882a593Smuzhiyun #define SW_EVENTS3 0x50 37*4882a593Smuzhiyun #define XT_OCD_CTRL 0x60 38*4882a593Smuzhiyun #define APB_INT_MASK 0x6c 39*4882a593Smuzhiyun #define APB_STATUS_MASK 0x70 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* audio decoder addr */ 42*4882a593Smuzhiyun #define AUDIO_SRC_CNTL 0x30000 43*4882a593Smuzhiyun #define AUDIO_SRC_CNFG 0x30004 44*4882a593Smuzhiyun #define COM_CH_STTS_BITS 0x30008 45*4882a593Smuzhiyun #define STTS_BIT_CH(x) (0x3000c + ((x) << 2)) 46*4882a593Smuzhiyun #define SPDIF_CTRL_ADDR 0x3004c 47*4882a593Smuzhiyun #define SPDIF_CH1_CS_3100_ADDR 0x30050 48*4882a593Smuzhiyun #define SPDIF_CH1_CS_6332_ADDR 0x30054 49*4882a593Smuzhiyun #define SPDIF_CH1_CS_9564_ADDR 0x30058 50*4882a593Smuzhiyun #define SPDIF_CH1_CS_12796_ADDR 0x3005c 51*4882a593Smuzhiyun #define SPDIF_CH1_CS_159128_ADDR 0x30060 52*4882a593Smuzhiyun #define SPDIF_CH1_CS_191160_ADDR 0x30064 53*4882a593Smuzhiyun #define SPDIF_CH2_CS_3100_ADDR 0x30068 54*4882a593Smuzhiyun #define SPDIF_CH2_CS_6332_ADDR 0x3006c 55*4882a593Smuzhiyun #define SPDIF_CH2_CS_9564_ADDR 0x30070 56*4882a593Smuzhiyun #define SPDIF_CH2_CS_12796_ADDR 0x30074 57*4882a593Smuzhiyun #define SPDIF_CH2_CS_159128_ADDR 0x30078 58*4882a593Smuzhiyun #define SPDIF_CH2_CS_191160_ADDR 0x3007c 59*4882a593Smuzhiyun #define SMPL2PKT_CNTL 0x30080 60*4882a593Smuzhiyun #define SMPL2PKT_CNFG 0x30084 61*4882a593Smuzhiyun #define FIFO_CNTL 0x30088 62*4882a593Smuzhiyun #define FIFO_STTS 0x3008c 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* source pif addr */ 65*4882a593Smuzhiyun #define SOURCE_PIF_WR_ADDR 0x30800 66*4882a593Smuzhiyun #define SOURCE_PIF_WR_REQ 0x30804 67*4882a593Smuzhiyun #define SOURCE_PIF_RD_ADDR 0x30808 68*4882a593Smuzhiyun #define SOURCE_PIF_RD_REQ 0x3080c 69*4882a593Smuzhiyun #define SOURCE_PIF_DATA_WR 0x30810 70*4882a593Smuzhiyun #define SOURCE_PIF_DATA_RD 0x30814 71*4882a593Smuzhiyun #define SOURCE_PIF_FIFO1_FLUSH 0x30818 72*4882a593Smuzhiyun #define SOURCE_PIF_FIFO2_FLUSH 0x3081c 73*4882a593Smuzhiyun #define SOURCE_PIF_STATUS 0x30820 74*4882a593Smuzhiyun #define SOURCE_PIF_INTERRUPT_SOURCE 0x30824 75*4882a593Smuzhiyun #define SOURCE_PIF_INTERRUPT_MASK 0x30828 76*4882a593Smuzhiyun #define SOURCE_PIF_PKT_ALLOC_REG 0x3082c 77*4882a593Smuzhiyun #define SOURCE_PIF_PKT_ALLOC_WR_EN 0x30830 78*4882a593Smuzhiyun #define SOURCE_PIF_SW_RESET 0x30834 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun /* bellow registers need access by mailbox */ 81*4882a593Smuzhiyun /* source car addr */ 82*4882a593Smuzhiyun #define SOURCE_HDTX_CAR 0x0900 83*4882a593Smuzhiyun #define SOURCE_DPTX_CAR 0x0904 84*4882a593Smuzhiyun #define SOURCE_PHY_CAR 0x0908 85*4882a593Smuzhiyun #define SOURCE_CEC_CAR 0x090c 86*4882a593Smuzhiyun #define SOURCE_CBUS_CAR 0x0910 87*4882a593Smuzhiyun #define SOURCE_PKT_CAR 0x0918 88*4882a593Smuzhiyun #define SOURCE_AIF_CAR 0x091c 89*4882a593Smuzhiyun #define SOURCE_CIPHER_CAR 0x0920 90*4882a593Smuzhiyun #define SOURCE_CRYPTO_CAR 0x0924 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* clock meters addr */ 93*4882a593Smuzhiyun #define CM_CTRL 0x0a00 94*4882a593Smuzhiyun #define CM_I2S_CTRL 0x0a04 95*4882a593Smuzhiyun #define CM_SPDIF_CTRL 0x0a08 96*4882a593Smuzhiyun #define CM_VID_CTRL 0x0a0c 97*4882a593Smuzhiyun #define CM_LANE_CTRL 0x0a10 98*4882a593Smuzhiyun #define I2S_NM_STABLE 0x0a14 99*4882a593Smuzhiyun #define I2S_NCTS_STABLE 0x0a18 100*4882a593Smuzhiyun #define SPDIF_NM_STABLE 0x0a1c 101*4882a593Smuzhiyun #define SPDIF_NCTS_STABLE 0x0a20 102*4882a593Smuzhiyun #define NMVID_MEAS_STABLE 0x0a24 103*4882a593Smuzhiyun #define I2S_MEAS 0x0a40 104*4882a593Smuzhiyun #define SPDIF_MEAS 0x0a80 105*4882a593Smuzhiyun #define NMVID_MEAS 0x0ac0 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun /* source vif addr */ 108*4882a593Smuzhiyun #define BND_HSYNC2VSYNC 0x0b00 109*4882a593Smuzhiyun #define HSYNC2VSYNC_F1_L1 0x0b04 110*4882a593Smuzhiyun #define HSYNC2VSYNC_F2_L1 0x0b08 111*4882a593Smuzhiyun #define HSYNC2VSYNC_STATUS 0x0b0c 112*4882a593Smuzhiyun #define HSYNC2VSYNC_POL_CTRL 0x0b10 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun /* dptx phy addr */ 115*4882a593Smuzhiyun #define DP_TX_PHY_CONFIG_REG 0x2000 116*4882a593Smuzhiyun #define DP_TX_PHY_SW_RESET 0x2004 117*4882a593Smuzhiyun #define DP_TX_PHY_SCRAMBLER_SEED 0x2008 118*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_01_04 0x200c 119*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_05_08 0x2010 120*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_09_10 0x2014 121*4882a593Smuzhiyun #define TEST_COR 0x23fc 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun /* dptx hpd addr */ 124*4882a593Smuzhiyun #define HPD_IRQ_DET_MIN_TIMER 0x2100 125*4882a593Smuzhiyun #define HPD_IRQ_DET_MAX_TIMER 0x2104 126*4882a593Smuzhiyun #define HPD_UNPLGED_DET_MIN_TIMER 0x2108 127*4882a593Smuzhiyun #define HPD_STABLE_TIMER 0x210c 128*4882a593Smuzhiyun #define HPD_FILTER_TIMER 0x2110 129*4882a593Smuzhiyun #define HPD_EVENT_MASK 0x211c 130*4882a593Smuzhiyun #define HPD_EVENT_DET 0x2120 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* dpyx framer addr */ 133*4882a593Smuzhiyun #define DP_FRAMER_GLOBAL_CONFIG 0x2200 134*4882a593Smuzhiyun #define DP_SW_RESET 0x2204 135*4882a593Smuzhiyun #define DP_FRAMER_TU 0x2208 136*4882a593Smuzhiyun #define DP_FRAMER_PXL_REPR 0x220c 137*4882a593Smuzhiyun #define DP_FRAMER_SP 0x2210 138*4882a593Smuzhiyun #define AUDIO_PACK_CONTROL 0x2214 139*4882a593Smuzhiyun #define DP_VC_TABLE(x) (0x2218 + ((x) << 2)) 140*4882a593Smuzhiyun #define DP_VB_ID 0x2258 141*4882a593Smuzhiyun #define DP_MTPH_LVP_CONTROL 0x225c 142*4882a593Smuzhiyun #define DP_MTPH_SYMBOL_VALUES 0x2260 143*4882a593Smuzhiyun #define DP_MTPH_ECF_CONTROL 0x2264 144*4882a593Smuzhiyun #define DP_MTPH_ACT_CONTROL 0x2268 145*4882a593Smuzhiyun #define DP_MTPH_STATUS 0x226c 146*4882a593Smuzhiyun #define DP_INTERRUPT_SOURCE 0x2270 147*4882a593Smuzhiyun #define DP_INTERRUPT_MASK 0x2274 148*4882a593Smuzhiyun #define DP_FRONT_BACK_PORCH 0x2278 149*4882a593Smuzhiyun #define DP_BYTE_COUNT 0x227c 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun /* dptx stream addr */ 152*4882a593Smuzhiyun #define MSA_HORIZONTAL_0 0x2280 153*4882a593Smuzhiyun #define MSA_HORIZONTAL_1 0x2284 154*4882a593Smuzhiyun #define MSA_VERTICAL_0 0x2288 155*4882a593Smuzhiyun #define MSA_VERTICAL_1 0x228c 156*4882a593Smuzhiyun #define MSA_MISC 0x2290 157*4882a593Smuzhiyun #define STREAM_CONFIG 0x2294 158*4882a593Smuzhiyun #define AUDIO_PACK_STATUS 0x2298 159*4882a593Smuzhiyun #define VIF_STATUS 0x229c 160*4882a593Smuzhiyun #define PCK_STUFF_STATUS_0 0x22a0 161*4882a593Smuzhiyun #define PCK_STUFF_STATUS_1 0x22a4 162*4882a593Smuzhiyun #define INFO_PACK_STATUS 0x22a8 163*4882a593Smuzhiyun #define RATE_GOVERNOR_STATUS 0x22ac 164*4882a593Smuzhiyun #define DP_HORIZONTAL 0x22b0 165*4882a593Smuzhiyun #define DP_VERTICAL_0 0x22b4 166*4882a593Smuzhiyun #define DP_VERTICAL_1 0x22b8 167*4882a593Smuzhiyun #define DP_BLOCK_SDP 0x22bc 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun /* dptx glbl addr */ 170*4882a593Smuzhiyun #define DPTX_LANE_EN 0x2300 171*4882a593Smuzhiyun #define DPTX_ENHNCD 0x2304 172*4882a593Smuzhiyun #define DPTX_INT_MASK 0x2308 173*4882a593Smuzhiyun #define DPTX_INT_STATUS 0x230c 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun /* dp aux addr */ 176*4882a593Smuzhiyun #define DP_AUX_HOST_CONTROL 0x2800 177*4882a593Smuzhiyun #define DP_AUX_INTERRUPT_SOURCE 0x2804 178*4882a593Smuzhiyun #define DP_AUX_INTERRUPT_MASK 0x2808 179*4882a593Smuzhiyun #define DP_AUX_SWAP_INVERSION_CONTROL 0x280c 180*4882a593Smuzhiyun #define DP_AUX_SEND_NACK_TRANSACTION 0x2810 181*4882a593Smuzhiyun #define DP_AUX_CLEAR_RX 0x2814 182*4882a593Smuzhiyun #define DP_AUX_CLEAR_TX 0x2818 183*4882a593Smuzhiyun #define DP_AUX_TIMER_STOP 0x281c 184*4882a593Smuzhiyun #define DP_AUX_TIMER_CLEAR 0x2820 185*4882a593Smuzhiyun #define DP_AUX_RESET_SW 0x2824 186*4882a593Smuzhiyun #define DP_AUX_DIVIDE_2M 0x2828 187*4882a593Smuzhiyun #define DP_AUX_TX_PREACHARGE_LENGTH 0x282c 188*4882a593Smuzhiyun #define DP_AUX_FREQUENCY_1M_MAX 0x2830 189*4882a593Smuzhiyun #define DP_AUX_FREQUENCY_1M_MIN 0x2834 190*4882a593Smuzhiyun #define DP_AUX_RX_PRE_MIN 0x2838 191*4882a593Smuzhiyun #define DP_AUX_RX_PRE_MAX 0x283c 192*4882a593Smuzhiyun #define DP_AUX_TIMER_PRESET 0x2840 193*4882a593Smuzhiyun #define DP_AUX_NACK_FORMAT 0x2844 194*4882a593Smuzhiyun #define DP_AUX_TX_DATA 0x2848 195*4882a593Smuzhiyun #define DP_AUX_RX_DATA 0x284c 196*4882a593Smuzhiyun #define DP_AUX_TX_STATUS 0x2850 197*4882a593Smuzhiyun #define DP_AUX_RX_STATUS 0x2854 198*4882a593Smuzhiyun #define DP_AUX_RX_CYCLE_COUNTER 0x2858 199*4882a593Smuzhiyun #define DP_AUX_MAIN_STATES 0x285c 200*4882a593Smuzhiyun #define DP_AUX_MAIN_TIMER 0x2860 201*4882a593Smuzhiyun #define DP_AUX_AFE_OUT 0x2864 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /* crypto addr */ 204*4882a593Smuzhiyun #define CRYPTO_HDCP_REVISION 0x5800 205*4882a593Smuzhiyun #define HDCP_CRYPTO_CONFIG 0x5804 206*4882a593Smuzhiyun #define CRYPTO_INTERRUPT_SOURCE 0x5808 207*4882a593Smuzhiyun #define CRYPTO_INTERRUPT_MASK 0x580c 208*4882a593Smuzhiyun #define CRYPTO22_CONFIG 0x5818 209*4882a593Smuzhiyun #define CRYPTO22_STATUS 0x581c 210*4882a593Smuzhiyun #define SHA_256_DATA_IN 0x583c 211*4882a593Smuzhiyun #define SHA_256_DATA_OUT_(x) (0x5850 + ((x) << 2)) 212*4882a593Smuzhiyun #define AES_32_KEY_(x) (0x5870 + ((x) << 2)) 213*4882a593Smuzhiyun #define AES_32_DATA_IN 0x5880 214*4882a593Smuzhiyun #define AES_32_DATA_OUT_(x) (0x5884 + ((x) << 2)) 215*4882a593Smuzhiyun #define CRYPTO14_CONFIG 0x58a0 216*4882a593Smuzhiyun #define CRYPTO14_STATUS 0x58a4 217*4882a593Smuzhiyun #define CRYPTO14_PRNM_OUT 0x58a8 218*4882a593Smuzhiyun #define CRYPTO14_KM_0 0x58ac 219*4882a593Smuzhiyun #define CRYPTO14_KM_1 0x58b0 220*4882a593Smuzhiyun #define CRYPTO14_AN_0 0x58b4 221*4882a593Smuzhiyun #define CRYPTO14_AN_1 0x58b8 222*4882a593Smuzhiyun #define CRYPTO14_YOUR_KSV_0 0x58bc 223*4882a593Smuzhiyun #define CRYPTO14_YOUR_KSV_1 0x58c0 224*4882a593Smuzhiyun #define CRYPTO14_MI_0 0x58c4 225*4882a593Smuzhiyun #define CRYPTO14_MI_1 0x58c8 226*4882a593Smuzhiyun #define CRYPTO14_TI_0 0x58cc 227*4882a593Smuzhiyun #define CRYPTO14_KI_0 0x58d0 228*4882a593Smuzhiyun #define CRYPTO14_KI_1 0x58d4 229*4882a593Smuzhiyun #define CRYPTO14_BLOCKS_NUM 0x58d8 230*4882a593Smuzhiyun #define CRYPTO14_KEY_MEM_DATA_0 0x58dc 231*4882a593Smuzhiyun #define CRYPTO14_KEY_MEM_DATA_1 0x58e0 232*4882a593Smuzhiyun #define CRYPTO14_SHA1_MSG_DATA 0x58e4 233*4882a593Smuzhiyun #define CRYPTO14_SHA1_V_VALUE_(x) (0x58e8 + ((x) << 2)) 234*4882a593Smuzhiyun #define TRNG_CTRL 0x58fc 235*4882a593Smuzhiyun #define TRNG_DATA_RDY 0x5900 236*4882a593Smuzhiyun #define TRNG_DATA 0x5904 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun /* cipher addr */ 239*4882a593Smuzhiyun #define HDCP_REVISION 0x60000 240*4882a593Smuzhiyun #define INTERRUPT_SOURCE 0x60004 241*4882a593Smuzhiyun #define INTERRUPT_MASK 0x60008 242*4882a593Smuzhiyun #define HDCP_CIPHER_CONFIG 0x6000c 243*4882a593Smuzhiyun #define AES_128_KEY_0 0x60010 244*4882a593Smuzhiyun #define AES_128_KEY_1 0x60014 245*4882a593Smuzhiyun #define AES_128_KEY_2 0x60018 246*4882a593Smuzhiyun #define AES_128_KEY_3 0x6001c 247*4882a593Smuzhiyun #define AES_128_RANDOM_0 0x60020 248*4882a593Smuzhiyun #define AES_128_RANDOM_1 0x60024 249*4882a593Smuzhiyun #define CIPHER14_KM_0 0x60028 250*4882a593Smuzhiyun #define CIPHER14_KM_1 0x6002c 251*4882a593Smuzhiyun #define CIPHER14_STATUS 0x60030 252*4882a593Smuzhiyun #define CIPHER14_RI_PJ_STATUS 0x60034 253*4882a593Smuzhiyun #define CIPHER_MODE 0x60038 254*4882a593Smuzhiyun #define CIPHER14_AN_0 0x6003c 255*4882a593Smuzhiyun #define CIPHER14_AN_1 0x60040 256*4882a593Smuzhiyun #define CIPHER22_AUTH 0x60044 257*4882a593Smuzhiyun #define CIPHER14_R0_DP_STATUS 0x60048 258*4882a593Smuzhiyun #define CIPHER14_BOOTSTRAP 0x6004c 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun #define DPTX_FRMR_DATA_CLK_RSTN_EN BIT(11) 261*4882a593Smuzhiyun #define DPTX_FRMR_DATA_CLK_EN BIT(10) 262*4882a593Smuzhiyun #define DPTX_PHY_DATA_RSTN_EN BIT(9) 263*4882a593Smuzhiyun #define DPTX_PHY_DATA_CLK_EN BIT(8) 264*4882a593Smuzhiyun #define DPTX_PHY_CHAR_RSTN_EN BIT(7) 265*4882a593Smuzhiyun #define DPTX_PHY_CHAR_CLK_EN BIT(6) 266*4882a593Smuzhiyun #define SOURCE_AUX_SYS_CLK_RSTN_EN BIT(5) 267*4882a593Smuzhiyun #define SOURCE_AUX_SYS_CLK_EN BIT(4) 268*4882a593Smuzhiyun #define DPTX_SYS_CLK_RSTN_EN BIT(3) 269*4882a593Smuzhiyun #define DPTX_SYS_CLK_EN BIT(2) 270*4882a593Smuzhiyun #define CFG_DPTX_VIF_CLK_RSTN_EN BIT(1) 271*4882a593Smuzhiyun #define CFG_DPTX_VIF_CLK_EN BIT(0) 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define SOURCE_PHY_RSTN_EN BIT(1) 274*4882a593Smuzhiyun #define SOURCE_PHY_CLK_EN BIT(0) 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun #define SOURCE_PKT_SYS_RSTN_EN BIT(3) 277*4882a593Smuzhiyun #define SOURCE_PKT_SYS_CLK_EN BIT(2) 278*4882a593Smuzhiyun #define SOURCE_PKT_DATA_RSTN_EN BIT(1) 279*4882a593Smuzhiyun #define SOURCE_PKT_DATA_CLK_EN BIT(0) 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun #define SPDIF_CDR_CLK_RSTN_EN BIT(5) 282*4882a593Smuzhiyun #define SPDIF_CDR_CLK_EN BIT(4) 283*4882a593Smuzhiyun #define SOURCE_AIF_SYS_RSTN_EN BIT(3) 284*4882a593Smuzhiyun #define SOURCE_AIF_SYS_CLK_EN BIT(2) 285*4882a593Smuzhiyun #define SOURCE_AIF_CLK_RSTN_EN BIT(1) 286*4882a593Smuzhiyun #define SOURCE_AIF_CLK_EN BIT(0) 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun #define SOURCE_CIPHER_SYSTEM_CLK_RSTN_EN BIT(3) 289*4882a593Smuzhiyun #define SOURCE_CIPHER_SYS_CLK_EN BIT(2) 290*4882a593Smuzhiyun #define SOURCE_CIPHER_CHAR_CLK_RSTN_EN BIT(1) 291*4882a593Smuzhiyun #define SOURCE_CIPHER_CHAR_CLK_EN BIT(0) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun #define SOURCE_CRYPTO_SYS_CLK_RSTN_EN BIT(1) 294*4882a593Smuzhiyun #define SOURCE_CRYPTO_SYS_CLK_EN BIT(0) 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun #define APB_IRAM_PATH BIT(2) 297*4882a593Smuzhiyun #define APB_DRAM_PATH BIT(1) 298*4882a593Smuzhiyun #define APB_XT_RESET BIT(0) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define MAILBOX_INT_MASK_BIT BIT(1) 301*4882a593Smuzhiyun #define PIF_INT_MASK_BIT BIT(0) 302*4882a593Smuzhiyun #define ALL_INT_MASK 3 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun /* mailbox */ 305*4882a593Smuzhiyun #define MB_OPCODE_ID 0 306*4882a593Smuzhiyun #define MB_MODULE_ID 1 307*4882a593Smuzhiyun #define MB_SIZE_MSB_ID 2 308*4882a593Smuzhiyun #define MB_SIZE_LSB_ID 3 309*4882a593Smuzhiyun #define MB_DATA_ID 4 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun #define MB_MODULE_ID_DP_TX 0x01 312*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_TX 0x07 313*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_RX 0x08 314*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_GENERAL 0x09 315*4882a593Smuzhiyun #define MB_MODULE_ID_GENERAL 0x0a 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun /* general opcode */ 318*4882a593Smuzhiyun #define GENERAL_MAIN_CONTROL 0x01 319*4882a593Smuzhiyun #define GENERAL_TEST_ECHO 0x02 320*4882a593Smuzhiyun #define GENERAL_BUS_SETTINGS 0x03 321*4882a593Smuzhiyun #define GENERAL_TEST_ACCESS 0x04 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun #define DPTX_SET_POWER_MNG 0x00 324*4882a593Smuzhiyun #define DPTX_SET_HOST_CAPABILITIES 0x01 325*4882a593Smuzhiyun #define DPTX_GET_EDID 0x02 326*4882a593Smuzhiyun #define DPTX_READ_DPCD 0x03 327*4882a593Smuzhiyun #define DPTX_WRITE_DPCD 0x04 328*4882a593Smuzhiyun #define DPTX_ENABLE_EVENT 0x05 329*4882a593Smuzhiyun #define DPTX_WRITE_REGISTER 0x06 330*4882a593Smuzhiyun #define DPTX_READ_REGISTER 0x07 331*4882a593Smuzhiyun #define DPTX_WRITE_FIELD 0x08 332*4882a593Smuzhiyun #define DPTX_TRAINING_CONTROL 0x09 333*4882a593Smuzhiyun #define DPTX_READ_EVENT 0x0a 334*4882a593Smuzhiyun #define DPTX_READ_LINK_STAT 0x0b 335*4882a593Smuzhiyun #define DPTX_SET_VIDEO 0x0c 336*4882a593Smuzhiyun #define DPTX_SET_AUDIO 0x0d 337*4882a593Smuzhiyun #define DPTX_GET_LAST_AUX_STAUS 0x0e 338*4882a593Smuzhiyun #define DPTX_SET_LINK_BREAK_POINT 0x0f 339*4882a593Smuzhiyun #define DPTX_FORCE_LANES 0x10 340*4882a593Smuzhiyun #define DPTX_HPD_STATE 0x11 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun #define FW_STANDBY 0 343*4882a593Smuzhiyun #define FW_ACTIVE 1 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun #define DPTX_EVENT_ENABLE_HPD BIT(0) 346*4882a593Smuzhiyun #define DPTX_EVENT_ENABLE_TRAINING BIT(1) 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun #define LINK_TRAINING_NOT_ACTIVE 0 349*4882a593Smuzhiyun #define LINK_TRAINING_RUN 1 350*4882a593Smuzhiyun #define LINK_TRAINING_RESTART 2 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun #define CONTROL_VIDEO_IDLE 0 353*4882a593Smuzhiyun #define CONTROL_VIDEO_VALID 1 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun #define TU_CNT_RST_EN BIT(15) 356*4882a593Smuzhiyun #define VIF_BYPASS_INTERLACE BIT(13) 357*4882a593Smuzhiyun #define INTERLACE_FMT_DET BIT(12) 358*4882a593Smuzhiyun #define INTERLACE_DTCT_WIN 0x20 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun #define DP_FRAMER_SP_INTERLACE_EN BIT(2) 361*4882a593Smuzhiyun #define DP_FRAMER_SP_HSP BIT(1) 362*4882a593Smuzhiyun #define DP_FRAMER_SP_VSP BIT(0) 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun /* capability */ 365*4882a593Smuzhiyun #define AUX_HOST_INVERT 3 366*4882a593Smuzhiyun #define FAST_LT_SUPPORT 1 367*4882a593Smuzhiyun #define FAST_LT_NOT_SUPPORT 0 368*4882a593Smuzhiyun #define LANE_MAPPING_NORMAL 0x1b 369*4882a593Smuzhiyun #define LANE_MAPPING_FLIPPED 0xe4 370*4882a593Smuzhiyun #define ENHANCED 1 371*4882a593Smuzhiyun #define SCRAMBLER_EN BIT(4) 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun #define FULL_LT_STARTED BIT(0) 374*4882a593Smuzhiyun #define FASE_LT_STARTED BIT(1) 375*4882a593Smuzhiyun #define CLK_RECOVERY_FINISHED BIT(2) 376*4882a593Smuzhiyun #define EQ_PHASE_FINISHED BIT(3) 377*4882a593Smuzhiyun #define FASE_LT_START_FINISHED BIT(4) 378*4882a593Smuzhiyun #define CLK_RECOVERY_FAILED BIT(5) 379*4882a593Smuzhiyun #define EQ_PHASE_FAILED BIT(6) 380*4882a593Smuzhiyun #define FASE_LT_FAILED BIT(7) 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun #define DPTX_HPD_EVENT BIT(0) 383*4882a593Smuzhiyun #define DPTX_TRAINING_EVENT BIT(1) 384*4882a593Smuzhiyun #define HDCP_TX_STATUS_EVENT BIT(4) 385*4882a593Smuzhiyun #define HDCP2_TX_IS_KM_STORED_EVENT BIT(5) 386*4882a593Smuzhiyun #define HDCP2_TX_STORE_KM_EVENT BIT(6) 387*4882a593Smuzhiyun #define HDCP_TX_IS_RECEIVER_ID_VALID_EVENT BIT(7) 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun #define TU_SIZE 30 390*4882a593Smuzhiyun #define CDN_DP_MAX_LINK_RATE DP_LINK_BW_5_4 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun /* audio */ 393*4882a593Smuzhiyun #define AUDIO_PACK_EN BIT(8) 394*4882a593Smuzhiyun #define SAMPLING_FREQ(x) (((x) & 0xf) << 16) 395*4882a593Smuzhiyun #define ORIGINAL_SAMP_FREQ(x) (((x) & 0xf) << 24) 396*4882a593Smuzhiyun #define SYNC_WR_TO_CH_ZERO BIT(1) 397*4882a593Smuzhiyun #define I2S_DEC_START BIT(1) 398*4882a593Smuzhiyun #define AUDIO_SW_RST BIT(0) 399*4882a593Smuzhiyun #define SMPL2PKT_EN BIT(1) 400*4882a593Smuzhiyun #define MAX_NUM_CH(x) (((x) & 0x1f) - 1) 401*4882a593Smuzhiyun #define NUM_OF_I2S_PORTS(x) ((((x) / 2 - 1) & 0x3) << 5) 402*4882a593Smuzhiyun #define AUDIO_TYPE_LPCM (2 << 7) 403*4882a593Smuzhiyun #define CFG_SUB_PCKT_NUM(x) ((((x) - 1) & 0x7) << 11) 404*4882a593Smuzhiyun #define AUDIO_CH_NUM(x) ((((x) - 1) & 0x1f) << 2) 405*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_16 0 406*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_24 BIT(11) 407*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_32 (2 << 11) 408*4882a593Smuzhiyun #define I2S_DEC_PORT_EN(x) (((x) & 0xf) << 17) 409*4882a593Smuzhiyun #define SPDIF_ENABLE BIT(21) 410*4882a593Smuzhiyun #define SPDIF_AVG_SEL BIT(20) 411*4882a593Smuzhiyun #define SPDIF_JITTER_BYPASS BIT(19) 412*4882a593Smuzhiyun #define SPDIF_FIFO_MID_RANGE(x) (((x) & 0xff) << 11) 413*4882a593Smuzhiyun #define SPDIF_JITTER_THRSH(x) (((x) & 0xff) << 3) 414*4882a593Smuzhiyun #define SPDIF_JITTER_AVG_WIN(x) ((x) & 0x7) 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun /* Reference cycles when using lane clock as reference */ 417*4882a593Smuzhiyun #define LANE_REF_CYC 0x8000 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun enum voltage_swing_level { 420*4882a593Smuzhiyun VOLTAGE_LEVEL_0, 421*4882a593Smuzhiyun VOLTAGE_LEVEL_1, 422*4882a593Smuzhiyun VOLTAGE_LEVEL_2, 423*4882a593Smuzhiyun VOLTAGE_LEVEL_3, 424*4882a593Smuzhiyun }; 425*4882a593Smuzhiyun 426*4882a593Smuzhiyun enum pre_emphasis_level { 427*4882a593Smuzhiyun PRE_EMPHASIS_LEVEL_0, 428*4882a593Smuzhiyun PRE_EMPHASIS_LEVEL_1, 429*4882a593Smuzhiyun PRE_EMPHASIS_LEVEL_2, 430*4882a593Smuzhiyun PRE_EMPHASIS_LEVEL_3, 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun enum pattern_set { 434*4882a593Smuzhiyun PTS1 = BIT(0), 435*4882a593Smuzhiyun PTS2 = BIT(1), 436*4882a593Smuzhiyun PTS3 = BIT(2), 437*4882a593Smuzhiyun PTS4 = BIT(3), 438*4882a593Smuzhiyun DP_NONE = BIT(4) 439*4882a593Smuzhiyun }; 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun enum vic_color_depth { 442*4882a593Smuzhiyun BCS_6 = 0x1, 443*4882a593Smuzhiyun BCS_8 = 0x2, 444*4882a593Smuzhiyun BCS_10 = 0x4, 445*4882a593Smuzhiyun BCS_12 = 0x8, 446*4882a593Smuzhiyun BCS_16 = 0x10, 447*4882a593Smuzhiyun }; 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun enum vic_bt_type { 450*4882a593Smuzhiyun BT_601 = 0x0, 451*4882a593Smuzhiyun BT_709 = 0x1, 452*4882a593Smuzhiyun }; 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun void cdn_dp_clock_reset(struct cdn_dp_device *dp); 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun void cdn_dp_set_fw_clk(struct cdn_dp_device *dp, unsigned long clk); 457*4882a593Smuzhiyun int cdn_dp_load_firmware(struct cdn_dp_device *dp, const u32 *i_mem, 458*4882a593Smuzhiyun u32 i_size, const u32 *d_mem, u32 d_size); 459*4882a593Smuzhiyun int cdn_dp_set_firmware_active(struct cdn_dp_device *dp, bool enable); 460*4882a593Smuzhiyun int cdn_dp_set_host_cap(struct cdn_dp_device *dp, u8 lanes, bool flip); 461*4882a593Smuzhiyun int cdn_dp_event_config(struct cdn_dp_device *dp); 462*4882a593Smuzhiyun u32 cdn_dp_get_event(struct cdn_dp_device *dp); 463*4882a593Smuzhiyun int cdn_dp_get_hpd_status(struct cdn_dp_device *dp); 464*4882a593Smuzhiyun int cdn_dp_dpcd_write(struct cdn_dp_device *dp, u32 addr, u8 value); 465*4882a593Smuzhiyun int cdn_dp_dpcd_read(struct cdn_dp_device *dp, u32 addr, u8 *data, u16 len); 466*4882a593Smuzhiyun int cdn_dp_get_edid_block(void *dp, u8 *edid, 467*4882a593Smuzhiyun unsigned int block, size_t length); 468*4882a593Smuzhiyun int cdn_dp_train_link(struct cdn_dp_device *dp); 469*4882a593Smuzhiyun int cdn_dp_set_video_status(struct cdn_dp_device *dp, int active); 470*4882a593Smuzhiyun int cdn_dp_config_video(struct cdn_dp_device *dp); 471*4882a593Smuzhiyun int cdn_dp_audio_stop(struct cdn_dp_device *dp, struct audio_info *audio); 472*4882a593Smuzhiyun int cdn_dp_audio_mute(struct cdn_dp_device *dp, bool enable); 473*4882a593Smuzhiyun int cdn_dp_audio_config(struct cdn_dp_device *dp, struct audio_info *audio); 474*4882a593Smuzhiyun #endif /* _CDN_DP_REG_H */ 475