Lines Matching full:tphy

681 static void hs_slew_rate_calibrate(struct mtk_tphy *tphy,  in hs_slew_rate_calibrate()  argument
698 if (instance->eye_src || !tphy->src_ref_clk || !tphy->src_coef) in hs_slew_rate_calibrate()
712 if (tphy->pdata->version == MTK_PHY_V1) in hs_slew_rate_calibrate()
734 tmp = tphy->src_ref_clk * tphy->src_coef; in hs_slew_rate_calibrate()
741 dev_dbg(tphy->dev, "phy:%d, fm_out:%d, calib:%d (clk:%d, coef:%d)\n", in hs_slew_rate_calibrate()
743 tphy->src_ref_clk, tphy->src_coef); in hs_slew_rate_calibrate()
753 static void u3_phy_instance_init(struct mtk_tphy *tphy, in u3_phy_instance_init() argument
799 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in u3_phy_instance_init()
802 static void u2_phy_pll_26m_set(struct mtk_tphy *tphy, in u2_phy_pll_26m_set() argument
808 if (!tphy->pdata->sw_pll_48m_to_26m) in u2_phy_pll_26m_set()
821 static void u2_phy_instance_init(struct mtk_tphy *tphy, in u2_phy_instance_init() argument
843 if (tphy->pdata->avoid_rx_sen_degradation) { in u2_phy_instance_init()
862 u2_phy_pll_26m_set(tphy, instance); in u2_phy_instance_init()
864 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_init()
867 static void u2_phy_instance_power_on(struct mtk_tphy *tphy, in u2_phy_instance_power_on() argument
881 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_on()
886 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_on()
889 static void u2_phy_instance_power_off(struct mtk_tphy *tphy, in u2_phy_instance_power_off() argument
903 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_off()
909 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_off()
912 static void u2_phy_instance_exit(struct mtk_tphy *tphy, in u2_phy_instance_exit() argument
919 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_exit()
926 static void u2_phy_instance_set_mode(struct mtk_tphy *tphy, in u2_phy_instance_set_mode() argument
951 static void pcie_phy_instance_init(struct mtk_tphy *tphy, in pcie_phy_instance_init() argument
957 if (tphy->pdata->version != MTK_PHY_V1) in pcie_phy_instance_init()
998 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in pcie_phy_instance_init()
1001 static void pcie_phy_instance_power_on(struct mtk_tphy *tphy, in pcie_phy_instance_power_on() argument
1013 static void pcie_phy_instance_power_off(struct mtk_tphy *tphy, in pcie_phy_instance_power_off() argument
1026 static void sata_phy_instance_init(struct mtk_tphy *tphy, in sata_phy_instance_init() argument
1068 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in sata_phy_instance_init()
1071 static void phy_v1_banks_init(struct mtk_tphy *tphy, in phy_v1_banks_init() argument
1080 u2_banks->fmreg = tphy->sif_base + SSUSB_SIFSLV_V1_U2FREQ; in phy_v1_banks_init()
1085 u3_banks->spllc = tphy->sif_base + SSUSB_SIFSLV_V1_SPLLC; in phy_v1_banks_init()
1086 u3_banks->chip = tphy->sif_base + SSUSB_SIFSLV_V1_CHIP; in phy_v1_banks_init()
1094 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v1_banks_init()
1099 static void phy_v2_banks_init(struct mtk_tphy *tphy, in phy_v2_banks_init() argument
1119 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v2_banks_init()
1124 static void phy_parse_property(struct mtk_tphy *tphy, in phy_parse_property() argument
1155 static void u2_phy_props_set(struct mtk_tphy *tphy, in u2_phy_props_set() argument
1164 if (tphy->pdata->version < MTK_PHY_V3 && instance->eye_src) in u2_phy_props_set()
1253 static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instance) in phy_efuse_get() argument
1258 /* tphy v1 doesn't support sw efuse, skip it */ in phy_efuse_get()
1259 if (!tphy->pdata->sw_efuse_supported) { in phy_efuse_get()
1367 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_init() local
1378 u2_phy_instance_init(tphy, instance); in mtk_phy_init()
1379 u2_phy_props_set(tphy, instance); in mtk_phy_init()
1382 u3_phy_instance_init(tphy, instance); in mtk_phy_init()
1385 pcie_phy_instance_init(tphy, instance); in mtk_phy_init()
1388 sata_phy_instance_init(tphy, instance); in mtk_phy_init()
1394 dev_err(tphy->dev, "incompatible PHY type\n"); in mtk_phy_init()
1405 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
1408 u2_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
1409 hs_slew_rate_calibrate(tphy, instance); in mtk_phy_power_on()
1411 pcie_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
1420 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
1423 u2_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
1425 pcie_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
1433 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_exit() local
1436 u2_phy_instance_exit(tphy, instance); in mtk_phy_exit()
1445 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
1448 u2_phy_instance_set_mode(tphy, instance, mode); in mtk_phy_set_mode()
1456 struct mtk_tphy *tphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
1467 for (index = 0; index < tphy->nphys; index++) in mtk_phy_xlate()
1468 if (phy_np == tphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
1469 instance = tphy->phys[index]; in mtk_phy_xlate()
1488 switch (tphy->pdata->version) { in mtk_phy_xlate()
1490 phy_v1_banks_init(tphy, instance); in mtk_phy_xlate()
1494 phy_v2_banks_init(tphy, instance); in mtk_phy_xlate()
1501 ret = phy_efuse_get(tphy, instance); in mtk_phy_xlate()
1505 phy_parse_property(tphy, instance); in mtk_phy_xlate()
1558 { .compatible = "mediatek,mt8195-tphy", .data = &mt8195_pdata },
1559 { .compatible = "mediatek,generic-tphy-v1", .data = &tphy_v1_pdata },
1560 { .compatible = "mediatek,generic-tphy-v2", .data = &tphy_v2_pdata },
1561 { .compatible = "mediatek,generic-tphy-v3", .data = &tphy_v3_pdata },
1572 struct mtk_tphy *tphy; in mtk_tphy_probe() local
1576 tphy = devm_kzalloc(dev, sizeof(*tphy), GFP_KERNEL); in mtk_tphy_probe()
1577 if (!tphy) in mtk_tphy_probe()
1580 tphy->pdata = of_device_get_match_data(dev); in mtk_tphy_probe()
1581 if (!tphy->pdata) in mtk_tphy_probe()
1584 tphy->nphys = of_get_child_count(np); in mtk_tphy_probe()
1585 tphy->phys = devm_kcalloc(dev, tphy->nphys, in mtk_tphy_probe()
1586 sizeof(*tphy->phys), GFP_KERNEL); in mtk_tphy_probe()
1587 if (!tphy->phys) in mtk_tphy_probe()
1590 tphy->dev = dev; in mtk_tphy_probe()
1591 platform_set_drvdata(pdev, tphy); in mtk_tphy_probe()
1595 if (sif_res && tphy->pdata->version == MTK_PHY_V1) { in mtk_tphy_probe()
1597 tphy->sif_base = devm_ioremap_resource(dev, sif_res); in mtk_tphy_probe()
1598 if (IS_ERR(tphy->sif_base)) { in mtk_tphy_probe()
1600 return PTR_ERR(tphy->sif_base); in mtk_tphy_probe()
1605 ret = device_property_read_u32(dev, "mediatek,src-ref-clk-mhz", &tphy->src_ref_clk); in mtk_tphy_probe()
1607 tphy->src_ref_clk = tphy->pdata->slew_ref_clock_mhz; in mtk_tphy_probe()
1609 ret = device_property_read_u32(dev, "mediatek,src-coef", &tphy->src_coef); in mtk_tphy_probe()
1611 tphy->src_coef = tphy->pdata->slew_rate_coefficient; in mtk_tphy_probe()
1625 tphy->phys[port] = instance; in mtk_tphy_probe()
1670 .name = "mtk-tphy",