On 04.06.2019 14:22, Torsten Duwe wrote: > From: Icenowy Zheng <icenowy@xxxxxxx> > > Some definitions currently in analogix-anx78xx.h are not restricted to > the ANX78xx series, but also applicable to other DisplayPort > transmitters by Analogix. > > Split out them to dedicated headers, and make analogix-anx78xx.h include > them. > > Signed-off-by: Icenowy Zheng <icenowy@xxxxxxx> > Signed-off-by: Vasily Khoruzhick <anarsoul@xxxxxxxxx> > Signed-off-by: Torsten Duwe <duwe@xxxxxxx> > --- > drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h | 465 +-------------------- > .../gpu/drm/bridge/analogix/analogix-i2c-dptx.h | 256 ++++++++++++ > .../drm/bridge/analogix/analogix-i2c-txcommon.h | 242 +++++++++++ > 3 files changed, 503 insertions(+), 460 deletions(-) > create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h > create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h > index 38753c870137..3fbe2c3244fd 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h > @@ -11,13 +11,15 @@ > * GNU General Public License for more details. > * > */ > - > #ifndef __ANX78xx_H > #define __ANX78xx_H > > -#define TX_P0 0x70 > +#include "analogix-i2c-dptx.h" > +#include "analogix-i2c-txcommon.h" > + > +#define TX_P0 ANALOGIX_I2C_DPTX > #define TX_P1 0x7a > -#define TX_P2 0x72 > +#define TX_P2 ANALOGIX_I2C_TXCOMMON > > #define RX_P0 0x7e > #define RX_P1 0x80 > @@ -225,463 +227,6 @@ > #define SP_CLEAR_AVMUTE BIT(4) > #define SP_SET_AVMUTE BIT(0) > > -/***************************************************************/ > -/* Register definition of device address 0x70 */ > -/***************************************************************/ > - > -/* HDCP Status Register */ > -#define SP_TX_HDCP_STATUS_REG 0x00 > -#define SP_AUTH_FAIL BIT(5) > -#define SP_AUTHEN_PASS BIT(1) > - > -/* HDCP Control Register 0 */ > -#define SP_HDCP_CTRL0_REG 0x01 > -#define SP_RX_REPEATER BIT(6) > -#define SP_RE_AUTH BIT(5) > -#define SP_SW_AUTH_OK BIT(4) > -#define SP_HARD_AUTH_EN BIT(3) > -#define SP_HDCP_ENC_EN BIT(2) > -#define SP_BKSV_SRM_PASS BIT(1) > -#define SP_KSVLIST_VLD BIT(0) > -/* HDCP Function Enabled */ > -#define SP_HDCP_FUNCTION_ENABLED (BIT(0) | BIT(1) | BIT(2) | BIT(3)) > - > -/* HDCP Receiver BSTATUS Register 0 */ > -#define SP_HDCP_RX_BSTATUS0_REG 0x1b > -/* HDCP Receiver BSTATUS Register 1 */ > -#define SP_HDCP_RX_BSTATUS1_REG 0x1c > - > -/* HDCP Embedded "Blue Screen" Content Registers */ > -#define SP_HDCP_VID0_BLUE_SCREEN_REG 0x2c > -#define SP_HDCP_VID1_BLUE_SCREEN_REG 0x2d > -#define SP_HDCP_VID2_BLUE_SCREEN_REG 0x2e > - > -/* HDCP Wait R0 Timing Register */ > -#define SP_HDCP_WAIT_R0_TIME_REG 0x40 > - > -/* HDCP Link Integrity Check Timer Register */ > -#define SP_HDCP_LINK_CHECK_TIMER_REG 0x41 > - > -/* HDCP Repeater Ready Wait Timer Register */ > -#define SP_HDCP_RPTR_RDY_WAIT_TIME_REG 0x42 > - > -/* HDCP Auto Timer Register */ > -#define SP_HDCP_AUTO_TIMER_REG 0x51 > - > -/* HDCP Key Status Register */ > -#define SP_HDCP_KEY_STATUS_REG 0x5e > - > -/* HDCP Key Command Register */ > -#define SP_HDCP_KEY_COMMAND_REG 0x5f > -#define SP_DISABLE_SYNC_HDCP BIT(2) > - > -/* OTP Memory Key Protection Registers */ > -#define SP_OTP_KEY_PROTECT1_REG 0x60 > -#define SP_OTP_KEY_PROTECT2_REG 0x61 > -#define SP_OTP_KEY_PROTECT3_REG 0x62 > -#define SP_OTP_PSW1 0xa2 > -#define SP_OTP_PSW2 0x7e > -#define SP_OTP_PSW3 0xc6 > - > -/* DP System Control Registers */ > -#define SP_DP_SYSTEM_CTRL_BASE (0x80 - 1) > -/* Bits for DP System Control Register 2 */ > -#define SP_CHA_STA BIT(2) > -/* Bits for DP System Control Register 3 */ > -#define SP_HPD_STATUS BIT(6) > -#define SP_STRM_VALID BIT(2) > -/* Bits for DP System Control Register 4 */ > -#define SP_ENHANCED_MODE BIT(3) > - > -/* DP Video Control Register */ > -#define SP_DP_VIDEO_CTRL_REG 0x84 > -#define SP_COLOR_F_MASK 0x06 > -#define SP_COLOR_F_SHIFT 1 > -#define SP_BPC_MASK 0xe0 > -#define SP_BPC_SHIFT 5 > -# define SP_BPC_6BITS 0x00 > -# define SP_BPC_8BITS 0x01 > -# define SP_BPC_10BITS 0x02 > -# define SP_BPC_12BITS 0x03 > - > -/* DP Audio Control Register */ > -#define SP_DP_AUDIO_CTRL_REG 0x87 > -#define SP_AUD_EN BIT(0) > - > -/* 10us Pulse Generate Timer Registers */ > -#define SP_I2C_GEN_10US_TIMER0_REG 0x88 > -#define SP_I2C_GEN_10US_TIMER1_REG 0x89 > - > -/* Packet Send Control Register */ > -#define SP_PACKET_SEND_CTRL_REG 0x90 > -#define SP_AUD_IF_UP BIT(7) > -#define SP_AVI_IF_UD BIT(6) > -#define SP_MPEG_IF_UD BIT(5) > -#define SP_SPD_IF_UD BIT(4) > -#define SP_AUD_IF_EN BIT(3) > -#define SP_AVI_IF_EN BIT(2) > -#define SP_MPEG_IF_EN BIT(1) > -#define SP_SPD_IF_EN BIT(0) > - > -/* DP HDCP Control Register */ > -#define SP_DP_HDCP_CTRL_REG 0x92 > -#define SP_AUTO_EN BIT(7) > -#define SP_AUTO_START BIT(5) > -#define SP_LINK_POLLING BIT(1) > - > -/* DP Main Link Bandwidth Setting Register */ > -#define SP_DP_MAIN_LINK_BW_SET_REG 0xa0 > -#define SP_LINK_BW_SET_MASK 0x1f > -#define SP_INITIAL_SLIM_M_AUD_SEL BIT(5) > - > -/* DP Training Pattern Set Register */ > -#define SP_DP_TRAINING_PATTERN_SET_REG 0xa2 > - > -/* DP Lane 0 Link Training Control Register */ > -#define SP_DP_LANE0_LT_CTRL_REG 0xa3 > -#define SP_TX_SW_SET_MASK 0x1b > -#define SP_MAX_PRE_REACH BIT(5) > -#define SP_MAX_DRIVE_REACH BIT(4) > -#define SP_PRE_EMP_LEVEL1 BIT(3) > -#define SP_DRVIE_CURRENT_LEVEL1 BIT(0) > - > -/* DP Link Training Control Register */ > -#define SP_DP_LT_CTRL_REG 0xa8 > -#define SP_LT_ERROR_TYPE_MASK 0x70 > -# define SP_LT_NO_ERROR 0x00 > -# define SP_LT_AUX_WRITE_ERROR 0x01 > -# define SP_LT_MAX_DRIVE_REACHED 0x02 > -# define SP_LT_WRONG_LANE_COUNT_SET 0x03 > -# define SP_LT_LOOP_SAME_5_TIME 0x04 > -# define SP_LT_CR_FAIL_IN_EQ 0x05 > -# define SP_LT_EQ_LOOP_5_TIME 0x06 > -#define SP_LT_EN BIT(0) > - > -/* DP CEP Training Control Registers */ > -#define SP_DP_CEP_TRAINING_CTRL0_REG 0xa9 > -#define SP_DP_CEP_TRAINING_CTRL1_REG 0xaa > - > -/* DP Debug Register 1 */ > -#define SP_DP_DEBUG1_REG 0xb0 > -#define SP_DEBUG_PLL_LOCK BIT(4) > -#define SP_POLLING_EN BIT(1) > - > -/* DP Polling Control Register */ > -#define SP_DP_POLLING_CTRL_REG 0xb4 > -#define SP_AUTO_POLLING_DISABLE BIT(0) > - > -/* DP Link Debug Control Register */ > -#define SP_DP_LINK_DEBUG_CTRL_REG 0xb8 > -#define SP_M_VID_DEBUG BIT(5) > -#define SP_NEW_PRBS7 BIT(4) > -#define SP_INSERT_ER BIT(1) > -#define SP_PRBS31_EN BIT(0) > - > -/* AUX Misc control Register */ > -#define SP_AUX_MISC_CTRL_REG 0xbf > - > -/* DP PLL control Register */ > -#define SP_DP_PLL_CTRL_REG 0xc7 > -#define SP_PLL_RST BIT(6) > - > -/* DP Analog Power Down Register */ > -#define SP_DP_ANALOG_POWER_DOWN_REG 0xc8 > -#define SP_CH0_PD BIT(0) > - > -/* DP Misc Control Register */ > -#define SP_DP_MISC_CTRL_REG 0xcd > -#define SP_EQ_TRAINING_LOOP BIT(6) > - > -/* DP Extra I2C Device Address Register */ > -#define SP_DP_EXTRA_I2C_DEV_ADDR_REG 0xce > -#define SP_I2C_STRETCH_DISABLE BIT(7) > - > -#define SP_I2C_EXTRA_ADDR 0x50 > - > -/* DP Downspread Control Register 1 */ > -#define SP_DP_DOWNSPREAD_CTRL1_REG 0xd0 > - > -/* DP M Value Calculation Control Register */ > -#define SP_DP_M_CALCULATION_CTRL_REG 0xd9 > -#define SP_M_GEN_CLK_SEL BIT(0) > - > -/* AUX Channel Access Status Register */ > -#define SP_AUX_CH_STATUS_REG 0xe0 > -#define SP_AUX_STATUS 0x0f > - > -/* AUX Channel DEFER Control Register */ > -#define SP_AUX_DEFER_CTRL_REG 0xe2 > -#define SP_DEFER_CTRL_EN BIT(7) > - > -/* DP Buffer Data Count Register */ > -#define SP_BUF_DATA_COUNT_REG 0xe4 > -#define SP_BUF_DATA_COUNT_MASK 0x1f > -#define SP_BUF_CLR BIT(7) > - > -/* DP AUX Channel Control Register 1 */ > -#define SP_DP_AUX_CH_CTRL1_REG 0xe5 > -#define SP_AUX_TX_COMM_MASK 0x0f > -#define SP_AUX_LENGTH_MASK 0xf0 > -#define SP_AUX_LENGTH_SHIFT 4 > - > -/* DP AUX CH Address Register 0 */ > -#define SP_AUX_ADDR_7_0_REG 0xe6 > - > -/* DP AUX CH Address Register 1 */ > -#define SP_AUX_ADDR_15_8_REG 0xe7 > - > -/* DP AUX CH Address Register 2 */ > -#define SP_AUX_ADDR_19_16_REG 0xe8 > -#define SP_AUX_ADDR_19_16_MASK 0x0f > - > -/* DP AUX Channel Control Register 2 */ > -#define SP_DP_AUX_CH_CTRL2_REG 0xe9 > -#define SP_AUX_SEL_RXCM BIT(6) > -#define SP_AUX_CHSEL BIT(3) > -#define SP_AUX_PN_INV BIT(2) > -#define SP_ADDR_ONLY BIT(1) > -#define SP_AUX_EN BIT(0) > - > -/* DP Video Stream Control InfoFrame Register */ > -#define SP_DP_3D_VSC_CTRL_REG 0xea > -#define SP_INFO_FRAME_VSC_EN BIT(0) > - > -/* DP Video Stream Data Byte 1 Register */ > -#define SP_DP_VSC_DB1_REG 0xeb > - > -/* DP AUX Channel Control Register 3 */ > -#define SP_DP_AUX_CH_CTRL3_REG 0xec > -#define SP_WAIT_COUNTER_7_0_MASK 0xff > - > -/* DP AUX Channel Control Register 4 */ > -#define SP_DP_AUX_CH_CTRL4_REG 0xed > - > -/* DP AUX Buffer Data Registers */ > -#define SP_DP_BUF_DATA0_REG 0xf0 > - > -/***************************************************************/ > -/* Register definition of device address 0x72 */ > -/***************************************************************/ > - > -/* > - * Core Register Definitions > - */ > - > -/* Device ID Low Byte Register */ > -#define SP_DEVICE_IDL_REG 0x02 > - > -/* Device ID High Byte Register */ > -#define SP_DEVICE_IDH_REG 0x03 > - > -/* Device version register */ > -#define SP_DEVICE_VERSION_REG 0x04 > - > -/* Power Down Control Register */ > -#define SP_POWERDOWN_CTRL_REG 0x05 > -#define SP_REGISTER_PD BIT(7) > -#define SP_HDCP_PD BIT(5) > -#define SP_AUDIO_PD BIT(4) > -#define SP_VIDEO_PD BIT(3) > -#define SP_LINK_PD BIT(2) > -#define SP_TOTAL_PD BIT(1) > - > -/* Reset Control Register 1 */ > -#define SP_RESET_CTRL1_REG 0x06 > -#define SP_MISC_RST BIT(7) > -#define SP_VIDCAP_RST BIT(6) > -#define SP_VIDFIF_RST BIT(5) > -#define SP_AUDFIF_RST BIT(4) > -#define SP_AUDCAP_RST BIT(3) > -#define SP_HDCP_RST BIT(2) > -#define SP_SW_RST BIT(1) > -#define SP_HW_RST BIT(0) > - > -/* Reset Control Register 2 */ > -#define SP_RESET_CTRL2_REG 0x07 > -#define SP_AUX_RST BIT(2) > -#define SP_SERDES_FIFO_RST BIT(1) > -#define SP_I2C_REG_RST BIT(0) > - > -/* Video Control Register 1 */ > -#define SP_VID_CTRL1_REG 0x08 > -#define SP_VIDEO_EN BIT(7) > -#define SP_VIDEO_MUTE BIT(2) > -#define SP_DE_GEN BIT(1) > -#define SP_DEMUX BIT(0) > - > -/* Video Control Register 2 */ > -#define SP_VID_CTRL2_REG 0x09 > -#define SP_IN_COLOR_F_MASK 0x03 > -#define SP_IN_YC_BIT_SEL BIT(2) > -#define SP_IN_BPC_MASK 0x70 > -#define SP_IN_BPC_SHIFT 4 > -# define SP_IN_BPC_12BIT 0x03 > -# define SP_IN_BPC_10BIT 0x02 > -# define SP_IN_BPC_8BIT 0x01 > -# define SP_IN_BPC_6BIT 0x00 > -#define SP_IN_D_RANGE BIT(7) > - > -/* Video Control Register 3 */ > -#define SP_VID_CTRL3_REG 0x0a > -#define SP_HPD_OUT BIT(6) > - > -/* Video Control Register 5 */ > -#define SP_VID_CTRL5_REG 0x0c > -#define SP_CSC_STD_SEL BIT(7) > -#define SP_XVYCC_RNG_LMT BIT(6) > -#define SP_RANGE_Y2R BIT(5) > -#define SP_CSPACE_Y2R BIT(4) > -#define SP_RGB_RNG_LMT BIT(3) > -#define SP_Y_RNG_LMT BIT(2) > -#define SP_RANGE_R2Y BIT(1) > -#define SP_CSPACE_R2Y BIT(0) > - > -/* Video Control Register 6 */ > -#define SP_VID_CTRL6_REG 0x0d > -#define SP_TEST_PATTERN_EN BIT(7) > -#define SP_VIDEO_PROCESS_EN BIT(6) > -#define SP_VID_US_MODE BIT(3) > -#define SP_VID_DS_MODE BIT(2) > -#define SP_UP_SAMPLE BIT(1) > -#define SP_DOWN_SAMPLE BIT(0) > - > -/* Video Control Register 8 */ > -#define SP_VID_CTRL8_REG 0x0f > -#define SP_VID_VRES_TH BIT(0) > - > -/* Total Line Status Low Byte Register */ > -#define SP_TOTAL_LINE_STAL_REG 0x24 > - > -/* Total Line Status High Byte Register */ > -#define SP_TOTAL_LINE_STAH_REG 0x25 > - > -/* Active Line Status Low Byte Register */ > -#define SP_ACT_LINE_STAL_REG 0x26 > - > -/* Active Line Status High Byte Register */ > -#define SP_ACT_LINE_STAH_REG 0x27 > - > -/* Vertical Front Porch Status Register */ > -#define SP_V_F_PORCH_STA_REG 0x28 > - > -/* Vertical SYNC Width Status Register */ > -#define SP_V_SYNC_STA_REG 0x29 > - > -/* Vertical Back Porch Status Register */ > -#define SP_V_B_PORCH_STA_REG 0x2a > - > -/* Total Pixel Status Low Byte Register */ > -#define SP_TOTAL_PIXEL_STAL_REG 0x2b > - > -/* Total Pixel Status High Byte Register */ > -#define SP_TOTAL_PIXEL_STAH_REG 0x2c > - > -/* Active Pixel Status Low Byte Register */ > -#define SP_ACT_PIXEL_STAL_REG 0x2d > - > -/* Active Pixel Status High Byte Register */ > -#define SP_ACT_PIXEL_STAH_REG 0x2e > - > -/* Horizontal Front Porch Status Low Byte Register */ > -#define SP_H_F_PORCH_STAL_REG 0x2f > - > -/* Horizontal Front Porch Statys High Byte Register */ > -#define SP_H_F_PORCH_STAH_REG 0x30 > - > -/* Horizontal SYNC Width Status Low Byte Register */ > -#define SP_H_SYNC_STAL_REG 0x31 > - > -/* Horizontal SYNC Width Status High Byte Register */ > -#define SP_H_SYNC_STAH_REG 0x32 > - > -/* Horizontal Back Porch Status Low Byte Register */ > -#define SP_H_B_PORCH_STAL_REG 0x33 > - > -/* Horizontal Back Porch Status High Byte Register */ > -#define SP_H_B_PORCH_STAH_REG 0x34 > - > -/* InfoFrame AVI Packet DB1 Register */ > -#define SP_INFOFRAME_AVI_DB1_REG 0x70 > - > -/* Bit Control Specific Register */ > -#define SP_BIT_CTRL_SPECIFIC_REG 0x80 > -#define SP_BIT_CTRL_SELECT_SHIFT 1 > -#define SP_ENABLE_BIT_CTRL BIT(0) > - > -/* InfoFrame Audio Packet DB1 Register */ > -#define SP_INFOFRAME_AUD_DB1_REG 0x83 > - > -/* InfoFrame MPEG Packet DB1 Register */ > -#define SP_INFOFRAME_MPEG_DB1_REG 0xb0 > - > -/* Audio Channel Status Registers */ > -#define SP_AUD_CH_STATUS_BASE 0xd0 > - > -/* Audio Channel Num Register 5 */ > -#define SP_I2S_CHANNEL_NUM_MASK 0xe0 > -# define SP_I2S_CH_NUM_1 (0x00 << 5) > -# define SP_I2S_CH_NUM_2 (0x01 << 5) > -# define SP_I2S_CH_NUM_3 (0x02 << 5) > -# define SP_I2S_CH_NUM_4 (0x03 << 5) > -# define SP_I2S_CH_NUM_5 (0x04 << 5) > -# define SP_I2S_CH_NUM_6 (0x05 << 5) > -# define SP_I2S_CH_NUM_7 (0x06 << 5) > -# define SP_I2S_CH_NUM_8 (0x07 << 5) > -#define SP_EXT_VUCP BIT(2) > -#define SP_VBIT BIT(1) > -#define SP_AUDIO_LAYOUT BIT(0) > - > -/* Analog Debug Register 2 */ > -#define SP_ANALOG_DEBUG2_REG 0xdd > -#define SP_FORCE_SW_OFF_BYPASS 0x20 > -#define SP_XTAL_FRQ 0x1c > -# define SP_XTAL_FRQ_19M2 (0x00 << 2) > -# define SP_XTAL_FRQ_24M (0x01 << 2) > -# define SP_XTAL_FRQ_25M (0x02 << 2) > -# define SP_XTAL_FRQ_26M (0x03 << 2) > -# define SP_XTAL_FRQ_27M (0x04 << 2) > -# define SP_XTAL_FRQ_38M4 (0x05 << 2) > -# define SP_XTAL_FRQ_52M (0x06 << 2) > -#define SP_POWERON_TIME_1P5MS 0x03 > - > -/* Analog Control 0 Register */ > -#define SP_ANALOG_CTRL0_REG 0xe1 > - > -/* Common Interrupt Status Register 1 */ > -#define SP_COMMON_INT_STATUS_BASE (0xf1 - 1) > -#define SP_PLL_LOCK_CHG 0x40 > - > -/* Common Interrupt Status Register 2 */ > -#define SP_COMMON_INT_STATUS2 0xf2 > -#define SP_HDCP_AUTH_CHG BIT(1) > -#define SP_HDCP_AUTH_DONE BIT(0) > - > -#define SP_HDCP_LINK_CHECK_FAIL BIT(0) > - > -/* Common Interrupt Status Register 4 */ > -#define SP_COMMON_INT_STATUS4_REG 0xf4 > -#define SP_HPD_IRQ BIT(6) > -#define SP_HPD_ESYNC_ERR BIT(4) > -#define SP_HPD_CHG BIT(2) > -#define SP_HPD_LOST BIT(1) > -#define SP_HPD_PLUG BIT(0) > - > -/* DP Interrupt Status Register */ > -#define SP_DP_INT_STATUS1_REG 0xf7 > -#define SP_TRAINING_FINISH BIT(5) > -#define SP_POLLING_ERR BIT(4) > - > -/* Common Interrupt Mask Register */ > -#define SP_COMMON_INT_MASK_BASE (0xf8 - 1) > - > -#define SP_COMMON_INT_MASK4_REG 0xfb > - > -/* DP Interrupts Mask Register */ > -#define SP_DP_INT_MASK1_REG 0xfe > - > -/* Interrupt Control Register */ > -#define SP_INT_CTRL_REG 0xff > - > /***************************************************************/ > /* Register definition of device address 0x7a */ > /***************************************************************/ > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h > new file mode 100644 > index 000000000000..5a54c6d86428 > --- /dev/null > +++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h > @@ -0,0 +1,256 @@ > +/* > + * Copyright(c) 2016, Analogix Semiconductor. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 and > + * only version 2 as published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. Please use SPDX identifiers in all new files. > + * > + * Based on anx7808 driver obtained from chromeos with copyright: > + * Copyright(c) 2013, Google Inc. > + * > + */ > +#ifndef _ANALOGIX_I2C_DPTX_H_ > +#define _ANALOGIX_I2C_DPTX_H_ > + > +#define ANALOGIX_I2C_DPTX 0x70 > + > +/***************************************************************/ > +/* Register definition of device address 0x70 */ > +/***************************************************************/ > + > +/* HDCP Status Register */ > +#define SP_TX_HDCP_STATUS_REG 0x00 > +#define SP_AUTH_FAIL BIT(5) > +#define SP_AUTHEN_PASS BIT(1) > + > +/* HDCP Control Register 0 */ > +#define SP_HDCP_CTRL0_REG 0x01 > +#define SP_RX_REPEATER BIT(6) > +#define SP_RE_AUTH BIT(5) > +#define SP_SW_AUTH_OK BIT(4) > +#define SP_HARD_AUTH_EN BIT(3) > +#define SP_HDCP_ENC_EN BIT(2) > +#define SP_BKSV_SRM_PASS BIT(1) > +#define SP_KSVLIST_VLD BIT(0) > +/* HDCP Function Enabled */ > +#define SP_HDCP_FUNCTION_ENABLED (BIT(0) | BIT(1) | BIT(2) | BIT(3)) > + > +/* HDCP Receiver BSTATUS Register 0 */ > +#define SP_HDCP_RX_BSTATUS0_REG 0x1b > +/* HDCP Receiver BSTATUS Register 1 */ > +#define SP_HDCP_RX_BSTATUS1_REG 0x1c > + > +/* HDCP Embedded "Blue Screen" Content Registers */ > +#define SP_HDCP_VID0_BLUE_SCREEN_REG 0x2c > +#define SP_HDCP_VID1_BLUE_SCREEN_REG 0x2d > +#define SP_HDCP_VID2_BLUE_SCREEN_REG 0x2e > + > +/* HDCP Wait R0 Timing Register */ > +#define SP_HDCP_WAIT_R0_TIME_REG 0x40 > + > +/* HDCP Link Integrity Check Timer Register */ > +#define SP_HDCP_LINK_CHECK_TIMER_REG 0x41 > + > +/* HDCP Repeater Ready Wait Timer Register */ > +#define SP_HDCP_RPTR_RDY_WAIT_TIME_REG 0x42 > + > +/* HDCP Auto Timer Register */ > +#define SP_HDCP_AUTO_TIMER_REG 0x51 > + > +/* HDCP Key Status Register */ > +#define SP_HDCP_KEY_STATUS_REG 0x5e > + > +/* HDCP Key Command Register */ > +#define SP_HDCP_KEY_COMMAND_REG 0x5f > +#define SP_DISABLE_SYNC_HDCP BIT(2) > + > +/* OTP Memory Key Protection Registers */ > +#define SP_OTP_KEY_PROTECT1_REG 0x60 > +#define SP_OTP_KEY_PROTECT2_REG 0x61 > +#define SP_OTP_KEY_PROTECT3_REG 0x62 > +#define SP_OTP_PSW1 0xa2 > +#define SP_OTP_PSW2 0x7e > +#define SP_OTP_PSW3 0xc6 > + > +/* DP System Control Registers */ > +#define SP_DP_SYSTEM_CTRL_BASE (0x80 - 1) > +/* Bits for DP System Control Register 2 */ > +#define SP_CHA_STA BIT(2) > +/* Bits for DP System Control Register 3 */ > +#define SP_HPD_STATUS BIT(6) > +#define SP_STRM_VALID BIT(2) > +/* Bits for DP System Control Register 4 */ > +#define SP_ENHANCED_MODE BIT(3) > + > +/* DP Video Control Register */ > +#define SP_DP_VIDEO_CTRL_REG 0x84 > +#define SP_COLOR_F_MASK 0x06 > +#define SP_COLOR_F_SHIFT 1 > +#define SP_BPC_MASK 0xe0 > +#define SP_BPC_SHIFT 5 > +# define SP_BPC_6BITS 0x00 > +# define SP_BPC_8BITS 0x01 > +# define SP_BPC_10BITS 0x02 > +# define SP_BPC_12BITS 0x03 > + > +/* DP Audio Control Register */ > +#define SP_DP_AUDIO_CTRL_REG 0x87 > +#define SP_AUD_EN BIT(0) > + > +/* 10us Pulse Generate Timer Registers */ > +#define SP_I2C_GEN_10US_TIMER0_REG 0x88 > +#define SP_I2C_GEN_10US_TIMER1_REG 0x89 > + > +/* Packet Send Control Register */ > +#define SP_PACKET_SEND_CTRL_REG 0x90 > +#define SP_AUD_IF_UP BIT(7) > +#define SP_AVI_IF_UD BIT(6) > +#define SP_MPEG_IF_UD BIT(5) > +#define SP_SPD_IF_UD BIT(4) > +#define SP_AUD_IF_EN BIT(3) > +#define SP_AVI_IF_EN BIT(2) > +#define SP_MPEG_IF_EN BIT(1) > +#define SP_SPD_IF_EN BIT(0) > + > +/* DP HDCP Control Register */ > +#define SP_DP_HDCP_CTRL_REG 0x92 > +#define SP_AUTO_EN BIT(7) > +#define SP_AUTO_START BIT(5) > +#define SP_LINK_POLLING BIT(1) > + > +/* DP Main Link Bandwidth Setting Register */ > +#define SP_DP_MAIN_LINK_BW_SET_REG 0xa0 > +#define SP_LINK_BW_SET_MASK 0x1f > +#define SP_INITIAL_SLIM_M_AUD_SEL BIT(5) > + > +/* DP Training Pattern Set Register */ > +#define SP_DP_TRAINING_PATTERN_SET_REG 0xa2 > + > +/* DP Lane 0 Link Training Control Register */ > +#define SP_DP_LANE0_LT_CTRL_REG 0xa3 > +#define SP_TX_SW_SET_MASK 0x1b > +#define SP_MAX_PRE_REACH BIT(5) > +#define SP_MAX_DRIVE_REACH BIT(4) > +#define SP_PRE_EMP_LEVEL1 BIT(3) > +#define SP_DRVIE_CURRENT_LEVEL1 BIT(0) > + > +/* DP Link Training Control Register */ > +#define SP_DP_LT_CTRL_REG 0xa8 > +#define SP_LT_ERROR_TYPE_MASK 0x70 > +# define SP_LT_NO_ERROR 0x00 > +# define SP_LT_AUX_WRITE_ERROR 0x01 > +# define SP_LT_MAX_DRIVE_REACHED 0x02 > +# define SP_LT_WRONG_LANE_COUNT_SET 0x03 > +# define SP_LT_LOOP_SAME_5_TIME 0x04 > +# define SP_LT_CR_FAIL_IN_EQ 0x05 > +# define SP_LT_EQ_LOOP_5_TIME 0x06 > +#define SP_LT_EN BIT(0) > + > +/* DP CEP Training Control Registers */ > +#define SP_DP_CEP_TRAINING_CTRL0_REG 0xa9 > +#define SP_DP_CEP_TRAINING_CTRL1_REG 0xaa > + > +/* DP Debug Register 1 */ > +#define SP_DP_DEBUG1_REG 0xb0 > +#define SP_DEBUG_PLL_LOCK BIT(4) > +#define SP_POLLING_EN BIT(1) > + > +/* DP Polling Control Register */ > +#define SP_DP_POLLING_CTRL_REG 0xb4 > +#define SP_AUTO_POLLING_DISABLE BIT(0) > + > +/* DP Link Debug Control Register */ > +#define SP_DP_LINK_DEBUG_CTRL_REG 0xb8 > +#define SP_M_VID_DEBUG BIT(5) > +#define SP_NEW_PRBS7 BIT(4) > +#define SP_INSERT_ER BIT(1) > +#define SP_PRBS31_EN BIT(0) > + > +/* AUX Misc control Register */ > +#define SP_AUX_MISC_CTRL_REG 0xbf > + > +/* DP PLL control Register */ > +#define SP_DP_PLL_CTRL_REG 0xc7 > +#define SP_PLL_RST BIT(6) > + > +/* DP Analog Power Down Register */ > +#define SP_DP_ANALOG_POWER_DOWN_REG 0xc8 > +#define SP_CH0_PD BIT(0) > + > +/* DP Misc Control Register */ > +#define SP_DP_MISC_CTRL_REG 0xcd > +#define SP_EQ_TRAINING_LOOP BIT(6) > + > +/* DP Extra I2C Device Address Register */ > +#define SP_DP_EXTRA_I2C_DEV_ADDR_REG 0xce > +#define SP_I2C_STRETCH_DISABLE BIT(7) > + > +#define SP_I2C_EXTRA_ADDR 0x50 > + > +/* DP Downspread Control Register 1 */ > +#define SP_DP_DOWNSPREAD_CTRL1_REG 0xd0 > + > +/* DP M Value Calculation Control Register */ > +#define SP_DP_M_CALCULATION_CTRL_REG 0xd9 > +#define SP_M_GEN_CLK_SEL BIT(0) > + > +/* AUX Channel Access Status Register */ > +#define SP_AUX_CH_STATUS_REG 0xe0 > +#define SP_AUX_STATUS 0x0f > + > +/* AUX Channel DEFER Control Register */ > +#define SP_AUX_DEFER_CTRL_REG 0xe2 > +#define SP_DEFER_CTRL_EN BIT(7) > + > +/* DP Buffer Data Count Register */ > +#define SP_BUF_DATA_COUNT_REG 0xe4 > +#define SP_BUF_DATA_COUNT_MASK 0x1f > +#define SP_BUF_CLR BIT(7) > + > +/* DP AUX Channel Control Register 1 */ > +#define SP_DP_AUX_CH_CTRL1_REG 0xe5 > +#define SP_AUX_TX_COMM_MASK 0x0f > +#define SP_AUX_LENGTH_MASK 0xf0 > +#define SP_AUX_LENGTH_SHIFT 4 > + > +/* DP AUX CH Address Register 0 */ > +#define SP_AUX_ADDR_7_0_REG 0xe6 > + > +/* DP AUX CH Address Register 1 */ > +#define SP_AUX_ADDR_15_8_REG 0xe7 > + > +/* DP AUX CH Address Register 2 */ > +#define SP_AUX_ADDR_19_16_REG 0xe8 > +#define SP_AUX_ADDR_19_16_MASK 0x0f > + > +/* DP AUX Channel Control Register 2 */ > +#define SP_DP_AUX_CH_CTRL2_REG 0xe9 > +#define SP_AUX_SEL_RXCM BIT(6) > +#define SP_AUX_CHSEL BIT(3) > +#define SP_AUX_PN_INV BIT(2) > +#define SP_ADDR_ONLY BIT(1) > +#define SP_AUX_EN BIT(0) > + > +/* DP Video Stream Control InfoFrame Register */ > +#define SP_DP_3D_VSC_CTRL_REG 0xea > +#define SP_INFO_FRAME_VSC_EN BIT(0) > + > +/* DP Video Stream Data Byte 1 Register */ > +#define SP_DP_VSC_DB1_REG 0xeb > + > +/* DP AUX Channel Control Register 3 */ > +#define SP_DP_AUX_CH_CTRL3_REG 0xec > +#define SP_WAIT_COUNTER_7_0_MASK 0xff > + > +/* DP AUX Channel Control Register 4 */ > +#define SP_DP_AUX_CH_CTRL4_REG 0xed > + > +/* DP AUX Buffer Data Registers */ > +#define SP_DP_BUF_DATA0_REG 0xf0 > + > +#endif > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h > new file mode 100644 > index 000000000000..f48293f86f9d > --- /dev/null > +++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h > @@ -0,0 +1,242 @@ > +/* > + * Copyright(c) 2016, Analogix Semiconductor. All rights reserved. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 and > + * only version 2 as published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. ditto With above fixed: Reviewed-by: Andrzej Hajda <a.hajda@xxxxxxxxxxx> -- Regards Andrzej > + * > + */ > +#ifndef _ANALOGIX_I2C_TXCOMMON_H_ > +#define _ANALOGIX_I2C_TXCOMMON_H_ > + > +#define ANALOGIX_I2C_TXCOMMON 0x72 > + > +/***************************************************************/ > +/* Register definition of device address 0x72 */ > +/***************************************************************/ > + > +/* > + * Core Register Definitions > + */ > + > +/* Device ID Low Byte Register */ > +#define SP_DEVICE_IDL_REG 0x02 > + > +/* Device ID High Byte Register */ > +#define SP_DEVICE_IDH_REG 0x03 > + > +/* Device version register */ > +#define SP_DEVICE_VERSION_REG 0x04 > + > +/* Power Down Control Register */ > +#define SP_POWERDOWN_CTRL_REG 0x05 > +#define SP_REGISTER_PD BIT(7) > +#define SP_HDCP_PD BIT(5) > +#define SP_AUDIO_PD BIT(4) > +#define SP_VIDEO_PD BIT(3) > +#define SP_LINK_PD BIT(2) > +#define SP_TOTAL_PD BIT(1) > + > +/* Reset Control Register 1 */ > +#define SP_RESET_CTRL1_REG 0x06 > +#define SP_MISC_RST BIT(7) > +#define SP_VIDCAP_RST BIT(6) > +#define SP_VIDFIF_RST BIT(5) > +#define SP_AUDFIF_RST BIT(4) > +#define SP_AUDCAP_RST BIT(3) > +#define SP_HDCP_RST BIT(2) > +#define SP_SW_RST BIT(1) > +#define SP_HW_RST BIT(0) > + > +/* Reset Control Register 2 */ > +#define SP_RESET_CTRL2_REG 0x07 > +#define SP_AUX_RST BIT(2) > +#define SP_SERDES_FIFO_RST BIT(1) > +#define SP_I2C_REG_RST BIT(0) > + > +/* Video Control Register 1 */ > +#define SP_VID_CTRL1_REG 0x08 > +#define SP_VIDEO_EN BIT(7) > +#define SP_VIDEO_MUTE BIT(2) > +#define SP_DE_GEN BIT(1) > +#define SP_DEMUX BIT(0) > + > +/* Video Control Register 2 */ > +#define SP_VID_CTRL2_REG 0x09 > +#define SP_IN_COLOR_F_MASK 0x03 > +#define SP_IN_YC_BIT_SEL BIT(2) > +#define SP_IN_BPC_MASK 0x70 > +#define SP_IN_BPC_SHIFT 4 > +# define SP_IN_BPC_12BIT 0x03 > +# define SP_IN_BPC_10BIT 0x02 > +# define SP_IN_BPC_8BIT 0x01 > +# define SP_IN_BPC_6BIT 0x00 > +#define SP_IN_D_RANGE BIT(7) > + > +/* Video Control Register 3 */ > +#define SP_VID_CTRL3_REG 0x0a > +#define SP_HPD_OUT BIT(6) > + > +/* Video Control Register 5 */ > +#define SP_VID_CTRL5_REG 0x0c > +#define SP_CSC_STD_SEL BIT(7) > +#define SP_XVYCC_RNG_LMT BIT(6) > +#define SP_RANGE_Y2R BIT(5) > +#define SP_CSPACE_Y2R BIT(4) > +#define SP_RGB_RNG_LMT BIT(3) > +#define SP_Y_RNG_LMT BIT(2) > +#define SP_RANGE_R2Y BIT(1) > +#define SP_CSPACE_R2Y BIT(0) > + > +/* Video Control Register 6 */ > +#define SP_VID_CTRL6_REG 0x0d > +#define SP_TEST_PATTERN_EN BIT(7) > +#define SP_VIDEO_PROCESS_EN BIT(6) > +#define SP_VID_US_MODE BIT(3) > +#define SP_VID_DS_MODE BIT(2) > +#define SP_UP_SAMPLE BIT(1) > +#define SP_DOWN_SAMPLE BIT(0) > + > +/* Video Control Register 8 */ > +#define SP_VID_CTRL8_REG 0x0f > +#define SP_VID_VRES_TH BIT(0) > + > +/* Total Line Status Low Byte Register */ > +#define SP_TOTAL_LINE_STAL_REG 0x24 > + > +/* Total Line Status High Byte Register */ > +#define SP_TOTAL_LINE_STAH_REG 0x25 > + > +/* Active Line Status Low Byte Register */ > +#define SP_ACT_LINE_STAL_REG 0x26 > + > +/* Active Line Status High Byte Register */ > +#define SP_ACT_LINE_STAH_REG 0x27 > + > +/* Vertical Front Porch Status Register */ > +#define SP_V_F_PORCH_STA_REG 0x28 > + > +/* Vertical SYNC Width Status Register */ > +#define SP_V_SYNC_STA_REG 0x29 > + > +/* Vertical Back Porch Status Register */ > +#define SP_V_B_PORCH_STA_REG 0x2a > + > +/* Total Pixel Status Low Byte Register */ > +#define SP_TOTAL_PIXEL_STAL_REG 0x2b > + > +/* Total Pixel Status High Byte Register */ > +#define SP_TOTAL_PIXEL_STAH_REG 0x2c > + > +/* Active Pixel Status Low Byte Register */ > +#define SP_ACT_PIXEL_STAL_REG 0x2d > + > +/* Active Pixel Status High Byte Register */ > +#define SP_ACT_PIXEL_STAH_REG 0x2e > + > +/* Horizontal Front Porch Status Low Byte Register */ > +#define SP_H_F_PORCH_STAL_REG 0x2f > + > +/* Horizontal Front Porch Statys High Byte Register */ > +#define SP_H_F_PORCH_STAH_REG 0x30 > + > +/* Horizontal SYNC Width Status Low Byte Register */ > +#define SP_H_SYNC_STAL_REG 0x31 > + > +/* Horizontal SYNC Width Status High Byte Register */ > +#define SP_H_SYNC_STAH_REG 0x32 > + > +/* Horizontal Back Porch Status Low Byte Register */ > +#define SP_H_B_PORCH_STAL_REG 0x33 > + > +/* Horizontal Back Porch Status High Byte Register */ > +#define SP_H_B_PORCH_STAH_REG 0x34 > + > +/* InfoFrame AVI Packet DB1 Register */ > +#define SP_INFOFRAME_AVI_DB1_REG 0x70 > + > +/* Bit Control Specific Register */ > +#define SP_BIT_CTRL_SPECIFIC_REG 0x80 > +#define SP_BIT_CTRL_SELECT_SHIFT 1 > +#define SP_ENABLE_BIT_CTRL BIT(0) > + > +/* InfoFrame Audio Packet DB1 Register */ > +#define SP_INFOFRAME_AUD_DB1_REG 0x83 > + > +/* InfoFrame MPEG Packet DB1 Register */ > +#define SP_INFOFRAME_MPEG_DB1_REG 0xb0 > + > +/* Audio Channel Status Registers */ > +#define SP_AUD_CH_STATUS_BASE 0xd0 > + > +/* Audio Channel Num Register 5 */ > +#define SP_I2S_CHANNEL_NUM_MASK 0xe0 > +# define SP_I2S_CH_NUM_1 (0x00 << 5) > +# define SP_I2S_CH_NUM_2 (0x01 << 5) > +# define SP_I2S_CH_NUM_3 (0x02 << 5) > +# define SP_I2S_CH_NUM_4 (0x03 << 5) > +# define SP_I2S_CH_NUM_5 (0x04 << 5) > +# define SP_I2S_CH_NUM_6 (0x05 << 5) > +# define SP_I2S_CH_NUM_7 (0x06 << 5) > +# define SP_I2S_CH_NUM_8 (0x07 << 5) > +#define SP_EXT_VUCP BIT(2) > +#define SP_VBIT BIT(1) > +#define SP_AUDIO_LAYOUT BIT(0) > + > +/* Analog Debug Register 2 */ > +#define SP_ANALOG_DEBUG2_REG 0xdd > +#define SP_FORCE_SW_OFF_BYPASS 0x20 > +#define SP_XTAL_FRQ 0x1c > +# define SP_XTAL_FRQ_19M2 (0x00 << 2) > +# define SP_XTAL_FRQ_24M (0x01 << 2) > +# define SP_XTAL_FRQ_25M (0x02 << 2) > +# define SP_XTAL_FRQ_26M (0x03 << 2) > +# define SP_XTAL_FRQ_27M (0x04 << 2) > +# define SP_XTAL_FRQ_38M4 (0x05 << 2) > +# define SP_XTAL_FRQ_52M (0x06 << 2) > +#define SP_POWERON_TIME_1P5MS 0x03 > + > +/* Analog Control 0 Register */ > +#define SP_ANALOG_CTRL0_REG 0xe1 > + > +/* Common Interrupt Status Register 1 */ > +#define SP_COMMON_INT_STATUS_BASE (0xf1 - 1) > +#define SP_PLL_LOCK_CHG 0x40 > + > +/* Common Interrupt Status Register 2 */ > +#define SP_COMMON_INT_STATUS2 0xf2 > +#define SP_HDCP_AUTH_CHG BIT(1) > +#define SP_HDCP_AUTH_DONE BIT(0) > + > +#define SP_HDCP_LINK_CHECK_FAIL BIT(0) > + > +/* Common Interrupt Status Register 4 */ > +#define SP_COMMON_INT_STATUS4_REG 0xf4 > +#define SP_HPD_IRQ BIT(6) > +#define SP_HPD_ESYNC_ERR BIT(4) > +#define SP_HPD_CHG BIT(2) > +#define SP_HPD_LOST BIT(1) > +#define SP_HPD_PLUG BIT(0) > + > +/* DP Interrupt Status Register */ > +#define SP_DP_INT_STATUS1_REG 0xf7 > +#define SP_TRAINING_FINISH BIT(5) > +#define SP_POLLING_ERR BIT(4) > + > +/* Common Interrupt Mask Register */ > +#define SP_COMMON_INT_MASK_BASE (0xf8 - 1) > + > +#define SP_COMMON_INT_MASK4_REG 0xfb > + > +/* DP Interrupts Mask Register */ > +#define SP_DP_INT_MASK1_REG 0xfe > + > +/* Interrupt Control Register */ > +#define SP_INT_CTRL_REG 0xff > + > +#endif /* _ANALOGIX_I2C_TXCOMMON_H_ */