summaryrefslogtreecommitdiff
path: root/wct4xxp
diff options
context:
space:
mode:
authorkpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-01-22 22:43:06 +0000
committerkpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-01-22 22:43:06 +0000
commit4acedbc838fbec225a19e6880f38d397339b18fb (patch)
treedbdf66e80317912124a4f9809ad09431dba35bd2 /wct4xxp
parent96dcba113ec112c338dd44b78ec7bfab826f052d (diff)
use better definition for linked-in firmware data
ensure that hotplug-loaded firmware is released when we are finished with it git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@1898 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'wct4xxp')
-rw-r--r--wct4xxp/base.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/wct4xxp/base.c b/wct4xxp/base.c
index 0c5c64b..2a835d2 100644
--- a/wct4xxp/base.c
+++ b/wct4xxp/base.c
@@ -2681,8 +2681,8 @@ static void t4_vpm450_init(struct t4 *wc)
#if !defined(HOTPLUG_FIRMWARE)
extern const u32 _binary_OCT6114_64D_ima_size;
extern const u32 _binary_OCT6114_128D_ima_size;
- extern u8 _binary_OCT6114_64D_ima_start;
- extern u8 _binary_OCT6114_128D_ima_start;
+ extern u8 _binary_OCT6114_64D_ima_start[];
+ extern u8 _binary_OCT6114_128D_ima_start[];
#endif
if (!vpmsupport) {
@@ -2718,7 +2718,7 @@ static void t4_vpm450_init(struct t4 *wc)
return;
}
#else
- embedded_firmware.data = &_binary_OCT6114_64D_ima_start;
+ embedded_firmware.data = _binary_OCT6114_64D_ima_start;
embedded_firmware.size = _binary_OCT6114_64D_ima_size;
#endif
break;
@@ -2730,7 +2730,7 @@ static void t4_vpm450_init(struct t4 *wc)
return;
}
#else
- embedded_firmware.data = &_binary_OCT6114_128D_ima_start;
+ embedded_firmware.data = _binary_OCT6114_128D_ima_start;
embedded_firmware.size = _binary_OCT6114_128D_ima_size;
#endif
break;
@@ -2741,12 +2741,21 @@ static void t4_vpm450_init(struct t4 *wc)
if (!(wc->vpm450m = init_vpm450m(wc, laws, wc->numspans, firmware))) {
printk("VPM450: Failed to initialize\n");
+#if defined(HOTPLUG_FIRMWARE)
+ release_firmware(firmware);
+#endif
return;
}
+
+#if defined(HOTPLUG_FIRMWARE)
+ release_firmware(firmware);
+#endif
+
if (vpmdtmfsupport == -1) {
printk("VPM450: hardware DTMF disabled.\n");
vpmdtmfsupport = 0;
}
+
wc->vpm = T4_VPM_PRESENT;
printk("VPM450: Present and operational servicing %d span(s)\n", wc->numspans);
}