summaryrefslogtreecommitdiff
path: root/xpp/card_bri.c
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-01-10 18:12:27 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-01-10 18:12:27 +0000
commit9899bafe997a4e020f302c99a6e025b4e8b25191 (patch)
tree8a108b05d0f319c95ba83f1d5984ae261572bebf /xpp/card_bri.c
parent1d7d5b07325a186785b22abf09ff531dfc2edd54 (diff)
xpp.r5254:
* Improved polarity reversal hangups in FXO (r5194). Fixed false detection of polarity reversals. * Optimize xframe allocation, by not zeroing the whole memory (in get_xframe()). * Fixed erronous error message that appeared sometimes from fpga_load during USB renumeration. * Zaptel::Chans now provides battery() reporting for some FXO channels (Astribank FXO and wcfxo). git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@3643 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/card_bri.c')
-rw-r--r--xpp/card_bri.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/xpp/card_bri.c b/xpp/card_bri.c
index fb423a3..998d22a 100644
--- a/xpp/card_bri.c
+++ b/xpp/card_bri.c
@@ -151,7 +151,11 @@ typedef union {
)
#define BRI_BCHAN_SIGCAP ZT_SIG_CLEAR
-#define IS_NT(xpd) ((xpd)->type == XPD_TYPE_BRI_NT)
+#define IS_NT(xpd) ((xpd)->type == XPD_TYPE_BRI_NT)
+
+/* shift in PCM highway */
+#define SUBUNIT_PCM_SHIFT 4
+#define PCM_SHIFT(mask, sunit) ((mask) << (SUBUNIT_PCM_SHIFT * (sunit)))
/*---------------- BRI Protocol Commands ----------------------------------*/
@@ -723,7 +727,7 @@ static int BRI_card_zaptel_preregistration(xpd_t *xpd, bool on)
for(i = 0; i < MAX_SUBUNIT; i++) {
xpd_t *sub_xpd = xpd_byaddr(xbus, xpd->addr.unit, i);
if(sub_xpd) {
- tmp_pcm_mask |= (sub_xpd->wanted_pcm_mask << (SUBUNIT_PCM_SHIFT * i));
+ tmp_pcm_mask |= PCM_SHIFT(sub_xpd->wanted_pcm_mask, i);
line_count += 2;
}
}
@@ -1077,7 +1081,7 @@ static void BRI_card_pcm_fromspan(xbus_t *xbus, xpd_t *xpd, xpp_line_t wanted_li
pcm += ZT_CHUNKSIZE;
}
}
- pcm_mask |= (wanted_lines << SUBUNIT_PCM_SHIFT * subunit);
+ pcm_mask |= PCM_SHIFT(wanted_lines, subunit);
XPD_COUNTER(tmp_xpd, PCM_WRITE)++;
spin_unlock_irqrestore(&tmp_xpd->lock, flags);
}
@@ -1399,6 +1403,7 @@ static xproto_table_t PROTO_TABLE(BRI_TE) = {
.card_tick = BRI_card_tick,
.card_pcm_fromspan = BRI_card_pcm_fromspan,
.card_pcm_tospan = BRI_card_pcm_tospan,
+ .card_ioctl = BRI_card_ioctl,
.card_close = BRI_card_close,
.card_register_reply = BRI_card_register_reply,