ERROR: "vb2_ops_wait_finish" [drivers/input/touchscreen/sur40.ko] undefined!

2015-10-06 Thread kbuild test robot
Hi Florian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   049e6dde7e57f0054fdc49102e7ef4830c698b46
commit: e831cd251fb91d6c25352d322743db0d17ea11dd [media] add raw video stream 
support for Samsung SUR40
date:   6 months ago
config: x86_64-randconfig-s3-10062053 (attached as .config)
reproduce:
git checkout e831cd251fb91d6c25352d322743db0d17ea11dd
# save the attached .config to linux build tree
make ARCH=x86_64 

All errors (new ones prefixed by >>):

>> ERROR: "vb2_ops_wait_finish" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ops_wait_prepare" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_fop_release" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "v4l2_fh_open" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_fop_mmap" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "video_ioctl2" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_fop_poll" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_fop_read" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_streamoff" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_streamon" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_create_bufs" [drivers/input/touchscreen/sur40.ko] 
>> undefined!
>> ERROR: "vb2_ioctl_dqbuf" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_expbuf" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_qbuf" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_querybuf" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_ioctl_reqbufs" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "__video_register_device" [drivers/input/touchscreen/sur40.ko] 
>> undefined!
>> ERROR: "video_device_release_empty" [drivers/input/touchscreen/sur40.ko] 
>> undefined!
>> ERROR: "vb2_dma_sg_init_ctx" [drivers/input/touchscreen/sur40.ko] undefined!
>> ERROR: "vb2_queue_init" [drivers/input/touchscreen/sur40.ko] undefined!

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: Binary data


Re: [PATCHv9 06/15] rc: Add HDMI CEC protocol handling

2015-10-06 Thread Russell King - ARM Linux
On Mon, Sep 07, 2015 at 03:44:35PM +0200, Hans Verkuil wrote:
> From: Kamil Debski 
> 
> Add handling of remote control events coming from the HDMI CEC bus.
> This patch includes a new keymap that maps values found in the CEC
> messages to the keys pressed and released. Also, a new protocol has
> been added to the core.
> 
> Signed-off-by: Kamil Debski 
> Signed-off-by: Hans Verkuil 

(Added Mauro)

Hmm, how is rc-cec supposed to be loaded?

At boot, I see:

[   16.577704] IR keymap rc-cec not found
[   16.586675] Registered IR keymap rc-empty
[   16.591668] input: RC for dw_hdmi as 
/devices/soc0/soc/12.hdmi/rc/rc1/input3
[   16.597769] rc1: RC for dw_hdmi as /devices/soc0/soc/12.hdmi/rc/rc1

Yet the rc-cec is a module in the filesystem, but it doesn't seem to
be loaded automatically - even after the system has booted, the module
hasn't been loaded.

It looks like it _should_ be loaded, but this plainly isn't working:

map = seek_rc_map(name);
#ifdef MODULE
if (!map) {
int rc = request_module("%s", name);
if (rc < 0) {
printk(KERN_ERR "Couldn't load IR keymap %s\n", name);
return NULL;
}
msleep(20); /* Give some time for IR to register */

map = seek_rc_map(name);
}
#endif
if (!map) {
printk(KERN_ERR "IR keymap %s not found\n", name);
return NULL;
}

Any ideas?

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 0/2] RFC: Secure Memory Allocation Framework

2015-10-06 Thread Benjamin Gaignard
I have mind few uses cases:
- the basic one when an HW device need contiguous memory.
- I have a device that could not cross some memory boundaries so I
need a specific allocator for it.
- when allocating memory for security some platform have address
constraints or need to allocate memory in specific areas (most of the
time because of firewall limited capacities in terms of regions)



2015-10-06 4:07 GMT+02:00 Laura Abbott :
> On 10/05/2015 03:11 AM, Benjamin Gaignard wrote:
>>
>> version 4 changes:
>>   - rebased on kernel 4.3-rc3
>>   - fix missing EXPORT_SYMBOL for smaf_create_handle()
>>
>> version 3 changes:
>>   - Remove ioctl for allocator selection instead provide the name of
>> the targeted allocator with allocation request.
>> Selecting allocator from userland isn't the prefered way of working
>> but is needed when the first user of the buffer is a software
>> component.
>>   - Fix issues in case of error while creating smaf handle.
>>   - Fix module license.
>>   - Update libsmaf and tests to care of the SMAF API evolution
>> https://git.linaro.org/people/benjamin.gaignard/libsmaf.git
>>
>> version 2 changes:
>>   - Add one ioctl to allow allocator selection from userspace.
>> This is required for the uses case where the first user of
>> the buffer is a software IP which can't perform dma_buf attachement.
>>   - Add name and ranking to allocator structure to be able to sort them.
>>   - Create a tiny library to test SMAF:
>> https://git.linaro.org/people/benjamin.gaignard/libsmaf.git
>>   - Fix one issue when try to secure buffer without secure module
>> registered
>>
>> The outcome of the previous RFC about how do secure data path was the need
>> of a secure memory allocator (https://lkml.org/lkml/2015/5/5/551)
>>
>> SMAF goal is to provide a framework that allow allocating and securing
>> memory by using dma_buf. Each platform have it own way to perform those
>> two
>> features so SMAF design allow to register helper modules to perform them.
>>
>> To be sure to select the best allocation method for devices SMAF implement
>> deferred allocation mechanism: memory allocation is only done when the
>> first
>> device effectively required it.
>> Allocator modules have to implement a match() to let SMAF know if they are
>> compatibles with devices needs.
>> This patch set provide an example of allocator module which use
>> dma_{alloc/free/mmap}_attrs() and check if at least one device have
>> coherent_dma_mask set to DMA_BIT_MASK(32) in match function.
>> I have named smaf-cma.c like it is done for drm_gem_cma_helper.c even if
>> a better name could be found for this file.
>>
>> Secure modules are responsibles of granting and revoking devices access
>> rights
>> on the memory. Secure module is also called to check if CPU map memory
>> into
>> kernel and user address spaces.
>> An example of secure module implementation can be found here:
>> http://git.linaro.org/people/benjamin.gaignard/optee-sdp.git
>> This code isn't yet part of the patch set because it depends on generic
>> TEE
>> which is still under discussion (https://lwn.net/Articles/644646/)
>>
>> For allocation part of SMAF code I get inspirated by Sumit Semwal work
>> about
>> constraint aware allocator.
>>
>
> Overall I like the abstraction. Do you have a use case in mind right now for
> the best allocation method? Some of the classic examples (mmu vs. no mmu)
> are gradually becoming less relevant as the systems have evolved. I was
> discussing constraints with Sumit w.r.t. Ion at plumbers so I'm curious
> about
> your uses.
>
> Thanks,
> Laura
>
>



-- 
Benjamin Gaignard

Graphic Working Group

Linaro.org │ Open source software for ARM SoCs

Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PULL FOR v4.4] smiapp module device of table

2015-10-06 Thread Sakari Ailus
Hi Mauro,

This pull request contains a single patch to add a module device of table to
the smiapp driver. Please pull.


The following changes since commit efe98010b80ec4516b2779e1b4e4a8ce16bf89fe:

  [media] DocBook: Fix remaining issues with VB2 core documentation (2015-10-05 
09:12:56 -0300)

are available in the git repository at:

  ssh://linuxtv.org/git/sailus/media_tree.git tags/smiapp-for-v4.4

for you to fetch changes up to 7eed8629b33e6ba8434d5698393241d5fe188a8a:

  smiapp: Export OF module alias information (2015-10-06 12:48:15 +0300)


Javier Martinez Canillas (1):
  smiapp: Export OF module alias information

 drivers/media/i2c/smiapp/smiapp-core.c | 1 +
 1 file changed, 1 insertion(+)

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 1/2] create SMAF module

2015-10-06 Thread Benjamin Gaignard
Thanks for your review I will add a lock in smaf_handle structure.

One of the goal of smaf is to create a standard kernel API to allocate
and secure buffers to avoid forking
while implementing buffer securing feature.

One concern about ION is that the selection of the heap is done by userland
so hardware constraints need to be known by the userland, which is
problematic from my point of view.
Compare to ION I have try to introduce features like securing API,
flexible allocator selection on kernel
and the possibility to add custom allocator and securing modules.

Benjamin



2015-10-06 3:58 GMT+02:00 Laura Abbott :
> On 10/05/2015 03:11 AM, Benjamin Gaignard wrote:
>>
>> diff --git a/drivers/smaf/smaf-core.c b/drivers/smaf/smaf-core.c
>> new file mode 100644
>> index 000..37914e7
>> --- /dev/null
>> +++ b/drivers/smaf/smaf-core.c
>> @@ -0,0 +1,736 @@
>> +/*
>> + * smaf.c
>> + *
>> + * Copyright (C) Linaro SA 2015
>> + * Author: Benjamin Gaignard  for Linaro.
>> + * License terms:  GNU General Public License (GPL), version 2
>> + */
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +struct smaf_handle {
>> +   struct dma_buf *dmabuf;
>> +   struct smaf_allocator *allocator;
>> +   struct dma_buf *db_alloc;
>> +   size_t length;
>> +   unsigned int flags;
>> +   int fd;
>> +   bool is_secure;
>> +   void *secure_ctx;
>> +};
>> +
>> +/**
>> + * struct smaf_device - smaf device node private data
>> + * @misc_dev:  the misc device
>> + * @head:  list of allocator
>> + * @lock:  list and secure pointer mutex
>> + * @secure:pointer to secure functions helpers
>> + */
>> +struct smaf_device {
>> +   struct miscdevice misc_dev;
>> +   struct list_head head;
>> +   /* list and secure pointer lock*/
>> +   struct mutex lock;
>> +   struct smaf_secure *secure;
>> +};
>> +
>> +static struct smaf_device smaf_dev;
>> +
>> +/**
>> + * smaf_allow_cpu_access return true if CPU can access to memory
>> + * if their is no secure module associated to SMAF assume that CPU can
>> get
>> + * access to the memory.
>> + */
>> +static bool smaf_allow_cpu_access(struct smaf_handle *handle,
>> + unsigned long flags)
>> +{
>> +   if (!handle->is_secure)
>> +   return true;
>> +
>> +   if (!smaf_dev.secure)
>> +   return true;
>> +
>> +   if (!smaf_dev.secure->allow_cpu_access)
>> +   return true;
>> +
>> +   return smaf_dev.secure->allow_cpu_access(handle->secure_ctx,
>> flags);
>> +}
>> +
>> +static int smaf_grant_access(struct smaf_handle *handle, struct device
>> *dev,
>> +dma_addr_t addr, size_t size,
>> +enum dma_data_direction dir)
>> +{
>> +   if (!handle->is_secure)
>> +   return 0;
>> +
>> +   if (!smaf_dev.secure)
>> +   return -EINVAL;
>> +
>> +   if (!smaf_dev.secure->grant_access)
>> +   return -EINVAL;
>> +
>> +   return smaf_dev.secure->grant_access(handle->secure_ctx,
>> +dev, addr, size, dir);
>> +}
>> +
>> +static void smaf_revoke_access(struct smaf_handle *handle, struct device
>> *dev,
>> +  dma_addr_t addr, size_t size,
>> +  enum dma_data_direction dir)
>> +{
>> +   if (!handle->is_secure)
>> +   return;
>> +
>> +   if (!smaf_dev.secure)
>> +   return;
>> +
>> +   if (!smaf_dev.secure->revoke_access)
>> +   return;
>> +
>> +   smaf_dev.secure->revoke_access(handle->secure_ctx,
>> +  dev, addr, size, dir);
>> +}
>> +
>> +static int smaf_secure_handle(struct smaf_handle *handle)
>> +{
>> +   if (handle->is_secure)
>> +   return 0;
>> +
>> +   if (!smaf_dev.secure)
>> +   return -EINVAL;
>> +
>> +   if (!smaf_dev.secure->create_context)
>> +   return -EINVAL;
>> +
>> +   handle->secure_ctx = smaf_dev.secure->create_context();
>> +
>> +   if (!handle->secure_ctx)
>> +   return -EINVAL;
>> +
>> +   handle->is_secure = true;
>> +   return 0;
>> +}
>> +
>> +static int smaf_unsecure_handle(struct smaf_handle *handle)
>> +{
>> +   if (!handle->is_secure)
>> +   return 0;
>> +
>> +   if (!smaf_dev.secure)
>> +   return -EINVAL;
>> +
>> +   if (!smaf_dev.secure->destroy_context)
>> +   return -EINVAL;
>> +
>> +   if (smaf_dev.secure->destroy_context(handle->secure_ctx))
>> +   return -EINVAL;
>> +
>> +   handle->secure_ctx = NULL;
>> +   handle->is_secure = false;
>> +   return 0;
>> +}
>
>
> All these functions need to be protected by a lock, 

cron job: media_tree daily build: ERRORS

2015-10-06 Thread Hans Verkuil
This message is generated daily by a cron job that builds media_tree for
the kernels and architectures in the list below.

Results of the daily build of media_tree:

date:   Wed Oct  7 04:00:16 CEST 2015
git branch: test
git hash:   efe98010b80ec4516b2779e1b4e4a8ce16bf89fe
gcc version:i686-linux-gcc (GCC) 5.1.0
sparse version: v0.5.0-51-ga53cea2
smatch version: 0.4.1-3153-g7d56ab3
host hardware:  x86_64
host os:4.0.0-3.slh.1-amd64

linux-git-arm-at91: OK
linux-git-arm-davinci: OK
linux-git-arm-exynos: OK
linux-git-arm-mx: OK
linux-git-arm-omap: OK
linux-git-arm-omap1: OK
linux-git-arm-pxa: OK
linux-git-blackfin-bf561: OK
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-sh: OK
linux-git-x86_64: OK
linux-2.6.32.27-i686: ERRORS
linux-2.6.33.7-i686: ERRORS
linux-2.6.34.7-i686: ERRORS
linux-2.6.35.9-i686: ERRORS
linux-2.6.36.4-i686: ERRORS
linux-2.6.37.6-i686: ERRORS
linux-2.6.38.8-i686: ERRORS
linux-2.6.39.4-i686: ERRORS
linux-3.0.60-i686: ERRORS
linux-3.1.10-i686: ERRORS
linux-3.2.37-i686: ERRORS
linux-3.3.8-i686: ERRORS
linux-3.4.27-i686: ERRORS
linux-3.5.7-i686: ERRORS
linux-3.6.11-i686: ERRORS
linux-3.7.4-i686: ERRORS
linux-3.8-i686: ERRORS
linux-3.9.2-i686: ERRORS
linux-3.10.1-i686: ERRORS
linux-3.11.1-i686: ERRORS
linux-3.12.23-i686: ERRORS
linux-3.13.11-i686: ERRORS
linux-3.14.9-i686: ERRORS
linux-3.15.2-i686: ERRORS
linux-3.16.7-i686: ERRORS
linux-3.17.8-i686: ERRORS
linux-3.18.7-i686: OK
linux-3.19-i686: OK
linux-4.0-i686: OK
linux-4.1.1-i686: OK
linux-4.2-i686: OK
linux-4.3-rc1-i686: OK
linux-2.6.32.27-x86_64: ERRORS
linux-2.6.33.7-x86_64: ERRORS
linux-2.6.34.7-x86_64: ERRORS
linux-2.6.35.9-x86_64: ERRORS
linux-2.6.36.4-x86_64: ERRORS
linux-2.6.37.6-x86_64: ERRORS
linux-2.6.38.8-x86_64: ERRORS
linux-2.6.39.4-x86_64: ERRORS
linux-3.0.60-x86_64: ERRORS
linux-3.1.10-x86_64: ERRORS
linux-3.2.37-x86_64: ERRORS
linux-3.3.8-x86_64: ERRORS
linux-3.4.27-x86_64: ERRORS
linux-3.5.7-x86_64: ERRORS
linux-3.6.11-x86_64: ERRORS
linux-3.7.4-x86_64: ERRORS
linux-3.8-x86_64: ERRORS
linux-3.9.2-x86_64: ERRORS
linux-3.10.1-x86_64: ERRORS
linux-3.11.1-x86_64: ERRORS
linux-3.12.23-x86_64: ERRORS
linux-3.13.11-x86_64: ERRORS
linux-3.14.9-x86_64: ERRORS
linux-3.15.2-x86_64: ERRORS
linux-3.16.7-x86_64: ERRORS
linux-3.17.8-x86_64: ERRORS
linux-3.18.7-x86_64: OK
linux-3.19-x86_64: OK
linux-4.0-x86_64: OK
linux-4.1.1-x86_64: OK
linux-4.2-x86_64: OK
linux-4.3-rc1-x86_64: OK
apps: OK
spec-git: OK
sparse: ERRORS
smatch: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Wednesday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Wednesday.tar.bz2

The Media Infrastructure API from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/media.html
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 7/7] [media] ivtv: Convert to get_user_pages_unlocked()

2015-10-06 Thread Jan Kara
From: Jan Kara 

Convert ivtv_yuv_prep_user_dma() to use get_user_pages_unlocked() so
that we don't unnecessarily leak knowledge about mm locking into drivers
code.

CC: Andy Walls 
CC: Mauro Carvalho Chehab 
CC: linux-media@vger.kernel.org
Signed-off-by: Jan Kara 
---
 drivers/media/pci/ivtv/ivtv-yuv.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/media/pci/ivtv/ivtv-yuv.c 
b/drivers/media/pci/ivtv/ivtv-yuv.c
index 2ad65eb29832..2b8e7b2f2b86 100644
--- a/drivers/media/pci/ivtv/ivtv-yuv.c
+++ b/drivers/media/pci/ivtv/ivtv-yuv.c
@@ -75,15 +75,15 @@ static int ivtv_yuv_prep_user_dma(struct ivtv *itv, struct 
ivtv_user_dma *dma,
ivtv_udma_get_page_info (_dma, (unsigned long)args->uv_source, 360 * 
uv_decode_height);
 
/* Get user pages for DMA Xfer */
-   down_read(>mm->mmap_sem);
-   y_pages = get_user_pages(current, current->mm, y_dma.uaddr, 
y_dma.page_count, 0, 1, >map[0], NULL);
+   y_pages = get_user_pages_unlocked(current, current->mm,
+   y_dma.uaddr, y_dma.page_count, 0, 1,
+   >map[0]);
uv_pages = 0; /* silence gcc. value is set and consumed only if: */
if (y_pages == y_dma.page_count) {
-   uv_pages = get_user_pages(current, current->mm,
- uv_dma.uaddr, uv_dma.page_count, 0, 1,
- >map[y_pages], NULL);
+   uv_pages = get_user_pages_unlocked(current, current->mm,
+   uv_dma.uaddr, uv_dma.page_count, 0, 1,
+   >map[y_pages]);
}
-   up_read(>mm->mmap_sem);
 
if (y_pages != y_dma.page_count || uv_pages != uv_dma.page_count) {
int rc = -EFAULT;
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH] New uAPI for DVB streaming I/O

2015-10-06 Thread Junghak Sung
Hello everybody,

I would like to introduce a new uAPI for DVB streaming I/O.
Current DVB framework uses ringbuffer mechanism to demux MPEG-2 TS data
and pass it to userspace. However, this mechanism requires extra memory copy
because DVB framework provides only read() system call, which copies the kernel
data in ringbuffer to user-space buffer.
New uAPIs can remove the memory copy by using videobuf2 framework (a.k.a VB2)
which supports ioctl() calls related to streaming I/O, including buffer
allocation and queue management.

In this patch series, I have tried to implement DVB streaming I/O without
breaking existing legacy interfaces and cover all functionalities of
read() system call with new ioctl() calls.
The user scenario is very similar to v4l2's, but belows are different.

1. Support only CAPTURE buffer type with single plane.
2. Support only MMAP memory type.
3. STREAMON will execute automatically when the first buffer is queued.
4. STREANOFF will also execute automatically when dvr or dmxdev_filter
  are released.
5. User can decide not only buffer count but also buffer size by REQBUFS.

New ioctl() calls and data structure are belows - defined in
include/uapi/linux/dvb/dmx.h.

struct dmx_buffer {
__u32   index;
__u32   bytesused;
__u32   offset;
__u32   length;
__u32   reserved[4];
};

struct dmx_requestbuffers {
__u32   count;
__u32   size;
__u32   reserved[2];
};

struct dmx_exportbuffer {
__u32   index;
__u32   flags;
__s32   fd;
__u32   reserved;
};

#define DMX_REQBUFS  _IOWR('o', 60, struct dmx_requestbuffers)
#define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer)
#define DMX_EXPBUF   _IOWR('o', 62, struct dmx_exportbuffer)
#define DMX_QBUF _IOWR('o', 63, struct dmx_buffer)
#define DMX_DQBUF_IOWR('o', 64, struct dmx_buffer)


This patch series is consisted of two parts - kernel changes and test patch
for dvbv5-zap.

1. Kernel changes
It includes implementation of the helper framework for DVB to use Videobuf2
and changes of the DVB framework inside.
If you want to probe this patch, firstly, you should apply the patch for VB2
refactoring before do that.
Please refer to this link for more information about VB2 refactoring.

[1] RFC PATCH v5 - Refactoring Videobuf2 for common use
 http://www.spinics.net/lists/linux-media/msg93810.html

This patch also have been applied to my own git.
[2] jsung/dvb-vb2.git - http://git.linuxtv.org/cgit.cgi/jsung/dvb-vb2.git/
(branch: dvb-vb2)

2. Patch for testing DVB streaming I/O with dvbv5-zap
You can use '-R' option instead of '-r' to record TS data via DVR, when you
launch the dvbv5-zap application. If you do, dvbv5-zap will use following
ioctl() calls instead of read() system call.

- DMX_REQBUFS : Request kernel to allocate buffers which count and size are
  dedicated by user.
- DMX_QUERYBUF : Get the buffer information like a memory offset which will
  mmap() and be shared with user-space.
- DMX_EXPBUF : Just for testing whether buffer-exporting success or not.
- DMX_QBUF : Pass the buffer to kernel-space.
- DMX_DQBUF : Get back the buffer which may contain TS data gathered by DVR.


Any suggestions and comments are welcome.

Regards,
Junghak

Junghak Sung (1):
  media: videobuf2: Add new uAPI for DVB streaming I/O

 drivers/media/dvb-core/Makefile  |2 +-
 drivers/media/dvb-core/dmxdev.c  |  189 +++---
 drivers/media/dvb-core/dmxdev.h  |4 +
 drivers/media/dvb-core/dvb_vb2.c |  406 ++
 drivers/media/dvb-core/dvb_vb2.h |   69 +++
 include/uapi/linux/dvb/dmx.h |   66 ++-
 6 files changed, 709 insertions(+), 27 deletions(-)
 create mode 100644 drivers/media/dvb-core/dvb_vb2.c
 create mode 100644 drivers/media/dvb-core/dvb_vb2.h

-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 0/7] get_user_pages() cleanup

2015-10-06 Thread Jan Kara
From: Jan Kara 

  Hello,

Now when the usage of get_user_pages() in media drivers got cleaned up, here
comes a series which removes knowledge about mmap_sem from a couple of other
drivers. Patches are trivial and standalone but please check, they are only
compile tested. If you are OK with them, either take them through your
respective trees or ack them and I can take care of pushing them to Linus
(probably through mm tree). Thanks.

After these patches there are some 12 call sites of get_user_pages() outside of
core code (mostly infiniband and RDMA). So we are slowly getting to the goal of
removing knowledge about page fault locking from drivers which will
consequently allow us to change the locking rules with reasonable effort.

Honza

CC: Jesper Nilsson 
CC: linux-cris-ker...@axis.com
CC: Mikael Starvik 
CC: linux-i...@vger.kernel.org
CC: Tony Luck 
CC: David Airlie 
CC: dri-de...@lists.freedesktop.org
CC: Timur Tabi 
CC: linux-r...@vger.kernel.org
CC: Roland Dreier 
CC: Daniel Vetter 
CC: David Airlie 
CC: dri-de...@lists.freedesktop.org
CC: Andy Walls 
CC: linux-media@vger.kernel.org
CC: Mauro Carvalho Chehab 
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH v6 0/4] Refactoring Videobuf2 for common use

2015-10-06 Thread Junghak Sung
Hello everybody,

This is the 6th round for refactoring Videobuf2(a.k.a VB2).
The purpose of this patch series is to separate existing VB2 framework
into core part and V4L2 specific part. So that not only V4L2 but also other
frameworks can use them to manage buffer and utilize queue.

Why do we try to make the VB2 framework to be common?

As you may know, current DVB framework uses ringbuffer mechanism to demux
MPEG-2 TS data and pass it to userspace. However, this mechanism requires
extra memory copy because DVB framework provides only read() system call for
application - read() system call copies the kernel data to user-space buffer.
So if we can use VB2 framework which supports streaming I/O and buffer
sharing mechanism, then we could enhance existing DVB framework by removing
the extra memory copy - with VB2 framework, application can access the kernel
data directly through mmap system call.

We have a plan for this work as follows:
1. Separate existing VB2 framework into three parts - VB2 core, VB2 v4l2.
   Of course, this change will not affect other v4l2-based
   device drivers. This patch series corresponds to this step.

2. Add and implement new APIs for DVB streaming I/O.
   We can remove unnecessary memory copy between kernel-space and user-space
   by using these new APIs. However, we leaves legacy interfaces as-is
   for backward compatibility.

This patch series is the first step for it.
The previous version of this patch series can be found at belows.

[1] RFC PATCH v1 - http://www.spinics.net/lists/linux-media/msg90688.html
[2] RFC PATCH v2 - http://www.spinics.net/lists/linux-media/msg92130.html
[3] RFC PATCH v3 - http://www.spinics.net/lists/linux-media/msg92953.html
[4] RFC PATCH v4 - http://www.spinics.net/lists/linux-media/msg93421.html
[5] RFC PATCH v5 - http://www.spinics.net/lists/linux-media/msg93810.html

Changes since v5
1. v5 is merged partially to media_tree
4 of 8 patches - restructuring vb2_buffer for common use - are merged to
media_tree. So, v6 is rebased on later version than that.

2. vb2_format is reverted to void *
vb2_format - which is newly defined for queue_setup() in v5 to deliver
the format information from user-space to device driver - is reverted to
void pointer. This change requires more discussion about the way to do
the format validation and decide the image size.
So, in this version, I would like to revert it to original version.

3. The change related with v4l2_buf_ops is moved
The change related with v4l2_buf_ops seems to be a sort of functional change.
So, it was moved to patch 3/4 - which includes the most of functional changes.


Changes since v4
1. Rebase on 4.3-rc1
Kernel 4.3-rc1 was released. So, this patch set is made based on
that version.

2. Modify queue_setup() argument
In previous patch set, struct v4l2_format, which is a parameter of
queue_setup(), is abstracted by using void pointer. But, it is better way to
pass the parameter with presise meaning than abstracting it.
So, replace void * with struct vb2_format which is newly defined to contain
the format information for common use.

3. Add a code to check if VB2_MAX_* match with VIDEO_MAX_*
Add a check code to videobuf2-v4l2.c where the compiler compares VIDEO_MAX_FRAME
and VB2_MAX_FRAME (and ditto for MAX_PLANES) and throws an #error if they
do not match.

4. Change the commit order
For easier review, the patch that just move things around without doing any
functional change is moved to the last.

All ideas above are from Hans and it seems to be better and right way.


Changes since v3

1. Resolve build errors
In previous patch set, the build errors prevented reviewers from applying
the patch. So, in this patch, I tryed to fix the build errors but I hadn't
the build test on all architectures except for x86 and ARM.

2. Modify descriptions for DocBook
Descriptions not complying with the DocBook rule are modified,
which was pointed out by Mauro.

3. Initialize reserved fields explicitly
The reserved fields of v4l2_buffer are initialized by 0 explicitly
when the vb2_buffer information is returned to userspace,
which was pointed out by Hans.

4. Remove unnecessary type-cast
According to Mauro's advice, the unnecessary type-cast are removed
because it's better for the compiler - rather than human - to check those
things.

5. Sperate the patch - not easy to review - into two patches
In previous patch set, patch 5 was too difficult to review. So accoring to
Hans' opinion, it separated the patch without any functional changes.


Changes since v2

1. Remove v4l2 stuffs completely from vb2_buffer
The v4l2 stuffs - v4l2_buf and v4l2_planes - are removed completely from
struct vb2_buffer. New member variables - index, type, memory - are added
to struct vb2_buffer, all of which can be used commonly. And bytesused,
length, offset, userptr, fd, data_offset are added to struct vb2_plane
for the same reason. So, we can manage video buffer by only using
struct vb2_buffer.
And, v4l2 stuffs - flags, field, 

[PATCH 1/4] media: videobuf2: Change queue_setup argument

2015-10-06 Thread Junghak Sung
Replace struct v4l2_format * with void * to make queue_setup()
for common use.
And then, modify all device drivers related with this change.

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 Documentation/video4linux/v4l2-pci-skeleton.c  |4 +++-
 drivers/input/touchscreen/sur40.c  |3 ++-
 drivers/media/dvb-frontends/rtl2832_sdr.c  |2 +-
 drivers/media/pci/cobalt/cobalt-v4l2.c |4 ++--
 drivers/media/pci/cx23885/cx23885-417.c|2 +-
 drivers/media/pci/cx23885/cx23885-dvb.c|2 +-
 drivers/media/pci/cx23885/cx23885-vbi.c|2 +-
 drivers/media/pci/cx23885/cx23885-video.c  |2 +-
 drivers/media/pci/cx25821/cx25821-video.c  |3 ++-
 drivers/media/pci/cx88/cx88-blackbird.c|2 +-
 drivers/media/pci/cx88/cx88-dvb.c  |2 +-
 drivers/media/pci/cx88/cx88-vbi.c  |2 +-
 drivers/media/pci/cx88/cx88-video.c|2 +-
 drivers/media/pci/dt3155/dt3155.c  |3 ++-
 drivers/media/pci/netup_unidvb/netup_unidvb_core.c |2 +-
 drivers/media/pci/saa7134/saa7134-ts.c |2 +-
 drivers/media/pci/saa7134/saa7134-vbi.c|2 +-
 drivers/media/pci/saa7134/saa7134-video.c  |2 +-
 drivers/media/pci/saa7134/saa7134.h|2 +-
 drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c |2 +-
 drivers/media/pci/solo6x10/solo6x10-v4l2.c |2 +-
 drivers/media/pci/sta2x11/sta2x11_vip.c|2 +-
 drivers/media/pci/tw68/tw68-video.c|3 ++-
 drivers/media/platform/am437x/am437x-vpfe.c|3 ++-
 drivers/media/platform/blackfin/bfin_capture.c |3 ++-
 drivers/media/platform/coda/coda-common.c  |3 +--
 drivers/media/platform/davinci/vpbe_display.c  |3 ++-
 drivers/media/platform/davinci/vpif_capture.c  |3 ++-
 drivers/media/platform/davinci/vpif_display.c  |3 ++-
 drivers/media/platform/exynos-gsc/gsc-m2m.c|2 +-
 drivers/media/platform/exynos4-is/fimc-capture.c   |3 ++-
 drivers/media/platform/exynos4-is/fimc-isp-video.c |3 ++-
 drivers/media/platform/exynos4-is/fimc-lite.c  |3 ++-
 drivers/media/platform/exynos4-is/fimc-m2m.c   |2 +-
 drivers/media/platform/m2m-deinterlace.c   |2 +-
 drivers/media/platform/marvell-ccic/mcam-core.c|3 ++-
 drivers/media/platform/mx2_emmaprp.c   |2 +-
 drivers/media/platform/omap3isp/ispvideo.c |2 +-
 drivers/media/platform/rcar_jpu.c  |3 ++-
 drivers/media/platform/s3c-camif/camif-capture.c   |3 ++-
 drivers/media/platform/s5p-g2d/g2d.c   |2 +-
 drivers/media/platform/s5p-jpeg/jpeg-core.c|2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_dec.c   |2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c   |2 +-
 drivers/media/platform/s5p-tv/mixer_video.c|2 +-
 drivers/media/platform/sh_veu.c|3 ++-
 drivers/media/platform/sh_vou.c|3 ++-
 drivers/media/platform/soc_camera/atmel-isi.c  |2 +-
 drivers/media/platform/soc_camera/mx2_camera.c |3 ++-
 drivers/media/platform/soc_camera/mx3_camera.c |3 ++-
 drivers/media/platform/soc_camera/rcar_vin.c   |3 ++-
 .../platform/soc_camera/sh_mobile_ceu_camera.c |6 --
 drivers/media/platform/sti/bdisp/bdisp-v4l2.c  |3 ++-
 drivers/media/platform/ti-vpe/vpe.c|2 +-
 drivers/media/platform/vim2m.c |3 ++-
 drivers/media/platform/vivid/vivid-sdr-cap.c   |2 +-
 drivers/media/platform/vivid/vivid-vbi-cap.c   |7 +++
 drivers/media/platform/vivid/vivid-vbi-out.c   |2 +-
 drivers/media/platform/vivid/vivid-vid-cap.c   |3 ++-
 drivers/media/platform/vivid/vivid-vid-out.c   |3 ++-
 drivers/media/platform/vsp1/vsp1_video.c   |3 ++-
 drivers/media/platform/xilinx/xilinx-dma.c |3 ++-
 drivers/media/usb/airspy/airspy.c  |2 +-
 drivers/media/usb/au0828/au0828-vbi.c  |3 ++-
 drivers/media/usb/au0828/au0828-video.c|3 ++-
 drivers/media/usb/em28xx/em28xx-vbi.c  |3 ++-
 drivers/media/usb/em28xx/em28xx-video.c|3 ++-
 drivers/media/usb/go7007/go7007-v4l2.c |2 +-
 drivers/media/usb/hackrf/hackrf.c  |2 +-
 drivers/media/usb/msi2500/msi2500.c|2 +-
 drivers/media/usb/pwc/pwc-if.c |2 +-
 drivers/media/usb/s2255/s2255drv.c |2 +-
 drivers/media/usb/stk1160/stk1160-v4l.c|2 +-
 drivers/media/usb/usbtv/usbtv-video.c  |3 ++-
 

[PATCH 3/4] media: videobuf2: Prepare to divide videobuf2

2015-10-06 Thread Junghak Sung
Prepare to divide videobuf2
- Separate vb2 trace events from v4l2 trace event.
- Make wrapper functions that will move to v4l2-side.
- Make vb2_core_* functions that will remain in core-side.
- Add a callback function table for buffer operation which makes vb2-core
  to be able to invoke a v4l2-side functions.
- Rename internal functions as vb2_*.

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 drivers/media/v4l2-core/Makefile |2 +-
 drivers/media/v4l2-core/v4l2-trace.c |8 +-
 drivers/media/v4l2-core/vb2-trace.c  |9 +
 drivers/media/v4l2-core/videobuf2-core.c |  561 --
 include/media/videobuf2-core.h   |   10 +
 include/trace/events/v4l2.h  |   28 +-
 include/trace/events/vb2.h   |   65 
 7 files changed, 480 insertions(+), 203 deletions(-)
 create mode 100644 drivers/media/v4l2-core/vb2-trace.c
 create mode 100644 include/trace/events/vb2.h

diff --git a/drivers/media/v4l2-core/Makefile b/drivers/media/v4l2-core/Makefile
index ad07401..1dc8bba 100644
--- a/drivers/media/v4l2-core/Makefile
+++ b/drivers/media/v4l2-core/Makefile
@@ -14,7 +14,7 @@ ifeq ($(CONFIG_OF),y)
   videodev-objs += v4l2-of.o
 endif
 ifeq ($(CONFIG_TRACEPOINTS),y)
-  videodev-objs += v4l2-trace.o
+  videodev-objs += vb2-trace.o v4l2-trace.o
 endif
 
 obj-$(CONFIG_VIDEO_V4L2) += videodev.o
diff --git a/drivers/media/v4l2-core/v4l2-trace.c 
b/drivers/media/v4l2-core/v4l2-trace.c
index 4004814..7416010 100644
--- a/drivers/media/v4l2-core/v4l2-trace.c
+++ b/drivers/media/v4l2-core/v4l2-trace.c
@@ -5,7 +5,7 @@
 #define CREATE_TRACE_POINTS
 #include 
 
-EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_buf_done);
-EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_buf_queue);
-EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_dqbuf);
-EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_qbuf);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_buf_done);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_buf_queue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_dqbuf);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_qbuf);
diff --git a/drivers/media/v4l2-core/vb2-trace.c 
b/drivers/media/v4l2-core/vb2-trace.c
new file mode 100644
index 000..61e74f5
--- /dev/null
+++ b/drivers/media/v4l2-core/vb2-trace.c
@@ -0,0 +1,9 @@
+#include 
+
+#define CREATE_TRACE_POINTS
+#include 
+
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_buf_done);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_buf_queue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_dqbuf);
+EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_qbuf);
diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
b/drivers/media/v4l2-core/videobuf2-core.c
index db685e8..2c05705 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -30,7 +30,7 @@
 #include 
 #include 
 
-#include 
+#include 
 
 static int debug;
 module_param(debug, int, 0644);
@@ -174,6 +174,14 @@ module_param(debug, int, 0644);
 
 #endif
 
+#define call_bufop(q, op, args...) \
+({ \
+   int ret = 0;\
+   if (q && q->buf_ops && q->buf_ops->op)  \
+   ret = q->buf_ops->op(args); \
+   ret;\
+})
+
 /* Flags that are set by the vb2 core */
 #define V4L2_BUFFER_MASK_FLAGS (V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_QUEUED | \
 V4L2_BUF_FLAG_DONE | V4L2_BUF_FLAG_ERROR | \
@@ -612,10 +620,10 @@ static int __verify_length(struct vb2_buffer *vb, const 
struct v4l2_buffer *b)
 }
 
 /**
- * __buffer_in_use() - return true if the buffer is in use and
+ * vb2_buffer_in_use() - return true if the buffer is in use and
  * the queue cannot be freed (by the means of REQBUFS(0)) call
  */
-static bool __buffer_in_use(struct vb2_queue *q, struct vb2_buffer *vb)
+static bool vb2_buffer_in_use(struct vb2_queue *q, struct vb2_buffer *vb)
 {
unsigned int plane;
for (plane = 0; plane < vb->num_planes; ++plane) {
@@ -640,7 +648,7 @@ static bool __buffers_in_use(struct vb2_queue *q)
 {
unsigned int buffer;
for (buffer = 0; buffer < q->num_buffers; ++buffer) {
-   if (__buffer_in_use(q, q->bufs[buffer]))
+   if (vb2_buffer_in_use(q, q->bufs[buffer]))
return true;
}
return false;
@@ -650,8 +658,9 @@ static bool __buffers_in_use(struct vb2_queue *q)
  * __fill_v4l2_buffer() - fill in a struct v4l2_buffer with information to be
  * returned to userspace
  */
-static void __fill_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b)
+static int __fill_v4l2_buffer(struct vb2_buffer *vb, void *pb)
 {
+   struct v4l2_buffer *b = pb;
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
struct vb2_queue 

[PATCH 4/4] media: videobuf2: Move v4l2-specific stuff to videobuf2-v4l2

2015-10-06 Thread Junghak Sung
Move v4l2-specific stuff from videobu2-core to videobuf2-v4l2
without doing any functional changes.

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 drivers/media/v4l2-core/videobuf2-core.c | 1843 +-
 drivers/media/v4l2-core/videobuf2-internal.h |  161 +++
 drivers/media/v4l2-core/videobuf2-v4l2.c | 1630 +++
 include/media/videobuf2-core.h   |  108 +-
 include/media/videobuf2-dvb.h|8 +-
 include/media/videobuf2-v4l2.h   |   96 ++
 6 files changed, 1951 insertions(+), 1895 deletions(-)
 create mode 100644 drivers/media/v4l2-core/videobuf2-internal.h

diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
b/drivers/media/v4l2-core/videobuf2-core.c
index 2c05705..33bdd81 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -24,172 +24,15 @@
 #include 
 #include 
 
-#include 
-#include 
-#include 
-#include 
-#include 
+#include 
 
 #include 
 
-static int debug;
-module_param(debug, int, 0644);
+#include "videobuf2-internal.h"
 
-#define dprintk(level, fmt, arg...)  \
-   do {  \
-   if (debug >= level)   \
-   pr_info("vb2: %s: " fmt, __func__, ## arg); \
-   } while (0)
-
-#ifdef CONFIG_VIDEO_ADV_DEBUG
-
-/*
- * If advanced debugging is on, then count how often each op is called
- * successfully, which can either be per-buffer or per-queue.
- *
- * This makes it easy to check that the 'init' and 'cleanup'
- * (and variations thereof) stay balanced.
- */
-
-#define log_memop(vb, op)  \
-   dprintk(2, "call_memop(%p, %d, %s)%s\n",\
-   (vb)->vb2_queue, (vb)->index, #op,  \
-   (vb)->vb2_queue->mem_ops->op ? "" : " (nop)")
-
-#define call_memop(vb, op, args...)\
-({ \
-   struct vb2_queue *_q = (vb)->vb2_queue; \
-   int err;\
-   \
-   log_memop(vb, op);  \
-   err = _q->mem_ops->op ? _q->mem_ops->op(args) : 0;  \
-   if (!err)   \
-   (vb)->cnt_mem_ ## op++; \
-   err;\
-})
-
-#define call_ptr_memop(vb, op, args...)
\
-({ \
-   struct vb2_queue *_q = (vb)->vb2_queue; \
-   void *ptr;  \
-   \
-   log_memop(vb, op);  \
-   ptr = _q->mem_ops->op ? _q->mem_ops->op(args) : NULL;   \
-   if (!IS_ERR_OR_NULL(ptr))   \
-   (vb)->cnt_mem_ ## op++; \
-   ptr;\
-})
-
-#define call_void_memop(vb, op, args...)   \
-({ \
-   struct vb2_queue *_q = (vb)->vb2_queue; \
-   \
-   log_memop(vb, op);  \
-   if (_q->mem_ops->op)\
-   _q->mem_ops->op(args);  \
-   (vb)->cnt_mem_ ## op++; \
-})
-
-#define log_qop(q, op) \
-   dprintk(2, "call_qop(%p, %s)%s\n", q, #op,  \
-   (q)->ops->op ? "" : " (nop)")
-
-#define call_qop(q, op, args...)   \
-({ \
-   int err;\
-   \
-   log_qop(q, op); \
-   err = (q)->ops->op ? (q)->ops->op(args) : 0;\
-   if (!err)   \
-   (q)->cnt_ ## op++; 

[PATCH 2/4] media: videobuf2: Replace v4l2-specific data with vb2 data.

2015-10-06 Thread Junghak Sung
Simple changes that replace v4l2-specific data with vb2 data
in videobuf2-core.

enum v4l2_buf_type --> int
enum v4l2_memory --> enum vb2_memory
VIDEO_MAX_FRAME --> VB2_MAX_FRAME
VIDEO_MAX_PLANES --> VB2_MAX_PLANES
struct v4l2_fh *owner --> void *owner
V4L2_TYPE_IS_MULTIPLANAR() --> is_multiplanar
V4L2_TYPE_IS_OUTPUT() --> is_output

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 drivers/media/v4l2-core/videobuf2-core.c |  131 --
 include/media/videobuf2-core.h   |   33 ++--
 include/media/videobuf2-v4l2.h   |8 ++
 include/trace/events/v4l2.h  |5 +-
 4 files changed, 106 insertions(+), 71 deletions(-)

diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
b/drivers/media/v4l2-core/videobuf2-core.c
index 8c456f7..db685e8 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -193,7 +193,7 @@ static int __vb2_buf_mem_alloc(struct vb2_buffer *vb)
 {
struct vb2_queue *q = vb->vb2_queue;
enum dma_data_direction dma_dir =
-   V4L2_TYPE_IS_OUTPUT(q->type) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
+   q->is_output ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
void *mem_priv;
int plane;
 
@@ -347,7 +347,7 @@ static void __setup_offsets(struct vb2_queue *q, unsigned 
int n)
  *
  * Returns the number of buffers successfully allocated.
  */
-static int __vb2_queue_alloc(struct vb2_queue *q, enum v4l2_memory memory,
+static int __vb2_queue_alloc(struct vb2_queue *q, enum vb2_memory memory,
 unsigned int num_buffers, unsigned int num_planes)
 {
unsigned int buffer;
@@ -370,7 +370,7 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum 
v4l2_memory memory,
vb->memory = memory;
 
/* Allocate video buffer memory for the MMAP type */
-   if (memory == V4L2_MEMORY_MMAP) {
+   if (memory == VB2_MEMORY_MMAP) {
ret = __vb2_buf_mem_alloc(vb);
if (ret) {
dprintk(1, "failed allocating memory for "
@@ -397,7 +397,7 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum 
v4l2_memory memory,
}
 
__setup_lengths(q, buffer);
-   if (memory == V4L2_MEMORY_MMAP)
+   if (memory == VB2_MEMORY_MMAP)
__setup_offsets(q, buffer);
 
dprintk(1, "allocated %d buffers, %d plane(s) each\n",
@@ -421,9 +421,9 @@ static void __vb2_free_mem(struct vb2_queue *q, unsigned 
int buffers)
continue;
 
/* Free MMAP buffers or release USERPTR buffers */
-   if (q->memory == V4L2_MEMORY_MMAP)
+   if (q->memory == VB2_MEMORY_MMAP)
__vb2_buf_mem_free(vb);
-   else if (q->memory == V4L2_MEMORY_DMABUF)
+   else if (q->memory == VB2_MEMORY_DMABUF)
__vb2_buf_dmabuf_put(vb);
else
__vb2_buf_userptr_put(vb);
@@ -562,7 +562,7 @@ static int __verify_planes_array(struct vb2_buffer *vb, 
const struct v4l2_buffer
return -EINVAL;
}
 
-   if (b->length < vb->num_planes || b->length > VIDEO_MAX_PLANES) {
+   if (b->length < vb->num_planes || b->length > VB2_MAX_PLANES) {
dprintk(1, "incorrect planes array length, "
   "expected %d, got %d\n", vb->num_planes, b->length);
return -EINVAL;
@@ -586,8 +586,8 @@ static int __verify_length(struct vb2_buffer *vb, const 
struct v4l2_buffer *b)
 
if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) {
for (plane = 0; plane < vb->num_planes; ++plane) {
-   length = (b->memory == V4L2_MEMORY_USERPTR ||
- b->memory == V4L2_MEMORY_DMABUF)
+   length = (b->memory == VB2_MEMORY_USERPTR ||
+ b->memory == VB2_MEMORY_DMABUF)
   ? b->m.planes[plane].length
: vb->planes[plane].length;
bytesused = b->m.planes[plane].bytesused
@@ -601,7 +601,7 @@ static int __verify_length(struct vb2_buffer *vb, const 
struct v4l2_buffer *b)
return -EINVAL;
}
} else {
-   length = (b->memory == V4L2_MEMORY_USERPTR)
+   length = (b->memory == VB2_MEMORY_USERPTR)
? b->length : vb->planes[0].length;
 
if (b->bytesused > length)
@@ -670,7 +670,7 @@ static void __fill_v4l2_buffer(struct vb2_buffer *vb, 
struct v4l2_buffer *b)
b->reserved2 = 0;
b->reserved = 0;
 
-   if (V4L2_TYPE_IS_MULTIPLANAR(q->type)) {
+   if (q->is_multiplanar) {
 

[PATCH] media: videobuf2: Add new uAPI for DVB streaming I/O

2015-10-06 Thread Junghak Sung
Add new uAPI for DVB to use streaming I/O which is implemented
based on videobuf2.

- DMX_REQBUFS : Request kernel to allocate buffers which count and size
  are dedicated by user.
- DMX_QUERYBUF : Get the buffer information like a memory offset which
  will mmap() and be shared with user-space.
- DMX_EXPBUF : Just for testing whether buffer-exporting success or not.
- DMX_QBUF : Pass the buffer to kernel-space.
- DMX_DQBUF : Get back the buffer which may contain TS data.

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 drivers/media/dvb-core/Makefile  |2 +-
 drivers/media/dvb-core/dmxdev.c  |  189 +++---
 drivers/media/dvb-core/dmxdev.h  |4 +
 drivers/media/dvb-core/dvb_vb2.c |  406 ++
 drivers/media/dvb-core/dvb_vb2.h |   69 +++
 include/uapi/linux/dvb/dmx.h |   66 ++-
 6 files changed, 709 insertions(+), 27 deletions(-)
 create mode 100644 drivers/media/dvb-core/dvb_vb2.c
 create mode 100644 drivers/media/dvb-core/dvb_vb2.h

diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
index 8f22bcd..9b2e4e9 100644
--- a/drivers/media/dvb-core/Makefile
+++ b/drivers/media/dvb-core/Makefile
@@ -6,6 +6,6 @@ dvb-net-$(CONFIG_DVB_NET) := dvb_net.o
 
 dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o\
 dvb_ca_en50221.o dvb_frontend.o\
-$(dvb-net-y) dvb_ringbuffer.o dvb_math.o
+$(dvb-net-y) dvb_ringbuffer.o dvb_vb2.o dvb_math.o
 
 obj-$(CONFIG_DVB_CORE) += dvb-core.o
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index d0e3f9d..d386abe 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -30,6 +30,7 @@
 #include 
 #include 
 #include "dmxdev.h"
+#include "dvb_vb2.h"
 
 static int debug;
 
@@ -136,14 +137,8 @@ static int dvb_dvr_open(struct inode *inode, struct file 
*file)
return -ENODEV;
}
 
-   if ((file->f_flags & O_ACCMODE) == O_RDWR) {
-   if (!(dmxdev->capabilities & DMXDEV_CAP_DUPLEX)) {
-   mutex_unlock(>mutex);
-   return -EOPNOTSUPP;
-   }
-   }
-
-   if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
+   if (((file->f_flags & O_ACCMODE) == O_RDONLY)
+   || ((file->f_flags & O_ACCMODE) == O_RDWR)) {
void *mem;
if (!dvbdev->readers) {
mutex_unlock(>mutex);
@@ -155,6 +150,8 @@ static int dvb_dvr_open(struct inode *inode, struct file 
*file)
return -ENOMEM;
}
dvb_ringbuffer_init(>dvr_buffer, mem, DVR_BUFFER_SIZE);
+   dvb_vb2_init(>dvr_vb2_ctx, "dvr",
+   file->f_flags & O_NONBLOCK);
dvbdev->readers--;
}
 
@@ -192,7 +189,8 @@ static int dvb_dvr_release(struct inode *inode, struct file 
*file)
dmxdev->demux->connect_frontend(dmxdev->demux,
dmxdev->dvr_orig_fe);
}
-   if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
+   if (((file->f_flags & O_ACCMODE) == O_RDONLY)
+   || ((file->f_flags & O_ACCMODE) == O_RDWR)) {
dvbdev->readers++;
if (dmxdev->dvr_buffer.data) {
void *mem = dmxdev->dvr_buffer.data;
@@ -202,6 +200,9 @@ static int dvb_dvr_release(struct inode *inode, struct file 
*file)
spin_unlock_irq(>lock);
vfree(mem);
}
+   if (dvb_vb2_is_streaming(>dvr_vb2_ctx))
+   dvb_vb2_stream_off(>dvr_vb2_ctx);
+   dvb_vb2_release(>dvr_vb2_ctx);
}
/* TODO */
dvbdev->users--;
@@ -358,7 +359,8 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, 
size_t buffer1_len,
struct dmxdev_filter *dmxdevfilter = filter->priv;
int ret;
 
-   if (dmxdevfilter->buffer.error) {
+   if (!dvb_vb2_is_streaming(>vb2_ctx)
+   && dmxdevfilter->buffer.error) {
wake_up(>buffer.queue);
return 0;
}
@@ -369,11 +371,20 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, 
size_t buffer1_len,
}
del_timer(>timer);
dprintk("dmxdev: section callback %*ph\n", 6, buffer1);
-   ret = dvb_dmxdev_buffer_write(>buffer, buffer1,
- buffer1_len);
-   if (ret == buffer1_len) {
-   ret = dvb_dmxdev_buffer_write(>buffer, buffer2,
- buffer2_len);
+
+   if (dvb_vb2_is_streaming(>vb2_ctx)) {
+   ret = dvb_vb2_fill_buffer(>vb2_ctx,
+   buffer1, 

[PATCH] media: v4l-utils: dvbv5: Streaming I/O for DVB

2015-10-06 Thread Junghak Sung
Add a new scenario to use streaming I/O for TS recording.

Signed-off-by: Junghak Sung 
Signed-off-by: Geunyoung Kim 
Acked-by: Seung-Woo Kim 
Acked-by: Inki Dae 
---
 include/linux/dvb/dmx.h |   64 
 utils/dvb/dvbv5-zap.c   |  187 ++-
 2 files changed, 249 insertions(+), 2 deletions(-)

diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h
index 425a945..66fd43b 100644
--- a/include/linux/dvb/dmx.h
+++ b/include/linux/dvb/dmx.h
@@ -138,6 +138,64 @@ struct dmx_stc {
__u64 stc;  /* output: stc in 'base'*90 kHz units */
 };
 
+/**
+ * struct dmx_buffer - dmx buffer info
+ *
+ * @index: id number of the buffer
+ * @bytesused: number of bytes occupied by data in the buffer (payload);
+ * @offset:for buffers with memory == DMX_MEMORY_MMAP;
+ * offset from the start of the device memory for this plane,
+ * (or a "cookie" that should be passed to mmap() as offset)
+ * @length:size in bytes of the buffer
+ *
+ * Contains data exchanged by application and driver using one of the streaming
+ * I/O methods.
+ */
+struct dmx_buffer {
+   __u32   index;
+   __u32   bytesused;
+   __u32   offset;
+   __u32   length;
+   __u32   reserved[4];
+};
+
+/**
+ * struct dmx_requestbuffers - request dmx buffer information
+ *
+ * @count: number of requested buffers,
+ * @size:  size in bytes of the requested buffer
+ *
+ * Contains data used for requesting a dmx buffer.
+ * All reserved fields must be set to zero.
+ */
+struct dmx_requestbuffers {
+   __u32   count;
+   __u32   size;
+   __u32   reserved[2];
+};
+
+/**
+ * struct dmx_exportbuffer - export of dmx buffer as DMABUF file descriptor
+ *
+ * @index: id number of the buffer
+ * @flags: flags for newly created file, currently only O_CLOEXEC is
+ * supported, refer to manual of open syscall for more details
+ * @fd:file descriptor associated with DMABUF (set by driver)
+ *
+ * Contains data used for exporting a dmx buffer as DMABUF file descriptor.
+ * The buffer is identified by a 'cookie' returned by DMX_QUERYBUF
+ * (identical to the cookie used to mmap() the buffer to userspace). All
+ * reserved fields must be set to zero. The field reserved0 is expected to
+ * become a structure 'type' allowing an alternative layout of the structure
+ * content. Therefore this field should not be used for any other extensions.
+ */
+struct dmx_exportbuffer {
+   __u32   index;
+   __u32   flags;
+   __s32   fd;
+   __u32   reserved[5];
+};
+
 #define DMX_START_IO('o', 41)
 #define DMX_STOP _IO('o', 42)
 #define DMX_SET_FILTER   _IOW('o', 43, struct dmx_sct_filter_params)
@@ -150,4 +208,10 @@ struct dmx_stc {
 #define DMX_ADD_PID  _IOW('o', 51, __u16)
 #define DMX_REMOVE_PID   _IOW('o', 52, __u16)
 
+#define DMX_REQBUFS  _IOWR('o', 60, struct dmx_requestbuffers)
+#define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer)
+#define DMX_EXPBUF   _IOWR('o', 62, struct dmx_exportbuffer)
+#define DMX_QBUF _IOWR('o', 63, struct dmx_buffer)
+#define DMX_DQBUF_IOWR('o', 64, struct dmx_buffer)
+
 #endif /* _DVBDMX_H_ */
diff --git a/utils/dvb/dvbv5-zap.c b/utils/dvb/dvbv5-zap.c
index 2812166..eac146b 100644
--- a/utils/dvb/dvbv5-zap.c
+++ b/utils/dvb/dvbv5-zap.c
@@ -33,6 +33,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -71,6 +72,7 @@ struct arguments {
unsigned n_apid, n_vpid, all_pids;
enum dvb_file_formats input_format, output_format;
unsigned traffic_monitor, low_traffic;
+   unsigned streaming;
char *search;
const char *cc;
 
@@ -94,6 +96,7 @@ static const struct argp_option options[] = {
{"pat", 'p', NULL,  0, N_("add pat and pmt 
to TS recording (implies -r)"), 0},
{"all-pids",'P', NULL,  0, N_("don't filter any 
pids. Instead, outputs all of them"), 0 },
{"record",  'r', NULL,  0, N_("set up 
/dev/dvb/adapterX/dvr0 for TS recording"), 0},
+   {"streaming",   'R', NULL,  0, N_("uses streaming 
I/O for TS recording"), 0},
{"silence", 's', NULL,  0, N_("increases 
silence (can be used more than once)"), 0},
{"sat_number",  'S', N_("satellite_number"),0, N_("satellite 
number. If not specified, disable DISEqC"), 0},
{"timeout", 't', N_("seconds"), 0, N_("timeout for 
zapping and for recording"), 0},
@@ -449,6 +452,171 @@ static void 

Re: [PATCH] media: videobuf2: Add new uAPI for DVB streaming I/O

2015-10-06 Thread kbuild test robot
Hi Junghak,

[auto build test ERROR on v4.3-rc4 -- if it's inappropriate base, please ignore]

config: x86_64-rhel (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

>> drivers/media/dvb-core/dvb_vb2.c:32:5: warning: 'struct vb2_format' declared 
>> inside parameter list
unsigned int sizes[], void *alloc_ctxs[])
^
>> drivers/media/dvb-core/dvb_vb2.c:32:5: warning: its scope is only this 
>> definition or declaration, which is probably not what you want
>> drivers/media/dvb-core/dvb_vb2.c:114:2: warning: initialization from 
>> incompatible pointer type
 .queue_setup  = _queue_setup,
 ^
>> drivers/media/dvb-core/dvb_vb2.c:114:2: warning: (near initialization for 
>> 'dvb_vb2_qops.queue_setup')
   drivers/media/dvb-core/dvb_vb2.c: In function '_fill_dmx_buffer':
>> drivers/media/dvb-core/dvb_vb2.c:128:15: error: 'struct vb2_buffer' has no 
>> member named 'index'
 b->index = vb->index;
  ^
>> drivers/media/dvb-core/dvb_vb2.c:129:27: error: 'struct vb2_plane' has no 
>> member named 'length'
 b->length = vb->planes[0].length;
  ^
>> drivers/media/dvb-core/dvb_vb2.c:130:30: error: 'struct vb2_plane' has no 
>> member named 'bytesused'
 b->bytesused = vb->planes[0].bytesused;
 ^
>> drivers/media/dvb-core/dvb_vb2.c:131:27: error: 'struct vb2_plane' has no 
>> member named 'm'
 b->offset = vb->planes[0].m.offset;
  ^
   drivers/media/dvb-core/dvb_vb2.c: In function '_fill_vb2_buffer':
   drivers/media/dvb-core/dvb_vb2.c:143:11: error: 'struct vb2_plane' has no 
member named 'bytesused'
 planes[0].bytesused = 0;
  ^
   drivers/media/dvb-core/dvb_vb2.c: At top level:
>> drivers/media/dvb-core/dvb_vb2.c:149:21: error: variable 'dvb_vb2_buf_ops' 
>> has initializer but incomplete type
static const struct vb2_buf_ops dvb_vb2_buf_ops = {
^
>> drivers/media/dvb-core/dvb_vb2.c:150:2: error: unknown field 
>> 'fill_user_buffer' specified in initializer
 .fill_user_buffer = _fill_dmx_buffer,
 ^
>> drivers/media/dvb-core/dvb_vb2.c:150:2: warning: excess elements in struct 
>> initializer
>> drivers/media/dvb-core/dvb_vb2.c:150:2: warning: (near initialization for 
>> 'dvb_vb2_buf_ops')
>> drivers/media/dvb-core/dvb_vb2.c:151:2: error: unknown field 
>> 'fill_vb2_buffer' specified in initializer
 .fill_vb2_buffer = _fill_vb2_buffer,
 ^
   drivers/media/dvb-core/dvb_vb2.c:151:2: warning: excess elements in struct 
initializer
   drivers/media/dvb-core/dvb_vb2.c:151:2: warning: (near initialization for 
'dvb_vb2_buf_ops')
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_init':
>> drivers/media/dvb-core/dvb_vb2.c:170:3: error: 'struct vb2_queue' has no 
>> member named 'buf_ops'
 q->buf_ops = _vb2_buf_ops;
  ^
>> drivers/media/dvb-core/dvb_vb2.c:173:2: error: implicit declaration of 
>> function 'vb2_core_queue_init' [-Werror=implicit-function-declaration]
 ret = vb2_core_queue_init(q);
 ^
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_release':
>> drivers/media/dvb-core/dvb_vb2.c:198:3: error: implicit declaration of 
>> function 'vb2_core_queue_release' [-Werror=implicit-function-declaration]
  vb2_core_queue_release(q);
  ^
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_stream_on':
>> drivers/media/dvb-core/dvb_vb2.c:211:2: error: implicit declaration of 
>> function 'vb2_core_streamon' [-Werror=implicit-function-declaration]
 ret = vb2_core_streamon(q, q->type);
 ^
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_stream_off':
>> drivers/media/dvb-core/dvb_vb2.c:237:2: error: implicit declaration of 
>> function 'vb2_core_streamoff' [-Werror=implicit-function-declaration]
 ret = vb2_core_streamoff(q, q->type);
 ^
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_reqbufs':
>> drivers/media/dvb-core/dvb_vb2.c:322:2: error: implicit declaration of 
>> function 'vb2_core_reqbufs' [-Werror=implicit-function-declaration]
 ret = vb2_core_reqbufs(>vb_q, VB2_MEMORY_MMAP, >count);
 ^
>> drivers/media/dvb-core/dvb_vb2.c:322:37: error: 'VB2_MEMORY_MMAP' undeclared 
>> (first use in this function)
 ret = vb2_core_reqbufs(>vb_q, VB2_MEMORY_MMAP, >count);
^
   drivers/media/dvb-core/dvb_vb2.c:322:37: note: each undeclared identifier is 
reported only once for each function it appears in
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_querybuf':

vim +128 drivers/media/dvb-core/dvb_vb2.c

26  if (vb2_debug >= level) 
  \
27  pr_info("vb2: %s: " fmt, __func__, ## arg); \
28  } while (0)
29  
30  static int _queue_setup(struct vb2_queue *vq, const struct vb2_format 
*fmt,
31 

Re: [PATCH] media: videobuf2: Add new uAPI for DVB streaming I/O

2015-10-06 Thread kbuild test robot
Hi Junghak,

[auto build test WARNING on v4.3-rc4 -- if it's inappropriate base, please 
ignore]

reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/media/dvb-core/dvb_vb2.c:114:35: sparse: incorrect type in 
>> initializer (incompatible argument 2 (different base types))
   drivers/media/dvb-core/dvb_vb2.c:114:35:expected int ( *queue_setup )( 
... )
   drivers/media/dvb-core/dvb_vb2.c:114:35:got int ( static [toplevel] 
* )( ... )
   drivers/media/dvb-core/dvb_vb2.c:128:22: sparse: no member 'index' in struct 
vb2_buffer
   drivers/media/dvb-core/dvb_vb2.c:129:34: sparse: no member 'length' in 
struct vb2_plane
   drivers/media/dvb-core/dvb_vb2.c:130:37: sparse: no member 'bytesused' in 
struct vb2_plane
   drivers/media/dvb-core/dvb_vb2.c:131:34: sparse: no member 'm' in struct 
vb2_plane
   drivers/media/dvb-core/dvb_vb2.c:143:18: sparse: no member 'bytesused' in 
struct vb2_plane
   drivers/media/dvb-core/dvb_vb2.c:150:10: sparse: unknown field name in 
initializer
   drivers/media/dvb-core/dvb_vb2.c:151:10: sparse: unknown field name in 
initializer
   drivers/media/dvb-core/dvb_vb2.c:170:10: sparse: no member 'buf_ops' in 
struct vb2_queue
   drivers/media/dvb-core/dvb_vb2.c:173:15: sparse: undefined identifier 
'vb2_core_queue_init'
   drivers/media/dvb-core/dvb_vb2.c:198:17: sparse: undefined identifier 
'vb2_core_queue_release'
   drivers/media/dvb-core/dvb_vb2.c:211:15: sparse: undefined identifier 
'vb2_core_streamon'
   drivers/media/dvb-core/dvb_vb2.c:237:15: sparse: undefined identifier 
'vb2_core_streamoff'
   drivers/media/dvb-core/dvb_vb2.c:322:15: sparse: undefined identifier 
'vb2_core_reqbufs'
   drivers/media/dvb-core/dvb_vb2.c:340:15: sparse: undefined identifier 
'vb2_core_querybuf'
   drivers/media/dvb-core/dvb_vb2.c:356:15: sparse: undefined identifier 
'vb2_core_expbuf'
   drivers/media/dvb-core/dvb_vb2.c:372:15: sparse: undefined identifier 
'vb2_core_qbuf'
   drivers/media/dvb-core/dvb_vb2.c:387:15: sparse: undefined identifier 
'vb2_core_dqbuf'
   drivers/media/dvb-core/dvb_vb2.c:32:5: warning: 'struct vb2_format' declared 
inside parameter list
unsigned int sizes[], void *alloc_ctxs[])
^
   drivers/media/dvb-core/dvb_vb2.c:32:5: warning: its scope is only this 
definition or declaration, which is probably not what you want
   drivers/media/dvb-core/dvb_vb2.c:114:18: warning: initialization from 
incompatible pointer type [-Wincompatible-pointer-types]
 .queue_setup  = _queue_setup,
 ^
   drivers/media/dvb-core/dvb_vb2.c:114:18: note: (near initialization for 
'dvb_vb2_qops.queue_setup')
   drivers/media/dvb-core/dvb_vb2.c: In function '_fill_dmx_buffer':
   drivers/media/dvb-core/dvb_vb2.c:128:15: error: 'struct vb2_buffer' has no 
member named 'index'
 b->index = vb->index;
  ^
   drivers/media/dvb-core/dvb_vb2.c:129:27: error: 'struct vb2_plane' has no 
member named 'length'
 b->length = vb->planes[0].length;
  ^
   drivers/media/dvb-core/dvb_vb2.c:130:30: error: 'struct vb2_plane' has no 
member named 'bytesused'
 b->bytesused = vb->planes[0].bytesused;
 ^
   drivers/media/dvb-core/dvb_vb2.c:131:27: error: 'struct vb2_plane' has no 
member named 'm'
 b->offset = vb->planes[0].m.offset;
  ^
   drivers/media/dvb-core/dvb_vb2.c: In function '_fill_vb2_buffer':
   drivers/media/dvb-core/dvb_vb2.c:143:11: error: 'struct vb2_plane' has no 
member named 'bytesused'
 planes[0].bytesused = 0;
  ^
   drivers/media/dvb-core/dvb_vb2.c: At top level:
   drivers/media/dvb-core/dvb_vb2.c:149:21: error: variable 'dvb_vb2_buf_ops' 
has initializer but incomplete type
static const struct vb2_buf_ops dvb_vb2_buf_ops = {
^
   drivers/media/dvb-core/dvb_vb2.c:150:2: error: unknown field 
'fill_user_buffer' specified in initializer
 .fill_user_buffer = _fill_dmx_buffer,
 ^
   drivers/media/dvb-core/dvb_vb2.c:150:22: warning: excess elements in struct 
initializer
 .fill_user_buffer = _fill_dmx_buffer,
 ^
   drivers/media/dvb-core/dvb_vb2.c:150:22: note: (near initialization for 
'dvb_vb2_buf_ops')
   drivers/media/dvb-core/dvb_vb2.c:151:2: error: unknown field 
'fill_vb2_buffer' specified in initializer
 .fill_vb2_buffer = _fill_vb2_buffer,
 ^
   drivers/media/dvb-core/dvb_vb2.c:151:21: warning: excess elements in struct 
initializer
 .fill_vb2_buffer = _fill_vb2_buffer,
^
   drivers/media/dvb-core/dvb_vb2.c:151:21: note: (near initialization for 
'dvb_vb2_buf_ops')
   drivers/media/dvb-core/dvb_vb2.c: In function 'dvb_vb2_init':
   drivers/media/dvb-core/dvb_vb2.c:170:3: error: 'struct vb2_queue' has no 
member named 'buf_ops'
 q->buf_ops = _vb2_buf_ops;
  ^
   

Re: [PATCHv9 07/15] cec: add HDMI CEC framework

2015-10-06 Thread Russell King - ARM Linux
On Mon, Sep 07, 2015 at 03:44:36PM +0200, Hans Verkuil wrote:
> From: Hans Verkuil 
> 
> The added HDMI CEC framework provides a generic kernel interface for
> HDMI CEC devices.
> 
> Signed-off-by: Hans Verkuil 
> [k.deb...@samsung.com: Merged CEC Updates commit by Hans Verkuil]
> [k.deb...@samsung.com: Merged Update author commit by Hans Verkuil]
> [k.deb...@samsung.com: change kthread handling when setting logical
> address]
> [k.deb...@samsung.com: code cleanup and fixes]
> [k.deb...@samsung.com: add missing CEC commands to match spec]
> [k.deb...@samsung.com: add RC framework support]
> [k.deb...@samsung.com: move and edit documentation]
> [k.deb...@samsung.com: add vendor id reporting]
> [k.deb...@samsung.com: add possibility to clear assigned logical
> addresses]
> [k.deb...@samsung.com: documentation fixes, clenaup and expansion]
> [k.deb...@samsung.com: reorder of API structs and add reserved fields]
> [k.deb...@samsung.com: fix handling of events and fix 32/64bit timespec
> problem]
> [k.deb...@samsung.com: add cec.h to include/uapi/linux/Kbuild]
> [k.deb...@samsung.com: add sequence number handling]
> [k.deb...@samsung.com: add passthrough mode]
> [k.deb...@samsung.com: fix CEC defines, add missing CEC 2.0 commands]
> minor additions]
> Signed-off-by: Kamil Debski 
> Signed-off-by: Hans Verkuil 

I don't see much in the way of support for source devices in this:
how do we handle hotplug of the sink, and how to do we configure the
physical address?

Surely you aren't proposing that drivers should write directly to
adap->phys_addr without calling some notification function that the
physical address has changed?

Please can you give some guidance on how a HDMI source bridge driver
should deal with these issues.  Thanks.

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: drivers/media/pci/netup_unidvb/netup_unidvb_core.c:417:18: error: too many arguments to function 'horus3a_attach'

2015-10-06 Thread Javier Martinez Canillas
Hello Fengguang,

On Sun, Oct 4, 2015 at 11:43 PM, kbuild test robot
 wrote:
> Hi Kozlov,
>
> FYI, the error/warning still remains.
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
> master
> head:   049e6dde7e57f0054fdc49102e7ef4830c698b46
> commit: 52b1eaf4c59a3bbd07afbb4ab4f43418a807d02e [media] netup_unidvb: NetUP 
> Universal DVB-S/S2/T/T2/C PCI-E card driver
> date:   8 weeks ago
> config: x86_64-randconfig-n0-10050530 (attached as .config)
> reproduce:
> git checkout 52b1eaf4c59a3bbd07afbb4ab4f43418a807d02e
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> All error/warnings (new ones prefixed by >>):
>
>In file included from 
> drivers/media/pci/netup_unidvb/netup_unidvb_core.c:34:0:
>drivers/media/dvb-frontends/horus3a.h:51:13: warning: 'struct 
> cxd2820r_config' declared inside parameter list
>  struct i2c_adapter *i2c)
>

A fix for this build issue is already queued [0] in the media_tree
fixes branch and AFAIU it will be pushed to mainline soon.

Best regards,
Javier

[0]: 
http://git.linuxtv.org/cgit.cgi/media_tree.git/commit/?h=fixes=de5abc98bf34e06d7accd943c4057843db921f00
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html