summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wctdm24xxp
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-09-27 22:10:34 +0000
committerShaun Ruffell <sruffell@digium.com>2011-09-27 22:10:34 +0000
commit657b2574170b585cbd98b4159609bd30976a899b (patch)
tree8dd6931c6c490115eec5705ef8c124f2b143f373 /drivers/dahdi/wctdm24xxp
parent824b6c8cba4c073a18d87add3a4513ccee9b4965 (diff)
wctdm24xxp: Set dahdi_span.devicetype string in one place.
Currently the devicetype string was set both when the device was first allocated and updated when an echocanceler was detected. For simplicity, combine both these steps into a single function. This change also replaces an improper use of strncat with strlcat. Additionally, on the 2.5 branch, this change actually makes r10206 "wctdm24xxp, wcte12xp: Advertise VPMOCT032 presence in dahdi_span.devicetype", work the way it was originally intended. That change was only functioning properly previously on trunk. Signed-off-by: Shaun Ruffell <sruffell@digium.com> Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10210 git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.5@10211 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wctdm24xxp')
-rw-r--r--drivers/dahdi/wctdm24xxp/base.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c
index f57d408..0bc5730 100644
--- a/drivers/dahdi/wctdm24xxp/base.c
+++ b/drivers/dahdi/wctdm24xxp/base.c
@@ -4242,7 +4242,6 @@ wctdm_init_span(struct wctdm *wc, int spanno, int chanoffset, int chancount,
(wc->desc->flags & FLAG_EXPRESS) ? " Express" : "",
pdev->bus->number, PCI_SLOT(pdev->devfn) + 1);
s->span.manufacturer = "Digium";
- strncpy(s->span.devicetype, wc->desc->name, sizeof(s->span.devicetype) - 1);
if (wc->companding == DAHDI_LAW_DEFAULT) {
if (wc->digi_mods || digital_span)
@@ -4348,15 +4347,6 @@ static void wctdm_fixup_analog_span(struct wctdm *wc, int spanno)
s->chans[y++]->sigcap = 0;
}
}
-
- for (x = 0; x < MAX_SPANS; x++) {
- if (!wc->spans[x])
- continue;
- if (wc->vpmadt032)
- strncat(wc->spans[x]->span.devicetype, " (VPMADT032)", sizeof(wc->spans[x]->span.devicetype) - 1);
- else if (wc->vpmoct)
- strncat(wc->spans[x]->span.devicetype, " (VPMOCT032)", sizeof(wc->spans[x]->span.devicetype) - 1);
- }
}
static int wctdm_initialize_vpmadt032(struct wctdm *wc)
@@ -5270,6 +5260,27 @@ static void wctdm_allocate_irq_commands(struct wctdm *wc, unsigned int count)
spin_unlock_irqrestore(&wc->reglock, flags);
}
+static void set_span_devicetype_string(struct wctdm *wc)
+{
+ unsigned int x;
+
+ for (x = 0; x < ARRAY_SIZE(wc->spans); x++) {
+ struct dahdi_span *const s = &wc->spans[x]->span;
+ if (!s)
+ continue;
+
+ strlcpy(s->devicetype, wc->desc->name, sizeof(s->devicetype));
+
+ if (wc->vpmadt032) {
+ strlcat(s->devicetype, " (VPMADT032)",
+ sizeof(s->devicetype));
+ } else if (wc->vpmoct) {
+ strlcat(s->devicetype, " (VPMOCT032)",
+ sizeof(s->devicetype));
+ }
+ }
+}
+
#ifdef USE_ASYNC_INIT
struct async_data {
struct pci_dev *pdev;
@@ -5525,6 +5536,8 @@ __wctdm_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
wctdm_initialize_vpm(wc);
+ set_span_devicetype_string(wc);
+
#ifdef USE_ASYNC_INIT
async_synchronize_cookie(cookie);
#endif