Loading drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c +1 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -334,7 +334,6 @@ static int msm_vidc_initialize_core(struct platform_device *pdev, init_completion(&core->completions[i]); } INIT_DELAYED_WORK(&core->fw_unload_work, msm_vidc_fw_unload_handler); return rc; } Loading drivers/media/platform/msm/vidc_3x/msm_vidc_common.c +2 −59 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2831,35 +2831,15 @@ static int msm_vidc_deinit_core(struct msm_vidc_inst *inst) if (core->state == VIDC_CORE_UNINIT) { dprintk(VIDC_INFO, "Video core: %d is already in state: %d\n", core->id, core->state); mutex_unlock(&core->lock); goto core_already_uninited; } mutex_unlock(&core->lock); msm_comm_scale_clocks_and_bus(inst); mutex_lock(&core->lock); if (!core->resources.never_unload_fw) { cancel_delayed_work(&core->fw_unload_work); /* * Delay unloading of firmware. This is useful * in avoiding firmware download delays in cases where we * will have a burst of back to back video playback sessions * e.g. thumbnail generation. */ schedule_delayed_work(&core->fw_unload_work, msecs_to_jiffies(core->state == VIDC_CORE_INVALID ? 0 : msm_vidc_firmware_unload_delay)); dprintk(VIDC_DBG, "firmware unload delayed by %u ms\n", core->state == VIDC_CORE_INVALID ? 0 : msm_vidc_firmware_unload_delay); } core_already_uninited: change_inst_state(inst, MSM_VIDC_CORE_UNINIT); mutex_unlock(&core->lock); return 0; } Loading Loading @@ -5313,43 +5293,6 @@ int msm_comm_smem_cache_operations(struct msm_vidc_inst *inst, mem->size, cache_ops); } void msm_vidc_fw_unload_handler(struct work_struct *work) { struct msm_vidc_core *core = NULL; struct hfi_device *hdev = NULL; int rc = 0; core = container_of(work, struct msm_vidc_core, fw_unload_work.work); if (!core || !core->device) { dprintk(VIDC_ERR, "%s - invalid work or core handle\n", __func__); return; } hdev = core->device; mutex_lock(&core->lock); if (list_empty(&core->instances) && core->state != VIDC_CORE_UNINIT) { if (core->state > VIDC_CORE_INIT) { dprintk(VIDC_DBG, "Calling vidc_hal_core_release\n"); rc = call_hfi_op(hdev, core_release, hdev->hfi_device_data); if (rc) { dprintk(VIDC_ERR, "Failed to release core, id = %d\n", core->id); mutex_unlock(&core->lock); return; } } core->state = VIDC_CORE_UNINIT; kfree(core->capabilities); core->capabilities = NULL; } mutex_unlock(&core->lock); } int msm_comm_set_color_format(struct msm_vidc_inst *inst, enum hal_buffer buffer_type, int fourcc) { Loading drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h +1 −3 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -262,7 +262,6 @@ struct msm_vidc_core { u32 dec_codec_supported; u32 codec_count; struct msm_vidc_capability *capabilities; struct delayed_work fw_unload_work; bool smmu_fault_handled; }; Loading Loading @@ -414,7 +413,6 @@ struct msm_smem *msm_smem_user_to_kernel(struct msm_vidc_inst *inst, int fd, u32 offset, u32 size, enum hal_buffer buffer_type); void msm_vidc_fw_unload_handler(struct work_struct *work); /* XXX: normally should be in msm_vidc.h, but that's meant for public APIs, * whereas this is private */ Loading drivers/media/platform/msm/vidc_3x/msm_vidc_res_parse.c +0 −3 Original line number Diff line number Diff line Loading @@ -1341,9 +1341,6 @@ int read_platform_resources_from_dt( dprintk(VIDC_DBG, "Power collapse supported = %s\n", res->sw_power_collapsible ? "yes" : "no"); res->never_unload_fw = of_property_read_bool(pdev->dev.of_node, "qcom,never-unload-fw"); of_property_read_u32(pdev->dev.of_node, "qcom,pm-qos-latency-us", &res->pm_qos_latency_us); Loading drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h +0 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,6 @@ struct msm_vidc_platform_resources { bool thermal_mitigable; const char *fw_name; const char *hfi_version; bool never_unload_fw; uint32_t pm_qos_latency_us; uint32_t max_inst_count; uint32_t max_secure_inst_count; Loading Loading
drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c +1 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -334,7 +334,6 @@ static int msm_vidc_initialize_core(struct platform_device *pdev, init_completion(&core->completions[i]); } INIT_DELAYED_WORK(&core->fw_unload_work, msm_vidc_fw_unload_handler); return rc; } Loading
drivers/media/platform/msm/vidc_3x/msm_vidc_common.c +2 −59 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2831,35 +2831,15 @@ static int msm_vidc_deinit_core(struct msm_vidc_inst *inst) if (core->state == VIDC_CORE_UNINIT) { dprintk(VIDC_INFO, "Video core: %d is already in state: %d\n", core->id, core->state); mutex_unlock(&core->lock); goto core_already_uninited; } mutex_unlock(&core->lock); msm_comm_scale_clocks_and_bus(inst); mutex_lock(&core->lock); if (!core->resources.never_unload_fw) { cancel_delayed_work(&core->fw_unload_work); /* * Delay unloading of firmware. This is useful * in avoiding firmware download delays in cases where we * will have a burst of back to back video playback sessions * e.g. thumbnail generation. */ schedule_delayed_work(&core->fw_unload_work, msecs_to_jiffies(core->state == VIDC_CORE_INVALID ? 0 : msm_vidc_firmware_unload_delay)); dprintk(VIDC_DBG, "firmware unload delayed by %u ms\n", core->state == VIDC_CORE_INVALID ? 0 : msm_vidc_firmware_unload_delay); } core_already_uninited: change_inst_state(inst, MSM_VIDC_CORE_UNINIT); mutex_unlock(&core->lock); return 0; } Loading Loading @@ -5313,43 +5293,6 @@ int msm_comm_smem_cache_operations(struct msm_vidc_inst *inst, mem->size, cache_ops); } void msm_vidc_fw_unload_handler(struct work_struct *work) { struct msm_vidc_core *core = NULL; struct hfi_device *hdev = NULL; int rc = 0; core = container_of(work, struct msm_vidc_core, fw_unload_work.work); if (!core || !core->device) { dprintk(VIDC_ERR, "%s - invalid work or core handle\n", __func__); return; } hdev = core->device; mutex_lock(&core->lock); if (list_empty(&core->instances) && core->state != VIDC_CORE_UNINIT) { if (core->state > VIDC_CORE_INIT) { dprintk(VIDC_DBG, "Calling vidc_hal_core_release\n"); rc = call_hfi_op(hdev, core_release, hdev->hfi_device_data); if (rc) { dprintk(VIDC_ERR, "Failed to release core, id = %d\n", core->id); mutex_unlock(&core->lock); return; } } core->state = VIDC_CORE_UNINIT; kfree(core->capabilities); core->capabilities = NULL; } mutex_unlock(&core->lock); } int msm_comm_set_color_format(struct msm_vidc_inst *inst, enum hal_buffer buffer_type, int fourcc) { Loading
drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h +1 −3 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -262,7 +262,6 @@ struct msm_vidc_core { u32 dec_codec_supported; u32 codec_count; struct msm_vidc_capability *capabilities; struct delayed_work fw_unload_work; bool smmu_fault_handled; }; Loading Loading @@ -414,7 +413,6 @@ struct msm_smem *msm_smem_user_to_kernel(struct msm_vidc_inst *inst, int fd, u32 offset, u32 size, enum hal_buffer buffer_type); void msm_vidc_fw_unload_handler(struct work_struct *work); /* XXX: normally should be in msm_vidc.h, but that's meant for public APIs, * whereas this is private */ Loading
drivers/media/platform/msm/vidc_3x/msm_vidc_res_parse.c +0 −3 Original line number Diff line number Diff line Loading @@ -1341,9 +1341,6 @@ int read_platform_resources_from_dt( dprintk(VIDC_DBG, "Power collapse supported = %s\n", res->sw_power_collapsible ? "yes" : "no"); res->never_unload_fw = of_property_read_bool(pdev->dev.of_node, "qcom,never-unload-fw"); of_property_read_u32(pdev->dev.of_node, "qcom,pm-qos-latency-us", &res->pm_qos_latency_us); Loading
drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h +0 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,6 @@ struct msm_vidc_platform_resources { bool thermal_mitigable; const char *fw_name; const char *hfi_version; bool never_unload_fw; uint32_t pm_qos_latency_us; uint32_t max_inst_count; uint32_t max_secure_inst_count; Loading