• Satendra Singh Thakur's avatar
    media: videobuf2: Add new uAPI for DVB streaming I/O · 57868acc
    Satendra Singh Thakur authored
    Adds a new uAPI for DVB to use streaming I/O which is implemented
    based on videobuf2, using those new ioctls:
    
    - 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.
    
    Originally developed by: Junghak Sung <jh1009.sung@samsung.com>, as
    seen at:
    	https://patchwork.linuxtv.org/patch/31613/
    	https://patchwork.kernel.org/patch/7334301/
    
    The original patch was written before merging VB2-core functionalities
    upstream. When such series was added, several adjustments were made,
    fixing some issues with	V4L2, causing the original patch to be
    non-trivially rebased.
    
    After rebased, a few bugs in the patch were fixed. The patch was
    also enhanced it and polling functionality got added.
    
    The main changes over the original patch are:
    
    dvb_vb2_fill_buffer():
    	- Set the size of the outgoing buffer after while loop using
    	  vb2_set_plane_payload;
    
    	- Added NULL check for source buffer as per normal convention
    	  of demux driver, this is called twice, first time with valid
    	  buffer second time with NULL pointer, if its not handled,
    	  it will result in  crash
    
    	- Restricted spinlock for only list_* operations
    
    dvb_vb2_init():
    	- Restricted q->io_modes to only VB2_MMAP as its the only
    	  supported mode
    
    dvb_vb2_release():
    	- Replaced the && in if condiion with &, because otherwise
    	  it was always getting satisfied.
    
    dvb_vb2_stream_off():
    	- Added list_del code for enqueud buffers upon stream off
    
    dvb_vb2_poll():
    	- Added this new function in order to support polling
    
    dvb_demux_poll() and dvb_dvr_poll()
    	- dvb_vb2_poll() is now called from these functions
    
    - Ported this patch and latest videobuf2 to lower kernel versions and
      tested auto scan.
    Co-developed-by: default avatarJunghak Sung <jh1009.sung@samsung.com>
    
    [mchehab@s-opensource.com: checkpatch fixes]
    Signed-off-by: default avatarJunghak Sung <jh1009.sung@samsung.com>
    Signed-off-by: default avatarGeunyoung Kim <nenggun.kim@samsung.com>
    Acked-by: default avatarSeung-Woo Kim <sw0312.kim@samsung.com>
    Acked-by: default avatarInki Dae <inki.dae@samsung.com>
    Signed-off-by: default avatarSatendra Singh Thakur <satendra.t@samsung.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    57868acc
dmxdev.h 5.69 KB