/* bit offset of PHYSTATUS in QPHY_PCS_STATUS register */
        unsigned int phy_status;
 
-       /* true, if PHY needs delay after POWER_DOWN */
-       bool has_pwrdn_delay;
+       bool skip_start_delay;
 
        /* QMP PHY pipe clock interface rate */
        unsigned long pipe_clock_rate;
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg ipq8074_pciephy_gen3_cfg = {
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
 
-       .has_pwrdn_delay        = true,
-
        .pipe_clock_rate        = 250000000,
 };
 
 
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sdm845_qmp_pciephy_cfg = {
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sdm845_qhp_pciephy_cfg = {
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sm8250_qmp_gen3x1_pciephy_cfg = {
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sm8250_qmp_gen3x2_pciephy_cfg = {
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg msm8998_pciephy_cfg = {
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
+
+       .skip_start_delay       = true,
 };
 
 static const struct qmp_phy_cfg sc8180x_pciephy_cfg = {
 
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sdx55_qmp_pciephy_cfg = {
        .start_ctrl             = PCS_START | SERDES_START,
        .pwrdn_ctrl             = SW_PWRDN,
        .phy_status             = PHYSTATUS_4_20,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sm8450_qmp_gen3x1_pciephy_cfg = {
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS,
-
-       .has_pwrdn_delay        = true,
 };
 
 static const struct qmp_phy_cfg sm8450_qmp_gen4x2_pciephy_cfg = {
        .start_ctrl             = SERDES_START | PCS_START,
        .pwrdn_ctrl             = SW_PWRDN | REFCLK_DRV_DSBL,
        .phy_status             = PHYSTATUS_4_20,
-
-       .has_pwrdn_delay        = true,
 };
 
 static void qmp_pcie_configure_lane(void __iomem *base,
        qmp_pcie_pcs_init(qphy, &cfg->tables);
        qmp_pcie_pcs_init(qphy, mode_tables);
 
-       if (cfg->has_pwrdn_delay)
-               usleep_range(1000, 1200);
-
        /* Pull PHY out of reset state */
        qphy_clrbits(pcs, cfg->regs[QPHY_SW_RESET], SW_RESET);
 
        /* start SerDes and Phy-Coding-Sublayer */
        qphy_setbits(pcs, cfg->regs[QPHY_START_CTRL], cfg->start_ctrl);
 
+       if (!cfg->skip_start_delay)
+               usleep_range(1000, 1200);
+
        status = pcs + cfg->regs[QPHY_PCS_STATUS];
        mask = cfg->phy_status;
        ready = 0;