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

phy: qcpm-qmp-usb: Add support for QDU1000/QRU1000

Add QDU1000/QRU1000 specific register layout and table configs.

Co-developed-by: Amrit Anand <quic_amrianan@quicinc.com>
Signed-off-by: Amrit Anand <quic_amrianan@quicinc.com>
Signed-off-by: Komal Bajaj <quic_kbajaj@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240502082017.13777-5-quic_kbajaj@quicinc.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Komal Bajaj and committed by
Vinod Koul
49534166 f75a4b3a

+47
+47
drivers/phy/qualcomm/phy-qcom-qmp-usb.c
··· 337 337 QMP_PHY_INIT_CFG(QPHY_V2_PCS_POWER_STATE_CONFIG2, 0x08), 338 338 }; 339 339 340 + static const struct qmp_phy_init_tbl qdu1000_usb3_uniphy_pcs_tbl[] = { 341 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_LOCK_DETECT_CONFIG1, 0xc4), 342 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_LOCK_DETECT_CONFIG2, 0x89), 343 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_LOCK_DETECT_CONFIG3, 0x20), 344 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_LOCK_DETECT_CONFIG6, 0x13), 345 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RCVR_DTCT_DLY_P1U2_L, 0xe7), 346 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RCVR_DTCT_DLY_P1U2_H, 0x03), 347 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RX_SIGDET_LVL, 0xaa), 348 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCS_TX_RX_CONFIG, 0x0c), 349 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_CDR_RESET_TIME, 0x0a), 350 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_ALIGN_DETECT_CONFIG1, 0x88), 351 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_ALIGN_DETECT_CONFIG2, 0x13), 352 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_EQ_CONFIG1, 0x4b), 353 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_EQ_CONFIG5, 0x10), 354 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_REFGEN_REQ_CONFIG1, 0x21), 355 + }; 356 + 357 + static const struct qmp_phy_init_tbl qdu1000_usb3_uniphy_pcs_usb_tbl[] = { 358 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_USB3_RXEQTRAINING_DFE_TIME_S2, 0x07), 359 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_USB3_LFPS_DET_HIGH_COUNT_VAL, 0xf8), 360 + QMP_PHY_INIT_CFG(QPHY_V4_PCS_USB3_POWER_STATE_CONFIG1, 0x6f), 361 + }; 362 + 340 363 static const struct qmp_phy_init_tbl qmp_v3_usb3_uniphy_serdes_tbl[] = { 341 364 QMP_PHY_INIT_CFG(QSERDES_V3_COM_PLL_IVCO, 0x07), 342 365 QMP_PHY_INIT_CFG(QSERDES_V3_COM_SYSCLK_EN_SEL, 0x14), ··· 1423 1400 .regs = qmp_v2_usb3phy_regs_layout, 1424 1401 }; 1425 1402 1403 + static const struct qmp_phy_cfg qdu1000_usb3_uniphy_cfg = { 1404 + .offsets = &qmp_usb_offsets_v5, 1405 + 1406 + .serdes_tbl = sm8150_usb3_uniphy_serdes_tbl, 1407 + .serdes_tbl_num = ARRAY_SIZE(sm8150_usb3_uniphy_serdes_tbl), 1408 + .tx_tbl = sm8350_usb3_uniphy_tx_tbl, 1409 + .tx_tbl_num = ARRAY_SIZE(sm8350_usb3_uniphy_tx_tbl), 1410 + .rx_tbl = sm8350_usb3_uniphy_rx_tbl, 1411 + .rx_tbl_num = ARRAY_SIZE(sm8350_usb3_uniphy_rx_tbl), 1412 + .pcs_tbl = qdu1000_usb3_uniphy_pcs_tbl, 1413 + .pcs_tbl_num = ARRAY_SIZE(qdu1000_usb3_uniphy_pcs_tbl), 1414 + .pcs_usb_tbl = qdu1000_usb3_uniphy_pcs_usb_tbl, 1415 + .pcs_usb_tbl_num = ARRAY_SIZE(qdu1000_usb3_uniphy_pcs_usb_tbl), 1416 + .vreg_list = qmp_phy_vreg_l, 1417 + .num_vregs = ARRAY_SIZE(qmp_phy_vreg_l), 1418 + .regs = qmp_v4_usb3phy_regs_layout, 1419 + .pcs_usb_offset = 0x1000, 1420 + 1421 + .has_pwrdn_delay = true, 1422 + }; 1423 + 1426 1424 static const struct qmp_phy_cfg sa8775p_usb3_uniphy_cfg = { 1427 1425 .offsets = &qmp_usb_offsets_v5, 1428 1426 ··· 2246 2202 }, { 2247 2203 .compatible = "qcom,msm8996-qmp-usb3-phy", 2248 2204 .data = &msm8996_usb3phy_cfg, 2205 + }, { 2206 + .compatible = "qcom,qdu1000-qmp-usb3-uni-phy", 2207 + .data = &qdu1000_usb3_uniphy_cfg, 2249 2208 }, { 2250 2209 .compatible = "qcom,sa8775p-qmp-usb3-uni-phy", 2251 2210 .data = &sa8775p_usb3_uniphy_cfg,