Lines Matching refs:phy

15 #include <linux/phy/phy.h>
22 * phy as being SR70LX Synopsys USB 2.0 OTG nanoPHY. It also seems at
32 * Finally, the phy on dm814x and am335x is different from dm816x.
35 #define DM816X_USB_CTRL_PHYSLEEP1 BIT(1) /* Enable the first phy */
36 #define DM816X_USB_CTRL_PHYSLEEP0 BIT(0) /* Enable the second phy */
47 struct usb_phy phy;
71 static int dm816x_usb_phy_init(struct phy *x)
73 struct dm816x_usb_phy *phy = phy_get_drvdata(x);
76 if (clk_get_rate(phy->refclk) != 24000000)
77 dev_warn(phy->dev, "nonstandard phy refclk\n");
80 regmap_update_bits(phy->syscon, phy->usb_ctrl,
85 regmap_read(phy->syscon, phy->usb_ctrl, &val);
87 dev_info(phy->dev,
96 regmap_read(phy->syscon, phy->usbphy_ctrl, &val);
100 regmap_write(phy->syscon, phy->usbphy_ctrl, val);
112 struct dm816x_usb_phy *phy = dev_get_drvdata(dev);
116 mask = BIT(phy->instance);
117 val = ~BIT(phy->instance);
118 error = regmap_update_bits(phy->syscon, phy->usb_ctrl,
121 dev_err(phy->dev, "phy%i failed to power off\n",
122 phy->instance);
123 clk_disable(phy->refclk);
130 struct dm816x_usb_phy *phy = dev_get_drvdata(dev);
134 error = clk_enable(phy->refclk);
144 mask = BIT(phy->instance);
145 val = BIT(phy->instance);
146 error = regmap_update_bits(phy->syscon, phy->usb_ctrl,
149 dev_err(phy->dev, "phy%i failed to power on\n",
150 phy->instance);
151 clk_disable(phy->refclk);
165 .compatible = "ti,dm8168-usb-phy",
173 struct dm816x_usb_phy *phy;
175 struct phy *generic_phy;
180 phy = devm_kzalloc(&pdev->dev, sizeof(*phy), GFP_KERNEL);
181 if (!phy)
188 phy->syscon = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
190 if (IS_ERR(phy->syscon))
191 return PTR_ERR(phy->syscon);
198 phy->usb_ctrl = 0x20;
199 phy->usbphy_ctrl = (res->start & 0xff) + 4;
200 if (phy->usbphy_ctrl == 0x2c)
201 phy->instance = 1;
207 phy->dev = &pdev->dev;
208 phy->phy.dev = phy->dev;
209 phy->phy.label = "dm8168_usb_phy";
210 phy->phy.otg = otg;
211 phy->phy.type = USB_PHY_TYPE_USB2;
214 otg->usb_phy = &phy->phy;
216 platform_set_drvdata(pdev, phy);
218 phy->refclk = devm_clk_get(phy->dev, "refclk");
219 if (IS_ERR(phy->refclk))
220 return PTR_ERR(phy->refclk);
221 error = clk_prepare(phy->refclk);
225 pm_runtime_enable(phy->dev);
226 generic_phy = devm_phy_create(phy->dev, NULL, &ops);
232 phy_set_drvdata(generic_phy, phy);
234 phy_provider = devm_of_phy_provider_register(phy->dev,
241 usb_add_phy_dev(&phy->phy);
246 pm_runtime_disable(phy->dev);
247 clk_unprepare(phy->refclk);
253 struct dm816x_usb_phy *phy = platform_get_drvdata(pdev);
255 usb_remove_phy(&phy->phy);
256 pm_runtime_disable(phy->dev);
257 clk_unprepare(phy->refclk);
264 .name = "dm816x-usb-phy",
274 MODULE_DESCRIPTION("dm816x usb phy driver");