Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright (C) 2018 Gateworks Corporation
0004  */
0005 
0006 /* Page 0x00 - General Control */
0007 #define REG_VERSION     0x0000
0008 #define REG_INPUT_SEL       0x0001
0009 #define REG_SVC_MODE        0x0002
0010 #define REG_HPD_MAN_CTRL    0x0003
0011 #define REG_RT_MAN_CTRL     0x0004
0012 #define REG_STANDBY_SOFT_RST    0x000A
0013 #define REG_HDMI_SOFT_RST   0x000B
0014 #define REG_HDMI_INFO_RST   0x000C
0015 #define REG_INT_FLG_CLR_TOP 0x000E
0016 #define REG_INT_FLG_CLR_SUS 0x000F
0017 #define REG_INT_FLG_CLR_DDC 0x0010
0018 #define REG_INT_FLG_CLR_RATE    0x0011
0019 #define REG_INT_FLG_CLR_MODE    0x0012
0020 #define REG_INT_FLG_CLR_INFO    0x0013
0021 #define REG_INT_FLG_CLR_AUDIO   0x0014
0022 #define REG_INT_FLG_CLR_HDCP    0x0015
0023 #define REG_INT_FLG_CLR_AFE 0x0016
0024 #define REG_INT_MASK_TOP    0x0017
0025 #define REG_INT_MASK_SUS    0x0018
0026 #define REG_INT_MASK_DDC    0x0019
0027 #define REG_INT_MASK_RATE   0x001A
0028 #define REG_INT_MASK_MODE   0x001B
0029 #define REG_INT_MASK_INFO   0x001C
0030 #define REG_INT_MASK_AUDIO  0x001D
0031 #define REG_INT_MASK_HDCP   0x001E
0032 #define REG_INT_MASK_AFE    0x001F
0033 #define REG_DETECT_5V       0x0020
0034 #define REG_SUS_STATUS      0x0021
0035 #define REG_V_PER       0x0022
0036 #define REG_H_PER       0x0025
0037 #define REG_HS_WIDTH        0x0027
0038 #define REG_FMT_H_TOT       0x0029
0039 #define REG_FMT_H_ACT       0x002b
0040 #define REG_FMT_H_FRONT     0x002d
0041 #define REG_FMT_H_SYNC      0x002f
0042 #define REG_FMT_H_BACK      0x0031
0043 #define REG_FMT_V_TOT       0x0033
0044 #define REG_FMT_V_ACT       0x0035
0045 #define REG_FMT_V_FRONT_F1  0x0037
0046 #define REG_FMT_V_FRONT_F2  0x0038
0047 #define REG_FMT_V_SYNC      0x0039
0048 #define REG_FMT_V_BACK_F1   0x003a
0049 #define REG_FMT_V_BACK_F2   0x003b
0050 #define REG_FMT_DE_ACT      0x003c
0051 #define REG_RATE_CTRL       0x0040
0052 #define REG_CLK_MIN_RATE    0x0043
0053 #define REG_CLK_MAX_RATE    0x0046
0054 #define REG_CLK_A_STATUS    0x0049
0055 #define REG_CLK_A_RATE      0x004A
0056 #define REG_DRIFT_CLK_A_REG 0x004D
0057 #define REG_CLK_B_STATUS    0x004E
0058 #define REG_CLK_B_RATE      0x004F
0059 #define REG_DRIFT_CLK_B_REG 0x0052
0060 #define REG_HDCP_CTRL       0x0060
0061 #define REG_HDCP_KDS        0x0061
0062 #define REG_HDCP_BCAPS      0x0063
0063 #define REG_HDCP_KEY_CTRL   0x0064
0064 #define REG_INFO_CTRL       0x0076
0065 #define REG_INFO_EXCEED     0x0077
0066 #define REG_PIX_REPEAT      0x007B
0067 #define REG_AUDIO_PATH      0x007C
0068 #define REG_AUDCFG      0x007D
0069 #define REG_AUDIO_OUT_ENABLE    0x007E
0070 #define REG_AUDIO_OUT_HIZ   0x007F
0071 #define REG_VDP_CTRL        0x0080
0072 #define REG_VDP_MATRIX      0x0081
0073 #define REG_VHREF_CTRL      0x00A0
0074 #define REG_PXCNT_PR        0x00A2
0075 #define REG_PXCNT_NPIX      0x00A4
0076 #define REG_LCNT_PR     0x00A6
0077 #define REG_LCNT_NLIN       0x00A8
0078 #define REG_HREF_S      0x00AA
0079 #define REG_HREF_E      0x00AC
0080 #define REG_HS_S        0x00AE
0081 #define REG_HS_E        0x00B0
0082 #define REG_VREF_F1_S       0x00B2
0083 #define REG_VREF_F1_WIDTH   0x00B4
0084 #define REG_VREF_F2_S       0x00B5
0085 #define REG_VREF_F2_WIDTH   0x00B7
0086 #define REG_VS_F1_LINE_S    0x00B8
0087 #define REG_VS_F1_LINE_WIDTH    0x00BA
0088 #define REG_VS_F2_LINE_S    0x00BB
0089 #define REG_VS_F2_LINE_WIDTH    0x00BD
0090 #define REG_VS_F1_PIX_S     0x00BE
0091 #define REG_VS_F1_PIX_E     0x00C0
0092 #define REG_VS_F2_PIX_S     0x00C2
0093 #define REG_VS_F2_PIX_E     0x00C4
0094 #define REG_FREF_F1_S       0x00C6
0095 #define REG_FREF_F2_S       0x00C8
0096 #define REG_FDW_S       0x00ca
0097 #define REG_FDW_E       0x00cc
0098 #define REG_BLK_GY      0x00da
0099 #define REG_BLK_BU      0x00dc
0100 #define REG_BLK_RV      0x00de
0101 #define REG_FILTERS_CTRL    0x00e0
0102 #define REG_DITHERING_CTRL  0x00E9
0103 #define REG_OF          0x00EA
0104 #define REG_PCLK        0x00EB
0105 #define REG_HS_HREF     0x00EC
0106 #define REG_VS_VREF     0x00ED
0107 #define REG_DE_FREF     0x00EE
0108 #define REG_VP35_32_CTRL    0x00EF
0109 #define REG_VP31_28_CTRL    0x00F0
0110 #define REG_VP27_24_CTRL    0x00F1
0111 #define REG_VP23_20_CTRL    0x00F2
0112 #define REG_VP19_16_CTRL    0x00F3
0113 #define REG_VP15_12_CTRL    0x00F4
0114 #define REG_VP11_08_CTRL    0x00F5
0115 #define REG_VP07_04_CTRL    0x00F6
0116 #define REG_VP03_00_CTRL    0x00F7
0117 #define REG_CURPAGE_00H     0xFF
0118 
0119 #define MASK_VPER       0x3fffff
0120 #define MASK_VPER_SYNC_POS  0x800000
0121 #define MASK_VHREF      0x3fff
0122 #define MASK_HPER       0x0fff
0123 #define MASK_HPER_SYNC_POS  0x8000
0124 #define MASK_HSWIDTH        0x03ff
0125 #define MASK_HSWIDTH_INTERLACED 0x8000
0126 
0127 /* HPD Detection */
0128 #define DETECT_UTIL     BIT(7)  /* utility of HDMI level */
0129 #define DETECT_HPD      BIT(6)  /* HPD of HDMI level */
0130 #define DETECT_5V_SEL       BIT(2)  /* 5V present on selected input */
0131 #define DETECT_5V_B     BIT(1)  /* 5V present on input B */
0132 #define DETECT_5V_A     BIT(0)  /* 5V present on input A */
0133 
0134 /* Input Select */
0135 #define INPUT_SEL_RST_FMT   BIT(7)  /* 1=reset format measurement */
0136 #define INPUT_SEL_RST_VDP   BIT(2)  /* 1=reset video data path */
0137 #define INPUT_SEL_OUT_MODE  BIT(1)  /* 0=loop 1=bypass */
0138 #define INPUT_SEL_B     BIT(0)  /* 0=inputA 1=inputB */
0139 
0140 /* Service Mode */
0141 #define SVC_MODE_CLK2_MASK  0xc0
0142 #define SVC_MODE_CLK2_SHIFT 6
0143 #define SVC_MODE_CLK2_XTL   0L
0144 #define SVC_MODE_CLK2_XTLDIV2   1L
0145 #define SVC_MODE_CLK2_HDMIX2    3L
0146 #define SVC_MODE_CLK1_MASK  0x30
0147 #define SVC_MODE_CLK1_SHIFT 4
0148 #define SVC_MODE_CLK1_XTAL  0L
0149 #define SVC_MODE_CLK1_XTLDIV2   1L
0150 #define SVC_MODE_CLK1_HDMI  3L
0151 #define SVC_MODE_RAMP       BIT(3)  /* 0=colorbar 1=ramp */
0152 #define SVC_MODE_PAL        BIT(2)  /* 0=NTSC(480i/p) 1=PAL(576i/p) */
0153 #define SVC_MODE_INT_PROG   BIT(1)  /* 0=interlaced 1=progressive */
0154 #define SVC_MODE_SM_ON      BIT(0)  /* Enable color bars and tone gen */
0155 
0156 /* HDP Manual Control */
0157 #define HPD_MAN_CTRL_HPD_PULSE  BIT(7)  /* HPD Pulse low 110ms */
0158 #define HPD_MAN_CTRL_5VEN   BIT(2)  /* Output 5V */
0159 #define HPD_MAN_CTRL_HPD_B  BIT(1)  /* Assert HPD High for Input A */
0160 #define HPD_MAN_CTRL_HPD_A  BIT(0)  /* Assert HPD High for Input A */
0161 
0162 /* RT_MAN_CTRL */
0163 #define RT_MAN_CTRL_RT_AUTO BIT(7)
0164 #define RT_MAN_CTRL_RT      BIT(6)
0165 #define RT_MAN_CTRL_RT_B    BIT(1)  /* enable TMDS pull-up on Input B */
0166 #define RT_MAN_CTRL_RT_A    BIT(0)  /* enable TMDS pull-up on Input A */
0167 
0168 /* VDP_CTRL */
0169 #define VDP_CTRL_COMPDEL_BP BIT(5)  /* bypass compdel */
0170 #define VDP_CTRL_FORMATTER_BP   BIT(4)  /* bypass formatter */
0171 #define VDP_CTRL_PREFILTER_BP   BIT(1)  /* bypass prefilter */
0172 #define VDP_CTRL_MATRIX_BP  BIT(0)  /* bypass matrix conversion */
0173 
0174 /* REG_VHREF_CTRL */
0175 #define VHREF_INT_DET       BIT(7)  /* interlace detect: 1=alt 0=frame */
0176 #define VHREF_VSYNC_MASK    0x60
0177 #define VHREF_VSYNC_SHIFT   6
0178 #define VHREF_VSYNC_AUTO    0L
0179 #define VHREF_VSYNC_FDW     1L
0180 #define VHREF_VSYNC_EVEN    2L
0181 #define VHREF_VSYNC_ODD     3L
0182 #define VHREF_STD_DET_MASK  0x18
0183 #define VHREF_STD_DET_SHIFT 3
0184 #define VHREF_STD_DET_PAL   0L
0185 #define VHREF_STD_DET_NTSC  1L
0186 #define VHREF_STD_DET_AUTO  2L
0187 #define VHREF_STD_DET_OFF   3L
0188 #define VHREF_VREF_SRC_STD  BIT(2)  /* 1=from standard 0=manual */
0189 #define VHREF_HREF_SRC_STD  BIT(1)  /* 1=from standard 0=manual */
0190 #define VHREF_HSYNC_SEL_HS  BIT(0)  /* 1=HS 0=VS */
0191 
0192 /* AUDIO_OUT_ENABLE */
0193 #define AUDIO_OUT_ENABLE_ACLK   BIT(5)
0194 #define AUDIO_OUT_ENABLE_WS BIT(4)
0195 #define AUDIO_OUT_ENABLE_AP3    BIT(3)
0196 #define AUDIO_OUT_ENABLE_AP2    BIT(2)
0197 #define AUDIO_OUT_ENABLE_AP1    BIT(1)
0198 #define AUDIO_OUT_ENABLE_AP0    BIT(0)
0199 
0200 /* Prefilter Control */
0201 #define FILTERS_CTRL_BU_MASK    0x0c
0202 #define FILTERS_CTRL_BU_SHIFT   2
0203 #define FILTERS_CTRL_RV_MASK    0x03
0204 #define FILTERS_CTRL_RV_SHIFT   0
0205 #define FILTERS_CTRL_OFF    0L  /* off */
0206 #define FILTERS_CTRL_2TAP   1L  /* 2 Taps */
0207 #define FILTERS_CTRL_7TAP   2L  /* 7 Taps */
0208 #define FILTERS_CTRL_2_7TAP 3L  /* 2/7 Taps */
0209 
0210 /* PCLK Configuration */
0211 #define PCLK_DELAY_MASK     0x70
0212 #define PCLK_DELAY_SHIFT    4   /* Pixel delay (-8..+7) */
0213 #define PCLK_INV_SHIFT      2
0214 #define PCLK_SEL_MASK       0x03    /* clock scaler */
0215 #define PCLK_SEL_SHIFT      0
0216 #define PCLK_SEL_X1     0L
0217 #define PCLK_SEL_X2     1L
0218 #define PCLK_SEL_DIV2       2L
0219 #define PCLK_SEL_DIV4       3L
0220 
0221 /* Pixel Repeater */
0222 #define PIX_REPEAT_MASK_UP_SEL  0x30
0223 #define PIX_REPEAT_MASK_REP 0x0f
0224 #define PIX_REPEAT_SHIFT    4
0225 #define PIX_REPEAT_CHROMA   1
0226 
0227 /* Page 0x01 - HDMI info and packets */
0228 #define REG_HDMI_FLAGS      0x0100
0229 #define REG_DEEP_COLOR_MODE 0x0101
0230 #define REG_AUDIO_FLAGS     0x0108
0231 #define REG_AUDIO_FREQ      0x0109
0232 #define REG_ACP_PACKET_TYPE 0x0141
0233 #define REG_ISRC1_PACKET_TYPE   0x0161
0234 #define REG_ISRC2_PACKET_TYPE   0x0181
0235 #define REG_GBD_PACKET_TYPE 0x01a1
0236 
0237 /* HDMI_FLAGS */
0238 #define HDMI_FLAGS_AUDIO    BIT(7)  /* Audio packet in last videoframe */
0239 #define HDMI_FLAGS_HDMI     BIT(6)  /* HDMI detected */
0240 #define HDMI_FLAGS_EESS     BIT(5)  /* EESS detected */
0241 #define HDMI_FLAGS_HDCP     BIT(4)  /* HDCP detected */
0242 #define HDMI_FLAGS_AVMUTE   BIT(3)  /* AVMUTE */
0243 #define HDMI_FLAGS_AUD_LAYOUT   BIT(2)  /* Layout status Audio sample packet */
0244 #define HDMI_FLAGS_AUD_FIFO_OF  BIT(1)  /* FIFO read/write pointers crossed */
0245 #define HDMI_FLAGS_AUD_FIFO_LOW BIT(0)  /* FIFO read ptr within 2 of write */
0246 
0247 /* Page 0x12 - HDMI Extra control and debug */
0248 #define REG_CLK_CFG     0x1200
0249 #define REG_CLK_OUT_CFG     0x1201
0250 #define REG_CFG1        0x1202
0251 #define REG_CFG2        0x1203
0252 #define REG_WDL_CFG     0x1210
0253 #define REG_DELOCK_DELAY    0x1212
0254 #define REG_PON_OVR_EN      0x12A0
0255 #define REG_PON_CBIAS       0x12A1
0256 #define REG_PON_RESCAL      0x12A2
0257 #define REG_PON_RES     0x12A3
0258 #define REG_PON_CLK     0x12A4
0259 #define REG_PON_PLL     0x12A5
0260 #define REG_PON_EQ      0x12A6
0261 #define REG_PON_DES     0x12A7
0262 #define REG_PON_OUT     0x12A8
0263 #define REG_PON_MUX     0x12A9
0264 #define REG_MODE_REC_CFG1   0x12F8
0265 #define REG_MODE_REC_CFG2   0x12F9
0266 #define REG_MODE_REC_STS    0x12FA
0267 #define REG_AUDIO_LAYOUT    0x12D0
0268 
0269 #define PON_EN          1
0270 #define PON_DIS         0
0271 
0272 /* CLK CFG */
0273 #define CLK_CFG_INV_OUT_CLK BIT(7)
0274 #define CLK_CFG_INV_BUS_CLK BIT(6)
0275 #define CLK_CFG_SEL_ACLK_EN BIT(1)
0276 #define CLK_CFG_SEL_ACLK    BIT(0)
0277 #define CLK_CFG_DIS     0
0278 
0279 /* Page 0x13 - HDMI Extra control and debug */
0280 #define REG_DEEP_COLOR_CTRL 0x1300
0281 #define REG_CGU_DBG_SEL     0x1305
0282 #define REG_HDCP_DDC_ADDR   0x1310
0283 #define REG_HDCP_KIDX       0x1316
0284 #define REG_DEEP_PLL7_BYP   0x1347
0285 #define REG_HDCP_DE_CTRL    0x1370
0286 #define REG_HDCP_EP_FILT_CTRL   0x1371
0287 #define REG_HDMI_CTRL       0x1377
0288 #define REG_HMTP_CTRL       0x137a
0289 #define REG_TIMER_D     0x13CF
0290 #define REG_SUS_SET_RGB0    0x13E1
0291 #define REG_SUS_SET_RGB1    0x13E2
0292 #define REG_SUS_SET_RGB2    0x13E3
0293 #define REG_SUS_SET_RGB3    0x13E4
0294 #define REG_SUS_SET_RGB4    0x13E5
0295 #define REG_MAN_SUS_HDMI_SEL    0x13E8
0296 #define REG_MAN_HDMI_SET    0x13E9
0297 #define REG_SUS_CLOCK_GOOD  0x13EF
0298 
0299 /* HDCP DE Control */
0300 #define HDCP_DE_MODE_MASK   0xc0    /* DE Measurement mode */
0301 #define HDCP_DE_MODE_SHIFT  6
0302 #define HDCP_DE_REGEN_EN    BIT(5)  /* enable regen mode */
0303 #define HDCP_DE_FILTER_MASK 0x18    /* DE filter sensitivity */
0304 #define HDCP_DE_FILTER_SHIFT    3
0305 #define HDCP_DE_COMP_MASK   0x07    /* DE Composition mode */
0306 #define HDCP_DE_COMP_MIXED  6L
0307 #define HDCP_DE_COMP_OR     5L
0308 #define HDCP_DE_COMP_AND    4L
0309 #define HDCP_DE_COMP_CH3    3L
0310 #define HDCP_DE_COMP_CH2    2L
0311 #define HDCP_DE_COMP_CH1    1L
0312 #define HDCP_DE_COMP_CH0    0L
0313 
0314 /* HDCP EP Filter Control */
0315 #define HDCP_EP_FIL_CTL_MASK    0x30
0316 #define HDCP_EP_FIL_CTL_SHIFT   4
0317 #define HDCP_EP_FIL_VS_MASK 0x0c
0318 #define HDCP_EP_FIL_VS_SHIFT    2
0319 #define HDCP_EP_FIL_HS_MASK 0x03
0320 #define HDCP_EP_FIL_HS_SHIFT    0
0321 
0322 /* HDMI_CTRL */
0323 #define HDMI_CTRL_MUTE_MASK 0x0c
0324 #define HDMI_CTRL_MUTE_SHIFT    2
0325 #define HDMI_CTRL_MUTE_AUTO 0L
0326 #define HDMI_CTRL_MUTE_OFF  1L
0327 #define HDMI_CTRL_MUTE_ON   2L
0328 #define HDMI_CTRL_HDCP_MASK 0x03
0329 #define HDMI_CTRL_HDCP_SHIFT    0
0330 #define HDMI_CTRL_HDCP_EESS 2L
0331 #define HDMI_CTRL_HDCP_OESS 1L
0332 #define HDMI_CTRL_HDCP_AUTO 0L
0333 
0334 /* CGU_DBG_SEL bits */
0335 #define CGU_DBG_CLK_SEL_MASK    0x18
0336 #define CGU_DBG_CLK_SEL_SHIFT   3
0337 #define CGU_DBG_XO_FRO_SEL  BIT(2)
0338 #define CGU_DBG_VDP_CLK_SEL BIT(1)
0339 #define CGU_DBG_PIX_CLK_SEL BIT(0)
0340 
0341 /* REG_MAN_SUS_HDMI_SEL / REG_MAN_HDMI_SET bits */
0342 #define MAN_DIS_OUT_BUF     BIT(7)
0343 #define MAN_DIS_ANA_PATH    BIT(6)
0344 #define MAN_DIS_HDCP        BIT(5)
0345 #define MAN_DIS_TMDS_ENC    BIT(4)
0346 #define MAN_DIS_TMDS_FLOW   BIT(3)
0347 #define MAN_RST_HDCP        BIT(2)
0348 #define MAN_RST_TMDS_ENC    BIT(1)
0349 #define MAN_RST_TMDS_FLOW   BIT(0)
0350 
0351 /* Page 0x14 - Audio Extra control and debug */
0352 #define REG_FIFO_LATENCY_VAL    0x1403
0353 #define REG_AUDIO_CLOCK     0x1411
0354 #define REG_TEST_NCTS_CTRL  0x1415
0355 #define REG_TEST_AUDIO_FREQ 0x1426
0356 #define REG_TEST_MODE       0x1437
0357 
0358 /* Audio Clock Configuration */
0359 #define AUDIO_CLOCK_PLL_PD  BIT(7)  /* powerdown PLL */
0360 #define AUDIO_CLOCK_SEL_MASK    0x7f
0361 #define AUDIO_CLOCK_SEL_16FS    0L  /* 16*fs */
0362 #define AUDIO_CLOCK_SEL_32FS    1L  /* 32*fs */
0363 #define AUDIO_CLOCK_SEL_64FS    2L  /* 64*fs */
0364 #define AUDIO_CLOCK_SEL_128FS   3L  /* 128*fs */
0365 #define AUDIO_CLOCK_SEL_256FS   4L  /* 256*fs */
0366 #define AUDIO_CLOCK_SEL_512FS   5L  /* 512*fs */
0367 
0368 /* Page 0x20: EDID and Hotplug Detect */
0369 #define REG_EDID_IN_BYTE0   0x2000 /* EDID base */
0370 #define REG_EDID_IN_VERSION 0x2080
0371 #define REG_EDID_ENABLE     0x2081
0372 #define REG_HPD_POWER       0x2084
0373 #define REG_HPD_AUTO_CTRL   0x2085
0374 #define REG_HPD_DURATION    0x2086
0375 #define REG_RX_HPD_HEAC     0x2087
0376 
0377 /* EDID_ENABLE */
0378 #define EDID_ENABLE_NACK_OFF    BIT(7)
0379 #define EDID_ENABLE_EDID_ONLY   BIT(6)
0380 #define EDID_ENABLE_B_EN    BIT(1)
0381 #define EDID_ENABLE_A_EN    BIT(0)
0382 
0383 /* HPD Power */
0384 #define HPD_POWER_BP_MASK   0x0c
0385 #define HPD_POWER_BP_SHIFT  2
0386 #define HPD_POWER_BP_LOW    0L
0387 #define HPD_POWER_BP_HIGH   1L
0388 #define HPD_POWER_EDID_ONLY BIT(1)
0389 
0390 /* HPD Auto control */
0391 #define HPD_AUTO_READ_EDID  BIT(7)
0392 #define HPD_AUTO_HPD_F3TECH BIT(5)
0393 #define HPD_AUTO_HP_OTHER   BIT(4)
0394 #define HPD_AUTO_HPD_UNSEL  BIT(3)
0395 #define HPD_AUTO_HPD_ALL_CH BIT(2)
0396 #define HPD_AUTO_HPD_PRV_CH BIT(1)
0397 #define HPD_AUTO_HPD_NEW_CH BIT(0)
0398 
0399 /* Page 0x21 - EDID content */
0400 #define REG_EDID_IN_BYTE128 0x2100 /* CEA Extension block */
0401 #define REG_EDID_IN_SPA_SUB 0x2180
0402 #define REG_EDID_IN_SPA_AB_A    0x2181
0403 #define REG_EDID_IN_SPA_CD_A    0x2182
0404 #define REG_EDID_IN_CKSUM_A 0x2183
0405 #define REG_EDID_IN_SPA_AB_B    0x2184
0406 #define REG_EDID_IN_SPA_CD_B    0x2185
0407 #define REG_EDID_IN_CKSUM_B 0x2186
0408 
0409 /* Page 0x30 - NV Configuration */
0410 #define REG_RT_AUTO_CTRL    0x3000
0411 #define REG_EQ_MAN_CTRL0    0x3001
0412 #define REG_EQ_MAN_CTRL1    0x3002
0413 #define REG_OUTPUT_CFG      0x3003
0414 #define REG_MUTE_CTRL       0x3004
0415 #define REG_SLAVE_ADDR      0x3005
0416 #define REG_CMTP_REG6       0x3006
0417 #define REG_CMTP_REG7       0x3007
0418 #define REG_CMTP_REG8       0x3008
0419 #define REG_CMTP_REG9       0x3009
0420 #define REG_CMTP_REGA       0x300A
0421 #define REG_CMTP_REGB       0x300B
0422 #define REG_CMTP_REGC       0x300C
0423 #define REG_CMTP_REGD       0x300D
0424 #define REG_CMTP_REGE       0x300E
0425 #define REG_CMTP_REGF       0x300F
0426 #define REG_CMTP_REG10      0x3010
0427 #define REG_CMTP_REG11      0x3011
0428 
0429 /* Page 0x80 - CEC */
0430 #define REG_PWR_CONTROL     0x80F4
0431 #define REG_OSC_DIVIDER     0x80F5
0432 #define REG_EN_OSC_PERIOD_LSB   0x80F8
0433 #define REG_CONTROL     0x80FF
0434 
0435 /* global interrupt flags (INT_FLG_CRL_TOP) */
0436 #define INTERRUPT_AFE       BIT(7) /* AFE module */
0437 #define INTERRUPT_HDCP      BIT(6) /* HDCP module */
0438 #define INTERRUPT_AUDIO     BIT(5) /* Audio module */
0439 #define INTERRUPT_INFO      BIT(4) /* Infoframe module */
0440 #define INTERRUPT_MODE      BIT(3) /* HDMI mode module */
0441 #define INTERRUPT_RATE      BIT(2) /* rate module */
0442 #define INTERRUPT_DDC       BIT(1) /* DDC module */
0443 #define INTERRUPT_SUS       BIT(0) /* SUS module */
0444 
0445 /* INT_FLG_CLR_HDCP bits */
0446 #define MASK_HDCP_MTP       BIT(7) /* HDCP MTP busy */
0447 #define MASK_HDCP_DLMTP     BIT(4) /* HDCP end download MTP to SRAM */
0448 #define MASK_HDCP_DLRAM     BIT(3) /* HDCP end download keys from SRAM */
0449 #define MASK_HDCP_ENC       BIT(2) /* HDCP ENC */
0450 #define MASK_STATE_C5       BIT(1) /* HDCP State C5 reached */
0451 #define MASK_AKSV       BIT(0) /* AKSV received (start of auth) */
0452 
0453 /* INT_FLG_CLR_RATE bits */
0454 #define MASK_RATE_B_DRIFT   BIT(7) /* Rate measurement drifted */
0455 #define MASK_RATE_B_ST      BIT(6) /* Rate measurement stability change */
0456 #define MASK_RATE_B_ACT     BIT(5) /* Rate measurement activity change */
0457 #define MASK_RATE_B_PST     BIT(4) /* Rate measreument presence change */
0458 #define MASK_RATE_A_DRIFT   BIT(3) /* Rate measurement drifted */
0459 #define MASK_RATE_A_ST      BIT(2) /* Rate measurement stability change */
0460 #define MASK_RATE_A_ACT     BIT(1) /* Rate measurement presence change */
0461 #define MASK_RATE_A_PST     BIT(0) /* Rate measreument presence change */
0462 
0463 /* INT_FLG_CLR_SUS (Start Up Sequencer) bits */
0464 #define MASK_MPT        BIT(7) /* Config MTP end of process */
0465 #define MASK_FMT        BIT(5) /* Video format changed */
0466 #define MASK_RT_PULSE       BIT(4) /* End of termination resistance pulse */
0467 #define MASK_SUS_END        BIT(3) /* SUS last state reached */
0468 #define MASK_SUS_ACT        BIT(2) /* Activity of selected input changed */
0469 #define MASK_SUS_CH     BIT(1) /* Selected input changed */
0470 #define MASK_SUS_ST     BIT(0) /* SUS state changed */
0471 
0472 /* INT_FLG_CLR_DDC bits */
0473 #define MASK_EDID_MTP       BIT(7) /* EDID MTP end of process */
0474 #define MASK_DDC_ERR        BIT(6) /* master DDC error */
0475 #define MASK_DDC_CMD_DONE   BIT(5) /* master DDC cmd send correct */
0476 #define MASK_READ_DONE      BIT(4) /* End of down EDID read */
0477 #define MASK_RX_DDC_SW      BIT(3) /* Output DDC switching finished */
0478 #define MASK_HDCP_DDC_SW    BIT(2) /* HDCP DDC switching finished */
0479 #define MASK_HDP_PULSE_END  BIT(1) /* End of Hot Plug Detect pulse */
0480 #define MASK_DET_5V     BIT(0) /* Detection of +5V */
0481 
0482 /* INT_FLG_CLR_MODE bits */
0483 #define MASK_HDMI_FLG       BIT(7) /* HDMI mode/avmute/encrypt/FIFO fail */
0484 #define MASK_GAMUT      BIT(6) /* Gamut packet */
0485 #define MASK_ISRC2      BIT(5) /* ISRC2 packet */
0486 #define MASK_ISRC1      BIT(4) /* ISRC1 packet */
0487 #define MASK_ACP        BIT(3) /* Audio Content Protection packet */
0488 #define MASK_DC_NO_GCP      BIT(2) /* GCP not received in 5 frames */
0489 #define MASK_DC_PHASE       BIT(1) /* deepcolor pixel phase needs update */
0490 #define MASK_DC_MODE        BIT(0) /* deepcolor color depth changed */
0491 
0492 /* INT_FLG_CLR_INFO bits (Infoframe Change Status) */
0493 #define MASK_MPS_IF     BIT(6) /* MPEG Source Product */
0494 #define MASK_AUD_IF     BIT(5) /* Audio */
0495 #define MASK_SPD_IF     BIT(4) /* Source Product Descriptor */
0496 #define MASK_AVI_IF     BIT(3) /* Auxiliary Video IF */
0497 #define MASK_VS_IF_OTHER_BK2    BIT(2) /* Vendor Specific (bank2) */
0498 #define MASK_VS_IF_OTHER_BK1    BIT(1) /* Vendor Specific (bank1) */
0499 #define MASK_VS_IF_HDMI     BIT(0) /* Vendor Specific (w/ HDMI LLC code) */
0500 
0501 /* INT_FLG_CLR_AUDIO bits */
0502 #define MASK_AUDIO_FREQ_FLG BIT(5) /* Audio freq change */
0503 #define MASK_AUDIO_FLG      BIT(4) /* DST, OBA, HBR, ASP change */
0504 #define MASK_MUTE_FLG       BIT(3) /* Audio Mute */
0505 #define MASK_CH_STATE       BIT(2) /* Channel status */
0506 #define MASK_UNMUTE_FIFO    BIT(1) /* Audio Unmute */
0507 #define MASK_ERROR_FIFO_PT  BIT(0) /* Audio FIFO pointer error */
0508 
0509 /* INT_FLG_CLR_AFE bits */
0510 #define MASK_AFE_WDL_UNLOCKED   BIT(7) /* Wordlocker was unlocked */
0511 #define MASK_AFE_GAIN_DONE  BIT(6) /* Gain calibration done */
0512 #define MASK_AFE_OFFSET_DONE    BIT(5) /* Offset calibration done */
0513 #define MASK_AFE_ACTIVITY_DET   BIT(4) /* Activity detected on data */
0514 #define MASK_AFE_PLL_LOCK   BIT(3) /* TMDS PLL is locked */
0515 #define MASK_AFE_TRMCAL_DONE    BIT(2) /* Termination calibration done */
0516 #define MASK_AFE_ASU_STATE  BIT(1) /* ASU state is reached */
0517 #define MASK_AFE_ASU_READY  BIT(0) /* AFE calibration done: TMDS ready */
0518 
0519 /* Audio Output */
0520 #define AUDCFG_CLK_INVERT   BIT(7)  /* invert A_CLK polarity */
0521 #define AUDCFG_TEST_TONE    BIT(6)  /* enable test tone generator */
0522 #define AUDCFG_BUS_SHIFT    5
0523 #define AUDCFG_BUS_I2S      0L
0524 #define AUDCFG_BUS_SPDIF    1L
0525 #define AUDCFG_I2SW_SHIFT   4
0526 #define AUDCFG_I2SW_16      0L
0527 #define AUDCFG_I2SW_32      1L
0528 #define AUDCFG_AUTO_MUTE_EN BIT(3)  /* Enable Automatic audio mute */
0529 #define AUDCFG_HBR_SHIFT    2
0530 #define AUDCFG_HBR_STRAIGHT 0L  /* straight via AP0 */
0531 #define AUDCFG_HBR_DEMUX    1L  /* demuxed via AP0:AP3 */
0532 #define AUDCFG_TYPE_MASK    0x03
0533 #define AUDCFG_TYPE_SHIFT   0
0534 #define AUDCFG_TYPE_DST     3L  /* Direct Stream Transfer (DST) */
0535 #define AUDCFG_TYPE_OBA     2L  /* One Bit Audio (OBA) */
0536 #define AUDCFG_TYPE_HBR     1L  /* High Bit Rate (HBR) */
0537 #define AUDCFG_TYPE_PCM     0L  /* Audio samples */
0538 
0539 /* Video Formatter */
0540 #define OF_VP_ENABLE        BIT(7)  /* VP[35:0]/HS/VS/DE/CLK */
0541 #define OF_BLK          BIT(4)  /* blanking codes */
0542 #define OF_TRC          BIT(3)  /* timing codes (SAV/EAV) */
0543 #define OF_FMT_MASK     0x3
0544 #define OF_FMT_444      0L  /* RGB444/YUV444 */
0545 #define OF_FMT_422_SMPT     1L  /* YUV422 semi-planar */
0546 #define OF_FMT_422_CCIR     2L  /* YUV422 CCIR656 */
0547 
0548 /* HS/HREF output control */
0549 #define HS_HREF_DELAY_MASK  0xf0
0550 #define HS_HREF_DELAY_SHIFT 4   /* Pixel delay (-8..+7) */
0551 #define HS_HREF_PXQ_SHIFT   3   /* Timing codes from HREF */
0552 #define HS_HREF_INV_SHIFT   2   /* polarity (1=invert) */
0553 #define HS_HREF_SEL_MASK    0x03
0554 #define HS_HREF_SEL_SHIFT   0
0555 #define HS_HREF_SEL_HS_VHREF    0L  /* HS from VHREF */
0556 #define HS_HREF_SEL_HREF_VHREF  1L  /* HREF from VHREF */
0557 #define HS_HREF_SEL_HREF_HDMI   2L  /* HREF from HDMI */
0558 #define HS_HREF_SEL_NONE    3L  /* not generated */
0559 
0560 /* VS output control */
0561 #define VS_VREF_DELAY_MASK  0xf0
0562 #define VS_VREF_DELAY_SHIFT 4   /* Pixel delay (-8..+7) */
0563 #define VS_VREF_INV_SHIFT   2   /* polarity (1=invert) */
0564 #define VS_VREF_SEL_MASK    0x03
0565 #define VS_VREF_SEL_SHIFT   0
0566 #define VS_VREF_SEL_VS_VHREF    0L  /* VS from VHREF */
0567 #define VS_VREF_SEL_VREF_VHREF  1L  /* VREF from VHREF */
0568 #define VS_VREF_SEL_VREF_HDMI   2L  /* VREF from HDMI */
0569 #define VS_VREF_SEL_NONE    3L  /* not generated */
0570 
0571 /* DE/FREF output control */
0572 #define DE_FREF_DELAY_MASK  0xf0
0573 #define DE_FREF_DELAY_SHIFT 4   /* Pixel delay (-8..+7) */
0574 #define DE_FREF_DE_PXQ_SHIFT    3   /* Timing codes from DE */
0575 #define DE_FREF_INV_SHIFT   2   /* polarity (1=invert) */
0576 #define DE_FREF_SEL_MASK    0x03
0577 #define DE_FREF_SEL_SHIFT   0
0578 #define DE_FREF_SEL_DE_VHREF    0L  /* DE from VHREF (HREF and not(VREF) */
0579 #define DE_FREF_SEL_FREF_VHREF  1L  /* FREF from VHREF */
0580 #define DE_FREF_SEL_FREF_HDMI   2L  /* FREF from HDMI */
0581 #define DE_FREF_SEL_NONE    3L  /* not generated */
0582 
0583 /* HDMI_SOFT_RST bits */
0584 #define RESET_DC        BIT(7)  /* Reset deep color module */
0585 #define RESET_HDCP      BIT(6)  /* Reset HDCP module */
0586 #define RESET_KSV       BIT(5)  /* Reset KSV-FIFO */
0587 #define RESET_SCFG      BIT(4)  /* Reset HDCP and repeater function */
0588 #define RESET_HCFG      BIT(3)  /* Reset HDCP DDC part */
0589 #define RESET_PA        BIT(2)  /* Reset polarity adjust */
0590 #define RESET_EP        BIT(1)  /* Reset Error protection */
0591 #define RESET_TMDS      BIT(0)  /* Reset TMDS (calib, encoding, flow) */
0592 
0593 /* HDMI_INFO_RST bits */
0594 #define NACK_HDCP       BIT(7)  /* No ACK on HDCP request */
0595 #define RESET_FIFO      BIT(4)  /* Reset Audio FIFO control */
0596 #define RESET_GAMUT     BIT(3)  /* Clear Gamut packet */
0597 #define RESET_AI        BIT(2)  /* Clear ACP and ISRC packets */
0598 #define RESET_IF        BIT(1)  /* Clear all Audio infoframe packets */
0599 #define RESET_AUDIO     BIT(0)  /* Reset Audio FIFO control */
0600 
0601 /* HDCP_BCAPS bits */
0602 #define HDCP_HDMI       BIT(7)  /* HDCP supports HDMI (vs DVI only) */
0603 #define HDCP_REPEATER       BIT(6)  /* HDCP supports repeater function */
0604 #define HDCP_READY      BIT(5)  /* set by repeater function */
0605 #define HDCP_FAST       BIT(4)  /* Up to 400kHz */
0606 #define HDCP_11         BIT(1)  /* HDCP 1.1 supported */
0607 #define HDCP_FAST_REAUTH    BIT(0)  /* fast reauthentication supported */
0608 
0609 /* Audio output formatter */
0610 #define AUDIO_LAYOUT_SP_FLAG    BIT(2)  /* sp flag used by FIFO */
0611 #define AUDIO_LAYOUT_MANUAL BIT(1)  /* manual layout (vs per pkt) */
0612 #define AUDIO_LAYOUT_LAYOUT1    BIT(0)  /* Layout1: AP0-3 vs Layout0:AP0 */
0613 
0614 /* masks for interrupt status registers */
0615 #define MASK_SUS_STATUS     0x1F
0616 #define LAST_STATE_REACHED  0x1B
0617 #define MASK_CLK_STABLE     0x04
0618 #define MASK_CLK_ACTIVE     0x02
0619 #define MASK_SUS_STATE      0x10
0620 #define MASK_SR_FIFO_FIFO_CTRL  0x30
0621 #define MASK_AUDIO_FLAG     0x10
0622 
0623 /* Rate measurement */
0624 #define RATE_REFTIM_ENABLE  0x01
0625 #define CLK_MIN_RATE        0x0057e4
0626 #define CLK_MAX_RATE        0x0395f8
0627 #define WDL_CFG_VAL     0x82
0628 #define DC_FILTER_VAL       0x31
0629 
0630 /* Infoframe */
0631 #define VS_HDMI_IF_UPDATE   0x0200
0632 #define VS_HDMI_IF      0x0201
0633 #define VS_BK1_IF_UPDATE    0x0220
0634 #define VS_BK1_IF       0x0221
0635 #define VS_BK2_IF_UPDATE    0x0240
0636 #define VS_BK2_IF       0x0241
0637 #define AVI_IF_UPDATE       0x0260
0638 #define AVI_IF          0x0261
0639 #define SPD_IF_UPDATE       0x0280
0640 #define SPD_IF          0x0281
0641 #define AUD_IF_UPDATE       0x02a0
0642 #define AUD_IF          0x02a1
0643 #define MPS_IF_UPDATE       0x02c0
0644 #define MPS_IF          0x02c1