Merge "drm: msm: sde: remove user commit validity check"
This commit is contained in:
commit
7b1f90835b
3 changed files with 27 additions and 30 deletions
|
@ -345,7 +345,7 @@ static void sde_kms_prepare_commit(struct msm_kms *kms,
|
||||||
|
|
||||||
if (sde_kms->splash_info.handoff &&
|
if (sde_kms->splash_info.handoff &&
|
||||||
sde_kms->splash_info.display_splash_enabled)
|
sde_kms->splash_info.display_splash_enabled)
|
||||||
sde_splash_lk_stop_splash(kms, state);
|
sde_splash_lk_stop_splash(kms);
|
||||||
|
|
||||||
sde_power_resource_enable(&priv->phandle,
|
sde_power_resource_enable(&priv->phandle,
|
||||||
sde_kms->core_client, true);
|
sde_kms->core_client, true);
|
||||||
|
|
|
@ -275,6 +275,25 @@ static void _sde_splash_destroy_splash_node(struct sde_splash_info *sinfo)
|
||||||
sinfo->splash_mem_size = NULL;
|
sinfo->splash_mem_size = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _sde_splash_update_display_splash_status(struct sde_kms *sde_kms)
|
||||||
|
{
|
||||||
|
struct dsi_display *dsi_display;
|
||||||
|
struct sde_hdmi *sde_hdmi;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < sde_kms->dsi_display_count; i++) {
|
||||||
|
dsi_display = (struct dsi_display *)sde_kms->dsi_displays[i];
|
||||||
|
|
||||||
|
dsi_display->cont_splash_enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < sde_kms->hdmi_display_count; i++) {
|
||||||
|
sde_hdmi = (struct sde_hdmi *)sde_kms->hdmi_displays[i];
|
||||||
|
|
||||||
|
sde_hdmi->cont_splash_enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void _sde_splash_sent_pipe_update_uevent(struct sde_kms *sde_kms)
|
static void _sde_splash_sent_pipe_update_uevent(struct sde_kms *sde_kms)
|
||||||
{
|
{
|
||||||
char *event_string;
|
char *event_string;
|
||||||
|
@ -348,29 +367,6 @@ static int _sde_splash_free_module_resource(struct msm_mmu *mmu,
|
||||||
return 0;
|
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)
|
__ref int sde_splash_init(struct sde_power_handle *phandle, struct msm_kms *kms)
|
||||||
{
|
{
|
||||||
struct sde_kms *sde_kms;
|
struct sde_kms *sde_kms;
|
||||||
|
@ -737,6 +733,7 @@ bool sde_splash_get_lk_complete_status(struct msm_kms *kms)
|
||||||
intr = sde_kms->hw_intr;
|
intr = sde_kms->hw_intr;
|
||||||
|
|
||||||
if (sde_kms->splash_info.handoff &&
|
if (sde_kms->splash_info.handoff &&
|
||||||
|
!sde_kms->splash_info.display_splash_enabled &&
|
||||||
SDE_LK_EXIT_VALUE == SDE_REG_READ(&intr->hw,
|
SDE_LK_EXIT_VALUE == SDE_REG_READ(&intr->hw,
|
||||||
SCRATCH_REGISTER_1)) {
|
SCRATCH_REGISTER_1)) {
|
||||||
SDE_DEBUG("LK totoally exits\n");
|
SDE_DEBUG("LK totoally exits\n");
|
||||||
|
@ -816,6 +813,9 @@ int sde_splash_free_resource(struct msm_kms *kms,
|
||||||
/* send uevent to notify user to recycle resource */
|
/* send uevent to notify user to recycle resource */
|
||||||
_sde_splash_sent_pipe_update_uevent(sde_kms);
|
_sde_splash_sent_pipe_update_uevent(sde_kms);
|
||||||
|
|
||||||
|
/* set display's splash status to false after handoff is done */
|
||||||
|
_sde_splash_update_display_splash_status(sde_kms);
|
||||||
|
|
||||||
/* Finally mark handoff flag to false to say
|
/* Finally mark handoff flag to false to say
|
||||||
* handoff is complete.
|
* handoff is complete.
|
||||||
*/
|
*/
|
||||||
|
@ -860,8 +860,7 @@ int sde_splash_free_resource(struct msm_kms *kms,
|
||||||
* 1. Notify LK to stop display splash.
|
* 1. Notify LK to stop display splash.
|
||||||
* 2. Set DOMAIN_ATTR_EARLY_MAP to 1 to enable stage 1 translation in iommu.
|
* 2. Set DOMAIN_ATTR_EARLY_MAP to 1 to enable stage 1 translation in iommu.
|
||||||
*/
|
*/
|
||||||
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_splash_info *sinfo;
|
||||||
struct msm_mmu *mmu;
|
struct msm_mmu *mmu;
|
||||||
|
@ -877,8 +876,7 @@ int sde_splash_lk_stop_splash(struct msm_kms *kms,
|
||||||
|
|
||||||
/* Monitor LK's status and tell it to exit. */
|
/* Monitor LK's status and tell it to exit. */
|
||||||
mutex_lock(&sde_splash_lock);
|
mutex_lock(&sde_splash_lock);
|
||||||
if (_sde_splash_validate_commit(sde_kms, state) &&
|
if (sinfo->display_splash_enabled) {
|
||||||
sinfo->display_splash_enabled) {
|
|
||||||
if (_sde_splash_lk_check(sde_kms->hw_intr))
|
if (_sde_splash_lk_check(sde_kms->hw_intr))
|
||||||
_sde_splash_notify_lk_stop_splash(sde_kms->hw_intr);
|
_sde_splash_notify_lk_stop_splash(sde_kms->hw_intr);
|
||||||
|
|
||||||
|
|
|
@ -120,8 +120,7 @@ void sde_splash_setup_connector_count(struct sde_splash_info *sinfo,
|
||||||
*
|
*
|
||||||
* Tell LK to stop display splash once one valid user commit arrives.
|
* 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.
|
* sde_splash_free_resource.
|
||||||
|
|
Loading…
Add table
Reference in a new issue