hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/media/platform/omap/omap_voutdef.h
....@@ -11,6 +11,7 @@
1111 #ifndef OMAP_VOUTDEF_H
1212 #define OMAP_VOUTDEF_H
1313
14
+#include <media/videobuf2-dma-contig.h>
1415 #include <media/v4l2-ctrls.h>
1516 #include <video/omapfb_dss.h>
1617 #include <video/omapvrfb.h>
....@@ -37,7 +38,7 @@
3738 #define VID_MAX_WIDTH 1280 /* Largest width */
3839 #define VID_MAX_HEIGHT 720 /* Largest height */
3940
40
-/* Mimimum requirement is 2x2 for DSS */
41
+/* Minimum requirement is 2x2 for DSS */
4142 #define VID_MIN_WIDTH 2
4243 #define VID_MIN_HEIGHT 2
4344
....@@ -113,6 +114,20 @@
113114 struct omap_overlay_manager *managers[MAX_MANAGERS];
114115 };
115116
117
+/* buffer for one video frame */
118
+struct omap_vout_buffer {
119
+ /* common v4l buffer stuff -- must be first */
120
+ struct vb2_v4l2_buffer vbuf;
121
+ struct list_head queue;
122
+};
123
+
124
+static inline struct omap_vout_buffer *vb2_to_omap_vout_buffer(struct vb2_buffer *vb)
125
+{
126
+ struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
127
+
128
+ return container_of(vbuf, struct omap_vout_buffer, vbuf);
129
+}
130
+
116131 /* per-device data structure */
117132 struct omap_vout_device {
118133
....@@ -121,29 +136,12 @@
121136 struct omap2video_device *vid_dev;
122137 struct v4l2_ctrl_handler ctrl_handler;
123138 int vid;
124
- int opened;
125139
126
- /* we don't allow to change image fmt/size once buffer has
127
- * been allocated
128
- */
129
- int buffer_allocated;
130140 /* allow to reuse previously allocated buffer which is big enough */
131141 int buffer_size;
132
- /* keep buffer info across opens */
133
- unsigned long buf_virt_addr[VIDEO_MAX_FRAME];
134
- unsigned long buf_phy_addr[VIDEO_MAX_FRAME];
135142 enum omap_color_mode dss_mode;
136143
137
- /* we don't allow to request new buffer when old buffers are
138
- * still mmaped
139
- */
140
- int mmap_count;
141
-
142
- spinlock_t vbq_lock; /* spinlock for videobuf queues */
143
- unsigned long field_count; /* field counter for videobuf_buffer */
144
-
145
- /* non-NULL means streaming is in progress. */
146
- bool streaming;
144
+ u32 sequence;
147145
148146 struct v4l2_pix_format pix;
149147 struct v4l2_rect crop;
....@@ -169,19 +167,14 @@
169167 unsigned char pos;
170168
171169 int ps, vr_ps, line_length, first_int, field_id;
172
- enum v4l2_memory memory;
173
- struct videobuf_buffer *cur_frm, *next_frm;
170
+ struct omap_vout_buffer *cur_frm, *next_frm;
171
+ spinlock_t vbq_lock; /* spinlock for dma_queue */
174172 struct list_head dma_queue;
175173 u8 *queued_buf_addr[VIDEO_MAX_FRAME];
176174 u32 cropped_offset;
177175 s32 tv_field1_offset;
178176 void *isr_handle;
179
-
180
- /* Buffer queue variables */
181
- struct omap_vout_device *vout;
182
- enum v4l2_buf_type type;
183
- struct videobuf_queue vbq;
184
- int io_allowed;
177
+ struct vb2_queue vq;
185178
186179 };
187180