diff options
author | Liu Ying <victor.liu@nxp.com> | 2018-08-02 13:55:34 +0800 |
---|---|---|
committer | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-24 12:41:33 +0300 |
commit | 875c31a70f3527c59cc597a10a88c39f3a0095df (patch) | |
tree | 1a393a445e1fea9fca67f67c99af16ccd017817a | |
parent | dab218c3c46644215f5709e03729bbe9ba3b5823 (diff) |
MLK-19114-2 gpu: imx: imx8-prefetch: Remove has_prefetech_fixup from devtypes
There are prefetch engine fixups embedded in the updated i.MX8QM silicons.
So, prefetch engines in all i.MX8 variants should be the same. Let's
remove has_prefetech_fixup from devtypes which is no more needed.
Signed-off-by: Liu Ying <victor.liu@nxp.com>
-rw-r--r-- | drivers/gpu/drm/imx/dpu/dpu-crtc.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/imx/dpu/dpu-plane.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/imx/dpu/dpu-plane.h | 4 | ||||
-rw-r--r-- | drivers/gpu/imx/dpu/dpu-common.c | 9 | ||||
-rw-r--r-- | drivers/gpu/imx/dpu/dpu-prv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/imx/imx8_dprc.c | 75 | ||||
-rw-r--r-- | drivers/gpu/imx/imx8_prg.c | 31 | ||||
-rw-r--r-- | include/video/dpu.h | 2 |
8 files changed, 31 insertions, 109 deletions
diff --git a/drivers/gpu/drm/imx/dpu/dpu-crtc.c b/drivers/gpu/drm/imx/dpu/dpu-crtc.c index bddfb94d229d..8e4f804be861 100644 --- a/drivers/gpu/drm/imx/dpu/dpu-crtc.c +++ b/drivers/gpu/drm/imx/dpu/dpu-crtc.c @@ -46,8 +46,6 @@ struct dpu_crtc { int content_shdld_irq; int dec_shdld_irq; - bool has_prefetch_fixup; - struct completion safety_shdld_done; struct completion content_shdld_done; struct completion dec_shdld_done; @@ -635,14 +633,12 @@ static int dpu_crtc_init(struct dpu_crtc *dpu_crtc, struct device *dev = dpu_crtc->dev; struct dpu_plane_grp *plane_grp = pdata->plane_grp; unsigned int stream_id = pdata->stream_id; - bool has_prefetch_fixup = dpu_has_prefetch_fixup(dpu); int i, ret; init_completion(&dpu_crtc->safety_shdld_done); init_completion(&dpu_crtc->content_shdld_done); init_completion(&dpu_crtc->dec_shdld_done); - dpu_crtc->has_prefetch_fixup = has_prefetch_fixup; dpu_crtc->stream_id = stream_id; dpu_crtc->hw_plane_num = plane_grp->hw_plane_num; @@ -659,8 +655,7 @@ static int dpu_crtc_init(struct dpu_crtc *dpu_crtc, plane_grp->res.fg[stream_id] = dpu_crtc->fg; dpu_crtc->plane[0] = dpu_plane_init(drm, 0, stream_id, plane_grp, - DRM_PLANE_TYPE_PRIMARY, - has_prefetch_fixup); + DRM_PLANE_TYPE_PRIMARY); if (IS_ERR(dpu_crtc->plane[0])) { ret = PTR_ERR(dpu_crtc->plane[0]); dev_err(dev, "initializing plane0 failed with %d.\n", ret); @@ -679,8 +674,7 @@ static int dpu_crtc_init(struct dpu_crtc *dpu_crtc, dpu_crtc->plane[i] = dpu_plane_init(drm, drm_crtc_mask(&dpu_crtc->base), stream_id, plane_grp, - DRM_PLANE_TYPE_OVERLAY, - has_prefetch_fixup); + DRM_PLANE_TYPE_OVERLAY); if (IS_ERR(dpu_crtc->plane[i])) { ret = PTR_ERR(dpu_crtc->plane[i]); dev_err(dev, "initializing plane%d failed with %d.\n", diff --git a/drivers/gpu/drm/imx/dpu/dpu-plane.c b/drivers/gpu/drm/imx/dpu/dpu-plane.c index 32d301ff35f6..38041262ce56 100644 --- a/drivers/gpu/drm/imx/dpu/dpu-plane.c +++ b/drivers/gpu/drm/imx/dpu/dpu-plane.c @@ -285,10 +285,6 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, if (fb->modifier[2] || fb->modifier[3]) return -EINVAL; - if (fb->modifier[0] && (src_x || src_y) && - !dplane->has_prefetch_fixup) - return -EINVAL; - if (dplane->grp->has_vproc) { /* no down scaling */ if (src_w > state->crtc_w || src_h > state->crtc_h) @@ -733,8 +729,7 @@ struct dpu_plane *dpu_plane_init(struct drm_device *drm, unsigned int possible_crtcs, unsigned int stream_id, struct dpu_plane_grp *grp, - enum drm_plane_type type, - bool has_prefetch_fixup) + enum drm_plane_type type) { struct dpu_plane *dpu_plane; struct drm_plane *plane; @@ -747,7 +742,6 @@ struct dpu_plane *dpu_plane_init(struct drm_device *drm, dpu_plane->stream_id = stream_id; dpu_plane->grp = grp; - dpu_plane->has_prefetch_fixup = has_prefetch_fixup; plane = &dpu_plane->base; diff --git a/drivers/gpu/drm/imx/dpu/dpu-plane.h b/drivers/gpu/drm/imx/dpu/dpu-plane.h index cce9576f85de..eeb52f5262b6 100644 --- a/drivers/gpu/drm/imx/dpu/dpu-plane.h +++ b/drivers/gpu/drm/imx/dpu/dpu-plane.h @@ -31,7 +31,6 @@ struct dpu_plane { struct dpu_plane_grp *grp; struct list_head head; unsigned int stream_id; - bool has_prefetch_fixup; }; struct dpu_plane_state { @@ -191,6 +190,5 @@ struct dpu_plane *dpu_plane_init(struct drm_device *drm, unsigned int possible_crtcs, unsigned int stream_id, struct dpu_plane_grp *grp, - enum drm_plane_type type, - bool has_prefetch_fixup); + enum drm_plane_type type); #endif diff --git a/drivers/gpu/imx/dpu/dpu-common.c b/drivers/gpu/imx/dpu/dpu-common.c index 2cf7a5055b9a..4e31c1ec5b0b 100644 --- a/drivers/gpu/imx/dpu/dpu-common.c +++ b/drivers/gpu/imx/dpu/dpu-common.c @@ -542,7 +542,6 @@ static const struct dpu_devtype dpu_type_v1 = { .plane_src_na_mask = 0xffffff80, .has_capture = true, .has_prefetch = false, - .has_prefetch_fixup = false, .has_disp_sel_clk = false, .has_dual_ldb = false, .pixel_link_quirks = false, @@ -573,7 +572,6 @@ static const struct dpu_devtype dpu_type_v2_qm = { .plane_src_na_mask = 0xffffffe2, .has_capture = false, .has_prefetch = true, - .has_prefetch_fixup = false, .has_disp_sel_clk = true, .has_dual_ldb = false, .pixel_link_quirks = true, @@ -604,7 +602,6 @@ static const struct dpu_devtype dpu_type_v2_qxp = { .plane_src_na_mask = 0xffffffe2, .has_capture = false, .has_prefetch = true, - .has_prefetch_fixup = true, .has_disp_sel_clk = false, .has_dual_ldb = true, .pixel_link_quirks = true, @@ -625,12 +622,6 @@ static const struct of_device_id dpu_dt_ids[] = { }; MODULE_DEVICE_TABLE(of, dpu_dt_ids); -bool dpu_has_prefetch_fixup(struct dpu_soc *dpu) -{ - return dpu->devtype->has_prefetch_fixup; -} -EXPORT_SYMBOL_GPL(dpu_has_prefetch_fixup); - bool dpu_vproc_has_fetcheco_cap(u32 cap_mask) { return !!(cap_mask & DPU_VPROC_CAP_FETCHECO); diff --git a/drivers/gpu/imx/dpu/dpu-prv.h b/drivers/gpu/imx/dpu/dpu-prv.h index ff1039005072..3bfcaad6d252 100644 --- a/drivers/gpu/imx/dpu/dpu-prv.h +++ b/drivers/gpu/imx/dpu/dpu-prv.h @@ -207,7 +207,6 @@ struct dpu_devtype { const u32 plane_src_na_mask; bool has_capture; bool has_prefetch; - bool has_prefetch_fixup; bool has_disp_sel_clk; bool has_dual_ldb; bool pixel_link_quirks; diff --git a/drivers/gpu/imx/imx8_dprc.c b/drivers/gpu/imx/imx8_dprc.c index 088484ea8110..162485f5ea73 100644 --- a/drivers/gpu/imx/imx8_dprc.c +++ b/drivers/gpu/imx/imx8_dprc.c @@ -146,21 +146,8 @@ enum { #define ROWS_0_6 BIT(0) #define ROWS_0_4 0 -struct dprc_devtype { - bool has_fixup; -}; - -static const struct dprc_devtype dprc_type_v1 = { - .has_fixup = false, -}; - -static const struct dprc_devtype dprc_type_v2 = { - .has_fixup = true, -}; - struct dprc { struct device *dev; - const struct dprc_devtype *devtype; void __iomem *base; struct list_head list; struct clk *clk_apb; @@ -410,34 +397,23 @@ void dprc_configure(struct dprc *dprc, unsigned int stream_id, preq = modifier ? BYTE_64 : BYTE_1K; dprc_write(dprc, preq, FRAME_2P_CTRL0); - if (!dprc->devtype->has_fixup) { - dprc_write(dprc, - NUM_X_PIX_WIDE(p2_w), FRAME_2P_PIX_X_CTRL); - dprc_write(dprc, - NUM_Y_PIX_HIGH(p2_h), FRAME_2P_PIX_Y_CTRL); - } else { - if (dprc->sc_resource == SC_R_DC_0_BLIT1) { - dprc_prg_sel_configure(dprc, - SC_R_DC_0_BLIT0, true); - prg_set_auxiliary(dprc->prgs[1]); - dprc->has_aux_prg = true; - } + if (dprc->sc_resource == SC_R_DC_0_BLIT1) { + dprc_prg_sel_configure(dprc, SC_R_DC_0_BLIT0, true); + prg_set_auxiliary(dprc->prgs[1]); + dprc->has_aux_prg = true; } dprc_write(dprc, uv_baddr, FRAME_2P_BASE_ADDR_CTRL0); } else { - if (dprc->devtype->has_fixup) { - switch (dprc->sc_resource) { - case SC_R_DC_0_BLIT0: - dprc_prg_sel_configure(dprc, - SC_R_DC_0_BLIT0, false); - prg_set_primary(dprc->prgs[0]); - break; - case SC_R_DC_0_BLIT1: - dprc->has_aux_prg = false; - break; - default: - break; - } + switch (dprc->sc_resource) { + case SC_R_DC_0_BLIT0: + dprc_prg_sel_configure(dprc, SC_R_DC_0_BLIT0, false); + prg_set_primary(dprc->prgs[0]); + break; + case SC_R_DC_0_BLIT1: + dprc->has_aux_prg = false; + break; + default: + break; } switch (modifier) { @@ -445,7 +421,7 @@ void dprc_configure(struct dprc *dprc, unsigned int stream_id, p1_w = round_up(dprc_width, info->cpp[0] == 2 ? 8 : 4); break; case DRM_FORMAT_MOD_VIVANTE_SUPER_TILED: - if (dprc->is_blit_chan && dprc->devtype->has_fixup) + if (dprc->is_blit_chan) p1_w = round_up(dprc_width, info->cpp[0] == 2 ? 8 : 4); else @@ -472,10 +448,7 @@ void dprc_configure(struct dprc *dprc, unsigned int stream_id, preq = BYTE_64; mt_w = 8; } else { - if (dprc->devtype->has_fixup) - preq = (x_offset % 8) ? BYTE_64 : BYTE_128; - else - preq = BYTE_128; + preq = (x_offset % 8) ? BYTE_64 : BYTE_128; mt_w = 4; } mt_h = 4; @@ -488,7 +461,7 @@ void dprc_configure(struct dprc *dprc, unsigned int stream_id, dprc_write(dprc, NUM_X_PIX_WIDE(p1_w), FRAME_1P_PIX_X_CTRL); dprc_write(dprc, NUM_Y_PIX_HIGH(p1_h), FRAME_1P_PIX_Y_CTRL); dprc_write(dprc, baddr, FRAME_1P_BASE_ADDR_CTRL0); - if (dprc->devtype->has_fixup && modifier) { + if (modifier) { dprc_write(dprc, CROP_ULC_X(round_down(x_offset, mt_w)), FRAME_PIX_X_ULC_CTRL); dprc_write(dprc, CROP_ULC_Y(round_down(y_offset, mt_h)), @@ -719,9 +692,6 @@ bool dprc_format_supported(struct dprc *dprc, u32 format, u64 modifier) case SC_R_DC_1_WARP: return false; case SC_R_DC_0_BLIT1: - if (!dprc->devtype->has_fixup) - break; - return (modifier == DRM_FORMAT_MOD_NONE || modifier == DRM_FORMAT_MOD_AMPHION_TILED); } @@ -801,15 +771,13 @@ dprc_lookup_by_phandle(struct device *dev, const char *name, int index) EXPORT_SYMBOL_GPL(dprc_lookup_by_phandle); static const struct of_device_id dprc_dt_ids[] = { - { .compatible = "fsl,imx8qm-dpr-channel", .data = &dprc_type_v1, }, - { .compatible = "fsl,imx8qxp-dpr-channel", .data = &dprc_type_v2, }, + { .compatible = "fsl,imx8qm-dpr-channel", }, + { .compatible = "fsl,imx8qxp-dpr-channel", }, { /* sentinel */ }, }; static int dprc_probe(struct platform_device *pdev) { - const struct of_device_id *of_id = - of_match_device(dprc_dt_ids, &pdev->dev); struct device *dev = &pdev->dev; struct resource *res; struct dprc *dprc; @@ -819,8 +787,6 @@ static int dprc_probe(struct platform_device *pdev) if (!dprc) return -ENOMEM; - dprc->devtype = of_id->data; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); dprc->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(dprc->base)) @@ -850,8 +816,7 @@ static int dprc_probe(struct platform_device *pdev) switch (dprc->sc_resource) { case SC_R_DC_0_BLIT1: - if (dprc->devtype->has_fixup) - dprc->has_aux_prg = true; + dprc->has_aux_prg = true; /* fall-through */ case SC_R_DC_0_BLIT0: case SC_R_DC_1_BLIT0: diff --git a/drivers/gpu/imx/imx8_prg.c b/drivers/gpu/imx/imx8_prg.c index b78aa17956ba..a7b2ae9963cd 100644 --- a/drivers/gpu/imx/imx8_prg.c +++ b/drivers/gpu/imx/imx8_prg.c @@ -67,21 +67,8 @@ enum { #define PRG_WIDTH 0x70 #define WIDTH(n) (((n) - 1) & 0xffff) -struct prg_devtype { - bool has_dprc_fixup; -}; - -static const struct prg_devtype prg_type_v1 = { - .has_dprc_fixup = false, -}; - -static const struct prg_devtype prg_type_v2 = { - .has_dprc_fixup = true, -}; - struct prg { struct device *dev; - const struct prg_devtype *devtype; void __iomem *base; struct list_head list; struct clk *clk_apb; @@ -163,7 +150,7 @@ void prg_configure(struct prg *prg, unsigned int width, unsigned int height, return; } - if (prg->devtype->has_dprc_fixup && modifier) { + if (modifier) { x_offset %= mt_w; y_offset %= mt_h; @@ -187,7 +174,7 @@ void prg_configure(struct prg *prg, unsigned int width, unsigned int height, * address TKT339017: * fixup for burst size vs stride mismatch */ - if (prg->devtype->has_dprc_fixup && modifier) + if (modifier) stride = round_up(stride + round_up(_baddr % 8, 8), burst_size); else stride = round_up(stride, burst_size); @@ -199,7 +186,7 @@ void prg_configure(struct prg *prg, unsigned int width, unsigned int height, */ if (prg->is_auxiliary && stride <= burst_size) { height /= 2; - if (prg->devtype->has_dprc_fixup && modifier) + if (modifier) y_offset /= 2; } @@ -307,7 +294,7 @@ bool prg_stride_double_check(struct prg *prg, return false; } - if (prg->devtype->has_dprc_fixup && modifier) { + if (modifier) { x_offset %= mt_w; /* consider x offset to calculate stride */ @@ -328,7 +315,7 @@ bool prg_stride_double_check(struct prg *prg, * address TKT339017: * fixup for burst size vs stride mismatch */ - if (prg->devtype->has_dprc_fixup && modifier) + if (modifier) stride = round_up(stride + round_up(_baddr % 8, 8), burst_size); else stride = round_up(stride, burst_size); @@ -386,15 +373,13 @@ prg_lookup_by_phandle(struct device *dev, const char *name, int index) EXPORT_SYMBOL_GPL(prg_lookup_by_phandle); static const struct of_device_id prg_dt_ids[] = { - { .compatible = "fsl,imx8qm-prg", .data = &prg_type_v1, }, - { .compatible = "fsl,imx8qxp-prg", .data = &prg_type_v2, }, + { .compatible = "fsl,imx8qm-prg", }, + { .compatible = "fsl,imx8qxp-prg", }, { /* sentinel */ }, }; static int prg_probe(struct platform_device *pdev) { - const struct of_device_id *of_id = - of_match_device(prg_dt_ids, &pdev->dev); struct device *dev = &pdev->dev; struct resource *res; struct prg *prg; @@ -403,8 +388,6 @@ static int prg_probe(struct platform_device *pdev) if (!prg) return -ENOMEM; - prg->devtype = of_id->data; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); prg->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(prg->base)) diff --git a/include/video/dpu.h b/include/video/dpu.h index 19d5bbaba6f2..261d59d7dacb 100644 --- a/include/video/dpu.h +++ b/include/video/dpu.h @@ -680,8 +680,6 @@ 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); - bool dpu_vproc_has_fetcheco_cap(u32 cap_mask); bool dpu_vproc_has_hscale_cap(u32 cap_mask); bool dpu_vproc_has_vscale_cap(u32 cap_mask); |