1
2
3
4
5
6
7
8
9
10
11
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_rpf_create_links(struct vsp1_device *vsp1,
54 struct vsp1_entity *entity);
55int vsp1_wpf_create_links(struct vsp1_device *vsp1,
56 struct vsp1_entity *entity);
57
58int vsp1_rwpf_enum_mbus_code(struct v4l2_subdev *subdev,
59 struct v4l2_subdev_pad_config *cfg,
60 struct v4l2_subdev_mbus_code_enum *code);
61int vsp1_rwpf_enum_frame_size(struct v4l2_subdev *subdev,
62 struct v4l2_subdev_pad_config *cfg,
63 struct v4l2_subdev_frame_size_enum *fse);
64int vsp1_rwpf_get_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg,
65 struct v4l2_subdev_format *fmt);
66int vsp1_rwpf_set_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg,
67 struct v4l2_subdev_format *fmt);
68int vsp1_rwpf_get_selection(struct v4l2_subdev *subdev,
69 struct v4l2_subdev_pad_config *cfg,
70 struct v4l2_subdev_selection *sel);
71int vsp1_rwpf_set_selection(struct v4l2_subdev *subdev,
72 struct v4l2_subdev_pad_config *cfg,
73 struct v4l2_subdev_selection *sel);
74
75#endif
76