Commit a771ded8 authored by Roman Li's avatar Roman Li Committed by Alex Deucher

drm/amd/display: add missing dcn link encoder regs

[Why]
The earlier change: "check phy dpalt lane count config"
uses link encoder registers not defined properly.
That caused regression with mst-enabled display not
lighting up.

[How]
Add missing reg definitions.
Signed-off-by: default avatarRoman Li <Roman.Li@amd.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d3c431ee
...@@ -124,6 +124,26 @@ struct dcn10_link_enc_registers { ...@@ -124,6 +124,26 @@ struct dcn10_link_enc_registers {
uint32_t RDPCSTX_PHY_CNTL13; uint32_t RDPCSTX_PHY_CNTL13;
uint32_t RDPCSTX_PHY_CNTL14; uint32_t RDPCSTX_PHY_CNTL14;
uint32_t RDPCSTX_PHY_CNTL15; uint32_t RDPCSTX_PHY_CNTL15;
uint32_t RDPCSTX_CNTL;
uint32_t RDPCSTX_CLOCK_CNTL;
uint32_t RDPCSTX_PHY_CNTL0;
uint32_t RDPCSTX_PHY_CNTL2;
uint32_t RDPCSTX_PLL_UPDATE_DATA;
uint32_t RDPCS_TX_CR_ADDR;
uint32_t RDPCS_TX_CR_DATA;
uint32_t DPCSTX_TX_CLOCK_CNTL;
uint32_t DPCSTX_TX_CNTL;
uint32_t RDPCSTX_INTERRUPT_CONTROL;
uint32_t RDPCSTX_PHY_FUSE0;
uint32_t RDPCSTX_PHY_FUSE1;
uint32_t RDPCSTX_PHY_FUSE2;
uint32_t RDPCSTX_PHY_FUSE3;
uint32_t RDPCSTX_PHY_RX_LD_VAL;
uint32_t DPCSTX_DEBUG_CONFIG;
uint32_t RDPCSTX_DEBUG_CONFIG;
uint32_t RDPCSTX0_RDPCSTX_SCRATCH;
uint32_t RDPCSTX_DMCU_DPALT_DIS_BLOCK_REG;
uint32_t DCIO_SOFT_RESET;
/* indirect registers */ /* indirect registers */
uint32_t RAWLANE0_DIG_PCS_XF_RX_OVRD_IN_2; uint32_t RAWLANE0_DIG_PCS_XF_RX_OVRD_IN_2;
uint32_t RAWLANE0_DIG_PCS_XF_RX_OVRD_IN_3; uint32_t RAWLANE0_DIG_PCS_XF_RX_OVRD_IN_3;
......
...@@ -66,6 +66,8 @@ ...@@ -66,6 +66,8 @@
#include "dcn/dcn_2_0_0_offset.h" #include "dcn/dcn_2_0_0_offset.h"
#include "dcn/dcn_2_0_0_sh_mask.h" #include "dcn/dcn_2_0_0_sh_mask.h"
#include "dpcs/dpcs_2_0_0_offset.h"
#include "dpcs/dpcs_2_0_0_sh_mask.h"
#include "nbio/nbio_2_3_offset.h" #include "nbio/nbio_2_3_offset.h"
...@@ -549,6 +551,7 @@ static const struct dcn10_link_enc_hpd_registers link_enc_hpd_regs[] = { ...@@ -549,6 +551,7 @@ static const struct dcn10_link_enc_hpd_registers link_enc_hpd_regs[] = {
[id] = {\ [id] = {\
LE_DCN10_REG_LIST(id), \ LE_DCN10_REG_LIST(id), \
UNIPHY_DCN2_REG_LIST(phyid), \ UNIPHY_DCN2_REG_LIST(phyid), \
DPCS_DCN2_REG_LIST(id), \
SRI(DP_DPHY_INTERNAL_CTRL, DP, id) \ SRI(DP_DPHY_INTERNAL_CTRL, DP, id) \
} }
...@@ -562,11 +565,13 @@ static const struct dcn10_link_enc_registers link_enc_regs[] = { ...@@ -562,11 +565,13 @@ static const struct dcn10_link_enc_registers link_enc_regs[] = {
}; };
static const struct dcn10_link_enc_shift le_shift = { static const struct dcn10_link_enc_shift le_shift = {
LINK_ENCODER_MASK_SH_LIST_DCN20(__SHIFT) LINK_ENCODER_MASK_SH_LIST_DCN20(__SHIFT),\
DPCS_DCN2_MASK_SH_LIST(__SHIFT)
}; };
static const struct dcn10_link_enc_mask le_mask = { static const struct dcn10_link_enc_mask le_mask = {
LINK_ENCODER_MASK_SH_LIST_DCN20(_MASK) LINK_ENCODER_MASK_SH_LIST_DCN20(_MASK),\
DPCS_DCN2_MASK_SH_LIST(_MASK)
}; };
#define ipp_regs(id)\ #define ipp_regs(id)\
......
...@@ -33,6 +33,45 @@ struct dcn21_link_encoder { ...@@ -33,6 +33,45 @@ struct dcn21_link_encoder {
struct dpcssys_phy_seq_cfg phy_seq_cfg; struct dpcssys_phy_seq_cfg phy_seq_cfg;
}; };
#define DPCS_DCN21_MASK_SH_LIST(mask_sh)\
DPCS_DCN2_MASK_SH_LIST(mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_TX_VBOOST_LVL, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE2, RDPCS_PHY_DP_MPLLB_CP_PROP_GS, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE0, RDPCS_PHY_RX_VREF_CTRL, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE0, RDPCS_PHY_DP_MPLLB_CP_INT_GS, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_DMCU_DPALT_DIS_BLOCK_REG, RDPCS_DMCU_DPALT_DIS_BLOCK_REG, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL15, RDPCS_PHY_SUP_PRE_HP, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL15, RDPCS_PHY_DP_TX0_VREGDRV_BYP, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL15, RDPCS_PHY_DP_TX1_VREGDRV_BYP, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL15, RDPCS_PHY_DP_TX2_VREGDRV_BYP, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL15, RDPCS_PHY_DP_TX3_VREGDRV_BYP, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DP4, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DISABLE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE0, RDPCS_PHY_DP_TX0_EQ_MAIN, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE0, RDPCS_PHY_DP_TX0_EQ_PRE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE0, RDPCS_PHY_DP_TX0_EQ_POST, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE1, RDPCS_PHY_DP_TX1_EQ_MAIN, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE1, RDPCS_PHY_DP_TX1_EQ_PRE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE1, RDPCS_PHY_DP_TX1_EQ_POST, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE2, RDPCS_PHY_DP_TX2_EQ_MAIN, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE2, RDPCS_PHY_DP_TX2_EQ_PRE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE2, RDPCS_PHY_DP_TX2_EQ_POST, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_DP_TX3_EQ_MAIN, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_DCO_FINETUNE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_DCO_RANGE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_DP_TX3_EQ_PRE, mask_sh),\
LE_SF(RDPCSTX0_RDPCSTX_PHY_FUSE3, RDPCS_PHY_DP_TX3_EQ_POST, mask_sh),\
LE_SF(DCIO_SOFT_RESET, UNIPHYA_SOFT_RESET, mask_sh),\
LE_SF(DCIO_SOFT_RESET, UNIPHYB_SOFT_RESET, mask_sh),\
LE_SF(DCIO_SOFT_RESET, UNIPHYC_SOFT_RESET, mask_sh),\
LE_SF(DCIO_SOFT_RESET, UNIPHYD_SOFT_RESET, mask_sh),\
LE_SF(DCIO_SOFT_RESET, UNIPHYE_SOFT_RESET, mask_sh)
#define DPCS_DCN21_REG_LIST(id) \
DPCS_DCN2_REG_LIST(id),\
SRI(RDPCSTX_PHY_CNTL15, RDPCSTX, id),\
SRI(RDPCSTX_DMCU_DPALT_DIS_BLOCK_REG, RDPCSTX, id)
#define LINK_ENCODER_MASK_SH_LIST_DCN21(mask_sh)\ #define LINK_ENCODER_MASK_SH_LIST_DCN21(mask_sh)\
LINK_ENCODER_MASK_SH_LIST_DCN20(mask_sh),\ LINK_ENCODER_MASK_SH_LIST_DCN20(mask_sh),\
LE_SF(UNIPHYA_CHANNEL_XBAR_CNTL, UNIPHY_CHANNEL0_XBAR_SOURCE, mask_sh),\ LE_SF(UNIPHYA_CHANNEL_XBAR_CNTL, UNIPHY_CHANNEL0_XBAR_SOURCE, mask_sh),\
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
#include "dcn20/dcn20_dwb.h" #include "dcn20/dcn20_dwb.h"
#include "dcn20/dcn20_mmhubbub.h" #include "dcn20/dcn20_mmhubbub.h"
#include "dpcs/dpcs_2_1_0_offset.h"
#include "dpcs/dpcs_2_1_0_sh_mask.h"
#include "renoir_ip_offset.h" #include "renoir_ip_offset.h"
#include "dcn/dcn_2_1_0_offset.h" #include "dcn/dcn_2_1_0_offset.h"
...@@ -1499,8 +1501,9 @@ static const struct encoder_feature_support link_enc_feature = { ...@@ -1499,8 +1501,9 @@ static const struct encoder_feature_support link_enc_feature = {
#define link_regs(id, phyid)\ #define link_regs(id, phyid)\
[id] = {\ [id] = {\
LE_DCN10_REG_LIST(id), \ LE_DCN2_REG_LIST(id), \
UNIPHY_DCN2_REG_LIST(phyid), \ UNIPHY_DCN2_REG_LIST(phyid), \
DPCS_DCN21_REG_LIST(id), \
SRI(DP_DPHY_INTERNAL_CTRL, DP, id) \ SRI(DP_DPHY_INTERNAL_CTRL, DP, id) \
} }
...@@ -1539,11 +1542,13 @@ static const struct dcn10_link_enc_hpd_registers link_enc_hpd_regs[] = { ...@@ -1539,11 +1542,13 @@ static const struct dcn10_link_enc_hpd_registers link_enc_hpd_regs[] = {
}; };
static const struct dcn10_link_enc_shift le_shift = { static const struct dcn10_link_enc_shift le_shift = {
LINK_ENCODER_MASK_SH_LIST_DCN20(__SHIFT) LINK_ENCODER_MASK_SH_LIST_DCN20(__SHIFT),\
DPCS_DCN21_MASK_SH_LIST(__SHIFT)
}; };
static const struct dcn10_link_enc_mask le_mask = { static const struct dcn10_link_enc_mask le_mask = {
LINK_ENCODER_MASK_SH_LIST_DCN20(_MASK) LINK_ENCODER_MASK_SH_LIST_DCN20(_MASK),\
DPCS_DCN21_MASK_SH_LIST(_MASK)
}; };
static int map_transmitter_id_to_phy_instance( static int map_transmitter_id_to_phy_instance(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment