msm: kgsl: Add quirk support to use alternative secure context bank
Add quirk to select alternative secure context bank node
which can use different SID during secure context play back.
Change-Id: I60b8f84e5ca2c851c591145c9122f284eae6e4bb
Signed-off-by: Rajesh Kemisetti <rajeshk@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_iommu.c b/drivers/gpu/msm/kgsl_iommu.c
index 4b11bbe..4724efe 100644
--- a/drivers/gpu/msm/kgsl_iommu.c
+++ b/drivers/gpu/msm/kgsl_iommu.c
@@ -2522,6 +2522,7 @@
} kgsl_iommu_cbs[] = {
{ KGSL_IOMMU_CONTEXT_USER, "gfx3d_user", },
{ KGSL_IOMMU_CONTEXT_SECURE, "gfx3d_secure" },
+ { KGSL_IOMMU_CONTEXT_SECURE, "gfx3d_secure_alt" },
};
static int _kgsl_iommu_cb_probe(struct kgsl_device *device,
@@ -2529,12 +2530,20 @@
{
struct platform_device *pdev = of_find_device_by_node(node);
struct kgsl_iommu_context *ctx = NULL;
+ struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
int i;
for (i = 0; i < ARRAY_SIZE(kgsl_iommu_cbs); i++) {
if (!strcmp(node->name, kgsl_iommu_cbs[i].name)) {
int id = kgsl_iommu_cbs[i].id;
+ if (ADRENO_QUIRK(adreno_dev,
+ ADRENO_QUIRK_MMU_SECURE_CB_ALT)) {
+ if (!strcmp(node->name, "gfx3d_secure"))
+ continue;
+ } else if (!strcmp(node->name, "gfx3d_secure_alt"))
+ continue;
+
ctx = &iommu->ctx[id];
ctx->id = id;
ctx->cb_num = -1;
@@ -2545,8 +2554,8 @@
}
if (ctx == NULL) {
- KGSL_CORE_ERR("dt: Unknown context label %s\n", node->name);
- return -EINVAL;
+ KGSL_CORE_ERR("dt: Unused context label %s\n", node->name);
+ return 0;
}
if (ctx->id == KGSL_IOMMU_CONTEXT_SECURE)