[svn-commits] sruffell: linux/trunk r9720 - /linux/trunk/drivers/dahdi/wctdm24xxp/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jan 31 09:53:31 CST 2011


Author: sruffell
Date: Mon Jan 31 09:53:26 2011
New Revision: 9720

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=9720
Log:
wctdm24xxp: Remove code for unsupported modules.

The VPM100 and S100M modules are no longer supported. Analog cards supported
by the wctdm24xxp are still compatible with the S110 and VPMADT032 modules.
DAHDI-302

Signed-off-by: Shaun Ruffell <sruffell at digium.com>

Modified:
    linux/trunk/drivers/dahdi/wctdm24xxp/base.c
    linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h

Modified: linux/trunk/drivers/dahdi/wctdm24xxp/base.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/wctdm24xxp/base.c?view=diff&rev=9720&r1=9719&r2=9720
==============================================================================
--- linux/trunk/drivers/dahdi/wctdm24xxp/base.c (original)
+++ linux/trunk/drivers/dahdi/wctdm24xxp/base.c Mon Jan 31 09:53:26 2011
@@ -160,21 +160,7 @@
 {43,66,"LOOP_CLOSE_TRES_LOW",0x1000},
 };
 
-#ifdef FANCY_ECHOCAN
-static char ectab[] = {
-0, 0, 0, 1, 2, 3, 4, 6, 8, 9, 11, 13, 16, 18, 20, 22, 24, 25, 27, 28, 29, 30, 31, 31, 32, 
-32, 32, 32, 32, 32, 32, 32, 32, 32, 32 ,32 ,32, 32,
-32, 32, 32, 32, 32, 32, 32, 32, 32, 32 ,32 ,32, 32,
-32, 32, 32, 32, 32, 32, 32, 32, 32, 32 ,32 ,32, 32,
-31, 31, 30, 29, 28, 27, 25, 23, 22, 20, 18, 16, 13, 11, 9, 8, 6, 4, 3, 2, 1, 0, 0, 
-};
-static int ectrans[4] = { 0, 1, 3, 2 };
-#define EC_SIZE (sizeof(ectab))
-#define EC_SIZE_Q (sizeof(ectab) / 4)
-#endif
-
 /* names of HWEC modules */
-static const char *vpm100m_name = "VPM100M";
 static const char *vpmadt032_name = "VPMADT032";
 static const char *noec_name = "NONE";
 
@@ -598,12 +584,6 @@
 	unsigned int curcmd=0;
 	int x;
 	int subaddr = card & 0x3;
-#ifdef FANCY_ECHOCAN
-	int ecval;
-	ecval = wc->echocanpos;
-	ecval += EC_SIZE_Q * ectrans[(card & 0x3)];
-	ecval = ecval % EC_SIZE;
-#endif
 
 	/* QRV and BRI modules only use commands relating to the first channel */
 	if ((card & 0x03) && (wc->modtype[card] ==  MOD_TYPE_QRV)) {
@@ -638,16 +618,6 @@
 			curcmd = 0x101010;
 		else if (wc->modtype[card] == MOD_TYPE_QRV)
 			curcmd = CMD_RD(3);
-		else if (wc->modtype[card] == MOD_TYPE_VPM) {
-#ifdef FANCY_ECHOCAN
-			if (wc->blinktimer >= 0xf) {
-				curcmd = CMD_WR(0x1ab, 0x0f);
-			} else if (wc->blinktimer == (ectab[ecval] >> 1)) {
-				curcmd = CMD_WR(0x1ab, 0x00);
-			} else
-#endif
-			curcmd = CMD_RD(0x1a0);
-		}
 	}
 
 	if (wc->modtype[card] == MOD_TYPE_FXS) {
@@ -688,13 +658,7 @@
 			writechunk[CMD_BYTE(card, 0, 0)] = 0x10;
 		writechunk[CMD_BYTE(card, 1, 0)] = (curcmd >> 8) & 0xff;
 		writechunk[CMD_BYTE(card, 2, 0)] = curcmd & 0xff;
-	} else if (wc->modtype[card] == MOD_TYPE_VPM) {
-		if (curcmd & __CMD_WR)
-			writechunk[CMD_BYTE(card, 0, wc->altcs[card])] = ((card & 0x3) << 4) | 0xc | ((curcmd >> 16) & 0x1);
-		else
-			writechunk[CMD_BYTE(card, 0, wc->altcs[card])] = ((card & 0x3) << 4) | 0xa | ((curcmd >> 16) & 0x1);
-		writechunk[CMD_BYTE(card, 1, wc->altcs[card])] = (curcmd >> 8) & 0xff;
-		writechunk[CMD_BYTE(card, 2, wc->altcs[card])] = curcmd & 0xff;
+
 	} else if (wc->modtype[card] == MOD_TYPE_QRV) {
  
 		writechunk[CMD_BYTE(card, 0, wc->altcs[card])] = 0x00;
@@ -830,10 +794,6 @@
 			wc->cmdq[card & 0xfc].cmds[USER_COMMANDS + 0] = CMD_RD(3);	/* COR/CTCSS state */
 		} else if (wc->modtype[card] == MOD_TYPE_BRI) {
 			wc->cmdq[card].cmds[USER_COMMANDS + 0] = wctdm_bri_checkisr(wc, card, 0);
-#ifdef VPM_SUPPORT
-		} else if (wc->modtype[card] == MOD_TYPE_VPM) {
-			wc->cmdq[card].cmds[USER_COMMANDS + 0] = CMD_RD(0xb9); /* DTMF interrupt */
-#endif
 		}
 	}
 	if (!wc->cmdq[card].cmds[USER_COMMANDS + 1]) {
@@ -849,10 +809,6 @@
 			wc->cmdq[card & 0xfc].cmds[USER_COMMANDS + 1] = CMD_RD(3);	/* Battery */
 		} else if (wc->modtype[card] == MOD_TYPE_BRI) {
 			wc->cmdq[card].cmds[USER_COMMANDS + 1] = wctdm_bri_checkisr(wc, card, 1);
-#ifdef VPM_SUPPORT
-		} else if (wc->modtype[card] == MOD_TYPE_VPM) {
-			wc->cmdq[card].cmds[USER_COMMANDS + 1] = CMD_RD(0xbd); /* DTMF interrupt */
-#endif
 		}
 	}
 }
@@ -947,36 +903,19 @@
 			if (y < wc->mods_per_board)
 				cmd_dequeue(wc, writechunk, y, x);
 		}
-		if (!x)
-			wc->blinktimer++;
-		if (wc->vpm100) {
-			for (y = NUM_MODULES; y < NUM_MODULES + NUM_EC; y++) {
-				if (!x)
-					cmd_checkisr(wc, y);
-				cmd_dequeue(wc, writechunk, y, x);
-			}
-#ifdef FANCY_ECHOCAN
-			if (wc->vpm100 && wc->blinktimer >= 0xf) {
-				wc->blinktimer = -1;
-				wc->echocanpos++;
-			}
-#endif			
-		} else if (wc->vpmadt032) {
+
+		if (wc->vpmadt032)
 			cmd_dequeue_vpmadt032(wc, writechunk);
-		}
 
 		if (x < DAHDI_CHUNKSIZE - 1) {
 			writechunk[EFRAME_SIZE] = wc->ctlreg;
 			writechunk[EFRAME_SIZE + 1] = wc->txident++;
 
-			if ((wc->desc->ports == 4) && ((wc->ctlreg & 0x10) || (wc->modtype[NUM_MODULES] == MOD_TYPE_NONE))) {
+			if ((wc->desc->ports == 4) && ((wc->ctlreg & 0x10))) {
 				writechunk[EFRAME_SIZE + 2] = 0;
-				for (y = 0; y < 4; y++) {
-					if (wc->modtype[y] == MOD_TYPE_NONE)
-						writechunk[EFRAME_SIZE + 2] |= (1 << y);
-				}
-			} else
-				writechunk[EFRAME_SIZE + 2] = 0xf;
+				for (y = 0; y < 4; y++)
+					writechunk[EFRAME_SIZE + 2] |= (1 << y);
+			}
 		}
 		writechunk += (EFRAME_SIZE + EFRAME_GAP);
 	}
@@ -1181,10 +1120,8 @@
 		for (y = 0; y < wc->avchannels; y++) {
 			cmd_decipher(wc, readchunk, y);
 		}
-		if (wc->vpm100) {
-			for (y = NUM_MODULES; y < NUM_MODULES + NUM_EC; y++)
-				cmd_decipher(wc, readchunk, y);
-		} else if (wc->vpmadt032)
+
+		if (wc->vpmadt032)
 			cmd_decipher_vpmadt032(wc, readchunk);
 
 		readchunk += (EFRAME_SIZE + EFRAME_GAP);
@@ -1973,9 +1910,7 @@
 static const char *wctdm_echocan_name(const struct dahdi_chan *chan)
 {
 	struct wctdm *wc = chan->pvt;
-	if (wc->vpm100)
-		return vpm100m_name;
-	else if (wc->vpmadt032)
+	if (wc->vpmadt032)
 		return vpmadt032_name;
 	return noec_name;
 }
@@ -1989,53 +1924,28 @@
 	struct wctdm_chan *wchan = container_of(chan, struct wctdm_chan, chan);
 	const struct dahdi_echocan_ops *ops;
 	const struct dahdi_echocan_features *features;
+	enum adt_companding comp;
+
 
 #ifdef VPM_SUPPORT
 	if (!vpmsupport)
 		return -ENODEV;
 #endif
-	if (!wc->vpm100 && !wc->vpmadt032)
+	if (!wc->vpmadt032)
 		return -ENODEV;
 
 	ops = &vpm_ec_ops;
 	features = &vpm_ec_features;
-
-	if (wc->vpm100 && (ecp->param_count > 0)) {
-		dev_warn(&wc->vb.pdev->dev, "%s echo canceller does not "
-			 "support parameters; failing request\n",
-			 chan->ec_factory->get_name(chan));
-		return -EINVAL;
-	}
 
 	*ec = &wchan->ec;
 	(*ec)->ops = ops;
 	(*ec)->features = *features;
 
-	if (wc->vpm100) {
-		int channel;
-		int unit;
-
-		channel = wchan->timeslot;
-		unit = wchan->timeslot & 0x3;
-		if (wc->vpm100 < 2)
-			channel >>= 2;
-	
-		if (debug & DEBUG_ECHOCAN)
-			dev_info(&wc->vb.pdev->dev, "echocan: Unit is %d, Channel is %d length %d\n", unit, channel, ecp->tap_length);
-
-		wctdm_vpm_out(wc, unit, channel, 0x3e);
-		return 0;
-	} else if (wc->vpmadt032) {
-		enum adt_companding comp;
-
-		comp = (DAHDI_LAW_ALAW == chan->span->deflaw) ?
-					ADT_COMP_ALAW : ADT_COMP_ULAW;
-
-		return vpmadt032_echocan_create(wc->vpmadt032,
-						wchan->timeslot, comp, ecp, p);
-	} else {
-		return -ENODEV;
-	}
+	comp = (DAHDI_LAW_ALAW == chan->span->deflaw) ?
+				ADT_COMP_ALAW : ADT_COMP_ULAW;
+
+	return vpmadt032_echocan_create(wc->vpmadt032, wchan->timeslot,
+					comp, ecp, p);
 }
 
 static void echocan_free(struct dahdi_chan *chan, struct dahdi_echocan_state *ec)
@@ -2043,21 +1953,8 @@
 	struct wctdm *wc = chan->pvt;
 	struct wctdm_chan *wchan = container_of(chan, struct wctdm_chan, chan);
 
-	memset(ec, 0, sizeof(*ec));
-	if (wc->vpm100) {
-		int channel;
-		int unit;
-
-		channel = wchan->timeslot;
-		unit = wchan->timeslot & 0x3;
-		if (wc->vpm100 < 2)
-			channel >>= 2;
-
-		if (debug & DEBUG_ECHOCAN)
-			dev_info(&wc->vb.pdev->dev, "echocan: Unit is %d, Channel is %d length 0\n",
-			       unit, channel);
-		wctdm_vpm_out(wc, unit, channel, 0x01);
-	} else if (wc->vpmadt032) {
+	if (wc->vpmadt032) {
+		memset(ec, 0, sizeof(*ec));
 		vpmadt032_echocan_free(wc->vpmadt032, wchan->timeslot, ec);
 	}
 }
@@ -2152,10 +2049,6 @@
 			}
 		}
 	}
-	if (wc->vpm100 > 0) {
-		for (x = NUM_MODULES; x < NUM_MODULES+NUM_EC; x++)
-			wctdm_vpm_check(wc, x);
-	}
 }
 
 static void handle_receive(struct voicebus *vb, struct list_head *buffers)
@@ -2262,7 +2155,7 @@
 
 	/* let's be really sure this is an FXS before we continue */
 	reg1 = wctdm_getreg(wc, card, 1);
-	if ((0x80 != (blah & 0xf0)) || ((0x88 != reg1) && (0x08 != reg1))) {
+	if ((0x80 != (blah & 0xf0)) || (0x88 != reg1)) {
 		if (debug & DEBUG_CARD)
 			dev_info(&wc->vb.pdev->dev, "DEBUG: not FXS b/c reg0=%x or reg1 != 0x88 (%x).\n", blah, reg1);
 		return -1;
@@ -3900,149 +3793,9 @@
 	for (x = 0; x < MAX_SPANS; x++) {
 		if (!wc->spans[x])
 			continue;
-		if (wc->vpm100)
-			strncat(wc->spans[x]->span.devicetype, " (VPM100M)", sizeof(wc->spans[x]->span.devicetype) - 1);
-		else if (wc->vpmadt032)
+		if (wc->vpmadt032)
 			strncat(wc->spans[x]->span.devicetype, " (VPMADT032)", sizeof(wc->spans[x]->span.devicetype) - 1);
 	}
-}
-
-static int wctdm_vpm_init(struct wctdm *wc)
-{
-	unsigned char reg;
-	unsigned int mask;
-	unsigned int ver;
-	unsigned char vpmver=0;
-	unsigned int i, x, y;
-
-	for (x=0;x<NUM_EC;x++) {
-		ver = wctdm_vpm_in(wc, x, 0x1a0); /* revision */
-		if (debug & DEBUG_ECHOCAN)
-			dev_info(&wc->vb.pdev->dev, "VPM100: Chip %d: ver %02x\n", x, ver);
-		if (ver != 0x33) {
-			if (x)
-				dev_info(&wc->vb.pdev->dev,
-						"VPM100: Inoperable\n");
-			wc->vpm100 = 0;
-			return -ENODEV;
-		}	
-
-		if (!x) {
-			vpmver = wctdm_vpm_in(wc, x, 0x1a6) & 0xf;
-			dev_info(&wc->vb.pdev->dev, "VPM Revision: %02x\n", vpmver);
-		}
-
-
-		/* Setup GPIO's */
-		for (y=0;y<4;y++) {
-			wctdm_vpm_out(wc, x, 0x1a8 + y, 0x00); /* GPIO out */
-			if (y == 3)
-				wctdm_vpm_out(wc, x, 0x1ac + y, 0x00); /* GPIO dir */
-			else
-				wctdm_vpm_out(wc, x, 0x1ac + y, 0xff); /* GPIO dir */
-			wctdm_vpm_out(wc, x, 0x1b0 + y, 0x00); /* GPIO sel */
-		}
-
-		/* Setup TDM path - sets fsync and tdm_clk as inputs */
-		reg = wctdm_vpm_in(wc, x, 0x1a3); /* misc_con */
-		wctdm_vpm_out(wc, x, 0x1a3, reg & ~2);
-
-		/* Setup Echo length (256 taps) */
-		wctdm_vpm_out(wc, x, 0x022, 0);
-
-		/* Setup timeslots */
-		if (vpmver == 0x01) {
-			wctdm_vpm_out(wc, x, 0x02f, 0x00); 
-			wctdm_vpm_out(wc, x, 0x023, 0xff);
-			mask = 0x11111111 << x;
-		} else {
-			wctdm_vpm_out(wc, x, 0x02f, 0x20  | (x << 3)); 
-			wctdm_vpm_out(wc, x, 0x023, 0x3f);
-			mask = 0x0000003f;
-		}
-
-		/* Setup the tdm channel masks for all chips*/
-		for (i = 0; i < 4; i++)
-			wctdm_vpm_out(wc, x, 0x33 - i, (mask >> (i << 3)) & 0xff);
-
-		/* Setup convergence rate */
-		reg = wctdm_vpm_in(wc,x,0x20);
-		reg &= 0xE0;
-
-		if (wc->companding == DAHDI_LAW_DEFAULT) {
-			if (wc->digi_mods)
-				/* If we have a BRI module, Auto set to alaw */
-				reg |= 0x01;
-			else
-				/* Auto set to ulaw */
-				reg &= ~0x01;
-		} else if (wc->companding == DAHDI_LAW_ALAW) {
-			/* Force everything to alaw */
-			reg |= 0x01;
-		} else {
-			/* Auto set to ulaw */
-			reg &= ~0x01;
-		}
-
-		wctdm_vpm_out(wc,x,0x20,(reg | 0x20));
-
-		/* Initialize echo cans */
-		for (i = 0 ; i < MAX_TDM_CHAN; i++) {
-			if (mask & (0x00000001 << i))
-				wctdm_vpm_out(wc,x,i,0x00);
-		}
-
-		msleep(30);
-
-		/* Put in bypass mode */
-		for (i = 0 ; i < MAX_TDM_CHAN ; i++) {
-			if (mask & (0x00000001 << i)) {
-				wctdm_vpm_out(wc,x,i,0x01);
-			}
-		}
-
-		/* Enable bypass */
-		for (i = 0 ; i < MAX_TDM_CHAN ; i++) {
-			if (mask & (0x00000001 << i))
-				wctdm_vpm_out(wc,x,0x78 + i,0x01);
-		}
-      
-		/* Enable DTMF detectors (always DTMF detect all spans) */
-		for (i = 0; i < 6; i++) {
-			if (vpmver == 0x01) 
-				wctdm_vpm_out(wc, x, 0x98 + i, 0x40 | (i << 2) | x);
-			else
-				wctdm_vpm_out(wc, x, 0x98 + i, 0x40 | i);
-		}
-
-		for (i = 0xB8; i < 0xC0; i++)
-			wctdm_vpm_out(wc, x, i, 0xFF);
-		for (i = 0xC0; i < 0xC4; i++)
-			wctdm_vpm_out(wc, x, i, 0xff);
-
-	} 
-	
-	/* TODO: What do the different values for vpm100 mean? */
-	if (vpmver == 0x01) {
-		wc->vpm100 = 2;
-	} else {
-		wc->vpm100 = 1;
-	}
-
-	dev_info(&wc->vb.pdev->dev, "Enabling VPM100 gain adjustments on any FXO ports found\n");
-	for (i = 0; i < wc->desc->ports; i++) {
-		if (wc->modtype[i] == MOD_TYPE_FXO) {
-			/* Apply negative Tx gain of 4.5db to DAA */
-			wctdm_setreg(wc, i, 38, 0x14);	/* 4db */
-			wctdm_setreg(wc, i, 40, 0x15);	/* 0.5db */
-
-			/* Apply negative Rx gain of 4.5db to DAA */
-			wctdm_setreg(wc, i, 39, 0x14);	/* 4db */
-			wctdm_setreg(wc, i, 41, 0x15);	/* 0.5db */
-		}
-	}
-
-	return 0;
 }
 
 static void get_default_portconfig(GpakPortConfig_t *portconfig)
@@ -4118,17 +3871,10 @@
 
 static int wctdm_initialize_vpmadt032(struct wctdm *wc)
 {
-	int x;
 	int res;
-	unsigned long flags;
 	struct vpmadt032_options options;
 
 	GpakPortConfig_t portconfig;
-
-	spin_lock_irqsave(&wc->reglock, flags);
-	for (x = NUM_MODULES; x < NUM_MODULES + NUM_EC; x++)
-		wc->modtype[x] = MOD_TYPE_NONE;
-	spin_unlock_irqrestore(&wc->reglock, flags);
 
 	options.debug = debug;
 	options.vpmnlptype = vpmnlptype;
@@ -4164,22 +3910,18 @@
 	return 0;
 }
 
-static int wctdm_initialize_vpm(struct wctdm *wc)
+static void wctdm_initialize_vpm(struct wctdm *wc)
 {
 	int res = 0;
 
 	if (!vpmsupport) {
 		dev_notice(&wc->vb.pdev->dev, "VPM: Support Disabled\n");
-	} else if (!wctdm_vpm_init(wc)) {
-		dev_info(&wc->vb.pdev->dev, "VPM: Present and operational (Rev %c)\n",
-		       'A' + wc->vpm100 - 1);
+		return;
+	}
+
+	res = wctdm_initialize_vpmadt032(wc);
+	if (!res)
 		wc->ctlreg |= 0x10;
-	} else {
-		res = wctdm_initialize_vpmadt032(wc);
-		if (!res)
-			wc->ctlreg |= 0x10;
-	}
-	return res;
 }
 
 static int wctdm_identify_modules(struct wctdm *wc)
@@ -4219,10 +3961,6 @@
 
 	for (x = 0; x < wc->mods_per_board; x++)
 		wc->modtype[x] = MOD_TYPE_FXSINIT;
-
-	wc->vpm100 = -1;
-	for (x = wc->mods_per_board; x < wc->mods_per_board+NUM_EC; x++)
-		wc->modtype[x] = MOD_TYPE_VPM;
 
 	spin_unlock_irqrestore(&wc->reglock, flags);
 

Modified: linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h?view=diff&rev=9720&r1=9719&r2=9720
==============================================================================
--- linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h (original)
+++ linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h Mon Jan 31 09:53:26 2011
@@ -63,9 +63,7 @@
 #define MOD_TYPE_FXS		1
 #define MOD_TYPE_FXO		2
 #define MOD_TYPE_FXSINIT	3
-#define MOD_TYPE_VPM		4
 #define MOD_TYPE_QRV		5
-#define MOD_TYPE_VPM150M	6
 #define MOD_TYPE_BRI		7
 
 #define MINPEGTIME	10 * 8		/* 30 ms peak to peak gets us no more than 100 Hz */
@@ -90,9 +88,7 @@
 			+ ((card) >> 2) + (altcs) + ((altcs) ? -21 : 0))
 #endif
 #define NUM_MODULES		24
-#define NUM_EC			4
 #define NUM_SLOTS		6
-#define MAX_TDM_CHAN		31
 #define MAX_SPANS		9
 
 #define NUM_CAL_REGS		12
@@ -108,17 +104,7 @@
 #define VPM150M_HPI_DATA	0x03
 
 #define VPM_SUPPORT
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 #define VPM150M_SUPPORT
-#endif
-
-#ifdef VPM_SUPPORT
-
-/* Define to get more attention-grabbing but slightly more CPU using echocan status */
-#define FANCY_ECHOCAN
-
-#endif
 
 #ifdef VPM150M_SUPPORT
 #include "voicebus/GpakCust.h"
@@ -185,7 +171,7 @@
 	int avchannels;				/* active "voice" (voice, B and D) channels */
 	int modmap;				/* Bit-map of present cards (1=present) */
 
-	int altcs[NUM_MODULES + NUM_EC];
+	int altcs[NUM_MODULES];
 
 /* FIXME: why are all of these QRV-only members part of the main card structure? */
 	char qrvhook[NUM_MODULES];
@@ -252,18 +238,13 @@
 		struct b400m *bri;
 	} mods[NUM_MODULES];
 
-	struct cmdq cmdq[NUM_MODULES + NUM_EC];
-	int modtype[NUM_MODULES + NUM_EC];		/* type of module (FXO/FXS/QRV/VPM/etc.) in this position */
-	int sethook[NUM_MODULES + NUM_EC];		/* pending hook state command for each module */
+	struct cmdq cmdq[NUM_MODULES];
+	int modtype[NUM_MODULES]; /* type of module (FXO/FXS/QRV/etc.) */
+	int sethook[NUM_MODULES]; /* pending hook state command */
 	int dacssrc[NUM_MODULES];
 
-	int vpm100;
-
 	struct vpmadt032 *vpmadt032;
-#ifdef FANCY_ECHOCAN
-	int echocanpos;
-	int blinktimer;
-#endif
+
 	struct voicebus vb;
 	struct wctdm_span *aspan;			/* pointer to the spans[] holding the analog span */
 	struct wctdm_span *spans[MAX_SPANS];




More information about the svn-commits mailing list