Lines Matching refs:bridge

46  * Find the bridge that the resource is associated with.
83 struct vme_bridge *bridge = find_bridge(resource);
85 if (!bridge->alloc_consistent) {
86 dev_err(bridge->parent,
87 "alloc_consistent not supported by bridge %s\n",
88 bridge->name);
92 return bridge->alloc_consistent(bridge->parent, size, dma);
108 struct vme_bridge *bridge = find_bridge(resource);
110 if (!bridge->free_consistent) {
111 dev_err(bridge->parent,
112 "free_consistent not supported by bridge %s\n",
113 bridge->name);
117 bridge->free_consistent(bridge->parent, size, vaddr, dma);
133 struct vme_bridge *bridge = find_bridge(resource);
157 dev_err(bridge->parent, "Unknown resource type\n");
163 int vme_check_window(struct vme_bridge *bridge, u32 aspace,
198 dev_err(bridge->parent, "Invalid address space\n");
254 struct vme_bridge *bridge;
259 bridge = vdev->bridge;
260 if (!bridge) {
266 list_for_each_entry(slave_image, &bridge->slave_resources, list) {
268 dev_err(bridge->parent,
331 struct vme_bridge *bridge = find_bridge(resource);
336 dev_err(bridge->parent, "Not a slave resource\n");
342 if (!bridge->slave_set) {
343 dev_err(bridge->parent, "%s not supported\n", __func__);
349 dev_err(bridge->parent, "Invalid attributes\n");
353 retval = vme_check_window(bridge, aspace, vme_base, size);
357 return bridge->slave_set(image, enabled, vme_base, size, buf_base,
381 struct vme_bridge *bridge = find_bridge(resource);
385 dev_err(bridge->parent, "Not a slave resource\n");
391 if (!bridge->slave_get) {
392 dev_err(bridge->parent, "%s not supported\n", __func__);
396 return bridge->slave_get(image, enabled, vme_base, size, buf_base,
409 struct vme_bridge *bridge = find_bridge(resource);
413 dev_err(bridge->parent, "Not a slave resource\n");
420 dev_err(bridge->parent, "Can't find slave resource\n");
427 dev_err(bridge->parent, "Image is already free\n");
452 struct vme_bridge *bridge;
457 bridge = vdev->bridge;
458 if (!bridge) {
464 list_for_each_entry(master_image, &bridge->master_resources, list) {
466 dev_warn(bridge->parent,
532 struct vme_bridge *bridge = find_bridge(resource);
537 dev_err(bridge->parent, "Not a master resource\n");
543 if (!bridge->master_set) {
544 dev_warn(bridge->parent, "%s not supported\n", __func__);
551 dev_warn(bridge->parent, "Invalid attributes\n");
555 retval = vme_check_window(bridge, aspace, vme_base, size);
559 return bridge->master_set(image, enabled, vme_base, size, aspace,
583 struct vme_bridge *bridge = find_bridge(resource);
587 dev_err(bridge->parent, "Not a master resource\n");
593 if (!bridge->master_get) {
594 dev_warn(bridge->parent, "%s not supported\n", __func__);
598 return bridge->master_get(image, enabled, vme_base, size, aspace,
621 struct vme_bridge *bridge = find_bridge(resource);
625 if (!bridge->master_read) {
626 dev_warn(bridge->parent,
632 dev_err(bridge->parent, "Not a master resource\n");
641 dev_warn(bridge->parent, "Invalid Offset\n");
648 return bridge->master_read(image, buf, count, offset);
670 struct vme_bridge *bridge = find_bridge(resource);
674 if (!bridge->master_write) {
675 dev_warn(bridge->parent, "Writing to resource not supported\n");
680 dev_err(bridge->parent, "Not a master resource\n");
689 dev_warn(bridge->parent, "Invalid Offset\n");
696 return bridge->master_write(image, buf, count, offset);
722 struct vme_bridge *bridge = find_bridge(resource);
725 if (!bridge->master_rmw) {
726 dev_warn(bridge->parent, "Writing to resource not supported\n");
731 dev_err(bridge->parent, "Not a master resource\n");
737 return bridge->master_rmw(image, mask, compare, swap, offset);
754 struct vme_bridge *bridge = find_bridge(resource);
760 dev_err(bridge->parent, "Not a master resource\n");
769 dev_err(bridge->parent, "Map size cannot exceed the window size\n");
787 struct vme_bridge *bridge = find_bridge(resource);
791 dev_err(bridge->parent, "Not a master resource\n");
798 dev_err(bridge->parent, "Can't find master resource\n");
805 dev_err(bridge->parent, "Image is already free\n");
827 struct vme_bridge *bridge;
835 bridge = vdev->bridge;
836 if (!bridge) {
842 list_for_each_entry(dma_ctrlr, &bridge->dma_resources, list) {
844 dev_err(bridge->parent,
897 struct vme_bridge *bridge = find_bridge(resource);
901 dev_err(bridge->parent, "Not a DMA resource\n");
1075 struct vme_bridge *bridge = list->parent->parent;
1078 if (!bridge->dma_list_add) {
1079 dev_warn(bridge->parent,
1085 dev_err(bridge->parent, "Link List already submitted\n");
1089 retval = bridge->dma_list_add(list, src, dest, count);
1109 struct vme_bridge *bridge = list->parent->parent;
1112 if (!bridge->dma_list_exec) {
1113 dev_err(bridge->parent,
1120 retval = bridge->dma_list_exec(list);
1139 struct vme_bridge *bridge = list->parent->parent;
1142 if (!bridge->dma_list_empty) {
1143 dev_warn(bridge->parent,
1149 dev_err(bridge->parent, "Link List in use\n");
1157 retval = bridge->dma_list_empty(list);
1159 dev_err(bridge->parent, "Unable to empty link-list entries\n");
1181 struct vme_bridge *bridge = find_bridge(resource);
1185 dev_err(bridge->parent, "Not a DMA resource\n");
1192 dev_err(bridge->parent, "Resource busy, can't free\n");
1197 dev_warn(bridge->parent,
1213 void vme_bus_error_handler(struct vme_bridge *bridge,
1220 list_for_each_entry(handler, &bridge->vme_error_handlers, list) {
1233 dev_err(bridge->parent,
1239 struct vme_error_handler *vme_register_error_handler(struct vme_bridge *bridge, u32 aspace,
1253 list_add_tail(&handler->list, &bridge->vme_error_handlers);
1266 void vme_irq_handler(struct vme_bridge *bridge, int level, int statid)
1271 call = bridge->irq[level - 1].callback[statid].func;
1272 priv_data = bridge->irq[level - 1].callback[statid].priv_data;
1276 dev_warn(bridge->parent,
1302 struct vme_bridge *bridge;
1304 bridge = vdev->bridge;
1305 if (!bridge) {
1311 dev_err(bridge->parent, "Invalid interrupt level\n");
1315 if (!bridge->irq_set) {
1316 dev_err(bridge->parent,
1321 mutex_lock(&bridge->irq_mtx);
1323 if (bridge->irq[level - 1].callback[statid].func) {
1324 mutex_unlock(&bridge->irq_mtx);
1325 dev_warn(bridge->parent, "VME Interrupt already taken\n");
1329 bridge->irq[level - 1].count++;
1330 bridge->irq[level - 1].callback[statid].priv_data = priv_data;
1331 bridge->irq[level - 1].callback[statid].func = callback;
1334 bridge->irq_set(bridge, level, 1, 1);
1336 mutex_unlock(&bridge->irq_mtx);
1352 struct vme_bridge *bridge;
1354 bridge = vdev->bridge;
1355 if (!bridge) {
1361 dev_err(bridge->parent, "Invalid interrupt level\n");
1365 if (!bridge->irq_set) {
1366 dev_err(bridge->parent,
1371 mutex_lock(&bridge->irq_mtx);
1373 bridge->irq[level - 1].count--;
1376 if (bridge->irq[level - 1].count == 0)
1377 bridge->irq_set(bridge, level, 0, 1);
1379 bridge->irq[level - 1].callback[statid].func = NULL;
1380 bridge->irq[level - 1].callback[statid].priv_data = NULL;
1382 mutex_unlock(&bridge->irq_mtx);
1400 struct vme_bridge *bridge;
1402 bridge = vdev->bridge;
1403 if (!bridge) {
1409 dev_warn(bridge->parent, "Invalid interrupt level\n");
1413 if (!bridge->irq_generate) {
1414 dev_warn(bridge->parent,
1419 return bridge->irq_generate(bridge, level, statid);
1435 struct vme_bridge *bridge;
1440 bridge = vdev->bridge;
1441 if (!bridge) {
1447 list_for_each_entry(lm, &bridge->lm_resources, list) {
1449 dev_err(bridge->parent,
1502 struct vme_bridge *bridge = find_bridge(resource);
1506 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1533 struct vme_bridge *bridge = find_bridge(resource);
1537 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1543 if (!bridge->lm_set) {
1544 dev_err(bridge->parent, "%s not supported\n", __func__);
1548 return bridge->lm_set(lm, lm_base, aspace, cycle);
1569 struct vme_bridge *bridge = find_bridge(resource);
1573 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1579 if (!bridge->lm_get) {
1580 dev_err(bridge->parent, "%s not supported\n", __func__);
1584 return bridge->lm_get(lm, lm_base, aspace, cycle);
1606 struct vme_bridge *bridge = find_bridge(resource);
1610 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1616 if (!bridge->lm_attach) {
1617 dev_err(bridge->parent, "%s not supported\n", __func__);
1621 return bridge->lm_attach(lm, monitor, callback, data);
1639 struct vme_bridge *bridge = find_bridge(resource);
1643 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1649 if (!bridge->lm_detach) {
1650 dev_err(bridge->parent, "%s not supported\n", __func__);
1654 return bridge->lm_detach(lm, monitor);
1672 struct vme_bridge *bridge = find_bridge(resource);
1676 dev_err(bridge->parent, "Not a Location Monitor resource\n");
1703 * Return: The slot ID on success, -EINVAL if VME bridge cannot be determined
1709 struct vme_bridge *bridge;
1711 bridge = vdev->bridge;
1712 if (!bridge) {
1717 if (!bridge->slot_get) {
1718 dev_warn(bridge->parent, "%s not supported\n", __func__);
1722 return bridge->slot_get(bridge);
1732 * Return: The bus number on success, -EINVAL if VME bridge cannot be
1737 struct vme_bridge *bridge;
1739 bridge = vdev->bridge;
1740 if (!bridge) {
1745 return bridge->num;
1756 /* Common bridge initialization */
1757 struct vme_bridge *vme_init_bridge(struct vme_bridge *bridge)
1759 INIT_LIST_HEAD(&bridge->vme_error_handlers);
1760 INIT_LIST_HEAD(&bridge->master_resources);
1761 INIT_LIST_HEAD(&bridge->slave_resources);
1762 INIT_LIST_HEAD(&bridge->dma_resources);
1763 INIT_LIST_HEAD(&bridge->lm_resources);
1764 mutex_init(&bridge->irq_mtx);
1766 return bridge;
1770 int vme_register_bridge(struct vme_bridge *bridge)
1779 bridge->num = i;
1780 INIT_LIST_HEAD(&bridge->devices);
1781 list_add_tail(&bridge->bus_list, &vme_bus_list);
1792 void vme_unregister_bridge(struct vme_bridge *bridge)
1798 vme_bus_numbers &= ~(1 << bridge->num);
1799 list_for_each_entry_safe(vdev, tmp, &bridge->devices, bridge_list) {
1804 list_del(&bridge->bus_list);
1812 struct vme_bridge *bridge,
1827 vdev->bridge = bridge;
1830 vdev->dev.parent = bridge->parent;
1832 dev_set_name(&vdev->dev, "%s.%u-%u", drv->name, bridge->num,
1841 list_add_tail(&vdev->bridge_list, &bridge->devices);
1861 struct vme_bridge *bridge;
1865 list_for_each_entry(bridge, &vme_bus_list, bus_list) {
1868 * and if the bridge is removed, it will have to go through
1870 * the bridge which in turn tries to acquire vme_buses_lock and
1873 err = __vme_register_driver_bus(drv, bridge, ndevs);