.. | .. |
---|
81 | 81 | ISP_START = BIT(9), |
---|
82 | 82 | ISP_ERROR = BIT(10), |
---|
83 | 83 | ISP_MIPI_ERROR = BIT(11), |
---|
| 84 | + ISP_CIF_RESET = BIT(12), |
---|
84 | 85 | }; |
---|
85 | 86 | |
---|
86 | 87 | enum rkisp_isp_inp { |
---|
.. | .. |
---|
101 | 102 | RDBK_F_RD1, |
---|
102 | 103 | RDBK_F_RD2, |
---|
103 | 104 | RDBK_F_MAX |
---|
| 105 | +}; |
---|
| 106 | + |
---|
| 107 | +/* unite mode for isp to process high resolution |
---|
| 108 | + * ISP_UNITE_TWO: image splits left and right to two isp hardware |
---|
| 109 | + * ISP_UNITE_ONE: image splits left and right to single isp hardware |
---|
| 110 | + */ |
---|
| 111 | +enum { |
---|
| 112 | + ISP_UNITE_NONE = 0, |
---|
| 113 | + ISP_UNITE_TWO = 1, |
---|
| 114 | + ISP_UNITE_ONE = 2, |
---|
| 115 | +}; |
---|
| 116 | + |
---|
| 117 | +/* left and right index |
---|
| 118 | + * ISP_UNITE_LEFT: left of image to isp process |
---|
| 119 | + * ISP_UNITE_RIGHT: right of image to isp process |
---|
| 120 | + */ |
---|
| 121 | +enum { |
---|
| 122 | + ISP_UNITE_LEFT = 0, |
---|
| 123 | + ISP_UNITE_RIGHT = 1, |
---|
104 | 124 | }; |
---|
105 | 125 | |
---|
106 | 126 | /* |
---|
.. | .. |
---|
216 | 236 | size_t resmem_size; |
---|
217 | 237 | struct rkisp_thunderboot_resmem_head tb_head; |
---|
218 | 238 | bool is_thunderboot; |
---|
| 239 | + /* first frame for rtt */ |
---|
| 240 | + bool is_rtt_first; |
---|
| 241 | + /* suspend/resume with rtt */ |
---|
| 242 | + bool is_rtt_suspend; |
---|
219 | 243 | struct rkisp_tb_stream_info tb_stream_info; |
---|
220 | 244 | unsigned int tb_addr_idx; |
---|
221 | 245 | |
---|
.. | .. |
---|
226 | 250 | bool send_fbcgain; |
---|
227 | 251 | struct rkisp_ispp_buf *cur_fbcgain; |
---|
228 | 252 | struct rkisp_buffer *cur_spbuf; |
---|
| 253 | + |
---|
| 254 | + struct completion pm_cmpl; |
---|
229 | 255 | |
---|
230 | 256 | struct work_struct rdbk_work; |
---|
231 | 257 | struct kfifo rdbk_kfifo; |
---|
.. | .. |
---|
249 | 275 | bool is_pre_on; |
---|
250 | 276 | bool is_first_double; |
---|
251 | 277 | bool is_probe_end; |
---|
| 278 | + bool is_frame_double; |
---|
| 279 | + bool is_suspend; |
---|
| 280 | + bool suspend_sync; |
---|
| 281 | + bool is_suspend_one_frame; |
---|
252 | 282 | |
---|
253 | 283 | struct rkisp_vicap_input vicap_in; |
---|
254 | 284 | |
---|
255 | 285 | u8 multi_mode; |
---|
256 | 286 | u8 multi_index; |
---|
257 | 287 | u8 rawaf_irq_cnt; |
---|
| 288 | + u8 unite_index; |
---|
258 | 289 | }; |
---|
| 290 | + |
---|
| 291 | +static inline void |
---|
| 292 | +rkisp_unite_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct) |
---|
| 293 | +{ |
---|
| 294 | + rkisp_write(dev, reg, val, is_direct); |
---|
| 295 | + if (dev->hw_dev->unite) |
---|
| 296 | + rkisp_next_write(dev, reg, val, is_direct); |
---|
| 297 | +} |
---|
| 298 | + |
---|
| 299 | +static inline void |
---|
| 300 | +rkisp_unite_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, |
---|
| 301 | + u32 val, bool is_direct) |
---|
| 302 | +{ |
---|
| 303 | + rkisp_set_bits(dev, reg, mask, val, is_direct); |
---|
| 304 | + if (dev->hw_dev->unite) |
---|
| 305 | + rkisp_next_set_bits(dev, reg, mask, val, is_direct); |
---|
| 306 | +} |
---|
| 307 | + |
---|
| 308 | +static inline void |
---|
| 309 | +rkisp_unite_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, |
---|
| 310 | + bool is_direct) |
---|
| 311 | +{ |
---|
| 312 | + rkisp_clear_bits(dev, reg, mask, is_direct); |
---|
| 313 | + if (dev->hw_dev->unite) |
---|
| 314 | + rkisp_next_clear_bits(dev, reg, mask, is_direct); |
---|
| 315 | +} |
---|
| 316 | + |
---|
| 317 | +static inline bool rkisp_link_sensor(u32 isp_inp) |
---|
| 318 | +{ |
---|
| 319 | + return isp_inp & (INP_CSI | INP_DVP | INP_LVDS); |
---|
| 320 | +} |
---|
259 | 321 | #endif |
---|