1. 30 Jan, 2013 3 commits
    • Geert Uytterhoeven's avatar
      staging: comedi: ISA DMA drivers should depend on ISA_DMA_API · 5ccac0fd
      Geert Uytterhoeven authored
      
      
      m68k allmodconfig:
      
        CC [M]  drivers/staging/comedi/drivers/pcl812.o
      drivers/staging/comedi/drivers/pcl812.c: In function ‘pcl812_ai_cmd’:
      drivers/staging/comedi/drivers/pcl812.c:736: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/pcl812.c:736: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl812.c:736: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/pcl812.c:736: error: for each function it appears in.)
      drivers/staging/comedi/drivers/pcl812.c:737: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/pcl812.c:738: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/pcl812.c:739: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/pcl812.c:740: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/pcl812.c:741: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/pcl812.c:742: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/pcl812.c: In function ‘interrupt_pcl812_ai_dma’:
      drivers/staging/comedi/drivers/pcl812.c:883: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/pcl812.c:884: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl812.c: In function ‘pcl812_ai_poll’:
      drivers/staging/comedi/drivers/pcl812.c:947: error: implicit declaration of function ‘get_dma_residue’
      make[2]: *** [drivers/staging/comedi/drivers/pcl812.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/pcl816.o
      drivers/staging/comedi/drivers/pcl816.c: In function ‘interrupt_pcl816_ai_mode13_dma’:
      drivers/staging/comedi/drivers/pcl816.c:359: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/pcl816.c:366: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/pcl816.c:366: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl816.c:366: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/pcl816.c:366: error: for each function it appears in.)
      drivers/staging/comedi/drivers/pcl816.c:367: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/pcl816.c:369: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/pcl816.c:372: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/pcl816.c:378: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/pcl816.c:379: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/pcl816.c: In function ‘pcl816_ai_cmd’:
      drivers/staging/comedi/drivers/pcl816.c:629: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl816.c:631: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/pcl816.c: In function ‘pcl816_ai_poll’:
      drivers/staging/comedi/drivers/pcl816.c:679: error: implicit declaration of function ‘get_dma_residue’
      make[2]: *** [drivers/staging/comedi/drivers/pcl816.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/pcl818.o
      drivers/staging/comedi/drivers/pcl818.c: In function ‘interrupt_pcl818_ai_mode13_dma’:
      drivers/staging/comedi/drivers/pcl818.c:547: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/pcl818.c:550: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/pcl818.c:550: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl818.c:550: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/pcl818.c:550: error: for each function it appears in.)
      drivers/staging/comedi/drivers/pcl818.c:551: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/pcl818.c:552: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/pcl818.c:555: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/pcl818.c:561: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/pcl818.c:562: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/pcl818.c: In function ‘pcl818_ai_mode13dma_int’:
      drivers/staging/comedi/drivers/pcl818.c:886: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/pcl818.c:888: error: implicit declaration of function ‘clear_dma_ff’
      make[2]: *** [drivers/staging/comedi/drivers/pcl818.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/das16.o
      drivers/staging/comedi/drivers/das16.c: In function ‘das16_cmd_exec’:
      drivers/staging/comedi/drivers/das16.c:644: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/das16.c:645: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/das16.c:648: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/das16.c:650: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/das16.c:654: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/das16.c:655: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/das16.c:656: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/das16.c: In function ‘disable_dma_on_even’:
      drivers/staging/comedi/drivers/das16.c:845: error: implicit declaration of function ‘get_dma_residue’
      drivers/staging/comedi/drivers/das16.c: In function ‘das16_attach’:
      drivers/staging/comedi/drivers/das16.c:1197: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/das16.c:1197: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/das16.c:1197: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/das16.c:1197: error: for each function it appears in.)
      make[2]: *** [drivers/staging/comedi/drivers/das16.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/das1800.o
      drivers/staging/comedi/drivers/das1800.c: In function ‘das1800_flush_dma_channel’:
      drivers/staging/comedi/drivers/das1800.c:555: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/das1800.c:559: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/das1800.c:562: error: implicit declaration of function ‘get_dma_residue’
      drivers/staging/comedi/drivers/das1800.c: In function ‘das1800_flush_dma’:
      drivers/staging/comedi/drivers/das1800.c:586: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/das1800.c:603: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/das1800.c: In function ‘das1800_handle_dma’:
      drivers/staging/comedi/drivers/das1800.c:622: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/das1800.c:624: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/das1800.c:625: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/das1800.c: In function ‘das1800_init_dma’:
      drivers/staging/comedi/drivers/das1800.c:1424: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/das1800.c:1424: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/das1800.c:1424: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/das1800.c:1424: error: for each function it appears in.)
      make[2]: *** [drivers/staging/comedi/drivers/das1800.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/dt282x.o
      drivers/staging/comedi/drivers/dt282x.c: In function ‘dt282x_ao_dma_interrupt’:
      drivers/staging/comedi/drivers/dt282x.c:328: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/dt282x.c: In function ‘prep_ai_dma’:
      drivers/staging/comedi/drivers/dt282x.c:416: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/dt282x.c:416: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/dt282x.c:416: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/dt282x.c:416: error: for each function it appears in.)
      drivers/staging/comedi/drivers/dt282x.c:417: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/dt282x.c:418: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/dt282x.c:419: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/dt282x.c:420: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/dt282x.c:421: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/dt282x.c:423: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/dt282x.c: In function ‘prep_ao_dma’:
      drivers/staging/comedi/drivers/dt282x.c:439: error: ‘DMA_MODE_WRITE’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/dt282x.c: In function ‘dt282x_interrupt’:
      drivers/staging/comedi/drivers/dt282x.c:471: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/dt282x.c: In function ‘dt282x_ai_cmd’:
      drivers/staging/comedi/drivers/dt282x.c:690: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/dt282x.c: In function ‘dt282x_ao_cmd’:
      drivers/staging/comedi/drivers/dt282x.c:938: error: ‘DMA_MODE_WRITE’ undeclared (first use in this function)
      make[2]: *** [drivers/staging/comedi/drivers/dt282x.o] Error 1
        CC [M]  drivers/staging/comedi/drivers/ni_at_a2150.o
      drivers/staging/comedi/drivers/ni_at_a2150.c: In function ‘a2150_interrupt’:
      drivers/staging/comedi/drivers/ni_at_a2150.c:237: error: implicit declaration of function ‘claim_dma_lock’
      drivers/staging/comedi/drivers/ni_at_a2150.c:238: error: implicit declaration of function ‘disable_dma’
      drivers/staging/comedi/drivers/ni_at_a2150.c:241: error: implicit declaration of function ‘clear_dma_ff’
      drivers/staging/comedi/drivers/ni_at_a2150.c:249: error: implicit declaration of function ‘get_dma_residue’
      drivers/staging/comedi/drivers/ni_at_a2150.c:286: error: implicit declaration of function ‘set_dma_addr’
      drivers/staging/comedi/drivers/ni_at_a2150.c:287: error: implicit declaration of function ‘set_dma_count’
      drivers/staging/comedi/drivers/ni_at_a2150.c:288: error: implicit declaration of function ‘enable_dma’
      drivers/staging/comedi/drivers/ni_at_a2150.c:290: error: implicit declaration of function ‘release_dma_lock’
      drivers/staging/comedi/drivers/ni_at_a2150.c: In function ‘a2150_attach’:
      drivers/staging/comedi/drivers/ni_at_a2150.c:794: error: implicit declaration of function ‘set_dma_mode’
      drivers/staging/comedi/drivers/ni_at_a2150.c:794: error: ‘DMA_MODE_READ’ undeclared (first use in this function)
      drivers/staging/comedi/drivers/ni_at_a2150.c:794: error: (Each undeclared identifier is reported only once
      drivers/staging/comedi/drivers/ni_at_a2150.c:794: error: for each function it appears in.)
      make[2]: *** [drivers/staging/comedi/drivers/ni_at_a2150.o] Error 1
      
      Make PCL816, PCL818, DAS16, DAS1800, DT282X, and NI_AT_A2150 depend on
      ISA_DMA_API to fix this.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Reviewed-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5ccac0fd
    • Ian Abbott's avatar
      staging: comedi: cleanup all board minors on module exit · 682b9119
      Ian Abbott authored
      The comedi core module optionally allocates some legacy board minor
      devices on module load and cleans these up on module exit.  These are
      used for manual configuration of comedi boards (for those low-level
      comedi drivers that support manual configuration - mainly for ISA
      boards).  Other board minor devices are created and destroyed
      dynamically in response to bus device probe and remove requests.  The
      ioctl used for manual configuration (attachment) and removal
      (detachment) of devices is COMEDI_DEVCONFIG, but that works for any
      board minor device, including those that were originally created
      dynamically.
      
      If the COMEDI_DEVCONFIG ioctl is used to manually detach an
      automatically created and attached device, commit
      7d3135af
      
       ("staging: comedi: prevent
      auto-unconfig of manually configured devices") ensures that the board
      minor will no longer be automatically detached and destroyed by a bus
      device remove request.  From that point on the board minor behaves more
      like one of the comedi "legacy" board minors.  (There would be some
      justification for destroying the board minor instead, but I'd rather
      leave that decision until removal of board minors has been
      made safer than it currently is.)  Although the board minor behaves more
      like a legacy board minor, it is not currently cleaned up on module
      exit.  In fact, the module exit code will bug out because this board
      minor has not been cleaned up.
      
      Change comedi_cleanup_legacy_minors() (called from the module exit code,
      and from the module init code on error) to clean up all board minors.
      Rename the function to comedi_cleanup_board_minors() to reflect the
      change in functionality.
      Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      682b9119
    • Ian Abbott's avatar
      staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors · 754ab5c0
      Ian Abbott authored
      Comedi has two sorts of minor devices:
      (a) normal board minor devices in the range 0 to
      COMEDI_NUM_BOARD_MINORS-1 inclusive; and
      (b) special subdevice minor devices in the range COMEDI_NUM_BOARD_MINORS
      upwards that are used to open the same underlying comedi device as the
      normal board minor devices, but with non-default read and write
      subdevices for asynchronous commands.
      
      The special subdevice minor devices get created when a board supporting
      asynchronous commands is attached to a normal board minor device, and
      destroyed when the board is detached from the normal board minor device.
      One way to attach or detach a board is by using the COMEDI_DEVCONFIG
      ioctl.  This should only be used on normal board minors as the special
      subdevice minors are too ephemeral.  In particular, the change
      introduced in commit 7d3135af
      
       ("staging:
      comedi: prevent auto-unconfig of manually configured devices") breaks
      horribly for special subdevice minor devices.
      
      Since there's no legitimate use for the COMEDI_DEVCONFIG ioctl on a
      special subdevice minor device node, disallow it and return -ENOTTY.
      Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      754ab5c0
  2. 29 Jan, 2013 37 commits