disp: msm: sde: Add LTM sw fuse check support

Add checks for LTM sw fuse value to only install the LTM properties
when the LTM sw fuse is set to enable.

Change-Id: I6876bfcf12ddb912e7b7a80e07c33108fd4b85b9
Signed-off-by: Ping Li <pingli@codeaurora.org>
此提交包含在:
Ping Li
2019-06-05 13:18:40 -07:00
父節點 dbbb358a92
當前提交 652b195ba4
共有 5 個檔案被更改,包括 102 行新增2 行删除

查看文件

@@ -1691,6 +1691,11 @@ static void _sde_kms_hw_destroy(struct sde_kms *sde_kms,
msm_iounmap(pdev, sde_kms->sid);
sde_kms->sid = NULL;
if (sde_kms->sw_fuse)
msm_iounmap(pdev, sde_kms->sw_fuse);
sde_hw_sw_fuse_destroy(sde_kms->sw_fuse);
sde_kms->sw_fuse = NULL;
if (sde_kms->reg_dma)
msm_iounmap(pdev, sde_kms->reg_dma);
sde_kms->reg_dma = NULL;
@@ -3095,6 +3100,19 @@ static int _sde_kms_hw_init_ioremap(struct sde_kms *sde_kms,
if (rc)
SDE_ERROR("dbg base register sid failed: %d\n", rc);
sde_kms->sw_fuse = msm_ioremap(platformdev, "swfuse_phys",
"swfuse_phys");
if (IS_ERR(sde_kms->sw_fuse)) {
sde_kms->sw_fuse = NULL;
SDE_DEBUG("sw_fuse is not defined");
} else {
sde_kms->sw_fuse_len = msm_iomap_size(platformdev,
"swfuse_phys");
rc = sde_dbg_reg_register_base("sw_fuse", sde_kms->sw_fuse,
sde_kms->sw_fuse_len);
if (rc)
SDE_ERROR("dbg base register sw_fuse failed: %d\n", rc);
}
error:
return rc;
}
@@ -3279,6 +3297,17 @@ static int _sde_kms_hw_init_blocks(struct sde_kms *sde_kms,
goto perf_err;
}
if (sde_kms->sw_fuse) {
sde_kms->hw_sw_fuse = sde_hw_sw_fuse_init(sde_kms->sw_fuse,
sde_kms->sw_fuse_len, sde_kms->catalog);
if (IS_ERR(sde_kms->hw_sw_fuse)) {
SDE_ERROR("failed to init sw_fuse %ld\n",
PTR_ERR(sde_kms->hw_sw_fuse));
sde_kms->hw_sw_fuse = NULL;
}
} else {
sde_kms->hw_sw_fuse = NULL;
}
/*
* _sde_kms_drm_obj_init should create the DRM related objects
* i.e. CRTCs, planes, encoders, connectors and so forth