1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2020 Rockchip Electronics Co. Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: Shunqing Chen <csq@rock-chips.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __RK628_HDMIRX_H 9*4882a593Smuzhiyun #define __RK628_HDMIRX_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "rk628.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* --------- EDID and HDCP KEY ------- */ 14*4882a593Smuzhiyun #define EDID_BASE 0x000a0000 15*4882a593Smuzhiyun #define HDCP_KEY_BASE 0x000a8000 16*4882a593Smuzhiyun #define HDCP_KEY_KSV0 (HDCP_KEY_BASE + 4) 17*4882a593Smuzhiyun #define HDCP_KEY_DPK0 (HDCP_KEY_BASE + 36) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define KEY_MAX_REGISTER 0x000a8490 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* --------- GPIO0 REG --------------- */ 22*4882a593Smuzhiyun #define GPIO0_SWPORT_DDR_L 0xd0008 23*4882a593Smuzhiyun #define GPIO1_SWPORT_DR_L 0xe0000 24*4882a593Smuzhiyun #define GPIO1_SWPORT_DDR_L 0xe0008 25*4882a593Smuzhiyun #define GPIO1_VER_ID 0xe0078 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun /* --------- HDMI RX REG ------------- */ 28*4882a593Smuzhiyun #define HDMI_RX_BASE 0x00030000 29*4882a593Smuzhiyun #define HDMI_RX_HDMI_SETUP_CTRL (HDMI_RX_BASE + 0x0000) 30*4882a593Smuzhiyun #define HOT_PLUG_DETECT_INPUT_A_MASK BIT(24) 31*4882a593Smuzhiyun #define HOT_PLUG_DETECT_INPUT_A(x) UPDATE(x, 24, 24) 32*4882a593Smuzhiyun #define HOT_PLUG_DETECT_MASK BIT(0) 33*4882a593Smuzhiyun #define HOT_PLUG_DETECT(x) UPDATE(x, 0, 0) 34*4882a593Smuzhiyun #define HDMI_RX_HDMI_TIMER_CTRL (HDMI_RX_BASE + 0x0008) 35*4882a593Smuzhiyun #define HDMI_RX_HDMI_RES_OVR (HDMI_RX_BASE + 0x0010) 36*4882a593Smuzhiyun #define HDMI_RX_HDMI_PLL_FRQSET2 (HDMI_RX_BASE + 0x0020) 37*4882a593Smuzhiyun #define HDMI_RX_HDMI_PCB_CTRL (HDMI_RX_BASE + 0x0038) 38*4882a593Smuzhiyun #define SEL_PIXCLKSRC(x) UPDATE(x, 19, 18) 39*4882a593Smuzhiyun #define INPUT_SELECT_MASK BIT(16) 40*4882a593Smuzhiyun #define INPUT_SELECT(x) UPDATE(x, 16, 16) 41*4882a593Smuzhiyun #define HDMI_RX_HDMI_PHS_CTR (HDMI_RX_BASE + 0x0040) 42*4882a593Smuzhiyun #define HDMI_RX_HDMI_EQ_MEAS_CTRL (HDMI_RX_BASE + 0x005c) 43*4882a593Smuzhiyun #define HDMI_RX_HDMI_CTRL (HDMI_RX_BASE + 0x0064) 44*4882a593Smuzhiyun #define HDMI_RX_HDMI_MODE_RECOVER (HDMI_RX_BASE + 0x0080) 45*4882a593Smuzhiyun #define SPIKE_FILTER_EN_MASK BIT(18) 46*4882a593Smuzhiyun #define SPIKE_FILTER_EN(x) UPDATE(x, 18, 18) 47*4882a593Smuzhiyun #define DVI_MODE_HYST_MASK GENMASK(17, 13) 48*4882a593Smuzhiyun #define DVI_MODE_HYST(x) UPDATE(x, 17, 13) 49*4882a593Smuzhiyun #define HDMI_MODE_HYST_MASK GENMASK(12, 8) 50*4882a593Smuzhiyun #define HDMI_MODE_HYST(x) UPDATE(x, 12, 8) 51*4882a593Smuzhiyun #define HDMI_MODE_MASK GENMASK(7, 6) 52*4882a593Smuzhiyun #define HDMI_MODE(x) UPDATE(x, 7, 6) 53*4882a593Smuzhiyun #define GB_DET_MASK GENMASK(5, 4) 54*4882a593Smuzhiyun #define GB_DET(x) UPDATE(x, 5, 4) 55*4882a593Smuzhiyun #define EESS_OESS_MASK GENMASK(3, 2) 56*4882a593Smuzhiyun #define EESS_OESS(x) UPDATE(x, 3, 2) 57*4882a593Smuzhiyun #define SEL_CTL01_MASK GENMASK(1, 0) 58*4882a593Smuzhiyun #define SEL_CTL01(x) UPDATE(x, 1, 0) 59*4882a593Smuzhiyun #define HDMI_RX_HDMI_ERROR_PROTECT (HDMI_RX_BASE + 0x0084) 60*4882a593Smuzhiyun #define RG_BLOCK_OFF(x) UPDATE(x, 20, 20) 61*4882a593Smuzhiyun #define BLOCK_OFF(x) UPDATE(x, 19, 19) 62*4882a593Smuzhiyun #define VALID_MODE(x) UPDATE(x, 18, 16) 63*4882a593Smuzhiyun #define CTRL_FILT_SENS(x) UPDATE(x, 13, 12) 64*4882a593Smuzhiyun #define VS_FILT_SENS(x) UPDATE(x, 11, 10) 65*4882a593Smuzhiyun #define HS_FILT_SENS(x) UPDATE(x, 9, 8) 66*4882a593Smuzhiyun #define DE_MEASURE_MODE(x) UPDATE(x, 7, 6) 67*4882a593Smuzhiyun #define DE_REGEN(x) UPDATE(x, 5, 5) 68*4882a593Smuzhiyun #define DE_FILTER_SENS(x) UPDATE(x, 4, 3) 69*4882a593Smuzhiyun #define HDMI_RX_HDMI_ERD_STS (HDMI_RX_BASE + 0x0088) 70*4882a593Smuzhiyun #define HDMI_RX_HDMI_SYNC_CTRL (HDMI_RX_BASE + 0x0090) 71*4882a593Smuzhiyun #define VS_POL_ADJ_MODE_MASK GENMASK(4, 3) 72*4882a593Smuzhiyun #define VS_POL_ADJ_MODE(x) UPDATE(x, 4, 3) 73*4882a593Smuzhiyun #define HS_POL_ADJ_MODE_MASK GENMASK(2, 1) 74*4882a593Smuzhiyun #define HS_POL_ADJ_MODE(x) UPDATE(x, 2, 1) 75*4882a593Smuzhiyun #define HDMI_RX_HDMI_CKM_EVLTM (HDMI_RX_BASE + 0x0094) 76*4882a593Smuzhiyun #define HDMI_RX_HDMI_CKM_F (HDMI_RX_BASE + 0x0098) 77*4882a593Smuzhiyun #define HDMI_RX_HDMI_CKM_RESULT (HDMI_RX_BASE + 0x009c) 78*4882a593Smuzhiyun #define HDMI_RX_HDMI_RESMPL_CTRL (HDMI_RX_BASE + 0x00a4) 79*4882a593Smuzhiyun #define HDMI_RX_HDMI_DCM_CTRL (HDMI_RX_BASE + 0x00a8) 80*4882a593Smuzhiyun #define DCM_DEFAULT_PHASE(x) UPDATE(x, 18, 18) 81*4882a593Smuzhiyun #define DCM_COLOUR_DEPTH_SEL(x) UPDATE(x, 12, 12) 82*4882a593Smuzhiyun #define DCM_COLOUR_DEPTH(x) UPDATE(x, 11, 8) 83*4882a593Smuzhiyun #define DCM_GCP_ZERO_FIELDS(x) UPDATE(x, 5, 2) 84*4882a593Smuzhiyun #define HDMI_VM_CFG_CH2 (HDMI_RX_BASE + 0x00b4) 85*4882a593Smuzhiyun #define HDMI_RX_HDCP_CTRL (HDMI_RX_BASE + 0x00c0) 86*4882a593Smuzhiyun #define HDCP_ENABLE_MASK BIT(24) 87*4882a593Smuzhiyun #define HDCP_ENABLE(x) UPDATE(x, 24, 24) 88*4882a593Smuzhiyun #define FREEZE_HDCP_FSM_MASK BIT(21) 89*4882a593Smuzhiyun #define FREEZE_HDCP_FSM(x) UPDATE(x, 21, 21) 90*4882a593Smuzhiyun #define FREEZE_HDCP_STATE_MASK GENMASK(20, 15) 91*4882a593Smuzhiyun #define FREEZE_HDCP_STATE(x) UPDATE(x, 20, 15) 92*4882a593Smuzhiyun #define HDCP_CTL_MASK GENMASK(9, 8) 93*4882a593Smuzhiyun #define HDCP_CTL(x) UPDATE(x, 9, 8) 94*4882a593Smuzhiyun #define HDCP_RI_RATE_MASK GENMASK(7, 6) 95*4882a593Smuzhiyun #define HDCP_RI_RATE(x) UPDATE(x, 7, 6) 96*4882a593Smuzhiyun #define HDMI_MODE_ENABLE_MASK BIT(2) 97*4882a593Smuzhiyun #define HDMI_MODE_ENABLE(x) UPDATE(x, 2, 2) 98*4882a593Smuzhiyun #define KEY_DECRIPT_ENABLE_MASK BIT(1) 99*4882a593Smuzhiyun #define KEY_DECRIPT_ENABLE(x) UPDATE(x, 1, 1) 100*4882a593Smuzhiyun #define HDCP_ENC_EN_MASK BIT(0) 101*4882a593Smuzhiyun #define HDCP_ENC_EN(x) UPDATE(x, 0, 0) 102*4882a593Smuzhiyun #define HDMI_RX_HDCP_SETTINGS (HDMI_RX_BASE + 0x00c4) 103*4882a593Smuzhiyun #define HDMI_RESERVED(x) UPDATE(x, 13, 13) 104*4882a593Smuzhiyun #define HDMI_RESERVED_MASK BIT(13) 105*4882a593Smuzhiyun #define FAST_I2C(x) UPDATE(x, 12, 12) 106*4882a593Smuzhiyun #define FAST_I2C_MASK BIT(12) 107*4882a593Smuzhiyun #define ONE_DOT_ONE(x) UPDATE(x, 9, 9) 108*4882a593Smuzhiyun #define ONE_DOT_ONE_MASK BIT(9) 109*4882a593Smuzhiyun #define FAST_REAUTH(x) UPDATE(x, 8, 8) 110*4882a593Smuzhiyun #define FAST_REAUTH_MASK BIT(8) 111*4882a593Smuzhiyun #define HDMI_RX_HDCP_SEED (HDMI_RX_BASE + 0x00c8) 112*4882a593Smuzhiyun #define HDMI_RX_HDCP_KIDX (HDMI_RX_BASE + 0x00d4) 113*4882a593Smuzhiyun #define HDMI_RX_HDCP_DBG (HDMI_RX_BASE + 0x00e0) 114*4882a593Smuzhiyun #define HDMI_RX_HDCP_AN0 (HDMI_RX_BASE + 0x00f0) 115*4882a593Smuzhiyun #define HDMI_RX_HDCP_STS (HDMI_RX_BASE + 0x00fc) 116*4882a593Smuzhiyun #define HDMI_RX_MD_HCTRL1 (HDMI_RX_BASE + 0x0140) 117*4882a593Smuzhiyun #define HACT_PIX_ITH(x) UPDATE(x, 10, 8) 118*4882a593Smuzhiyun #define HACT_PIX_SRC(x) UPDATE(x, 5, 5) 119*4882a593Smuzhiyun #define HTOT_PIX_SRC(x) UPDATE(x, 4, 4) 120*4882a593Smuzhiyun #define HDMI_RX_MD_HCTRL2 (HDMI_RX_BASE + 0x0144) 121*4882a593Smuzhiyun #define HS_CLK_ITH(x) UPDATE(x, 14, 12) 122*4882a593Smuzhiyun #define HTOT32_CLK_ITH(x) UPDATE(x, 9, 8) 123*4882a593Smuzhiyun #define VS_ACT_TIME(x) UPDATE(x, 5, 5) 124*4882a593Smuzhiyun #define HS_ACT_TIME(x) UPDATE(x, 4, 3) 125*4882a593Smuzhiyun #define H_START_POS(x) UPDATE(x, 1, 0) 126*4882a593Smuzhiyun #define HDMI_RX_MD_HT0 (HDMI_RX_BASE + 0x0148) 127*4882a593Smuzhiyun #define HDMI_RX_MD_HT1 (HDMI_RX_BASE + 0x014c) 128*4882a593Smuzhiyun #define HDMI_RX_MD_HACT_PX (HDMI_RX_BASE + 0x0150) 129*4882a593Smuzhiyun #define HDMI_RX_MD_VCTRL (HDMI_RX_BASE + 0x0158) 130*4882a593Smuzhiyun #define V_OFFS_LIN_MODE(x) UPDATE(x, 4, 4) 131*4882a593Smuzhiyun #define V_EDGE(x) UPDATE(x, 1, 1) 132*4882a593Smuzhiyun #define V_MODE(x) UPDATE(x, 0, 0) 133*4882a593Smuzhiyun #define HDMI_RX_MD_VSC (HDMI_RX_BASE + 0x015c) 134*4882a593Smuzhiyun #define HDMI_RX_MD_VOL (HDMI_RX_BASE + 0x0164) 135*4882a593Smuzhiyun #define HDMI_RX_MD_VAL (HDMI_RX_BASE + 0x0168) 136*4882a593Smuzhiyun #define HDMI_RX_MD_VTH (HDMI_RX_BASE + 0x016c) 137*4882a593Smuzhiyun #define VOFS_LIN_ITH(x) UPDATE(x, 11, 10) 138*4882a593Smuzhiyun #define VACT_LIN_ITH(x) UPDATE(x, 9, 8) 139*4882a593Smuzhiyun #define VTOT_LIN_ITH(x) UPDATE(x, 7, 6) 140*4882a593Smuzhiyun #define VS_CLK_ITH(x) UPDATE(x, 5, 3) 141*4882a593Smuzhiyun #define VTOT_CLK_ITH(x) UPDATE(x, 2, 0) 142*4882a593Smuzhiyun #define HDMI_RX_MD_VTL (HDMI_RX_BASE + 0x0170) 143*4882a593Smuzhiyun #define HDMI_RX_MD_IL_POL (HDMI_RX_BASE + 0x017c) 144*4882a593Smuzhiyun #define FAFIELDDET_EN(x) UPDATE(x, 2, 2) 145*4882a593Smuzhiyun #define FIELD_POL_MODE(x) UPDATE(x, 1, 0) 146*4882a593Smuzhiyun #define HDMI_RX_MD_STS (HDMI_RX_BASE + 0x0180) 147*4882a593Smuzhiyun #define ILACE_STS BIT(3) 148*4882a593Smuzhiyun #define HDMI_RX_AUD_CTRL (HDMI_RX_BASE + 0x0200) 149*4882a593Smuzhiyun #define HDMI_RX_AUD_PLL_CTRL (HDMI_RX_BASE + 0x0208) 150*4882a593Smuzhiyun #define PLL_LOCK_TOGGLE_DIV_MASK GENMASK(27, 24) 151*4882a593Smuzhiyun #define PLL_LOCK_TOGGLE_DIV(x) UPDATE(x, 27, 24) 152*4882a593Smuzhiyun #define HDMI_RX_AUD_CLK_CTRL (HDMI_RX_BASE + 0x0214) 153*4882a593Smuzhiyun #define CTS_N_REF_MASK BIT(4) 154*4882a593Smuzhiyun #define CTS_N_REF(x) UPDATE(x, 4, 4) 155*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_CTRL (HDMI_RX_BASE + 0x0240) 156*4882a593Smuzhiyun #define AFIF_SUBPACKET_DESEL_MASK GENMASK(27, 24) 157*4882a593Smuzhiyun #define AFIF_SUBPACKET_DESEL(x) UPDATE(x, 27, 24) 158*4882a593Smuzhiyun #define AFIF_SUBPACKETS_MASK BIT(16) 159*4882a593Smuzhiyun #define AFIF_SUBPACKETS(x) UPDATE(x, 16, 16) 160*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_TH (HDMI_RX_BASE + 0x0244) 161*4882a593Smuzhiyun #define AFIF_TH_START_MASK GENMASK(26, 18) 162*4882a593Smuzhiyun #define AFIF_TH_START(x) UPDATE(x, 26, 18) 163*4882a593Smuzhiyun #define AFIF_TH_MAX_MASK GENMASK(17, 9) 164*4882a593Smuzhiyun #define AFIF_TH_MAX(x) UPDATE(x, 17, 9) 165*4882a593Smuzhiyun #define AFIF_TH_MIN_MASK GENMASK(8, 0) 166*4882a593Smuzhiyun #define AFIF_TH_MIN(x) UPDATE(x, 8, 0) 167*4882a593Smuzhiyun #define HDMI_RX_AUD_CHEXTR_CTRL (HDMI_RX_BASE + 0x0254) 168*4882a593Smuzhiyun #define AUD_LAYOUT_CTRL(x) UPDATE(x, 1, 0) 169*4882a593Smuzhiyun #define HDMI_RX_AUD_MUTE_CTRL (HDMI_RX_BASE + 0x0258) 170*4882a593Smuzhiyun #define APPLY_INT_MUTE(x) UPDATE(x, 31, 31) 171*4882a593Smuzhiyun #define APORT_SHDW_CTRL(x) UPDATE(x, 22, 21) 172*4882a593Smuzhiyun #define AUTO_ACLK_MUTE(x) UPDATE(x, 20, 19) 173*4882a593Smuzhiyun #define AUD_MUTE_SPEED(x) UPDATE(x, 16, 10) 174*4882a593Smuzhiyun #define AUD_AVMUTE_EN(x) UPDATE(x, 7, 7) 175*4882a593Smuzhiyun #define AUD_MUTE_SEL(x) UPDATE(x, 6, 5) 176*4882a593Smuzhiyun #define AUD_MUTE_MODE(x) UPDATE(x, 4, 3) 177*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_FILLSTS1 (HDMI_RX_BASE + 0x025c) 178*4882a593Smuzhiyun #define HDMI_RX_AUD_SAO_CTRL (HDMI_RX_BASE + 0x0260) 179*4882a593Smuzhiyun #define I2S_ENABLE_BITS_MASK GENMASK(10, 5) 180*4882a593Smuzhiyun #define I2S_ENABLE_BITS(x) UPDATE(x, 10, 5) 181*4882a593Smuzhiyun #define I2S_LPCM_BPCUV_MASK BIT(11) 182*4882a593Smuzhiyun #define I2S_LPCM_BPCUV(x) UPDATE(x, 11, 11) 183*4882a593Smuzhiyun #define I2S_32_16_MASK BIT(0) 184*4882a593Smuzhiyun #define I2S_32_16(x) UPDATE(x, 0, 0) 185*4882a593Smuzhiyun #define HDMI_RX_AUD_PAO_CTRL (HDMI_RX_BASE + 0x0264) 186*4882a593Smuzhiyun #define PAO_RATE(x) UPDATE(x, 17, 16) 187*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_STS (HDMI_RX_BASE + 0x027c) 188*4882a593Smuzhiyun #define HDMI_RX_AUDPLL_GEN_CTS (HDMI_RX_BASE + 0x0280) 189*4882a593Smuzhiyun #define HDMI_RX_AUDPLL_GEN_N (HDMI_RX_BASE + 0x0284) 190*4882a593Smuzhiyun #define HDMI_RX_SNPS_PHYG3_CTRL (HDMI_RX_BASE + 0x02c0) 191*4882a593Smuzhiyun #define PORTSELECT(x) UPDATE(x, 3, 2) 192*4882a593Smuzhiyun #define HDMI_RX_PDEC_CTRL (HDMI_RX_BASE + 0x0300) 193*4882a593Smuzhiyun #define PFIFO_STORE_FILTER_EN_MASK BIT(31) 194*4882a593Smuzhiyun #define PFIFO_STORE_FILTER_EN(x) UPDATE(x, 31, 31) 195*4882a593Smuzhiyun #define PFIFO_STORE_DRM_IF_MASK BIT(29) 196*4882a593Smuzhiyun #define PFIFO_STORE_DRM_IF(x) UPDATE(x, 29, 29) 197*4882a593Smuzhiyun #define PFIFO_STORE_AMP_MASK BIT(28) 198*4882a593Smuzhiyun #define PFIFO_STORE_AMP(x) UPDATE(x, 28, 28) 199*4882a593Smuzhiyun #define PFIFO_STORE_NTSCVBI_IF_MASK BIT(27) 200*4882a593Smuzhiyun #define PFIFO_STORE_NTSCVBI_IF(x) UPDATE(x, 27, 27) 201*4882a593Smuzhiyun #define PFIFO_STORE_MPEGS_IF_MASK BIT(26) 202*4882a593Smuzhiyun #define PFIFO_STORE_MPEGS_IF(x) UPDATE(x, 26, 26) 203*4882a593Smuzhiyun #define PFIFO_STORE_AUD_IF_MASK BIT(25) 204*4882a593Smuzhiyun #define PFIFO_STORE_AUD_IF(x) UPDATE(x, 25, 25) 205*4882a593Smuzhiyun #define PFIFO_STORE_SPD_IF_MASK BIT(24) 206*4882a593Smuzhiyun #define PFIFO_STORE_SPD_IF(x) UPDATE(x, 24, 24) 207*4882a593Smuzhiyun #define PFIFO_STORE_AVI_IF_MASK BIT(23) 208*4882a593Smuzhiyun #define PFIFO_STORE_AVI_IF(x) UPDATE(x, 23, 23) 209*4882a593Smuzhiyun #define PFIFO_STORE_VS_IF_MASK BIT(22) 210*4882a593Smuzhiyun #define PFIFO_STORE_VS_IF(x) UPDATE(x, 22, 22) 211*4882a593Smuzhiyun #define PFIFO_STORE_GMTP_MASK BIT(21) 212*4882a593Smuzhiyun #define PFIFO_STORE_GMTP(x) UPDATE(x, 21, 21) 213*4882a593Smuzhiyun #define PFIFO_STORE_ISRC2_MASK BIT(20) 214*4882a593Smuzhiyun #define PFIFO_STORE_ISRC2(x) UPDATE(x, 20, 20) 215*4882a593Smuzhiyun #define PFIFO_STORE_ISRC1_MASK BIT(19) 216*4882a593Smuzhiyun #define PFIFO_STORE_ISRC1(x) UPDATE(x, 19, 19) 217*4882a593Smuzhiyun #define PFIFO_STORE_ACP_MASK BIT(18) 218*4882a593Smuzhiyun #define PFIFO_STORE_ACP(x) UPDATE(x, 18, 18) 219*4882a593Smuzhiyun #define PFIFO_STORE_GCP_MASK BIT(17) 220*4882a593Smuzhiyun #define PFIFO_STORE_GCP(x) UPDATE(x, 17, 17) 221*4882a593Smuzhiyun #define PFIFO_STORE_ACR_MASK BIT(16) 222*4882a593Smuzhiyun #define PFIFO_STORE_ACR(x) UPDATE(x, 16, 16) 223*4882a593Smuzhiyun #define GCPFORCE_SETAVMUTE_MASK BIT(13) 224*4882a593Smuzhiyun #define GCPFORCE_SETAVMUTE(x) UPDATE(x, 13, 13) 225*4882a593Smuzhiyun #define PDEC_BCH_EN_MASK BIT(0) 226*4882a593Smuzhiyun #define PDEC_BCH_EN(x) UPDATE(x, 0, 0) 227*4882a593Smuzhiyun #define HDMI_RX_PDEC_FIFO_CFG (HDMI_RX_BASE + 0x0304) 228*4882a593Smuzhiyun #define HDMI_RX_PDEC_AUDIODET_CTRL (HDMI_RX_BASE + 0x0310) 229*4882a593Smuzhiyun #define AUDIODET_THRESHOLD(x) UPDATE(x, 13, 9) 230*4882a593Smuzhiyun #define HDMI_RX_PDEC_ACRM_CTRL (HDMI_RX_BASE + 0x0330) 231*4882a593Smuzhiyun #define DELTACTS_IRQTRIG(x) UPDATE(x, 4, 2) 232*4882a593Smuzhiyun #define HDMI_RX_PDEC_ERR_FILTER (HDMI_RX_BASE + 0x033c) 233*4882a593Smuzhiyun #define HDMI_RX_PDEC_ASP_CTRL (HDMI_RX_BASE + 0x0340) 234*4882a593Smuzhiyun #define HDMI_RX_PDEC_STS (HDMI_RX_BASE + 0x0360) 235*4882a593Smuzhiyun #define DVI_DET BIT(28) 236*4882a593Smuzhiyun #define HDMI_RX_PDEC_GCP_AVMUTE (HDMI_RX_BASE + 0x0380) 237*4882a593Smuzhiyun #define HDMI_RX_PDEC_AVI_PB (HDMI_RX_BASE + 0x03a4) 238*4882a593Smuzhiyun #define VIDEO_FORMAT_MASK GENMASK(6, 5) 239*4882a593Smuzhiyun #define VIDEO_FORMAT(x) UPDATE(x, 6, 5) 240*4882a593Smuzhiyun #define ACT_INFO_PRESENT_MASK BIT(4) 241*4882a593Smuzhiyun #define HDMI_RX_PDEC_ACR_CTS (HDMI_RX_BASE + 0x0390) 242*4882a593Smuzhiyun #define HDMI_RX_PDEC_ACR_N (HDMI_RX_BASE + 0x0394) 243*4882a593Smuzhiyun #define HDMI_RX_PDEC_AIF_CTRL (HDMI_RX_BASE + 0x03c0) 244*4882a593Smuzhiyun #define FC_LFE_EXCHG(x) UPDATE(x, 18, 18) 245*4882a593Smuzhiyun #define HDMI_RX_PDEC_AIF_PB0 (HDMI_RX_BASE + 0x03c8) 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun #define HDMI_RX_HDMI20_CONTROL (HDMI_RX_BASE + 0x0800) 248*4882a593Smuzhiyun #define PVO1UNMUTE(x) UPDATE(x, 29, 29) 249*4882a593Smuzhiyun #define PIXELMODE(x) UPDATE(x, 28, 28) 250*4882a593Smuzhiyun #define CTRLCHECKEN(x) UPDATE(x, 8, 8) 251*4882a593Smuzhiyun #define SCDC_ENABLE(x) UPDATE(x, 4, 4) 252*4882a593Smuzhiyun #define SCRAMBEN_SEL(x) UPDATE(x, 1, 0) 253*4882a593Smuzhiyun #define HDMI_RX_SCDC_I2CCONFIG (HDMI_RX_BASE + 0x0804) 254*4882a593Smuzhiyun #define I2CSPIKESUPPR(x) UPDATE(x, 25, 24) 255*4882a593Smuzhiyun #define HDMI_RX_SCDC_CONFIG (HDMI_RX_BASE + 0x0808) 256*4882a593Smuzhiyun #define POWERPROVIDED_MASK BIT(0) 257*4882a593Smuzhiyun #define HDMI_RX_CHLOCK_CONFIG (HDMI_RX_BASE + 0x080c) 258*4882a593Smuzhiyun #define CHLOCKMAXER(x) UPDATE(x, 29, 20) 259*4882a593Smuzhiyun #define MILISECTIMERLIMIT(x) UPDATE(x, 15, 0) 260*4882a593Smuzhiyun #define HDMI_RX_HDCP22_CONTROL (HDMI_RX_BASE + 0x081c) 261*4882a593Smuzhiyun #define HDMI_RX_SCDC_REGS0 (HDMI_RX_BASE + 0x0820) 262*4882a593Smuzhiyun #define HDMI_RX_SCDC_REGS1 (HDMI_RX_BASE + 0x0824) 263*4882a593Smuzhiyun #define HDMI_RX_SCDC_REGS2 (HDMI_RX_BASE + 0x0828) 264*4882a593Smuzhiyun #define HDMI_RX_SCDC_REGS3 (HDMI_RX_BASE + 0x082c) 265*4882a593Smuzhiyun #define HDMI_RX_SCDC_WRDATA0 (HDMI_RX_BASE + 0x0860) 266*4882a593Smuzhiyun #define MANUFACTUREROUI(x) UPDATE(x, 31, 8) 267*4882a593Smuzhiyun #define SINKVERSION(x) UPDATE(x, 7, 0) 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun #define HDMI_RX_HDMI2_IEN_CLR (HDMI_RX_BASE + 0x0f60) 270*4882a593Smuzhiyun #define HDMI_RX_HDMI2_ISTS (HDMI_RX_BASE + 0x0f68) 271*4882a593Smuzhiyun #define HDMI_RX_PDEC_IEN_CLR (HDMI_RX_BASE + 0x0f78) 272*4882a593Smuzhiyun #define ACR_N_CHG_ICLR BIT(23) 273*4882a593Smuzhiyun #define ACR_CTS_CHG_ICLR BIT(22) 274*4882a593Smuzhiyun #define GCP_AV_MUTE_CHG_ENCLR BIT(21) 275*4882a593Smuzhiyun #define AIF_RCV_ENCLR BIT(19) 276*4882a593Smuzhiyun #define AVI_RCV_ENCLR BIT(18) 277*4882a593Smuzhiyun #define GCP_RCV_ENCLR BIT(16) 278*4882a593Smuzhiyun #define HDMI_RX_PDEC_IEN_SET (HDMI_RX_BASE + 0x0f7c) 279*4882a593Smuzhiyun #define ACR_N_CHG_IEN BIT(23) 280*4882a593Smuzhiyun #define ACR_CTS_CHG_IEN BIT(22) 281*4882a593Smuzhiyun #define GCP_AV_MUTE_CHG_ENSET BIT(21) 282*4882a593Smuzhiyun #define AIF_RCV_ENSET BIT(19) 283*4882a593Smuzhiyun #define AVI_RCV_ENSET BIT(18) 284*4882a593Smuzhiyun #define GCP_RCV_ENSET BIT(16) 285*4882a593Smuzhiyun #define AMP_RCV_ENSET BIT(14) 286*4882a593Smuzhiyun #define HDMI_RX_PDEC_ISTS (HDMI_RX_BASE + 0x0f80) 287*4882a593Smuzhiyun #define GCP_AV_MUTE_CHG_ISTS BIT(21) 288*4882a593Smuzhiyun #define AIF_RCV_ISTS BIT(19) 289*4882a593Smuzhiyun #define AVI_RCV_ISTS BIT(18) 290*4882a593Smuzhiyun #define GCP_RCV_ISTS BIT(16) 291*4882a593Smuzhiyun #define AMP_RCV_ISTS BIT(14) 292*4882a593Smuzhiyun #define HDMI_RX_PDEC_IEN (HDMI_RX_BASE + 0x0f84) 293*4882a593Smuzhiyun #define HDMI_RX_PDEC_ICLR (HDMI_RX_BASE + 0x0f88) 294*4882a593Smuzhiyun #define HDMI_RX_PDEC_ISET (HDMI_RX_BASE + 0x0f8c) 295*4882a593Smuzhiyun #define HDMI_RX_AUD_CEC_IEN_CLR (HDMI_RX_BASE + 0x0f90) 296*4882a593Smuzhiyun #define HDMI_RX_AUD_CEC_IEN (HDMI_RX_BASE + 0x0f9c) 297*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_IEN_CLR (HDMI_RX_BASE + 0x0fa8) 298*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_IEN_SET (HDMI_RX_BASE + 0x0fac) 299*4882a593Smuzhiyun #define AFIF_OVERFL_ENSET BIT(4) 300*4882a593Smuzhiyun #define AFIF_UNDERFL_ENSET BIT(3) 301*4882a593Smuzhiyun #define AFIF_THS_PASS_ENSET BIT(2) 302*4882a593Smuzhiyun #define AFIF_TH_MAX_ENSET BIT(1) 303*4882a593Smuzhiyun #define AFIF_TH_MIN_ENSET BIT(0) 304*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_ISTS (HDMI_RX_BASE + 0x0fb0) 305*4882a593Smuzhiyun #define AFIF_OVERFL_ISTS BIT(4) 306*4882a593Smuzhiyun #define AFIF_UNDERFL_ISTS BIT(3) 307*4882a593Smuzhiyun #define AFIF_THS_PASS_ISTS BIT(2) 308*4882a593Smuzhiyun #define AFIF_TH_MAX_ISTS BIT(1) 309*4882a593Smuzhiyun #define AFIF_TH_MIN_ISTS BIT(0) 310*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_IEN (HDMI_RX_BASE + 0x0fb4) 311*4882a593Smuzhiyun #define HDMI_RX_AUD_FIFO_ICLR (HDMI_RX_BASE + 0x0fb8) 312*4882a593Smuzhiyun #define HDMI_RX_MD_IEN_CLR (HDMI_RX_BASE + 0x0fc0) 313*4882a593Smuzhiyun #define HDMI_RX_MD_IEN_SET (HDMI_RX_BASE + 0x0fc4) 314*4882a593Smuzhiyun #define VACT_LIN_ENSET BIT(9) 315*4882a593Smuzhiyun #define HACT_PIX_ENSET BIT(6) 316*4882a593Smuzhiyun #define HS_CLK_ENSET BIT(5) 317*4882a593Smuzhiyun #define DE_ACTIVITY_ENSET BIT(2) 318*4882a593Smuzhiyun #define VS_ACT_ENSET BIT(1) 319*4882a593Smuzhiyun #define HS_ACT_ENSET BIT(0) 320*4882a593Smuzhiyun #define HDMI_RX_MD_ISTS (HDMI_RX_BASE + 0x0fc8) 321*4882a593Smuzhiyun #define VACT_LIN_ISTS BIT(9) 322*4882a593Smuzhiyun #define HACT_PIX_ISTS BIT(6) 323*4882a593Smuzhiyun #define HS_CLK_ISTS BIT(5) 324*4882a593Smuzhiyun #define DE_ACTIVITY_ISTS BIT(2) 325*4882a593Smuzhiyun #define VS_ACT_ISTS BIT(1) 326*4882a593Smuzhiyun #define HS_ACT_ISTS BIT(0) 327*4882a593Smuzhiyun #define HDMI_RX_MD_IEN (HDMI_RX_BASE + 0x0fcc) 328*4882a593Smuzhiyun #define HDMI_RX_MD_ICLR (HDMI_RX_BASE + 0x0fd0) 329*4882a593Smuzhiyun #define HDMI_RX_MD_ISET (HDMI_RX_BASE + 0x0fd4) 330*4882a593Smuzhiyun #define HDMI_RX_HDMI_IEN_CLR (HDMI_RX_BASE + 0x0fd8) 331*4882a593Smuzhiyun #define CLK_CHANGE_ENCLR BIT(6) 332*4882a593Smuzhiyun #define HDMI_RX_HDMI_IEN_SET (HDMI_RX_BASE + 0x0fdc) 333*4882a593Smuzhiyun #define CLK_CHANGE_ENSET BIT(6) 334*4882a593Smuzhiyun #define HDMI_RX_HDMI_ISTS (HDMI_RX_BASE + 0x0fe0) 335*4882a593Smuzhiyun #define CLK_CHANGE_ISTS BIT(6) 336*4882a593Smuzhiyun #define HDMI_RX_HDMI_IEN (HDMI_RX_BASE + 0x0fe4) 337*4882a593Smuzhiyun #define HDMI_RX_HDMI_ICLR (HDMI_RX_BASE + 0x0fe8) 338*4882a593Smuzhiyun #define HDMI_RX_HDMI_ISET (HDMI_RX_BASE + 0x0fec) 339*4882a593Smuzhiyun #define CLK_CHANGE_CLR BIT(6) 340*4882a593Smuzhiyun #define HDCP_DKSET_DONE_ISTS_MASK BIT(31) 341*4882a593Smuzhiyun #define HDMI_RX_DMI_SW_RST (HDMI_RX_BASE + 0x0ff0) 342*4882a593Smuzhiyun #define HDMI_RX_DMI_DISABLE_IF (HDMI_RX_BASE + 0x0ff4) 343*4882a593Smuzhiyun #define VID_ENABLE(x) UPDATE(x, 7, 7) 344*4882a593Smuzhiyun #define VID_ENABLE_MASK BIT(7) 345*4882a593Smuzhiyun #define AUD_ENABLE(x) UPDATE(x, 4, 4) 346*4882a593Smuzhiyun #define AUD_ENABLE_MASK BIT(4) 347*4882a593Smuzhiyun #define HDMI_ENABLE(x) UPDATE(x, 2, 2) 348*4882a593Smuzhiyun #define HDMI_ENABLE_MASK BIT(2) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun #define HDMI_RX_IVECTOR_INDEX_CB (HDMI_RX_BASE + 0x32e4) 351*4882a593Smuzhiyun #define HDMI_RX_MAX_REGISTER HDMI_RX_IVECTOR_INDEX_CB 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun #define HDCP_KEY_KSV_SIZE 8 354*4882a593Smuzhiyun #define HDCP_PRIVATE_KEY_SIZE 280 355*4882a593Smuzhiyun #define HDCP_KEY_SHA_SIZE 20 356*4882a593Smuzhiyun #define HDCP_KEY_SIZE 308 357*4882a593Smuzhiyun #define HDCP_KEY_SEED_SIZE 2 358*4882a593Smuzhiyun #define KSV_LEN 5 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun #define HDMIRX_HDCP1X_ID 13 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun struct hdcp_keys { 363*4882a593Smuzhiyun u8 KSV[HDCP_KEY_KSV_SIZE]; 364*4882a593Smuzhiyun u8 devicekey[HDCP_PRIVATE_KEY_SIZE]; 365*4882a593Smuzhiyun u8 sha[HDCP_KEY_SHA_SIZE]; 366*4882a593Smuzhiyun }; 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun struct rk628_hdcp { 369*4882a593Smuzhiyun char *seeds; 370*4882a593Smuzhiyun struct hdcp_keys *keys; 371*4882a593Smuzhiyun }; 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun void rk628_hdmirx_set_hdcp(struct rk628 *rk628, struct rk628_hdcp *hdcp, bool en); 374*4882a593Smuzhiyun void rk628_hdmirx_controller_setup(struct rk628 *rk628); 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun typedef void *HAUDINFO; 377*4882a593Smuzhiyun HAUDINFO rk628_hdmirx_audioinfo_alloc(struct device *dev, 378*4882a593Smuzhiyun struct mutex *confctl_mutex, 379*4882a593Smuzhiyun struct rk628 *rk628, 380*4882a593Smuzhiyun bool en); 381*4882a593Smuzhiyun void rk628_hdmirx_audio_destroy(HAUDINFO info); 382*4882a593Smuzhiyun void rk628_hdmirx_audio_setup(HAUDINFO info); 383*4882a593Smuzhiyun void rk628_hdmirx_audio_cancel_work_audio(HAUDINFO info, bool sync); 384*4882a593Smuzhiyun void rk628_hdmirx_audio_cancel_work_rate_change(HAUDINFO info, bool sync); 385*4882a593Smuzhiyun bool rk628_hdmirx_audio_present(HAUDINFO info); 386*4882a593Smuzhiyun int rk628_hdmirx_audio_fs(HAUDINFO info); 387*4882a593Smuzhiyun void rk628_hdmirx_audio_i2s_ctrl(HAUDINFO info, bool enable); 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun /* for audio isr process */ 390*4882a593Smuzhiyun bool rk628_audio_fifoints_enabled(HAUDINFO info); 391*4882a593Smuzhiyun bool rk628_audio_ctsnints_enabled(HAUDINFO info); 392*4882a593Smuzhiyun void rk628_csi_isr_ctsn(HAUDINFO info, u32 pdec_ints); 393*4882a593Smuzhiyun void rk628_csi_isr_fifoints(HAUDINFO info, u32 fifo_ints); 394*4882a593Smuzhiyun int rk628_is_avi_ready(struct rk628 *rk628, bool avi_rcv_rdy); 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun #endif 397