mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
Merge 5d29dc4215 on remote branch
Change-Id: I2812971fbc63453c0071dd04e9d9b5c562234837
This commit is contained in:
commit
ed7bba7989
5 changed files with 52 additions and 2 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _DSI_PARSER_H_
|
||||
|
|
@ -204,7 +204,7 @@ static inline struct dsi_parser_utils *dsi_parser_get_of_utils(void)
|
|||
.get_child_count = of_get_child_count,
|
||||
.get_available_child_count = of_get_available_child_count,
|
||||
.find_property = of_find_property,
|
||||
.get_next_child = of_get_next_child,
|
||||
.get_next_child = of_get_next_available_child,
|
||||
.count_u32_elems = of_property_count_u32_elems,
|
||||
.get_named_gpio = of_get_named_gpio,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3303,6 +3303,7 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc,
|
|||
if (encoder->crtc != crtc)
|
||||
continue;
|
||||
|
||||
sde_encoder_trigger_rsc_state_change(encoder);
|
||||
/* encoder will trigger pending mask now */
|
||||
sde_encoder_trigger_kickoff_pending(encoder);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3806,6 +3806,46 @@ bool sde_encoder_check_curr_mode(struct drm_encoder *drm_enc, u32 mode)
|
|||
return (disp_info->curr_panel_mode == mode);
|
||||
}
|
||||
|
||||
void sde_encoder_trigger_rsc_state_change(struct drm_encoder *drm_enc)
|
||||
{
|
||||
struct sde_encoder_virt *sde_enc = NULL;
|
||||
int ret = 0;
|
||||
|
||||
sde_enc = to_sde_encoder_virt(drm_enc);
|
||||
|
||||
if (!sde_enc)
|
||||
return;
|
||||
|
||||
mutex_lock(&sde_enc->rc_lock);
|
||||
/*
|
||||
* In dual display case when secondary comes out of
|
||||
* idle make sure RSC solver mode is disabled before
|
||||
* setting CTL_PREPARE.
|
||||
*/
|
||||
if (!sde_enc->cur_master ||
|
||||
!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE) ||
|
||||
sde_enc->disp_info.display_type == SDE_CONNECTOR_PRIMARY ||
|
||||
sde_enc->rc_state != SDE_ENC_RC_STATE_IDLE)
|
||||
goto end;
|
||||
|
||||
/* enable all the clks and resources */
|
||||
ret = _sde_encoder_resource_control_helper(drm_enc, true);
|
||||
if (ret) {
|
||||
SDE_ERROR_ENC(sde_enc, "rc in state %d\n", sde_enc->rc_state);
|
||||
SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_EVTLOG_ERROR);
|
||||
goto end;
|
||||
}
|
||||
|
||||
_sde_encoder_update_rsc_client(drm_enc, true);
|
||||
|
||||
SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_ENC_RC_STATE_ON);
|
||||
sde_enc->rc_state = SDE_ENC_RC_STATE_ON;
|
||||
|
||||
end:
|
||||
mutex_unlock(&sde_enc->rc_lock);
|
||||
}
|
||||
|
||||
|
||||
void sde_encoder_trigger_kickoff_pending(struct drm_encoder *drm_enc)
|
||||
{
|
||||
struct sde_encoder_virt *sde_enc;
|
||||
|
|
|
|||
|
|
@ -275,6 +275,12 @@ void sde_encoder_get_hw_resources(struct drm_encoder *encoder,
|
|||
struct sde_encoder_hw_resources *hw_res,
|
||||
struct drm_connector_state *conn_state);
|
||||
|
||||
/**
|
||||
* sde_encoder_trigger_rsc_state_change - rsc state change.
|
||||
* @encoder: encoder pointer
|
||||
*/
|
||||
void sde_encoder_trigger_rsc_state_change(struct drm_encoder *drm_enc);
|
||||
|
||||
/**
|
||||
* sde_encoder_early_wakeup - early wake up display
|
||||
* @encoder: encoder pointer
|
||||
|
|
|
|||
|
|
@ -959,6 +959,9 @@ static void _sde_dbg_dump_sde_dbg_bus(struct sde_dbg_sde_debug_bus *bus)
|
|||
u32 bus_size;
|
||||
char name[20];
|
||||
|
||||
if (!bus || !bus->cmn.entries_size)
|
||||
return;
|
||||
|
||||
reg_base = _sde_dump_get_blk_addr(bus->cmn.name);
|
||||
if (!reg_base || !reg_base->base) {
|
||||
pr_err("unable to find mem_base for %s\n", bus->cmn.name);
|
||||
|
|
|
|||
Loading…
Reference in a new issue