hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/platform/rockchip/ispp/stream.h
....@@ -5,6 +5,7 @@
55 #define _RKISPP_STREAM_H
66
77 #include "common.h"
8
+#include "params.h"
89
910 #define RKISPP_FEC_BUF_MAX 7
1011
....@@ -21,10 +22,10 @@
2122 enum rkispp_stream_id {
2223 STREAM_II = 0,
2324 STREAM_MB,
25
+ STREAM_VIR,
2426 STREAM_S0,
2527 STREAM_S1,
2628 STREAM_S2,
27
- STREAM_VIR,
2829 STREAM_MAX
2930 };
3031
....@@ -125,7 +126,9 @@
125126
126127 struct fec_module {
127128 struct list_head list_rd;
128
- struct rkispp_dummy_buffer *cur_rd;
129
+ struct list_head list_wr;
130
+ struct rkisp_ispp_buf *cur_rd;
131
+ struct rkispp_dummy_buffer *dummy_cur_rd;
129132 struct rkisp_ispp_reg *reg_buf;
130133 struct frame_debug_info dbg;
131134 spinlock_t buf_lock;
....@@ -204,6 +207,21 @@
204207 bool is_en;
205208 };
206209
210
+
211
+struct rkispp_stream_ops {
212
+ int (*config_modules)(struct rkispp_device *dev);
213
+ void (*destroy_buf)(struct rkispp_stream *stream);
214
+ void (*fec_work_event)(struct rkispp_device *dev, void *buf_rd,
215
+ bool is_isr, bool is_quick);
216
+ int (*start_isp)(struct rkispp_device *dev);
217
+ void (*check_to_force_update)(struct rkispp_device *dev, u32 mis_val);
218
+ void (*update_mi)(struct rkispp_stream *stream);
219
+ enum hrtimer_restart (*rkispp_frame_done_early)(struct hrtimer *timer);
220
+ void (*rkispp_module_work_event)(struct rkispp_device *dev,
221
+ void *buf_rd, void *buf_wr,
222
+ u32 module, bool is_isr);
223
+};
224
+
207225 struct rkispp_vir_cpy {
208226 struct work_struct work;
209227 struct completion cmpl;
....@@ -219,6 +237,7 @@
219237 struct fec_module fec;
220238 struct frame_debug_info dbg;
221239 struct rkispp_monitor monitor;
240
+ struct rkispp_stream_ops *stream_ops;
222241 struct rkispp_vir_cpy vir_cpy;
223242 struct rkisp_ispp_buf input[VIDEO_MAX_FRAME];
224243 struct hrtimer fec_qst;
....@@ -234,10 +253,30 @@
234253 int rkispp_get_nrbuf_fd(struct rkispp_device *dev, struct rkispp_buf_idxfd *idxfd);
235254 void rkispp_set_trigger_mode(struct rkispp_device *dev,
236255 struct rkispp_trigger_mode *mode);
237
-void rkispp_module_work_event(struct rkispp_device *dev,
238
- void *buf_rd, void *buf_wr,
239
- u32 module, bool is_isr);
240256 void rkispp_isr(u32 mis_val, struct rkispp_device *dev);
241257 void rkispp_unregister_stream_vdevs(struct rkispp_device *dev);
242258 int rkispp_register_stream_vdevs(struct rkispp_device *dev);
259
+void *get_pool_buf(struct rkispp_device *dev, struct rkisp_ispp_buf *dbufs);
260
+void *dbuf_to_dummy(struct dma_buf *dbuf, struct rkispp_dummy_buffer *pool, int num);
261
+void *get_list_buf(struct list_head *list, bool is_isp_ispp);
262
+void get_stream_buf(struct rkispp_stream *stream);
263
+void secure_config_mb(struct rkispp_stream *stream);
264
+
265
+#if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISPP_VERSION_V10)
266
+void rkispp_stream_init_ops_v10(struct rkispp_stream_vdev *stream_vdev);
267
+void rkispp_params_init_ops_v10(struct rkispp_params_vdev *params_vdev);
268
+#else
269
+static inline void rkispp_stream_init_ops_v10(struct rkispp_stream_vdev *stream_vdev) {}
270
+static inline void rkispp_params_init_ops_v10(struct rkispp_params_vdev *params_vdev) {}
271
+#endif
272
+
273
+#if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISPP_VERSION_V20)
274
+void rkispp_stream_init_ops_v20(struct rkispp_stream_vdev *stream_vdev);
275
+void rkispp_params_init_ops_v20(struct rkispp_params_vdev *params_vdev);
276
+#else
277
+static inline void rkispp_stream_init_ops_v20(struct rkispp_stream_vdev *stream_vdev) {}
278
+static inline void rkispp_params_init_ops_v20(struct rkispp_params_vdev *params_vdev) {}
279
+#endif
280
+int rkispp_frame_end(struct rkispp_stream *stream, u32 state);
281
+void rkispp_start_3a_run(struct rkispp_device *dev);
243282 #endif