• Home
  • Raw
  • Download

Lines Matching refs:pad

35 	struct tegra_xusb_pad *pad = dev_get_drvdata(dev);  in tegra_xusb_pad_of_xlate()  local
42 for (i = 0; i < pad->soc->num_lanes; i++) { in tegra_xusb_pad_of_xlate()
43 if (!pad->lanes[i]) in tegra_xusb_pad_of_xlate()
46 if (pad->lanes[i]->dev.of_node == args->np) { in tegra_xusb_pad_of_xlate()
47 phy = pad->lanes[i]; in tegra_xusb_pad_of_xlate()
91 tegra_xusb_pad_find_phy_node(struct tegra_xusb_pad *pad, unsigned int index) in tegra_xusb_pad_find_phy_node() argument
95 lanes = of_get_child_by_name(pad->dev.of_node, "lanes"); in tegra_xusb_pad_find_phy_node()
99 np = of_get_child_by_name(lanes, pad->soc->lanes[index].name); in tegra_xusb_pad_find_phy_node()
121 struct device *dev = &lane->pad->dev; in tegra_xusb_lane_parse_dt()
146 lane->pad->ops->remove(lane); in tegra_xusb_lane_destroy()
153 struct tegra_xusb_pad *pad = to_tegra_xusb_pad(dev); in tegra_xusb_pad_release() local
155 pad->soc->ops->remove(pad); in tegra_xusb_pad_release()
162 int tegra_xusb_pad_init(struct tegra_xusb_pad *pad, in tegra_xusb_pad_init() argument
168 device_initialize(&pad->dev); in tegra_xusb_pad_init()
169 INIT_LIST_HEAD(&pad->list); in tegra_xusb_pad_init()
170 pad->dev.parent = padctl->dev; in tegra_xusb_pad_init()
171 pad->dev.type = &tegra_xusb_pad_type; in tegra_xusb_pad_init()
172 pad->dev.of_node = np; in tegra_xusb_pad_init()
173 pad->padctl = padctl; in tegra_xusb_pad_init()
175 err = dev_set_name(&pad->dev, "%s", pad->soc->name); in tegra_xusb_pad_init()
179 err = device_add(&pad->dev); in tegra_xusb_pad_init()
186 device_unregister(&pad->dev); in tegra_xusb_pad_init()
190 int tegra_xusb_pad_register(struct tegra_xusb_pad *pad, in tegra_xusb_pad_register() argument
198 children = of_get_child_by_name(pad->dev.of_node, "lanes"); in tegra_xusb_pad_register()
202 pad->lanes = devm_kcalloc(&pad->dev, pad->soc->num_lanes, sizeof(lane), in tegra_xusb_pad_register()
204 if (!pad->lanes) { in tegra_xusb_pad_register()
209 for (i = 0; i < pad->soc->num_lanes; i++) { in tegra_xusb_pad_register()
210 struct device_node *np = tegra_xusb_pad_find_phy_node(pad, i); in tegra_xusb_pad_register()
219 pad->lanes[i] = phy_create(&pad->dev, np, ops); in tegra_xusb_pad_register()
220 if (IS_ERR(pad->lanes[i])) { in tegra_xusb_pad_register()
221 err = PTR_ERR(pad->lanes[i]); in tegra_xusb_pad_register()
226 lane = pad->ops->probe(pad, np, i); in tegra_xusb_pad_register()
228 phy_destroy(pad->lanes[i]); in tegra_xusb_pad_register()
233 list_add_tail(&lane->list, &pad->padctl->lanes); in tegra_xusb_pad_register()
234 phy_set_drvdata(pad->lanes[i], lane); in tegra_xusb_pad_register()
237 pad->provider = of_phy_provider_register_full(&pad->dev, children, in tegra_xusb_pad_register()
239 if (IS_ERR(pad->provider)) { in tegra_xusb_pad_register()
240 err = PTR_ERR(pad->provider); in tegra_xusb_pad_register()
248 tegra_xusb_lane_destroy(pad->lanes[i]); in tegra_xusb_pad_register()
255 void tegra_xusb_pad_unregister(struct tegra_xusb_pad *pad) in tegra_xusb_pad_unregister() argument
257 unsigned int i = pad->soc->num_lanes; in tegra_xusb_pad_unregister()
259 of_phy_provider_unregister(pad->provider); in tegra_xusb_pad_unregister()
262 tegra_xusb_lane_destroy(pad->lanes[i]); in tegra_xusb_pad_unregister()
264 device_unregister(&pad->dev); in tegra_xusb_pad_unregister()
271 struct tegra_xusb_pad *pad; in tegra_xusb_pad_create() local
279 pad = soc->ops->probe(padctl, soc, np); in tegra_xusb_pad_create()
280 if (IS_ERR(pad)) { in tegra_xusb_pad_create()
281 err = PTR_ERR(pad); in tegra_xusb_pad_create()
289 padctl->pcie = pad; in tegra_xusb_pad_create()
292 padctl->sata = pad; in tegra_xusb_pad_create()
295 padctl->usb2 = pad; in tegra_xusb_pad_create()
298 padctl->ulpi = pad; in tegra_xusb_pad_create()
301 padctl->hsic = pad; in tegra_xusb_pad_create()
303 return pad; in tegra_xusb_pad_create()
308 struct tegra_xusb_pad *pad, *tmp; in __tegra_xusb_remove_pads() local
310 list_for_each_entry_safe_reverse(pad, tmp, &padctl->pads, list) { in __tegra_xusb_remove_pads()
311 list_del(&pad->list); in __tegra_xusb_remove_pads()
312 tegra_xusb_pad_unregister(pad); in __tegra_xusb_remove_pads()
325 struct tegra_xusb_padctl *padctl = lane->pad->padctl; in tegra_xusb_lane_program()
336 static void tegra_xusb_pad_program(struct tegra_xusb_pad *pad) in tegra_xusb_pad_program() argument
340 for (i = 0; i < pad->soc->num_lanes; i++) { in tegra_xusb_pad_program()
343 if (pad->lanes[i]) { in tegra_xusb_pad_program()
344 lane = phy_get_drvdata(pad->lanes[i]); in tegra_xusb_pad_program()
352 struct tegra_xusb_pad *pad; in tegra_xusb_setup_pads() local
361 pad = tegra_xusb_pad_create(padctl, soc); in tegra_xusb_setup_pads()
362 if (IS_ERR(pad)) { in tegra_xusb_setup_pads()
363 err = PTR_ERR(pad); in tegra_xusb_setup_pads()
371 if (!pad) in tegra_xusb_setup_pads()
374 list_add_tail(&pad->list, &padctl->pads); in tegra_xusb_setup_pads()
377 list_for_each_entry(pad, &padctl->pads, list) in tegra_xusb_setup_pads()
378 tegra_xusb_pad_program(pad); in tegra_xusb_setup_pads()