[PATCH] phy: qcom-qmp-pcie: correct sm8350 PHY tables

Konrad Dybcio konrad.dybcio at linaro.org
Wed Apr 19 03:59:44 PDT 2023



On 14.04.2023 22:54, Dmitry Baryshkov wrote:
> Correct sm8350 PCIe PHY tables according to the vendor dtsi file.
> This accounts some additional differences between PHY programming on
> sm8350 and sm8450.
> 
> The name for the PCS register 0x8 is not present in the vendor kernels,
> but since on other generations the register prior to POWER_STATE_CONFIG2
> is called POWER_STATE_CONFIG1, we can establish that as its name.
> 
> Fixes: c70052739d16 ("phy: qcom-qmp-pcie: add support for sm8350 platform")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
Are you referencing the entries in lahaina-2.1.dtsi?

[...]

> +static const struct qmp_phy_init_tbl sm8350_qmp_gen3x1_pcie_pcs_tbl[] = {
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_RX_SIGDET_LVL, 0xa8),
e.g. my downstream says 0x77 here

> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_RATE_SLEW_CNTRL1, 0x0b),
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_REFGEN_REQ_CONFIG1, 0x05),

Konrad

> +};
> +
> +static const struct qmp_phy_init_tbl sm8350_qmp_gen3x1_pcie_pcs_misc_tbl[] = {
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_OSC_DTCT_ACTIONS, 0x00),
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_INT_AUX_CLK_CONFIG1, 0x00),
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_EQ_CONFIG2, 0x0f),
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_POWER_STATE_CONFIG1, 0x0f),
> +	QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_ENDPOINT_REFCLK_DRIVE, 0xc1),
> +};
> +
> +static const struct qmp_phy_init_tbl sm8350_qmp_gen3x2_pcie_rc_serdes_tbl[] = {
> +	QMP_PHY_INIT_CFG(QSERDES_V5_COM_CLK_ENABLE1, 0x90),
>  };
>  
>  static const struct qmp_phy_init_tbl sm8350_qmp_gen3x2_pcie_rc_rx_tbl[] = {
> @@ -2325,15 +2349,15 @@ static const struct qmp_phy_cfg sm8350_qmp_gen3x1_pciephy_cfg = {
>  		.tx_num		= ARRAY_SIZE(sm8350_qmp_gen3x1_pcie_tx_tbl),
>  		.rx		= sm8450_qmp_gen3_pcie_rx_tbl,
>  		.rx_num		= ARRAY_SIZE(sm8450_qmp_gen3_pcie_rx_tbl),
> -		.pcs		= sm8450_qmp_gen3_pcie_pcs_tbl,
> -		.pcs_num	= ARRAY_SIZE(sm8450_qmp_gen3_pcie_pcs_tbl),
> -		.pcs_misc	= sm8450_qmp_gen3x1_pcie_pcs_misc_tbl,
> -		.pcs_misc_num	= ARRAY_SIZE(sm8450_qmp_gen3x1_pcie_pcs_misc_tbl),
> +		.pcs		= sm8350_qmp_gen3x1_pcie_pcs_tbl,
> +		.pcs_num	= ARRAY_SIZE(sm8350_qmp_gen3x1_pcie_pcs_tbl),
> +		.pcs_misc	= sm8350_qmp_gen3x1_pcie_pcs_misc_tbl,
> +		.pcs_misc_num	= ARRAY_SIZE(sm8350_qmp_gen3x1_pcie_pcs_misc_tbl),
>  	},
>  
>  	.tbls_rc = &(const struct qmp_phy_cfg_tbls) {
> -		.serdes		= sm8450_qmp_gen3x1_pcie_rc_serdes_tbl,
> -		.serdes_num	= ARRAY_SIZE(sm8450_qmp_gen3x1_pcie_rc_serdes_tbl),
> +		.serdes		= sm8350_qmp_gen3x1_pcie_rc_serdes_tbl,
> +		.serdes_num	= ARRAY_SIZE(sm8350_qmp_gen3x1_pcie_rc_serdes_tbl),
>  		.rx		= sm8350_qmp_gen3x1_pcie_rc_rx_tbl,
>  		.rx_num		= ARRAY_SIZE(sm8350_qmp_gen3x1_pcie_rc_rx_tbl),
>  	},
> @@ -2369,6 +2393,8 @@ static const struct qmp_phy_cfg sm8350_qmp_gen3x2_pciephy_cfg = {
>  	},
>  
>  	.tbls_rc = &(const struct qmp_phy_cfg_tbls) {
> +		.serdes		= sm8350_qmp_gen3x2_pcie_rc_serdes_tbl,
> +		.serdes_num	= ARRAY_SIZE(sm8350_qmp_gen3x2_pcie_rc_serdes_tbl),
>  		.rx		= sm8350_qmp_gen3x2_pcie_rc_rx_tbl,
>  		.rx_num		= ARRAY_SIZE(sm8350_qmp_gen3x2_pcie_rc_rx_tbl),
>  		.pcs		= sm8350_qmp_gen3x2_pcie_rc_pcs_tbl,
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v5.h b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v5.h
> index a469ae2a10a1..ea466e14ca12 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v5.h
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v5.h
> @@ -8,6 +8,7 @@
>  #define QCOM_PHY_QMP_PCS_PCIE_V5_H_
>  
>  /* Only for QMP V5 PHY - PCS_PCIE registers */
> +#define QPHY_V5_PCS_PCIE_POWER_STATE_CONFIG1		0x08
>  #define QPHY_V5_PCS_PCIE_POWER_STATE_CONFIG2		0x0c
>  #define QPHY_V5_PCS_PCIE_POWER_STATE_CONFIG4		0x14
>  #define QPHY_V5_PCS_PCIE_ENDPOINT_REFCLK_DRIVE		0x20



More information about the linux-phy mailing list