Commit | Line | Data |
---|---|---|
26e0ca22 LP |
1 | /* |
2 | * vsp1_rwpf.h -- R-Car VSP1 Read and Write Pixel Formatters | |
3 | * | |
8a1edc55 | 4 | * Copyright (C) 2013-2014 Renesas Electronics Corporation |
26e0ca22 LP |
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> | |
7578c204 | 17 | #include <media/v4l2-ctrls.h> |
26e0ca22 LP |
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 | ||
b6af10cd LP |
27 | struct vsp1_rwpf; |
28 | struct vsp1_video_buffer; | |
29 | ||
30 | struct vsp1_rwpf_operations { | |
31 | void (*queue)(struct vsp1_rwpf *rwpf, struct vsp1_video_buffer *buf); | |
32 | }; | |
33 | ||
26e0ca22 LP |
34 | struct vsp1_rwpf { |
35 | struct vsp1_entity entity; | |
36 | struct vsp1_video video; | |
7578c204 | 37 | struct v4l2_ctrl_handler ctrls; |
26e0ca22 | 38 | |
b6af10cd LP |
39 | const struct vsp1_rwpf_operations *ops; |
40 | ||
26e0ca22 LP |
41 | unsigned int max_width; |
42 | unsigned int max_height; | |
e5ad37b6 | 43 | |
86960eec LP |
44 | struct v4l2_pix_format_mplane format; |
45 | const struct vsp1_format_info *fmtinfo; | |
629bb6d4 LP |
46 | struct { |
47 | unsigned int left; | |
48 | unsigned int top; | |
49 | } location; | |
e5ad37b6 LP |
50 | struct v4l2_rect crop; |
51 | ||
52 | unsigned int offsets[2]; | |
857161fc | 53 | dma_addr_t buf_addr[3]; |
26e0ca22 LP |
54 | }; |
55 | ||
56 | static inline struct vsp1_rwpf *to_rwpf(struct v4l2_subdev *subdev) | |
57 | { | |
58 | return container_of(subdev, struct vsp1_rwpf, entity.subdev); | |
59 | } | |
60 | ||
61 | struct vsp1_rwpf *vsp1_rpf_create(struct vsp1_device *vsp1, unsigned int index); | |
62 | struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index); | |
63 | ||
64 | int vsp1_rwpf_enum_mbus_code(struct v4l2_subdev *subdev, | |
f7234138 | 65 | struct v4l2_subdev_pad_config *cfg, |
26e0ca22 LP |
66 | struct v4l2_subdev_mbus_code_enum *code); |
67 | int vsp1_rwpf_enum_frame_size(struct v4l2_subdev *subdev, | |
f7234138 | 68 | struct v4l2_subdev_pad_config *cfg, |
26e0ca22 | 69 | struct v4l2_subdev_frame_size_enum *fse); |
f7234138 | 70 | int vsp1_rwpf_get_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg, |
26e0ca22 | 71 | struct v4l2_subdev_format *fmt); |
f7234138 | 72 | int vsp1_rwpf_set_format(struct v4l2_subdev *subdev, struct v4l2_subdev_pad_config *cfg, |
26e0ca22 | 73 | struct v4l2_subdev_format *fmt); |
e5ad37b6 | 74 | int vsp1_rwpf_get_selection(struct v4l2_subdev *subdev, |
f7234138 | 75 | struct v4l2_subdev_pad_config *cfg, |
e5ad37b6 LP |
76 | struct v4l2_subdev_selection *sel); |
77 | int vsp1_rwpf_set_selection(struct v4l2_subdev *subdev, | |
f7234138 | 78 | struct v4l2_subdev_pad_config *cfg, |
e5ad37b6 | 79 | struct v4l2_subdev_selection *sel); |
26e0ca22 LP |
80 | |
81 | #endif /* __VSP1_RWPF_H__ */ |