25 Aug, 2016

25 commits

  • The macro gobj_to_link() is defined twice in media-entity.h.
    Let's remove one.

    Signed-off-by: Liu Ying
    Signed-off-by: Mauro Carvalho Chehab

    Liu Ying
     
  • It is likely that checking the result of the 2nd 'read16' is expected here.

    Signed-off-by: Christophe JAILLET
    Signed-off-by: Mauro Carvalho Chehab

    Christophe JAILLET
     
  • Add support for the Hauppauge WinTV quadHD ATSC version.
    IR support has not been provided, all 4 tuners, demodulators etc are working.
    Further documentation can be found on Linux TV wiki.

    Signed-off-by: Stephen Backway
    Signed-off-by: Mauro Carvalho Chehab

    Stephen Backway
     
  • When resuming from suspend-to-RAM on r8a7795/salvator-x:

    dpm_run_callback(): pm_genpd_resume_noirq+0x0/0x90 returns 1
    PM: Device fe940000.fdp1 failed to resume noirq: error 1
    dpm_run_callback(): pm_genpd_resume_noirq+0x0/0x90 returns 1
    PM: Device fe944000.fdp1 failed to resume noirq: error 1
    dpm_run_callback(): pm_genpd_resume_noirq+0x0/0x90 returns 1
    PM: Device fe948000.fdp1 failed to resume noirq: error 1

    According to its documentation, rcar_fcp_enable() returns 0 on success
    or a negative error code if an error occurs. Hence
    fdp1_pm_runtime_resume() and vsp1_pm_runtime_resume() forward its return
    value to their callers.

    However, rcar_fcp_enable() forwards the return value of
    pm_runtime_get_sync(), which can actually be 1 on success, leading to
    the resume failure above.

    To fix this, consider only negative values returned by
    pm_runtime_get_sync() to be failures.

    Fixes: 7b49235e83b2347c ("[media] v4l: Add Renesas R-Car FCP driver")

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab

    Geert Uytterhoeven
     
  • The core will do this for us now.

    Signed-off-by: Wolfram Sang
    Signed-off-by: Mauro Carvalho Chehab

    Wolfram Sang
     
  • The core will do this for us now.

    Signed-off-by: Wolfram Sang
    Signed-off-by: Mauro Carvalho Chehab

    Wolfram Sang
     
  • The core will do this for us now.

    Signed-off-by: Wolfram Sang
    Acked-by: Abylay Ospan
    Signed-off-by: Mauro Carvalho Chehab

    Wolfram Sang
     
  • Fix to return error code -ENOMEM from the i2c client register error
    handling case instead of 0, as done elsewhere in this function.

    Signed-off-by: Wei Yongjun
    Signed-off-by: Mauro Carvalho Chehab

    Wei Yongjun
     
  • If NO_DMA=y:

    ERROR: "bad_dma_ops" [drivers/media/platform/mtk-vpu/mtk-vpu.ko] undefined!

    Add a dependency on HAS_DMA to fix this.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Mauro Carvalho Chehab

    Geert Uytterhoeven
     
  • The core will do this for us now.

    Signed-off-by: Wolfram Sang
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Wolfram Sang
     
  • alloc_workqueue replaces deprecated create_singlethread_workqueue().

    The MFC device driver is a v4l2 driver which can encode/decode video
    raw/elementary streams and has support for all popular video codecs.

    The driver's watchdog_workqueue has been replaced with system_wq since
    it queues a single work item, &dev->watchdog_work, which calls for no
    ordering requirement. The work item is involved in running the watchdog
    timer and is not being used on a memory reclaim path.

    Work item has been flushed in s5p_mfc_remove() to ensure
    that there are no pending tasks while disconnecting the driver.

    Signed-off-by: Bhaktipriya Shridhar
    Acked-by: Tejun Heo
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Bhaktipriya Shridhar
     
  • Missing blank lines after declarations are making it hard to read the
    code. Fix them and also fix other checkpatch warnings at the same time.

    Signed-off-by: Shuah Khan
    Acked-by: Jacek Anaszewski
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • Removed unnecessary error message as appropriate error code is returned.
    Changed error message into a debug.

    Signed-off-by: Shuah Khan
    Reviewed-by: Javier Martinez Canillas
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • Fix misspelled error message and existing checkpatch errors in the
    error message conditional.

    WARNING: suspect code indent for conditional statements (8, 24)
    if (ctx->state != MFCINST_HEAD_PARSED &&
    [...]
    mfc_err("Can not get crop information\n");

    Signed-off-by: Shuah Khan
    Reviewed-by: Javier Martinez Canillas
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • Remove unneeded error handling on the result of a call
    to platform_get_resource() when the value is passed to
    devm_ioremap_resource().

    Signed-off-by: Wei Yongjun
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Wei Yongjun
     
  • Remove void function return statement

    Signed-off-by: Shuah Khan
    Reviewed-by: Javier Martinez Canillas
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • If s5p_mfc_release() runs after s5p_mfc_remove(), the former will access
    invalid s5p_mfc_dev pointer saved in the s5p_mfc_ctx and runs into kernel
    paging request errors.

    Clear ctx dev pointer in s5p_mfc_remove() and change s5p_mfc_release() to
    avoid work that requires ctx->dev.

    odroid kernel: Unable to handle kernel paging request at virtual address
    f17c1104
    odroid kernel: pgd = ebca4000
    odroid kernel: [f17c1104] *pgd=6e23d811, *pte=00000000, *ppte=00000000
    odroid kernel: Internal error: Oops: 807 [#1] PREEMPT SMP ARM
    odroid kernel: Modules linked in: cpufreq_userspace cpufreq_powersave
    cpufreq_conservative s5p_mfc s5p_jpeg v4l2_mem2mem
    videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_core
    v4l2_common videodev media
    odroid kernel: Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    odroid kernel: task: c2241400 ti: e7018000 task.ti: e7018000
    odroid kernel: PC is at s5p_mfc_reset+0x40/0x28c [s5p_mfc]
    odroid kernel: LR is at s5p_mfc_reset+0x34/0x28c [s5p_mfc]
    odroid kernel: pc : [] lr : [] psr: 60010013
    odroid kernel: [] (s5p_mfc_reset [s5p_mfc]) from []
    (s5p_mfc_deinit_hw+0x14/0x3c [s5p_mfc])
    odroid kernel: [] (s5p_mfc_deinit_hw [s5p_mfc]) from []
    (s5p_mfc_release+0xac/0x1c4 [s5p_mfc])
    odroid kernel: [] (s5p_mfc_release [s5p_mfc]) from []
    (v4l2_release+0x38/0x74 [videodev])
    odroid kernel: [] (v4l2_release [videodev]) from []
    (__fput+0x80/0x1c8)
    odroid kernel: [] (__fput) from []
    (task_work_run+0x94/0xc8)
    odroid kernel: [] (task_work_run) from []
    (do_work_pending+0x7c/0xa4)
    odroid kernel: [] (do_work_pending) from []
    (slow_work_pending+0xc/0x20)
    odroid kernel: Code: eb3edacc e5953078 e3a06000 e2833c11 (e5836004)

    Signed-off-by: Shuah Khan
    Tested-by: Luis de Bethencourt
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • Add missing documentation for s5p_mfc_dev structure definition.

    Signed-off-by: Shuah Khan
    Reviewed-by: Javier Martinez Canillas
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     
  • According to the V4L2 documentation the driver and card fields should be
    used to identify the driver and the device but the gsc-m2m driver fills
    those field using the platform device name, which in turn is the name of
    the device DT node.

    So not only the filled information isn't correct but also the same values
    are used in the driver, card and bus_info fields.

    Before this patch:

    Driver Info (not using libv4l2):
    Driver name : 13e00000.video-
    Card type : 13e00000.video-scaler
    Bus info : platform:13e00000.video-scaler
    Driver version: 4.7.0

    After this patch:

    Driver Info (not using libv4l2):
    Driver name : exynos-gsc
    Card type : exynos-gsc gscaler
    Bus info : platform:13e00000.video-scaler
    Driver version: 4.7.0

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Hans Verkuil
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • The driver doesn't set the device in the struct v4l2_capability bus_info
    field so v4l2-compliance reports the following error for VIDIOC_QUERYCAP:

    Required ioctls:
    fail: v4l2-compliance.cpp(537): missing bus_info prefix ('platform')
    test VIDIOC_QUERYCAP: FAIL

    This patch fixes this by filling also the device besides the bus.

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Hans Verkuil
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • The driver fills in both the struct v4l2_capability driver and card fields
    the same values, that is the driver's name plus the information if the dev
    is a decoder or an encoder.

    But the driver field has a fixed length of 16 bytes so the filled data is
    truncated:

    Driver Info (not using libv4l2):
    Driver name : s5p-jpeg decode
    Card type : s5p-jpeg decoder
    Bus info : platform:11f50000.jpeg
    Driver version: 4.7.0

    Also, this field should only contain the driver's name so use just that.
    The information if the device is a decoder or an encoder is in the card
    type field anyways.

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Jacek Anaszewski
    Acked-by: Hans Verkuil
    Reviewed-by: Shuah Khan
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • The same struct device_node * is used for looking up the I2C sensor, OF
    graph endpoint and port. So the reference count is incremented but not
    decremented for the endpoint and port nodes.

    Fix this by having separate pointers for each node looked up.

    Signed-off-by: Javier Martinez Canillas
    Tested-by: Nicolas Dufresne
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • The driver doesn't set the struct v4l2_capability cap_info field so the
    v4l2-compliance tool reports the following errors for VIDIOC_QUERYCAP:

    Required ioctls:
    VIDIOC_QUERYCAP returned 0 (Success)
    fail: v4l2-compliance.cpp(304): string empty
    fail: v4l2-compliance.cpp(528): check_ustring(vcap.bus_info, sizeof(vcap.bus_info))
    test VIDIOC_QUERYCAP: FAIL

    This patch fixes by setting the field in VIDIOC_QUERYCAP ioctl handler:

    Required ioctls:
    VIDIOC_QUERYCAP returned 0 (Success)
    test VIDIOC_QUERYCAP: OK

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Jacek Anaszewski
    Acked-by: Hans Verkuil
    Reviewed-by: Shuah Khan
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • Remove those two vars that aren't used, as reported by smatch:

    drivers/media/pci/tw5864/tw5864-video.c: In function 'tw5864_prepare_frame_headers':
    drivers/media/pci/tw5864/tw5864-video.c:1219:16: warning: variable 'space_before_sl_hdr' set but not used [-Wunused-but-set-variable]
    unsigned long space_before_sl_hdr;
    ^~~~~~~~~~~~~~~~~~~
    drivers/media/pci/tw5864/tw5864-video.c:1218:6: warning: variable 'sl_hdr' set but not used [-Wunused-but-set-variable]
    u8 *sl_hdr;
    ^~~~~~

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • As warned by smatch:
    drivers/media/pci/tw5864/tw5864-core.c:160 tw5864_h264_isr() error: double lock 'irqsave:flags'
    drivers/media/pci/tw5864/tw5864-core.c:174 tw5864_h264_isr() error: double unlock 'irqsave:flags'

    Remove the IRQ duplicated lock.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     

24 Aug, 2016

15 commits

  • Fix this warning:

    warning: (VIDEO_TW5864 && VIDEO_MEDIATEK_VCODEC) selects VIDEOBUF2_DMA_CONTIG which has unmet direct dependencies (MEDIA_SUPPORT && HAS_DMA)

    This driver depends on HAS_DMA.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Support for boards based on Techwell TW5864 chip which provides
    multichannel video & audio grabbing and encoding (H.264, MJPEG,
    ADPCM G.726).

    This submission implements only H.264 encoding of all channels at D1
    resolution.

    Thanks to Mark Thompson for help, and for contribution of
    H.264 startcode emulation prevention code.

    Signed-off-by: Andrey Utkin
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Andrey Utkin
     
  • /devel/v4l/patchwork/Documentation/media/uapi/v4l/extended-controls.rst:2116: WARNING: Inline literal start-string without end-string.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • This field was never documented, and neither was it mentioned that
    it should be zeroed by the application.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • The dma-contig and dma-sg memops require a valid struct device for
    the DMA to be handled correctly.

    Call WARN_ON and return ERR_PTR(-EINVAL) if it was NULL.

    Setting the correct device pointer was forgotten in several new driver
    submissions. This was caught during code review, but it really should be
    caught in the code.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Always return an ERR_PTR() instead of NULL.

    This makes the behavior of alloc, get_userptr and attach_dmabuf the
    same.

    Update the documentation in videobuf2-core.h as well.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • There is a TODO comment about the dma-buf being mapped in VIDIOC_QBUF
    instead of doing it closer to when the actual DMA is going to happen
    when the buffers are queued in the driver (i.e: __enqueue_in_driver).

    But there is a reason to do it earlier in QBUF, and is that userspace
    has no way to know if a exported dma-buf can be imported successfully
    and so relies on QBUF succeeding as indication that the dma-buf mapped.

    If QBUF fails, the application can fallback to another streaming I/O
    method. But moving the dma-buf mapping later when queueing the buffers
    can be too late for userspace to recover, since it may had dropped the
    buffer(s) already when it knows that the dma-buf mapping failed.

    So remove the TODO instead and change the comment to explain this.

    Suggested-by: Hans Verkuil
    Signed-off-by: Javier Martinez Canillas
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • If the VIDIOC_QBUF ioctl fails due a wrong dmabuf length, it's
    useful to get the invalid and minimum lengths as a debug info.

    Before this patch:

    vb2-core: __qbuf_dmabuf: invalid dmabuf length for plane 1

    After this patch:

    vb2-core: __qbuf_dmabuf: invalid dmabuf length 221248 for plane 1, minimum length 410880

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Sakari Ailus
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Javier Martinez Canillas
     
  • The device hardware is always running at 60 FPS, so report this both via
    PARM_IOCTL and ENUM_FRAMEINTERVALS.

    [hans.verkuil@cisco.com: fix suspect indent checkpatch warning]
    [mchehab@s-opensource.com: fix a trivial merge conflict]

    Signed-off-by: Martin Kaltenbrunner
    Signed-off-by: Florian Echtler
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Florian Echtler
     
  • V4L2_CTRL_FLAG_VOLATILE behaviour when V4L2_CTRL_FLAG_EXECUTE_ON_WRITE
    is set was not properly explained.

    Also set some hyperlink to ease the Documentation browsing.

    Credit-to: Hans Verkuil

    [mchehab@s-opensource.com: fix a trivial merge conflict]
    Reported-by: Dimitrios Katsaros
    Signed-off-by: Ricardo Ribalda Delgado
    Signed-off-by: Hans Verkuil

    Signed-off-by: Mauro Carvalho Chehab

    Ricardo Ribalda
     
  • Document that the cropping ioctls can return ENODATA if the operation
    isn't supported for the current input or output.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Returning -EINVAL indicates wrong arguments, but that's not the case
    here.

    Returning -ENOTTY is also no option, since the ioctl is implemented, but
    it just is not valid for this input.

    So use -ENODATA instead. This is also used elsewhere when an ioctl isn't
    valid for a specific input.

    In this case G/S_SELECTION returned -EINVAL for the webcam input. That
    input doesn't support cropping, instead it uses ENUM_FRAMESIZES to
    enumerate a list of discrete frame sizes.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • The old cropcap video op is now only used to pass the pixelaspect
    ratio, so rename it.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This is part of a final push to convert all drivers to g/s_selection.

    Signed-off-by: Hans Verkuil
    Cc: Mike Isely
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This is part of a final push to convert all drivers to g/s_selection.

    Signed-off-by: Hans Verkuil
    Cc: Prabhakar Lad
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil