Merge 45aa3e5a37
on remote branch
Change-Id: If5bb00c14596f966a689d2616175043c07c1a91d
This commit is contained in:
commit
64f31403b4
@ -266,7 +266,6 @@ static int dsi_ctrl_debugfs_init(struct dsi_ctrl *dsi_ctrl,
|
|||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct dentry *dir, *state_file, *reg_dump, *cmd_dma_logs;
|
struct dentry *dir, *state_file, *reg_dump, *cmd_dma_logs;
|
||||||
char dbg_name[DSI_DEBUG_NAME_LEN];
|
|
||||||
|
|
||||||
if (!dsi_ctrl || !parent) {
|
if (!dsi_ctrl || !parent) {
|
||||||
DSI_CTRL_ERR(dsi_ctrl, "Invalid params\n");
|
DSI_CTRL_ERR(dsi_ctrl, "Invalid params\n");
|
||||||
@ -329,10 +328,6 @@ static int dsi_ctrl_debugfs_init(struct dsi_ctrl *dsi_ctrl,
|
|||||||
|
|
||||||
dsi_ctrl->debugfs_root = dir;
|
dsi_ctrl->debugfs_root = dir;
|
||||||
|
|
||||||
snprintf(dbg_name, DSI_DEBUG_NAME_LEN, "dsi%d_ctrl",
|
|
||||||
dsi_ctrl->cell_index);
|
|
||||||
sde_dbg_reg_register_base(dbg_name, dsi_ctrl->hw.base,
|
|
||||||
msm_iomap_size(dsi_ctrl->pdev, "dsi_ctrl"));
|
|
||||||
error_remove_dir:
|
error_remove_dir:
|
||||||
debugfs_remove(dir);
|
debugfs_remove(dir);
|
||||||
error:
|
error:
|
||||||
@ -345,16 +340,8 @@ static int dsi_ctrl_debugfs_deinit(struct dsi_ctrl *dsi_ctrl)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static int dsi_ctrl_debugfs_init(struct dsi_ctrl *dsi_ctrl,
|
static int dsi_ctrl_debugfs_init(struct dsi_ctrl *dsi_ctrl, struct dentry *parent)
|
||||||
struct dentry *parent)
|
|
||||||
{
|
{
|
||||||
char dbg_name[DSI_DEBUG_NAME_LEN];
|
|
||||||
|
|
||||||
snprintf(dbg_name, DSI_DEBUG_NAME_LEN, "dsi%d_ctrl",
|
|
||||||
dsi_ctrl->cell_index);
|
|
||||||
sde_dbg_reg_register_base(dbg_name,
|
|
||||||
dsi_ctrl->hw.base,
|
|
||||||
msm_iomap_size(dsi_ctrl->pdev, "dsi_ctrl"));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int dsi_ctrl_debugfs_deinit(struct dsi_ctrl *dsi_ctrl)
|
static int dsi_ctrl_debugfs_deinit(struct dsi_ctrl *dsi_ctrl)
|
||||||
@ -2350,6 +2337,7 @@ void dsi_ctrl_put(struct dsi_ctrl *dsi_ctrl)
|
|||||||
*/
|
*/
|
||||||
int dsi_ctrl_drv_init(struct dsi_ctrl *dsi_ctrl, struct dentry *parent)
|
int dsi_ctrl_drv_init(struct dsi_ctrl *dsi_ctrl, struct dentry *parent)
|
||||||
{
|
{
|
||||||
|
char dbg_name[DSI_DEBUG_NAME_LEN];
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (!dsi_ctrl) {
|
if (!dsi_ctrl) {
|
||||||
@ -2371,6 +2359,10 @@ int dsi_ctrl_drv_init(struct dsi_ctrl *dsi_ctrl, struct dentry *parent)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
snprintf(dbg_name, DSI_DEBUG_NAME_LEN, "dsi%d_ctrl", dsi_ctrl->cell_index);
|
||||||
|
sde_dbg_reg_register_base(dbg_name, dsi_ctrl->hw.base,
|
||||||
|
msm_iomap_size(dsi_ctrl->pdev, "dsi_ctrl"));
|
||||||
|
|
||||||
error:
|
error:
|
||||||
mutex_unlock(&dsi_ctrl->ctrl_lock);
|
mutex_unlock(&dsi_ctrl->ctrl_lock);
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -1993,6 +1993,7 @@ static void _sde_clear_ltm_merge_mode(struct sde_crtc *sde_crtc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sde_crtc->ltm_merge_clear_pending = false;
|
sde_crtc->ltm_merge_clear_pending = false;
|
||||||
|
SDE_EVT32(DRMID(&sde_crtc->base), num_mixers, sde_crtc->ltm_merge_clear_pending);
|
||||||
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2346,6 +2347,7 @@ void sde_cp_crtc_destroy_properties(struct drm_crtc *crtc)
|
|||||||
sde_crtc->ltm_buffer_cnt = 0;
|
sde_crtc->ltm_buffer_cnt = 0;
|
||||||
sde_crtc->ltm_hist_en = false;
|
sde_crtc->ltm_hist_en = false;
|
||||||
sde_crtc->ltm_merge_clear_pending = false;
|
sde_crtc->ltm_merge_clear_pending = false;
|
||||||
|
SDE_EVT32(DRMID(crtc), sde_crtc->ltm_merge_clear_pending);
|
||||||
sde_crtc->hist_irq_idx = -1;
|
sde_crtc->hist_irq_idx = -1;
|
||||||
|
|
||||||
mutex_destroy(&sde_crtc->crtc_cp_lock);
|
mutex_destroy(&sde_crtc->crtc_cp_lock);
|
||||||
@ -2391,7 +2393,6 @@ void sde_cp_crtc_suspend(struct drm_crtc *crtc)
|
|||||||
|
|
||||||
spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags);
|
spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags);
|
||||||
sde_crtc->ltm_hist_en = false;
|
sde_crtc->ltm_hist_en = false;
|
||||||
sde_crtc->ltm_merge_clear_pending = false;
|
|
||||||
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
||||||
|
|
||||||
if (ad_suspend)
|
if (ad_suspend)
|
||||||
@ -2424,6 +2425,7 @@ void sde_cp_crtc_clear(struct drm_crtc *crtc)
|
|||||||
list_del_init(&sde_crtc->dirty_list);
|
list_del_init(&sde_crtc->dirty_list);
|
||||||
list_del_init(&sde_crtc->ad_active);
|
list_del_init(&sde_crtc->ad_active);
|
||||||
list_del_init(&sde_crtc->ad_dirty);
|
list_del_init(&sde_crtc->ad_dirty);
|
||||||
|
sde_crtc->cp_pu_feature_mask = 0;
|
||||||
mutex_unlock(&sde_crtc->crtc_cp_lock);
|
mutex_unlock(&sde_crtc->crtc_cp_lock);
|
||||||
|
|
||||||
spin_lock_irqsave(&sde_crtc->spin_lock, flags);
|
spin_lock_irqsave(&sde_crtc->spin_lock, flags);
|
||||||
@ -3833,6 +3835,7 @@ static void _sde_cp_crtc_disable_ltm_hist(struct sde_crtc *sde_crtc,
|
|||||||
spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags);
|
spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags);
|
||||||
sde_crtc->ltm_hist_en = false;
|
sde_crtc->ltm_hist_en = false;
|
||||||
sde_crtc->ltm_merge_clear_pending = true;
|
sde_crtc->ltm_merge_clear_pending = true;
|
||||||
|
SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending);
|
||||||
INIT_LIST_HEAD(&sde_crtc->ltm_buf_free);
|
INIT_LIST_HEAD(&sde_crtc->ltm_buf_free);
|
||||||
INIT_LIST_HEAD(&sde_crtc->ltm_buf_busy);
|
INIT_LIST_HEAD(&sde_crtc->ltm_buf_busy);
|
||||||
for (i = 0; i < sde_crtc->ltm_buffer_cnt; i++)
|
for (i = 0; i < sde_crtc->ltm_buffer_cnt; i++)
|
||||||
@ -3905,6 +3908,7 @@ static void sde_cp_ltm_hist_interrupt_cb(void *arg, int irq_idx)
|
|||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
sde_crtc->ltm_merge_clear_pending = true;
|
sde_crtc->ltm_merge_clear_pending = true;
|
||||||
|
SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending);
|
||||||
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
|
||||||
DRM_DEBUG_DRIVER("LTM histogram is disabled\n");
|
DRM_DEBUG_DRIVER("LTM histogram is disabled\n");
|
||||||
return;
|
return;
|
||||||
|
@ -29,19 +29,19 @@
|
|||||||
#define PA_LUTV_DSPP_CTRL_OFF 0x4c
|
#define PA_LUTV_DSPP_CTRL_OFF 0x4c
|
||||||
#define PA_LUTV_DSPP_SWAP_OFF 0x18
|
#define PA_LUTV_DSPP_SWAP_OFF 0x18
|
||||||
/**
|
/**
|
||||||
* the diff between LTM_INIT_ENABLE/DISABLE masks are portrait_en and
|
* the diff between LTM_INIT_ENABLE/DISABLE masks is portrait_en bits.
|
||||||
* merge_mode bits. When disabling INIT property, we don't want to reset those
|
* When disabling INIT property, we don't want to reset those bits since
|
||||||
* bits since they are needed for both LTM histogram and VLUT.
|
* they are needed for both LTM histogram and VLUT.
|
||||||
*/
|
*/
|
||||||
#define REG_DMA_LTM_INIT_ENABLE_OP_MASK 0xFFFC8CAB
|
#define REG_DMA_LTM_INIT_ENABLE_OP_MASK 0xFFFF8CAB
|
||||||
#define REG_DMA_LTM_INIT_DISABLE_OP_MASK 0xFFFF8CAF
|
#define REG_DMA_LTM_INIT_DISABLE_OP_MASK 0xFFFF8CAF
|
||||||
#define REG_DMA_LTM_ROI_OP_MASK 0xFEFFFFFF
|
#define REG_DMA_LTM_ROI_OP_MASK 0xFEFFFFFF
|
||||||
/**
|
/**
|
||||||
* the diff between LTM_VLUT_ENABLE/DISABLE masks are dither strength and
|
* the diff between LTM_VLUT_ENABLE/DISABLE masks are merge_mode, dither
|
||||||
* unsharp_gain bits. When disabling VLUT property, we want to reset these
|
* strength and unsharp_gain bits. When disabling VLUT property, we want
|
||||||
* bits since those are only valid if VLUT is enabled.
|
* to reset these bits since those are only valid if VLUT is enabled.
|
||||||
*/
|
*/
|
||||||
#define REG_DMA_LTM_VLUT_ENABLE_OP_MASK 0xFEFFFFAD
|
#define REG_DMA_LTM_VLUT_ENABLE_OP_MASK 0xFEFCFFAD
|
||||||
#define REG_DMA_LTM_VLUT_DISABLE_OP_MASK 0xFEFF8CAD
|
#define REG_DMA_LTM_VLUT_DISABLE_OP_MASK 0xFEFF8CAD
|
||||||
#define REG_DMA_LTM_UPDATE_REQ_MASK 0xFFFFFFFE
|
#define REG_DMA_LTM_UPDATE_REQ_MASK 0xFFFFFFFE
|
||||||
|
|
||||||
@ -3518,11 +3518,6 @@ void reg_dmav1_setup_ltm_initv1(struct sde_hw_dspp *ctx, void *cfg)
|
|||||||
else
|
else
|
||||||
opmode &= ~BIT(2);
|
opmode &= ~BIT(2);
|
||||||
|
|
||||||
if (phase.merge_en)
|
|
||||||
opmode |= BIT(16);
|
|
||||||
else
|
|
||||||
opmode &= ~(BIT(16) | BIT(17));
|
|
||||||
|
|
||||||
phase_data[0] = phase.init_v;
|
phase_data[0] = phase.init_v;
|
||||||
phase_data[1] = phase.inc_h;
|
phase_data[1] = phase.inc_h;
|
||||||
phase_data[2] = phase.inc_v;
|
phase_data[2] = phase.inc_v;
|
||||||
@ -3815,6 +3810,7 @@ void reg_dmav1_setup_ltm_vlutv1(struct sde_hw_dspp *ctx, void *cfg)
|
|||||||
struct sde_hw_cp_cfg *hw_cfg = cfg;
|
struct sde_hw_cp_cfg *hw_cfg = cfg;
|
||||||
struct sde_reg_dma_kickoff_cfg kick_off;
|
struct sde_reg_dma_kickoff_cfg kick_off;
|
||||||
struct sde_hw_reg_dma_ops *dma_ops;
|
struct sde_hw_reg_dma_ops *dma_ops;
|
||||||
|
struct sde_ltm_phase_info phase;
|
||||||
enum sde_ltm dspp_idx[LTM_MAX] = {0};
|
enum sde_ltm dspp_idx[LTM_MAX] = {0};
|
||||||
enum sde_ltm idx = 0;
|
enum sde_ltm idx = 0;
|
||||||
u32 offset, crs = 0, index = 0, len = 0, blk = 0, opmode = 0;
|
u32 offset, crs = 0, index = 0, len = 0, blk = 0, opmode = 0;
|
||||||
@ -3885,6 +3881,7 @@ void reg_dmav1_setup_ltm_vlutv1(struct sde_hw_dspp *ctx, void *cfg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sde_ltm_get_phase_info(hw_cfg, &phase);
|
||||||
for (i = 0; i < num_mixers; i++) {
|
for (i = 0; i < num_mixers; i++) {
|
||||||
/* broadcast feature is not supported with REG_SINGLE_MODIFY */
|
/* broadcast feature is not supported with REG_SINGLE_MODIFY */
|
||||||
/* reset decode select to unicast */
|
/* reset decode select to unicast */
|
||||||
@ -3915,6 +3912,10 @@ void reg_dmav1_setup_ltm_vlutv1(struct sde_hw_dspp *ctx, void *cfg)
|
|||||||
opmode |= BIT(6);
|
opmode |= BIT(6);
|
||||||
if (ltm_vlut_ops_mask[dspp_idx[i]] & ltm_roi)
|
if (ltm_vlut_ops_mask[dspp_idx[i]] & ltm_roi)
|
||||||
opmode |= BIT(24);
|
opmode |= BIT(24);
|
||||||
|
if (phase.merge_en)
|
||||||
|
opmode |= BIT(16);
|
||||||
|
else
|
||||||
|
opmode &= ~(BIT(16) | BIT(17));
|
||||||
ltm_vlut_ops_mask[dspp_idx[i]] |= ltm_vlut;
|
ltm_vlut_ops_mask[dspp_idx[i]] |= ltm_vlut;
|
||||||
|
|
||||||
REG_DMA_SETUP_OPS(dma_write_cfg, 0x4, &opmode, sizeof(u32),
|
REG_DMA_SETUP_OPS(dma_write_cfg, 0x4, &opmode, sizeof(u32),
|
||||||
|
1119
msm/sde_dbg.c
1119
msm/sde_dbg.c
File diff suppressed because it is too large
Load Diff
@ -43,6 +43,7 @@ enum sde_dbg_evtlog_flag {
|
|||||||
enum sde_dbg_dump_flag {
|
enum sde_dbg_dump_flag {
|
||||||
SDE_DBG_DUMP_IN_LOG = BIT(0),
|
SDE_DBG_DUMP_IN_LOG = BIT(0),
|
||||||
SDE_DBG_DUMP_IN_MEM = BIT(1),
|
SDE_DBG_DUMP_IN_MEM = BIT(1),
|
||||||
|
SDE_DBG_DUMP_IN_LOG_LIMITED = BIT(2),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sde_dbg_dump_context {
|
enum sde_dbg_dump_context {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) "[sde_rsc:%s:%d]: " fmt, __func__, __LINE__
|
#define pr_fmt(fmt) "[sde_rsc:%s:%d]: " fmt, __func__, __LINE__
|
||||||
@ -310,7 +310,7 @@ static u32 sde_rsc_timer_calculate(struct sde_rsc_priv *rsc,
|
|||||||
|
|
||||||
default_prefill_lines = (rsc->cmd_config.fps *
|
default_prefill_lines = (rsc->cmd_config.fps *
|
||||||
DEFAULT_PANEL_MIN_V_PREFILL) / DEFAULT_PANEL_FPS;
|
DEFAULT_PANEL_MIN_V_PREFILL) / DEFAULT_PANEL_FPS;
|
||||||
if ((state == SDE_RSC_CMD_STATE) || !rsc->cmd_config.prefill_lines)
|
if ((state != SDE_RSC_VID_STATE) || !rsc->cmd_config.prefill_lines)
|
||||||
rsc->cmd_config.prefill_lines = default_prefill_lines;
|
rsc->cmd_config.prefill_lines = default_prefill_lines;
|
||||||
|
|
||||||
pr_debug("frame fps:%d jitter_numer:%d jitter_denom:%d vtotal:%d prefill lines:%d\n",
|
pr_debug("frame fps:%d jitter_numer:%d jitter_denom:%d vtotal:%d prefill lines:%d\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user