summaryrefslogtreecommitdiff
path: root/xivovp/base.c
diff options
context:
space:
mode:
authorNoe Rubinstein <nrubinstein@proformatique.com>2010-09-30 16:15:02 +0200
committerNoƩ Rubinstein <nrubinstein@proformatique.com>2010-09-30 16:15:02 +0200
commit585df3213a3c9c2371c5bb993ce6267485f4ad30 (patch)
treeaf831884e6b70d5d3258b79c2264cd9f8d7aa0b4 /xivovp/base.c
parente1e1d5081c40d3d1e9fa0aeefa6c9ea7dd8f7508 (diff)
lockup fixed (still, it shouldn't happen methinks
Diffstat (limited to 'xivovp/base.c')
-rw-r--r--xivovp/base.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/xivovp/base.c b/xivovp/base.c
index 97e8479..28cd85d 100644
--- a/xivovp/base.c
+++ b/xivovp/base.c
@@ -70,12 +70,14 @@ struct timer_list rxtx_timer;
static void xivovp_rxtx(unsigned long data)
{
+ static int i;
+ if(0 == i++ % 1000) printk("Bonjour\n");
(void) data;
dahdi_receive(&xivovp.span);
dahdi_transmit(&xivovp.span);
dahdi_ec_span(&xivovp.span);
- mod_timer(&xivovp.vp_tick_timer, jiffies + RXTX_TICK_JIFFIES);
+ mod_timer(&rxtx_timer, jiffies + RXTX_TICK_JIFFIES);
}
/* Shouldn't there be something better there? TOTHINK */
@@ -253,7 +255,7 @@ static void vp_post_init(VpEventType *event)
return;
}
- mod_timer(&xivovp.vp_tick_timer, jiffies + RXTX_TICK_JIFFIES);
+ mod_timer(&rxtx_timer, jiffies + RXTX_TICK_JIFFIES);
count_and_stop_traces = TRUE;
}
@@ -377,7 +379,8 @@ static const struct dahdi_span_ops xivovp_span_ops = {
static int
span_init(void)
{
- dahdi_copy_string(xivovp.span.name, "XiVO_FX", sizeof(xivovp.span.name));
+ struct xivovp_line* l;
+ dahdi_copy_string(xivovp.span.name, "XivoVP", sizeof(xivovp.span.name));
dahdi_copy_string(xivovp.span.desc,
"FXO/FXS driver for Avencall's XiVO IPBX OpenHardware "
"platform", sizeof(xivovp.span.desc));
@@ -385,10 +388,24 @@ span_init(void)
dahdi_copy_string(xivovp.span.devicetype, "Ve890",
sizeof(xivovp.span.devicetype));
xivovp.span.ops = &xivovp_span_ops;
+ xivovp.span.channels = ARRAY_SIZE(xivovp.chans);
xivovp.span.chans = xivovp.chans;
+ xivovp.span.deflaw = DAHDI_LAW_MULAW; // TODO alawoverride
init_waitqueue_head(&xivovp.span.maintq); /* still dunno what this is */
+ for(l = xivovp.line; l < xivovp.line + NB_LINES; l++) {
+ xivovp.chans[l - xivovp.line] = &l->chan;
+ l->chan.pvt = l;
+ if(l->type == FXS_LINE)
+ l->chan.sigcap = DAHDI_SIG_FXSLS | DAHDI_SIG_FXSGS |
+ DAHDI_SIG_FXSKS;
+ else
+ l->chan.sigcap = DAHDI_SIG_FXOLS | DAHDI_SIG_FXOGS |
+ DAHDI_SIG_FXOKS;
+ spin_lock_init(&l->vp_lock);
+ }
+
if(dahdi_register(&xivovp.span, /*prefmaster*/ 0)) {
printk(KERN_WARNING DRV_NAME ": couldn't register span.\n");
return -EINVAL;
@@ -400,7 +417,6 @@ span_init(void)
static int
xivovp_init(void)
{
- int i;
/* this is simple because no dynamic alloc */
init_timer(&xivovp.vp_tick_timer);
@@ -414,12 +430,6 @@ xivovp_init(void)
xivovp.line[FXS_LINE].type = FXS_LINE;
xivovp.line[FXO_LINE].type = FXO_LINE;
- for(i = 0; i < NB_LINES; i++) {
- xivovp.chans[i] = &xivovp.line[i].chan;
- xivovp.line[i].chan.pvt = &xivovp.line[i].chan;
- spin_lock_init(&xivovp.line[i].vp_lock);
- }
-
return 0;
}