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