| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | /* |
| 3 | * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd |
| 4 | * Zheng Yang <zhengyang@rock-chips.com> |
| 5 | */ |
| 6 | |
| 7 | #ifndef __RK3066_HDMI_H__ |
| 8 | #define __RK3066_HDMI_H__ |
| 9 | |
| 10 | #define GRF_SOC_CON0 0x150 |
| 11 | #define HDMI_VIDEO_SEL BIT(14) |
| 12 | |
| 13 | #define DDC_SEGMENT_ADDR 0x30 |
| 14 | #define HDMI_SCL_RATE (50 * 1000) |
| 15 | #define HDMI_MAXIMUM_INFO_FRAME_SIZE 0x11 |
| 16 | |
| 17 | #define N_32K 0x1000 |
| 18 | #define N_441K 0x1880 |
| 19 | #define N_882K 0x3100 |
| 20 | #define N_1764K 0x6200 |
| 21 | #define N_48K 0x1800 |
| 22 | #define N_96K 0x3000 |
| 23 | #define N_192K 0x6000 |
| 24 | |
| 25 | #define HDMI_SYS_CTRL 0x000 |
| 26 | #define HDMI_LR_SWAP_N3 0x004 |
| 27 | #define HDMI_N2 0x008 |
| 28 | #define HDMI_N1 0x00c |
| 29 | #define HDMI_SPDIF_FS_CTS_INT3 0x010 |
| 30 | #define HDMI_CTS_INT2 0x014 |
| 31 | #define HDMI_CTS_INT1 0x018 |
| 32 | #define HDMI_CTS_EXT3 0x01c |
| 33 | #define HDMI_CTS_EXT2 0x020 |
| 34 | #define HDMI_CTS_EXT1 0x024 |
| 35 | #define HDMI_AUDIO_CTRL1 0x028 |
| 36 | #define HDMI_AUDIO_CTRL2 0x02c |
| 37 | #define HDMI_I2S_AUDIO_CTRL 0x030 |
| 38 | #define HDMI_I2S_SWAP 0x040 |
| 39 | #define HDMI_AUDIO_STA_BIT_CTRL1 0x044 |
| 40 | #define HDMI_AUDIO_STA_BIT_CTRL2 0x048 |
| 41 | #define HDMI_AUDIO_SRC_NUM_AND_LENGTH 0x050 |
| 42 | #define HDMI_AV_CTRL1 0x054 |
| 43 | #define HDMI_VIDEO_CTRL1 0x058 |
| 44 | #define HDMI_DEEP_COLOR_MODE 0x05c |
| 45 | |
| 46 | #define HDMI_EXT_VIDEO_PARA 0x0c0 |
| 47 | #define HDMI_EXT_HTOTAL_L 0x0c4 |
| 48 | #define HDMI_EXT_HTOTAL_H 0x0c8 |
| 49 | #define HDMI_EXT_HBLANK_L 0x0cc |
| 50 | #define HDMI_EXT_HBLANK_H 0x0d0 |
| 51 | #define HDMI_EXT_HDELAY_L 0x0d4 |
| 52 | #define HDMI_EXT_HDELAY_H 0x0d8 |
| 53 | #define HDMI_EXT_HDURATION_L 0x0dc |
| 54 | #define HDMI_EXT_HDURATION_H 0x0e0 |
| 55 | #define HDMI_EXT_VTOTAL_L 0x0e4 |
| 56 | #define HDMI_EXT_VTOTAL_H 0x0e8 |
| 57 | #define HDMI_AV_CTRL2 0x0ec |
| 58 | #define HDMI_EXT_VBLANK_L 0x0f4 |
| 59 | #define HDMI_EXT_VBLANK_H 0x10c |
| 60 | #define HDMI_EXT_VDELAY 0x0f8 |
| 61 | #define HDMI_EXT_VDURATION 0x0fc |
| 62 | |
| 63 | #define HDMI_CP_MANU_SEND_CTRL 0x100 |
| 64 | #define HDMI_CP_AUTO_SEND_CTRL 0x104 |
| 65 | #define HDMI_AUTO_CHECKSUM_OPT 0x108 |
| 66 | |
| 67 | #define HDMI_VIDEO_CTRL2 0x114 |
| 68 | |
| 69 | #define HDMI_PHY_OPTION 0x144 |
| 70 | |
| 71 | #define HDMI_CP_BUF_INDEX 0x17c |
| 72 | #define HDMI_CP_BUF_ACC_HB0 0x180 |
| 73 | #define HDMI_CP_BUF_ACC_HB1 0x184 |
| 74 | #define HDMI_CP_BUF_ACC_HB2 0x188 |
| 75 | #define HDMI_CP_BUF_ACC_PB0 0x18c |
| 76 | |
| 77 | #define HDMI_DDC_READ_FIFO_ADDR 0x200 |
| 78 | #define HDMI_DDC_BUS_FREQ_L 0x204 |
| 79 | #define HDMI_DDC_BUS_FREQ_H 0x208 |
| 80 | #define HDMI_DDC_BUS_CTRL 0x2dc |
| 81 | #define HDMI_DDC_I2C_LEN 0x278 |
| 82 | #define HDMI_DDC_I2C_OFFSET 0x280 |
| 83 | #define HDMI_DDC_I2C_CTRL 0x284 |
| 84 | #define HDMI_DDC_I2C_READ_BUF0 0x288 |
| 85 | #define HDMI_DDC_I2C_READ_BUF1 0x28c |
| 86 | #define HDMI_DDC_I2C_READ_BUF2 0x290 |
| 87 | #define HDMI_DDC_I2C_READ_BUF3 0x294 |
| 88 | #define HDMI_DDC_I2C_WRITE_BUF0 0x298 |
| 89 | #define HDMI_DDC_I2C_WRITE_BUF1 0x29c |
| 90 | #define HDMI_DDC_I2C_WRITE_BUF2 0x2a0 |
| 91 | #define HDMI_DDC_I2C_WRITE_BUF3 0x2a4 |
| 92 | #define HDMI_DDC_I2C_WRITE_BUF4 0x2ac |
| 93 | #define HDMI_DDC_I2C_WRITE_BUF5 0x2b0 |
| 94 | #define HDMI_DDC_I2C_WRITE_BUF6 0x2b4 |
| 95 | |
| 96 | #define HDMI_INTR_MASK1 0x248 |
| 97 | #define HDMI_INTR_MASK2 0x24c |
| 98 | #define HDMI_INTR_STATUS1 0x250 |
| 99 | #define HDMI_INTR_STATUS2 0x254 |
| 100 | #define HDMI_INTR_MASK3 0x258 |
| 101 | #define HDMI_INTR_MASK4 0x25c |
| 102 | #define HDMI_INTR_STATUS3 0x260 |
| 103 | #define HDMI_INTR_STATUS4 0x264 |
| 104 | |
| 105 | #define HDMI_HDCP_CTRL 0x2bc |
| 106 | |
| 107 | #define HDMI_EDID_SEGMENT_POINTER 0x310 |
| 108 | #define HDMI_EDID_WORD_ADDR 0x314 |
| 109 | #define HDMI_EDID_FIFO_ADDR 0x318 |
| 110 | |
| 111 | #define HDMI_HPG_MENS_STA 0x37c |
| 112 | |
| 113 | #define HDMI_INTERNAL_CLK_DIVIDER 0x800 |
| 114 | |
| 115 | enum { |
| 116 | /* HDMI_SYS_CTRL */ |
| 117 | HDMI_SYS_POWER_MODE_MASK = 0xf0, |
| 118 | HDMI_SYS_POWER_MODE_A = 0x10, |
| 119 | HDMI_SYS_POWER_MODE_B = 0x20, |
| 120 | HDMI_SYS_POWER_MODE_D = 0x40, |
| 121 | HDMI_SYS_POWER_MODE_E = 0x80, |
| 122 | HDMI_SYS_PLL_RESET_MASK = 0x0c, |
| 123 | HDMI_SYS_PLL_RESET = 0x0c, |
| 124 | HDMI_SYS_PLLB_RESET = 0x08, |
| 125 | |
| 126 | /* HDMI_LR_SWAP_N3 */ |
| 127 | HDMI_AUDIO_LR_SWAP_MASK = 0xf0, |
| 128 | HDMI_AUDIO_LR_SWAP_SUBPACKET0 = 0x10, |
| 129 | HDMI_AUDIO_LR_SWAP_SUBPACKET1 = 0x20, |
| 130 | HDMI_AUDIO_LR_SWAP_SUBPACKET2 = 0x40, |
| 131 | HDMI_AUDIO_LR_SWAP_SUBPACKET3 = 0x80, |
| 132 | HDMI_AUDIO_N_19_16_MASK = 0x0f, |
| 133 | |
| 134 | /* HDMI_AUDIO_CTRL1 */ |
| 135 | HDMI_AUDIO_EXTERNAL_CTS = BIT(7), |
| 136 | HDMI_AUDIO_INPUT_IIS = 0, |
| 137 | HDMI_AUDIO_INPUT_SPDIF = 0x08, |
| 138 | HDMI_AUDIO_INPUT_MCLK_ACTIVE = 0x04, |
| 139 | HDMI_AUDIO_INPUT_MCLK_DEACTIVE = 0, |
| 140 | HDMI_AUDIO_INPUT_MCLK_RATE_128X = 0, |
| 141 | HDMI_AUDIO_INPUT_MCLK_RATE_256X = 1, |
| 142 | HDMI_AUDIO_INPUT_MCLK_RATE_384X = 2, |
| 143 | HDMI_AUDIO_INPUT_MCLK_RATE_512X = 3, |
| 144 | |
| 145 | /* HDMI_I2S_AUDIO_CTRL */ |
| 146 | HDMI_AUDIO_I2S_FORMAT_STANDARD = 0, |
| 147 | HDMI_AUDIO_I2S_CHANNEL_1_2 = 0x04, |
| 148 | HDMI_AUDIO_I2S_CHANNEL_3_4 = 0x0c, |
| 149 | HDMI_AUDIO_I2S_CHANNEL_5_6 = 0x1c, |
| 150 | HDMI_AUDIO_I2S_CHANNEL_7_8 = 0x3c, |
| 151 | |
| 152 | /* HDMI_AV_CTRL1 */ |
| 153 | HDMI_AUDIO_SAMPLE_FRE_MASK = 0xf0, |
| 154 | HDMI_AUDIO_SAMPLE_FRE_32000 = 0x30, |
| 155 | HDMI_AUDIO_SAMPLE_FRE_44100 = 0, |
| 156 | HDMI_AUDIO_SAMPLE_FRE_48000 = 0x20, |
| 157 | HDMI_AUDIO_SAMPLE_FRE_88200 = 0x80, |
| 158 | HDMI_AUDIO_SAMPLE_FRE_96000 = 0xa0, |
| 159 | HDMI_AUDIO_SAMPLE_FRE_176400 = 0xc0, |
| 160 | HDMI_AUDIO_SAMPLE_FRE_192000 = 0xe0, |
| 161 | HDMI_AUDIO_SAMPLE_FRE_768000 = 0x90, |
| 162 | |
| 163 | HDMI_VIDEO_INPUT_FORMAT_MASK = 0x0e, |
| 164 | HDMI_VIDEO_INPUT_RGB_YCBCR444 = 0, |
| 165 | HDMI_VIDEO_INPUT_YCBCR422 = 0x02, |
| 166 | HDMI_VIDEO_DE_MASK = 0x1, |
| 167 | HDMI_VIDEO_INTERNAL_DE = 0, |
| 168 | HDMI_VIDEO_EXTERNAL_DE = 0x01, |
| 169 | |
| 170 | /* HDMI_VIDEO_CTRL1 */ |
| 171 | HDMI_VIDEO_OUTPUT_FORMAT_MASK = 0xc0, |
| 172 | HDMI_VIDEO_OUTPUT_RGB444 = 0, |
| 173 | HDMI_VIDEO_OUTPUT_YCBCR444 = 0x40, |
| 174 | HDMI_VIDEO_OUTPUT_YCBCR422 = 0x80, |
| 175 | HDMI_VIDEO_INPUT_DATA_DEPTH_MASK = 0x30, |
| 176 | HDMI_VIDEO_INPUT_DATA_DEPTH_12BIT = 0, |
| 177 | HDMI_VIDEO_INPUT_DATA_DEPTH_10BIT = 0x10, |
| 178 | HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT = 0x30, |
| 179 | HDMI_VIDEO_INPUT_COLOR_MASK = 1, |
| 180 | HDMI_VIDEO_INPUT_COLOR_RGB = 0, |
| 181 | HDMI_VIDEO_INPUT_COLOR_YCBCR = 1, |
| 182 | |
| 183 | /* HDMI_EXT_VIDEO_PARA */ |
| 184 | HDMI_VIDEO_VSYNC_OFFSET_SHIFT = 4, |
| 185 | HDMI_VIDEO_VSYNC_ACTIVE_HIGH = BIT(3), |
| 186 | HDMI_VIDEO_VSYNC_ACTIVE_LOW = 0, |
| 187 | HDMI_VIDEO_HSYNC_ACTIVE_HIGH = BIT(2), |
| 188 | HDMI_VIDEO_HSYNC_ACTIVE_LOW = 0, |
| 189 | HDMI_VIDEO_MODE_INTERLACE = BIT(1), |
| 190 | HDMI_VIDEO_MODE_PROGRESSIVE = 0, |
| 191 | HDMI_EXT_VIDEO_SET_EN = BIT(0), |
| 192 | |
| 193 | /* HDMI_CP_AUTO_SEND_CTRL */ |
| 194 | |
| 195 | /* HDMI_VIDEO_CTRL2 */ |
| 196 | HDMI_VIDEO_AV_MUTE_MASK = 0xc0, |
| 197 | HDMI_VIDEO_CLR_AV_MUTE = BIT(7), |
| 198 | HDMI_VIDEO_SET_AV_MUTE = BIT(6), |
| 199 | HDMI_AUDIO_CP_LOGIC_RESET_MASK = BIT(2), |
| 200 | HDMI_AUDIO_CP_LOGIC_RESET = BIT(2), |
| 201 | HDMI_VIDEO_AUDIO_DISABLE_MASK = 0x3, |
| 202 | HDMI_AUDIO_DISABLE = BIT(1), |
| 203 | HDMI_VIDEO_DISABLE = BIT(0), |
| 204 | |
| 205 | /* HDMI_CP_BUF_INDEX */ |
| 206 | HDMI_INFOFRAME_VSI = 0x05, |
| 207 | HDMI_INFOFRAME_AVI = 0x06, |
| 208 | HDMI_INFOFRAME_AAI = 0x08, |
| 209 | |
| 210 | /* HDMI_INTR_MASK1 */ |
| 211 | /* HDMI_INTR_STATUS1 */ |
| 212 | HDMI_INTR_HOTPLUG = BIT(7), |
| 213 | HDMI_INTR_MSENS = BIT(6), |
| 214 | HDMI_INTR_VSYNC = BIT(5), |
| 215 | HDMI_INTR_AUDIO_FIFO_FULL = BIT(4), |
| 216 | HDMI_INTR_EDID_MASK = 0x6, |
| 217 | HDMI_INTR_EDID_READY = BIT(2), |
| 218 | HDMI_INTR_EDID_ERR = BIT(1), |
| 219 | |
| 220 | /* HDMI_HDCP_CTRL */ |
| 221 | HDMI_VIDEO_MODE_MASK = BIT(1), |
| 222 | HDMI_VIDEO_MODE_HDMI = BIT(1), |
| 223 | |
| 224 | /* HDMI_HPG_MENS_STA */ |
| 225 | HDMI_HPG_IN_STATUS_HIGH = BIT(7), |
| 226 | HDMI_MSENS_IN_STATUS_HIGH = BIT(6), |
| 227 | }; |
| 228 | |
| 229 | #endif /* __RK3066_HDMI_H__ */ |