Lines Matching full:bridge

3  * VME Bridge Framework
46 * Find the bridge that the resource is associated with.
84 struct vme_bridge *bridge; in vme_alloc_consistent() local
91 bridge = find_bridge(resource); in vme_alloc_consistent()
92 if (!bridge) { in vme_alloc_consistent()
93 printk(KERN_ERR "Can't find bridge\n"); in vme_alloc_consistent()
97 if (!bridge->parent) { in vme_alloc_consistent()
98 printk(KERN_ERR "Dev entry NULL for bridge %s\n", bridge->name); in vme_alloc_consistent()
102 if (!bridge->alloc_consistent) { in vme_alloc_consistent()
103 printk(KERN_ERR "alloc_consistent not supported by bridge %s\n", in vme_alloc_consistent()
104 bridge->name); in vme_alloc_consistent()
108 return bridge->alloc_consistent(bridge->parent, size, dma); in vme_alloc_consistent()
124 struct vme_bridge *bridge; in vme_free_consistent() local
131 bridge = find_bridge(resource); in vme_free_consistent()
132 if (!bridge) { in vme_free_consistent()
133 printk(KERN_ERR "Can't find bridge\n"); in vme_free_consistent()
137 if (!bridge->parent) { in vme_free_consistent()
138 printk(KERN_ERR "Dev entry NULL for bridge %s\n", bridge->name); in vme_free_consistent()
142 if (!bridge->free_consistent) { in vme_free_consistent()
143 printk(KERN_ERR "free_consistent not supported by bridge %s\n", in vme_free_consistent()
144 bridge->name); in vme_free_consistent()
148 bridge->free_consistent(bridge->parent, size, vaddr, dma); in vme_free_consistent()
284 struct vme_bridge *bridge; in vme_slave_request() local
290 bridge = vdev->bridge; in vme_slave_request()
291 if (!bridge) { in vme_slave_request()
297 list_for_each(slave_pos, &bridge->slave_resources) { in vme_slave_request()
365 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_set() local
376 if (!bridge->slave_set) { in vme_slave_set()
391 return bridge->slave_set(image, enabled, vme_base, size, buf_base, in vme_slave_set()
415 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_get() local
425 if (!bridge->slave_get) { in vme_slave_get()
430 return bridge->slave_get(image, enabled, vme_base, size, buf_base, in vme_slave_get()
485 struct vme_bridge *bridge; in vme_master_request() local
491 bridge = vdev->bridge; in vme_master_request()
492 if (!bridge) { in vme_master_request()
498 list_for_each(master_pos, &bridge->master_resources) { in vme_master_request()
569 struct vme_bridge *bridge = find_bridge(resource); in vme_master_set() local
580 if (!bridge->master_set) { in vme_master_set()
596 return bridge->master_set(image, enabled, vme_base, size, aspace, in vme_master_set()
620 struct vme_bridge *bridge = find_bridge(resource); in vme_master_get() local
630 if (!bridge->master_get) { in vme_master_get()
635 return bridge->master_get(image, enabled, vme_base, size, aspace, in vme_master_get()
658 struct vme_bridge *bridge = find_bridge(resource); in vme_master_read() local
662 if (!bridge->master_read) { in vme_master_read()
684 return bridge->master_read(image, buf, count, offset); in vme_master_read()
707 struct vme_bridge *bridge = find_bridge(resource); in vme_master_write() local
711 if (!bridge->master_write) { in vme_master_write()
733 return bridge->master_write(image, buf, count, offset); in vme_master_write()
759 struct vme_bridge *bridge = find_bridge(resource); in vme_master_rmw() local
762 if (!bridge->master_rmw) { in vme_master_rmw()
774 return bridge->master_rmw(image, mask, compare, swap, offset); in vme_master_rmw()
862 struct vme_bridge *bridge; in vme_dma_request() local
871 bridge = vdev->bridge; in vme_dma_request()
872 if (!bridge) { in vme_dma_request()
878 list_for_each(dma_pos, &bridge->dma_resources) { in vme_dma_request()
1112 struct vme_bridge *bridge = list->parent->parent; in vme_dma_list_add() local
1115 if (!bridge->dma_list_add) { in vme_dma_list_add()
1125 retval = bridge->dma_list_add(list, src, dest, count); in vme_dma_list_add()
1145 struct vme_bridge *bridge = list->parent->parent; in vme_dma_list_exec() local
1148 if (!bridge->dma_list_exec) { in vme_dma_list_exec()
1155 retval = bridge->dma_list_exec(list); in vme_dma_list_exec()
1174 struct vme_bridge *bridge = list->parent->parent; in vme_dma_list_free() local
1177 if (!bridge->dma_list_empty) { in vme_dma_list_free()
1191 retval = bridge->dma_list_empty(list); in vme_dma_list_free()
1245 void vme_bus_error_handler(struct vme_bridge *bridge, in vme_bus_error_handler() argument
1253 list_for_each(handler_pos, &bridge->vme_error_handlers) { in vme_bus_error_handler()
1268 dev_err(bridge->parent, in vme_bus_error_handler()
1275 struct vme_bridge *bridge, u32 aspace, in vme_register_error_handler() argument
1289 list_add_tail(&handler->list, &bridge->vme_error_handlers); in vme_register_error_handler()
1302 void vme_irq_handler(struct vme_bridge *bridge, int level, int statid) in vme_irq_handler() argument
1307 call = bridge->irq[level - 1].callback[statid].func; in vme_irq_handler()
1308 priv_data = bridge->irq[level - 1].callback[statid].priv_data; in vme_irq_handler()
1337 struct vme_bridge *bridge; in vme_irq_request() local
1339 bridge = vdev->bridge; in vme_irq_request()
1340 if (!bridge) { in vme_irq_request()
1350 if (!bridge->irq_set) { in vme_irq_request()
1355 mutex_lock(&bridge->irq_mtx); in vme_irq_request()
1357 if (bridge->irq[level - 1].callback[statid].func) { in vme_irq_request()
1358 mutex_unlock(&bridge->irq_mtx); in vme_irq_request()
1363 bridge->irq[level - 1].count++; in vme_irq_request()
1364 bridge->irq[level - 1].callback[statid].priv_data = priv_data; in vme_irq_request()
1365 bridge->irq[level - 1].callback[statid].func = callback; in vme_irq_request()
1368 bridge->irq_set(bridge, level, 1, 1); in vme_irq_request()
1370 mutex_unlock(&bridge->irq_mtx); in vme_irq_request()
1386 struct vme_bridge *bridge; in vme_irq_free() local
1388 bridge = vdev->bridge; in vme_irq_free()
1389 if (!bridge) { in vme_irq_free()
1399 if (!bridge->irq_set) { in vme_irq_free()
1404 mutex_lock(&bridge->irq_mtx); in vme_irq_free()
1406 bridge->irq[level - 1].count--; in vme_irq_free()
1409 if (bridge->irq[level - 1].count == 0) in vme_irq_free()
1410 bridge->irq_set(bridge, level, 0, 1); in vme_irq_free()
1412 bridge->irq[level - 1].callback[statid].func = NULL; in vme_irq_free()
1413 bridge->irq[level - 1].callback[statid].priv_data = NULL; in vme_irq_free()
1415 mutex_unlock(&bridge->irq_mtx); in vme_irq_free()
1433 struct vme_bridge *bridge; in vme_irq_generate() local
1435 bridge = vdev->bridge; in vme_irq_generate()
1436 if (!bridge) { in vme_irq_generate()
1446 if (!bridge->irq_generate) { in vme_irq_generate()
1451 return bridge->irq_generate(bridge, level, statid); in vme_irq_generate()
1467 struct vme_bridge *bridge; in vme_lm_request() local
1473 bridge = vdev->bridge; in vme_lm_request()
1474 if (!bridge) { in vme_lm_request()
1480 list_for_each(lm_pos, &bridge->lm_resources) { in vme_lm_request()
1566 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_set() local
1576 if (!bridge->lm_set) { in vme_lm_set()
1581 return bridge->lm_set(lm, lm_base, aspace, cycle); in vme_lm_set()
1602 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_get() local
1612 if (!bridge->lm_get) { in vme_lm_get()
1617 return bridge->lm_get(lm, lm_base, aspace, cycle); in vme_lm_get()
1639 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_attach() local
1649 if (!bridge->lm_attach) { in vme_lm_attach()
1654 return bridge->lm_attach(lm, monitor, callback, data); in vme_lm_attach()
1672 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_detach() local
1682 if (!bridge->lm_detach) { in vme_lm_detach()
1687 return bridge->lm_detach(lm, monitor); in vme_lm_detach()
1735 * Return: The slot ID on success, -EINVAL if VME bridge cannot be determined
1741 struct vme_bridge *bridge; in vme_slot_num() local
1743 bridge = vdev->bridge; in vme_slot_num()
1744 if (!bridge) { in vme_slot_num()
1749 if (!bridge->slot_get) { in vme_slot_num()
1754 return bridge->slot_get(bridge); in vme_slot_num()
1764 * Return: The bus number on success, -EINVAL if VME bridge cannot be
1769 struct vme_bridge *bridge; in vme_bus_num() local
1771 bridge = vdev->bridge; in vme_bus_num()
1772 if (!bridge) { in vme_bus_num()
1777 return bridge->num; in vme_bus_num()
1781 /* - Bridge Registration --------------------------------------------------- */
1788 /* Common bridge initialization */
1789 struct vme_bridge *vme_init_bridge(struct vme_bridge *bridge) in vme_init_bridge() argument
1791 INIT_LIST_HEAD(&bridge->vme_error_handlers); in vme_init_bridge()
1792 INIT_LIST_HEAD(&bridge->master_resources); in vme_init_bridge()
1793 INIT_LIST_HEAD(&bridge->slave_resources); in vme_init_bridge()
1794 INIT_LIST_HEAD(&bridge->dma_resources); in vme_init_bridge()
1795 INIT_LIST_HEAD(&bridge->lm_resources); in vme_init_bridge()
1796 mutex_init(&bridge->irq_mtx); in vme_init_bridge()
1798 return bridge; in vme_init_bridge()
1802 int vme_register_bridge(struct vme_bridge *bridge) in vme_register_bridge() argument
1811 bridge->num = i; in vme_register_bridge()
1812 INIT_LIST_HEAD(&bridge->devices); in vme_register_bridge()
1813 list_add_tail(&bridge->bus_list, &vme_bus_list); in vme_register_bridge()
1824 void vme_unregister_bridge(struct vme_bridge *bridge) in vme_unregister_bridge() argument
1830 vme_bus_numbers &= ~(1 << bridge->num); in vme_unregister_bridge()
1831 list_for_each_entry_safe(vdev, tmp, &bridge->devices, bridge_list) { in vme_unregister_bridge()
1836 list_del(&bridge->bus_list); in vme_unregister_bridge()
1844 struct vme_bridge *bridge, unsigned int ndevs) in __vme_register_driver_bus() argument
1858 vdev->bridge = bridge; in __vme_register_driver_bus()
1861 vdev->dev.parent = bridge->parent; in __vme_register_driver_bus()
1863 dev_set_name(&vdev->dev, "%s.%u-%u", drv->name, bridge->num, in __vme_register_driver_bus()
1872 list_add_tail(&vdev->bridge_list, &bridge->devices); in __vme_register_driver_bus()
1891 struct vme_bridge *bridge; in __vme_register_driver() local
1895 list_for_each_entry(bridge, &vme_bus_list, bus_list) { in __vme_register_driver()
1898 * and if the bridge is removed, it will have to go through in __vme_register_driver()
1900 * the bridge which in turn tries to acquire vme_buses_lock and in __vme_register_driver()
1903 err = __vme_register_driver_bus(drv, bridge, ndevs); in __vme_register_driver()