@@ -1850,7 +1850,7 @@ static const struct qmp_phy_init_tbl sdx55_qmp_pcie_rc_pcs_misc_tbl[] = {
1850
1850
QMP_PHY_INIT_CFG (QPHY_V4_20_PCS_PCIE_OSC_DTCT_ACTIONS , 0x00 ),
1851
1851
};
1852
1852
1853
- static const struct qmp_phy_init_tbl sdx55_qmp_pcie_ep_pcs_misc_tbl [] = {
1853
+ static const struct qmp_phy_init_tbl sdx55_qmp_pcie_ep_pcs_lane1_tbl [] = {
1854
1854
QMP_PHY_INIT_CFG (QPHY_V4_20_PCS_LANE1_INSIG_SW_CTRL2 , 0x00 ),
1855
1855
QMP_PHY_INIT_CFG (QPHY_V4_20_PCS_LANE1_INSIG_MX_CTRL2 , 0x00 ),
1856
1856
};
@@ -1984,6 +1984,9 @@ static const struct qmp_phy_init_tbl sdx65_qmp_pcie_pcs_misc_tbl[] = {
1984
1984
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG2 , 0x0d ),
1985
1985
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG5 , 0x02 ),
1986
1986
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_PCIE_G4_PRE_GAIN , 0x2e ),
1987
+ };
1988
+
1989
+ static const struct qmp_phy_init_tbl sdx65_qmp_pcie_pcs_lane1_tbl [] = {
1987
1990
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2 , 0x00 ),
1988
1991
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2 , 0x00 ),
1989
1992
};
@@ -2659,8 +2662,6 @@ static const struct qmp_phy_init_tbl sa8775p_qmp_gen4_pcie_rc_pcs_misc_tbl[] = {
2659
2662
static const struct qmp_phy_init_tbl sa8775p_qmp_gen4x2_pcie_pcs_alt_tbl [] = {
2660
2663
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_EQ_CONFIG4 , 0x16 ),
2661
2664
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_EQ_CONFIG5 , 0x22 ),
2662
- QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2 , 0x00 ),
2663
- QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2 , 0x00 ),
2664
2665
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_G3S2_PRE_GAIN , 0x2e ),
2665
2666
QMP_PHY_INIT_CFG (QPHY_V5_20_PCS_RX_SIGDET_LVL , 0x66 ),
2666
2667
};
@@ -2805,6 +2806,7 @@ struct qmp_pcie_offsets {
2805
2806
u16 serdes ;
2806
2807
u16 pcs ;
2807
2808
u16 pcs_misc ;
2809
+ u16 pcs_lane1 ;
2808
2810
u16 tx ;
2809
2811
u16 rx ;
2810
2812
u16 tx2 ;
@@ -2829,6 +2831,8 @@ struct qmp_phy_cfg_tbls {
2829
2831
int pcs_num ;
2830
2832
const struct qmp_phy_init_tbl * pcs_misc ;
2831
2833
int pcs_misc_num ;
2834
+ const struct qmp_phy_init_tbl * pcs_lane1 ;
2835
+ int pcs_lane1_num ;
2832
2836
const struct qmp_phy_init_tbl * ln_shrd ;
2833
2837
int ln_shrd_num ;
2834
2838
};
@@ -2888,6 +2892,7 @@ struct qmp_pcie {
2888
2892
void __iomem * serdes ;
2889
2893
void __iomem * pcs ;
2890
2894
void __iomem * pcs_misc ;
2895
+ void __iomem * pcs_lane1 ;
2891
2896
void __iomem * tx ;
2892
2897
void __iomem * rx ;
2893
2898
void __iomem * tx2 ;
@@ -3004,6 +3009,7 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v4_20 = {
3004
3009
.serdes = 0x1000 ,
3005
3010
.pcs = 0x1200 ,
3006
3011
.pcs_misc = 0x1600 ,
3012
+ .pcs_lane1 = 0x1e00 ,
3007
3013
.tx = 0x0000 ,
3008
3014
.rx = 0x0200 ,
3009
3015
.tx2 = 0x0800 ,
@@ -3034,6 +3040,7 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v5_20 = {
3034
3040
.serdes = 0x1000 ,
3035
3041
.pcs = 0x1200 ,
3036
3042
.pcs_misc = 0x1400 ,
3043
+ .pcs_lane1 = 0x1e00 ,
3037
3044
.tx = 0x0000 ,
3038
3045
.rx = 0x0200 ,
3039
3046
.tx2 = 0x0800 ,
@@ -3542,8 +3549,8 @@ static const struct qmp_phy_cfg sdx55_qmp_pciephy_cfg = {
3542
3549
.tbls_ep = & (const struct qmp_phy_cfg_tbls ) {
3543
3550
.serdes = sdx55_qmp_pcie_ep_serdes_tbl ,
3544
3551
.serdes_num = ARRAY_SIZE (sdx55_qmp_pcie_ep_serdes_tbl ),
3545
- .pcs_misc = sdx55_qmp_pcie_ep_pcs_misc_tbl ,
3546
- .pcs_misc_num = ARRAY_SIZE (sdx55_qmp_pcie_ep_pcs_misc_tbl ),
3552
+ .pcs_lane1 = sdx55_qmp_pcie_ep_pcs_lane1_tbl ,
3553
+ .pcs_lane1_num = ARRAY_SIZE (sdx55_qmp_pcie_ep_pcs_lane1_tbl ),
3547
3554
},
3548
3555
3549
3556
.reset_list = sdm845_pciephy_reset_l ,
@@ -3642,6 +3649,8 @@ static const struct qmp_phy_cfg sdx65_qmp_pciephy_cfg = {
3642
3649
.pcs_num = ARRAY_SIZE (sdx65_qmp_pcie_pcs_tbl ),
3643
3650
.pcs_misc = sdx65_qmp_pcie_pcs_misc_tbl ,
3644
3651
.pcs_misc_num = ARRAY_SIZE (sdx65_qmp_pcie_pcs_misc_tbl ),
3652
+ .pcs_lane1 = sdx65_qmp_pcie_pcs_lane1_tbl ,
3653
+ .pcs_lane1_num = ARRAY_SIZE (sdx65_qmp_pcie_pcs_lane1_tbl ),
3645
3654
},
3646
3655
.reset_list = sdm845_pciephy_reset_l ,
3647
3656
.num_resets = ARRAY_SIZE (sdm845_pciephy_reset_l ),
@@ -3841,6 +3850,8 @@ static const struct qmp_phy_cfg sa8775p_qmp_gen4x2_pciephy_cfg = {
3841
3850
.pcs_num = ARRAY_SIZE (sa8775p_qmp_gen4x2_pcie_pcs_alt_tbl ),
3842
3851
.pcs_misc = sa8775p_qmp_gen4_pcie_pcs_misc_tbl ,
3843
3852
.pcs_misc_num = ARRAY_SIZE (sa8775p_qmp_gen4_pcie_pcs_misc_tbl ),
3853
+ .pcs_lane1 = sdx65_qmp_pcie_pcs_lane1_tbl ,
3854
+ .pcs_lane1_num = ARRAY_SIZE (sdx65_qmp_pcie_pcs_lane1_tbl ),
3844
3855
},
3845
3856
3846
3857
.tbls_rc = & (const struct qmp_phy_cfg_tbls ) {
@@ -4047,6 +4058,7 @@ static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_c
4047
4058
void __iomem * rx2 = qmp -> rx2 ;
4048
4059
void __iomem * pcs = qmp -> pcs ;
4049
4060
void __iomem * pcs_misc = qmp -> pcs_misc ;
4061
+ void __iomem * pcs_lane1 = qmp -> pcs_lane1 ;
4050
4062
void __iomem * ln_shrd = qmp -> ln_shrd ;
4051
4063
4052
4064
if (!tbls )
@@ -4071,6 +4083,7 @@ static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_c
4071
4083
4072
4084
qmp_configure (qmp -> dev , pcs , tbls -> pcs , tbls -> pcs_num );
4073
4085
qmp_configure (qmp -> dev , pcs_misc , tbls -> pcs_misc , tbls -> pcs_misc_num );
4086
+ qmp_configure (qmp -> dev , pcs_lane1 , tbls -> pcs_lane1 , tbls -> pcs_lane1_num );
4074
4087
4075
4088
if (cfg -> lanes >= 4 && qmp -> tcsr_4ln_config ) {
4076
4089
qmp_configure (qmp -> dev , serdes , cfg -> serdes_4ln_tbl ,
@@ -4522,6 +4535,14 @@ static int qmp_pcie_parse_dt_legacy(struct qmp_pcie *qmp, struct device_node *np
4522
4535
}
4523
4536
}
4524
4537
4538
+ /*
4539
+ * For all platforms where legacy bindings existed, PCS_LANE1 was
4540
+ * mapped as a part of the PCS_MISC region.
4541
+ */
4542
+ if (!IS_ERR (qmp -> pcs_misc ) && cfg -> offsets -> pcs_lane1 != 0 )
4543
+ qmp -> pcs_lane1 = qmp -> pcs_misc +
4544
+ (cfg -> offsets -> pcs_lane1 - cfg -> offsets -> pcs_misc );
4545
+
4525
4546
clk = devm_get_clk_from_child (dev , np , NULL );
4526
4547
if (IS_ERR (clk )) {
4527
4548
return dev_err_probe (dev , PTR_ERR (clk ),
@@ -4589,6 +4610,7 @@ static int qmp_pcie_parse_dt(struct qmp_pcie *qmp)
4589
4610
qmp -> serdes = base + offs -> serdes ;
4590
4611
qmp -> pcs = base + offs -> pcs ;
4591
4612
qmp -> pcs_misc = base + offs -> pcs_misc ;
4613
+ qmp -> pcs_lane1 = base + offs -> pcs_lane1 ;
4592
4614
qmp -> tx = base + offs -> tx ;
4593
4615
qmp -> rx = base + offs -> rx ;
4594
4616
0 commit comments