Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8d2603b authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: cvp: Add Qualcomm CVP driver for Kona"

parents a9ca4f12 9b628d2a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ menuconfig SPECTRA_CAMERA
      Enabling this adds support for the camera driver stack including sensor,
      IFE and postprocessing drivers.

source "drivers/media/platform/msm/cvp/Kconfig"
source "drivers/media/platform/msm/sde/Kconfig"
source "drivers/media/platform/msm/vidc/Kconfig"
source "drivers/media/platform/msm/npu/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -6,5 +6,6 @@ obj-$(CONFIG_SPECTRA_CAMERA) += camera/
# Makefile for the qti specific video device drivers
# based on V4L2.
#
obj-$(CONFIG_MSM_CVP_V4L2) += cvp/
obj-$(CONFIG_MSM_VIDC_V4L2) += vidc/
obj-$(CONFIG_MSM_NPU) += npu/
+12 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
#
# CVP CORE
#

menuconfig MSM_CVP_V4L2
	tristate "Qualcomm Technologies, Inc. MSM V4L2 based CVP driver"
		depends on ARCH_QCOM && VIDEO_V4L2
		select VIDEOBUF2_CORE
        help
          Enable support of MSM V4L2 CVP driver for
          Qualcomm Technologies, Inc.
+19 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
ccflags-y += -I$(srctree)/drivers/media/platform/msm/cvp/

msm-cvp-objs := msm_v4l2_cvp.o \
				msm_v4l2_private.o \
				msm_cvp_platform.o \
				msm_cvp_common.o \
				msm_cvp_core.o \
				msm_cvp.o \
				msm_smem.o \
				msm_cvp_debug.o \
				msm_cvp_res_parse.o \
				cvp_hfi.o \
				hfi_response_handler.o \
				hfi_packetization.o \
				cvp_core_hfi.o \
				msm_cvp_clocks.o

obj-$(CONFIG_MSM_CVP_V4L2) := msm-cvp.o
+65 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 */

#include <linux/slab.h>
#include "msm_cvp_debug.h"
#include "cvp_hfi_api.h"
#include "cvp_core_hfi.h"

struct hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type,
		u32 device_id, struct msm_cvp_platform_resources *res,
		hfi_cmd_response_callback callback)
{
	struct hfi_device *hdev = NULL;
	int rc = 0;

	hdev = kzalloc(sizeof(struct hfi_device), GFP_KERNEL);
	if (!hdev) {
		dprintk(CVP_ERR, "%s: failed to allocate hdev\n", __func__);
		return NULL;
	}

	switch (hfi_type) {
	case CVP_HFI_VENUS:
		rc = cvp_venus_hfi_initialize(hdev, device_id, res, callback);
		break;
	default:
		dprintk(CVP_ERR, "Unsupported host-firmware interface\n");
		goto err_hfi_init;
	}

	if (rc) {
		if (rc != -EPROBE_DEFER)
			dprintk(CVP_ERR, "%s device init failed rc = %d",
				__func__, rc);
		goto err_hfi_init;
	}

	return hdev;

err_hfi_init:
	kfree(hdev);
	return ERR_PTR(rc);
}

void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type,
			struct hfi_device *hdev)
{
	if (!hdev) {
		dprintk(CVP_ERR, "%s invalid device %pK", __func__, hdev);
		return;
	}

	switch (hfi_type) {
	case CVP_HFI_VENUS:
		cvp_venus_hfi_delete_device(hdev->hfi_device_data);
		break;
	default:
		dprintk(CVP_ERR, "Unsupported host-firmware interface\n");
	}

	kfree(hdev);
}
Loading