Lines Matching refs:salvo_phy

145 static bool cdns_is_nxp_phy(struct cdns_salvo_phy *salvo_phy)
147 return salvo_phy->data == &cdns_nxp_salvo_data;
150 static u16 cdns_salvo_read(struct cdns_salvo_phy *salvo_phy, u32 offset, u32 reg)
152 return (u16)readl(salvo_phy->base + offset +
153 reg * (1 << salvo_phy->data->reg_offset_shift));
156 static void cdns_salvo_write(struct cdns_salvo_phy *salvo_phy, u32 offset,
159 writel(val, salvo_phy->base + offset +
160 reg * (1 << salvo_phy->data->reg_offset_shift));
248 struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
249 struct cdns_salvo_data *data = salvo_phy->data;
253 ret = clk_prepare_enable(salvo_phy->clk);
260 cdns_salvo_write(salvo_phy, USB3_PHY_OFFSET, reg_pair->off, reg_pair->val);
264 value = cdns_salvo_read(salvo_phy, USB3_PHY_OFFSET, TB_ADDR_TX_RCVDETSC_CTRL);
266 cdns_salvo_write(salvo_phy, USB3_PHY_OFFSET, TB_ADDR_TX_RCVDETSC_CTRL,
269 value = cdns_salvo_read(salvo_phy, USB2_PHY_OFFSET, UTMI_REG15);
271 cdns_salvo_write(salvo_phy, USB2_PHY_OFFSET, UTMI_REG15,
274 cdns_salvo_write(salvo_phy, USB2_PHY_OFFSET, UTMI_AFE_RX_REG5, 0x5);
276 value = cdns_salvo_read(salvo_phy, USB2_PHY_OFFSET, UTMI_AFE_RX_REG0);
278 value = FIELD_PREP(RX_USB2_DISCONN_MASK, salvo_phy->usb2_disconn);
279 cdns_salvo_write(salvo_phy, USB2_PHY_OFFSET, UTMI_AFE_RX_REG0, value);
283 clk_disable_unprepare(salvo_phy->clk);
290 struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
292 return clk_prepare_enable(salvo_phy->clk);
297 struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
299 clk_disable_unprepare(salvo_phy->clk);
306 struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
308 if (!cdns_is_nxp_phy(salvo_phy))
312 cdns_salvo_write(salvo_phy, USB2_PHY_OFFSET, UTMI_AFE_BC_REG4,
315 cdns_salvo_write(salvo_phy, USB2_PHY_OFFSET, UTMI_AFE_BC_REG4,
333 struct cdns_salvo_phy *salvo_phy;
338 salvo_phy = devm_kzalloc(dev, sizeof(*salvo_phy), GFP_KERNEL);
339 if (!salvo_phy)
342 salvo_phy->data = data;
343 salvo_phy->clk = devm_clk_get_optional(dev, "salvo_phy_clk");
344 if (IS_ERR(salvo_phy->clk))
345 return PTR_ERR(salvo_phy->clk);
351 salvo_phy->usb2_disconn = USB2_DISCONN_THRESHOLD_575;
353 salvo_phy->usb2_disconn = USB2_DISCONN_THRESHOLD_610;
355 salvo_phy->usb2_disconn = USB2_DISCONN_THRESHOLD_645;
357 salvo_phy->base = devm_platform_ioremap_resource(pdev, 0);
358 if (IS_ERR(salvo_phy->base))
359 return PTR_ERR(salvo_phy->base);
361 salvo_phy->phy = devm_phy_create(dev, NULL, &cdns_salvo_phy_ops);
362 if (IS_ERR(salvo_phy->phy))
363 return PTR_ERR(salvo_phy->phy);
365 phy_set_drvdata(salvo_phy->phy, salvo_phy);