162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
462306a36Sopenharmony_ci *    Zheng Yang <zhengyang@rock-chips.com>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef __RK3066_HDMI_H__
862306a36Sopenharmony_ci#define __RK3066_HDMI_H__
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define GRF_SOC_CON0				0x150
1162306a36Sopenharmony_ci#define HDMI_VIDEO_SEL				BIT(14)
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define DDC_SEGMENT_ADDR			0x30
1462306a36Sopenharmony_ci#define HDMI_SCL_RATE				(50 * 1000)
1562306a36Sopenharmony_ci#define HDMI_MAXIMUM_INFO_FRAME_SIZE		0x11
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define N_32K					0x1000
1862306a36Sopenharmony_ci#define N_441K					0x1880
1962306a36Sopenharmony_ci#define N_882K					0x3100
2062306a36Sopenharmony_ci#define N_1764K					0x6200
2162306a36Sopenharmony_ci#define N_48K					0x1800
2262306a36Sopenharmony_ci#define N_96K					0x3000
2362306a36Sopenharmony_ci#define N_192K					0x6000
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#define HDMI_SYS_CTRL				0x000
2662306a36Sopenharmony_ci#define HDMI_LR_SWAP_N3				0x004
2762306a36Sopenharmony_ci#define HDMI_N2					0x008
2862306a36Sopenharmony_ci#define HDMI_N1					0x00c
2962306a36Sopenharmony_ci#define HDMI_SPDIF_FS_CTS_INT3			0x010
3062306a36Sopenharmony_ci#define HDMI_CTS_INT2				0x014
3162306a36Sopenharmony_ci#define HDMI_CTS_INT1				0x018
3262306a36Sopenharmony_ci#define HDMI_CTS_EXT3				0x01c
3362306a36Sopenharmony_ci#define HDMI_CTS_EXT2				0x020
3462306a36Sopenharmony_ci#define HDMI_CTS_EXT1				0x024
3562306a36Sopenharmony_ci#define HDMI_AUDIO_CTRL1			0x028
3662306a36Sopenharmony_ci#define HDMI_AUDIO_CTRL2			0x02c
3762306a36Sopenharmony_ci#define HDMI_I2S_AUDIO_CTRL			0x030
3862306a36Sopenharmony_ci#define HDMI_I2S_SWAP				0x040
3962306a36Sopenharmony_ci#define HDMI_AUDIO_STA_BIT_CTRL1		0x044
4062306a36Sopenharmony_ci#define HDMI_AUDIO_STA_BIT_CTRL2		0x048
4162306a36Sopenharmony_ci#define HDMI_AUDIO_SRC_NUM_AND_LENGTH		0x050
4262306a36Sopenharmony_ci#define HDMI_AV_CTRL1				0x054
4362306a36Sopenharmony_ci#define HDMI_VIDEO_CTRL1			0x058
4462306a36Sopenharmony_ci#define HDMI_DEEP_COLOR_MODE			0x05c
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#define HDMI_EXT_VIDEO_PARA			0x0c0
4762306a36Sopenharmony_ci#define HDMI_EXT_HTOTAL_L			0x0c4
4862306a36Sopenharmony_ci#define HDMI_EXT_HTOTAL_H			0x0c8
4962306a36Sopenharmony_ci#define HDMI_EXT_HBLANK_L			0x0cc
5062306a36Sopenharmony_ci#define HDMI_EXT_HBLANK_H			0x0d0
5162306a36Sopenharmony_ci#define HDMI_EXT_HDELAY_L			0x0d4
5262306a36Sopenharmony_ci#define HDMI_EXT_HDELAY_H			0x0d8
5362306a36Sopenharmony_ci#define HDMI_EXT_HDURATION_L			0x0dc
5462306a36Sopenharmony_ci#define HDMI_EXT_HDURATION_H			0x0e0
5562306a36Sopenharmony_ci#define HDMI_EXT_VTOTAL_L			0x0e4
5662306a36Sopenharmony_ci#define HDMI_EXT_VTOTAL_H			0x0e8
5762306a36Sopenharmony_ci#define HDMI_AV_CTRL2				0x0ec
5862306a36Sopenharmony_ci#define HDMI_EXT_VBLANK_L			0x0f4
5962306a36Sopenharmony_ci#define HDMI_EXT_VBLANK_H			0x10c
6062306a36Sopenharmony_ci#define HDMI_EXT_VDELAY				0x0f8
6162306a36Sopenharmony_ci#define HDMI_EXT_VDURATION			0x0fc
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#define HDMI_CP_MANU_SEND_CTRL			0x100
6462306a36Sopenharmony_ci#define HDMI_CP_AUTO_SEND_CTRL			0x104
6562306a36Sopenharmony_ci#define HDMI_AUTO_CHECKSUM_OPT			0x108
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci#define HDMI_VIDEO_CTRL2			0x114
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#define HDMI_PHY_OPTION				0x144
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci#define HDMI_CP_BUF_INDEX			0x17c
7262306a36Sopenharmony_ci#define HDMI_CP_BUF_ACC_HB0			0x180
7362306a36Sopenharmony_ci#define HDMI_CP_BUF_ACC_HB1			0x184
7462306a36Sopenharmony_ci#define HDMI_CP_BUF_ACC_HB2			0x188
7562306a36Sopenharmony_ci#define HDMI_CP_BUF_ACC_PB0			0x18c
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci#define HDMI_DDC_READ_FIFO_ADDR			0x200
7862306a36Sopenharmony_ci#define HDMI_DDC_BUS_FREQ_L			0x204
7962306a36Sopenharmony_ci#define HDMI_DDC_BUS_FREQ_H			0x208
8062306a36Sopenharmony_ci#define HDMI_DDC_BUS_CTRL			0x2dc
8162306a36Sopenharmony_ci#define HDMI_DDC_I2C_LEN			0x278
8262306a36Sopenharmony_ci#define HDMI_DDC_I2C_OFFSET			0x280
8362306a36Sopenharmony_ci#define HDMI_DDC_I2C_CTRL			0x284
8462306a36Sopenharmony_ci#define HDMI_DDC_I2C_READ_BUF0			0x288
8562306a36Sopenharmony_ci#define HDMI_DDC_I2C_READ_BUF1			0x28c
8662306a36Sopenharmony_ci#define HDMI_DDC_I2C_READ_BUF2			0x290
8762306a36Sopenharmony_ci#define HDMI_DDC_I2C_READ_BUF3			0x294
8862306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF0			0x298
8962306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF1			0x29c
9062306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF2			0x2a0
9162306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF3			0x2a4
9262306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF4			0x2ac
9362306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF5			0x2b0
9462306a36Sopenharmony_ci#define HDMI_DDC_I2C_WRITE_BUF6			0x2b4
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci#define HDMI_INTR_MASK1				0x248
9762306a36Sopenharmony_ci#define HDMI_INTR_MASK2				0x24c
9862306a36Sopenharmony_ci#define HDMI_INTR_STATUS1			0x250
9962306a36Sopenharmony_ci#define HDMI_INTR_STATUS2			0x254
10062306a36Sopenharmony_ci#define HDMI_INTR_MASK3				0x258
10162306a36Sopenharmony_ci#define HDMI_INTR_MASK4				0x25c
10262306a36Sopenharmony_ci#define HDMI_INTR_STATUS3			0x260
10362306a36Sopenharmony_ci#define HDMI_INTR_STATUS4			0x264
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci#define HDMI_HDCP_CTRL				0x2bc
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci#define HDMI_EDID_SEGMENT_POINTER		0x310
10862306a36Sopenharmony_ci#define HDMI_EDID_WORD_ADDR			0x314
10962306a36Sopenharmony_ci#define HDMI_EDID_FIFO_ADDR			0x318
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci#define HDMI_HPG_MENS_STA			0x37c
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci#define HDMI_INTERNAL_CLK_DIVIDER		0x800
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_cienum {
11662306a36Sopenharmony_ci	/* HDMI_SYS_CTRL */
11762306a36Sopenharmony_ci	HDMI_SYS_POWER_MODE_MASK = 0xf0,
11862306a36Sopenharmony_ci	HDMI_SYS_POWER_MODE_A = 0x10,
11962306a36Sopenharmony_ci	HDMI_SYS_POWER_MODE_B = 0x20,
12062306a36Sopenharmony_ci	HDMI_SYS_POWER_MODE_D = 0x40,
12162306a36Sopenharmony_ci	HDMI_SYS_POWER_MODE_E = 0x80,
12262306a36Sopenharmony_ci	HDMI_SYS_PLL_RESET_MASK = 0x0c,
12362306a36Sopenharmony_ci	HDMI_SYS_PLL_RESET = 0x0c,
12462306a36Sopenharmony_ci	HDMI_SYS_PLLB_RESET = 0x08,
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	/* HDMI_LR_SWAP_N3 */
12762306a36Sopenharmony_ci	HDMI_AUDIO_LR_SWAP_MASK = 0xf0,
12862306a36Sopenharmony_ci	HDMI_AUDIO_LR_SWAP_SUBPACKET0 = 0x10,
12962306a36Sopenharmony_ci	HDMI_AUDIO_LR_SWAP_SUBPACKET1 = 0x20,
13062306a36Sopenharmony_ci	HDMI_AUDIO_LR_SWAP_SUBPACKET2 = 0x40,
13162306a36Sopenharmony_ci	HDMI_AUDIO_LR_SWAP_SUBPACKET3 = 0x80,
13262306a36Sopenharmony_ci	HDMI_AUDIO_N_19_16_MASK = 0x0f,
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	/* HDMI_AUDIO_CTRL1 */
13562306a36Sopenharmony_ci	HDMI_AUDIO_EXTERNAL_CTS = BIT(7),
13662306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_IIS = 0,
13762306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_SPDIF = 0x08,
13862306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_ACTIVE = 0x04,
13962306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_DEACTIVE = 0,
14062306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_RATE_128X = 0,
14162306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_RATE_256X = 1,
14262306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_RATE_384X = 2,
14362306a36Sopenharmony_ci	HDMI_AUDIO_INPUT_MCLK_RATE_512X = 3,
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	/* HDMI_I2S_AUDIO_CTRL */
14662306a36Sopenharmony_ci	HDMI_AUDIO_I2S_FORMAT_STANDARD = 0,
14762306a36Sopenharmony_ci	HDMI_AUDIO_I2S_CHANNEL_1_2 = 0x04,
14862306a36Sopenharmony_ci	HDMI_AUDIO_I2S_CHANNEL_3_4 = 0x0c,
14962306a36Sopenharmony_ci	HDMI_AUDIO_I2S_CHANNEL_5_6 = 0x1c,
15062306a36Sopenharmony_ci	HDMI_AUDIO_I2S_CHANNEL_7_8 = 0x3c,
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci	/* HDMI_AV_CTRL1 */
15362306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_MASK = 0xf0,
15462306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_32000 = 0x30,
15562306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_44100 = 0,
15662306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_48000 = 0x20,
15762306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_88200 = 0x80,
15862306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_96000 = 0xa0,
15962306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_176400 = 0xc0,
16062306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_192000 = 0xe0,
16162306a36Sopenharmony_ci	HDMI_AUDIO_SAMPLE_FRE_768000 = 0x90,
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_FORMAT_MASK = 0x0e,
16462306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_RGB_YCBCR444 = 0,
16562306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_YCBCR422 = 0x02,
16662306a36Sopenharmony_ci	HDMI_VIDEO_DE_MASK = 0x1,
16762306a36Sopenharmony_ci	HDMI_VIDEO_INTERNAL_DE = 0,
16862306a36Sopenharmony_ci	HDMI_VIDEO_EXTERNAL_DE = 0x01,
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	/* HDMI_VIDEO_CTRL1 */
17162306a36Sopenharmony_ci	HDMI_VIDEO_OUTPUT_FORMAT_MASK = 0xc0,
17262306a36Sopenharmony_ci	HDMI_VIDEO_OUTPUT_RGB444 = 0,
17362306a36Sopenharmony_ci	HDMI_VIDEO_OUTPUT_YCBCR444 = 0x40,
17462306a36Sopenharmony_ci	HDMI_VIDEO_OUTPUT_YCBCR422 = 0x80,
17562306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_DATA_DEPTH_MASK = 0x30,
17662306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_DATA_DEPTH_12BIT = 0,
17762306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_DATA_DEPTH_10BIT = 0x10,
17862306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT = 0x30,
17962306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_COLOR_MASK = 1,
18062306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_COLOR_RGB = 0,
18162306a36Sopenharmony_ci	HDMI_VIDEO_INPUT_COLOR_YCBCR = 1,
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	/* HDMI_EXT_VIDEO_PARA */
18462306a36Sopenharmony_ci	HDMI_VIDEO_VSYNC_OFFSET_SHIFT = 4,
18562306a36Sopenharmony_ci	HDMI_VIDEO_VSYNC_ACTIVE_HIGH = BIT(3),
18662306a36Sopenharmony_ci	HDMI_VIDEO_VSYNC_ACTIVE_LOW = 0,
18762306a36Sopenharmony_ci	HDMI_VIDEO_HSYNC_ACTIVE_HIGH = BIT(2),
18862306a36Sopenharmony_ci	HDMI_VIDEO_HSYNC_ACTIVE_LOW = 0,
18962306a36Sopenharmony_ci	HDMI_VIDEO_MODE_INTERLACE = BIT(1),
19062306a36Sopenharmony_ci	HDMI_VIDEO_MODE_PROGRESSIVE = 0,
19162306a36Sopenharmony_ci	HDMI_EXT_VIDEO_SET_EN = BIT(0),
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci	/* HDMI_CP_AUTO_SEND_CTRL */
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci	/* HDMI_VIDEO_CTRL2 */
19662306a36Sopenharmony_ci	HDMI_VIDEO_AV_MUTE_MASK = 0xc0,
19762306a36Sopenharmony_ci	HDMI_VIDEO_CLR_AV_MUTE = BIT(7),
19862306a36Sopenharmony_ci	HDMI_VIDEO_SET_AV_MUTE = BIT(6),
19962306a36Sopenharmony_ci	HDMI_AUDIO_CP_LOGIC_RESET_MASK = BIT(2),
20062306a36Sopenharmony_ci	HDMI_AUDIO_CP_LOGIC_RESET = BIT(2),
20162306a36Sopenharmony_ci	HDMI_VIDEO_AUDIO_DISABLE_MASK = 0x3,
20262306a36Sopenharmony_ci	HDMI_AUDIO_DISABLE = BIT(1),
20362306a36Sopenharmony_ci	HDMI_VIDEO_DISABLE = BIT(0),
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci	/* HDMI_CP_BUF_INDEX */
20662306a36Sopenharmony_ci	HDMI_INFOFRAME_VSI = 0x05,
20762306a36Sopenharmony_ci	HDMI_INFOFRAME_AVI = 0x06,
20862306a36Sopenharmony_ci	HDMI_INFOFRAME_AAI = 0x08,
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	/* HDMI_INTR_MASK1 */
21162306a36Sopenharmony_ci	/* HDMI_INTR_STATUS1 */
21262306a36Sopenharmony_ci	HDMI_INTR_HOTPLUG = BIT(7),
21362306a36Sopenharmony_ci	HDMI_INTR_MSENS = BIT(6),
21462306a36Sopenharmony_ci	HDMI_INTR_VSYNC = BIT(5),
21562306a36Sopenharmony_ci	HDMI_INTR_AUDIO_FIFO_FULL = BIT(4),
21662306a36Sopenharmony_ci	HDMI_INTR_EDID_MASK = 0x6,
21762306a36Sopenharmony_ci	HDMI_INTR_EDID_READY = BIT(2),
21862306a36Sopenharmony_ci	HDMI_INTR_EDID_ERR = BIT(1),
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci	/* HDMI_HDCP_CTRL */
22162306a36Sopenharmony_ci	HDMI_VIDEO_MODE_MASK = BIT(1),
22262306a36Sopenharmony_ci	HDMI_VIDEO_MODE_HDMI = BIT(1),
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci	/* HDMI_HPG_MENS_STA */
22562306a36Sopenharmony_ci	HDMI_HPG_IN_STATUS_HIGH = BIT(7),
22662306a36Sopenharmony_ci	HDMI_MSENS_IN_STATUS_HIGH = BIT(6),
22762306a36Sopenharmony_ci};
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci#endif /* __RK3066_HDMI_H__ */
230