mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 02:01:18 -04:00
drm/msm/dpu: get rid of DPU_CTL_HAS_LAYER_EXT4
Continue migration to the MDSS-revision based checks and replace DPU_CTL_HAS_LAYER_EXT4 feature bit with the core_major_ver >= 9 check. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/655371/ Link: https://lore.kernel.org/r/20250522-dpu-drop-features-v5-8-3b2085a07884@oss.qualcomm.com
This commit is contained in:
committed by
Dmitry Baryshkov
parent
9b2a5bff79
commit
2ae7e2cdf4
@@ -31,32 +31,32 @@ static const struct dpu_ctl_cfg sm8650_ctl[] = {
|
||||
{
|
||||
.name = "ctl_0", .id = CTL_0,
|
||||
.base = 0x15000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
|
||||
}, {
|
||||
.name = "ctl_1", .id = CTL_1,
|
||||
.base = 0x16000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
|
||||
}, {
|
||||
.name = "ctl_2", .id = CTL_2,
|
||||
.base = 0x17000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
|
||||
}, {
|
||||
.name = "ctl_3", .id = CTL_3,
|
||||
.base = 0x18000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
|
||||
}, {
|
||||
.name = "ctl_4", .id = CTL_4,
|
||||
.base = 0x19000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
|
||||
}, {
|
||||
.name = "ctl_5", .id = CTL_5,
|
||||
.base = 0x1a000, .len = 0x1000,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -31,32 +31,32 @@ static const struct dpu_ctl_cfg sm8550_ctl[] = {
|
||||
{
|
||||
.name = "ctl_0", .id = CTL_0,
|
||||
.base = 0x15000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
|
||||
}, {
|
||||
.name = "ctl_1", .id = CTL_1,
|
||||
.base = 0x16000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
|
||||
}, {
|
||||
.name = "ctl_2", .id = CTL_2,
|
||||
.base = 0x17000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
|
||||
}, {
|
||||
.name = "ctl_3", .id = CTL_3,
|
||||
.base = 0x18000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
|
||||
}, {
|
||||
.name = "ctl_4", .id = CTL_4,
|
||||
.base = 0x19000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
|
||||
}, {
|
||||
.name = "ctl_5", .id = CTL_5,
|
||||
.base = 0x1a000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -31,32 +31,32 @@ static const struct dpu_ctl_cfg sar2130p_ctl[] = {
|
||||
{
|
||||
.name = "ctl_0", .id = CTL_0,
|
||||
.base = 0x15000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
|
||||
}, {
|
||||
.name = "ctl_1", .id = CTL_1,
|
||||
.base = 0x16000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
|
||||
}, {
|
||||
.name = "ctl_2", .id = CTL_2,
|
||||
.base = 0x17000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
|
||||
}, {
|
||||
.name = "ctl_3", .id = CTL_3,
|
||||
.base = 0x18000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
|
||||
}, {
|
||||
.name = "ctl_4", .id = CTL_4,
|
||||
.base = 0x19000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
|
||||
}, {
|
||||
.name = "ctl_5", .id = CTL_5,
|
||||
.base = 0x1a000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -30,32 +30,32 @@ static const struct dpu_ctl_cfg x1e80100_ctl[] = {
|
||||
{
|
||||
.name = "ctl_0", .id = CTL_0,
|
||||
.base = 0x15000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
|
||||
}, {
|
||||
.name = "ctl_1", .id = CTL_1,
|
||||
.base = 0x16000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
|
||||
}, {
|
||||
.name = "ctl_2", .id = CTL_2,
|
||||
.base = 0x17000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
|
||||
}, {
|
||||
.name = "ctl_3", .id = CTL_3,
|
||||
.base = 0x18000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
|
||||
}, {
|
||||
.name = "ctl_4", .id = CTL_4,
|
||||
.base = 0x19000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
|
||||
}, {
|
||||
.name = "ctl_5", .id = CTL_5,
|
||||
.base = 0x1a000, .len = 0x290,
|
||||
.features = CTL_SM8550_MASK,
|
||||
.features = CTL_SC7280_MASK,
|
||||
.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -110,9 +110,6 @@
|
||||
BIT(DPU_CTL_VM_CFG) | \
|
||||
BIT(DPU_CTL_DSPP_SUB_BLOCK_FLUSH))
|
||||
|
||||
#define CTL_SM8550_MASK \
|
||||
(CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4))
|
||||
|
||||
#define INTF_SC7180_MASK \
|
||||
(BIT(DPU_INTF_INPUT_CTRL) | \
|
||||
BIT(DPU_INTF_STATUS_SUPPORTED) | \
|
||||
|
||||
@@ -134,7 +134,6 @@ enum {
|
||||
* @DPU_CTL_SPLIT_DISPLAY: CTL supports video mode split display
|
||||
* @DPU_CTL_FETCH_ACTIVE: Active CTL for fetch HW (SSPPs)
|
||||
* @DPU_CTL_VM_CFG: CTL config to support multiple VMs
|
||||
* @DPU_CTL_HAS_LAYER_EXT4: CTL has the CTL_LAYER_EXT4 register
|
||||
* @DPU_CTL_DSPP_BLOCK_FLUSH: CTL config to support dspp sub-block flush
|
||||
* @DPU_CTL_MAX
|
||||
*/
|
||||
@@ -143,7 +142,6 @@ enum {
|
||||
DPU_CTL_ACTIVE_CFG,
|
||||
DPU_CTL_FETCH_ACTIVE,
|
||||
DPU_CTL_VM_CFG,
|
||||
DPU_CTL_HAS_LAYER_EXT4,
|
||||
DPU_CTL_DSPP_SUB_BLOCK_FLUSH,
|
||||
DPU_CTL_MAX
|
||||
};
|
||||
|
||||
@@ -555,7 +555,7 @@ static void dpu_hw_ctl_setup_blendstage(struct dpu_hw_ctl *ctx,
|
||||
DPU_REG_WRITE(c, CTL_LAYER_EXT(lm), mixercfg[1]);
|
||||
DPU_REG_WRITE(c, CTL_LAYER_EXT2(lm), mixercfg[2]);
|
||||
DPU_REG_WRITE(c, CTL_LAYER_EXT3(lm), mixercfg[3]);
|
||||
if ((test_bit(DPU_CTL_HAS_LAYER_EXT4, &ctx->caps->features)))
|
||||
if (ctx->mdss_ver->core_major_ver >= 9)
|
||||
DPU_REG_WRITE(c, CTL_LAYER_EXT4(lm), mixercfg[4]);
|
||||
}
|
||||
|
||||
@@ -743,12 +743,14 @@ static void dpu_hw_ctl_set_active_fetch_pipes(struct dpu_hw_ctl *ctx,
|
||||
* @dev: Corresponding device for devres management
|
||||
* @cfg: ctl_path catalog entry for which driver object is required
|
||||
* @addr: mapped register io address of MDP
|
||||
* @mdss_ver: dpu core's major and minor versions
|
||||
* @mixer_count: Number of mixers in @mixer
|
||||
* @mixer: Pointer to an array of Layer Mixers defined in the catalog
|
||||
*/
|
||||
struct dpu_hw_ctl *dpu_hw_ctl_init(struct drm_device *dev,
|
||||
const struct dpu_ctl_cfg *cfg,
|
||||
void __iomem *addr,
|
||||
const struct dpu_mdss_version *mdss_ver,
|
||||
u32 mixer_count,
|
||||
const struct dpu_lm_cfg *mixer)
|
||||
{
|
||||
@@ -762,6 +764,7 @@ struct dpu_hw_ctl *dpu_hw_ctl_init(struct drm_device *dev,
|
||||
c->hw.log_mask = DPU_DBG_MASK_CTL;
|
||||
|
||||
c->caps = cfg;
|
||||
c->mdss_ver = mdss_ver;
|
||||
|
||||
if (c->caps->features & BIT(DPU_CTL_ACTIVE_CFG)) {
|
||||
c->ops.trigger_flush = dpu_hw_ctl_trigger_flush_v1;
|
||||
|
||||
@@ -274,6 +274,7 @@ struct dpu_hw_ctl_ops {
|
||||
* @pending_cwb_flush_mask: pending CWB flush
|
||||
* @pending_dsc_flush_mask: pending DSC flush
|
||||
* @pending_cdm_flush_mask: pending CDM flush
|
||||
* @mdss_ver: MDSS revision information
|
||||
* @ops: operation list
|
||||
*/
|
||||
struct dpu_hw_ctl {
|
||||
@@ -295,6 +296,8 @@ struct dpu_hw_ctl {
|
||||
u32 pending_dsc_flush_mask;
|
||||
u32 pending_cdm_flush_mask;
|
||||
|
||||
const struct dpu_mdss_version *mdss_ver;
|
||||
|
||||
/* ops */
|
||||
struct dpu_hw_ctl_ops ops;
|
||||
};
|
||||
@@ -312,6 +315,7 @@ static inline struct dpu_hw_ctl *to_dpu_hw_ctl(struct dpu_hw_blk *hw)
|
||||
struct dpu_hw_ctl *dpu_hw_ctl_init(struct drm_device *dev,
|
||||
const struct dpu_ctl_cfg *cfg,
|
||||
void __iomem *addr,
|
||||
const struct dpu_mdss_version *mdss_ver,
|
||||
u32 mixer_count,
|
||||
const struct dpu_lm_cfg *mixer);
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ int dpu_rm_init(struct drm_device *dev,
|
||||
struct dpu_hw_ctl *hw;
|
||||
const struct dpu_ctl_cfg *ctl = &cat->ctl[i];
|
||||
|
||||
hw = dpu_hw_ctl_init(dev, ctl, mmio, cat->mixer_count, cat->mixer);
|
||||
hw = dpu_hw_ctl_init(dev, ctl, mmio, cat->mdss_ver, cat->mixer_count, cat->mixer);
|
||||
if (IS_ERR(hw)) {
|
||||
rc = PTR_ERR(hw);
|
||||
DPU_ERROR("failed ctl object creation: err %d\n", rc);
|
||||
|
||||
Reference in New Issue
Block a user