/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) Rockchip Electronics Co., Ltd.
* Author: Chris Zhong <zyw@rock-chips.com>
*/
#ifndef _CDN_DP_REG_H
#define _CDN_DP_REG_H
#include <linux/bitops.h>
#define ADDR_IMEM 0 x10000
#define ADDR_DMEM 0 x20000
/* APB CFG addr */
#define APB_CTRL 0
#define XT_INT_CTRL 0 x04
#define MAILBOX_FULL_ADDR 0 x08
#define MAILBOX_EMPTY_ADDR 0 x0c
#define MAILBOX0_WR_DATA 0 x10
#define MAILBOX0_RD_DATA 0 x14
#define KEEP_ALIVE 0 x18
#define VER_L 0 x1c
#define VER_H 0 x20
#define VER_LIB_L_ADDR 0 x24
#define VER_LIB_H_ADDR 0 x28
#define SW_DEBUG_L 0 x2c
#define SW_DEBUG_H 0 x30
#define MAILBOX_INT_MASK 0 x34
#define MAILBOX_INT_STATUS 0 x38
#define SW_CLK_L 0 x3c
#define SW_CLK_H 0 x40
#define SW_EVENTS0 0 x44
#define SW_EVENTS1 0 x48
#define SW_EVENTS2 0 x4c
#define SW_EVENTS3 0 x50
#define XT_OCD_CTRL 0 x60
#define APB_INT_MASK 0 x6c
#define APB_STATUS_MASK 0 x70
/* audio decoder addr */
#define AUDIO_SRC_CNTL 0 x30000
#define AUDIO_SRC_CNFG 0 x30004
#define COM_CH_STTS_BITS 0 x30008
#define STTS_BIT_CH(x) (0 x3000c + ((x) << 2 ))
#define SPDIF_CTRL_ADDR 0 x3004c
#define SPDIF_CH1_CS_3100_ADDR 0 x30050
#define SPDIF_CH1_CS_6332_ADDR 0 x30054
#define SPDIF_CH1_CS_9564_ADDR 0 x30058
#define SPDIF_CH1_CS_12796_ADDR 0 x3005c
#define SPDIF_CH1_CS_159128_ADDR 0 x30060
#define SPDIF_CH1_CS_191160_ADDR 0 x30064
#define SPDIF_CH2_CS_3100_ADDR 0 x30068
#define SPDIF_CH2_CS_6332_ADDR 0 x3006c
#define SPDIF_CH2_CS_9564_ADDR 0 x30070
#define SPDIF_CH2_CS_12796_ADDR 0 x30074
#define SPDIF_CH2_CS_159128_ADDR 0 x30078
#define SPDIF_CH2_CS_191160_ADDR 0 x3007c
#define SMPL2PKT_CNTL 0 x30080
#define SMPL2PKT_CNFG 0 x30084
#define FIFO_CNTL 0 x30088
#define FIFO_STTS 0 x3008c
/* source pif addr */
#define SOURCE_PIF_WR_ADDR 0 x30800
#define SOURCE_PIF_WR_REQ 0 x30804
#define SOURCE_PIF_RD_ADDR 0 x30808
#define SOURCE_PIF_RD_REQ 0 x3080c
#define SOURCE_PIF_DATA_WR 0 x30810
#define SOURCE_PIF_DATA_RD 0 x30814
#define SOURCE_PIF_FIFO1_FLUSH 0 x30818
#define SOURCE_PIF_FIFO2_FLUSH 0 x3081c
#define SOURCE_PIF_STATUS 0 x30820
#define SOURCE_PIF_INTERRUPT_SOURCE 0 x30824
#define SOURCE_PIF_INTERRUPT_MASK 0 x30828
#define SOURCE_PIF_PKT_ALLOC_REG 0 x3082c
#define SOURCE_PIF_PKT_ALLOC_WR_EN 0 x30830
#define SOURCE_PIF_SW_RESET 0 x30834
/* below registers need access by mailbox */
/* source car addr */
#define SOURCE_HDTX_CAR 0 x0900
#define SOURCE_DPTX_CAR 0 x0904
#define SOURCE_PHY_CAR 0 x0908
#define SOURCE_CEC_CAR 0 x090c
#define SOURCE_CBUS_CAR 0 x0910
#define SOURCE_PKT_CAR 0 x0918
#define SOURCE_AIF_CAR 0 x091c
#define SOURCE_CIPHER_CAR 0 x0920
#define SOURCE_CRYPTO_CAR 0 x0924
/* clock meters addr */
#define CM_CTRL 0 x0a00
#define CM_I2S_CTRL 0 x0a04
#define CM_SPDIF_CTRL 0 x0a08
#define CM_VID_CTRL 0 x0a0c
#define CM_LANE_CTRL 0 x0a10
#define I2S_NM_STABLE 0 x0a14
#define I2S_NCTS_STABLE 0 x0a18
#define SPDIF_NM_STABLE 0 x0a1c
#define SPDIF_NCTS_STABLE 0 x0a20
#define NMVID_MEAS_STABLE 0 x0a24
#define I2S_MEAS 0 x0a40
#define SPDIF_MEAS 0 x0a80
#define NMVID_MEAS 0 x0ac0
/* source vif addr */
#define BND_HSYNC2VSYNC 0 x0b00
#define HSYNC2VSYNC_F1_L1 0 x0b04
#define HSYNC2VSYNC_F2_L1 0 x0b08
#define HSYNC2VSYNC_STATUS 0 x0b0c
#define HSYNC2VSYNC_POL_CTRL 0 x0b10
/* dptx phy addr */
#define DP_TX_PHY_CONFIG_REG 0 x2000
#define DP_TX_PHY_SW_RESET 0 x2004
#define DP_TX_PHY_SCRAMBLER_SEED 0 x2008
#define DP_TX_PHY_TRAINING_01_04 0 x200c
#define DP_TX_PHY_TRAINING_05_08 0 x2010
#define DP_TX_PHY_TRAINING_09_10 0 x2014
#define TEST_COR 0 x23fc
/* dptx hpd addr */
#define HPD_IRQ_DET_MIN_TIMER 0 x2100
#define HPD_IRQ_DET_MAX_TIMER 0 x2104
#define HPD_UNPLGED_DET_MIN_TIMER 0 x2108
#define HPD_STABLE_TIMER 0 x210c
#define HPD_FILTER_TIMER 0 x2110
#define HPD_EVENT_MASK 0 x211c
#define HPD_EVENT_DET 0 x2120
/* dpyx framer addr */
#define DP_FRAMER_GLOBAL_CONFIG 0 x2200
#define DP_SW_RESET 0 x2204
#define DP_FRAMER_TU 0 x2208
#define DP_FRAMER_PXL_REPR 0 x220c
#define DP_FRAMER_SP 0 x2210
#define AUDIO_PACK_CONTROL 0 x2214
#define DP_VC_TABLE(x) (0 x2218 + ((x) << 2 ))
#define DP_VB_ID 0 x2258
#define DP_MTPH_LVP_CONTROL 0 x225c
#define DP_MTPH_SYMBOL_VALUES 0 x2260
#define DP_MTPH_ECF_CONTROL 0 x2264
#define DP_MTPH_ACT_CONTROL 0 x2268
#define DP_MTPH_STATUS 0 x226c
#define DP_INTERRUPT_SOURCE 0 x2270
#define DP_INTERRUPT_MASK 0 x2274
#define DP_FRONT_BACK_PORCH 0 x2278
#define DP_BYTE_COUNT 0 x227c
/* dptx stream addr */
#define MSA_HORIZONTAL_0 0 x2280
#define MSA_HORIZONTAL_1 0 x2284
#define MSA_VERTICAL_0 0 x2288
#define MSA_VERTICAL_1 0 x228c
#define MSA_MISC 0 x2290
#define STREAM_CONFIG 0 x2294
#define AUDIO_PACK_STATUS 0 x2298
#define VIF_STATUS 0 x229c
#define PCK_STUFF_STATUS_0 0 x22a0
#define PCK_STUFF_STATUS_1 0 x22a4
#define INFO_PACK_STATUS 0 x22a8
#define RATE_GOVERNOR_STATUS 0 x22ac
#define DP_HORIZONTAL 0 x22b0
#define DP_VERTICAL_0 0 x22b4
#define DP_VERTICAL_1 0 x22b8
#define DP_BLOCK_SDP 0 x22bc
/* dptx glbl addr */
#define DPTX_LANE_EN 0 x2300
#define DPTX_ENHNCD 0 x2304
#define DPTX_INT_MASK 0 x2308
#define DPTX_INT_STATUS 0 x230c
/* dp aux addr */
#define DP_AUX_HOST_CONTROL 0 x2800
#define DP_AUX_INTERRUPT_SOURCE 0 x2804
#define DP_AUX_INTERRUPT_MASK 0 x2808
#define DP_AUX_SWAP_INVERSION_CONTROL 0 x280c
#define DP_AUX_SEND_NACK_TRANSACTION 0 x2810
#define DP_AUX_CLEAR_RX 0 x2814
#define DP_AUX_CLEAR_TX 0 x2818
#define DP_AUX_TIMER_STOP 0 x281c
#define DP_AUX_TIMER_CLEAR 0 x2820
#define DP_AUX_RESET_SW 0 x2824
#define DP_AUX_DIVIDE_2M 0 x2828
#define DP_AUX_TX_PREACHARGE_LENGTH 0 x282c
#define DP_AUX_FREQUENCY_1M_MAX 0 x2830
#define DP_AUX_FREQUENCY_1M_MIN 0 x2834
#define DP_AUX_RX_PRE_MIN 0 x2838
#define DP_AUX_RX_PRE_MAX 0 x283c
#define DP_AUX_TIMER_PRESET 0 x2840
#define DP_AUX_NACK_FORMAT 0 x2844
#define DP_AUX_TX_DATA 0 x2848
#define DP_AUX_RX_DATA 0 x284c
#define DP_AUX_TX_STATUS 0 x2850
#define DP_AUX_RX_STATUS 0 x2854
#define DP_AUX_RX_CYCLE_COUNTER 0 x2858
#define DP_AUX_MAIN_STATES 0 x285c
#define DP_AUX_MAIN_TIMER 0 x2860
#define DP_AUX_AFE_OUT 0 x2864
/* crypto addr */
#define CRYPTO_HDCP_REVISION 0 x5800
#define HDCP_CRYPTO_CONFIG 0 x5804
#define CRYPTO_INTERRUPT_SOURCE 0 x5808
#define CRYPTO_INTERRUPT_MASK 0 x580c
#define CRYPTO22_CONFIG 0 x5818
#define CRYPTO22_STATUS 0 x581c
#define SHA_256_DATA_IN 0 x583c
#define SHA_256_DATA_OUT_(x) (0 x5850 + ((x) << 2 ))
#define AES_32_KEY_(x) (0 x5870 + ((x) << 2 ))
#define AES_32_DATA_IN 0 x5880
#define AES_32_DATA_OUT_(x) (0 x5884 + ((x) << 2 ))
#define CRYPTO14_CONFIG 0 x58a0
#define CRYPTO14_STATUS 0 x58a4
#define CRYPTO14_PRNM_OUT 0 x58a8
#define CRYPTO14_KM_0 0 x58ac
#define CRYPTO14_KM_1 0 x58b0
#define CRYPTO14_AN_0 0 x58b4
#define CRYPTO14_AN_1 0 x58b8
#define CRYPTO14_YOUR_KSV_0 0 x58bc
#define CRYPTO14_YOUR_KSV_1 0 x58c0
#define CRYPTO14_MI_0 0 x58c4
#define CRYPTO14_MI_1 0 x58c8
#define CRYPTO14_TI_0 0 x58cc
#define CRYPTO14_KI_0 0 x58d0
#define CRYPTO14_KI_1 0 x58d4
#define CRYPTO14_BLOCKS_NUM 0 x58d8
#define CRYPTO14_KEY_MEM_DATA_0 0 x58dc
#define CRYPTO14_KEY_MEM_DATA_1 0 x58e0
#define CRYPTO14_SHA1_MSG_DATA 0 x58e4
#define CRYPTO14_SHA1_V_VALUE_(x) (0 x58e8 + ((x) << 2 ))
#define TRNG_CTRL 0 x58fc
#define TRNG_DATA_RDY 0 x5900
#define TRNG_DATA 0 x5904
/* cipher addr */
#define HDCP_REVISION 0 x60000
#define INTERRUPT_SOURCE 0 x60004
#define INTERRUPT_MASK 0 x60008
#define HDCP_CIPHER_CONFIG 0 x6000c
#define AES_128_KEY_0 0 x60010
#define AES_128_KEY_1 0 x60014
#define AES_128_KEY_2 0 x60018
#define AES_128_KEY_3 0 x6001c
#define AES_128_RANDOM_0 0 x60020
#define AES_128_RANDOM_1 0 x60024
#define CIPHER14_KM_0 0 x60028
#define CIPHER14_KM_1 0 x6002c
#define CIPHER14_STATUS 0 x60030
#define CIPHER14_RI_PJ_STATUS 0 x60034
#define CIPHER_MODE 0 x60038
#define CIPHER14_AN_0 0 x6003c
#define CIPHER14_AN_1 0 x60040
#define CIPHER22_AUTH 0 x60044
#define CIPHER14_R0_DP_STATUS 0 x60048
#define CIPHER14_BOOTSTRAP 0 x6004c
#define DPTX_FRMR_DATA_CLK_RSTN_EN BIT(11 )
#define DPTX_FRMR_DATA_CLK_EN BIT(10 )
#define DPTX_PHY_DATA_RSTN_EN BIT(9 )
#define DPTX_PHY_DATA_CLK_EN BIT(8 )
#define DPTX_PHY_CHAR_RSTN_EN BIT(7 )
#define DPTX_PHY_CHAR_CLK_EN BIT(6 )
#define SOURCE_AUX_SYS_CLK_RSTN_EN BIT(5 )
#define SOURCE_AUX_SYS_CLK_EN BIT(4 )
#define DPTX_SYS_CLK_RSTN_EN BIT(3 )
#define DPTX_SYS_CLK_EN BIT(2 )
#define CFG_DPTX_VIF_CLK_RSTN_EN BIT(1 )
#define CFG_DPTX_VIF_CLK_EN BIT(0 )
#define SOURCE_PHY_RSTN_EN BIT(1 )
#define SOURCE_PHY_CLK_EN BIT(0 )
#define SOURCE_PKT_SYS_RSTN_EN BIT(3 )
#define SOURCE_PKT_SYS_CLK_EN BIT(2 )
#define SOURCE_PKT_DATA_RSTN_EN BIT(1 )
#define SOURCE_PKT_DATA_CLK_EN BIT(0 )
#define SPDIF_CDR_CLK_RSTN_EN BIT(5 )
#define SPDIF_CDR_CLK_EN BIT(4 )
#define SOURCE_AIF_SYS_RSTN_EN BIT(3 )
#define SOURCE_AIF_SYS_CLK_EN BIT(2 )
#define SOURCE_AIF_CLK_RSTN_EN BIT(1 )
#define SOURCE_AIF_CLK_EN BIT(0 )
#define SOURCE_CIPHER_SYSTEM_CLK_RSTN_EN BIT(3 )
#define SOURCE_CIPHER_SYS_CLK_EN BIT(2 )
#define SOURCE_CIPHER_CHAR_CLK_RSTN_EN BIT(1 )
#define SOURCE_CIPHER_CHAR_CLK_EN BIT(0 )
#define SOURCE_CRYPTO_SYS_CLK_RSTN_EN BIT(1 )
#define SOURCE_CRYPTO_SYS_CLK_EN BIT(0 )
#define APB_IRAM_PATH BIT(2 )
#define APB_DRAM_PATH BIT(1 )
#define APB_XT_RESET BIT(0 )
#define MAILBOX_INT_MASK_BIT BIT(1 )
#define PIF_INT_MASK_BIT BIT(0 )
#define ALL_INT_MASK 3
/* mailbox */
#define MB_OPCODE_ID 0
#define MB_MODULE_ID 1
#define MB_SIZE_MSB_ID 2
#define MB_SIZE_LSB_ID 3
#define MB_DATA_ID 4
#define MB_MODULE_ID_DP_TX 0 x01
#define MB_MODULE_ID_HDCP_TX 0 x07
#define MB_MODULE_ID_HDCP_RX 0 x08
#define MB_MODULE_ID_HDCP_GENERAL 0 x09
#define MB_MODULE_ID_GENERAL 0 x0a
/* general opcode */
#define GENERAL_MAIN_CONTROL 0 x01
#define GENERAL_TEST_ECHO 0 x02
#define GENERAL_BUS_SETTINGS 0 x03
#define GENERAL_TEST_ACCESS 0 x04
#define DPTX_SET_POWER_MNG 0 x00
#define DPTX_SET_HOST_CAPABILITIES 0 x01
#define DPTX_GET_EDID 0 x02
#define DPTX_READ_DPCD 0 x03
#define DPTX_WRITE_DPCD 0 x04
#define DPTX_ENABLE_EVENT 0 x05
#define DPTX_WRITE_REGISTER 0 x06
#define DPTX_READ_REGISTER 0 x07
#define DPTX_WRITE_FIELD 0 x08
#define DPTX_TRAINING_CONTROL 0 x09
#define DPTX_READ_EVENT 0 x0a
#define DPTX_READ_LINK_STAT 0 x0b
#define DPTX_SET_VIDEO 0 x0c
#define DPTX_SET_AUDIO 0 x0d
#define DPTX_GET_LAST_AUX_STAUS 0 x0e
#define DPTX_SET_LINK_BREAK_POINT 0 x0f
#define DPTX_FORCE_LANES 0 x10
#define DPTX_HPD_STATE 0 x11
#define FW_STANDBY 0
#define FW_ACTIVE 1
#define DPTX_EVENT_ENABLE_HPD BIT(0 )
#define DPTX_EVENT_ENABLE_TRAINING BIT(1 )
#define LINK_TRAINING_NOT_ACTIVE 0
#define LINK_TRAINING_RUN 1
#define LINK_TRAINING_RESTART 2
#define CONTROL_VIDEO_IDLE 0
#define CONTROL_VIDEO_VALID 1
#define TU_CNT_RST_EN BIT(15 )
#define VIF_BYPASS_INTERLACE BIT(13 )
#define INTERLACE_FMT_DET BIT(12 )
#define INTERLACE_DTCT_WIN 0 x20
#define DP_FRAMER_SP_INTERLACE_EN BIT(2 )
#define DP_FRAMER_SP_HSP BIT(1 )
#define DP_FRAMER_SP_VSP BIT(0 )
/* capability */
#define AUX_HOST_INVERT 3
#define FAST_LT_SUPPORT 1
#define FAST_LT_NOT_SUPPORT 0
#define LANE_MAPPING_NORMAL 0 x1b
#define LANE_MAPPING_FLIPPED 0 xe4
#define ENHANCED 1
#define SCRAMBLER_EN BIT(4 )
#define FULL_LT_STARTED BIT(0 )
#define FASE_LT_STARTED BIT(1 )
#define CLK_RECOVERY_FINISHED BIT(2 )
#define EQ_PHASE_FINISHED BIT(3 )
#define FASE_LT_START_FINISHED BIT(4 )
#define CLK_RECOVERY_FAILED BIT(5 )
#define EQ_PHASE_FAILED BIT(6 )
#define FASE_LT_FAILED BIT(7 )
#define DPTX_HPD_EVENT BIT(0 )
#define DPTX_TRAINING_EVENT BIT(1 )
#define HDCP_TX_STATUS_EVENT BIT(4 )
#define HDCP2_TX_IS_KM_STORED_EVENT BIT(5 )
#define HDCP2_TX_STORE_KM_EVENT BIT(6 )
#define HDCP_TX_IS_RECEIVER_ID_VALID_EVENT BIT(7 )
#define TU_SIZE 30
#define CDN_DP_MAX_LINK_RATE DP_LINK_BW_5_4
/* audio */
#define AUDIO_PACK_EN BIT(8 )
#define SAMPLING_FREQ(x) (((x) & 0 xf) << 16 )
#define ORIGINAL_SAMP_FREQ(x) (((x) & 0 xf) << 24 )
#define SYNC_WR_TO_CH_ZERO BIT(1 )
#define I2S_DEC_START BIT(1 )
#define AUDIO_SW_RST BIT(0 )
#define SMPL2PKT_EN BIT(1 )
#define MAX_NUM_CH(x) (((x) & 0 x1f) - 1 )
#define NUM_OF_I2S_PORTS(x) ((((x) / 2 - 1 ) & 0 x3) << 5 )
#define AUDIO_TYPE_LPCM (2 << 7 )
#define CFG_SUB_PCKT_NUM(x) ((((x) - 1 ) & 0 x7) << 11 )
#define AUDIO_CH_NUM(x) ((((x) - 1 ) & 0 x1f) << 2 )
#define TRANS_SMPL_WIDTH_16 0
#define TRANS_SMPL_WIDTH_24 BIT(11 )
#define TRANS_SMPL_WIDTH_32 (2 << 11 )
#define I2S_DEC_PORT_EN(x) (((x) & 0 xf) << 17 )
#define SPDIF_ENABLE BIT(21 )
#define SPDIF_AVG_SEL BIT(20 )
#define SPDIF_JITTER_BYPASS BIT(19 )
#define SPDIF_FIFO_MID_RANGE(x) (((x) & 0 xff) << 11 )
#define SPDIF_JITTER_THRSH(x) (((x) & 0 xff) << 3 )
#define SPDIF_JITTER_AVG_WIN(x) ((x) & 0 x7)
/* Reference cycles when using lane clock as reference */
#define LANE_REF_CYC 0 x8000
enum voltage_swing_level {
VOLTAGE_LEVEL_0,
VOLTAGE_LEVEL_1,
VOLTAGE_LEVEL_2,
VOLTAGE_LEVEL_3,
};
enum pre_emphasis_level {
PRE_EMPHASIS_LEVEL_0,
PRE_EMPHASIS_LEVEL_1,
PRE_EMPHASIS_LEVEL_2,
PRE_EMPHASIS_LEVEL_3,
};
enum pattern_set {
PTS1 = BIT(0 ),
PTS2 = BIT(1 ),
PTS3 = BIT(2 ),
PTS4 = BIT(3 ),
DP_NONE = BIT(4 )
};
enum vic_color_depth {
BCS_6 = 0 x1,
BCS_8 = 0 x2,
BCS_10 = 0 x4,
BCS_12 = 0 x8,
BCS_16 = 0 x10,
};
enum vic_bt_type {
BT_601 = 0 x0,
BT_709 = 0 x1,
};
void cdn_dp_clock_reset(struct cdn_dp_device *dp);
void cdn_dp_set_fw_clk(struct cdn_dp_device *dp, unsigned long clk);
int cdn_dp_load_firmware(struct cdn_dp_device *dp, const u32 *i_mem,
u32 i_size, const u32 *d_mem, u32 d_size);
int cdn_dp_set_firmware_active(struct cdn_dp_device *dp, bool enable);
int cdn_dp_set_host_cap(struct cdn_dp_device *dp, u8 lanes, bool flip);
int cdn_dp_event_config(struct cdn_dp_device *dp);
u32 cdn_dp_get_event(struct cdn_dp_device *dp);
int cdn_dp_get_hpd_status(struct cdn_dp_device *dp);
int cdn_dp_dpcd_write(struct cdn_dp_device *dp, u32 addr, u8 value);
int cdn_dp_dpcd_read(struct cdn_dp_device *dp, u32 addr, u8 *data, u16 len);
int cdn_dp_get_edid_block(void *dp, u8 *edid,
unsigned int block, size_t length);
int cdn_dp_train_link(struct cdn_dp_device *dp);
int cdn_dp_set_video_status(struct cdn_dp_device *dp, int active);
int cdn_dp_config_video(struct cdn_dp_device *dp);
int cdn_dp_audio_stop(struct cdn_dp_device *dp, struct audio_info *audio);
int cdn_dp_audio_mute(struct cdn_dp_device *dp, bool enable);
int cdn_dp_audio_config(struct cdn_dp_device *dp, struct audio_info *audio);
#endif /* _CDN_DP_REG_H */
Messung V0.5 in Prozent C=97 H=89 G=93
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland