Path: blob/master/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
26516 views
/* SPDX-License-Identifier: GPL-2.0-only */1/*2* Copyright(c) 2016, Analogix Semiconductor.3*4* Based on anx7808 driver obtained from chromeos with copyright:5* Copyright(c) 2013, Google Inc.6*/7#ifndef _ANALOGIX_I2C_DPTX_H_8#define _ANALOGIX_I2C_DPTX_H_910/***************************************************************/11/* Register definitions for TX_P0 */12/***************************************************************/1314/* HDCP Status Register */15#define SP_TX_HDCP_STATUS_REG 0x0016#define SP_AUTH_FAIL BIT(5)17#define SP_AUTHEN_PASS BIT(1)1819/* HDCP Control Register 0 */20#define SP_HDCP_CTRL0_REG 0x0121#define SP_RX_REPEATER BIT(6)22#define SP_RE_AUTH BIT(5)23#define SP_SW_AUTH_OK BIT(4)24#define SP_HARD_AUTH_EN BIT(3)25#define SP_HDCP_ENC_EN BIT(2)26#define SP_BKSV_SRM_PASS BIT(1)27#define SP_KSVLIST_VLD BIT(0)28/* HDCP Function Enabled */29#define SP_HDCP_FUNCTION_ENABLED (BIT(0) | BIT(1) | BIT(2) | BIT(3))3031/* HDCP Receiver BSTATUS Register 0 */32#define SP_HDCP_RX_BSTATUS0_REG 0x1b33/* HDCP Receiver BSTATUS Register 1 */34#define SP_HDCP_RX_BSTATUS1_REG 0x1c3536/* HDCP Embedded "Blue Screen" Content Registers */37#define SP_HDCP_VID0_BLUE_SCREEN_REG 0x2c38#define SP_HDCP_VID1_BLUE_SCREEN_REG 0x2d39#define SP_HDCP_VID2_BLUE_SCREEN_REG 0x2e4041/* HDCP Wait R0 Timing Register */42#define SP_HDCP_WAIT_R0_TIME_REG 0x404344/* HDCP Link Integrity Check Timer Register */45#define SP_HDCP_LINK_CHECK_TIMER_REG 0x414647/* HDCP Repeater Ready Wait Timer Register */48#define SP_HDCP_RPTR_RDY_WAIT_TIME_REG 0x424950/* HDCP Auto Timer Register */51#define SP_HDCP_AUTO_TIMER_REG 0x515253/* HDCP Key Status Register */54#define SP_HDCP_KEY_STATUS_REG 0x5e5556/* HDCP Key Command Register */57#define SP_HDCP_KEY_COMMAND_REG 0x5f58#define SP_DISABLE_SYNC_HDCP BIT(2)5960/* OTP Memory Key Protection Registers */61#define SP_OTP_KEY_PROTECT1_REG 0x6062#define SP_OTP_KEY_PROTECT2_REG 0x6163#define SP_OTP_KEY_PROTECT3_REG 0x6264#define SP_OTP_PSW1 0xa265#define SP_OTP_PSW2 0x7e66#define SP_OTP_PSW3 0xc66768/* DP System Control Registers */69#define SP_DP_SYSTEM_CTRL_BASE (0x80 - 1)70/* Bits for DP System Control Register 2 */71#define SP_CHA_STA BIT(2)72/* Bits for DP System Control Register 3 */73#define SP_HPD_STATUS BIT(6)74#define SP_HPD_FORCE BIT(5)75#define SP_HPD_CTRL BIT(4)76#define SP_STRM_VALID BIT(2)77#define SP_STRM_FORCE BIT(1)78#define SP_STRM_CTRL BIT(0)79/* Bits for DP System Control Register 4 */80#define SP_ENHANCED_MODE BIT(3)8182/* DP Video Control Register */83#define SP_DP_VIDEO_CTRL_REG 0x8484#define SP_COLOR_F_MASK 0x0685#define SP_COLOR_F_SHIFT 186#define SP_BPC_MASK 0xe087#define SP_BPC_SHIFT 588# define SP_BPC_6BITS 0x0089# define SP_BPC_8BITS 0x0190# define SP_BPC_10BITS 0x0291# define SP_BPC_12BITS 0x039293/* DP Audio Control Register */94#define SP_DP_AUDIO_CTRL_REG 0x8795#define SP_AUD_EN BIT(0)9697/* 10us Pulse Generate Timer Registers */98#define SP_I2C_GEN_10US_TIMER0_REG 0x8899#define SP_I2C_GEN_10US_TIMER1_REG 0x89100101/* Packet Send Control Register */102#define SP_PACKET_SEND_CTRL_REG 0x90103#define SP_AUD_IF_UP BIT(7)104#define SP_AVI_IF_UD BIT(6)105#define SP_MPEG_IF_UD BIT(5)106#define SP_SPD_IF_UD BIT(4)107#define SP_AUD_IF_EN BIT(3)108#define SP_AVI_IF_EN BIT(2)109#define SP_MPEG_IF_EN BIT(1)110#define SP_SPD_IF_EN BIT(0)111112/* DP HDCP Control Register */113#define SP_DP_HDCP_CTRL_REG 0x92114#define SP_AUTO_EN BIT(7)115#define SP_AUTO_START BIT(5)116#define SP_LINK_POLLING BIT(1)117118/* DP Main Link Bandwidth Setting Register */119#define SP_DP_MAIN_LINK_BW_SET_REG 0xa0120#define SP_LINK_BW_SET_MASK 0x1f121#define SP_INITIAL_SLIM_M_AUD_SEL BIT(5)122123/* DP Lane Count Setting Register */124#define SP_DP_LANE_COUNT_SET_REG 0xa1125126/* DP Training Pattern Set Register */127#define SP_DP_TRAINING_PATTERN_SET_REG 0xa2128129/* DP Lane 0 Link Training Control Register */130#define SP_DP_LANE0_LT_CTRL_REG 0xa3131#define SP_TX_SW_SET_MASK 0x1b132#define SP_MAX_PRE_REACH BIT(5)133#define SP_MAX_DRIVE_REACH BIT(4)134#define SP_PRE_EMP_LEVEL1 BIT(3)135#define SP_DRVIE_CURRENT_LEVEL1 BIT(0)136137/* DP Link Training Control Register */138#define SP_DP_LT_CTRL_REG 0xa8139#define SP_DP_LT_INPROGRESS 0x80140#define SP_LT_ERROR_TYPE_MASK 0x70141# define SP_LT_NO_ERROR 0x00142# define SP_LT_AUX_WRITE_ERROR 0x01143# define SP_LT_MAX_DRIVE_REACHED 0x02144# define SP_LT_WRONG_LANE_COUNT_SET 0x03145# define SP_LT_LOOP_SAME_5_TIME 0x04146# define SP_LT_CR_FAIL_IN_EQ 0x05147# define SP_LT_EQ_LOOP_5_TIME 0x06148#define SP_LT_EN BIT(0)149150/* DP CEP Training Control Registers */151#define SP_DP_CEP_TRAINING_CTRL0_REG 0xa9152#define SP_DP_CEP_TRAINING_CTRL1_REG 0xaa153154/* DP Debug Register 1 */155#define SP_DP_DEBUG1_REG 0xb0156#define SP_DEBUG_PLL_LOCK BIT(4)157#define SP_POLLING_EN BIT(1)158159/* DP Polling Control Register */160#define SP_DP_POLLING_CTRL_REG 0xb4161#define SP_AUTO_POLLING_DISABLE BIT(0)162163/* DP Link Debug Control Register */164#define SP_DP_LINK_DEBUG_CTRL_REG 0xb8165#define SP_M_VID_DEBUG BIT(5)166#define SP_NEW_PRBS7 BIT(4)167#define SP_INSERT_ER BIT(1)168#define SP_PRBS31_EN BIT(0)169170/* AUX Misc control Register */171#define SP_AUX_MISC_CTRL_REG 0xbf172173/* DP PLL control Register */174#define SP_DP_PLL_CTRL_REG 0xc7175#define SP_PLL_RST BIT(6)176177/* DP Analog Power Down Register */178#define SP_DP_ANALOG_POWER_DOWN_REG 0xc8179#define SP_CH0_PD BIT(0)180181/* DP Misc Control Register */182#define SP_DP_MISC_CTRL_REG 0xcd183#define SP_EQ_TRAINING_LOOP BIT(6)184185/* DP Extra I2C Device Address Register */186#define SP_DP_EXTRA_I2C_DEV_ADDR_REG 0xce187#define SP_I2C_STRETCH_DISABLE BIT(7)188189#define SP_I2C_EXTRA_ADDR 0x50190191/* DP Downspread Control Register 1 */192#define SP_DP_DOWNSPREAD_CTRL1_REG 0xd0193194/* DP M Value Calculation Control Register */195#define SP_DP_M_CALCULATION_CTRL_REG 0xd9196#define SP_M_GEN_CLK_SEL BIT(0)197198/* AUX Channel Access Status Register */199#define SP_AUX_CH_STATUS_REG 0xe0200#define SP_AUX_STATUS 0x0f201202/* AUX Channel DEFER Control Register */203#define SP_AUX_DEFER_CTRL_REG 0xe2204#define SP_DEFER_CTRL_EN BIT(7)205206/* DP Buffer Data Count Register */207#define SP_BUF_DATA_COUNT_REG 0xe4208#define SP_BUF_DATA_COUNT_MASK 0x1f209#define SP_BUF_CLR BIT(7)210211/* DP AUX Channel Control Register 1 */212#define SP_DP_AUX_CH_CTRL1_REG 0xe5213#define SP_AUX_TX_COMM_MASK 0x0f214#define SP_AUX_LENGTH_MASK 0xf0215#define SP_AUX_LENGTH_SHIFT 4216217/* DP AUX CH Address Register 0 */218#define SP_AUX_ADDR_7_0_REG 0xe6219220/* DP AUX CH Address Register 1 */221#define SP_AUX_ADDR_15_8_REG 0xe7222223/* DP AUX CH Address Register 2 */224#define SP_AUX_ADDR_19_16_REG 0xe8225#define SP_AUX_ADDR_19_16_MASK 0x0f226227/* DP AUX Channel Control Register 2 */228#define SP_DP_AUX_CH_CTRL2_REG 0xe9229#define SP_AUX_SEL_RXCM BIT(6)230#define SP_AUX_CHSEL BIT(3)231#define SP_AUX_PN_INV BIT(2)232#define SP_ADDR_ONLY BIT(1)233#define SP_AUX_EN BIT(0)234235/* DP Video Stream Control InfoFrame Register */236#define SP_DP_3D_VSC_CTRL_REG 0xea237#define SP_INFO_FRAME_VSC_EN BIT(0)238239/* DP Video Stream Data Byte 1 Register */240#define SP_DP_VSC_DB1_REG 0xeb241242/* DP AUX Channel Control Register 3 */243#define SP_DP_AUX_CH_CTRL3_REG 0xec244#define SP_WAIT_COUNTER_7_0_MASK 0xff245246/* DP AUX Channel Control Register 4 */247#define SP_DP_AUX_CH_CTRL4_REG 0xed248249/* DP AUX Buffer Data Registers */250#define SP_DP_BUF_DATA0_REG 0xf0251252ssize_t anx_dp_aux_transfer(struct regmap *map_dptx,253struct drm_dp_aux_msg *msg);254255#endif256257258