summaryrefslogtreecommitdiff
path: root/drivers/dahdi/voicebus/voicebus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dahdi/voicebus/voicebus.c')
-rw-r--r--drivers/dahdi/voicebus/voicebus.c29
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);