diff options
-rw-r--r-- | environment_example | 4 | ||||
-rw-r--r-- | xhfc/base.c | 48 | ||||
-rw-r--r-- | xhfc/xhfc.h | 2 | ||||
-rw-r--r-- | xivovp/base.c | 24 |
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 */ |