summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--environment_example4
-rw-r--r--xhfc/base.c48
-rw-r--r--xhfc/xhfc.h2
-rw-r--r--xivovp/base.c24
4 files changed, 39 insertions, 39 deletions
diff --git a/environment_example b/environment_example
index 5eea6a3..e917593 100644
--- a/environment_example
+++ b/environment_example
@@ -1,7 +1,7 @@
export KSRC=/usr/src/linux-source-2.6.32
export KERNEL_SOURCE_ROOT=$KSRC
-export DAHDI_SYMVERS=~/hard/xivo-drivers/dahdi-linux-2.4.0/drivers/dahdi/Module.symvers
-export DAHDI_INCLUDE=~/hard/xivo-drivers/dahdi-linux-2.4.0/include
+export DAHDI_SYMVERS=/usr/src/modules/dahdi-linux/drivers/dahdi/Module.symvers
+export DAHDI_INCLUDE=/usr/src/modules/dahdi-linux/include
export ICP_ROOT=/EP805XX
export VP_API=/home/xilun/hard/zarlink/Le71SDKAPIL_P2.17.0
export XIVO_AUDIO=1
diff --git a/xhfc/base.c b/xhfc/base.c
index 0a385ad..0fcbb40 100644
--- a/xhfc/base.c
+++ b/xhfc/base.c
@@ -857,7 +857,7 @@ static void xhfc_span_set_ntte(struct xhfc_span* s, int ntte)
s->span.spantype = ntte ? "NT" : "TE";
}
-static int xhfc_spanconfig(struct dahdi_span *span, struct dahdi_lineconfig *lc)
+static int xhfc_spanconfig(struct file *file, struct dahdi_span *span, struct dahdi_lineconfig *lc)
{
struct xhfc_span *xhfc_span;
struct xhfc *xhfc;
@@ -902,7 +902,7 @@ static int xhfc_spanconfig(struct dahdi_span *span, struct dahdi_lineconfig *lc)
return 0;
}
-static int xhfc_chanconfig(struct dahdi_chan *chan, int sigtype)
+static int xhfc_chanconfig(struct file *file, struct dahdi_chan *chan, int sigtype)
{
int alreadyrunning;
struct xhfc_span *xhfc_span = container_of(chan->span, struct xhfc_span,
@@ -954,7 +954,7 @@ static int xhfc_ioctl(struct dahdi_chan *chan, unsigned int cmd,
return -ENOTTY;
}
-static int xhfc_span_startup(struct dahdi_span* s)
+static int xhfc_span_startup(struct file *file, struct dahdi_span* s)
{
struct xhfc_span *xhfc_span = container_of(s, struct xhfc_span, span);
activate_request(xhfc_span);
@@ -1006,7 +1006,6 @@ static void init_spans(struct xhfc* x)
dahdi_span->ops = &xhfc_span_ops;
dahdi_span->chans = xhfc_span->chans;
- dahdi_span->irq = x->pi->pci_dev->irq;
dahdi_span->offset = i;
dahdi_span->channels = CHANS_PER_SPAN;
dahdi_span->flags = 0;
@@ -1017,19 +1016,9 @@ static void init_spans(struct xhfc* x)
sprintf(dahdi_span->name, "XIVO_XHFC/%d", i+1);
sprintf(dahdi_span->desc, "XHFC port %d", i+1);
- dahdi_span->manufacturer = "Avencall";
- dahdi_copy_string(dahdi_span->devicetype, "XHFC-4SU",
- sizeof(dahdi_span->devicetype));
- sprintf(dahdi_span->location, "PCI Bus %02d Slot %02d",
- x->pi->pci_dev->bus->number,
- PCI_SLOT(x->pi->pci_dev->devfn) + 1);
-
+ // BUGBUG: free all that:
dahdi_span->alarms = DAHDI_ALARM_RED;
-
- init_waitqueue_head(&dahdi_span->maintq);
- /* kinda everyone does this */
-
/* now initialize each channel in the span */
for (j=0; j < CHANS_PER_SPAN; j++) {
xhfc_span->chans[j] = &xhfc_span->_chans[j];
@@ -1183,6 +1172,14 @@ static int __devinit xhfc_init_one(struct pci_dev *pdev,
goto err_request_irq;
}
+ pi->xhfc.ddev = dahdi_create_device();
+ pi->xhfc.ddev->manufacturer = "Avencall";
+ pi->xhfc.ddev->devicetype = kasprintf(GFP_KERNEL, "xhfc-4su");
+ pi->xhfc.ddev->location = kasprintf(GFP_KERNEL,
+ "PCI Bus %02d Slot %02d",
+ pi->pci_dev->bus->number,
+ PCI_SLOT(pi->pci_dev->devfn) + 1);
+
init_spans(&pi->xhfc);
xhfc_init_and_configure(&pi->xhfc);
@@ -1199,12 +1196,14 @@ static int __devinit xhfc_init_one(struct pci_dev *pdev,
#endif
for (span = 0; span < SPANS_PER_CHIP; span++)
- if ((rc = dahdi_register(&pi->xhfc.spans[span].span,
- /*prefmaster*/ 0)) < 0) {
- printk(KERN_WARNING "%s %s: couldn't register spans\n",
- DRIVER_NAME, __func__);
- goto err_in_dahdi_register;
- }
+ list_add_tail(&pi->xhfc.spans[span].span.device_node,
+ &pi->xhfc.ddev->spans);
+
+ if ((rc = dahdi_register_device(pi->xhfc.ddev, &pdev->dev))) {
+ printk(KERN_WARNING "%s %s: couldn't register spans\n",
+ DRIVER_NAME, __func__);
+ goto err_in_dahdi_register;
+ }
enable_interrupts(&pi->xhfc);
@@ -1228,8 +1227,7 @@ static int __devinit xhfc_init_one(struct pci_dev *pdev,
return 0;
err_in_dahdi_register:
- for (span--; span >= 0; span--)
- dahdi_unregister(&pi->xhfc.spans[span].span);
+ dahdi_unregister_device(pi->xhfc.ddev);
#ifdef AUDIO
err_tdm_config_port:
#endif
@@ -1255,7 +1253,6 @@ err_enable_device:
static void __devexit xhfc_remove_one(struct pci_dev *pdev)
{
- int i;
struct xhfc_pi *pi;
pi = pci_get_drvdata(pdev);
@@ -1264,8 +1261,7 @@ static void __devexit xhfc_remove_one(struct pci_dev *pdev)
printk(KERN_INFO "%s %s: removing card\n",
DRIVER_NAME, __func__);
- for (i = 0; i < SPANS_PER_CHIP; i++)
- dahdi_unregister(&pi->xhfc.spans[i].span);
+ dahdi_unregister_device(pi->xhfc.ddev);
release_card_irq(pi);
diff --git a/xhfc/xhfc.h b/xhfc/xhfc.h
index a598d4c..3a198ee 100644
--- a/xhfc/xhfc.h
+++ b/xhfc/xhfc.h
@@ -141,6 +141,8 @@ struct xhfc_span {
struct xhfc {
struct xhfc_pi *pi; /* backpointer to xhfc_pi */
+ struct dahdi_device *ddev;
+
struct xhfc_span spans[SPANS_PER_CHIP];
int running;
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 */