};
 
 struct rockchip_combphy_cfg {
+       unsigned int num_phys;
+       unsigned int phy_ids[3];
        const struct rockchip_combphy_grfcfg *grfcfg;
        int (*combphy_cfg)(struct rockchip_combphy_priv *priv);
 };
 
 struct rockchip_combphy_priv {
        u8 type;
+       int id;
        void __iomem *mmio;
        int num_clks;
        struct clk_bulk_data *clks;
        struct rockchip_combphy_priv *priv;
        const struct rockchip_combphy_cfg *phy_cfg;
        struct resource *res;
-       int ret;
+       int ret, id;
 
        phy_cfg = of_device_get_match_data(dev);
        if (!phy_cfg) {
                return ret;
        }
 
+       /* find the phy-id from the io address */
+       priv->id = -ENODEV;
+       for (id = 0; id < phy_cfg->num_phys; id++) {
+               if (res->start == phy_cfg->phy_ids[id]) {
+                       priv->id = id;
+                       break;
+               }
+       }
+
        priv->dev = dev;
        priv->type = PHY_NONE;
        priv->cfg = phy_cfg;
 };
 
 static const struct rockchip_combphy_cfg rk3568_combphy_cfgs = {
+       .num_phys = 3,
+       .phy_ids = {
+               0xfe820000,
+               0xfe830000,
+               0xfe840000,
+       },
        .grfcfg         = &rk3568_combphy_grfcfgs,
        .combphy_cfg    = rk3568_combphy_cfg,
 };
                rockchip_combphy_param_write(priv->phy_grf, &cfg->con1_for_pcie, true);
                rockchip_combphy_param_write(priv->phy_grf, &cfg->con2_for_pcie, true);
                rockchip_combphy_param_write(priv->phy_grf, &cfg->con3_for_pcie, true);
-               rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_pcie1l0_sel, true);
-               rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_pcie1l1_sel, true);
+               switch (priv->id) {
+               case 1:
+                       rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_pcie1l0_sel, true);
+                       break;
+               case 2:
+                       rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_pcie1l1_sel, true);
+                       break;
+               }
                break;
        case PHY_TYPE_USB3:
                /* Set SSC downward spread spectrum */
 };
 
 static const struct rockchip_combphy_cfg rk3588_combphy_cfgs = {
+       .num_phys = 3,
+       .phy_ids = {
+               0xfee00000,
+               0xfee10000,
+               0xfee20000,
+       },
        .grfcfg         = &rk3588_combphy_grfcfgs,
        .combphy_cfg    = rk3588_combphy_cfg,
 };