Lines Matching refs:pad
27 struct tegra_xusb_pad *pad = dev_get_drvdata(dev);
34 for (i = 0; i < pad->soc->num_lanes; i++) {
35 if (!pad->lanes[i])
38 if (pad->lanes[i]->dev.of_node == args->np) {
39 phy = pad->lanes[i];
101 tegra_xusb_pad_find_phy_node(struct tegra_xusb_pad *pad, unsigned int index)
105 lanes = of_get_child_by_name(pad->dev.of_node, "lanes");
109 np = of_get_child_by_name(lanes, pad->soc->lanes[index].name);
118 struct device *dev = &lane->pad->dev;
143 lane->pad->ops->remove(lane);
150 struct tegra_xusb_pad *pad = to_tegra_xusb_pad(dev);
152 pad->soc->ops->remove(pad);
159 int tegra_xusb_pad_init(struct tegra_xusb_pad *pad,
165 device_initialize(&pad->dev);
166 INIT_LIST_HEAD(&pad->list);
167 pad->dev.parent = padctl->dev;
168 pad->dev.type = &tegra_xusb_pad_type;
169 pad->dev.of_node = np;
170 pad->padctl = padctl;
172 err = dev_set_name(&pad->dev, "%s", pad->soc->name);
176 err = device_add(&pad->dev);
183 device_unregister(&pad->dev);
187 int tegra_xusb_pad_register(struct tegra_xusb_pad *pad,
195 children = of_get_child_by_name(pad->dev.of_node, "lanes");
199 pad->lanes = devm_kcalloc(&pad->dev, pad->soc->num_lanes, sizeof(lane),
201 if (!pad->lanes) {
206 for (i = 0; i < pad->soc->num_lanes; i++) {
207 struct device_node *np = tegra_xusb_pad_find_phy_node(pad, i);
216 pad->lanes[i] = phy_create(&pad->dev, np, ops);
217 if (IS_ERR(pad->lanes[i])) {
218 err = PTR_ERR(pad->lanes[i]);
223 lane = pad->ops->probe(pad, np, i);
225 phy_destroy(pad->lanes[i]);
230 list_add_tail(&lane->list, &pad->padctl->lanes);
231 phy_set_drvdata(pad->lanes[i], lane);
234 pad->provider = of_phy_provider_register_full(&pad->dev, children,
236 if (IS_ERR(pad->provider)) {
237 err = PTR_ERR(pad->provider);
245 tegra_xusb_lane_destroy(pad->lanes[i]);
252 void tegra_xusb_pad_unregister(struct tegra_xusb_pad *pad)
254 unsigned int i = pad->soc->num_lanes;
256 of_phy_provider_unregister(pad->provider);
259 tegra_xusb_lane_destroy(pad->lanes[i]);
261 device_unregister(&pad->dev);
268 struct tegra_xusb_pad *pad;
276 pad = soc->ops->probe(padctl, soc, np);
277 if (IS_ERR(pad)) {
278 err = PTR_ERR(pad);
279 dev_err(padctl->dev, "failed to create pad %s: %d\n",
286 padctl->pcie = pad;
289 padctl->sata = pad;
292 padctl->usb2 = pad;
295 padctl->ulpi = pad;
298 padctl->hsic = pad;
300 return pad;
305 struct tegra_xusb_pad *pad, *tmp;
307 list_for_each_entry_safe_reverse(pad, tmp, &padctl->pads, list) {
308 list_del(&pad->list);
309 tegra_xusb_pad_unregister(pad);
322 struct tegra_xusb_padctl *padctl = lane->pad->padctl;
330 if (lane->pad->ops->iddq_enable)
331 lane->pad->ops->iddq_enable(lane);
339 if (lane->pad->ops->iddq_disable)
340 lane->pad->ops->iddq_disable(lane);
343 static void tegra_xusb_pad_program(struct tegra_xusb_pad *pad)
347 for (i = 0; i < pad->soc->num_lanes; i++) {
350 if (pad->lanes[i]) {
351 lane = phy_get_drvdata(pad->lanes[i]);
359 struct tegra_xusb_pad *pad;
368 pad = tegra_xusb_pad_create(padctl, soc);
369 if (IS_ERR(pad)) {
370 err = PTR_ERR(pad);
371 dev_err(padctl->dev, "failed to create pad %s: %d\n",
378 if (!pad)
381 list_add_tail(&pad->list, &padctl->pads);
384 list_for_each_entry(pad, &padctl->pads, list)
385 tegra_xusb_pad_program(pad);
707 port->usb_phy.dev = &lane->pad->lanes[port->index]->dev;
1344 * registry of pad controllers, but since there will almost certainly
1397 if (lane->pad->ops->enable_phy_sleepwalk)
1398 return lane->pad->ops->enable_phy_sleepwalk(lane, speed);
1408 if (lane->pad->ops->disable_phy_sleepwalk)
1409 return lane->pad->ops->disable_phy_sleepwalk(lane);
1419 if (lane->pad->ops->enable_phy_wake)
1420 return lane->pad->ops->enable_phy_wake(lane);
1430 if (lane->pad->ops->disable_phy_wake)
1431 return lane->pad->ops->disable_phy_wake(lane);
1441 if (lane->pad->ops->remote_wake_detected)
1442 return lane->pad->ops->remote_wake_detected(lane);
1472 struct tegra_xusb_padctl *padctl = lane->pad->padctl;
1490 padctl = lane->pad->padctl;
1506 padctl = lane->pad->padctl;