.. | .. |
---|
5 | 5 | #define _RKISPP_STREAM_H |
---|
6 | 6 | |
---|
7 | 7 | #include "common.h" |
---|
| 8 | +#include "params.h" |
---|
8 | 9 | |
---|
9 | 10 | #define RKISPP_FEC_BUF_MAX 7 |
---|
10 | 11 | |
---|
.. | .. |
---|
21 | 22 | enum rkispp_stream_id { |
---|
22 | 23 | STREAM_II = 0, |
---|
23 | 24 | STREAM_MB, |
---|
| 25 | + STREAM_VIR, |
---|
24 | 26 | STREAM_S0, |
---|
25 | 27 | STREAM_S1, |
---|
26 | 28 | STREAM_S2, |
---|
27 | | - STREAM_VIR, |
---|
28 | 29 | STREAM_MAX |
---|
29 | 30 | }; |
---|
30 | 31 | |
---|
.. | .. |
---|
125 | 126 | |
---|
126 | 127 | struct fec_module { |
---|
127 | 128 | 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; |
---|
129 | 132 | struct rkisp_ispp_reg *reg_buf; |
---|
130 | 133 | struct frame_debug_info dbg; |
---|
131 | 134 | spinlock_t buf_lock; |
---|
.. | .. |
---|
204 | 207 | bool is_en; |
---|
205 | 208 | }; |
---|
206 | 209 | |
---|
| 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 | + |
---|
207 | 225 | struct rkispp_vir_cpy { |
---|
208 | 226 | struct work_struct work; |
---|
209 | 227 | struct completion cmpl; |
---|
.. | .. |
---|
219 | 237 | struct fec_module fec; |
---|
220 | 238 | struct frame_debug_info dbg; |
---|
221 | 239 | struct rkispp_monitor monitor; |
---|
| 240 | + struct rkispp_stream_ops *stream_ops; |
---|
222 | 241 | struct rkispp_vir_cpy vir_cpy; |
---|
223 | 242 | struct rkisp_ispp_buf input[VIDEO_MAX_FRAME]; |
---|
224 | 243 | struct hrtimer fec_qst; |
---|
.. | .. |
---|
234 | 253 | int rkispp_get_nrbuf_fd(struct rkispp_device *dev, struct rkispp_buf_idxfd *idxfd); |
---|
235 | 254 | void rkispp_set_trigger_mode(struct rkispp_device *dev, |
---|
236 | 255 | 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); |
---|
240 | 256 | void rkispp_isr(u32 mis_val, struct rkispp_device *dev); |
---|
241 | 257 | void rkispp_unregister_stream_vdevs(struct rkispp_device *dev); |
---|
242 | 258 | 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); |
---|
243 | 282 | #endif |
---|