Lines Matching refs:tphy
318 static void hs_slew_rate_calibrate(struct mtk_tphy *tphy, in hs_slew_rate_calibrate() argument
347 if (tphy->pdata->version == MTK_PHY_V1) in hs_slew_rate_calibrate()
375 tmp = tphy->src_ref_clk * tphy->src_coef; in hs_slew_rate_calibrate()
382 dev_dbg(tphy->dev, "phy:%d, fm_out:%d, calib:%d (clk:%d, coef:%d)\n", in hs_slew_rate_calibrate()
384 tphy->src_ref_clk, tphy->src_coef); in hs_slew_rate_calibrate()
398 static void u3_phy_instance_init(struct mtk_tphy *tphy, in u3_phy_instance_init() argument
445 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in u3_phy_instance_init()
448 static void u2_phy_instance_init(struct mtk_tphy *tphy, in u2_phy_instance_init() argument
481 if (tphy->pdata->avoid_rx_sen_degradation) { in u2_phy_instance_init()
507 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_init()
510 static void u2_phy_instance_power_on(struct mtk_tphy *tphy, in u2_phy_instance_power_on() argument
532 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_on()
541 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_on()
544 static void u2_phy_instance_power_off(struct mtk_tphy *tphy, in u2_phy_instance_power_off() argument
566 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_off()
576 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_off()
579 static void u2_phy_instance_exit(struct mtk_tphy *tphy, in u2_phy_instance_exit() argument
587 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_exit()
598 static void u2_phy_instance_set_mode(struct mtk_tphy *tphy, in u2_phy_instance_set_mode() argument
623 static void pcie_phy_instance_init(struct mtk_tphy *tphy, in pcie_phy_instance_init() argument
629 if (tphy->pdata->version != MTK_PHY_V1) in pcie_phy_instance_init()
693 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in pcie_phy_instance_init()
696 static void pcie_phy_instance_power_on(struct mtk_tphy *tphy, in pcie_phy_instance_power_on() argument
711 static void pcie_phy_instance_power_off(struct mtk_tphy *tphy, in pcie_phy_instance_power_off() argument
727 static void sata_phy_instance_init(struct mtk_tphy *tphy, in sata_phy_instance_init() argument
782 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in sata_phy_instance_init()
785 static void phy_v1_banks_init(struct mtk_tphy *tphy, in phy_v1_banks_init() argument
794 u2_banks->fmreg = tphy->sif_base + SSUSB_SIFSLV_V1_U2FREQ; in phy_v1_banks_init()
799 u3_banks->spllc = tphy->sif_base + SSUSB_SIFSLV_V1_SPLLC; in phy_v1_banks_init()
800 u3_banks->chip = tphy->sif_base + SSUSB_SIFSLV_V1_CHIP; in phy_v1_banks_init()
808 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v1_banks_init()
813 static void phy_v2_banks_init(struct mtk_tphy *tphy, in phy_v2_banks_init() argument
833 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v2_banks_init()
838 static void phy_parse_property(struct mtk_tphy *tphy, in phy_parse_property() argument
858 static void u2_phy_props_set(struct mtk_tphy *tphy, in u2_phy_props_set() argument
896 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_init() local
899 ret = clk_prepare_enable(tphy->u3phya_ref); in mtk_phy_init()
901 dev_err(tphy->dev, "failed to enable u3phya_ref\n"); in mtk_phy_init()
907 dev_err(tphy->dev, "failed to enable ref_clk\n"); in mtk_phy_init()
913 u2_phy_instance_init(tphy, instance); in mtk_phy_init()
914 u2_phy_props_set(tphy, instance); in mtk_phy_init()
917 u3_phy_instance_init(tphy, instance); in mtk_phy_init()
920 pcie_phy_instance_init(tphy, instance); in mtk_phy_init()
923 sata_phy_instance_init(tphy, instance); in mtk_phy_init()
926 dev_err(tphy->dev, "incompatible PHY type\n"); in mtk_phy_init()
936 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
939 u2_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
940 hs_slew_rate_calibrate(tphy, instance); in mtk_phy_power_on()
942 pcie_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
951 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
954 u2_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
956 pcie_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
964 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_exit() local
967 u2_phy_instance_exit(tphy, instance); in mtk_phy_exit()
970 clk_disable_unprepare(tphy->u3phya_ref); in mtk_phy_exit()
977 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
980 u2_phy_instance_set_mode(tphy, instance, mode); in mtk_phy_set_mode()
988 struct mtk_tphy *tphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
998 for (index = 0; index < tphy->nphys; index++) in mtk_phy_xlate()
999 if (phy_np == tphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
1000 instance = tphy->phys[index]; in mtk_phy_xlate()
1018 if (tphy->pdata->version == MTK_PHY_V1) { in mtk_phy_xlate()
1019 phy_v1_banks_init(tphy, instance); in mtk_phy_xlate()
1020 } else if (tphy->pdata->version == MTK_PHY_V2) { in mtk_phy_xlate()
1021 phy_v2_banks_init(tphy, instance); in mtk_phy_xlate()
1027 phy_parse_property(tphy, instance); in mtk_phy_xlate()
1073 struct mtk_tphy *tphy; in mtk_tphy_probe() local
1077 tphy = devm_kzalloc(dev, sizeof(*tphy), GFP_KERNEL); in mtk_tphy_probe()
1078 if (!tphy) in mtk_tphy_probe()
1081 tphy->pdata = of_device_get_match_data(dev); in mtk_tphy_probe()
1082 if (!tphy->pdata) in mtk_tphy_probe()
1085 tphy->nphys = of_get_child_count(np); in mtk_tphy_probe()
1086 tphy->phys = devm_kcalloc(dev, tphy->nphys, in mtk_tphy_probe()
1087 sizeof(*tphy->phys), GFP_KERNEL); in mtk_tphy_probe()
1088 if (!tphy->phys) in mtk_tphy_probe()
1091 tphy->dev = dev; in mtk_tphy_probe()
1092 platform_set_drvdata(pdev, tphy); in mtk_tphy_probe()
1096 if (sif_res && tphy->pdata->version == MTK_PHY_V1) { in mtk_tphy_probe()
1098 tphy->sif_base = devm_ioremap_resource(dev, sif_res); in mtk_tphy_probe()
1099 if (IS_ERR(tphy->sif_base)) { in mtk_tphy_probe()
1101 return PTR_ERR(tphy->sif_base); in mtk_tphy_probe()
1106 tphy->u3phya_ref = devm_clk_get(dev, "u3phya_ref"); in mtk_tphy_probe()
1107 if (IS_ERR(tphy->u3phya_ref)) { in mtk_tphy_probe()
1108 if (PTR_ERR(tphy->u3phya_ref) == -EPROBE_DEFER) in mtk_tphy_probe()
1111 tphy->u3phya_ref = NULL; in mtk_tphy_probe()
1114 tphy->src_ref_clk = U3P_REF_CLK; in mtk_tphy_probe()
1115 tphy->src_coef = U3P_SLEW_RATE_COEF; in mtk_tphy_probe()
1118 &tphy->src_ref_clk); in mtk_tphy_probe()
1119 device_property_read_u32(dev, "mediatek,src-coef", &tphy->src_coef); in mtk_tphy_probe()
1132 tphy->phys[port] = instance; in mtk_tphy_probe()
1161 if (tphy->u3phya_ref) in mtk_tphy_probe()