2018-07-25 12:38:14 -04:00
/* SPDX-License-Identifier: GPL-2.0 */
2017-08-08 09:30:06 -04:00
/*
* camss - video . h
*
* Qualcomm MSM Camera Subsystem - V4L2 device node
*
* Copyright ( c ) 2013 - 2015 , The Linux Foundation . All rights reserved .
2018-07-25 12:38:13 -04:00
* Copyright ( C ) 2015 - 2018 Linaro Ltd .
2017-08-08 09:30:06 -04:00
*/
# ifndef QC_MSM_CAMSS_VIDEO_H
# define QC_MSM_CAMSS_VIDEO_H
# include <linux/mutex.h>
# include <linux/videodev2.h>
# include <media/media-entity.h>
# include <media/v4l2-dev.h>
# include <media/v4l2-device.h>
# include <media/v4l2-fh.h>
# include <media/v4l2-mediabus.h>
# include <media/videobuf2-v4l2.h>
struct camss_buffer {
struct vb2_v4l2_buffer vb ;
2017-08-08 09:30:09 -04:00
dma_addr_t addr [ 3 ] ;
2017-08-08 09:30:06 -04:00
struct list_head queue ;
} ;
struct camss_video ;
struct camss_video_ops {
int ( * queue_buffer ) ( struct camss_video * vid , struct camss_buffer * buf ) ;
int ( * flush_buffers ) ( struct camss_video * vid ,
enum vb2_buffer_state state ) ;
} ;
2017-08-08 09:30:09 -04:00
struct camss_format_info ;
2017-08-08 09:30:06 -04:00
struct camss_video {
struct camss * camss ;
struct vb2_queue vb2_q ;
struct video_device vdev ;
struct media_pad pad ;
struct v4l2_format active_fmt ;
enum v4l2_buf_type type ;
struct media_pipeline pipe ;
const struct camss_video_ops * ops ;
struct mutex lock ;
struct mutex q_lock ;
2017-08-08 09:30:11 -04:00
unsigned int bpl_alignment ;
unsigned int line_based ;
2017-08-08 09:30:09 -04:00
const struct camss_format_info * formats ;
unsigned int nformats ;
2017-08-08 09:30:06 -04:00
} ;
int msm_video_register ( struct camss_video * video , struct v4l2_device * v4l2_dev ,
2017-08-08 09:30:09 -04:00
const char * name , int is_pix ) ;
2017-08-08 09:30:06 -04:00
void msm_video_unregister ( struct camss_video * video ) ;
# endif /* QC_MSM_CAMSS_VIDEO_H */