Lines Matching refs:tsi148_bridge
116 static u32 tsi148_MB_irqhandler(struct vme_bridge *tsi148_bridge, u32 stat) in tsi148_MB_irqhandler() argument
123 bridge = tsi148_bridge->driver_priv; in tsi148_MB_irqhandler()
128 dev_err(tsi148_bridge->parent, "VME Mailbox %d received" in tsi148_MB_irqhandler()
140 static u32 tsi148_PERR_irqhandler(struct vme_bridge *tsi148_bridge) in tsi148_PERR_irqhandler() argument
144 bridge = tsi148_bridge->driver_priv; in tsi148_PERR_irqhandler()
146 dev_err(tsi148_bridge->parent, "PCI Exception at address: 0x%08x:%08x, " in tsi148_PERR_irqhandler()
152 dev_err(tsi148_bridge->parent, "PCI-X attribute reg: %08x, PCI-X split " in tsi148_PERR_irqhandler()
165 static u32 tsi148_VERR_irqhandler(struct vme_bridge *tsi148_bridge) in tsi148_VERR_irqhandler() argument
173 bridge = tsi148_bridge->driver_priv; in tsi148_VERR_irqhandler()
184 dev_err(tsi148_bridge->parent, "VME Bus Exception Overflow " in tsi148_VERR_irqhandler()
189 vme_bus_error_handler(tsi148_bridge, error_addr, error_am); in tsi148_VERR_irqhandler()
191 dev_err(tsi148_bridge->parent, in tsi148_VERR_irqhandler()
214 static u32 tsi148_VIRQ_irqhandler(struct vme_bridge *tsi148_bridge, in tsi148_VIRQ_irqhandler() argument
220 bridge = tsi148_bridge->driver_priv; in tsi148_VIRQ_irqhandler()
231 vme_irq_handler(tsi148_bridge, i, vec); in tsi148_VIRQ_irqhandler()
247 struct vme_bridge *tsi148_bridge; in tsi148_irqhandler() local
250 tsi148_bridge = ptr; in tsi148_irqhandler()
252 bridge = tsi148_bridge->driver_priv; in tsi148_irqhandler()
277 serviced |= tsi148_MB_irqhandler(tsi148_bridge, stat); in tsi148_irqhandler()
281 serviced |= tsi148_PERR_irqhandler(tsi148_bridge); in tsi148_irqhandler()
285 serviced |= tsi148_VERR_irqhandler(tsi148_bridge); in tsi148_irqhandler()
296 serviced |= tsi148_VIRQ_irqhandler(tsi148_bridge, stat); in tsi148_irqhandler()
304 static int tsi148_irq_init(struct vme_bridge *tsi148_bridge) in tsi148_irq_init() argument
311 pdev = to_pci_dev(tsi148_bridge->parent); in tsi148_irq_init()
313 bridge = tsi148_bridge->driver_priv; in tsi148_irq_init()
318 driver_name, tsi148_bridge); in tsi148_irq_init()
320 dev_err(tsi148_bridge->parent, "Can't get assigned pci irq " in tsi148_irq_init()
365 static void tsi148_irq_exit(struct vme_bridge *tsi148_bridge, in tsi148_irq_exit() argument
368 struct tsi148_driver *bridge = tsi148_bridge->driver_priv; in tsi148_irq_exit()
378 free_irq(pdev->irq, tsi148_bridge); in tsi148_irq_exit()
399 static void tsi148_irq_set(struct vme_bridge *tsi148_bridge, int level, in tsi148_irq_set() argument
406 bridge = tsi148_bridge->driver_priv; in tsi148_irq_set()
419 pdev = to_pci_dev(tsi148_bridge->parent); in tsi148_irq_set()
437 static int tsi148_irq_generate(struct vme_bridge *tsi148_bridge, int level, in tsi148_irq_generate() argument
443 bridge = tsi148_bridge->driver_priv; in tsi148_irq_generate()
481 struct vme_bridge *tsi148_bridge; in tsi148_slave_set() local
484 tsi148_bridge = image->parent; in tsi148_slave_set()
485 bridge = tsi148_bridge->driver_priv; in tsi148_slave_set()
507 dev_err(tsi148_bridge->parent, "Invalid address space\n"); in tsi148_slave_set()
525 dev_err(tsi148_bridge->parent, "Invalid VME base alignment\n"); in tsi148_slave_set()
529 dev_err(tsi148_bridge->parent, "Invalid VME bound alignment\n"); in tsi148_slave_set()
533 dev_err(tsi148_bridge->parent, "Invalid PCI Offset " in tsi148_slave_set()
722 struct vme_bridge *tsi148_bridge; in tsi148_alloc_resource() local
724 tsi148_bridge = image->parent; in tsi148_alloc_resource()
726 pdev = to_pci_dev(tsi148_bridge->parent); in tsi148_alloc_resource()
755 sprintf((char *)image->bus_resource.name, "%s.%d", tsi148_bridge->name, in tsi148_alloc_resource()
766 dev_err(tsi148_bridge->parent, "Failed to allocate mem " in tsi148_alloc_resource()
776 dev_err(tsi148_bridge->parent, "Failed to remap resource\n"); in tsi148_alloc_resource()
818 struct vme_bridge *tsi148_bridge; in tsi148_master_set() local
823 tsi148_bridge = image->parent; in tsi148_master_set()
825 bridge = tsi148_bridge->driver_priv; in tsi148_master_set()
827 pdev = to_pci_dev(tsi148_bridge->parent); in tsi148_master_set()
831 dev_err(tsi148_bridge->parent, "Invalid VME Window " in tsi148_master_set()
838 dev_err(tsi148_bridge->parent, "Size must be non-zero for " in tsi148_master_set()
853 dev_err(tsi148_bridge->parent, "Unable to allocate memory for " in tsi148_master_set()
882 dev_err(tsi148_bridge->parent, "Invalid PCI base alignment\n"); in tsi148_master_set()
888 dev_err(tsi148_bridge->parent, "Invalid PCI bound alignment\n"); in tsi148_master_set()
894 dev_err(tsi148_bridge->parent, "Invalid VME Offset " in tsi148_master_set()
941 dev_warn(tsi148_bridge->parent, "Currently not setting " in tsi148_master_set()
958 dev_err(tsi148_bridge->parent, "Invalid data width\n"); in tsi148_master_set()
995 dev_err(tsi148_bridge->parent, "Invalid address space\n"); in tsi148_master_set()
1182 struct vme_bridge *tsi148_bridge; in tsi148_master_read() local
1187 tsi148_bridge = image->parent; in tsi148_master_read()
1194 handler = vme_register_error_handler(tsi148_bridge, aspace, in tsi148_master_read()
1272 struct vme_bridge *tsi148_bridge; in tsi148_master_write() local
1275 tsi148_bridge = image->parent; in tsi148_master_write()
1277 bridge = tsi148_bridge->driver_priv; in tsi148_master_write()
1284 handler = vme_register_error_handler(tsi148_bridge, aspace, in tsi148_master_write()
1345 dev_warn(tsi148_bridge->parent, in tsi148_master_write()
1633 struct vme_bridge *tsi148_bridge; in tsi148_dma_list_add() local
1635 tsi148_bridge = list->parent->parent; in tsi148_dma_list_add()
1646 dev_err(tsi148_bridge->parent, "Descriptor not aligned to 8 " in tsi148_dma_list_add()
1695 tsi148_bridge->parent, &entry->descriptor.dsat, in tsi148_dma_list_add()
1701 dev_err(tsi148_bridge->parent, "Invalid source type\n"); in tsi148_dma_list_add()
1732 tsi148_bridge->parent, &entry->descriptor.ddat, in tsi148_dma_list_add()
1738 dev_err(tsi148_bridge->parent, "Invalid destination type\n"); in tsi148_dma_list_add()
1750 entry->dma_handle = dma_map_single(tsi148_bridge->parent, in tsi148_dma_list_add()
1754 if (dma_mapping_error(tsi148_bridge->parent, entry->dma_handle)) { in tsi148_dma_list_add()
1755 dev_err(tsi148_bridge->parent, "DMA mapping error\n"); in tsi148_dma_list_add()
1785 static int tsi148_dma_busy(struct vme_bridge *tsi148_bridge, int channel) in tsi148_dma_busy() argument
1790 bridge = tsi148_bridge->driver_priv; in tsi148_dma_busy()
1814 struct vme_bridge *tsi148_bridge; in tsi148_dma_list_exec() local
1819 tsi148_bridge = ctrlr->parent; in tsi148_dma_list_exec()
1821 bridge = tsi148_bridge->driver_priv; in tsi148_dma_list_exec()
1881 dev_err(tsi148_bridge->parent, "DMA Error. DSTA=%08X\n", val); in tsi148_dma_list_exec()
1904 struct vme_bridge *tsi148_bridge = list->parent->parent; in tsi148_dma_list_empty() local
1911 dma_unmap_single(tsi148_bridge->parent, entry->dma_handle, in tsi148_dma_list_empty()
1931 struct vme_bridge *tsi148_bridge; in tsi148_lm_set() local
1934 tsi148_bridge = lm->parent; in tsi148_lm_set()
1936 bridge = tsi148_bridge->driver_priv; in tsi148_lm_set()
1944 dev_err(tsi148_bridge->parent, "Location monitor " in tsi148_lm_set()
1965 dev_err(tsi148_bridge->parent, "Invalid address space\n"); in tsi148_lm_set()
2048 struct vme_bridge *tsi148_bridge; in tsi148_lm_attach() local
2051 tsi148_bridge = lm->parent; in tsi148_lm_attach()
2053 bridge = tsi148_bridge->driver_priv; in tsi148_lm_attach()
2061 dev_err(tsi148_bridge->parent, "Location monitor not properly " in tsi148_lm_attach()
2069 dev_err(tsi148_bridge->parent, "Existing callback attached\n"); in tsi148_lm_attach()
2141 static int tsi148_slot_get(struct vme_bridge *tsi148_bridge) in tsi148_slot_get() argument
2146 bridge = tsi148_bridge->driver_priv; in tsi148_slot_get()
2191 static int tsi148_crcsr_init(struct vme_bridge *tsi148_bridge, in tsi148_crcsr_init() argument
2199 bridge = tsi148_bridge->driver_priv; in tsi148_crcsr_init()
2205 dev_err(tsi148_bridge->parent, "Failed to allocate memory for " in tsi148_crcsr_init()
2219 vstat = tsi148_slot_get(tsi148_bridge); in tsi148_crcsr_init()
2223 dev_info(tsi148_bridge->parent, "Setting CR/CSR offset\n"); in tsi148_crcsr_init()
2226 dev_info(tsi148_bridge->parent, "CR/CSR Offset: %d\n", cbar); in tsi148_crcsr_init()
2230 dev_info(tsi148_bridge->parent, "CR/CSR already enabled\n"); in tsi148_crcsr_init()
2232 dev_info(tsi148_bridge->parent, "Enabling CR/CSR space\n"); in tsi148_crcsr_init()
2246 dev_err(tsi148_bridge->parent, "Configuring flush image" in tsi148_crcsr_init()
2254 static void tsi148_crcsr_exit(struct vme_bridge *tsi148_bridge, in tsi148_crcsr_exit() argument
2260 bridge = tsi148_bridge->driver_priv; in tsi148_crcsr_exit()
2280 struct vme_bridge *tsi148_bridge; in tsi148_probe() local
2290 tsi148_bridge = kzalloc(sizeof(*tsi148_bridge), GFP_KERNEL); in tsi148_probe()
2291 if (!tsi148_bridge) { in tsi148_probe()
2295 vme_init_bridge(tsi148_bridge); in tsi148_probe()
2303 tsi148_bridge->driver_priv = tsi148_device; in tsi148_probe()
2343 tsi148_bridge->parent = &pdev->dev; in tsi148_probe()
2344 strcpy(tsi148_bridge->name, driver_name); in tsi148_probe()
2347 retval = tsi148_irq_init(tsi148_bridge); in tsi148_probe()
2369 tsi148_device->flush_image->parent = tsi148_bridge; in tsi148_probe()
2385 master_image->parent = tsi148_bridge; in tsi148_probe()
2401 &tsi148_bridge->master_resources); in tsi148_probe()
2411 slave_image->parent = tsi148_bridge; in tsi148_probe()
2422 &tsi148_bridge->slave_resources); in tsi148_probe()
2432 dma_ctrlr->parent = tsi148_bridge; in tsi148_probe()
2443 &tsi148_bridge->dma_resources); in tsi148_probe()
2452 lm->parent = tsi148_bridge; in tsi148_probe()
2457 list_add_tail(&lm->list, &tsi148_bridge->lm_resources); in tsi148_probe()
2459 tsi148_bridge->slave_get = tsi148_slave_get; in tsi148_probe()
2460 tsi148_bridge->slave_set = tsi148_slave_set; in tsi148_probe()
2461 tsi148_bridge->master_get = tsi148_master_get; in tsi148_probe()
2462 tsi148_bridge->master_set = tsi148_master_set; in tsi148_probe()
2463 tsi148_bridge->master_read = tsi148_master_read; in tsi148_probe()
2464 tsi148_bridge->master_write = tsi148_master_write; in tsi148_probe()
2465 tsi148_bridge->master_rmw = tsi148_master_rmw; in tsi148_probe()
2466 tsi148_bridge->dma_list_add = tsi148_dma_list_add; in tsi148_probe()
2467 tsi148_bridge->dma_list_exec = tsi148_dma_list_exec; in tsi148_probe()
2468 tsi148_bridge->dma_list_empty = tsi148_dma_list_empty; in tsi148_probe()
2469 tsi148_bridge->irq_set = tsi148_irq_set; in tsi148_probe()
2470 tsi148_bridge->irq_generate = tsi148_irq_generate; in tsi148_probe()
2471 tsi148_bridge->lm_set = tsi148_lm_set; in tsi148_probe()
2472 tsi148_bridge->lm_get = tsi148_lm_get; in tsi148_probe()
2473 tsi148_bridge->lm_attach = tsi148_lm_attach; in tsi148_probe()
2474 tsi148_bridge->lm_detach = tsi148_lm_detach; in tsi148_probe()
2475 tsi148_bridge->slot_get = tsi148_slot_get; in tsi148_probe()
2476 tsi148_bridge->alloc_consistent = tsi148_alloc_consistent; in tsi148_probe()
2477 tsi148_bridge->free_consistent = tsi148_free_consistent; in tsi148_probe()
2492 retval = tsi148_crcsr_init(tsi148_bridge, pdev); in tsi148_probe()
2498 retval = vme_register_bridge(tsi148_bridge); in tsi148_probe()
2504 pci_set_drvdata(pdev, tsi148_bridge); in tsi148_probe()
2515 tsi148_crcsr_exit(tsi148_bridge, pdev); in tsi148_probe()
2519 list_for_each_safe(pos, n, &tsi148_bridge->lm_resources) { in tsi148_probe()
2526 list_for_each_safe(pos, n, &tsi148_bridge->dma_resources) { in tsi148_probe()
2533 list_for_each_safe(pos, n, &tsi148_bridge->slave_resources) { in tsi148_probe()
2540 list_for_each_safe(pos, n, &tsi148_bridge->master_resources) { in tsi148_probe()
2547 tsi148_irq_exit(tsi148_bridge, pdev); in tsi148_probe()
2558 kfree(tsi148_bridge); in tsi148_probe()
2573 struct vme_bridge *tsi148_bridge = pci_get_drvdata(pdev); in tsi148_remove() local
2575 bridge = tsi148_bridge->driver_priv; in tsi148_remove()
2619 tsi148_irq_exit(tsi148_bridge, pdev); in tsi148_remove()
2621 vme_unregister_bridge(tsi148_bridge); in tsi148_remove()
2623 tsi148_crcsr_exit(tsi148_bridge, pdev); in tsi148_remove()
2626 list_for_each_safe(pos, tmplist, &tsi148_bridge->dma_resources) { in tsi148_remove()
2633 list_for_each_safe(pos, tmplist, &tsi148_bridge->slave_resources) { in tsi148_remove()
2640 list_for_each_safe(pos, tmplist, &tsi148_bridge->master_resources) { in tsi148_remove()
2653 kfree(tsi148_bridge->driver_priv); in tsi148_remove()
2655 kfree(tsi148_bridge); in tsi148_remove()