1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2020 Rockchip Electronics Co. Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: Chen Shunqing <csq@rock-chips.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef HDMITX_H 9*4882a593Smuzhiyun #define HDMITX_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "rk628.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define HDMI_BASE 0x70000 14*4882a593Smuzhiyun #define HDMI_REG_STRIDE 4 15*4882a593Smuzhiyun #define HDMITX_REG(x) ((x * HDMI_REG_STRIDE) + HDMI_BASE) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define DDC_SEGMENT_ADDR 0x30 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun enum PWR_MODE { 20*4882a593Smuzhiyun NORMAL, 21*4882a593Smuzhiyun LOWER_PWR, 22*4882a593Smuzhiyun }; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define HDMI_SCL_RATE (100 * 1000) 25*4882a593Smuzhiyun #define DDC_BUS_FREQ_L HDMITX_REG(0x4b) 26*4882a593Smuzhiyun #define DDC_BUS_FREQ_H HDMITX_REG(0x4c) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define HDMI_SYS_CTRL HDMITX_REG(0x00) 29*4882a593Smuzhiyun #define RST_ANALOG_MASK BIT(6) 30*4882a593Smuzhiyun #define NOT_RST_ANALOG(x) UPDATE(x, 6, 6) 31*4882a593Smuzhiyun #define RST_DIGITAL_MASK BIT(5) 32*4882a593Smuzhiyun #define NOT_RST_DIGITAL(x) UPDATE(x, 5, 5) 33*4882a593Smuzhiyun #define REG_CLK_INV_MASK BIT(4) 34*4882a593Smuzhiyun #define REG_CLK_INV(x) UPDATE(x, 4, 4) 35*4882a593Smuzhiyun #define VCLK_INV_MASK BIT(3) 36*4882a593Smuzhiyun #define VCLK_INV(x) UPDATE(x, 3, 3) 37*4882a593Smuzhiyun #define REG_CLK_SOURCE_MASK BIT(2) 38*4882a593Smuzhiyun #define REG_CLK_SOURCE(x) UPDATE(x, 2, 2) 39*4882a593Smuzhiyun #define POWER_MASK BIT(1) 40*4882a593Smuzhiyun #define PWR_OFF(x) UPDATE(x, 1, 1) 41*4882a593Smuzhiyun #define INT_POL_MASK BIT(0) 42*4882a593Smuzhiyun #define INT_POL(x) UPDATE(x, 0, 0) 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL1 HDMITX_REG(0x01) 45*4882a593Smuzhiyun #define VIDEO_INPUT_FORMAT_MASK GENMASK(3, 1) 46*4882a593Smuzhiyun #define VIDEO_INPUT_SDR_RGB444 UPDATE(0x0, 3, 1) 47*4882a593Smuzhiyun #define VIDEO_INPUT_DDR_RGB444 UPDATE(0x5, 3, 1) 48*4882a593Smuzhiyun #define VIDEO_INPUT_DDR_YCBCR422 UPDATE(0x6, 3, 1) 49*4882a593Smuzhiyun #define DE_SOURCE_MASK BIT(0) 50*4882a593Smuzhiyun #define DE_SOURCE(x) UPDATE(x, 0, 0) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL2 HDMITX_REG(0x02) 53*4882a593Smuzhiyun #define VIDEO_OUTPUT_COLOR_MASK GENMASK(7, 6) 54*4882a593Smuzhiyun #define VIDEO_OUTPUT_RRGB444 UPDATE(0x0, 7, 6) 55*4882a593Smuzhiyun #define VIDEO_OUTPUT_YCBCR444 UPDATE(0x1, 7, 6) 56*4882a593Smuzhiyun #define VIDEO_OUTPUT_YCBCR422 UPDATE(0x2, 7, 6) 57*4882a593Smuzhiyun #define VIDEO_INPUT_BITS_MASK GENMASK(5, 4) 58*4882a593Smuzhiyun #define VIDEO_INPUT_12BITS UPDATE(0x0, 5, 4) 59*4882a593Smuzhiyun #define VIDEO_INPUT_10BITS UPDATE(0x1, 5, 4) 60*4882a593Smuzhiyun #define VIDEO_INPUT_REVERT UPDATE(0x2, 5, 4) 61*4882a593Smuzhiyun #define VIDEO_INPUT_8BITS UPDATE(0x3, 5, 4) 62*4882a593Smuzhiyun #define VIDEO_INPUT_CSP_MASK BIT(1) 63*4882a593Smuzhiyun #define VIDEO_INPUT_CSP(x) UPDATE(x, 0, 0) 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL HDMITX_REG(0x03) 66*4882a593Smuzhiyun #define VIDEO_AUTO_CSC_MASK BIT(7) 67*4882a593Smuzhiyun #define VIDEO_AUTO_CSC(x) UPDATE(x, 7, 7) 68*4882a593Smuzhiyun #define VIDEO_C0_C2_SWAP_MASK BIT(0) 69*4882a593Smuzhiyun #define VIDEO_C0_C2_SWAP(x) UPDATE(x, 0, 0) 70*4882a593Smuzhiyun enum { 71*4882a593Smuzhiyun C0_C2_CHANGE_ENABLE = 0, 72*4882a593Smuzhiyun C0_C2_CHANGE_DISABLE = 1, 73*4882a593Smuzhiyun AUTO_CSC_DISABLE = 0, 74*4882a593Smuzhiyun AUTO_CSC_ENABLE = 1, 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL3 HDMITX_REG(0x04) 78*4882a593Smuzhiyun #define COLOR_DEPTH_NOT_INDICATED_MASK BIT(4) 79*4882a593Smuzhiyun #define COLOR_DEPTH_NOT_INDICATED(x) UPDATE(x, 4, 4) 80*4882a593Smuzhiyun #define SOF_MASK BIT(3) 81*4882a593Smuzhiyun #define SOF_DISABLE(x) UPDATE(x, 3, 3) 82*4882a593Smuzhiyun #define CSC_MASK BIT(0) 83*4882a593Smuzhiyun #define CSC_ENABLE(x) UPDATE(x, 0, 0) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #define HDMI_AV_MUTE HDMITX_REG(0x05) 86*4882a593Smuzhiyun #define AVMUTE_CLEAR_MASK BIT(7) 87*4882a593Smuzhiyun #define AVMUTE_CLEAR(x) UPDATE(x, 7, 7) 88*4882a593Smuzhiyun #define AVMUTE_ENABLE_MASK BIT(6) 89*4882a593Smuzhiyun #define AVMUTE_ENABLE(x) UPDATE(x, 6, 6) 90*4882a593Smuzhiyun #define AUDIO_PD_MASK BIT(2) 91*4882a593Smuzhiyun #define AUDIO_PD(x) UPDATE(x, 2, 2) 92*4882a593Smuzhiyun #define AUDIO_MUTE_MASK BIT(1) 93*4882a593Smuzhiyun #define AUDIO_MUTE(x) UPDATE(x, 1, 1) 94*4882a593Smuzhiyun #define VIDEO_BLACK_MASK BIT(0) 95*4882a593Smuzhiyun #define VIDEO_MUTE(x) UPDATE(x, 0, 0) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define HDMI_VIDEO_TIMING_CTL HDMITX_REG(0x08) 98*4882a593Smuzhiyun #define HSYNC_POLARITY(x) UPDATE(x, 3, 3) 99*4882a593Smuzhiyun #define VSYNC_POLARITY(x) UPDATE(x, 2, 2) 100*4882a593Smuzhiyun #define INETLACE(x) UPDATE(x, 1, 1) 101*4882a593Smuzhiyun #define EXTERANL_VIDEO(x) UPDATE(x, 0, 0) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HTOTAL_L HDMITX_REG(0x09) 104*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HTOTAL_H HDMITX_REG(0x0a) 105*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HBLANK_L HDMITX_REG(0x0b) 106*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HBLANK_H HDMITX_REG(0x0c) 107*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDELAY_L HDMITX_REG(0x0d) 108*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDELAY_H HDMITX_REG(0x0e) 109*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDURATION_L HDMITX_REG(0x0f) 110*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDURATION_H HDMITX_REG(0x10) 111*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VTOTAL_L HDMITX_REG(0x11) 112*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VTOTAL_H HDMITX_REG(0x12) 113*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VBLANK HDMITX_REG(0x13) 114*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VDELAY HDMITX_REG(0x14) 115*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VDURATION HDMITX_REG(0x15) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define HDMI_VIDEO_CSC_COEF HDMITX_REG(0x18) 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define HDMI_AUDIO_CTRL1 HDMITX_REG(0x35) 120*4882a593Smuzhiyun enum { 121*4882a593Smuzhiyun CTS_SOURCE_INTERNAL = 0, 122*4882a593Smuzhiyun CTS_SOURCE_EXTERNAL = 1, 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define CTS_SOURCE(x) UPDATE(x, 7, 7) 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun enum { 128*4882a593Smuzhiyun DOWNSAMPLE_DISABLE = 0, 129*4882a593Smuzhiyun DOWNSAMPLE_1_2 = 1, 130*4882a593Smuzhiyun DOWNSAMPLE_1_4 = 2, 131*4882a593Smuzhiyun }; 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun #define DOWN_SAMPLE(x) UPDATE(x, 6, 5) 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun enum { 136*4882a593Smuzhiyun AUDIO_SOURCE_IIS = 0, 137*4882a593Smuzhiyun AUDIO_SOURCE_SPDIF = 1, 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun #define AUDIO_SOURCE(x) UPDATE(x, 4, 3) 141*4882a593Smuzhiyun #define MCLK_ENABLE(x) UPDATE(x, 2, 2) 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun enum { 144*4882a593Smuzhiyun MCLK_128FS = 0, 145*4882a593Smuzhiyun MCLK_256FS = 1, 146*4882a593Smuzhiyun MCLK_384FS = 2, 147*4882a593Smuzhiyun MCLK_512FS = 3, 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun #define MCLK_RATIO(x) UPDATE(x, 1, 0) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define AUDIO_SAMPLE_RATE HDMITX_REG(0x37) 153*4882a593Smuzhiyun enum { 154*4882a593Smuzhiyun AUDIO_32K = 0x3, 155*4882a593Smuzhiyun AUDIO_441K = 0x0, 156*4882a593Smuzhiyun AUDIO_48K = 0x2, 157*4882a593Smuzhiyun AUDIO_882K = 0x8, 158*4882a593Smuzhiyun AUDIO_96K = 0xa, 159*4882a593Smuzhiyun AUDIO_1764K = 0xc, 160*4882a593Smuzhiyun AUDIO_192K = 0xe, 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun #define AUDIO_I2S_MODE HDMITX_REG(0x38) 164*4882a593Smuzhiyun enum { 165*4882a593Smuzhiyun I2S_CHANNEL_1_2 = 1, 166*4882a593Smuzhiyun I2S_CHANNEL_3_4 = 3, 167*4882a593Smuzhiyun I2S_CHANNEL_5_6 = 7, 168*4882a593Smuzhiyun I2S_CHANNEL_7_8 = 0xf 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun #define I2S_CHANNEL(x) UPDATE(x, 5, 2) 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun enum { 174*4882a593Smuzhiyun I2S_STANDARD = 0, 175*4882a593Smuzhiyun I2S_LEFT_JUSTIFIED = 1, 176*4882a593Smuzhiyun I2S_RIGHT_JUSTIFIED = 2, 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #define I2S_MODE(x) UPDATE(x, 1, 0) 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #define AUDIO_I2S_MAP HDMITX_REG(0x39) 182*4882a593Smuzhiyun #define AUDIO_I2S_SWAPS_SPDIF HDMITX_REG(0x3a) 183*4882a593Smuzhiyun #define N_32K 0x1000 184*4882a593Smuzhiyun #define N_441K 0x1880 185*4882a593Smuzhiyun #define N_882K 0x3100 186*4882a593Smuzhiyun #define N_1764K 0x6200 187*4882a593Smuzhiyun #define N_48K 0x1800 188*4882a593Smuzhiyun #define N_96K 0x3000 189*4882a593Smuzhiyun #define N_192K 0x6000 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun #define HDMI_AUDIO_CHANNEL_STATUS HDMITX_REG(0x3e) 192*4882a593Smuzhiyun #define AUDIO_STATUS_NLPCM_MASK BIT(7) 193*4882a593Smuzhiyun #define AUDIO_STATUS_NLPCM(x) UPDATE(x, 7, 7) 194*4882a593Smuzhiyun #define AUDIO_STATUS_USE_MASK BIT(6) 195*4882a593Smuzhiyun #define AUDIO_STATUS_COPYRIGHT_MASK BIT(5) 196*4882a593Smuzhiyun #define AUDIO_STATUS_ADDITION_MASK GENMASK(3, 2) 197*4882a593Smuzhiyun #define AUDIO_STATUS_CLK_ACCURACY_MASK GENMASK(1, 1) 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun #define AUDIO_N_H HDMITX_REG(0x3f) 200*4882a593Smuzhiyun #define AUDIO_N_M HDMITX_REG(0x40) 201*4882a593Smuzhiyun #define AUDIO_N_L HDMITX_REG(0x41) 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_H HDMITX_REG(0x45) 204*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_M HDMITX_REG(0x46) 205*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_L HDMITX_REG(0x47) 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun #define HDMI_DDC_CLK_L HDMITX_REG(0x4b) 208*4882a593Smuzhiyun #define HDMI_DDC_CLK_H HDMITX_REG(0x4c) 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #define HDMI_EDID_SEGMENT_POINTER HDMITX_REG(0x4d) 211*4882a593Smuzhiyun #define HDMI_EDID_WORD_ADDR HDMITX_REG(0x4e) 212*4882a593Smuzhiyun #define HDMI_EDID_FIFO_OFFSET HDMITX_REG(0x4f) 213*4882a593Smuzhiyun #define HDMI_EDID_FIFO_ADDR HDMITX_REG(0x50) 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun #define HDMI_PACKET_SEND_MANUAL HDMITX_REG(0x9c) 216*4882a593Smuzhiyun #define HDMI_PACKET_SEND_AUTO HDMITX_REG(0x9d) 217*4882a593Smuzhiyun #define PACKET_GCP_EN_MASK BIT(7) 218*4882a593Smuzhiyun #define PACKET_GCP_EN(x) UPDATE(x, 7, 7) 219*4882a593Smuzhiyun #define PACKET_MSI_EN_MASK BIT(6) 220*4882a593Smuzhiyun #define PACKET_MSI_EN(x) UPDATE(x, 6, 6) 221*4882a593Smuzhiyun #define PACKET_SDI_EN_MASK BIT(5) 222*4882a593Smuzhiyun #define PACKET_SDI_EN(x) UPDATE(x, 5, 5) 223*4882a593Smuzhiyun #define PACKET_VSI_EN_MASK BIT(4) 224*4882a593Smuzhiyun #define PACKET_VSI_EN(x) UPDATE(x, 4, 4) 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun #define HDMI_CONTROL_PACKET_BUF_INDEX HDMITX_REG(0x9f) 227*4882a593Smuzhiyun enum { 228*4882a593Smuzhiyun INFOFRAME_VSI = 0x05, 229*4882a593Smuzhiyun INFOFRAME_AVI = 0x06, 230*4882a593Smuzhiyun INFOFRAME_AAI = 0x08, 231*4882a593Smuzhiyun }; 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun #define HDMI_CONTROL_PACKET_ADDR HDMITX_REG(0xa0) 234*4882a593Smuzhiyun #define HDMI_MAXIMUM_INFO_FRAME_SIZE 0x11 235*4882a593Smuzhiyun enum { 236*4882a593Smuzhiyun AVI_COLOR_MODE_RGB = 0, 237*4882a593Smuzhiyun AVI_COLOR_MODE_YCBCR422 = 1, 238*4882a593Smuzhiyun AVI_COLOR_MODE_YCBCR444 = 2, 239*4882a593Smuzhiyun AVI_COLORIMETRY_NO_DATA = 0, 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun AVI_COLORIMETRY_SMPTE_170M = 1, 242*4882a593Smuzhiyun AVI_COLORIMETRY_ITU709 = 2, 243*4882a593Smuzhiyun AVI_COLORIMETRY_EXTENDED = 3, 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun AVI_CODED_FRAME_ASPECT_NO_DATA = 0, 246*4882a593Smuzhiyun AVI_CODED_FRAME_ASPECT_4_3 = 1, 247*4882a593Smuzhiyun AVI_CODED_FRAME_ASPECT_16_9 = 2, 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun ACTIVE_ASPECT_RATE_SAME_AS_CODED_FRAME = 0x08, 250*4882a593Smuzhiyun ACTIVE_ASPECT_RATE_4_3 = 0x09, 251*4882a593Smuzhiyun ACTIVE_ASPECT_RATE_16_9 = 0x0A, 252*4882a593Smuzhiyun ACTIVE_ASPECT_RATE_14_9 = 0x0B, 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun #define HDMI_HDCP_CTRL HDMITX_REG(0x52) 256*4882a593Smuzhiyun #define HDMI_DVI_MASK BIT(1) 257*4882a593Smuzhiyun #define HDMI_DVI(x) UPDATE(x, 1, 1) 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun #define HDMI_INTERRUPT_MASK1 HDMITX_REG(0xc0) 260*4882a593Smuzhiyun #define INT_EDID_READY_MASK BIT(2) 261*4882a593Smuzhiyun #define HDMI_INTERRUPT_STATUS1 HDMITX_REG(0xc1) 262*4882a593Smuzhiyun #define INT_ACTIVE_VSYNC_MASK BIT(5) 263*4882a593Smuzhiyun #define INT_EDID_READY BIT(2) 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun #define HDMI_INTERRUPT_MASK2 HDMITX_REG(0xc2) 266*4882a593Smuzhiyun #define HDMI_INTERRUPT_STATUS2 HDMITX_REG(0xc3) 267*4882a593Smuzhiyun #define INT_HDCP_ERR BIT(7) 268*4882a593Smuzhiyun #define INT_BKSV_FLAG BIT(6) 269*4882a593Smuzhiyun #define INT_HDCP_OK BIT(4) 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun #define HDMI_STATUS HDMITX_REG(0xc8) 272*4882a593Smuzhiyun #define HOTPLUG_STATUS BIT(7) 273*4882a593Smuzhiyun #define MASK_INT_HOTPLUG_MASK BIT(5) 274*4882a593Smuzhiyun #define MASK_INT_HOTPLUG(x) UPDATE(x, 5, 5) 275*4882a593Smuzhiyun #define INT_HOTPLUG BIT(1) 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun #define HDMI_COLORBAR HDMITX_REG(0xc9) 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun #define HDMI_PHY_SYNC HDMITX_REG(0xce) 280*4882a593Smuzhiyun #define HDMI_PHY_SYS_CTL HDMITX_REG(0xe0) 281*4882a593Smuzhiyun #define TMDS_CLK_SOURCE_MASK BIT(5) 282*4882a593Smuzhiyun #define TMDS_CLK_SOURCE(x) UPDATE(x, 5, 5) 283*4882a593Smuzhiyun #define PHASE_CLK_MASK BIT(4) 284*4882a593Smuzhiyun #define PHASE_CLK(x) UPDATE(x, 4, 4) 285*4882a593Smuzhiyun #define TMDS_PHASE_SEL_MASK BIT(3) 286*4882a593Smuzhiyun #define TMDS_PHASE_SEL(x) UPDATE(x, 3, 3) 287*4882a593Smuzhiyun #define BANDGAP_PWR_MASK BIT(2) 288*4882a593Smuzhiyun #define BANDGAP_PWR(x) UPDATE(x, 2, 2) 289*4882a593Smuzhiyun #define PLL_PWR_DOWN_MASK BIT(1) 290*4882a593Smuzhiyun #define PLL_PWR_DOWN(x) UPDATE(x, 1, 1) 291*4882a593Smuzhiyun #define TMDS_CHG_PWR_DOWN_MASK BIT(0) 292*4882a593Smuzhiyun #define TMDS_CHG_PWR_DOWN(x) UPDATE(x, 0, 0) 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun #define HDMI_PHY_CHG_PWR HDMITX_REG(0xe1) 295*4882a593Smuzhiyun #define CLK_CHG_PWR(x) UPDATE(x, 3, 3) 296*4882a593Smuzhiyun #define DATA_CHG_PWR(x) UPDATE(x, 2, 0) 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun #define HDMI_PHY_DRIVER HDMITX_REG(0xe2) 299*4882a593Smuzhiyun #define CLK_MAIN_DRIVER(x) UPDATE(x, 7, 4) 300*4882a593Smuzhiyun #define DATA_MAIN_DRIVER(x) UPDATE(x, 3, 0) 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun #define HDMI_PHY_PRE_EMPHASIS HDMITX_REG(0xe3) 303*4882a593Smuzhiyun #define PRE_EMPHASIS(x) UPDATE(x, 6, 4) 304*4882a593Smuzhiyun #define CLK_PRE_DRIVER(x) UPDATE(x, 3, 2) 305*4882a593Smuzhiyun #define DATA_PRE_DRIVER(x) UPDATE(x, 1, 0) 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun #define PHY_FEEDBACK_DIV_RATIO_LOW HDMITX_REG(0xe7) 308*4882a593Smuzhiyun #define FEEDBACK_DIV_LOW(x) UPDATE(x, 7, 0) 309*4882a593Smuzhiyun #define PHY_FEEDBACK_DIV_RATIO_HIGH HDMITX_REG(0xe8) 310*4882a593Smuzhiyun #define FEEDBACK_DIV_HIGH(x) UPDATE(x, 0, 0) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #define HDMI_PHY_PRE_DIV_RATIO HDMITX_REG(0xed) 313*4882a593Smuzhiyun #define PRE_DIV_RATIO(x) UPDATE(x, 4, 0) 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun #define HDMI_CEC_CTRL HDMITX_REG(0xd0) 316*4882a593Smuzhiyun #define ADJUST_FOR_HISENSE_MASK BIT(6) 317*4882a593Smuzhiyun #define REJECT_RX_BROADCAST_MASK BIT(5) 318*4882a593Smuzhiyun #define BUSFREETIME_ENABLE_MASK BIT(2) 319*4882a593Smuzhiyun #define REJECT_RX_MASK BIT(1) 320*4882a593Smuzhiyun #define START_TX_MASK BIT(0) 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun #define HDMI_CEC_DATA HDMITX_REG(0xd1) 323*4882a593Smuzhiyun #define HDMI_CEC_TX_OFFSET HDMITX_REG(0xd2) 324*4882a593Smuzhiyun #define HDMI_CEC_RX_OFFSET HDMITX_REG(0xd3) 325*4882a593Smuzhiyun #define HDMI_CEC_CLK_H HDMITX_REG(0xd4) 326*4882a593Smuzhiyun #define HDMI_CEC_CLK_L HDMITX_REG(0xd5) 327*4882a593Smuzhiyun #define HDMI_CEC_TX_LENGTH HDMITX_REG(0xd6) 328*4882a593Smuzhiyun #define HDMI_CEC_RX_LENGTH HDMITX_REG(0xd7) 329*4882a593Smuzhiyun #define HDMI_CEC_TX_INT_MASK HDMITX_REG(0xd8) 330*4882a593Smuzhiyun #define TX_DONE_MASK BIT(3) 331*4882a593Smuzhiyun #define TX_NOACK_MASK BIT(2) 332*4882a593Smuzhiyun #define TX_BROADCAST_REJ_MASK BIT(1) 333*4882a593Smuzhiyun #define TX_BUSNOTFREE_MASK BIT(0) 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun #define HDMI_CEC_RX_INT_MASK HDMITX_REG(0xd9) 336*4882a593Smuzhiyun #define RX_LA_ERR_MASK BIT(4) 337*4882a593Smuzhiyun #define RX_GLITCH_MASK BIT(3) 338*4882a593Smuzhiyun #define RX_DONE_MASK BIT(0) 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun #define HDMI_CEC_TX_INT HDMITX_REG(0xda) 341*4882a593Smuzhiyun #define HDMI_CEC_RX_INT HDMITX_REG(0xdb) 342*4882a593Smuzhiyun #define HDMI_CEC_BUSFREETIME_L HDMITX_REG(0xdc) 343*4882a593Smuzhiyun #define HDMI_CEC_BUSFREETIME_H HDMITX_REG(0xdd) 344*4882a593Smuzhiyun #define HDMI_CEC_LOGICADDR HDMITX_REG(0xde) 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun #define HDMI_MAX_REG HDMITX_REG(0xed) 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun int rk628_hdmitx_enable(struct rk628 *rk628); 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun #endif 351