[svn-commits] kpfleming: linux/trunk r7038 - in /linux/trunk/drivers/dahdi: wct4xxp/ wctdm2...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Aug 19 11:40:18 CDT 2009


Author: kpfleming
Date: Wed Aug 19 11:40:13 2009
New Revision: 7038

URL: http://svn.asterisk.org/svn-view/dahdi?view=rev&rev=7038
Log:
Ensure that dahdi_scan correctly reports VPM presence.

The wct4xxp driver (for the dual/quad span T1/E1 cards) and the wcte12xp
driver (for the single span VoiceBus-based T1/E1 cards) did not properly
update the 'devicetype' field reported by dahdi_scan when a VPM was found
during the card startup process. As a result, dahdi_scan did not show that
a VPM was present on the card, even if it was.


Modified:
    linux/trunk/drivers/dahdi/wct4xxp/base.c
    linux/trunk/drivers/dahdi/wctdm24xxp/base.c
    linux/trunk/drivers/dahdi/wcte12xp/base.c

Modified: linux/trunk/drivers/dahdi/wct4xxp/base.c
URL: http://svn.asterisk.org/svn-view/dahdi/linux/trunk/drivers/dahdi/wct4xxp/base.c?view=diff&rev=7038&r1=7037&r2=7038
==============================================================================
--- linux/trunk/drivers/dahdi/wct4xxp/base.c (original)
+++ linux/trunk/drivers/dahdi/wct4xxp/base.c Wed Aug 19 11:40:13 2009
@@ -1581,6 +1581,24 @@
 	return 0;
 }
 
+static void set_span_devicetype(struct t4 *wc)
+{
+	int x;
+	struct t4_span *ts;
+
+	for (x = 0; x < wc->numspans; x++) {
+		ts = wc->tspans[x];
+		dahdi_copy_string(ts->span.devicetype, wc->variety, sizeof(ts->span.devicetype));
+		if (wc->vpm == T4_VPM_PRESENT) {
+			if (!wc->vpm450m)
+				strncat(ts->span.devicetype, " (VPM400M)", sizeof(ts->span.devicetype) - 1);
+			else
+				strncat(ts->span.devicetype, (wc->numspans > 2) ? " (VPMOCT128)" : " (VPMOCT064)",
+					sizeof(ts->span.devicetype) - 1);
+		}
+	}
+}
+
 /* The number of cards we have seen with each
    possible 'order' switch setting.
 */
@@ -1602,14 +1620,6 @@
 		snprintf(ts->span.desc, sizeof(ts->span.desc) - 1,
 			 "T%dXXP (PCI) Card %d Span %d", wc->numspans, wc->num, x+1);
 		ts->span.manufacturer = "Digium";
-		dahdi_copy_string(ts->span.devicetype, wc->variety, sizeof(ts->span.devicetype));
-		if (wc->vpm == T4_VPM_PRESENT) {
-			if (!wc->vpm450m)
-				strncat(ts->span.devicetype, " with VPM400M", sizeof(ts->span.devicetype) - 1);
-			else
-				strncat(ts->span.devicetype, (wc->numspans > 2) ? " with VPMOCT128" : " with VPMOCT064",
-					sizeof(ts->span.devicetype) - 1);
-		}
 		if (order_index[wc->order] == 1)
 			snprintf(ts->span.location, sizeof(ts->span.location) - 1, "Board ID Switch %d", wc->order);
 		else
@@ -1682,6 +1692,7 @@
 			}
 		}
 	}
+	set_span_devicetype(wc);
 }
 
 static void t4_serial_setup(struct t4 *wc, int unit)
@@ -2150,6 +2161,8 @@
 			t4_vpm450_init(wc);
 		wc->dmactrl |= wc->vpm;
 		t4_pci_out(wc, WC_DMACTRL, wc->dmactrl);
+		if (wc->vpm)
+			set_span_devicetype(wc);
 	}
 #endif
 	printk(KERN_INFO "Completed startup!\n");

Modified: linux/trunk/drivers/dahdi/wctdm24xxp/base.c
URL: http://svn.asterisk.org/svn-view/dahdi/linux/trunk/drivers/dahdi/wctdm24xxp/base.c?view=diff&rev=7038&r1=7037&r2=7038
==============================================================================
--- linux/trunk/drivers/dahdi/wctdm24xxp/base.c (original)
+++ linux/trunk/drivers/dahdi/wctdm24xxp/base.c Wed Aug 19 11:40:13 2009
@@ -3332,9 +3332,9 @@
 	}
 
 	if (wc->vpm100) {
-		strncat(wc->span.devicetype, " with VPM100M", sizeof(wc->span.devicetype) - 1);
+		strncat(wc->span.devicetype, " (VPM100M)", sizeof(wc->span.devicetype) - 1);
 	} else if (wc->vpmadt032) {
-		strncat(wc->span.devicetype, " with VPMADT032", sizeof(wc->span.devicetype) - 1);
+		strncat(wc->span.devicetype, " (VPMADT032)", sizeof(wc->span.devicetype) - 1);
 	}
 }
 

Modified: linux/trunk/drivers/dahdi/wcte12xp/base.c
URL: http://svn.asterisk.org/svn-view/dahdi/linux/trunk/drivers/dahdi/wcte12xp/base.c?view=diff&rev=7038&r1=7037&r2=7038
==============================================================================
--- linux/trunk/drivers/dahdi/wcte12xp/base.c (original)
+++ linux/trunk/drivers/dahdi/wcte12xp/base.c Wed Aug 19 11:40:13 2009
@@ -1169,6 +1169,16 @@
 	vpmadt032_echocan_free(wc->vpmadt032, chan, ec);
 }
 
+static void set_span_devicetype(struct t1 *wc)
+{
+	strncpy(wc->span.devicetype, wc->variety, sizeof(wc->span.devicetype) - 1);
+
+#if defined(VPM_SUPPORT)
+	if (wc->vpmadt032)
+		strncat(wc->span.devicetype, " (VPMADT032)", sizeof(wc->span.devicetype) - 1);
+#endif
+}
+
 static int t1_software_init(struct t1 *wc)
 {
 	int x;
@@ -1194,12 +1204,7 @@
 	sprintf(wc->span.name, "WCT1/%d", num);
 	snprintf(wc->span.desc, sizeof(wc->span.desc) - 1, "%s Card %d", wc->variety, num);
 	wc->span.manufacturer = "Digium";
-	strncpy(wc->span.devicetype, wc->variety, sizeof(wc->span.devicetype) - 1);
-
-#if defined(VPM_SUPPORT)
-	if (wc->vpmadt032)
-		strncat(wc->span.devicetype, " with VPMADT032", sizeof(wc->span.devicetype) - 1);
-#endif
+	set_span_devicetype(wc);
 
 	snprintf(wc->span.location, sizeof(wc->span.location) - 1,
 		"PCI Bus %02d Slot %02d", dev->bus->number, PCI_SLOT(dev->devfn) + 1);
@@ -1377,6 +1382,7 @@
 
 		config_vpmadt032(wc->vpmadt032);
 
+		set_span_devicetype(wc);
 		module_printk("VPM present and operational (Firmware version %x)\n", wc->vpmadt032->version);
 		wc->ctlreg |= 0x10; /* turn on vpm (RX audio from vpm module) */
 		if (vpmtsisupport) {




More information about the svn-commits mailing list