drm/msm/sde: use common structure for phys encoder init
Consolidate physical encoder init parameters into a common
structure for clarity and ease of use.
Change-Id: I6d6b69deef69e7e0080361fd26148fa45c6032af
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c b/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
index 1f09470..cd696b0 100644
--- a/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
+++ b/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
@@ -886,22 +886,10 @@
/**
* sde_encoder_phys_wb_init - initialize writeback encoder
- * @sde_kms: Pointer to SDE KMS object
- * @wb_idx: Writeback index
- * @ctl_idx: Control index
- * @cdm_idx: Chroma down index
- * @split_role: Master/slave mode
- * @parent: Pointer to virtual encoder
- * @parent_ops: Pointer to virtual encoder operations
+ * @init: Pointer to init info structure with initialization params
*/
struct sde_encoder_phys *sde_encoder_phys_wb_init(
- struct sde_kms *sde_kms,
- enum sde_wb wb_idx,
- enum sde_ctl ctl_idx,
- enum sde_cdm cdm_idx,
- enum sde_enc_split_role split_role,
- struct drm_encoder *parent,
- struct sde_encoder_virt_ops parent_ops)
+ struct sde_enc_phys_init_params *p)
{
struct sde_encoder_phys *phys_enc;
struct sde_encoder_phys_wb *wb_enc;
@@ -921,19 +909,20 @@
phys_enc = &wb_enc->base;
- if (sde_kms->vbif[VBIF_NRT]) {
+ if (p->sde_kms->vbif[VBIF_NRT]) {
wb_enc->mmu_id[SDE_IOMMU_DOMAIN_UNSECURE] =
- sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_UNSECURE];
+ p->sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_UNSECURE];
wb_enc->mmu_id[SDE_IOMMU_DOMAIN_SECURE] =
- sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_SECURE];
+ p->sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_SECURE];
} else {
wb_enc->mmu_id[SDE_IOMMU_DOMAIN_UNSECURE] =
- sde_kms->mmu_id[MSM_SMMU_DOMAIN_UNSECURE];
+ p->sde_kms->mmu_id[MSM_SMMU_DOMAIN_UNSECURE];
wb_enc->mmu_id[SDE_IOMMU_DOMAIN_SECURE] =
- sde_kms->mmu_id[MSM_SMMU_DOMAIN_SECURE];
+ p->sde_kms->mmu_id[MSM_SMMU_DOMAIN_SECURE];
}
- hw_mdp = sde_hw_mdptop_init(MDP_TOP, sde_kms->mmio, sde_kms->catalog);
+ hw_mdp = sde_hw_mdptop_init(MDP_TOP, p->sde_kms->mmio,
+ p->sde_kms->catalog);
if (IS_ERR_OR_NULL(hw_mdp)) {
ret = PTR_ERR(hw_mdp);
SDE_ERROR("failed to init hw_top: %d\n", ret);
@@ -941,15 +930,15 @@
}
phys_enc->hw_mdptop = hw_mdp;
- if (wb_idx != SDE_NONE) {
+ if (p->wb_idx != SDE_NONE) {
struct sde_hw_wb *hw_wb;
- hw_wb = sde_hw_wb_init(wb_idx, sde_kms->mmio,
- sde_kms->catalog, phys_enc->hw_mdptop);
+ hw_wb = sde_hw_wb_init(p->wb_idx, p->sde_kms->mmio,
+ p->sde_kms->catalog, phys_enc->hw_mdptop);
if (IS_ERR_OR_NULL(hw_wb)) {
ret = PTR_ERR(hw_wb);
SDE_ERROR("failed to init hw_wb%d: %d\n",
- wb_idx - WB_0, ret);
+ p->wb_idx - WB_0, ret);
goto fail_wb_init;
}
wb_enc->hw_wb = hw_wb;
@@ -959,30 +948,30 @@
goto fail_wb_check;
}
- if (cdm_idx != SDE_NONE) {
+ if (p->cdm_idx != SDE_NONE) {
struct sde_hw_cdm *hw_cdm;
- SDE_DEBUG("Acquiring CDM %d\n", cdm_idx - CDM_0);
- hw_cdm = sde_rm_acquire_cdm_path(sde_kms, cdm_idx,
+ SDE_DEBUG("Acquiring CDM %d\n", p->cdm_idx - CDM_0);
+ hw_cdm = sde_rm_acquire_cdm_path(p->sde_kms, p->cdm_idx,
phys_enc->hw_mdptop);
if (IS_ERR_OR_NULL(hw_cdm)) {
ret = PTR_ERR(hw_cdm);
SDE_ERROR("failed to init hw_cdm%d: %d\n",
- cdm_idx - CDM_0, ret);
+ p->cdm_idx - CDM_0, ret);
goto fail_cdm_init;
}
phys_enc->hw_cdm = hw_cdm;
}
- if (ctl_idx != SDE_NONE) {
+ if (p->ctl_idx != SDE_NONE) {
struct sde_hw_ctl *hw_ctl;
- SDE_DEBUG("Acquiring CTL %d\n", ctl_idx - CTL_0);
- hw_ctl = sde_rm_acquire_ctl_path(sde_kms, ctl_idx);
+ SDE_DEBUG("Acquiring CTL %d\n", p->ctl_idx - CTL_0);
+ hw_ctl = sde_rm_acquire_ctl_path(p->sde_kms, p->ctl_idx);
if (IS_ERR_OR_NULL(hw_ctl)) {
ret = PTR_ERR(hw_ctl);
SDE_ERROR("failed to init hw_ctl%d: %d\n",
- ctl_idx - CTL_0, ret);
+ p->ctl_idx - CTL_0, ret);
goto fail_ctl_init;
}
phys_enc->hw_ctl = hw_ctl;
@@ -993,13 +982,13 @@
}
sde_encoder_phys_wb_init_ops(&phys_enc->ops);
- phys_enc->parent = parent;
- phys_enc->parent_ops = parent_ops;
- phys_enc->sde_kms = sde_kms;
- phys_enc->split_role = split_role;
+ phys_enc->parent = p->parent;
+ phys_enc->parent_ops = p->parent_ops;
+ phys_enc->sde_kms = p->sde_kms;
+ phys_enc->split_role = p->split_role;
spin_lock_init(&phys_enc->spin_lock);
- ret = sde_encoder_phys_wb_init_debugfs(phys_enc, sde_kms);
+ ret = sde_encoder_phys_wb_init_debugfs(phys_enc, p->sde_kms);
if (ret) {
SDE_ERROR("failed to init debugfs %d\n", ret);
goto fail_debugfs_init;
@@ -1011,10 +1000,10 @@
return phys_enc;
fail_debugfs_init:
- sde_rm_release_ctl_path(sde_kms, ctl_idx);
+ sde_rm_release_ctl_path(p->sde_kms, p->ctl_idx);
fail_ctl_init:
fail_ctl_check:
- sde_rm_release_cdm_path(sde_kms, cdm_idx);
+ sde_rm_release_cdm_path(p->sde_kms, p->cdm_idx);
fail_cdm_init:
sde_hw_wb_destroy(wb_enc->hw_wb);
fail_wb_init: