• Home
  • Raw
  • Download

Lines Matching full:bridge

3  * FPGA Bridge Framework Driver
8 #include <linux/fpga/fpga-bridge.h>
28 * fpga_bridge_enable - Enable transactions on the bridge
30 * @bridge: FPGA bridge
34 int fpga_bridge_enable(struct fpga_bridge *bridge) in fpga_bridge_enable() argument
36 dev_dbg(&bridge->dev, "enable\n"); in fpga_bridge_enable()
38 if (bridge->br_ops && bridge->br_ops->enable_set) in fpga_bridge_enable()
39 return bridge->br_ops->enable_set(bridge, 1); in fpga_bridge_enable()
46 * fpga_bridge_disable - Disable transactions on the bridge
48 * @bridge: FPGA bridge
52 int fpga_bridge_disable(struct fpga_bridge *bridge) in fpga_bridge_disable() argument
54 dev_dbg(&bridge->dev, "disable\n"); in fpga_bridge_disable()
56 if (bridge->br_ops && bridge->br_ops->enable_set) in fpga_bridge_disable()
57 return bridge->br_ops->enable_set(bridge, 0); in fpga_bridge_disable()
66 struct fpga_bridge *bridge; in __fpga_bridge_get() local
69 bridge = to_fpga_bridge(dev); in __fpga_bridge_get()
71 bridge->info = info; in __fpga_bridge_get()
73 if (!mutex_trylock(&bridge->mutex)) { in __fpga_bridge_get()
81 dev_dbg(&bridge->dev, "get\n"); in __fpga_bridge_get()
83 return bridge; in __fpga_bridge_get()
86 mutex_unlock(&bridge->mutex); in __fpga_bridge_get()
93 * of_fpga_bridge_get - get an exclusive reference to a fpga bridge
95 * @np: node pointer of a FPGA bridge
99 * Return -EBUSY if someone already has a reference to the bridge.
100 * Return -ENODEV if @np is not a FPGA Bridge.
122 * fpga_bridge_get - get an exclusive reference to a fpga bridge
123 * @dev: parent device that fpga bridge was registered with
126 * Given a device, get an exclusive reference to a fpga bridge.
128 * Return: fpga bridge struct or IS_ERR() condition containing error code.
145 * fpga_bridge_put - release a reference to a bridge
147 * @bridge: FPGA bridge
149 void fpga_bridge_put(struct fpga_bridge *bridge) in fpga_bridge_put() argument
151 dev_dbg(&bridge->dev, "put\n"); in fpga_bridge_put()
153 bridge->info = NULL; in fpga_bridge_put()
154 module_put(bridge->dev.parent->driver->owner); in fpga_bridge_put()
155 mutex_unlock(&bridge->mutex); in fpga_bridge_put()
156 put_device(&bridge->dev); in fpga_bridge_put()
164 * Enable each bridge in the list. If list is empty, do nothing.
166 * Return 0 for success or empty bridge list; return error code otherwise.
170 struct fpga_bridge *bridge; in fpga_bridges_enable() local
173 list_for_each_entry(bridge, bridge_list, node) { in fpga_bridges_enable()
174 ret = fpga_bridge_enable(bridge); in fpga_bridges_enable()
188 * Disable each bridge in the list. If list is empty, do nothing.
190 * Return 0 for success or empty bridge list; return error code otherwise.
194 struct fpga_bridge *bridge; in fpga_bridges_disable() local
197 list_for_each_entry(bridge, bridge_list, node) { in fpga_bridges_disable()
198 ret = fpga_bridge_disable(bridge); in fpga_bridges_disable()
212 * For each bridge in the list, put the bridge and remove it from the list.
217 struct fpga_bridge *bridge, *next; in fpga_bridges_put() local
220 list_for_each_entry_safe(bridge, next, bridge_list, node) { in fpga_bridges_put()
221 fpga_bridge_put(bridge); in fpga_bridges_put()
224 list_del(&bridge->node); in fpga_bridges_put()
231 * of_fpga_bridge_get_to_list - get a bridge, add it to a list
233 * @np: node pointer of a FPGA bridge
237 * Get an exclusive reference to the bridge and and it to the list.
245 struct fpga_bridge *bridge; in of_fpga_bridge_get_to_list() local
248 bridge = of_fpga_bridge_get(np, info); in of_fpga_bridge_get_to_list()
249 if (IS_ERR(bridge)) in of_fpga_bridge_get_to_list()
250 return PTR_ERR(bridge); in of_fpga_bridge_get_to_list()
253 list_add(&bridge->node, bridge_list); in of_fpga_bridge_get_to_list()
261 * fpga_bridge_get_to_list - given device, get a bridge, add it to a list
263 * @dev: FPGA bridge device
267 * Get an exclusive reference to the bridge and and it to the list.
275 struct fpga_bridge *bridge; in fpga_bridge_get_to_list() local
278 bridge = fpga_bridge_get(dev, info); in fpga_bridge_get_to_list()
279 if (IS_ERR(bridge)) in fpga_bridge_get_to_list()
280 return PTR_ERR(bridge); in fpga_bridge_get_to_list()
283 list_add(&bridge->node, bridge_list); in fpga_bridge_get_to_list()
293 struct fpga_bridge *bridge = to_fpga_bridge(dev); in name_show() local
295 return sprintf(buf, "%s\n", bridge->name); in name_show()
301 struct fpga_bridge *bridge = to_fpga_bridge(dev); in state_show() local
304 if (bridge->br_ops && bridge->br_ops->enable_show) in state_show()
305 enable = bridge->br_ops->enable_show(bridge); in state_show()
322 * @dev: FPGA bridge device from pdev
323 * @name: FPGA bridge name
324 * @br_ops: pointer to structure of fpga bridge ops
325 * @priv: FPGA bridge private data
333 struct fpga_bridge *bridge; in fpga_bridge_create() local
341 bridge = kzalloc(sizeof(*bridge), GFP_KERNEL); in fpga_bridge_create()
342 if (!bridge) in fpga_bridge_create()
351 mutex_init(&bridge->mutex); in fpga_bridge_create()
352 INIT_LIST_HEAD(&bridge->node); in fpga_bridge_create()
354 bridge->name = name; in fpga_bridge_create()
355 bridge->br_ops = br_ops; in fpga_bridge_create()
356 bridge->priv = priv; in fpga_bridge_create()
358 device_initialize(&bridge->dev); in fpga_bridge_create()
359 bridge->dev.groups = br_ops->groups; in fpga_bridge_create()
360 bridge->dev.class = fpga_bridge_class; in fpga_bridge_create()
361 bridge->dev.parent = dev; in fpga_bridge_create()
362 bridge->dev.of_node = dev->of_node; in fpga_bridge_create()
363 bridge->dev.id = id; in fpga_bridge_create()
365 ret = dev_set_name(&bridge->dev, "br%d", id); in fpga_bridge_create()
369 return bridge; in fpga_bridge_create()
374 kfree(bridge); in fpga_bridge_create()
381 * fpga_bridge_free - free a fpga bridge and its id
382 * @bridge: FPGA bridge struct created by fpga_bridge_create
384 void fpga_bridge_free(struct fpga_bridge *bridge) in fpga_bridge_free() argument
386 ida_simple_remove(&fpga_bridge_ida, bridge->dev.id); in fpga_bridge_free()
387 kfree(bridge); in fpga_bridge_free()
392 * fpga_bridge_register - register a fpga bridge
393 * @bridge: FPGA bridge struct created by fpga_bridge_create
397 int fpga_bridge_register(struct fpga_bridge *bridge) in fpga_bridge_register() argument
399 struct device *dev = &bridge->dev; in fpga_bridge_register()
408 dev_info(dev->parent, "fpga bridge [%s] registered\n", bridge->name); in fpga_bridge_register()
415 * fpga_bridge_unregister - unregister and free a fpga bridge
416 * @bridge: FPGA bridge struct created by fpga_bridge_create
418 void fpga_bridge_unregister(struct fpga_bridge *bridge) in fpga_bridge_unregister() argument
421 * If the low level driver provides a method for putting bridge into in fpga_bridge_unregister()
424 if (bridge->br_ops && bridge->br_ops->fpga_bridge_remove) in fpga_bridge_unregister()
425 bridge->br_ops->fpga_bridge_remove(bridge); in fpga_bridge_unregister()
427 device_unregister(&bridge->dev); in fpga_bridge_unregister()
433 struct fpga_bridge *bridge = to_fpga_bridge(dev); in fpga_bridge_dev_release() local
435 fpga_bridge_free(bridge); in fpga_bridge_dev_release()
458 MODULE_DESCRIPTION("FPGA Bridge Driver");