1/* 2 * vsp1_rwpf.h -- R-Car VSP1 Read and Write Pixel Formatters 3 * 4 * Copyright (C) 2013-2014 Renesas Electronics Corporation 5 * 6 * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 */ 13#ifndef __VSP1_RWPF_H__ 14#define __VSP1_RWPF_H__ 15 16#include <media/media-entity.h> 17#include <media/v4l2-ctrls.h> 18#include <media/v4l2-subdev.h> 19 20#include "vsp1.h" 21#include "vsp1_entity.h" 22#include "vsp1_video.h" 23 24#define RWPF_PAD_SINK 0 25#define RWPF_PAD_SOURCE 1 26 27struct vsp1_rwpf { 28 struct vsp1_entity entity; 29 struct vsp1_video video; 30 struct v4l2_ctrl_handler ctrls; 31 32 unsigned int max_width; 33 unsigned int max_height; 34 35 struct { 36 unsigned int left; 37 unsigned int top; 38 } location; 39 struct v4l2_rect crop; 40 41 unsigned int offsets[2]; 42 dma_addr_t buf_addr[3]; 43}; 44 45static inline struct vsp1_rwpf *to_rwpf(struct v4l2_subdev *subdev) 46{ 47 return container_of(subdev, struct vsp1_rwpf, entity.subdev); 48} 49 50struct vsp1_rwpf *vsp1_rpf_create(struct vsp1_device *vsp1, unsigned int index); 51struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index); 52 53int vsp1_rwpf_enum_mbus_code(struct v4l2_subdev *subdev, 54 struct v4l2_subdev_pad_config *cfg, 55 struct v4l2_subdev_mbus_code_enum *code); 56int vsp1_rwpf_enum_frame_size(struct v4l2_subdev *subdev, 57 struct v4l2_subdev_pad_config *cfg, 58 struct v4l2_subdev_frame_size_enum *fse); 59int vsp1_rwpf_get_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg, 60 struct v4l2_subdev_format *fmt); 61int vsp1_rwpf_set_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg, 62 struct v4l2_subdev_format *fmt); 63int vsp1_rwpf_get_selection(struct v4l2_subdev *subdev, 64 struct v4l2_subdev_pad_config *cfg, 65 struct v4l2_subdev_selection *sel); 66int vsp1_rwpf_set_selection(struct v4l2_subdev *subdev, 67 struct v4l2_subdev_pad_config *cfg, 68 struct v4l2_subdev_selection *sel); 69 70#endif /* __VSP1_RWPF_H__ */ 71