summaryrefslogtreecommitdiff
path: root/xivovp/base.c
diff options
context:
space:
mode:
authorGuillaume Knispel <gknispel@proformatique.com>2010-10-19 14:32:37 +0200
committerGuillaume Knispel <gknispel@proformatique.com>2010-10-19 14:32:37 +0200
commit619cb8f38b88a8f7e01e51bc39fb387e86e7b0b4 (patch)
tree0fb0d4e7b8798d2dae2f8e4f203528047ebd7b6b /xivovp/base.c
parent31cbb46bedd07bf0c916a149013383b28588c705 (diff)
added a new (very very low quality way) to propagate audio
Diffstat (limited to 'xivovp/base.c')
-rw-r--r--xivovp/base.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/xivovp/base.c b/xivovp/base.c
index e70dc29..da69740 100644
--- a/xivovp/base.c
+++ b/xivovp/base.c
@@ -40,7 +40,6 @@ MODULE_PARM_DESC(traces_vanish,
#define NB_LINES 2
#define TICK_JIFFIES(n) DIV_ROUND_UP(n * HZ, 1000)
#define VP_TICK_JIFFIES TICK_JIFFIES(VP_TICK_MS)
-#define RXTX_TICK_JIFFIES TICK_JIFFIES(1)
#define DEBUG_SELECT_RUNNING (VP_DBG_ERROR \
| VP_DBG_WARNING \
@@ -48,8 +47,12 @@ MODULE_PARM_DESC(traces_vanish,
enum xivovp_line_type { FXS_LINE = 0, FXO_LINE = 1 };
-#define FXS_TIMESLOT 1
-#define FXO_TIMESLOT 3
+
+#define FXS_TIMESLOT (1)
+#define FXO_TIMESLOT (3)
+
+#define TS_MASK ((1u << FXS_TIMESLOT) | (1u << FXO_TIMESLOT))
+
struct xivovp_line {
enum xivovp_line_type type;
@@ -81,16 +84,13 @@ static struct xivovp {
struct xivo_tdm_port *tdm_port;
} xivovp;
-struct timer_list rxtx_timer;
-
-static void xivovp_rxtx(unsigned long data)
+static void xivovp_transmit_and_receive(void *data)
{
(void) data;
+
dahdi_receive(&xivovp.span);
dahdi_transmit(&xivovp.span);
dahdi_ec_span(&xivovp.span);
-
- mod_timer(&rxtx_timer, jiffies + RXTX_TICK_JIFFIES);
}
/* Shouldn't there be something better there? TOTHINK */
@@ -297,7 +297,6 @@ static void vp_post_init(VpEventType *event)
// XXX What happens if lines aren't connected?
- mod_timer(&rxtx_timer, jiffies + RXTX_TICK_JIFFIES);
count_and_stop_traces = TRUE;
}
@@ -545,10 +544,6 @@ xivovp_init(void)
xivovp.vp_tick_timer.function = vp_tick;
xivovp.vp_tick_timer.data = 42;
- init_timer(&rxtx_timer);
- rxtx_timer.function = xivovp_rxtx;
- rxtx_timer.data = 1337;
-
xivovp.line[FXS_LINE].type = FXS_LINE;
xivovp.line[FXO_LINE].type = FXO_LINE;
@@ -652,6 +647,7 @@ vp_init(void)
static int
test_evb_ve890_init(void)
{
+ struct xivo_tdm_cb_struct cb_struct; // 264 bytes
int rc;
printk(KERN_INFO DRV_NAME ": entering %s\n", __func__);
@@ -676,6 +672,16 @@ test_evb_ve890_init(void)
goto err_dahdi_init;
}
+ memset(&cb_struct, 0, sizeof cb_struct);
+ cb_struct.rx_bufs[FXS_TIMESLOT] = xivovp.chans[FXS_LINE]->readchunk;
+ cb_struct.tx_bufs[FXS_TIMESLOT] = xivovp.chans[FXS_LINE]->writechunk;
+ cb_struct.rx_bufs[FXO_TIMESLOT] = xivovp.chans[FXO_LINE]->readchunk;
+ cb_struct.tx_bufs[FXO_TIMESLOT] = xivovp.chans[FXO_LINE]->writechunk;
+ cb_struct.xivo_tdm_cb = xivovp_transmit_and_receive;
+ cb_struct.xivo_tdm_cb_data = NULL;
+ /* XXX */ (void) xivo_tdm_start_chans(
+ xivovp.tdm_port, TS_MASK, &cb_struct);
+
mod_timer(&xivovp.vp_tick_timer, jiffies + VP_TICK_JIFFIES);
return 0;
@@ -698,7 +704,6 @@ test_evb_ve890_exit(void)
dahdi_unregister(&xivovp.span);
del_timer_sync(&xivovp.vp_tick_timer);
- del_timer_sync(&rxtx_timer);
/* XXX : TODO update upstream Linux doc of del_timer_sync */
xivovp_cleanup();