summaryrefslogtreecommitdiff
path: root/include/video
diff options
context:
space:
mode:
authorLiu Ying <victor.liu@nxp.com>2018-04-25 13:45:30 +0800
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:31:30 +0800
commitd01a3668f31222a12eb36bcb4960be23c8247207 (patch)
tree8332276d6c756e9318cd1a857ecca44bd9b61b00 /include/video
parent32cee02f2ee49a87efaf59d3f18af36009d4e07a (diff)
MLK-18162 gpu: imx: dpu: Abstract fetch unit concept
This patch abstracts fetch unit concept for all the fetch units we have - fetchdecode, fetcheco, fetchlayer and fetchwarp. They have some similar features and operations which are suitable to be abstracted. A lot of boilerplate code is removed. Signed-off-by: Liu Ying <victor.liu@nxp.com>
Diffstat (limited to 'include/video')
-rw-r--r--include/video/dpu.h392
1 files changed, 125 insertions, 267 deletions
diff --git a/include/video/dpu.h b/include/video/dpu.h
index bfbd51621376..fd429b8aa05d 100644
--- a/include/video/dpu.h
+++ b/include/video/dpu.h
@@ -18,6 +18,7 @@
#include <drm/drm_crtc.h>
#include <drm/drm_modes.h>
+#include <video/imx8-prefetch.h>
#include <video/videomode.h>
struct dpu_soc;
@@ -418,6 +419,70 @@ typedef enum {
CLKEN__FULL = 0x3,
} pixengcfg_clken_t;
+/* fetch unit types */
+enum {
+ FU_T_NA,
+ FU_T_FD,
+ FU_T_FE,
+ FU_T_FL,
+ FU_T_FW,
+};
+
+struct dpu_fetchunit;
+
+struct dpu_fetchunit_ops {
+ void (*set_burstlength)(struct dpu_fetchunit *fu,
+ dma_addr_t baddr, bool use_prefetch);
+
+ void (*set_baseaddress)(struct dpu_fetchunit *fu, dma_addr_t paddr);
+
+ void (*set_src_bpp)(struct dpu_fetchunit *fu, int bpp);
+
+ void (*set_src_stride)(struct dpu_fetchunit *fu,
+ unsigned int width, int bpp, unsigned int stride,
+ dma_addr_t baddr, bool use_prefetch);
+
+ void (*set_src_buf_dimensions)(struct dpu_fetchunit *fu,
+ unsigned int w, unsigned int h, u32 fmt,
+ bool deinterlace);
+
+ void (*set_fmt)(struct dpu_fetchunit *fu, u32 fmt, bool deinterlace);
+
+ void (*enable_src_buf)(struct dpu_fetchunit *fu);
+ void (*disable_src_buf)(struct dpu_fetchunit *fu);
+ bool (*is_enabled)(struct dpu_fetchunit *fu);
+
+ void (*set_framedimensions)(struct dpu_fetchunit *fu,
+ unsigned int w, unsigned int h,
+ bool deinterlace);
+
+ void (*set_controltrigger)(struct dpu_fetchunit *fu);
+
+ unsigned int (*get_stream_id)(struct dpu_fetchunit *fu);
+ void (*set_stream_id)(struct dpu_fetchunit *fu, unsigned int id);
+
+ void (*pin_off)(struct dpu_fetchunit *fu);
+ void (*unpin_off)(struct dpu_fetchunit *fu);
+ bool (*is_pinned_off)(struct dpu_fetchunit *fu);
+};
+
+struct dpu_fetchunit {
+ void __iomem *pec_base;
+ void __iomem *base;
+ char *name;
+ struct mutex mutex;
+ int id;
+ int sub_id; /* for fractional fetch units */
+ int type;
+ bool inuse;
+ struct dpu_soc *dpu;
+ /* see DPU_PLANE_SRC_xxx */
+ unsigned int stream_id;
+ bool pin_off;
+ struct dprc *dprc;
+ const struct dpu_fetchunit_ops *ops;
+};
+
int dpu_map_inner_irq(struct dpu_soc *dpu, int irq);
/* Constant Frame Unit */
@@ -467,239 +532,54 @@ struct dpu_extdst *dpu_ed_get(struct dpu_soc *dpu, int id);
void dpu_ed_put(struct dpu_extdst *ed);
/* Fetch Decode Unit */
-struct dpu_fetchdecode;
-int fetchdecode_pixengcfg_dynamic_src_sel(struct dpu_fetchdecode *fd,
+int fetchdecode_pixengcfg_dynamic_src_sel(struct dpu_fetchunit *fu,
fd_dynamic_src_sel_t src);
-void fetchdecode_shden(struct dpu_fetchdecode *fd, bool enable);
-void fetchdecode_baddr_autoupdate(struct dpu_fetchdecode *fd, u8 layer_mask);
-void fetchdecode_set_burstlength(struct dpu_fetchdecode *fd, dma_addr_t baddr,
- bool use_prefetch);
-void fetchdecode_baseaddress(struct dpu_fetchdecode *fd, dma_addr_t paddr);
-void fetchdecode_source_bpp(struct dpu_fetchdecode *fd, int bpp);
-void fetchdecode_source_stride(struct dpu_fetchdecode *fd, unsigned int width,
- int bpp, unsigned int stride,
- dma_addr_t baddr, bool use_prefetch);
-void fetchdecode_src_buf_dimensions(struct dpu_fetchdecode *fd, unsigned int w,
- unsigned int h, bool deinterlace);
-void fetchdecode_set_fmt(struct dpu_fetchdecode *fd, u32 fmt, bool deinterlace);
-void fetchdecode_layeroffset(struct dpu_fetchdecode *fd, unsigned int x,
+void fetchdecode_layeroffset(struct dpu_fetchunit *fd, unsigned int x,
unsigned int y);
-void fetchdecode_clipoffset(struct dpu_fetchdecode *fd, unsigned int x,
+void fetchdecode_clipoffset(struct dpu_fetchunit *fd, unsigned int x,
unsigned int y);
-void fetchdecode_clipdimensions(struct dpu_fetchdecode *fd, unsigned int w,
+void fetchdecode_clipdimensions(struct dpu_fetchunit *fd, unsigned int w,
unsigned int h);
-void fetchdecode_source_buffer_enable(struct dpu_fetchdecode *fd);
-void fetchdecode_source_buffer_disable(struct dpu_fetchdecode *fd);
-bool fetchdecode_is_enabled(struct dpu_fetchdecode *fd);
-void fetchdecode_framedimensions(struct dpu_fetchdecode *fd, unsigned int w,
- unsigned int h, bool deinterlace);
-void fetchdecode_rgb_constantcolor(struct dpu_fetchdecode *fd,
+void fetchdecode_rgb_constantcolor(struct dpu_fetchunit *fd,
u8 r, u8 g, u8 b, u8 a);
-void fetchdecode_yuv_constantcolor(struct dpu_fetchdecode *fd,
+void fetchdecode_yuv_constantcolor(struct dpu_fetchunit *fd,
u8 y, u8 u, u8 v);
-void fetchdecode_controltrigger(struct dpu_fetchdecode *fd, bool trigger);
-int fetchdecode_fetchtype(struct dpu_fetchdecode *fd, fetchtype_t *type);
-shadow_load_req_t fetchdecode_to_shdldreq_t(struct dpu_fetchdecode *fd);
-u32 fetchdecode_get_vproc_mask(struct dpu_fetchdecode *fd);
-bool fetchdecode_need_fetcheco(struct dpu_fetchdecode *fd, u32 fmt);
-unsigned int fetchdecode_get_stream_id(struct dpu_fetchdecode *fd);
-void fetchdecode_set_stream_id(struct dpu_fetchdecode *fd, unsigned int id);
-void
-fetchdecode_configure_prefetch(struct dpu_fetchdecode *fd,
- unsigned int stream_id,
- unsigned int width, unsigned int height,
- unsigned int x_offset, unsigned int y_offset,
- unsigned int stride, u32 format, u64 modifier,
- unsigned long baddr, unsigned long uv_baddr,
- bool start, bool aux_start,
- bool fb_is_interlaced);
-void fetchdecode_enable_prefetch(struct dpu_fetchdecode *fd);
-void fetchdecode_disable_prefetch(struct dpu_fetchdecode *fd);
-void fetchdecode_reg_update_prefetch(struct dpu_fetchdecode *fd);
-void fetchdecode_prefetch_first_frame_handle(struct dpu_fetchdecode *fd);
-void fetchdecode_prefetch_irq_handle(struct dpu_fetchdecode *fd);
-void fetchdecode_prefetch_enable_first_frame_irq(struct dpu_fetchdecode *fd);
-bool fetchdecode_has_prefetch(struct dpu_fetchdecode *fd);
-bool fetchdecode_prefetch_format_supported(struct dpu_fetchdecode *fd,
- u32 format, u64 modifier);
-bool fetchdecode_prefetch_stride_supported(struct dpu_fetchdecode *fd,
- unsigned int stride,
- unsigned int uv_stride,
- unsigned int width,
- u32 format);
-bool fetchdecode_prefetch_stride_double_check(struct dpu_fetchdecode *fd,
- unsigned int stride,
- unsigned int uv_stride,
- unsigned int width,
- u32 format,
- dma_addr_t baseaddr,
- dma_addr_t uv_baseaddr);
-void fetchdecode_pin_off(struct dpu_fetchdecode *fd);
-void fetchdecode_unpin_off(struct dpu_fetchdecode *fd);
-bool fetchdecode_is_pinned_off(struct dpu_fetchdecode *fd);
-struct dpu_fetchdecode *dpu_fd_get(struct dpu_soc *dpu, int id);
-void dpu_fd_put(struct dpu_fetchdecode *fd);
+int fetchdecode_fetchtype(struct dpu_fetchunit *fd, fetchtype_t *type);
+shadow_load_req_t fetchdecode_to_shdldreq_t(struct dpu_fetchunit *fd);
+u32 fetchdecode_get_vproc_mask(struct dpu_fetchunit *fd);
+bool fetchdecode_need_fetcheco(struct dpu_fetchunit *fd, u32 fmt);
+struct dpu_fetchunit *dpu_fd_get(struct dpu_soc *dpu, int id);
+void dpu_fd_put(struct dpu_fetchunit *fu);
/* Fetch ECO Unit */
-struct dpu_fetcheco;
-void fetcheco_shden(struct dpu_fetcheco *fe, bool enable);
-void fetcheco_set_burstlength(struct dpu_fetcheco *fe, dma_addr_t baddr,
- bool use_prefetch);
-void fetcheco_baseaddress(struct dpu_fetcheco *fe, dma_addr_t paddr);
-void fetcheco_source_bpp(struct dpu_fetcheco *fe, int bpp);
-void fetcheco_source_stride(struct dpu_fetcheco *fe, unsigned int width,
- int bpp, unsigned int stride,
- dma_addr_t baddr, bool use_prefetch);
-void fetcheco_src_buf_dimensions(struct dpu_fetcheco *fe, unsigned int w,
- unsigned int h, u32 fmt, bool deinterlace);
-void fetcheco_set_fmt(struct dpu_fetcheco *fe, u32 fmt);
-void fetcheco_layeroffset(struct dpu_fetcheco *fe, unsigned int x,
+void fetcheco_layeroffset(struct dpu_fetchunit *fu, unsigned int x,
unsigned int y);
-void fetcheco_clipoffset(struct dpu_fetcheco *fe, unsigned int x,
+void fetcheco_clipoffset(struct dpu_fetchunit *fu, unsigned int x,
unsigned int y);
-void fetcheco_clipdimensions(struct dpu_fetcheco *fe, unsigned int w,
+void fetcheco_clipdimensions(struct dpu_fetchunit *fu, unsigned int w,
unsigned int h);
-void fetcheco_source_buffer_enable(struct dpu_fetcheco *fe);
-void fetcheco_source_buffer_disable(struct dpu_fetcheco *fe);
-bool fetcheco_is_enabled(struct dpu_fetcheco *fe);
-void fetcheco_framedimensions(struct dpu_fetcheco *fe, unsigned int w,
- unsigned int h, bool deinterlace);
-void fetcheco_frameresampling(struct dpu_fetcheco *fe, unsigned int x,
+void fetcheco_frameresampling(struct dpu_fetchunit *fu, unsigned int x,
unsigned int y);
-void fetcheco_controltrigger(struct dpu_fetcheco *fe, bool trigger);
-int fetcheco_fetchtype(struct dpu_fetcheco *fe, fetchtype_t *type);
-dpu_block_id_t fetcheco_get_block_id(struct dpu_fetcheco *fe);
-unsigned int fetcheco_get_stream_id(struct dpu_fetcheco *fe);
-void fetcheco_set_stream_id(struct dpu_fetcheco *fe, unsigned int id);
-void fetcheco_pin_off(struct dpu_fetcheco *fe);
-void fetcheco_unpin_off(struct dpu_fetcheco *fe);
-bool fetcheco_is_pinned_off(struct dpu_fetcheco *fe);
-struct dpu_fetcheco *dpu_fe_get(struct dpu_soc *dpu, int id);
-void dpu_fe_put(struct dpu_fetcheco *fe);
+int fetcheco_fetchtype(struct dpu_fetchunit *fu, fetchtype_t *type);
+dpu_block_id_t fetcheco_get_block_id(struct dpu_fetchunit *fu);
+struct dpu_fetchunit *dpu_fe_get(struct dpu_soc *dpu, int id);
+void dpu_fe_put(struct dpu_fetchunit *fu);
/* Fetch Layer Unit */
-struct dpu_fetchlayer;
-void fetchlayer_shden(struct dpu_fetchlayer *fl, bool enable);
-void fetchlayer_baddr_autoupdate(struct dpu_fetchlayer *fl, u8 layer_mask);
-void fetchlayer_shdldreq_sticky(struct dpu_fetchlayer *fl, u8 layer_mask);
-void fetchlayer_set_burstlength(struct dpu_fetchlayer *fl, dma_addr_t baddr,
- bool use_prefetch);
-void fetchlayer_baseaddress(struct dpu_fetchlayer *fl, unsigned int index,
- dma_addr_t paddr);
-void fetchlayer_source_bpp(struct dpu_fetchlayer *fl, unsigned int index,
- int bpp);
-void fetchlayer_source_stride(struct dpu_fetchlayer *fl, unsigned int index,
- unsigned int width, int bpp, unsigned int stride,
- dma_addr_t baddr, bool use_prefetch);
-void fetchlayer_src_buf_dimensions(struct dpu_fetchlayer *fl,
- unsigned int index, unsigned int w,
- unsigned int h);
-void fetchlayer_set_fmt(struct dpu_fetchlayer *fl, unsigned int index, u32 fmt);
-void fetchlayer_source_buffer_enable(struct dpu_fetchlayer *fl,
- unsigned int index);
-void fetchlayer_source_buffer_disable(struct dpu_fetchlayer *fl,
- unsigned int index);
-bool fetchlayer_is_enabled(struct dpu_fetchlayer *fl, unsigned int index);
-void fetchlayer_framedimensions(struct dpu_fetchlayer *fl, unsigned int w,
- unsigned int h);
-void fetchlayer_rgb_constantcolor(struct dpu_fetchlayer *fl,
+void fetchlayer_rgb_constantcolor(struct dpu_fetchunit *fu,
u8 r, u8 g, u8 b, u8 a);
-void fetchlayer_yuv_constantcolor(struct dpu_fetchlayer *fl, u8 y, u8 u, u8 v);
-void fetchlayer_controltrigger(struct dpu_fetchlayer *fl, bool trigger);
-int fetchlayer_fetchtype(struct dpu_fetchlayer *fl, fetchtype_t *type);
-unsigned int fetchlayer_get_stream_id(struct dpu_fetchlayer *fl);
-void fetchlayer_set_stream_id(struct dpu_fetchlayer *fl, unsigned int id);
-void
-fetchlayer_configure_prefetch(struct dpu_fetchlayer *fl, unsigned int stream_id,
- unsigned int width, unsigned int height,
- unsigned int x_offset, unsigned int y_offset,
- unsigned int stride, u32 format, u64 modifier,
- unsigned long baddr, bool start);
-void fetchlayer_enable_prefetch(struct dpu_fetchlayer *fl);
-void fetchlayer_disable_prefetch(struct dpu_fetchlayer *fl);
-void fetchlayer_reg_update_prefetch(struct dpu_fetchlayer *fl);
-void fetchlayer_prefetch_first_frame_handle(struct dpu_fetchlayer *fl);
-void fetchlayer_prefetch_irq_handle(struct dpu_fetchlayer *fl);
-void fetchlayer_prefetch_enable_first_frame_irq(struct dpu_fetchlayer *fl);
-bool fetchlayer_has_prefetch(struct dpu_fetchlayer *fl);
-bool fetchlayer_prefetch_format_supported(struct dpu_fetchlayer *fl,
- u32 format, u64 modifier);
-bool fetchlayer_prefetch_stride_supported(struct dpu_fetchlayer *fl,
- unsigned int stride,
- unsigned int width,
- u32 format);
-bool fetchlayer_prefetch_stride_double_check(struct dpu_fetchlayer *fl,
- unsigned int stride,
- unsigned int width,
- u32 format,
- dma_addr_t baseaddr);
-void fetchlayer_pin_off(struct dpu_fetchlayer *fl);
-void fetchlayer_unpin_off(struct dpu_fetchlayer *fl);
-bool fetchlayer_is_pinned_off(struct dpu_fetchlayer *fl);
-struct dpu_fetchlayer *dpu_fl_get(struct dpu_soc *dpu, int id);
-void dpu_fl_put(struct dpu_fetchlayer *fl);
+void fetchlayer_yuv_constantcolor(struct dpu_fetchunit *fu, u8 y, u8 u, u8 v);
+int fetchlayer_fetchtype(struct dpu_fetchunit *fu, fetchtype_t *type);
+struct dpu_fetchunit *dpu_fl_get(struct dpu_soc *dpu, int id);
+void dpu_fl_put(struct dpu_fetchunit *fu);
/* Fetch Warp Unit */
-struct dpu_fetchwarp;
-void fetchwarp_shden(struct dpu_fetchwarp *fw, bool enable);
-void fetchwarp_baddr_autoupdate(struct dpu_fetchwarp *fw, u8 layer_mask);
-void fetchwarp_shdldreq_sticky(struct dpu_fetchwarp *fw, u8 layer_mask);
-void fetchwarp_set_burstlength(struct dpu_fetchwarp *fw, dma_addr_t baddr,
- bool use_prefetch);
-void fetchwarp_baseaddress(struct dpu_fetchwarp *fw, unsigned int index,
- dma_addr_t paddr);
-void fetchwarp_source_bpp(struct dpu_fetchwarp *fw, unsigned int index,
- int bpp);
-void fetchwarp_source_stride(struct dpu_fetchwarp *fw, unsigned int index,
- unsigned int width, int bpp, unsigned int stride,
- dma_addr_t baddr, bool use_prefetch);
-void fetchwarp_src_buf_dimensions(struct dpu_fetchwarp *fw,
- unsigned int index, unsigned int w,
- unsigned int h);
-void fetchwarp_set_fmt(struct dpu_fetchwarp *fw, unsigned int index, u32 fmt);
-void fetchwarp_source_buffer_enable(struct dpu_fetchwarp *fw,
- unsigned int index);
-void fetchwarp_source_buffer_disable(struct dpu_fetchwarp *fw,
- unsigned int index);
-bool fetchwarp_is_enabled(struct dpu_fetchwarp *fw, unsigned int index);
-void fetchwarp_framedimensions(struct dpu_fetchwarp *fw, unsigned int w,
- unsigned int h);
-void fetchwarp_rgb_constantcolor(struct dpu_fetchwarp *fw,
+void fetchwarp_rgb_constantcolor(struct dpu_fetchunit *fu,
u8 r, u8 g, u8 b, u8 a);
-void fetchwarp_yuv_constantcolor(struct dpu_fetchwarp *fw, u8 y, u8 u, u8 v);
-void fetchwarp_controltrigger(struct dpu_fetchwarp *fw, bool trigger);
-int fetchwarp_fetchtype(struct dpu_fetchwarp *fw, fetchtype_t *type);
-unsigned int fetchwarp_get_stream_id(struct dpu_fetchwarp *fw);
-void fetchwarp_set_stream_id(struct dpu_fetchwarp *fw, unsigned int id);
-void
-fetchwarp_configure_prefetch(struct dpu_fetchwarp *fw, unsigned int stream_id,
- unsigned int width, unsigned int height,
- unsigned int x_offset, unsigned int y_offset,
- unsigned int stride, u32 format, u64 modifier,
- unsigned long baddr, bool start);
-void fetchwarp_enable_prefetch(struct dpu_fetchwarp *fw);
-void fetchwarp_disable_prefetch(struct dpu_fetchwarp *fw);
-void fetchwarp_reg_update_prefetch(struct dpu_fetchwarp *fw);
-void fetchwarp_prefetch_first_frame_handle(struct dpu_fetchwarp *fw);
-void fetchwarp_prefetch_irq_handle(struct dpu_fetchwarp *fw);
-void fetchwarp_prefetch_enable_first_frame_irq(struct dpu_fetchwarp *fw);
-bool fetchwarp_has_prefetch(struct dpu_fetchwarp *fw);
-bool fetchwarp_prefetch_format_supported(struct dpu_fetchwarp *fw,
- u32 format, u64 modifier);
-bool fetchwarp_prefetch_stride_supported(struct dpu_fetchwarp *fw,
- unsigned int stride,
- unsigned int width,
- u32 format);
-bool fetchwarp_prefetch_stride_double_check(struct dpu_fetchwarp *fw,
- unsigned int stride,
- unsigned int width,
- u32 format,
- dma_addr_t baseaddr);
-void fetchwarp_pin_off(struct dpu_fetchwarp *fw);
-void fetchwarp_unpin_off(struct dpu_fetchwarp *fw);
-bool fetchwarp_is_pinned_off(struct dpu_fetchwarp *fw);
-struct dpu_fetchwarp *dpu_fw_get(struct dpu_soc *dpu, int id);
-void dpu_fw_put(struct dpu_fetchwarp *fw);
+void fetchwarp_yuv_constantcolor(struct dpu_fetchunit *fu, u8 y, u8 u, u8 v);
+int fetchwarp_fetchtype(struct dpu_fetchunit *fu, fetchtype_t *type);
+struct dpu_fetchunit *dpu_fw_get(struct dpu_soc *dpu, int id);
+void dpu_fw_put(struct dpu_fetchunit *fu);
/* Frame Generator Unit */
struct dpu_framegen;
@@ -790,9 +670,9 @@ void vscaler_set_stream_id(struct dpu_vscaler *vs, unsigned int id);
struct dpu_vscaler *dpu_vs_get(struct dpu_soc *dpu, int id);
void dpu_vs_put(struct dpu_vscaler *vs);
-struct dpu_fetcheco *fetchdecode_get_fetcheco(struct dpu_fetchdecode *fd);
-struct dpu_hscaler *fetchdecode_get_hscaler(struct dpu_fetchdecode *fd);
-struct dpu_vscaler *fetchdecode_get_vscaler(struct dpu_fetchdecode *fd);
+struct dpu_fetchunit *fetchdecode_get_fetcheco(struct dpu_fetchunit *fu);
+struct dpu_hscaler *fetchdecode_get_hscaler(struct dpu_fetchunit *fu);
+struct dpu_vscaler *fetchdecode_get_vscaler(struct dpu_fetchunit *fu);
bool dpu_has_prefetch_fixup(struct dpu_soc *dpu);
@@ -804,51 +684,29 @@ u32 dpu_vproc_get_fetcheco_cap(u32 cap_mask);
u32 dpu_vproc_get_hscale_cap(u32 cap_mask);
u32 dpu_vproc_get_vscale_cap(u32 cap_mask);
-bool fetchunit_has_prefetch(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw);
-bool fetchunit_prefetch_format_supported(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw,
- u32 format, u64 modifier);
-bool fetchunit_prefetch_stride_supported(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw,
- unsigned int stride,
- unsigned int uv_stride,
- unsigned int width,
- u32 format);
-bool fetchunit_prefetch_stride_double_check(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw,
- unsigned int stride,
- unsigned int uv_stride,
- unsigned int width,
- u32 format,
- dma_addr_t baseaddr,
- dma_addr_t uv_baseaddr);
-void fetchunit_configure_prefetch(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw,
- unsigned int stream_id,
- unsigned int width, unsigned int height,
- unsigned int x_offset, unsigned int y_offset,
- unsigned int stride, u32 format, u64 modifier,
- unsigned long baddr, unsigned long uv_baddr,
- bool start, bool aux_start,
- bool fb_is_interlaced);
-void fetchunit_enable_prefetch(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw);
-void fetchunit_reg_update_prefetch(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw);
-void fetchunit_prefetch_first_frame_handle(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw);
-void fetchunit_disable_prefetch(struct dpu_fetchdecode *fd,
- struct dpu_fetchlayer *fl,
- struct dpu_fetchwarp *fw);
+void fetchunit_get_dprc(struct dpu_fetchunit *fu, void *data);
+void fetchunit_shden(struct dpu_fetchunit *fu, bool enable);
+void fetchunit_baddr_autoupdate(struct dpu_fetchunit *fu, u8 layer_mask);
+void fetchunit_shdldreq_sticky(struct dpu_fetchunit *fu, u8 layer_mask);
+void fetchunit_set_burstlength(struct dpu_fetchunit *fu, dma_addr_t baddr,
+ bool use_prefetch);
+void fetchunit_set_baseaddress(struct dpu_fetchunit *fu, dma_addr_t paddr);
+void fetchunit_set_src_bpp(struct dpu_fetchunit *fu, int bpp);
+void fetchunit_set_src_stride(struct dpu_fetchunit *fu,
+ unsigned int width, int bpp, unsigned int stride,
+ dma_addr_t baddr, bool use_prefetch);
+void fetchunit_enable_src_buf(struct dpu_fetchunit *fu);
+void fetchunit_disable_src_buf(struct dpu_fetchunit *fu);
+bool fetchunit_is_enabled(struct dpu_fetchunit *fu);
+unsigned int fetchunit_get_stream_id(struct dpu_fetchunit *fu);
+void fetchunit_set_stream_id(struct dpu_fetchunit *fu, unsigned int id);
+void fetchunit_pin_off(struct dpu_fetchunit *fu);
+void fetchunit_unpin_off(struct dpu_fetchunit *fu);
+bool fetchunit_is_pinned_off(struct dpu_fetchunit *fu);
+bool fetchunit_is_fetchdecode(struct dpu_fetchunit *fu);
+bool fetchunit_is_fetcheco(struct dpu_fetchunit *fu);
+bool fetchunit_is_fetchlayer(struct dpu_fetchunit *fu);
+bool fetchunit_is_fetchwarp(struct dpu_fetchunit *fu);
/* dpu blit engine */
struct dpu_bliteng;
@@ -887,10 +745,10 @@ void dpu_be_configure_prefetch(struct dpu_bliteng *dpu_be,
struct dpu_plane_res {
struct dpu_constframe *cf[2];
struct dpu_extdst *ed[2];
- struct dpu_fetchdecode *fd[MAX_FD_NUM];
- struct dpu_fetcheco *fe[2];
- struct dpu_fetchlayer *fl[MAX_FL_NUM];
- struct dpu_fetchwarp *fw[MAX_FW_NUM];
+ struct dpu_fetchunit *fd[MAX_FD_NUM];
+ struct dpu_fetchunit *fe[2];
+ struct dpu_fetchunit *fl[MAX_FL_NUM];
+ struct dpu_fetchunit *fw[MAX_FW_NUM];
struct dpu_framegen *fg[2];
struct dpu_hscaler *hs[2];
struct dpu_layerblend *lb[MAX_LB_NUM];