Module: xenomai-head Branch: master Commit: c5000cadbfd037a3e3b37bbf7054419eb8b009bf URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=c5000cadbfd037a3e3b37bbf7054419eb8b009bf
Author: Alexis Berlemont <alexis.berlem...@gmail.com> Date: Tue Jun 2 16:22:58 2009 +0200 Update NI PCIMIO driver according to driver API changes and fix a bug at the same time --- ksrc/drivers/comedi/national_instruments/pcimio.c | 53 +++++++-------------- 1 files changed, 18 insertions(+), 35 deletions(-) diff --git a/ksrc/drivers/comedi/national_instruments/pcimio.c b/ksrc/drivers/comedi/national_instruments/pcimio.c index 1bc7033..7f51621 100644 --- a/ksrc/drivers/comedi/national_instruments/pcimio.c +++ b/ksrc/drivers/comedi/national_instruments/pcimio.c @@ -148,8 +148,6 @@ static struct pci_device_id ni_pci_table[] __devinitdata = { }; MODULE_DEVICE_TABLE(pci, ni_pci_table); -static comedi_drv_t pcimio_drv; - /* These are not all the possible ao ranges for 628x boards. They can do OFFSET +- REFERENCE where OFFSET can be 0V, 5V, APFI<0,1>, or AO<0...3> and RANGE can @@ -1464,12 +1462,11 @@ static void init_6143(comedi_dev_t *dev) ni_writew(devpriv->ai_calib_source, Calibration_Channel_6143); } -static int pcimio_attach(comedi_cxt_t *cxt, comedi_lnkdesc_t *arg) +static int pcimio_attach(comedi_dev_t *dev, comedi_lnkdesc_t *arg) { int ret, bus, slot, i, irq; struct mite_struct *mite = NULL; struct ni_board_struct * board = NULL; - comedi_dev_t *dev = comedi_get_dev(cxt); if(arg->opts == NULL || arg->opts_size == 0) bus = slot = 0; @@ -1488,10 +1485,6 @@ static int pcimio_attach(comedi_cxt_t *cxt, comedi_lnkdesc_t *arg) if(mite == 0) return -ENOENT; - ret = comedi_init_drv(&pcimio_drv); - if(ret!=0) - return ret; - devpriv->irq_polarity = PCIMIO_IRQ_POLARITY; devpriv->irq_pin = 0; @@ -1509,7 +1502,7 @@ static int pcimio_attach(comedi_cxt_t *cxt, comedi_lnkdesc_t *arg) devpriv->gpct_mite_ring[1] == NULL) return -ENOMEM; - rtdm_printk("pcimio_attach: found %s board\n",boardtype.name); + comedi_info(dev, "pcimio_attach: found %s board\n", boardtype.name); if(boardtype.reg_type & ni_reg_m_series_mask) { @@ -1528,7 +1521,7 @@ static int pcimio_attach(comedi_cxt_t *cxt, comedi_lnkdesc_t *arg) ret = mite_setup(devpriv->mite, 0); if(ret < 0) { - printk(" error setting up mite\n"); + comedi_err(dev, "pcmio_attach: error setting up mite\n"); return ret; } @@ -1540,27 +1533,25 @@ static int pcimio_attach(comedi_cxt_t *cxt, comedi_lnkdesc_t *arg) irq = mite_irq(devpriv->mite); if(irq == 0){ - rtdm_printk("pcimio_attach: unknown irq (bad)\n\n"); + comedi_warn(dev, "pcimio_attach: unknown irq (bad)\n\n"); }else{ - rtdm_printk("pcimio_attach: found irq %u\n", irq); + comedi_info(dev, "pcimio_attach: found irq %u\n", irq); ret = comedi_request_irq(dev, irq, ni_E_interrupt, COMEDI_IRQ_SHARED, dev); if(ret < 0) - rtdm_printk("pcimio_attach: irq not available\n"); + comedi_err(dev, "pcimio_attach: irq not available\n"); } - ret = ni_E_init(cxt, &pcimio_drv); + ret = ni_E_init(dev); if(ret < 0) return ret; return ret; } -static int pcimio_detach(comedi_cxt_t *cxt) +static int pcimio_detach(comedi_dev_t *dev) { - comedi_dev_t *dev = comedi_get_dev(cxt); - if(comedi_get_irq(dev)!=COMEDI_IRQ_UNUSED){ comedi_free_irq(dev,comedi_get_irq(dev)); } @@ -1577,30 +1568,22 @@ static int pcimio_detach(comedi_cxt_t *cxt) return 0; } +static comedi_drv_t pcimio_drv = { + .owner = THIS_MODULE, + .board_name = "comedi_pcimio", + .attach = pcimio_attach, + .detach = pcimio_detach, + .privdata_size = sizeof(ni_private), +}; + static int __init pcimio_init(void) { - int err; - - /* Initializes the driver structure */ - err = comedi_init_drv(&pcimio_drv); - if (err != 0) - return err; - - /* Fills the driver structure main fields */ - pcimio_drv.owner = THIS_MODULE; - pcimio_drv.board_name = "pcimio"; - pcimio_drv.flags = COMEDI_DYNAMIC_DRV; - pcimio_drv.attach = pcimio_attach; - pcimio_drv.detach = pcimio_detach; - pcimio_drv.privdata_size = sizeof(ni_private); - - return comedi_add_drv(&pcimio_drv); + return comedi_register_drv(&pcimio_drv); } static void __exit pcimio_cleanup(void) { - comedi_rm_drv(&pcimio_drv); - comedi_cleanup_drv(&pcimio_drv); + comedi_unregister_drv(&pcimio_drv); } MODULE_LICENSE("GPL"); _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git