summaryrefslogtreecommitdiff
path: root/xivovp/base.c
diff options
context:
space:
mode:
Diffstat (limited to 'xivovp/base.c')
-rw-r--r--xivovp/base.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/xivovp/base.c b/xivovp/base.c
index a945612..772908d 100644
--- a/xivovp/base.c
+++ b/xivovp/base.c
@@ -118,6 +118,7 @@ struct xivovp_line {
static struct xivovp {
struct dahdi_span span;
+ struct dahdi_device *ddev;
struct timer_list vp_tick_timer;
struct xivovp_line line[NB_LINES];
@@ -643,9 +644,12 @@ static int span_init(void)
dahdi_copy_string(xivovp.span.desc,
"FXO/FXS driver for Avencall's XiVO IPBX OpenHardware "
"platform", sizeof(xivovp.span.desc));
- xivovp.span.manufacturer = "Avencall";
- dahdi_copy_string(xivovp.span.devicetype, "Ve890",
- sizeof(xivovp.span.devicetype));
+
+ xivovp.ddev = dahdi_create_device();
+ // BUGBUG
+ xivovp.ddev->manufacturer = "Avencall";
+ xivovp.ddev->devicetype = kasprintf(GFP_KERNEL, "Ve890");
+
xivovp.span.ops = &xivovp_span_ops;
xivovp.span.channels = NB_LINES;
xivovp.span.chans = xivovp.chans;
@@ -678,9 +682,7 @@ static int span_init(void)
spin_lock_init(&l->lock);
}
- init_waitqueue_head(&xivovp.span.maintq); /* still dunno what this is */
-
- if (dahdi_register(&xivovp.span, /*prefmaster*/ 0)) {
+ if (dahdi_register_device(xivovp.ddev, &the_spi_pci_dev->dev)) {
printk(KERN_WARNING DRV_NAME ": couldn't register span.\n");
return -EINVAL;
}
@@ -733,7 +735,6 @@ vp_init(void)
VpSetOption(NULL, NULL, VP_OPTION_ID_GLOBAL_DEBUG_SELECT,
&debug_select);
-
vpst = VpMakeDeviceObject(
VP_DEV_890_SERIES,
/* deviceId */ 0,
@@ -856,7 +857,7 @@ test_evb_ve890_init(void)
return 0;
err_vp_init:
- dahdi_unregister(&xivovp.span);
+ dahdi_unregister_device(xivovp.ddev);
#endif
err_dahdi_init:
xivovp_cleanup();
@@ -875,7 +876,8 @@ xivovp_port0_configured_cb(void *data)
printk(KERN_ERR "%s START\n", __func__);
if ((rc = xivo_tdm_config_port(xivovp.tdm_port,
- LE89316_MEGREZ_PROTO_XIVO_CONFIG))
+ LE89316_MEGREZ_PROTO_XIVO_CONFIG,
+ NULL))
< 0) {
printk(KERN_CRIT "%s: xivo_tdm_config_port returned %d\n",
__func__, rc);
@@ -899,7 +901,7 @@ xivovp_port0_configured_cb(void *data)
return;
err_vp_init:
- dahdi_unregister(&xivovp.span);
+ dahdi_unregister_device(xivovp.ddev);
err_config_port:
xivovp_cleanup();
tlp_spidev_exit();
@@ -938,7 +940,7 @@ test_evb_ve890_exit(void)
{
printk(KERN_INFO DRV_NAME ": %s\n", __func__);
- dahdi_unregister(&xivovp.span);
+ dahdi_unregister_device(xivovp.ddev);
del_timer_sync(&xivovp.vp_tick_timer);
/* XXX : TODO update upstream Linux doc of del_timer_sync */