MLK-19343: ISI: add memory to memory support for qm and qxp
authorGuoniu.Zhou <guoniu.zhou@nxp.com>
Mon, 27 Aug 2018 10:28:23 +0000 (18:28 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
Add memory to memory support for qm and qxp. Because only
ISI channel0 can support memory to memory feature so this
feature only support one channel. User can use channel 0
as other function when it isn't used for m2m.

Signed-off-by: Guoniu.Zhou <guoniu.zhou@nxp.com>
Reviewed-by: Sandor.yu <sandor.yu@nxp.com>
drivers/media/platform/imx8/mxc-isi-hw.h

index 77e7469..f9fe1e5 100644 (file)
@@ -458,16 +458,19 @@ void mxc_isi_channel_deinit(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_config(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_enable(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_disable(struct mxc_isi_dev *mxc_isi);
-void mxc_isi_channel_set_outbuf(struct mxc_isi_dev *mxc_isi, struct mxc_isi_buffer *buf);
-void mxc_isi_frame_write_done(struct mxc_isi_dev *mxc_isi);
-void mxc_isi_frame_read_done(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_channel_set_outbuf(struct mxc_isi_dev *mxc_isi,
+                       struct mxc_isi_buffer *buf);
+void mxc_isi_cap_frame_write_done(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_frame_write_done(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_frame_read_done(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_deinterlace(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_sw_reset(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_hw_reset(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_source_config(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_flip(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_csc(struct mxc_isi_dev *mxc_isi);
-void mxc_isi_channel_set_alpha_roi0(struct mxc_isi_dev *mxc_isi, struct v4l2_rect *rect);
+void mxc_isi_channel_set_alpha_roi0(struct mxc_isi_dev *mxc_isi,
+                       struct v4l2_rect *rect);
 void mxc_isi_channel_set_alpha(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_4k(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_deinterlace(struct mxc_isi_dev *mxc_isi);
@@ -475,10 +478,22 @@ void mxc_isi_channel_set_crop(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_memory_image(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_channel_set_scaler(struct mxc_isi_dev *mxc_isi);
 
+void mxc_isi_m2m_channel_init(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_channel_config(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_channel_enable(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_channel_disable(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_config_src(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_config_dst(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_m2m_start_read(struct mxc_isi_dev *mxc_isi);
+
 void mxc_isi_clean_irq_status(struct mxc_isi_dev *mxc_isi, u32 val);
 u32 mxc_isi_get_irq_status(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_enable_irq(struct mxc_isi_dev *mxc_isi);
 void mxc_isi_disable_irq(struct mxc_isi_dev *mxc_isi);
+void mxc_isi_channel_set_m2m_out_addr(struct mxc_isi_dev *mxc_isi,
+                       struct mxc_isi_buffer *buf);
+void mxc_isi_channel_set_m2m_src_addr(struct mxc_isi_dev *mxc_isi,
+                       struct mxc_isi_buffer *buf);
 
 void dump_isi_regs(struct mxc_isi_dev *mxc_isi);
 #endif /* MXC_ISI_HW_H_ */