• Home
  • Raw
  • Download

Lines Matching refs:bus

30 int sfp_parse_port(struct sfp_bus *bus, const struct sfp_eeprom_id *id,  in sfp_parse_port()  argument
72 dev_warn(bus->sfp_dev, "SFP: unknown connector id 0x%02x\n", in sfp_parse_port()
82 phy_interface_t sfp_parse_interface(struct sfp_bus *bus, in sfp_parse_interface() argument
112 dev_err(bus->sfp_dev, in sfp_parse_interface()
121 void sfp_parse_support(struct sfp_bus *bus, const struct sfp_eeprom_id *id, in sfp_parse_support() argument
164 dev_warn(bus->sfp_dev, in sfp_parse_support()
202 dev_warn(bus->sfp_dev, in sfp_parse_support()
215 static const struct sfp_upstream_ops *sfp_get_upstream_ops(struct sfp_bus *bus) in sfp_get_upstream_ops() argument
217 return bus->registered ? bus->upstream_ops : NULL; in sfp_get_upstream_ops()
253 struct sfp_bus *bus = container_of(kref, struct sfp_bus, kref); in sfp_bus_release() local
255 list_del(&bus->node); in sfp_bus_release()
257 kfree(bus); in sfp_bus_release()
260 static void sfp_bus_put(struct sfp_bus *bus) in sfp_bus_put() argument
262 kref_put_mutex(&bus->kref, sfp_bus_release, &sfp_mutex); in sfp_bus_put()
265 static int sfp_register_bus(struct sfp_bus *bus) in sfp_register_bus() argument
267 const struct sfp_upstream_ops *ops = bus->upstream_ops; in sfp_register_bus()
272 ops->link_down(bus->upstream); in sfp_register_bus()
273 if (ops->connect_phy && bus->phydev) { in sfp_register_bus()
274 ret = ops->connect_phy(bus->upstream, bus->phydev); in sfp_register_bus()
279 bus->socket_ops->attach(bus->sfp); in sfp_register_bus()
280 if (bus->started) in sfp_register_bus()
281 bus->socket_ops->start(bus->sfp); in sfp_register_bus()
282 bus->registered = true; in sfp_register_bus()
286 static void sfp_unregister_bus(struct sfp_bus *bus) in sfp_unregister_bus() argument
288 const struct sfp_upstream_ops *ops = bus->upstream_ops; in sfp_unregister_bus()
290 if (bus->registered) { in sfp_unregister_bus()
291 if (bus->started) in sfp_unregister_bus()
292 bus->socket_ops->stop(bus->sfp); in sfp_unregister_bus()
293 bus->socket_ops->detach(bus->sfp); in sfp_unregister_bus()
294 if (bus->phydev && ops && ops->disconnect_phy) in sfp_unregister_bus()
295 ops->disconnect_phy(bus->upstream); in sfp_unregister_bus()
297 bus->registered = false; in sfp_unregister_bus()
301 int sfp_get_module_info(struct sfp_bus *bus, struct ethtool_modinfo *modinfo) in sfp_get_module_info() argument
303 if (!bus->registered) in sfp_get_module_info()
305 return bus->socket_ops->module_info(bus->sfp, modinfo); in sfp_get_module_info()
309 int sfp_get_module_eeprom(struct sfp_bus *bus, struct ethtool_eeprom *ee, in sfp_get_module_eeprom() argument
312 if (!bus->registered) in sfp_get_module_eeprom()
314 return bus->socket_ops->module_eeprom(bus->sfp, ee, data); in sfp_get_module_eeprom()
318 void sfp_upstream_start(struct sfp_bus *bus) in sfp_upstream_start() argument
320 if (bus->registered) in sfp_upstream_start()
321 bus->socket_ops->start(bus->sfp); in sfp_upstream_start()
322 bus->started = true; in sfp_upstream_start()
326 void sfp_upstream_stop(struct sfp_bus *bus) in sfp_upstream_stop() argument
328 if (bus->registered) in sfp_upstream_stop()
329 bus->socket_ops->stop(bus->sfp); in sfp_upstream_stop()
330 bus->started = false; in sfp_upstream_stop()
338 struct sfp_bus *bus = sfp_bus_get(np); in sfp_register_upstream() local
341 if (bus) { in sfp_register_upstream()
343 bus->upstream_ops = ops; in sfp_register_upstream()
344 bus->upstream = upstream; in sfp_register_upstream()
345 bus->netdev = ndev; in sfp_register_upstream()
347 if (bus->sfp) in sfp_register_upstream()
348 ret = sfp_register_bus(bus); in sfp_register_upstream()
353 sfp_bus_put(bus); in sfp_register_upstream()
354 bus = NULL; in sfp_register_upstream()
357 return bus; in sfp_register_upstream()
361 void sfp_unregister_upstream(struct sfp_bus *bus) in sfp_unregister_upstream() argument
364 if (bus->sfp) in sfp_unregister_upstream()
365 sfp_unregister_bus(bus); in sfp_unregister_upstream()
366 bus->upstream = NULL; in sfp_unregister_upstream()
367 bus->netdev = NULL; in sfp_unregister_upstream()
370 sfp_bus_put(bus); in sfp_unregister_upstream()
376 int sfp_add_phy(struct sfp_bus *bus, struct phy_device *phydev) in sfp_add_phy() argument
378 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_add_phy()
382 ret = ops->connect_phy(bus->upstream, phydev); in sfp_add_phy()
385 bus->phydev = phydev; in sfp_add_phy()
391 void sfp_remove_phy(struct sfp_bus *bus) in sfp_remove_phy() argument
393 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_remove_phy()
396 ops->disconnect_phy(bus->upstream); in sfp_remove_phy()
397 bus->phydev = NULL; in sfp_remove_phy()
402 void sfp_link_up(struct sfp_bus *bus) in sfp_link_up() argument
404 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_link_up()
407 ops->link_up(bus->upstream); in sfp_link_up()
411 void sfp_link_down(struct sfp_bus *bus) in sfp_link_down() argument
413 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_link_down()
416 ops->link_down(bus->upstream); in sfp_link_down()
420 int sfp_module_insert(struct sfp_bus *bus, const struct sfp_eeprom_id *id) in sfp_module_insert() argument
422 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_module_insert()
426 ret = ops->module_insert(bus->upstream, id); in sfp_module_insert()
432 void sfp_module_remove(struct sfp_bus *bus) in sfp_module_remove() argument
434 const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); in sfp_module_remove()
437 ops->module_remove(bus->upstream); in sfp_module_remove()
444 struct sfp_bus *bus = sfp_bus_get(dev->of_node); in sfp_register_socket() local
447 if (bus) { in sfp_register_socket()
449 bus->sfp_dev = dev; in sfp_register_socket()
450 bus->sfp = sfp; in sfp_register_socket()
451 bus->socket_ops = ops; in sfp_register_socket()
453 if (bus->netdev) in sfp_register_socket()
454 ret = sfp_register_bus(bus); in sfp_register_socket()
459 sfp_bus_put(bus); in sfp_register_socket()
460 bus = NULL; in sfp_register_socket()
463 return bus; in sfp_register_socket()
467 void sfp_unregister_socket(struct sfp_bus *bus) in sfp_unregister_socket() argument
470 if (bus->netdev) in sfp_unregister_socket()
471 sfp_unregister_bus(bus); in sfp_unregister_socket()
472 bus->sfp_dev = NULL; in sfp_unregister_socket()
473 bus->sfp = NULL; in sfp_unregister_socket()
474 bus->socket_ops = NULL; in sfp_unregister_socket()
477 sfp_bus_put(bus); in sfp_unregister_socket()