Lines Matching full:tphy

679 static void hs_slew_rate_calibrate(struct mtk_tphy *tphy,  in hs_slew_rate_calibrate()  argument
690 if (tphy->pdata->version == MTK_PHY_V3) in hs_slew_rate_calibrate()
708 if (tphy->pdata->version == MTK_PHY_V1) in hs_slew_rate_calibrate()
730 tmp = tphy->src_ref_clk * tphy->src_coef; in hs_slew_rate_calibrate()
737 dev_dbg(tphy->dev, "phy:%d, fm_out:%d, calib:%d (clk:%d, coef:%d)\n", in hs_slew_rate_calibrate()
739 tphy->src_ref_clk, tphy->src_coef); in hs_slew_rate_calibrate()
749 static void u3_phy_instance_init(struct mtk_tphy *tphy, in u3_phy_instance_init() argument
795 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in u3_phy_instance_init()
798 static void u2_phy_pll_26m_set(struct mtk_tphy *tphy, in u2_phy_pll_26m_set() argument
804 if (!tphy->pdata->sw_pll_48m_to_26m) in u2_phy_pll_26m_set()
817 static void u2_phy_instance_init(struct mtk_tphy *tphy, in u2_phy_instance_init() argument
839 if (tphy->pdata->avoid_rx_sen_degradation) { in u2_phy_instance_init()
858 u2_phy_pll_26m_set(tphy, instance); in u2_phy_instance_init()
860 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_init()
863 static void u2_phy_instance_power_on(struct mtk_tphy *tphy, in u2_phy_instance_power_on() argument
877 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_on()
882 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_on()
885 static void u2_phy_instance_power_off(struct mtk_tphy *tphy, in u2_phy_instance_power_off() argument
899 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_off()
905 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_off()
908 static void u2_phy_instance_exit(struct mtk_tphy *tphy, in u2_phy_instance_exit() argument
915 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_exit()
922 static void u2_phy_instance_set_mode(struct mtk_tphy *tphy, in u2_phy_instance_set_mode() argument
947 static void pcie_phy_instance_init(struct mtk_tphy *tphy, in pcie_phy_instance_init() argument
953 if (tphy->pdata->version != MTK_PHY_V1) in pcie_phy_instance_init()
994 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in pcie_phy_instance_init()
997 static void pcie_phy_instance_power_on(struct mtk_tphy *tphy, in pcie_phy_instance_power_on() argument
1009 static void pcie_phy_instance_power_off(struct mtk_tphy *tphy, in pcie_phy_instance_power_off() argument
1022 static void sata_phy_instance_init(struct mtk_tphy *tphy, in sata_phy_instance_init() argument
1064 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in sata_phy_instance_init()
1067 static void phy_v1_banks_init(struct mtk_tphy *tphy, in phy_v1_banks_init() argument
1076 u2_banks->fmreg = tphy->sif_base + SSUSB_SIFSLV_V1_U2FREQ; in phy_v1_banks_init()
1081 u3_banks->spllc = tphy->sif_base + SSUSB_SIFSLV_V1_SPLLC; in phy_v1_banks_init()
1082 u3_banks->chip = tphy->sif_base + SSUSB_SIFSLV_V1_CHIP; in phy_v1_banks_init()
1090 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v1_banks_init()
1095 static void phy_v2_banks_init(struct mtk_tphy *tphy, in phy_v2_banks_init() argument
1115 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v2_banks_init()
1120 static void phy_parse_property(struct mtk_tphy *tphy, in phy_parse_property() argument
1151 static void u2_phy_props_set(struct mtk_tphy *tphy, in u2_phy_props_set() argument
1160 if (tphy->pdata->version < MTK_PHY_V3 && instance->eye_src) in u2_phy_props_set()
1249 static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instance) in phy_efuse_get() argument
1254 /* tphy v1 doesn't support sw efuse, skip it */ in phy_efuse_get()
1255 if (!tphy->pdata->sw_efuse_supported) { in phy_efuse_get()
1363 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_init() local
1374 u2_phy_instance_init(tphy, instance); in mtk_phy_init()
1375 u2_phy_props_set(tphy, instance); in mtk_phy_init()
1378 u3_phy_instance_init(tphy, instance); in mtk_phy_init()
1381 pcie_phy_instance_init(tphy, instance); in mtk_phy_init()
1384 sata_phy_instance_init(tphy, instance); in mtk_phy_init()
1390 dev_err(tphy->dev, "incompatible PHY type\n"); in mtk_phy_init()
1401 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
1404 u2_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
1405 hs_slew_rate_calibrate(tphy, instance); in mtk_phy_power_on()
1407 pcie_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
1416 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
1419 u2_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
1421 pcie_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
1429 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_exit() local
1432 u2_phy_instance_exit(tphy, instance); in mtk_phy_exit()
1441 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
1444 u2_phy_instance_set_mode(tphy, instance, mode); in mtk_phy_set_mode()
1452 struct mtk_tphy *tphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
1463 for (index = 0; index < tphy->nphys; index++) in mtk_phy_xlate()
1464 if (phy_np == tphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
1465 instance = tphy->phys[index]; in mtk_phy_xlate()
1484 switch (tphy->pdata->version) { in mtk_phy_xlate()
1486 phy_v1_banks_init(tphy, instance); in mtk_phy_xlate()
1490 phy_v2_banks_init(tphy, instance); in mtk_phy_xlate()
1497 ret = phy_efuse_get(tphy, instance); in mtk_phy_xlate()
1501 phy_parse_property(tphy, instance); in mtk_phy_xlate()
1548 { .compatible = "mediatek,mt8195-tphy", .data = &mt8195_pdata },
1549 { .compatible = "mediatek,generic-tphy-v1", .data = &tphy_v1_pdata },
1550 { .compatible = "mediatek,generic-tphy-v2", .data = &tphy_v2_pdata },
1551 { .compatible = "mediatek,generic-tphy-v3", .data = &tphy_v3_pdata },
1562 struct mtk_tphy *tphy; in mtk_tphy_probe() local
1566 tphy = devm_kzalloc(dev, sizeof(*tphy), GFP_KERNEL); in mtk_tphy_probe()
1567 if (!tphy) in mtk_tphy_probe()
1570 tphy->pdata = of_device_get_match_data(dev); in mtk_tphy_probe()
1571 if (!tphy->pdata) in mtk_tphy_probe()
1574 tphy->nphys = of_get_child_count(np); in mtk_tphy_probe()
1575 tphy->phys = devm_kcalloc(dev, tphy->nphys, in mtk_tphy_probe()
1576 sizeof(*tphy->phys), GFP_KERNEL); in mtk_tphy_probe()
1577 if (!tphy->phys) in mtk_tphy_probe()
1580 tphy->dev = dev; in mtk_tphy_probe()
1581 platform_set_drvdata(pdev, tphy); in mtk_tphy_probe()
1585 if (sif_res && tphy->pdata->version == MTK_PHY_V1) { in mtk_tphy_probe()
1587 tphy->sif_base = devm_ioremap_resource(dev, sif_res); in mtk_tphy_probe()
1588 if (IS_ERR(tphy->sif_base)) { in mtk_tphy_probe()
1590 return PTR_ERR(tphy->sif_base); in mtk_tphy_probe()
1594 if (tphy->pdata->version < MTK_PHY_V3) { in mtk_tphy_probe()
1595 tphy->src_ref_clk = U3P_REF_CLK; in mtk_tphy_probe()
1596 tphy->src_coef = U3P_SLEW_RATE_COEF; in mtk_tphy_probe()
1599 &tphy->src_ref_clk); in mtk_tphy_probe()
1601 &tphy->src_coef); in mtk_tphy_probe()
1616 tphy->phys[port] = instance; in mtk_tphy_probe()
1661 .name = "mtk-tphy",