disp: msm: sde: add support for new dspp flush

SDE HW from lahaina has moved the DSPP flush bits from CTL_FLUSH
to new CTL_DSPP_x_FLUSH registers. This change brings in
support for programming the new DSPP flush registers which
allow more fine-grained control over what sub-blocks within
each DSPP get flushed.

Change-Id: Ie16c9b153d607bd7627ba02480813ab588bbe2ea
Signed-off-by: Prabhanjan Kandula <pkandula@codeaurora.org>
Signed-off-by: Steve Cohen <cohens@codeaurora.org>
This commit is contained in:
Prabhanjan Kandula
2019-05-22 16:23:41 -07:00
کامیت شده توسط Steve Cohen
والد bfbb5f63e7
کامیت fd60107c88
5فایلهای تغییر یافته به همراه186 افزوده شده و 7 حذف شده

مشاهده پرونده

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
*/
#ifndef _SDE_HW_CTL_H
@@ -13,6 +13,7 @@
#include "sde_hw_blk.h"
#define INVALID_CTL_STATUS 0xfffff88e
#define CTL_MAX_DSPP_COUNT (DSPP_MAX - DSPP_0)
/**
* sde_ctl_mode_sel: Interface mode selection
@@ -136,6 +137,7 @@ struct sde_ctl_dsc_cfg {
* @pending_merge_3d_flush_mask: pending 3d merge block flush
* @pending_cwb_flush_mask: pending flush for concurrent writeback
* @pending_periph_flush_mask: pending flush for peripheral module
* @pending_dspp_flush_masks: pending flush masks for sub-blks of each DSPP
*/
struct sde_ctl_flush_cfg {
u32 pending_flush_mask;
@@ -146,6 +148,7 @@ struct sde_ctl_flush_cfg {
u32 pending_merge_3d_flush_mask;
u32 pending_cwb_flush_mask;
u32 pending_periph_flush_mask;
u32 pending_dspp_flush_masks[CTL_MAX_DSPP_COUNT];
};
/**
@@ -347,6 +350,18 @@ struct sde_hw_ctl_ops {
int (*update_bitmask_dspp_pavlut)(struct sde_hw_ctl *ctx,
enum sde_dspp blk, bool enable);
/**
* Program DSPP sub block specific bit of dspp flush register.
* @ctx : ctl path ctx pointer
* @dspp : HW block ID of dspp block
* @sub_blk : enum of DSPP sub block to flush
* @enable : true to enable, 0 to disable
*
* This API is for CTL with DSPP flush hierarchy registers.
*/
int (*update_bitmask_dspp_subblk)(struct sde_hw_ctl *ctx,
enum sde_dspp dspp, u32 sub_blk, bool enable);
/**
* update_bitmask_sspp: updates mask corresponding to sspp
* @blk : blk id