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()
963 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
966 u2_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
967 hs_slew_rate_calibrate(tphy, instance); in mtk_phy_power_on()
969 pcie_phy_instance_power_on(tphy, instance); in mtk_phy_power_on()
978 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
981 u2_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
983 pcie_phy_instance_power_off(tphy, instance); in mtk_phy_power_off()
991 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_exit() local
994 u2_phy_instance_exit(tphy, instance); in mtk_phy_exit()
1004 struct mtk_tphy *tphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
1007 u2_phy_instance_set_mode(tphy, instance, mode); in mtk_phy_set_mode()
1015 struct mtk_tphy *tphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
1025 for (index = 0; index < tphy->nphys; index++) in mtk_phy_xlate()
1026 if (phy_np == tphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
1027 instance = tphy->phys[index]; in mtk_phy_xlate()
1045 if (tphy->pdata->version == MTK_PHY_V1) { in mtk_phy_xlate()
1046 phy_v1_banks_init(tphy, instance); in mtk_phy_xlate()
1047 } else if (tphy->pdata->version == MTK_PHY_V2) { in mtk_phy_xlate()
1048 phy_v2_banks_init(tphy, instance); in mtk_phy_xlate()
1054 phy_parse_property(tphy, instance); in mtk_phy_xlate()
1100 struct mtk_tphy *tphy; in mtk_tphy_probe() local
1104 tphy = devm_kzalloc(dev, sizeof(*tphy), GFP_KERNEL); in mtk_tphy_probe()
1105 if (!tphy) in mtk_tphy_probe()
1108 tphy->pdata = of_device_get_match_data(dev); in mtk_tphy_probe()
1109 if (!tphy->pdata) in mtk_tphy_probe()
1112 tphy->nphys = of_get_child_count(np); in mtk_tphy_probe()
1113 tphy->phys = devm_kcalloc(dev, tphy->nphys, in mtk_tphy_probe()
1114 sizeof(*tphy->phys), GFP_KERNEL); in mtk_tphy_probe()
1115 if (!tphy->phys) in mtk_tphy_probe()
1118 tphy->dev = dev; in mtk_tphy_probe()
1119 platform_set_drvdata(pdev, tphy); in mtk_tphy_probe()
1123 if (sif_res && tphy->pdata->version == MTK_PHY_V1) { in mtk_tphy_probe()
1125 tphy->sif_base = devm_ioremap_resource(dev, sif_res); in mtk_tphy_probe()
1126 if (IS_ERR(tphy->sif_base)) { in mtk_tphy_probe()
1128 return PTR_ERR(tphy->sif_base); in mtk_tphy_probe()
1132 tphy->src_ref_clk = U3P_REF_CLK; in mtk_tphy_probe()
1133 tphy->src_coef = U3P_SLEW_RATE_COEF; in mtk_tphy_probe()
1136 &tphy->src_ref_clk); in mtk_tphy_probe()
1137 device_property_read_u32(dev, "mediatek,src-coef", &tphy->src_coef); in mtk_tphy_probe()
1150 tphy->phys[port] = instance; in mtk_tphy_probe()