summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wctdm24xxp
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2009-06-29 20:56:07 +0000
committerShaun Ruffell <sruffell@digium.com>2009-06-29 20:56:07 +0000
commit6b34a37751245e4415323fbc3df4b11fd386d8b3 (patch)
tree00d903d8f17c3be33730d4e25b453306db83eca8 /drivers/dahdi/wctdm24xxp
parent8429ae62a280f445e98c2857369dc1fc5a092685 (diff)
dahdi-base: Enable DAHDI to manage the reference counts for the board drivers.
Adds a struct module 'owner' member to the dahdi_span structure and updates all the board drivers to set this member before registering the span. This allows the core of dahdi to maintain the reference counts on the channels itself. (closes issue #10601) Reported by: Matti git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@6794 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wctdm24xxp')
-rw-r--r--drivers/dahdi/wctdm24xxp/base.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c
index e4f8bf1..b3103ee 100644
--- a/drivers/dahdi/wctdm24xxp/base.c
+++ b/drivers/dahdi/wctdm24xxp/base.c
@@ -2960,7 +2960,6 @@ static int wctdm_open(struct dahdi_chan *chan)
if (wc->dead)
return -ENODEV;
wc->usecount++;
- try_module_get(THIS_MODULE);
/* Reset the mwi indicators */
spin_lock_irqsave(&wc->reglock, flags);
@@ -2984,7 +2983,6 @@ static int wctdm_close(struct dahdi_chan *chan)
int x;
signed char reg;
wc->usecount--;
- module_put(THIS_MODULE);
for (x=0;x<wc->cards;x++) {
if (wc->modtype[x] == MOD_TYPE_FXS) {
wc->mods[x].fxs.idletxhookstate = POLARITY_XOR(x) ? 5 : 1;
@@ -3226,6 +3224,7 @@ static int wctdm_initialize(struct wctdm *wc)
wc->chans[x]->chanpos = x+1;
wc->chans[x]->pvt = wc;
}
+ wc->span.owner = THIS_MODULE;
wc->span.chans = wc->chans;
wc->span.channels = wc->type;
wc->span.irq = pdev->irq;