diff options
Diffstat (limited to 'drivers/dahdi/voicebus/voicebus.c')
-rw-r--r-- | drivers/dahdi/voicebus/voicebus.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c index b77ccdb..dfe59be 100644 --- a/drivers/dahdi/voicebus/voicebus.c +++ b/drivers/dahdi/voicebus/voicebus.c @@ -738,8 +738,8 @@ vb_reset_interface(struct voicebus *vb) } while ((reg & 0x00000001) && time_before(jiffies, timeout)); if (reg & 0x00000001) { - dev_warn(&vb->pdev->dev, "Hardware did not come out of reset " - "within 100ms!"); + dev_warn(&vb->pdev->dev, "Did not come out of reset " + "within 100ms\n"); return -EIO; } @@ -1801,14 +1801,6 @@ voicebus_init(struct pci_dev *pdev, u32 framesize, const char *board_name, vb->idle_vbb = dma_alloc_coherent(&vb->pdev->dev, vb->framesize, &vb->idle_vbb_dma_addr, GFP_KERNEL); - retval = vb_initialize_tx_descriptors(vb); - if (retval) - goto cleanup; - - retval = vb_initialize_rx_descriptors(vb); - if (retval) - goto cleanup; - /* ---------------------------------------------------------------- Configure the hardware interface. ---------------------------------------------------------------- */ @@ -1821,6 +1813,20 @@ voicebus_init(struct pci_dev *pdev, u32 framesize, const char *board_name, pci_set_master(pdev); vb_enable_io_access(vb); + if (vb_reset_interface(vb)) { + retval = -EIO; + dev_warn(&vb->pdev->dev, "Failed reset.\n"); + goto cleanup; + } + + retval = vb_initialize_tx_descriptors(vb); + if (retval) + goto cleanup; + + retval = vb_initialize_rx_descriptors(vb); + if (retval) + goto cleanup; + #if VOICEBUS_DEFERRED != TIMER retval = request_irq(pdev->irq, vb_isr, DAHDI_IRQ_SHARED, board_name, vb); @@ -1865,7 +1871,8 @@ cleanup: pci_disable_device(vb->pdev); kfree(vb); - WARN_ON(0 == retval); + if (0 == retval) + retval = -EIO; return retval; } EXPORT_SYMBOL(voicebus_init); |