Lines Matching refs:bridge
46 * Find the bridge that the resource is associated with.
89 struct vme_bridge *bridge;
96 bridge = find_bridge(resource);
97 if (!bridge) {
98 printk(KERN_ERR "Can't find bridge\n");
102 if (!bridge->parent) {
103 printk(KERN_ERR "Dev entry NULL for bridge %s\n", bridge->name);
107 if (!bridge->alloc_consistent) {
108 printk(KERN_ERR "alloc_consistent not supported by bridge %s\n",
109 bridge->name);
113 return bridge->alloc_consistent(bridge->parent, size, dma);
129 struct vme_bridge *bridge;
136 bridge = find_bridge(resource);
137 if (!bridge) {
138 printk(KERN_ERR "Can't find bridge\n");
142 if (!bridge->parent) {
143 printk(KERN_ERR "Dev entry NULL for bridge %s\n", bridge->name);
147 if (!bridge->free_consistent) {
148 printk(KERN_ERR "free_consistent not supported by bridge %s\n",
149 bridge->name);
153 bridge->free_consistent(bridge->parent, size, vaddr, dma);
293 struct vme_bridge *bridge;
299 bridge = vdev->bridge;
300 if (!bridge) {
306 list_for_each(slave_pos, &bridge->slave_resources) {
374 struct vme_bridge *bridge = find_bridge(resource);
385 if (!bridge->slave_set) {
400 return bridge->slave_set(image, enabled, vme_base, size, buf_base,
424 struct vme_bridge *bridge = find_bridge(resource);
434 if (!bridge->slave_get) {
439 return bridge->slave_get(image, enabled, vme_base, size, buf_base,
494 struct vme_bridge *bridge;
500 bridge = vdev->bridge;
501 if (!bridge) {
507 list_for_each(master_pos, &bridge->master_resources) {
578 struct vme_bridge *bridge = find_bridge(resource);
589 if (!bridge->master_set) {
605 return bridge->master_set(image, enabled, vme_base, size, aspace,
629 struct vme_bridge *bridge = find_bridge(resource);
639 if (!bridge->master_get) {
644 return bridge->master_get(image, enabled, vme_base, size, aspace,
667 struct vme_bridge *bridge = find_bridge(resource);
671 if (!bridge->master_read) {
693 return bridge->master_read(image, buf, count, offset);
716 struct vme_bridge *bridge = find_bridge(resource);
720 if (!bridge->master_write) {
742 return bridge->master_write(image, buf, count, offset);
768 struct vme_bridge *bridge = find_bridge(resource);
771 if (!bridge->master_rmw) {
783 return bridge->master_rmw(image, mask, compare, swap, offset);
871 struct vme_bridge *bridge;
880 bridge = vdev->bridge;
881 if (!bridge) {
887 list_for_each(dma_pos, &bridge->dma_resources) {
1121 struct vme_bridge *bridge = list->parent->parent;
1124 if (!bridge->dma_list_add) {
1134 retval = bridge->dma_list_add(list, src, dest, count);
1154 struct vme_bridge *bridge = list->parent->parent;
1157 if (!bridge->dma_list_exec) {
1164 retval = bridge->dma_list_exec(list);
1183 struct vme_bridge *bridge = list->parent->parent;
1186 if (!bridge->dma_list_empty) {
1200 retval = bridge->dma_list_empty(list);
1254 void vme_bus_error_handler(struct vme_bridge *bridge,
1262 list_for_each(handler_pos, &bridge->vme_error_handlers) {
1277 dev_err(bridge->parent,
1284 struct vme_bridge *bridge, u32 aspace,
1298 list_add_tail(&handler->list, &bridge->vme_error_handlers);
1311 void vme_irq_handler(struct vme_bridge *bridge, int level, int statid)
1316 call = bridge->irq[level - 1].callback[statid].func;
1317 priv_data = bridge->irq[level - 1].callback[statid].priv_data;
1346 struct vme_bridge *bridge;
1348 bridge = vdev->bridge;
1349 if (!bridge) {
1359 if (!bridge->irq_set) {
1364 mutex_lock(&bridge->irq_mtx);
1366 if (bridge->irq[level - 1].callback[statid].func) {
1367 mutex_unlock(&bridge->irq_mtx);
1372 bridge->irq[level - 1].count++;
1373 bridge->irq[level - 1].callback[statid].priv_data = priv_data;
1374 bridge->irq[level - 1].callback[statid].func = callback;
1377 bridge->irq_set(bridge, level, 1, 1);
1379 mutex_unlock(&bridge->irq_mtx);
1395 struct vme_bridge *bridge;
1397 bridge = vdev->bridge;
1398 if (!bridge) {
1408 if (!bridge->irq_set) {
1413 mutex_lock(&bridge->irq_mtx);
1415 bridge->irq[level - 1].count--;
1418 if (bridge->irq[level - 1].count == 0)
1419 bridge->irq_set(bridge, level, 0, 1);
1421 bridge->irq[level - 1].callback[statid].func = NULL;
1422 bridge->irq[level - 1].callback[statid].priv_data = NULL;
1424 mutex_unlock(&bridge->irq_mtx);
1442 struct vme_bridge *bridge;
1444 bridge = vdev->bridge;
1445 if (!bridge) {
1455 if (!bridge->irq_generate) {
1460 return bridge->irq_generate(bridge, level, statid);
1476 struct vme_bridge *bridge;
1482 bridge = vdev->bridge;
1483 if (!bridge) {
1489 list_for_each(lm_pos, &bridge->lm_resources) {
1575 struct vme_bridge *bridge = find_bridge(resource);
1585 if (!bridge->lm_set) {
1590 return bridge->lm_set(lm, lm_base, aspace, cycle);
1611 struct vme_bridge *bridge = find_bridge(resource);
1621 if (!bridge->lm_get) {
1626 return bridge->lm_get(lm, lm_base, aspace, cycle);
1648 struct vme_bridge *bridge = find_bridge(resource);
1658 if (!bridge->lm_attach) {
1663 return bridge->lm_attach(lm, monitor, callback, data);
1681 struct vme_bridge *bridge = find_bridge(resource);
1691 if (!bridge->lm_detach) {
1696 return bridge->lm_detach(lm, monitor);
1744 * Return: The slot ID on success, -EINVAL if VME bridge cannot be determined
1750 struct vme_bridge *bridge;
1752 bridge = vdev->bridge;
1753 if (!bridge) {
1758 if (!bridge->slot_get) {
1763 return bridge->slot_get(bridge);
1773 * Return: The bus number on success, -EINVAL if VME bridge cannot be
1778 struct vme_bridge *bridge;
1780 bridge = vdev->bridge;
1781 if (!bridge) {
1786 return bridge->num;
1797 /* Common bridge initialization */
1798 struct vme_bridge *vme_init_bridge(struct vme_bridge *bridge)
1800 INIT_LIST_HEAD(&bridge->vme_error_handlers);
1801 INIT_LIST_HEAD(&bridge->master_resources);
1802 INIT_LIST_HEAD(&bridge->slave_resources);
1803 INIT_LIST_HEAD(&bridge->dma_resources);
1804 INIT_LIST_HEAD(&bridge->lm_resources);
1805 mutex_init(&bridge->irq_mtx);
1807 return bridge;
1811 int vme_register_bridge(struct vme_bridge *bridge)
1820 bridge->num = i;
1821 INIT_LIST_HEAD(&bridge->devices);
1822 list_add_tail(&bridge->bus_list, &vme_bus_list);
1833 void vme_unregister_bridge(struct vme_bridge *bridge)
1839 vme_bus_numbers &= ~(1 << bridge->num);
1840 list_for_each_entry_safe(vdev, tmp, &bridge->devices, bridge_list) {
1845 list_del(&bridge->bus_list);
1853 struct vme_bridge *bridge, unsigned int ndevs)
1867 vdev->bridge = bridge;
1870 vdev->dev.parent = bridge->parent;
1872 dev_set_name(&vdev->dev, "%s.%u-%u", drv->name, bridge->num,
1881 list_add_tail(&vdev->bridge_list, &bridge->devices);
1900 struct vme_bridge *bridge;
1904 list_for_each_entry(bridge, &vme_bus_list, bus_list) {
1907 * and if the bridge is removed, it will have to go through
1909 * the bridge which in turn tries to acquire vme_buses_lock and
1912 err = __vme_register_driver_bus(drv, bridge, ndevs);