1. 14 Feb, 2011 1 commit
    • Anatolij Gustschin's avatar
      dma: ipu_idmac: do not lose valid received data in the irq handler · a646bd7f
      Anatolij Gustschin authored
      Currently when two or more buffers are queued by the camera driver
      and so the double buffering is enabled in the idmac, we lose one
      frame comming from CSI since the reporting of arrival of the first
      frame is deferred by the DMAIC_7_EOF interrupt handler and reporting
      of the arrival of the last frame is not done at all. So when requesting
      N frames from the image sensor we actually receive N - 1 frames in
      user space.
      
      The reason for this behaviour is that the DMAIC_7_EOF interrupt
      handler misleadingly assumes that the CUR_BUF flag is pointing to the
      buffer used by the IDMAC. Actually it is not the case since the
      CUR_BUF flag will be flipped by the FSU when the FSU is sending the
      <TASK>_NEW_FRM_RDY signal when new frame data is delivered by the CSI.
      When sending this singal, FSU updates the DMA_CUR_BUF and the
      DMA_BUFx_RDY flags: the DMA_CUR_BUF is flipped, the DMA_BUFx_RDY
      is cleared, indicating that the frame data is beeing written by
      the IDMAC to the pointed buffer. DMA_BUFx_RDY is supposed to be
      set to the ready state again by the MCU, when it has handled the
      received data. DMAIC_7_CUR_BUF flag won't be flipped here by the
      IPU, so waiting for this event in the EOF interrupt handler is wrong.
      Actually there is no spurious interrupt as described in the comments,
      this is the valid DMAIC_7_EOF interrupt indicating reception of the
      frame from CSI.
      
      The patch removes code that waits for flipping of the DMAIC_7_CUR_BUF
      flag in the DMAIC_7_EOF interrupt handler. As the comment in the
      current code denotes, this waiting doesn't help anyway. As a result
      of this removal the reporting of the first arrived frame is not
      deferred to the time of arrival of the next frame and the drivers
      software flag 'ichan->active_buffer' is in sync with DMAIC_7_CUR_BUF
      flag, so the reception of all requested frames works.
      
      This has been verified on the hardware which is triggering the
      image sensor by the programmable state machine, allowing to
      obtain exact number of frames. On this hardware we do not tolerate
      losing frames.
      
      This patch also removes resetting the DMA_BUFx_RDY flags of
      all channels in ipu_disable_channel() since transfers on other
      DMA channels might be triggered by other running tasks and the
      buffers should always be ready for data sending or reception.
      Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
      Reviewed-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Tested-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      a646bd7f
  2. 31 Jan, 2011 2 commits
  3. 30 Jan, 2011 3 commits
  4. 22 Jan, 2011 2 commits
    • Linus Torvalds's avatar
      Linux 2.6.38-rc2 · 1bae4ce2
      Linus Torvalds authored
      1bae4ce2
    • Linus Torvalds's avatar
      Merge branch 'media_fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 · 13a3cec8
      Linus Torvalds authored
      * 'media_fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (101 commits)
        [media] staging/lirc: fix mem leaks and ptr err usage
        [media] hdpvr: reduce latency of i2c read/write w/recycled buffer
        [media] hdpvr: enable IR part
        [media] rc/mceusb: timeout should be in ns, not us
        [media] v4l2-device: fix 'use-after-freed' oops
        [media] v4l2-dev: don't memset video_device.dev
        [media] zoran: use video_device_alloc instead of kmalloc
        [media] w9966: zero device state after a detach
        [media] v4l: Fix a use-before-set in the control framework
        [media] v4l: Include linux/videodev2.h in media/v4l2-ctrls.h
        [media] DocBook/v4l: update V4L2 revision and update copyright years
        [media] DocBook/v4l: fix validation error in dev-rds.xml
        [media] v4l2-ctrls: queryctrl shouldn't attempt to replace V4L2_CID_PRIVATE_BASE IDs
        [media] v4l2-ctrls: fix missing 'read-only' check
        [media] pvrusb2: Provide more information about IR units to lirc_zilog and ir-kbd-i2c
        [media] ir-kbd-i2c: Add back defaults setting for Zilog Z8's at addr 0x71
        [media] lirc_zilog: Update TODO.lirc_zilog
        [media] lirc_zilog: Add Andy Walls to copyright notice and authors list
        [media] lirc_zilog: Remove useless struct i2c_driver.command function
        [media] lirc_zilog: Remove unneeded tests for existence of the IR Tx function
        ...
      13a3cec8
  5. 21 Jan, 2011 32 commits