summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wcte12xp
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-07-26 00:30:41 +0000
committerShaun Ruffell <sruffell@digium.com>2010-07-26 00:30:41 +0000
commit9e8885a50b7923c9a9b7456bbf2ecc61923c8734 (patch)
tree57dc2f7e5a6c358c0a13eb4a8d0f7856b5e8077a /drivers/dahdi/wcte12xp
parent5fd3fdc1cea7af8b1c46bbf2a5edd0c6fe2d3e54 (diff)
dahdi: Move the callbacks in dahdi_span into its own structure.
Part of preparation for adding additional callbacks to allow board drivers to advertise and support gathering pre-echocan data from hardware echocans. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8985 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wcte12xp')
-rw-r--r--drivers/dahdi/wcte12xp/base.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/drivers/dahdi/wcte12xp/base.c b/drivers/dahdi/wcte12xp/base.c
index cbb1b04..3c58b64 100644
--- a/drivers/dahdi/wcte12xp/base.c
+++ b/drivers/dahdi/wcte12xp/base.c
@@ -73,8 +73,6 @@ static int vpmnlptype = DEFAULT_NLPTYPE;
static int vpmnlpthresh = DEFAULT_NLPTHRESH;
static int vpmnlpmaxsupp = DEFAULT_NLPMAXSUPP;
-static int echocan_create(struct dahdi_chan *chan, struct dahdi_echocanparams *ecp,
- struct dahdi_echocanparam *p, struct dahdi_echocan_state **ec);
static void echocan_free(struct dahdi_chan *chan, struct dahdi_echocan_state *ec);
static int t1xxp_clear_maint(struct dahdi_span *span);
static int check_and_load_vpm(struct t1 *wc);
@@ -1331,13 +1329,15 @@ static int t1xxp_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned long
return 0;
}
-static int echocan_create(struct dahdi_chan *chan, struct dahdi_echocanparams *ecp,
- struct dahdi_echocanparam *p, struct dahdi_echocan_state **ec)
+static int t1xxp_echocan_create(struct dahdi_chan *chan,
+ struct dahdi_echocanparams *ecp,
+ struct dahdi_echocanparam *p,
+ struct dahdi_echocan_state **ec)
{
struct t1 *wc = chan->pvt;
enum adt_companding comp;
- if (!wc->vpmadt032 || !test_bit(4, &wc->ctlreg))
+ if (!vpmsupport || !wc->vpmadt032 || !test_bit(4, &wc->ctlreg))
return -ENODEV;
*ec = wc->ec[chan->chanpos - 1];
@@ -1506,6 +1506,20 @@ t1xxp_spanconfig(struct dahdi_span *span, struct dahdi_lineconfig *lc)
return 0;
}
+static const struct dahdi_span_ops t1_span_ops = {
+ .spanconfig = t1xxp_spanconfig,
+ .chanconfig = t1xxp_chanconfig,
+ .startup = t1xxp_startup,
+ .shutdown = t1xxp_shutdown,
+ .rbsbits = t1xxp_rbsbits,
+ .maint = t1xxp_maint,
+ .open = t1xxp_open,
+ .close = t1xxp_close,
+ .ioctl = t1xxp_ioctl,
+#ifdef VPM_SUPPORT
+ .echocan_create = t1xxp_echocan_create,
+#endif
+};
static int t1_software_init(struct t1 *wc)
{
@@ -1537,20 +1551,7 @@ static int t1_software_init(struct t1 *wc)
PCI_SLOT(pdev->devfn) + 1);
wc->span.owner = THIS_MODULE;
- wc->span.spanconfig = t1xxp_spanconfig;
- wc->span.chanconfig = t1xxp_chanconfig;
wc->span.irq = pdev->irq;
- wc->span.startup = t1xxp_startup;
- wc->span.shutdown = t1xxp_shutdown;
- wc->span.rbsbits = t1xxp_rbsbits;
- wc->span.maint = t1xxp_maint;
- wc->span.open = t1xxp_open;
- wc->span.close = t1xxp_close;
- wc->span.ioctl = t1xxp_ioctl;
-#ifdef VPM_SUPPORT
- if (vpmsupport)
- wc->span.echocan_create = echocan_create;
-#endif
if (wc->spantype == TYPE_E1) {
if (unchannelized)
@@ -1578,6 +1579,7 @@ static int t1_software_init(struct t1 *wc)
wc->chans[x]->pvt = wc;
wc->chans[x]->chanpos = x + 1;
}
+ wc->span.ops = &t1_span_ops;
if (dahdi_register(&wc->span, 0)) {
t1_info(wc, "Unable to register span with DAHDI\n");
return -1;