Lines Matching refs:tphy
323 static void hs_slew_rate_calibrate(struct mtk_tphy *tphy, in hs_slew_rate_calibrate() argument
352 if (tphy->pdata->version == MTK_PHY_V1) in hs_slew_rate_calibrate()
380 tmp = tphy->src_ref_clk * tphy->src_coef; in hs_slew_rate_calibrate()
387 dev_dbg(tphy->dev, "phy:%d, fm_out:%d, calib:%d (clk:%d, coef:%d)\n", in hs_slew_rate_calibrate()
389 tphy->src_ref_clk, tphy->src_coef); in hs_slew_rate_calibrate()
403 static void u3_phy_instance_init(struct mtk_tphy *tphy, in u3_phy_instance_init() argument
450 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in u3_phy_instance_init()
453 static void u2_phy_instance_init(struct mtk_tphy *tphy, in u2_phy_instance_init() argument
486 if (tphy->pdata->avoid_rx_sen_degradation) { in u2_phy_instance_init()
512 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_init()
515 static void u2_phy_instance_power_on(struct mtk_tphy *tphy, in u2_phy_instance_power_on() argument
537 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_on()
546 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_on()
549 static void u2_phy_instance_power_off(struct mtk_tphy *tphy, in u2_phy_instance_power_off() argument
571 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_power_off()
581 dev_dbg(tphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_off()
584 static void u2_phy_instance_exit(struct mtk_tphy *tphy, in u2_phy_instance_exit() argument
592 if (tphy->pdata->avoid_rx_sen_degradation && index) { in u2_phy_instance_exit()
603 static void u2_phy_instance_set_mode(struct mtk_tphy *tphy, in u2_phy_instance_set_mode() argument
628 static void pcie_phy_instance_init(struct mtk_tphy *tphy, in pcie_phy_instance_init() argument
634 if (tphy->pdata->version != MTK_PHY_V1) in pcie_phy_instance_init()
698 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in pcie_phy_instance_init()
701 static void pcie_phy_instance_power_on(struct mtk_tphy *tphy, in pcie_phy_instance_power_on() argument
716 static void pcie_phy_instance_power_off(struct mtk_tphy *tphy, in pcie_phy_instance_power_off() argument
732 static void sata_phy_instance_init(struct mtk_tphy *tphy, in sata_phy_instance_init() argument
787 dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index); in sata_phy_instance_init()
790 static void phy_v1_banks_init(struct mtk_tphy *tphy, in phy_v1_banks_init() argument
799 u2_banks->fmreg = tphy->sif_base + SSUSB_SIFSLV_V1_U2FREQ; in phy_v1_banks_init()
804 u3_banks->spllc = tphy->sif_base + SSUSB_SIFSLV_V1_SPLLC; in phy_v1_banks_init()
805 u3_banks->chip = tphy->sif_base + SSUSB_SIFSLV_V1_CHIP; in phy_v1_banks_init()
813 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v1_banks_init()
818 static void phy_v2_banks_init(struct mtk_tphy *tphy, in phy_v2_banks_init() argument
838 dev_err(tphy->dev, "incompatible PHY type\n"); in phy_v2_banks_init()
843 static void phy_parse_property(struct mtk_tphy *tphy, in phy_parse_property() argument
868 static void u2_phy_props_set(struct mtk_tphy *tphy, in u2_phy_props_set() argument
920 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_init() local
925 dev_err(tphy->dev, "failed to enable ref_clk\n"); in mtk_phy_init()
931 dev_err(tphy->dev, "failed to enable da_ref\n"); in mtk_phy_init()
938 u2_phy_instance_init(tphy, instance); in mtk_phy_init()
939 u2_phy_props_set(tphy, instance); in mtk_phy_init()
942 u3_phy_instance_init(tphy, instance); in mtk_phy_init()
945 pcie_phy_instance_init(tphy, instance); in mtk_phy_init()
948 sata_phy_instance_init(tphy, instance); in mtk_phy_init()
951 dev_err(tphy->dev, "incompatible PHY type\n"); in mtk_phy_init()
961 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
964 u2_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
965 hs_slew_rate_calibrate(tphy, instance); in mtk_phy_power_on()
967 pcie_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
976 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
979 u2_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
981 pcie_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
989 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_exit() local
992 u2_phy_instance_exit(tphy, instance); in mtk_phy_exit()
1002 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
1005 u2_phy_instance_set_mode(tphy, instance, mode); in mtk_phy_set_mode()
1013 struct mtk_tphy *tphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
1023 for (index = 0; index < tphy->nphys; index++) in mtk_phy_xlate()
1024 if (phy_np == tphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
1025 instance = tphy->phys[index]; in mtk_phy_xlate()
1043 if (tphy->pdata->version == MTK_PHY_V1) { in mtk_phy_xlate()
1044 phy_v1_banks_init(tphy, instance); in mtk_phy_xlate()
1045 } else if (tphy->pdata->version == MTK_PHY_V2) { in mtk_phy_xlate()
1046 phy_v2_banks_init(tphy, instance); in mtk_phy_xlate()
1052 phy_parse_property(tphy, instance); in mtk_phy_xlate()
1098 struct mtk_tphy *tphy; in mtk_tphy_probe() local
1102 tphy = devm_kzalloc(dev, sizeof(*tphy), GFP_KERNEL); in mtk_tphy_probe()
1103 if (!tphy) in mtk_tphy_probe()
1106 tphy->pdata = of_device_get_match_data(dev); in mtk_tphy_probe()
1107 if (!tphy->pdata) in mtk_tphy_probe()
1110 tphy->nphys = of_get_child_count(np); in mtk_tphy_probe()
1111 tphy->phys = devm_kcalloc(dev, tphy->nphys, in mtk_tphy_probe()
1112 sizeof(*tphy->phys), GFP_KERNEL); in mtk_tphy_probe()
1113 if (!tphy->phys) in mtk_tphy_probe()
1116 tphy->dev = dev; in mtk_tphy_probe()
1117 platform_set_drvdata(pdev, tphy); in mtk_tphy_probe()
1121 if (sif_res && tphy->pdata->version == MTK_PHY_V1) { in mtk_tphy_probe()
1123 tphy->sif_base = devm_ioremap_resource(dev, sif_res); in mtk_tphy_probe()
1124 if (IS_ERR(tphy->sif_base)) { in mtk_tphy_probe()
1126 return PTR_ERR(tphy->sif_base); in mtk_tphy_probe()
1130 tphy->src_ref_clk = U3P_REF_CLK; in mtk_tphy_probe()
1131 tphy->src_coef = U3P_SLEW_RATE_COEF; in mtk_tphy_probe()
1134 &tphy->src_ref_clk); in mtk_tphy_probe()
1135 device_property_read_u32(dev, "mediatek,src-coef", &tphy->src_coef); in mtk_tphy_probe()
1148 tphy->phys[port] = instance; in mtk_tphy_probe()