ソースを参照

msm-vidc: Enable standalone compilation for video

Added support for compiling video as kernel loadable module.

Change-Id: I5b9183d56d14e5e413b786b9ac2b449c6f8ab8ba
Signed-off-by: Karthikeyan Periasamy <[email protected]>
Karthikeyan Periasamy 4 年 前
コミット
0003d4f658
4 ファイル変更80 行追加44 行削除
  1. 32 0
      Android.mk
  2. 35 0
      Kbuild
  3. 10 42
      Makefile
  4. 3 2
      driver/vidc/src/msm_vidc_probe.c

+ 32 - 0
Android.mk

@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+VIDEO_BLD_DIR := $(shell pwd)/vendor/qcom/opensource/video-driver
+VIDEO_SELECT := CONFIG_MSM_VIDC_V4L2=m
+
+# Build msm_video.ko
+###########################################################
+# This is set once per LOCAL_PATH, not per (kernel) module
+KBUILD_OPTIONS := VIDEO_ROOT=$(VIDEO_BLD_DIR)
+
+KBUILD_OPTIONS += MODNAME=msm_video
+KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
+KBUILD_OPTIONS += $(VIDEO_SELECT)
+
+###########################################################
+
+DLKM_DIR   := device/qcom/common/dlkm
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+# For incremental compilation
+LOCAL_SRC_FILES           := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
+LOCAL_MODULE              := msm_video.ko
+LOCAL_MODULE_KBUILD_NAME  := msm_video.ko
+LOCAL_MODULE_TAGS         := optional
+LOCAL_MODULE_DEBUG_ENABLE := true
+LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
+
+# Include kp_module.ko in the /vendor/lib/modules (vendor.img)
+# BOARD_VENDOR_KERNEL_MODULES += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
+include $(DLKM_DIR)/Build_external_kernelmodule.mk

+ 35 - 0
Kbuild

@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+include $(VIDEO_ROOT)/config/waipio_video.conf
+
+LINUXINCLUDE    += -include $(VIDEO_ROOT)/config/waipio_video.h
+
+LINUXINCLUDE    += -I$(VIDEO_ROOT)/driver/vidc/inc \
+                   -I$(VIDEO_ROOT)/include/uapi/vidc \
+                   -I$(VIDEO_ROOT)/driver/platform/waipio/inc \
+                   -I$(VIDEO_ROOT)/driver/variant/iris2/inc
+
+USERINCLUDE     += -I$(VIDEO_ROOT)/include/uapi/vidc/media \
+                   -I$(VIDEO_ROOT)/include/uapi/vidc
+
+obj-m += msm_video.o
+
+msm_video-objs += driver/vidc/src/msm_vidc_v4l2.o \
+                  driver/vidc/src/msm_vidc_vb2.o \
+                  driver/vidc/src/msm_vidc.o \
+                  driver/vidc/src/msm_vdec.o \
+                  driver/vidc/src/msm_venc.o \
+                  driver/vidc/src/msm_vidc_driver.o \
+                  driver/vidc/src/msm_vidc_control.o \
+                  driver/vidc/src/msm_vidc_buffer.o \
+                  driver/vidc/src/msm_vidc_probe.o \
+                  driver/vidc/src/msm_vidc_dt.o \
+                  driver/vidc/src/msm_vidc_platform.o \
+                  driver/vidc/src/msm_vidc_debug.o \
+                  driver/vidc/src/msm_vidc_memory.o \
+                  driver/vidc/src/venus_hfi.o \
+                  driver/vidc/src/hfi_packet.o \
+                  driver/vidc/src/venus_hfi_response.o \
+                  driver/variant/iris2/src/msm_vidc_buffer_iris2.o \
+                  driver/variant/iris2/src/msm_vidc_iris2.o \
+                  driver/platform/waipio/src/msm_vidc_waipio.o

+ 10 - 42
Makefile

@@ -1,48 +1,16 @@
 # SPDX-License-Identifier: GPL-2.0-only
 
-# auto-detect subdirs
+KBUILD_OPTIONS+= VIDEO_ROOT=$(KERNEL_SRC)/$(M)
 
-LINUXINCLUDE    += -I$(srctree)/techpack/video/include \
-                   -I$(srctree)/techpack/video/include/uapi \
-                   -I$(srctree)/techpack/video/include/uapi/vidc \
-                   -I$(srctree)/techpack/video/driver/vidc/inc \
-                   -I$(srctree)/techpack/video/driver/platform/waipio/inc \
-                   -I$(srctree)/techpack/video/driver/variant/iris2/inc
+all:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS)
 
-USERINCLUDE     += -I$(srctree)/techpack/video/include/uapi
+modules_install:
+	$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
 
-ccflags-y       += -I$(srctree)/techpack/video/driver/vidc/src/ \
-                   -I$(srctree)/techpack/video/driver/platform/waipio/src/ \
-                   -I$(srctree)/techpack/video/driver/variant/iris2/src
-
-msm-vidc-objs   := driver/vidc/src/msm_vidc_v4l2.o \
-                   driver/vidc/src/msm_vidc_vb2.o \
-                   driver/vidc/src/msm_vidc.o \
-                   driver/vidc/src/msm_vdec.o \
-                   driver/vidc/src/msm_venc.o \
-                   driver/vidc/src/msm_vidc_driver.o \
-                   driver/vidc/src/msm_vidc_control.o \
-                   driver/vidc/src/msm_vidc_buffer.o \
-                   driver/vidc/src/msm_vidc_probe.o \
-                   driver/vidc/src/msm_vidc_dt.o \
-                   driver/vidc/src/msm_vidc_platform.o \
-                   driver/vidc/src/msm_vidc_debug.o \
-                   driver/vidc/src/msm_vidc_memory.o \
-                   driver/vidc/src/venus_hfi.o \
-                   driver/vidc/src/hfi_packet.o \
-                   driver/vidc/src/venus_hfi_response.o
-
-ifneq ($(CONFIG_ARCH_QTI_VM), y)
-ifeq ($(CONFIG_ARCH_LAHAINA), y)
-
-include $(srctree)/techpack/video/config/waipio_video.conf
-LINUXINCLUDE    += -include $(srctree)/techpack/video/config/waipio_video.h
-
-msm-vidc-objs   += driver/platform/waipio/src/msm_vidc_waipio.o \
-                   driver/variant/iris2/src/msm_vidc_iris2.o \
-                   driver/variant/iris2/src/msm_vidc_buffer_iris2.o
-endif
-endif
-
-obj-$(CONFIG_MSM_VIDC_V4L2) := msm-vidc.o
+%:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS)
 
+clean:
+	rm -f *.o *.ko *.mod.c *.mod.o *~ .*.cmd Module.symvers
+	rm -rf .tmp_versions

+ 3 - 2
driver/vidc/src/msm_vidc_probe.c

@@ -53,7 +53,7 @@ static int msm_vidc_init_irq(struct msm_vidc_core *core)
 	}
 	dt = core->dt;
 
-	core->register_base_addr = devm_ioremap_nocache(&core->pdev->dev,
+	core->register_base_addr = devm_ioremap(&core->pdev->dev,
 			dt->register_base, dt->register_size);
 	if (!core->register_base_addr) {
 		d_vpr_e("could not map reg addr %pa of size %d\n",
@@ -91,6 +91,7 @@ static struct attribute_group msm_vidc_core_attr_group = {
 static const struct of_device_id msm_vidc_dt_match[] = {
 	{.compatible = "qcom,msm-vidc"},
 	{.compatible = "qcom,msm-vidc,context-bank"},
+	{},
 };
 MODULE_DEVICE_TABLE(of, msm_vidc_dt_match);
 
@@ -148,7 +149,7 @@ static int msm_vidc_register_video_device(struct msm_vidc_core *core,
 		V4L2_CAP_META_OUTPUT |
 		V4L2_CAP_STREAMING;
 	rc = video_register_device(&core->vdev[index].vdev,
-					VFL_TYPE_GRABBER, nr);
+					VFL_TYPE_VIDEO, nr);
 	if (rc) {
 		d_vpr_e("Failed to register the video device\n");
 		return rc;