| .. | .. |
|---|
| 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 |
|---|