wct4xxp: VPM module creates noise on alternate channels on E1 spans.

The VPMOCT128 module was using the VPMOCT256 timeslots assigments which would
mean that channels that should be marked alaw were being set in ulaw. This
only affected E1 spans since by default all spans are configured for ulaw by
default.

This fixes a regression introduced in r10290 [1] "wct4xxp: Add support for
TE820 and VPMOCT256", first released in 2.6.0, that only affects E1 spans on a
quad and dual-span card when used with the hardware echocanceler.

[1] http://svnview.digium.com/svn/dahdi?view=revision&revision=10290

Internal-Issue-ID: DAHDI-945, DAHLIN-275
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10414

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.6@10416 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Shaun Ruffell 2012-01-10 22:05:47 +00:00
parent d726b04767
commit 48b3cb8777

View File

@ -422,6 +422,7 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f
tOCT6100_GET_INSTANCE_SIZE InstanceSize; tOCT6100_GET_INSTANCE_SIZE InstanceSize;
tOCT6100_CHANNEL_OPEN *ChannelOpen; tOCT6100_CHANNEL_OPEN *ChannelOpen;
UINT32 ulResult; UINT32 ulResult;
const unsigned int mask = (8 == numspans) ? 0x7 : 0x3;
unsigned int sout_stream, rout_stream; unsigned int sout_stream, rout_stream;
struct vpm450m *vpm450m; struct vpm450m *vpm450m;
int x,y,law; int x,y,law;
@ -527,7 +528,7 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f
* therefore, the lower 2 bits tell us which span this * therefore, the lower 2 bits tell us which span this
* timeslot/channel * timeslot/channel
*/ */
if (isalaw[x & 0x07]) if (isalaw[x & mask])
law = cOCT6100_PCM_A_LAW; law = cOCT6100_PCM_A_LAW;
else else
law = cOCT6100_PCM_U_LAW; law = cOCT6100_PCM_U_LAW;