Loading drivers/gpu/drm/msm/sde/sde_kms.c +1 −1 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ static void sde_kms_prepare_commit(struct msm_kms *kms, if (sde_kms->splash_info.handoff && sde_kms->splash_info.display_splash_enabled) sde_splash_lk_stop_splash(kms); sde_splash_lk_stop_splash(kms, state); sde_power_resource_enable(&priv->phandle, sde_kms->core_client, true); Loading drivers/gpu/drm/msm/sde/sde_splash.c +27 −2 Original line number Diff line number Diff line Loading @@ -367,6 +367,29 @@ static int _sde_splash_free_module_resource(struct msm_mmu *mmu, return 0; } static bool _sde_splash_validate_commit(struct sde_kms *sde_kms, struct drm_atomic_state *state) { int i, nplanes; struct drm_plane *plane; struct drm_device *dev = sde_kms->dev; nplanes = dev->mode_config.num_total_plane; for (i = 0; i < nplanes; i++) { plane = state->planes[i]; /* * As plane state has been swapped, we need to check * fb in state->planes, not fb in state->plane_state. */ if (plane && plane->fb) return true; } return false; } __ref int sde_splash_init(struct sde_power_handle *phandle, struct msm_kms *kms) { struct sde_kms *sde_kms; Loading Loading @@ -858,7 +881,8 @@ int sde_splash_free_resource(struct msm_kms *kms, /* * Below function will notify LK to stop display splash. */ int sde_splash_lk_stop_splash(struct msm_kms *kms) int sde_splash_lk_stop_splash(struct msm_kms *kms, struct drm_atomic_state *state) { struct sde_splash_info *sinfo; struct sde_kms *sde_kms = to_sde_kms(kms); Loading @@ -872,7 +896,8 @@ int sde_splash_lk_stop_splash(struct msm_kms *kms) /* Monitor LK's status and tell it to exit. */ mutex_lock(&sde_splash_lock); if (sinfo->display_splash_enabled) { if (_sde_splash_validate_commit(sde_kms, state) && sinfo->display_splash_enabled) { if (_sde_splash_lk_check(sde_kms->hw_intr)) _sde_splash_notify_lk_stop_splash(sde_kms->hw_intr); Loading drivers/gpu/drm/msm/sde/sde_splash.h +2 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,8 @@ void sde_splash_setup_connector_count(struct sde_splash_info *sinfo, * * Tell LK to stop display splash once one valid user commit arrives. */ int sde_splash_lk_stop_splash(struct msm_kms *kms); int sde_splash_lk_stop_splash(struct msm_kms *kms, struct drm_atomic_state *state); /** * sde_splash_free_resource. Loading Loading
drivers/gpu/drm/msm/sde/sde_kms.c +1 −1 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ static void sde_kms_prepare_commit(struct msm_kms *kms, if (sde_kms->splash_info.handoff && sde_kms->splash_info.display_splash_enabled) sde_splash_lk_stop_splash(kms); sde_splash_lk_stop_splash(kms, state); sde_power_resource_enable(&priv->phandle, sde_kms->core_client, true); Loading
drivers/gpu/drm/msm/sde/sde_splash.c +27 −2 Original line number Diff line number Diff line Loading @@ -367,6 +367,29 @@ static int _sde_splash_free_module_resource(struct msm_mmu *mmu, return 0; } static bool _sde_splash_validate_commit(struct sde_kms *sde_kms, struct drm_atomic_state *state) { int i, nplanes; struct drm_plane *plane; struct drm_device *dev = sde_kms->dev; nplanes = dev->mode_config.num_total_plane; for (i = 0; i < nplanes; i++) { plane = state->planes[i]; /* * As plane state has been swapped, we need to check * fb in state->planes, not fb in state->plane_state. */ if (plane && plane->fb) return true; } return false; } __ref int sde_splash_init(struct sde_power_handle *phandle, struct msm_kms *kms) { struct sde_kms *sde_kms; Loading Loading @@ -858,7 +881,8 @@ int sde_splash_free_resource(struct msm_kms *kms, /* * Below function will notify LK to stop display splash. */ int sde_splash_lk_stop_splash(struct msm_kms *kms) int sde_splash_lk_stop_splash(struct msm_kms *kms, struct drm_atomic_state *state) { struct sde_splash_info *sinfo; struct sde_kms *sde_kms = to_sde_kms(kms); Loading @@ -872,7 +896,8 @@ int sde_splash_lk_stop_splash(struct msm_kms *kms) /* Monitor LK's status and tell it to exit. */ mutex_lock(&sde_splash_lock); if (sinfo->display_splash_enabled) { if (_sde_splash_validate_commit(sde_kms, state) && sinfo->display_splash_enabled) { if (_sde_splash_lk_check(sde_kms->hw_intr)) _sde_splash_notify_lk_stop_splash(sde_kms->hw_intr); Loading
drivers/gpu/drm/msm/sde/sde_splash.h +2 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,8 @@ void sde_splash_setup_connector_count(struct sde_splash_info *sinfo, * * Tell LK to stop display splash once one valid user commit arrives. */ int sde_splash_lk_stop_splash(struct msm_kms *kms); int sde_splash_lk_stop_splash(struct msm_kms *kms, struct drm_atomic_state *state); /** * sde_splash_free_resource. Loading