Lines Matching refs:xsphy
109 static void u2_phy_slew_rate_calibrate(struct mtk_xsphy *xsphy, in u2_phy_slew_rate_calibrate() argument
149 tmp = xsphy->src_ref_clk * xsphy->src_coef; in u2_phy_slew_rate_calibrate()
156 dev_dbg(xsphy->dev, "phy.%d, fm_out:%d, calib:%d (clk:%d, coef:%d)\n", in u2_phy_slew_rate_calibrate()
158 xsphy->src_ref_clk, xsphy->src_coef); in u2_phy_slew_rate_calibrate()
167 static void u2_phy_instance_init(struct mtk_xsphy *xsphy, in u2_phy_instance_init() argument
178 static void u2_phy_instance_power_on(struct mtk_xsphy *xsphy, in u2_phy_instance_power_on() argument
190 dev_dbg(xsphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_on()
193 static void u2_phy_instance_power_off(struct mtk_xsphy *xsphy, in u2_phy_instance_power_off() argument
205 dev_dbg(xsphy->dev, "%s(%d)\n", __func__, index); in u2_phy_instance_power_off()
208 static void u2_phy_instance_set_mode(struct mtk_xsphy *xsphy, in u2_phy_instance_set_mode() argument
232 static void phy_parse_property(struct mtk_xsphy *xsphy, in phy_parse_property() argument
263 dev_err(xsphy->dev, "incompatible phy type\n"); in phy_parse_property()
268 static void u2_phy_props_set(struct mtk_xsphy *xsphy, in u2_phy_props_set() argument
290 static void u3_phy_props_set(struct mtk_xsphy *xsphy, in u3_phy_props_set() argument
296 mtk_phy_update_field(xsphy->glb_base + SSPXTP_PHYA_GLB_00, in u3_phy_props_set()
311 struct mtk_xsphy *xsphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_init() local
316 dev_err(xsphy->dev, "failed to enable ref_clk\n"); in mtk_phy_init()
322 u2_phy_instance_init(xsphy, inst); in mtk_phy_init()
323 u2_phy_props_set(xsphy, inst); in mtk_phy_init()
326 u3_phy_props_set(xsphy, inst); in mtk_phy_init()
329 dev_err(xsphy->dev, "incompatible phy type\n"); in mtk_phy_init()
340 struct mtk_xsphy *xsphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_on() local
343 u2_phy_instance_power_on(xsphy, inst); in mtk_phy_power_on()
344 u2_phy_slew_rate_calibrate(xsphy, inst); in mtk_phy_power_on()
353 struct mtk_xsphy *xsphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_power_off() local
356 u2_phy_instance_power_off(xsphy, inst); in mtk_phy_power_off()
372 struct mtk_xsphy *xsphy = dev_get_drvdata(phy->dev.parent); in mtk_phy_set_mode() local
375 u2_phy_instance_set_mode(xsphy, inst, mode); in mtk_phy_set_mode()
383 struct mtk_xsphy *xsphy = dev_get_drvdata(dev); in mtk_phy_xlate() local
393 for (index = 0; index < xsphy->nphys; index++) in mtk_phy_xlate()
394 if (phy_np == xsphy->phys[index]->phy->dev.of_node) { in mtk_phy_xlate()
395 inst = xsphy->phys[index]; in mtk_phy_xlate()
411 phy_parse_property(xsphy, inst); in mtk_phy_xlate()
437 struct mtk_xsphy *xsphy; in mtk_xsphy_probe() local
441 xsphy = devm_kzalloc(dev, sizeof(*xsphy), GFP_KERNEL); in mtk_xsphy_probe()
442 if (!xsphy) in mtk_xsphy_probe()
445 xsphy->nphys = of_get_child_count(np); in mtk_xsphy_probe()
446 xsphy->phys = devm_kcalloc(dev, xsphy->nphys, in mtk_xsphy_probe()
447 sizeof(*xsphy->phys), GFP_KERNEL); in mtk_xsphy_probe()
448 if (!xsphy->phys) in mtk_xsphy_probe()
451 xsphy->dev = dev; in mtk_xsphy_probe()
452 platform_set_drvdata(pdev, xsphy); in mtk_xsphy_probe()
458 xsphy->glb_base = devm_ioremap_resource(dev, glb_res); in mtk_xsphy_probe()
459 if (IS_ERR(xsphy->glb_base)) { in mtk_xsphy_probe()
461 return PTR_ERR(xsphy->glb_base); in mtk_xsphy_probe()
465 xsphy->src_ref_clk = XSP_REF_CLK; in mtk_xsphy_probe()
466 xsphy->src_coef = XSP_SLEW_RATE_COEF; in mtk_xsphy_probe()
469 &xsphy->src_ref_clk); in mtk_xsphy_probe()
470 device_property_read_u32(dev, "mediatek,src-coef", &xsphy->src_coef); in mtk_xsphy_probe()
482 xsphy->phys[port] = inst; in mtk_xsphy_probe()