mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 09:01:34 +00:00
f84d3d37b7
The RK3066 HDMI TX serves as interface between a LCD Controller and a HDMI bus. A HDMI TX consists of one HDMI transmitter controller and one HDMI transmitter PHY. The interface has three (3) 8-bit data channels which can be configured for a number of bus widths (8/10/12/16/20/24-bit) and different video formats (RGB, YCbCr). Features: HDMI version 1.4a, HDCP revision 1.4 and DVI version 1.0 compliant transmitter. Supports DTV resolutions from 480i to 1080i/p HD. Master I2C interface for a DDC connection. HDMI TX supports multiple power save modes. The HDMI TX input can switch between LCDC0 and LCDC1. (Sound support is not included in this patch) Signed-off-by: Zheng Yang <zhengyang@rock-chips.com> Signed-off-by: Johan Jonker <jbx6244@gmail.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/20190330095639.14626-2-jbx6244@gmail.com
230 lines
6.5 KiB
C
230 lines
6.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
|
|
* Zheng Yang <zhengyang@rock-chips.com>
|
|
*/
|
|
|
|
#ifndef __RK3066_HDMI_H__
|
|
#define __RK3066_HDMI_H__
|
|
|
|
#define GRF_SOC_CON0 0x150
|
|
#define HDMI_VIDEO_SEL BIT(14)
|
|
|
|
#define DDC_SEGMENT_ADDR 0x30
|
|
#define HDMI_SCL_RATE (50 * 1000)
|
|
#define HDMI_MAXIMUM_INFO_FRAME_SIZE 0x11
|
|
|
|
#define N_32K 0x1000
|
|
#define N_441K 0x1880
|
|
#define N_882K 0x3100
|
|
#define N_1764K 0x6200
|
|
#define N_48K 0x1800
|
|
#define N_96K 0x3000
|
|
#define N_192K 0x6000
|
|
|
|
#define HDMI_SYS_CTRL 0x000
|
|
#define HDMI_LR_SWAP_N3 0x004
|
|
#define HDMI_N2 0x008
|
|
#define HDMI_N1 0x00c
|
|
#define HDMI_SPDIF_FS_CTS_INT3 0x010
|
|
#define HDMI_CTS_INT2 0x014
|
|
#define HDMI_CTS_INT1 0x018
|
|
#define HDMI_CTS_EXT3 0x01c
|
|
#define HDMI_CTS_EXT2 0x020
|
|
#define HDMI_CTS_EXT1 0x024
|
|
#define HDMI_AUDIO_CTRL1 0x028
|
|
#define HDMI_AUDIO_CTRL2 0x02c
|
|
#define HDMI_I2S_AUDIO_CTRL 0x030
|
|
#define HDMI_I2S_SWAP 0x040
|
|
#define HDMI_AUDIO_STA_BIT_CTRL1 0x044
|
|
#define HDMI_AUDIO_STA_BIT_CTRL2 0x048
|
|
#define HDMI_AUDIO_SRC_NUM_AND_LENGTH 0x050
|
|
#define HDMI_AV_CTRL1 0x054
|
|
#define HDMI_VIDEO_CTRL1 0x058
|
|
#define HDMI_DEEP_COLOR_MODE 0x05c
|
|
|
|
#define HDMI_EXT_VIDEO_PARA 0x0c0
|
|
#define HDMI_EXT_HTOTAL_L 0x0c4
|
|
#define HDMI_EXT_HTOTAL_H 0x0c8
|
|
#define HDMI_EXT_HBLANK_L 0x0cc
|
|
#define HDMI_EXT_HBLANK_H 0x0d0
|
|
#define HDMI_EXT_HDELAY_L 0x0d4
|
|
#define HDMI_EXT_HDELAY_H 0x0d8
|
|
#define HDMI_EXT_HDURATION_L 0x0dc
|
|
#define HDMI_EXT_HDURATION_H 0x0e0
|
|
#define HDMI_EXT_VTOTAL_L 0x0e4
|
|
#define HDMI_EXT_VTOTAL_H 0x0e8
|
|
#define HDMI_AV_CTRL2 0x0ec
|
|
#define HDMI_EXT_VBLANK_L 0x0f4
|
|
#define HDMI_EXT_VBLANK_H 0x10c
|
|
#define HDMI_EXT_VDELAY 0x0f8
|
|
#define HDMI_EXT_VDURATION 0x0fc
|
|
|
|
#define HDMI_CP_MANU_SEND_CTRL 0x100
|
|
#define HDMI_CP_AUTO_SEND_CTRL 0x104
|
|
#define HDMI_AUTO_CHECKSUM_OPT 0x108
|
|
|
|
#define HDMI_VIDEO_CTRL2 0x114
|
|
|
|
#define HDMI_PHY_OPTION 0x144
|
|
|
|
#define HDMI_CP_BUF_INDEX 0x17c
|
|
#define HDMI_CP_BUF_ACC_HB0 0x180
|
|
#define HDMI_CP_BUF_ACC_HB1 0x184
|
|
#define HDMI_CP_BUF_ACC_HB2 0x188
|
|
#define HDMI_CP_BUF_ACC_PB0 0x18c
|
|
|
|
#define HDMI_DDC_READ_FIFO_ADDR 0x200
|
|
#define HDMI_DDC_BUS_FREQ_L 0x204
|
|
#define HDMI_DDC_BUS_FREQ_H 0x208
|
|
#define HDMI_DDC_BUS_CTRL 0x2dc
|
|
#define HDMI_DDC_I2C_LEN 0x278
|
|
#define HDMI_DDC_I2C_OFFSET 0x280
|
|
#define HDMI_DDC_I2C_CTRL 0x284
|
|
#define HDMI_DDC_I2C_READ_BUF0 0x288
|
|
#define HDMI_DDC_I2C_READ_BUF1 0x28c
|
|
#define HDMI_DDC_I2C_READ_BUF2 0x290
|
|
#define HDMI_DDC_I2C_READ_BUF3 0x294
|
|
#define HDMI_DDC_I2C_WRITE_BUF0 0x298
|
|
#define HDMI_DDC_I2C_WRITE_BUF1 0x29c
|
|
#define HDMI_DDC_I2C_WRITE_BUF2 0x2a0
|
|
#define HDMI_DDC_I2C_WRITE_BUF3 0x2a4
|
|
#define HDMI_DDC_I2C_WRITE_BUF4 0x2ac
|
|
#define HDMI_DDC_I2C_WRITE_BUF5 0x2b0
|
|
#define HDMI_DDC_I2C_WRITE_BUF6 0x2b4
|
|
|
|
#define HDMI_INTR_MASK1 0x248
|
|
#define HDMI_INTR_MASK2 0x24c
|
|
#define HDMI_INTR_STATUS1 0x250
|
|
#define HDMI_INTR_STATUS2 0x254
|
|
#define HDMI_INTR_MASK3 0x258
|
|
#define HDMI_INTR_MASK4 0x25c
|
|
#define HDMI_INTR_STATUS3 0x260
|
|
#define HDMI_INTR_STATUS4 0x264
|
|
|
|
#define HDMI_HDCP_CTRL 0x2bc
|
|
|
|
#define HDMI_EDID_SEGMENT_POINTER 0x310
|
|
#define HDMI_EDID_WORD_ADDR 0x314
|
|
#define HDMI_EDID_FIFO_ADDR 0x318
|
|
|
|
#define HDMI_HPG_MENS_STA 0x37c
|
|
|
|
#define HDMI_INTERNAL_CLK_DIVIDER 0x800
|
|
|
|
enum {
|
|
/* HDMI_SYS_CTRL */
|
|
HDMI_SYS_POWER_MODE_MASK = 0xf0,
|
|
HDMI_SYS_POWER_MODE_A = 0x10,
|
|
HDMI_SYS_POWER_MODE_B = 0x20,
|
|
HDMI_SYS_POWER_MODE_D = 0x40,
|
|
HDMI_SYS_POWER_MODE_E = 0x80,
|
|
HDMI_SYS_PLL_RESET_MASK = 0x0c,
|
|
HDMI_SYS_PLL_RESET = 0x0c,
|
|
HDMI_SYS_PLLB_RESET = 0x08,
|
|
|
|
/* HDMI_LR_SWAP_N3 */
|
|
HDMI_AUDIO_LR_SWAP_MASK = 0xf0,
|
|
HDMI_AUDIO_LR_SWAP_SUBPACKET0 = 0x10,
|
|
HDMI_AUDIO_LR_SWAP_SUBPACKET1 = 0x20,
|
|
HDMI_AUDIO_LR_SWAP_SUBPACKET2 = 0x40,
|
|
HDMI_AUDIO_LR_SWAP_SUBPACKET3 = 0x80,
|
|
HDMI_AUDIO_N_19_16_MASK = 0x0f,
|
|
|
|
/* HDMI_AUDIO_CTRL1 */
|
|
HDMI_AUDIO_EXTERNAL_CTS = BIT(7),
|
|
HDMI_AUDIO_INPUT_IIS = 0,
|
|
HDMI_AUDIO_INPUT_SPDIF = 0x08,
|
|
HDMI_AUDIO_INPUT_MCLK_ACTIVE = 0x04,
|
|
HDMI_AUDIO_INPUT_MCLK_DEACTIVE = 0,
|
|
HDMI_AUDIO_INPUT_MCLK_RATE_128X = 0,
|
|
HDMI_AUDIO_INPUT_MCLK_RATE_256X = 1,
|
|
HDMI_AUDIO_INPUT_MCLK_RATE_384X = 2,
|
|
HDMI_AUDIO_INPUT_MCLK_RATE_512X = 3,
|
|
|
|
/* HDMI_I2S_AUDIO_CTRL */
|
|
HDMI_AUDIO_I2S_FORMAT_STANDARD = 0,
|
|
HDMI_AUDIO_I2S_CHANNEL_1_2 = 0x04,
|
|
HDMI_AUDIO_I2S_CHANNEL_3_4 = 0x0c,
|
|
HDMI_AUDIO_I2S_CHANNEL_5_6 = 0x1c,
|
|
HDMI_AUDIO_I2S_CHANNEL_7_8 = 0x3c,
|
|
|
|
/* HDMI_AV_CTRL1 */
|
|
HDMI_AUDIO_SAMPLE_FRE_MASK = 0xf0,
|
|
HDMI_AUDIO_SAMPLE_FRE_32000 = 0x30,
|
|
HDMI_AUDIO_SAMPLE_FRE_44100 = 0,
|
|
HDMI_AUDIO_SAMPLE_FRE_48000 = 0x20,
|
|
HDMI_AUDIO_SAMPLE_FRE_88200 = 0x80,
|
|
HDMI_AUDIO_SAMPLE_FRE_96000 = 0xa0,
|
|
HDMI_AUDIO_SAMPLE_FRE_176400 = 0xc0,
|
|
HDMI_AUDIO_SAMPLE_FRE_192000 = 0xe0,
|
|
HDMI_AUDIO_SAMPLE_FRE_768000 = 0x90,
|
|
|
|
HDMI_VIDEO_INPUT_FORMAT_MASK = 0x0e,
|
|
HDMI_VIDEO_INPUT_RGB_YCBCR444 = 0,
|
|
HDMI_VIDEO_INPUT_YCBCR422 = 0x02,
|
|
HDMI_VIDEO_DE_MASK = 0x1,
|
|
HDMI_VIDEO_INTERNAL_DE = 0,
|
|
HDMI_VIDEO_EXTERNAL_DE = 0x01,
|
|
|
|
/* HDMI_VIDEO_CTRL1 */
|
|
HDMI_VIDEO_OUTPUT_FORMAT_MASK = 0xc0,
|
|
HDMI_VIDEO_OUTPUT_RGB444 = 0,
|
|
HDMI_VIDEO_OUTPUT_YCBCR444 = 0x40,
|
|
HDMI_VIDEO_OUTPUT_YCBCR422 = 0x80,
|
|
HDMI_VIDEO_INPUT_DATA_DEPTH_MASK = 0x30,
|
|
HDMI_VIDEO_INPUT_DATA_DEPTH_12BIT = 0,
|
|
HDMI_VIDEO_INPUT_DATA_DEPTH_10BIT = 0x10,
|
|
HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT = 0x30,
|
|
HDMI_VIDEO_INPUT_COLOR_MASK = 1,
|
|
HDMI_VIDEO_INPUT_COLOR_RGB = 0,
|
|
HDMI_VIDEO_INPUT_COLOR_YCBCR = 1,
|
|
|
|
/* HDMI_EXT_VIDEO_PARA */
|
|
HDMI_VIDEO_VSYNC_OFFSET_SHIFT = 4,
|
|
HDMI_VIDEO_VSYNC_ACTIVE_HIGH = BIT(3),
|
|
HDMI_VIDEO_VSYNC_ACTIVE_LOW = 0,
|
|
HDMI_VIDEO_HSYNC_ACTIVE_HIGH = BIT(2),
|
|
HDMI_VIDEO_HSYNC_ACTIVE_LOW = 0,
|
|
HDMI_VIDEO_MODE_INTERLACE = BIT(1),
|
|
HDMI_VIDEO_MODE_PROGRESSIVE = 0,
|
|
HDMI_EXT_VIDEO_SET_EN = BIT(0),
|
|
|
|
/* HDMI_CP_AUTO_SEND_CTRL */
|
|
|
|
/* HDMI_VIDEO_CTRL2 */
|
|
HDMI_VIDEO_AV_MUTE_MASK = 0xc0,
|
|
HDMI_VIDEO_CLR_AV_MUTE = BIT(7),
|
|
HDMI_VIDEO_SET_AV_MUTE = BIT(6),
|
|
HDMI_AUDIO_CP_LOGIC_RESET_MASK = BIT(2),
|
|
HDMI_AUDIO_CP_LOGIC_RESET = BIT(2),
|
|
HDMI_VIDEO_AUDIO_DISABLE_MASK = 0x3,
|
|
HDMI_AUDIO_DISABLE = BIT(1),
|
|
HDMI_VIDEO_DISABLE = BIT(0),
|
|
|
|
/* HDMI_CP_BUF_INDEX */
|
|
HDMI_INFOFRAME_VSI = 0x05,
|
|
HDMI_INFOFRAME_AVI = 0x06,
|
|
HDMI_INFOFRAME_AAI = 0x08,
|
|
|
|
/* HDMI_INTR_MASK1 */
|
|
/* HDMI_INTR_STATUS1 */
|
|
HDMI_INTR_HOTPLUG = BIT(7),
|
|
HDMI_INTR_MSENS = BIT(6),
|
|
HDMI_INTR_VSYNC = BIT(5),
|
|
HDMI_INTR_AUDIO_FIFO_FULL = BIT(4),
|
|
HDMI_INTR_EDID_MASK = 0x6,
|
|
HDMI_INTR_EDID_READY = BIT(2),
|
|
HDMI_INTR_EDID_ERR = BIT(1),
|
|
|
|
/* HDMI_HDCP_CTRL */
|
|
HDMI_VIDEO_MODE_MASK = BIT(1),
|
|
HDMI_VIDEO_MODE_HDMI = BIT(1),
|
|
|
|
/* HDMI_HPG_MENS_STA */
|
|
HDMI_HPG_IN_STATUS_HIGH = BIT(7),
|
|
HDMI_MSENS_IN_STATUS_HIGH = BIT(6),
|
|
};
|
|
|
|
#endif /* __RK3066_HDMI_H__ */
|