From cd873b6f2ca7f592805c001486b036fe50c6dda4 Mon Sep 17 00:00:00 2001 From: "Guoniu.Zhou" Date: Mon, 27 Aug 2018 18:28:23 +0800 Subject: [PATCH] MLK-19343: ISI: add memory to memory support for qm and qxp 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 Reviewed-by: Sandor.yu --- drivers/media/platform/imx8/mxc-isi-hw.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/imx8/mxc-isi-hw.h b/drivers/media/platform/imx8/mxc-isi-hw.h index 77e7469c9b4a..f9fe1e5f5576 100644 --- a/drivers/media/platform/imx8/mxc-isi-hw.h +++ b/drivers/media/platform/imx8/mxc-isi-hw.h @@ -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_ */ -- 2.17.1