[PATCH 1/2] drm/sti: load XP70 firmware only once
Benjamin Gaignard
benjamin.gaignard at linaro.org
Wed Dec 7 11:10:40 UTC 2016
Acked-by: Benjamin Gaignard <benjamin.gaignard at linaro.org>
2016-12-05 16:09 GMT+01:00 Fabien Dessenne <fabien.dessenne at st.com>:
> When a plane is enabled, after having been disabled, do not reload XP70
> firmware again, but only register VTG again
>
> Signed-off-by: Fabien Dessenne <fabien.dessenne at st.com>
> ---
> drivers/gpu/drm/sti/sti_hqvdp.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c
> index f88130f..a547723 100644
> --- a/drivers/gpu/drm/sti/sti_hqvdp.c
> +++ b/drivers/gpu/drm/sti/sti_hqvdp.c
> @@ -332,6 +332,7 @@ struct sti_hqvdp_cmd {
> * @hqvdp_cmd_paddr: physical address of hqvdp_cmd
> * @vtg: vtg for main data path
> * @xp70_initialized: true if xp70 is already initialized
> + * @vtg_registered: true if registered to VTG
> */
> struct sti_hqvdp {
> struct device *dev;
> @@ -347,6 +348,7 @@ struct sti_hqvdp {
> u32 hqvdp_cmd_paddr;
> struct sti_vtg *vtg;
> bool xp70_initialized;
> + bool vtg_registered;
> };
>
> #define to_sti_hqvdp(x) container_of(x, struct sti_hqvdp, plane)
> @@ -771,7 +773,7 @@ static void sti_hqvdp_disable(struct sti_hqvdp *hqvdp)
> DRM_ERROR("XP70 could not revert to idle\n");
>
> hqvdp->plane.status = STI_PLANE_DISABLED;
> - hqvdp->xp70_initialized = false;
> + hqvdp->vtg_registered = false;
> }
>
> /**
> @@ -1064,10 +1066,11 @@ static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
> return -EINVAL;
> }
>
> - if (!hqvdp->xp70_initialized) {
> + if (!hqvdp->xp70_initialized)
> /* Start HQVDP XP70 coprocessor */
> sti_hqvdp_start_xp70(hqvdp);
>
> + if (!hqvdp->vtg_registered) {
> /* Prevent VTG shutdown */
> if (clk_prepare_enable(hqvdp->clk_pix_main)) {
> DRM_ERROR("Failed to prepare/enable pix main clk\n");
> @@ -1081,6 +1084,7 @@ static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
> DRM_ERROR("Cannot register VTG notifier\n");
> return -EINVAL;
> }
> + hqvdp->vtg_registered = true;
> }
>
> DRM_DEBUG_KMS("CRTC:%d (%s) drm plane:%d (%s)\n",
> --
> 2.7.4
>
--
Benjamin Gaignard
Graphic Study Group
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
More information about the dri-devel
mailing list