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];
95 tegra_xusb_pad_find_phy_node(struct tegra_xusb_pad *pad, unsigned int index)
99 lanes = of_get_child_by_name(pad->dev.of_node, "lanes");
103 np = of_get_child_by_name(lanes, pad->soc->lanes[index].name);
112 struct device *dev = &lane->pad->dev;
137 lane->pad->ops->remove(lane);
144 struct tegra_xusb_pad *pad = to_tegra_xusb_pad(dev);
146 pad->soc->ops->remove(pad);
153 int tegra_xusb_pad_init(struct tegra_xusb_pad *pad,
159 device_initialize(&pad->dev);
160 INIT_LIST_HEAD(&pad->list);
161 pad->dev.parent = padctl->dev;
162 pad->dev.type = &tegra_xusb_pad_type;
163 pad->dev.of_node = np;
164 pad->padctl = padctl;
166 err = dev_set_name(&pad->dev, "%s", pad->soc->name);
170 err = device_add(&pad->dev);
177 device_unregister(&pad->dev);
181 int tegra_xusb_pad_register(struct tegra_xusb_pad *pad,
189 children = of_get_child_by_name(pad->dev.of_node, "lanes");
193 pad->lanes = devm_kcalloc(&pad->dev, pad->soc->num_lanes, sizeof(lane),
195 if (!pad->lanes) {
200 for (i = 0; i < pad->soc->num_lanes; i++) {
201 struct device_node *np = tegra_xusb_pad_find_phy_node(pad, i);
210 pad->lanes[i] = phy_create(&pad->dev, np, ops);
211 if (IS_ERR(pad->lanes[i])) {
212 err = PTR_ERR(pad->lanes[i]);
217 lane = pad->ops->probe(pad, np, i);
219 phy_destroy(pad->lanes[i]);
224 list_add_tail(&lane->list, &pad->padctl->lanes);
225 phy_set_drvdata(pad->lanes[i], lane);
228 pad->provider = of_phy_provider_register_full(&pad->dev, children,
230 if (IS_ERR(pad->provider)) {
231 err = PTR_ERR(pad->provider);
239 tegra_xusb_lane_destroy(pad->lanes[i]);
246 void tegra_xusb_pad_unregister(struct tegra_xusb_pad *pad)
248 unsigned int i = pad->soc->num_lanes;
250 of_phy_provider_unregister(pad->provider);
253 tegra_xusb_lane_destroy(pad->lanes[i]);
255 device_unregister(&pad->dev);
262 struct tegra_xusb_pad *pad;
270 pad = soc->ops->probe(padctl, soc, np);
271 if (IS_ERR(pad)) {
272 err = PTR_ERR(pad);
273 dev_err(padctl->dev, "failed to create pad %s: %d\n",
280 padctl->pcie = pad;
283 padctl->sata = pad;
286 padctl->usb2 = pad;
289 padctl->ulpi = pad;
292 padctl->hsic = pad;
294 return pad;
299 struct tegra_xusb_pad *pad, *tmp;
301 list_for_each_entry_safe_reverse(pad, tmp, &padctl->pads, list) {
302 list_del(&pad->list);
303 tegra_xusb_pad_unregister(pad);
316 struct tegra_xusb_padctl *padctl = lane->pad->padctl;
331 static void tegra_xusb_pad_program(struct tegra_xusb_pad *pad)
335 for (i = 0; i < pad->soc->num_lanes; i++) {
338 if (pad->lanes[i]) {
339 lane = phy_get_drvdata(pad->lanes[i]);
347 struct tegra_xusb_pad *pad;
356 pad = tegra_xusb_pad_create(padctl, soc);
357 if (IS_ERR(pad)) {
358 err = PTR_ERR(pad);
359 dev_err(padctl->dev, "failed to create pad %s: %d\n",
366 if (!pad)
369 list_add_tail(&pad->list, &padctl->pads);
372 list_for_each_entry(pad, &padctl->pads, list)
373 tegra_xusb_pad_program(pad);
694 port->usb_phy.dev = &lane->pad->lanes[port->index]->dev;
1300 * registry of pad controllers, but since there will almost certainly
1372 struct tegra_xusb_padctl *padctl = lane->pad->padctl;