diff options
author | Shaun Ruffell <sruffell@digium.com> | 2010-07-26 00:30:41 +0000 |
---|---|---|
committer | Shaun Ruffell <sruffell@digium.com> | 2010-07-26 00:30:41 +0000 |
commit | 9e8885a50b7923c9a9b7456bbf2ecc61923c8734 (patch) | |
tree | 57dc2f7e5a6c358c0a13eb4a8d0f7856b5e8077a /drivers/dahdi/wcte12xp | |
parent | 5fd3fdc1cea7af8b1c46bbf2a5edd0c6fe2d3e54 (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.c | 38 |
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; |