diff options
Diffstat (limited to 'wcte12xp/base.c')
-rw-r--r-- | wcte12xp/base.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/wcte12xp/base.c b/wcte12xp/base.c index 26598be..1bd6c5b 100644 --- a/wcte12xp/base.c +++ b/wcte12xp/base.c @@ -1425,7 +1425,10 @@ static int t1_hardware_post_init(struct t1 *wc) t1_setleds(wc, wc->ledtestreg, 0); #ifdef VPM_SUPPORT - t1_vpm150m_init(wc); + if (t1_vpm150m_init(wc) < 0) { + module_printk("VPMADT032 module detected but there was an error during initialization. If you still wish to use this card, please disable echo cancellation using vpmsupport=0 as a module parameter or replace the echo cancellation module.\n"); + return -1; + } if (wc->vpm150m) { module_printk("VPM present and operational (Firmware version %x)\n", wc->vpm150m->version); wc->ctlreg |= 0x10; /* turn on vpm (RX audio from vpm module) */ @@ -1955,7 +1958,10 @@ static int __devinit te12xp_init_one(struct pci_dev *pdev, const struct pci_devi t1_enable_interrupts(wc); t1_start_dma(wc); - t1_hardware_post_init(wc); + if (t1_hardware_post_init(wc) < 0) { + module_printk("Hardware init failed. Refusing to register broken hardware interface.\n"); + return 0; + } t1_software_init(wc); module_printk("Found a %s\n", wc->variety); |