Loading drivers/media/platform/msm/vidc/msm_vidc_platform.c +4 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,10 @@ static struct msm_vidc_common_data sdm845_common_data[] = { .key = "qcom,domain-attr-non-fatal-faults", .value = 1, }, { .key = "qcom,domain-attr-cache-pagetables", .value = 1, }, { .key = "qcom,max-secure-instances", .value = 5, Loading drivers/media/platform/msm/vidc/msm_vidc_res_parse.c +20 −5 Original line number Diff line number Diff line Loading @@ -776,6 +776,8 @@ int read_platform_resources_from_drv_data( "qcom,hw-resp-timeout"); res->non_fatal_pagefaults = find_key_value(platform_data, "qcom,domain-attr-non-fatal-faults"); res->cache_pagetables = find_key_value(platform_data, "qcom,domain-attr-cache-pagetables"); res->csc_coeff_data = &platform_data->csc_data; Loading Loading @@ -901,14 +903,14 @@ static int get_secure_vmid(struct context_bank_info *cb) return VMID_INVAL; } static int msm_vidc_setup_context_bank(struct context_bank_info *cb, struct device *dev) static int msm_vidc_setup_context_bank(struct msm_vidc_platform_resources *res, struct context_bank_info *cb, struct device *dev) { int rc = 0; int secure_vmid = VMID_INVAL; struct bus_type *bus; if (!dev || !cb) { if (!dev || !cb || !res) { dprintk(VIDC_ERR, "%s: Invalid Input params\n", __func__); return -EINVAL; Loading Loading @@ -942,6 +944,19 @@ static int msm_vidc_setup_context_bank(struct context_bank_info *cb, } } if (res->cache_pagetables) { int cache_pagetables = 1; rc = iommu_domain_set_attr(cb->mapping->domain, DOMAIN_ATTR_USE_UPSTREAM_HINT, &cache_pagetables); if (rc) { WARN_ONCE(rc, "%s: failed to set cache pagetables attribute, %d\n", __func__, rc); rc = 0; } } rc = arm_iommu_attach_device(cb->dev, cb->mapping); if (rc) { dprintk(VIDC_ERR, "%s - Couldn't arm_iommu_attach_device\n", Loading Loading @@ -1055,7 +1070,7 @@ static int msm_vidc_populate_context_bank(struct device *dev, cb->name, cb->addr_range.start, cb->addr_range.size, cb->buffer_type); rc = msm_vidc_setup_context_bank(cb, dev); rc = msm_vidc_setup_context_bank(&core->resources, cb, dev); if (rc) { dprintk(VIDC_ERR, "Cannot setup context bank %d\n", rc); goto err_setup_cb; Loading Loading @@ -1167,7 +1182,7 @@ static int msm_vidc_populate_legacy_context_bank( goto err_setup_cb; } rc = msm_vidc_setup_context_bank(cb, cb->dev); rc = msm_vidc_setup_context_bank(res, cb, cb->dev); if (rc) { dprintk(VIDC_ERR, "Cannot setup context bank %d\n", rc); goto err_setup_cb; Loading drivers/media/platform/msm/vidc/msm_vidc_resources.h +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ struct msm_vidc_platform_resources { int msm_vidc_firmware_unload_delay; uint32_t msm_vidc_pwr_collapse_delay; bool non_fatal_pagefaults; bool cache_pagetables; struct msm_vidc_codec_data *codec_data; int codec_data_count; struct msm_vidc_csc_coeff *csc_coeff_data; Loading Loading
drivers/media/platform/msm/vidc/msm_vidc_platform.c +4 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,10 @@ static struct msm_vidc_common_data sdm845_common_data[] = { .key = "qcom,domain-attr-non-fatal-faults", .value = 1, }, { .key = "qcom,domain-attr-cache-pagetables", .value = 1, }, { .key = "qcom,max-secure-instances", .value = 5, Loading
drivers/media/platform/msm/vidc/msm_vidc_res_parse.c +20 −5 Original line number Diff line number Diff line Loading @@ -776,6 +776,8 @@ int read_platform_resources_from_drv_data( "qcom,hw-resp-timeout"); res->non_fatal_pagefaults = find_key_value(platform_data, "qcom,domain-attr-non-fatal-faults"); res->cache_pagetables = find_key_value(platform_data, "qcom,domain-attr-cache-pagetables"); res->csc_coeff_data = &platform_data->csc_data; Loading Loading @@ -901,14 +903,14 @@ static int get_secure_vmid(struct context_bank_info *cb) return VMID_INVAL; } static int msm_vidc_setup_context_bank(struct context_bank_info *cb, struct device *dev) static int msm_vidc_setup_context_bank(struct msm_vidc_platform_resources *res, struct context_bank_info *cb, struct device *dev) { int rc = 0; int secure_vmid = VMID_INVAL; struct bus_type *bus; if (!dev || !cb) { if (!dev || !cb || !res) { dprintk(VIDC_ERR, "%s: Invalid Input params\n", __func__); return -EINVAL; Loading Loading @@ -942,6 +944,19 @@ static int msm_vidc_setup_context_bank(struct context_bank_info *cb, } } if (res->cache_pagetables) { int cache_pagetables = 1; rc = iommu_domain_set_attr(cb->mapping->domain, DOMAIN_ATTR_USE_UPSTREAM_HINT, &cache_pagetables); if (rc) { WARN_ONCE(rc, "%s: failed to set cache pagetables attribute, %d\n", __func__, rc); rc = 0; } } rc = arm_iommu_attach_device(cb->dev, cb->mapping); if (rc) { dprintk(VIDC_ERR, "%s - Couldn't arm_iommu_attach_device\n", Loading Loading @@ -1055,7 +1070,7 @@ static int msm_vidc_populate_context_bank(struct device *dev, cb->name, cb->addr_range.start, cb->addr_range.size, cb->buffer_type); rc = msm_vidc_setup_context_bank(cb, dev); rc = msm_vidc_setup_context_bank(&core->resources, cb, dev); if (rc) { dprintk(VIDC_ERR, "Cannot setup context bank %d\n", rc); goto err_setup_cb; Loading Loading @@ -1167,7 +1182,7 @@ static int msm_vidc_populate_legacy_context_bank( goto err_setup_cb; } rc = msm_vidc_setup_context_bank(cb, cb->dev); rc = msm_vidc_setup_context_bank(res, cb, cb->dev); if (rc) { dprintk(VIDC_ERR, "Cannot setup context bank %d\n", rc); goto err_setup_cb; Loading
drivers/media/platform/msm/vidc/msm_vidc_resources.h +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ struct msm_vidc_platform_resources { int msm_vidc_firmware_unload_delay; uint32_t msm_vidc_pwr_collapse_delay; bool non_fatal_pagefaults; bool cache_pagetables; struct msm_vidc_codec_data *codec_data; int codec_data_count; struct msm_vidc_csc_coeff *csc_coeff_data; Loading