Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

phy: qcom: qmp-pcie: Configure all tables on port B PHY

Currently, only the RX and TX tables are written to the second PHY
(port B) when the 4-lanes mode is configured, but according to Qualcomm
internal documentation, the pcs, pcs_misc, serdes and ln_shrd tables need
to be written as well.

Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20240805-phy-qcom-qmp-pcie-write-all-tbls-second-port-v3-1-6967c6bf61d1@linaro.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Qiang Yu and committed by
Vinod Koul
00c5f322 7f7315db

+13 -1
+13 -1
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
··· 3699 3699 { 3700 3700 const struct qmp_phy_cfg *cfg = qmp->cfg; 3701 3701 const struct qmp_pcie_offsets *offs = cfg->offsets; 3702 - void __iomem *tx3, *rx3, *tx4, *rx4; 3702 + void __iomem *serdes, *tx3, *rx3, *tx4, *rx4, *pcs, *pcs_misc, *ln_shrd; 3703 3703 3704 + serdes = qmp->port_b + offs->serdes; 3704 3705 tx3 = qmp->port_b + offs->tx; 3705 3706 rx3 = qmp->port_b + offs->rx; 3706 3707 tx4 = qmp->port_b + offs->tx2; 3707 3708 rx4 = qmp->port_b + offs->rx2; 3709 + pcs = qmp->port_b + offs->pcs; 3710 + pcs_misc = qmp->port_b + offs->pcs_misc; 3711 + ln_shrd = qmp->port_b + offs->ln_shrd; 3712 + 3713 + qmp_configure(qmp->dev, serdes, tbls->serdes, tbls->serdes_num); 3714 + qmp_configure(qmp->dev, serdes, cfg->serdes_4ln_tbl, cfg->serdes_4ln_num); 3708 3715 3709 3716 qmp_configure_lane(qmp->dev, tx3, tbls->tx, tbls->tx_num, 1); 3710 3717 qmp_configure_lane(qmp->dev, rx3, tbls->rx, tbls->rx_num, 1); 3711 3718 3712 3719 qmp_configure_lane(qmp->dev, tx4, tbls->tx, tbls->tx_num, 2); 3713 3720 qmp_configure_lane(qmp->dev, rx4, tbls->rx, tbls->rx_num, 2); 3721 + 3722 + qmp_configure(qmp->dev, pcs, tbls->pcs, tbls->pcs_num); 3723 + qmp_configure(qmp->dev, pcs_misc, tbls->pcs_misc, tbls->pcs_misc_num); 3724 + 3725 + qmp_configure(qmp->dev, ln_shrd, tbls->ln_shrd, tbls->ln_shrd_num); 3714 3726 } 3715 3727 3716 3728 static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_cfg_tbls *tbls)