mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
phy: qualcomm: qmp-pcie: split PCS_LANE1 region
The PCS_LANE1 region isn't a part of the PCS_PCIE region. It was handled this way as it simplified handled of devices with the old bindings. Nowadays it can be handled as is, without hacks. Split the PCS_LANE1 region from the PCS_PCIE / PCS_MISC region space. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://lore.kernel.org/r/20241021-sar2130p-phys-v2-4-d883acf170f7@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
545069bcf3
commit
f9d35dd39b
@ -1850,7 +1850,7 @@ static const struct qmp_phy_init_tbl sdx55_qmp_pcie_rc_pcs_misc_tbl[] = {
|
||||
QMP_PHY_INIT_CFG(QPHY_V4_20_PCS_PCIE_OSC_DTCT_ACTIONS, 0x00),
|
||||
};
|
||||
|
||||
static const struct qmp_phy_init_tbl sdx55_qmp_pcie_ep_pcs_misc_tbl[] = {
|
||||
static const struct qmp_phy_init_tbl sdx55_qmp_pcie_ep_pcs_lane1_tbl[] = {
|
||||
QMP_PHY_INIT_CFG(QPHY_V4_20_PCS_LANE1_INSIG_SW_CTRL2, 0x00),
|
||||
QMP_PHY_INIT_CFG(QPHY_V4_20_PCS_LANE1_INSIG_MX_CTRL2, 0x00),
|
||||
};
|
||||
@ -1984,6 +1984,9 @@ static const struct qmp_phy_init_tbl sdx65_qmp_pcie_pcs_misc_tbl[] = {
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG2, 0x0d),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG5, 0x02),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_PCIE_G4_PRE_GAIN, 0x2e),
|
||||
};
|
||||
|
||||
static const struct qmp_phy_init_tbl sdx65_qmp_pcie_pcs_lane1_tbl[] = {
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2, 0x00),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2, 0x00),
|
||||
};
|
||||
@ -2659,8 +2662,6 @@ static const struct qmp_phy_init_tbl sa8775p_qmp_gen4_pcie_rc_pcs_misc_tbl[] = {
|
||||
static const struct qmp_phy_init_tbl sa8775p_qmp_gen4x2_pcie_pcs_alt_tbl[] = {
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_EQ_CONFIG4, 0x16),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_EQ_CONFIG5, 0x22),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2, 0x00),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2, 0x00),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_G3S2_PRE_GAIN, 0x2e),
|
||||
QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_RX_SIGDET_LVL, 0x66),
|
||||
};
|
||||
@ -2805,6 +2806,7 @@ struct qmp_pcie_offsets {
|
||||
u16 serdes;
|
||||
u16 pcs;
|
||||
u16 pcs_misc;
|
||||
u16 pcs_lane1;
|
||||
u16 tx;
|
||||
u16 rx;
|
||||
u16 tx2;
|
||||
@ -2829,6 +2831,8 @@ struct qmp_phy_cfg_tbls {
|
||||
int pcs_num;
|
||||
const struct qmp_phy_init_tbl *pcs_misc;
|
||||
int pcs_misc_num;
|
||||
const struct qmp_phy_init_tbl *pcs_lane1;
|
||||
int pcs_lane1_num;
|
||||
const struct qmp_phy_init_tbl *ln_shrd;
|
||||
int ln_shrd_num;
|
||||
};
|
||||
@ -2888,6 +2892,7 @@ struct qmp_pcie {
|
||||
void __iomem *serdes;
|
||||
void __iomem *pcs;
|
||||
void __iomem *pcs_misc;
|
||||
void __iomem *pcs_lane1;
|
||||
void __iomem *tx;
|
||||
void __iomem *rx;
|
||||
void __iomem *tx2;
|
||||
@ -3004,6 +3009,7 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v4_20 = {
|
||||
.serdes = 0x1000,
|
||||
.pcs = 0x1200,
|
||||
.pcs_misc = 0x1600,
|
||||
.pcs_lane1 = 0x1e00,
|
||||
.tx = 0x0000,
|
||||
.rx = 0x0200,
|
||||
.tx2 = 0x0800,
|
||||
@ -3034,6 +3040,7 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v5_20 = {
|
||||
.serdes = 0x1000,
|
||||
.pcs = 0x1200,
|
||||
.pcs_misc = 0x1400,
|
||||
.pcs_lane1 = 0x1e00,
|
||||
.tx = 0x0000,
|
||||
.rx = 0x0200,
|
||||
.tx2 = 0x0800,
|
||||
@ -3542,8 +3549,8 @@ static const struct qmp_phy_cfg sdx55_qmp_pciephy_cfg = {
|
||||
.tbls_ep = &(const struct qmp_phy_cfg_tbls) {
|
||||
.serdes = sdx55_qmp_pcie_ep_serdes_tbl,
|
||||
.serdes_num = ARRAY_SIZE(sdx55_qmp_pcie_ep_serdes_tbl),
|
||||
.pcs_misc = sdx55_qmp_pcie_ep_pcs_misc_tbl,
|
||||
.pcs_misc_num = ARRAY_SIZE(sdx55_qmp_pcie_ep_pcs_misc_tbl),
|
||||
.pcs_lane1 = sdx55_qmp_pcie_ep_pcs_lane1_tbl,
|
||||
.pcs_lane1_num = ARRAY_SIZE(sdx55_qmp_pcie_ep_pcs_lane1_tbl),
|
||||
},
|
||||
|
||||
.reset_list = sdm845_pciephy_reset_l,
|
||||
@ -3642,6 +3649,8 @@ static const struct qmp_phy_cfg sdx65_qmp_pciephy_cfg = {
|
||||
.pcs_num = ARRAY_SIZE(sdx65_qmp_pcie_pcs_tbl),
|
||||
.pcs_misc = sdx65_qmp_pcie_pcs_misc_tbl,
|
||||
.pcs_misc_num = ARRAY_SIZE(sdx65_qmp_pcie_pcs_misc_tbl),
|
||||
.pcs_lane1 = sdx65_qmp_pcie_pcs_lane1_tbl,
|
||||
.pcs_lane1_num = ARRAY_SIZE(sdx65_qmp_pcie_pcs_lane1_tbl),
|
||||
},
|
||||
.reset_list = sdm845_pciephy_reset_l,
|
||||
.num_resets = ARRAY_SIZE(sdm845_pciephy_reset_l),
|
||||
@ -3841,6 +3850,8 @@ static const struct qmp_phy_cfg sa8775p_qmp_gen4x2_pciephy_cfg = {
|
||||
.pcs_num = ARRAY_SIZE(sa8775p_qmp_gen4x2_pcie_pcs_alt_tbl),
|
||||
.pcs_misc = sa8775p_qmp_gen4_pcie_pcs_misc_tbl,
|
||||
.pcs_misc_num = ARRAY_SIZE(sa8775p_qmp_gen4_pcie_pcs_misc_tbl),
|
||||
.pcs_lane1 = sdx65_qmp_pcie_pcs_lane1_tbl,
|
||||
.pcs_lane1_num = ARRAY_SIZE(sdx65_qmp_pcie_pcs_lane1_tbl),
|
||||
},
|
||||
|
||||
.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
|
||||
void __iomem *rx2 = qmp->rx2;
|
||||
void __iomem *pcs = qmp->pcs;
|
||||
void __iomem *pcs_misc = qmp->pcs_misc;
|
||||
void __iomem *pcs_lane1 = qmp->pcs_lane1;
|
||||
void __iomem *ln_shrd = qmp->ln_shrd;
|
||||
|
||||
if (!tbls)
|
||||
@ -4071,6 +4083,7 @@ static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_c
|
||||
|
||||
qmp_configure(qmp->dev, pcs, tbls->pcs, tbls->pcs_num);
|
||||
qmp_configure(qmp->dev, pcs_misc, tbls->pcs_misc, tbls->pcs_misc_num);
|
||||
qmp_configure(qmp->dev, pcs_lane1, tbls->pcs_lane1, tbls->pcs_lane1_num);
|
||||
|
||||
if (cfg->lanes >= 4 && qmp->tcsr_4ln_config) {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* For all platforms where legacy bindings existed, PCS_LANE1 was
|
||||
* mapped as a part of the PCS_MISC region.
|
||||
*/
|
||||
if (!IS_ERR(qmp->pcs_misc) && cfg->offsets->pcs_lane1 != 0)
|
||||
qmp->pcs_lane1 = qmp->pcs_misc +
|
||||
(cfg->offsets->pcs_lane1 - cfg->offsets->pcs_misc);
|
||||
|
||||
clk = devm_get_clk_from_child(dev, np, NULL);
|
||||
if (IS_ERR(clk)) {
|
||||
return dev_err_probe(dev, PTR_ERR(clk),
|
||||
@ -4589,6 +4610,7 @@ static int qmp_pcie_parse_dt(struct qmp_pcie *qmp)
|
||||
qmp->serdes = base + offs->serdes;
|
||||
qmp->pcs = base + offs->pcs;
|
||||
qmp->pcs_misc = base + offs->pcs_misc;
|
||||
qmp->pcs_lane1 = base + offs->pcs_lane1;
|
||||
qmp->tx = base + offs->tx;
|
||||
qmp->rx = base + offs->rx;
|
||||
|
||||
|
@ -13,7 +13,8 @@
|
||||
#define QPHY_V4_20_PCS_PCIE_G4_RXEQEVAL_TIME 0x0f4
|
||||
#define QPHY_V4_20_PCS_PCIE_G4_EQ_CONFIG2 0x0fc
|
||||
#define QPHY_V4_20_PCS_PCIE_G4_EQ_CONFIG5 0x108
|
||||
#define QPHY_V4_20_PCS_LANE1_INSIG_SW_CTRL2 0x824
|
||||
#define QPHY_V4_20_PCS_LANE1_INSIG_MX_CTRL2 0x828
|
||||
|
||||
#define QPHY_V4_20_PCS_LANE1_INSIG_SW_CTRL2 0x024
|
||||
#define QPHY_V4_20_PCS_LANE1_INSIG_MX_CTRL2 0x028
|
||||
|
||||
#endif
|
||||
|
@ -17,7 +17,8 @@
|
||||
#define QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG5 0x108
|
||||
#define QPHY_V5_20_PCS_PCIE_G4_PRE_GAIN 0x15c
|
||||
#define QPHY_V5_20_PCS_PCIE_RX_MARGINING_CONFIG3 0x184
|
||||
#define QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2 0xa24
|
||||
#define QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2 0xa28
|
||||
|
||||
#define QPHY_V5_20_PCS_LANE1_INSIG_SW_CTRL2 0x024
|
||||
#define QPHY_V5_20_PCS_LANE1_INSIG_MX_CTRL2 0x028
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user