From: H Hartley Sweeten Date: Tue, 1 Oct 2013 22:13:32 +0000 (-0700) Subject: staging: comedi: ni_6527: remove COMEDI_MITE dependancy X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=42e705e91f98637a6891eaf8a5c8dcce477b6378;p=linux-beck.git staging: comedi: ni_6527: remove COMEDI_MITE dependancy The COMEDI_MITE driver is a wrapper for the National Instruments PCI MITE ASIC. This driver includes the PCI boilerplate used to remap the resources as well as the support code for bus mastered DMA. The ni_6527 does not support DMA and the COMEDI_MITE driver adds unnecessary complexity. Remove the need for the COMEDI_MITE driver by handling the ioremap directly in the (*attach). Store the ioremap'ed address in the private data. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/Kconfig b/drivers/staging/comedi/Kconfig index 24f3cf273e5b..bfa27e7fc016 100644 --- a/drivers/staging/comedi/Kconfig +++ b/drivers/staging/comedi/Kconfig @@ -991,8 +991,6 @@ config COMEDI_ME_DAQ config COMEDI_NI_6527 tristate "NI 6527 support" - depends on HAS_DMA - select COMEDI_MITE ---help--- Enable support for the National Instruments 6527 PCI card diff --git a/drivers/staging/comedi/drivers/ni_6527.c b/drivers/staging/comedi/drivers/ni_6527.c index 7374f0c7fd8b..59f6885b6edc 100644 --- a/drivers/staging/comedi/drivers/ni_6527.c +++ b/drivers/staging/comedi/drivers/ni_6527.c @@ -40,7 +40,6 @@ Updated: Sat, 25 Jan 2003 13:24:40 -0800 #include "../comedidev.h" #include "comedi_fc.h" -#include "mite.h" #define NI6527_DI_REG(x) (0x00 + (x)) #define NI6527_DO_REG(x) (0x03 + (x)) @@ -90,7 +89,7 @@ static const struct ni6527_board ni6527_boards[] = { }; struct ni6527_private { - struct mite_struct *mite; + void __iomem *mmio_base; unsigned int filter_interval; unsigned int filter_enable; }; @@ -99,7 +98,7 @@ static void ni6527_set_filter_interval(struct comedi_device *dev, unsigned int val) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; if (val != devpriv->filter_interval) { writeb(val & 0xff, mmio + NI6527_FILT_INTERVAL_REG(0)); @@ -116,7 +115,7 @@ static void ni6527_set_filter_enable(struct comedi_device *dev, unsigned int val) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; writeb(val & 0xff, mmio + NI6527_FILT_ENA_REG(0)); writeb((val >> 8) & 0xff, mmio + NI6527_FILT_ENA_REG(1)); @@ -163,7 +162,7 @@ static int ni6527_di_insn_bits(struct comedi_device *dev, unsigned int *data) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; unsigned int val; val = readb(mmio + NI6527_DI_REG(0)); @@ -181,7 +180,7 @@ static int ni6527_do_insn_bits(struct comedi_device *dev, unsigned int *data) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; unsigned int mask; mask = comedi_dio_update_state(s, data); @@ -207,7 +206,7 @@ static irqreturn_t ni6527_interrupt(int irq, void *d) struct comedi_device *dev = d; struct ni6527_private *devpriv = dev->private; struct comedi_subdevice *s = dev->read_subdev; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; unsigned int status; status = readb(mmio + NI6527_STATUS_REG); @@ -271,7 +270,7 @@ static int ni6527_intr_cmd(struct comedi_device *dev, struct comedi_subdevice *s) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; writeb(NI6527_CLR_IRQS, mmio + NI6527_CLR_REG); writeb(NI6527_CTRL_ENABLE_IRQS, mmio + NI6527_CTRL_REG); @@ -283,7 +282,7 @@ static int ni6527_intr_cancel(struct comedi_device *dev, struct comedi_subdevice *s) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; writeb(NI6527_CTRL_DISABLE_IRQS, mmio + NI6527_CTRL_REG); @@ -303,7 +302,7 @@ static void ni6527_set_edge_detection(struct comedi_device *dev, unsigned int falling) { struct ni6527_private *devpriv = dev->private; - void __iomem *mmio = devpriv->mite->daq_io_addr; + void __iomem *mmio = devpriv->mmio_base; /* enable rising-edge detection channels */ writeb(rising & 0xff, mmio + NI6527_RISING_EDGE_REG(0)); @@ -359,18 +358,12 @@ static int ni6527_auto_attach(struct comedi_device *dev, if (!devpriv) return -ENOMEM; - devpriv->mite = mite_alloc(pcidev); - if (!devpriv->mite) + devpriv->mmio_base = pci_ioremap_bar(pcidev, 1); + if (!devpriv->mmio_base) return -ENOMEM; - ret = mite_setup(devpriv->mite); - if (ret < 0) { - dev_err(dev->class_dev, "error setting up mite\n"); - return ret; - } - /* make sure this is actually a 6527 device */ - if (readb(devpriv->mite->daq_io_addr + NI6527_ID_REG) != 0x27) + if (readb(devpriv->mmio_base + NI6527_ID_REG) != 0x27) return -ENODEV; ret = comedi_alloc_subdevices(dev, 3); @@ -410,16 +403,16 @@ static int ni6527_auto_attach(struct comedi_device *dev, ni6527_set_filter_enable(dev, 0); writeb(NI6527_CLR_IRQS | NI6527_CLR_RESET_FILT, - devpriv->mite->daq_io_addr + NI6527_CLR_REG); + devpriv->mmio_base + NI6527_CLR_REG); writeb(NI6527_CTRL_DISABLE_IRQS, - devpriv->mite->daq_io_addr + NI6527_CTRL_REG); + devpriv->mmio_base + NI6527_CTRL_REG); - ret = request_irq(mite_irq(devpriv->mite), ni6527_interrupt, + ret = request_irq(pcidev->irq, ni6527_interrupt, IRQF_SHARED, dev->board_name, dev); if (ret < 0) dev_warn(dev->class_dev, "irq not available\n"); else - dev->irq = mite_irq(devpriv->mite); + dev->irq = pcidev->irq; return 0; } @@ -428,15 +421,11 @@ static void ni6527_detach(struct comedi_device *dev) { struct ni6527_private *devpriv = dev->private; - if (devpriv && devpriv->mite && devpriv->mite->daq_io_addr) + if (devpriv && devpriv->mmio_base) writeb(NI6527_CTRL_DISABLE_IRQS, - devpriv->mite->daq_io_addr + NI6527_CTRL_REG); + devpriv->mmio_base + NI6527_CTRL_REG); if (dev->irq) free_irq(dev->irq, dev); - if (devpriv && devpriv->mite) { - mite_unsetup(devpriv->mite); - mite_free(devpriv->mite); - } comedi_pci_disable(dev); }