Просмотр исходного кода

Merge 51a4500d0f680487abec6be840badbee66681036 on remote branch

Change-Id: I20c28f069c7b1b73890953134834c007512c07a3
Linux Build Service Account 1 год назад
Родитель
Сommit
c9c550d974

+ 9 - 23
BUILD.bazel

@@ -2,35 +2,21 @@ load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
 
 package(
     default_visibility = [
-      "//visibility:public"],
+        "//visibility:public",
+    ],
 )
 
 ddk_headers(
     name = "mm_drivers_configs",
-    hdrs  = glob([
-      "config/*.h"]),
-    includes = ["config"]
-)
-
-ddk_headers(
-    name = "hw_fence_headers",
-    hdrs = glob([
-      "hw_fence/include/*.h"]),
-    includes = ["hw_fence/include"]
-)
-
-ddk_headers(
-    name = "sync_fence_uapi_headers",
-    hdrs = glob([
-      "sync_fence/include/uapi/sync_fence/*.h",
-      "sync_fence/include/*.h"]),
-    includes = ["sync_fence/include"]
+    hdrs = glob(["config/*.h"]),
+    includes = ["config"],
 )
 
 ddk_headers(
     name = "mm_drivers_headers",
-    hdrs = [":mm_drivers_configs",  ":hw_fence_headers", ":sync_fence_uapi_headers"]
+    hdrs = [
+        ":mm_drivers_configs",
+        "//vendor/qcom/opensource/mm-drivers/hw_fence:hw_fence_headers",
+        "//vendor/qcom/opensource/mm-drivers/sync_fence:sync_fence_uapi_headers",
+    ],
 )
-
-load(":target.bzl", "define_pineapple")
-define_pineapple()

+ 1 - 0
hw_fence/Android.mk

@@ -1,4 +1,5 @@
 LOCAL_PATH := $(call my-dir)
+LOCAL_MODULE_DDK_BUILD := true
 include $(CLEAR_VARS)
 
 # This makefile is only for DLKM

+ 16 - 0
hw_fence/BUILD.bazel

@@ -0,0 +1,16 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
+load(":define_hw_fence.bzl", "define_hw_fence")
+
+package(
+    default_visibility = [
+      "//visibility:public"
+    ],
+)
+
+ddk_headers(
+    name = "hw_fence_headers",
+    hdrs = glob(["include/*.h"]),
+    includes = ["include"]
+)
+
+define_hw_fence()

+ 4 - 0
hw_fence/Kconfig

@@ -0,0 +1,4 @@
+config QTI_HW_FENCE
+	bool "HW Fence"
+	help
+	  Enable the hw_fence module

+ 1 - 0
hw_fence/defconfig

@@ -0,0 +1 @@
+CONFIG_QTI_HW_FENCE=y

+ 46 - 0
hw_fence/define_hw_fence.bzl

@@ -0,0 +1,46 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module", "ddk_submodule")
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//msm-kernel:target_variants.bzl", "get_all_variants")
+
+def _define_module(target, variant):
+    tv = "{}_{}".format(target, variant)
+    ddk_module(
+        name = "{}_msm_hw_fence".format(tv),
+        srcs = [
+            "src/hw_fence_drv_debug.c",
+            "src/hw_fence_drv_ipc.c",
+            "src/hw_fence_drv_priv.c",
+            "src/hw_fence_drv_utils.c",
+            "src/msm_hw_fence.c",
+            "src/msm_hw_fence_synx_translation.c",
+        ],
+        out = "msm_hw_fence.ko",
+        defconfig = "defconfig",
+        kconfig = "Kconfig",
+        conditional_srcs = {
+            "CONFIG_DEBUG_FS": {
+                True: ["src/hw_fence_ioctl.c"],
+            },
+        },
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/synx-kernel:synx_headers",
+            "//vendor/qcom/opensource/mm-drivers:mm_drivers_headers",
+        ],
+        kernel_build = "//msm-kernel:{}".format(tv),
+    )
+
+    copy_to_dist_dir(
+        name = "{}_msm_hw_fence_dist".format(tv),
+        data = [":{}_msm_hw_fence".format(tv)],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+        log = "info",
+    )
+
+def define_hw_fence():
+    for (t, v) in get_all_variants():
+        _define_module(t, v)

+ 6 - 3
hw_fence/src/hw_fence_drv_priv.c

@@ -1634,14 +1634,17 @@ static void _signal_all_wait_clients(struct hw_fence_driver_data *drv_data,
 	for (wait_client_id = 0; wait_client_id <= drv_data->rxq_clients_num; wait_client_id++) {
 		if (hw_fence->wait_client_mask & BIT(wait_client_id)) {
 			hw_fence_wait_client = drv_data->clients[wait_client_id];
+
+			if (!hw_fence_wait_client)
+				continue;
+
 			data_id = hw_fence_get_client_data_id(hw_fence_wait_client->client_id_ext);
 
 			if (data_id < HW_FENCE_MAX_CLIENTS_WITH_DATA)
 				client_data = hw_fence->client_data[data_id];
 
-			if (hw_fence_wait_client)
-				_fence_ctl_signal(drv_data, hw_fence_wait_client, hw_fence,
-					hash, 0, client_data, error);
+			_fence_ctl_signal(drv_data, hw_fence_wait_client, hw_fence,
+				hash, 0, client_data, error);
 		}
 	}
 }

+ 0 - 103
mm_module_build.bzl

@@ -1,103 +0,0 @@
-load("//build/kernel/kleaf:kernel.bzl", "ddk_module","ddk_submodule")
-load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
-load("//msm-kernel:target_variants.bzl", "get_all_variants")
-
-def _register_module_to_map(module_map, name, path, config_option, srcs, config_srcs, deps):
-    processed_config_srcs = {}
-
-    for config_src_name in config_srcs:
-        config_src = config_srcs[config_src_name]
-
-        if type(config_src) == "list":
-            processed_config_srcs[config_src_name] = {True: config_src}
-        else:
-            processed_config_srcs[config_src_name] = config_src
-
-    module = struct(
-        name = name,
-        path = path,
-        srcs = srcs,
-        config_srcs = processed_config_srcs,
-        config_option = config_option,
-        deps = deps,
-    )
-
-    module_map[name] = module
-
-def _get_config_choices(map, options):
-    choices = []
-    for option in map:
-        choices.extend(map[option].get(option in options,[]))
-    return choices
-
-def _get_kernel_build_options(modules, config_options):
-    all_options = {option: True for option in config_options}
-    all_options = all_options | {module.config_option: True for module in modules if module.config_option}
-    return all_options
-
-def _get_kernel_build_module_srcs(module, options, formatter):
-    srcs = module.srcs + _get_config_choices(module.config_srcs, options)
-    print("-",module.name,",",module.config_option,",srcs =",srcs)
-    module_path = "{}/".format(module.path) if module.path else ""
-    return ["{}{}".format(module_path, formatter(src)) for src in srcs]
-
-def _get_kernel_build_module_deps(module, options, formatter):
-    return [formatter(dep) for dep in module.deps]
-
-def mm_driver_module_entry(hdrs = []):
-    module_map = {}
-
-    def register(name, path = None, config_option = None, srcs = [], config_srcs = {}, deps =[]):
-        _register_module_to_map(module_map, name, path, config_option, srcs, config_srcs, deps)
-    return struct(
-        register = register,
-        get = module_map.get,
-        hdrs = hdrs,
-        module_map = module_map
-    )
-
-def define_target_variant_modules(target, variant, registry, modules, config_options = []):
-    kernel_build = "{}_{}".format(target, variant)
-    kernel_build_label = "//msm-kernel:{}".format(kernel_build)
-    modules = [registry.get(module_name) for module_name in modules]
-    options = _get_kernel_build_options(modules, config_options)
-    build_print = lambda message : print("{}: {}".format(kernel_build, message))
-    formatter = lambda s : s.replace("%b", kernel_build).replace("%t", target)
-    headers = ["//msm-kernel:all_headers"] + registry.hdrs
-    all_module_rules = []
-
-    for module in modules:
-        rule_name = "{}_{}".format(kernel_build, module.name)
-        module_srcs = _get_kernel_build_module_srcs(module, options, formatter)
-
-        if not module_srcs:
-            continue
-
-        ddk_submodule(
-            name = rule_name,
-            srcs = module_srcs,
-            out = "{}.ko".format(module.name),
-            deps =  headers + _get_kernel_build_module_deps(module, options, formatter),
-            local_defines = options.keys(),
-        )
-        all_module_rules.append(rule_name)
-
-    ddk_module(
-        name = "{}_mm_drivers".format(kernel_build),
-        kernel_build = kernel_build_label,
-        deps = all_module_rules,
-    )
-    copy_to_dist_dir(
-        name = "{}_mm_drivers_dist".format(kernel_build),
-        data = [":{}_mm_drivers".format(kernel_build)],
-        dist_dir = "out/target/product/{}/dlkm/lib/modules".format(target),
-        flat = True,
-        wipe_dist_dir = False,
-        allow_duplicate_filenames = False,
-        mode_overrides = {"**/*": "644"},
-        log = "info",
-    )
-
-def define_consolidate_gki_modules(target, registry, modules, config_options = []):
-    for (targets, variant) in get_all_variants():
-            define_target_variant_modules(targets, variant, registry, modules, config_options)

+ 0 - 44
mm_modules.bzl

@@ -1,44 +0,0 @@
-load(":mm_module_build.bzl", "mm_driver_module_entry")
-
-HW_FENCE_PATH = "hw_fence"
-MSM_EXT_DISPLAY_PATH = "msm_ext_display"
-SYNC_FENCE_PATH = "sync_fence"
-
-mm_driver_modules = mm_driver_module_entry([":mm_drivers_headers"])
-module_entry = mm_driver_modules.register
-
-#--------------- MM-DRIVERS MODULES ------------------
-
-module_entry(
-    name = "hw_fence",
-    path = HW_FENCE_PATH + "/src",
-    config_option = "CONFIG_QTI_HW_FENCE",
-    config_srcs = {
-        "CONFIG_DEBUG_FS" : [
-            "hw_fence_ioctl.c",
-        ]
-    },
-    srcs = ["hw_fence_drv_debug.c",
-            "hw_fence_drv_ipc.c",
-            "hw_fence_drv_priv.c",
-            "hw_fence_drv_utils.c",
-            "msm_hw_fence.c",
-            "msm_hw_fence_synx_translation.c"],
-    deps =[
-        "//vendor/qcom/opensource/synx-kernel:synx_headers"
-    ]
-)
-
-module_entry(
-    name = "msm_ext_display",
-    path = MSM_EXT_DISPLAY_PATH + "/src",
-    config_option = "CONFIG_MSM_EXT_DISPLAY",
-    srcs = ["msm_ext_display.c"],
-)
-
-module_entry(
-    name = "sync_fence",
-    path = SYNC_FENCE_PATH + "/src",
-    config_option = "CONFIG_QCOM_SPEC_SYNC",
-    srcs = ["qcom_sync_file.c"],
-)

+ 1 - 0
msm_ext_display/Android.mk

@@ -1,4 +1,5 @@
 LOCAL_PATH := $(call my-dir)
+LOCAL_MODULE_DDK_BUILD := true
 include $(CLEAR_VARS)
 
 # This makefile is only for DLKM

+ 10 - 0
msm_ext_display/BUILD.bazel

@@ -0,0 +1,10 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
+load(":define_msm_ext_display.bzl", "define_msm_ext_display")
+
+package(
+    default_visibility = [
+      "//visibility:public"
+    ],
+)
+
+define_msm_ext_display()

+ 4 - 0
msm_ext_display/Kconfig

@@ -0,0 +1,4 @@
+config MSM_EXT_DISPLAY
+	bool "Enable msm_ext_display"
+	help
+	  Enable msm_ext_display driver

+ 1 - 0
msm_ext_display/defconfig

@@ -0,0 +1 @@
+CONFIG_MSM_EXT_DISPLAY=y

+ 31 - 0
msm_ext_display/define_msm_ext_display.bzl

@@ -0,0 +1,31 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module", "ddk_submodule")
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//msm-kernel:target_variants.bzl", "get_all_variants")
+
+def _define_module(target, variant):
+    tv = "{}_{}".format(target, variant)
+    ddk_module(
+        name = "{}_msm_ext_display".format(tv),
+        srcs = ["src/msm_ext_display.c"],
+        out = "msm_ext_display.ko",
+        defconfig = "defconfig",
+        kconfig = "Kconfig",
+        deps = ["//msm-kernel:all_headers",
+                "//vendor/qcom/opensource/mm-drivers:mm_drivers_headers"],
+        kernel_build = "//msm-kernel:{}".format(tv),
+    )
+
+    copy_to_dist_dir(
+        name = "{}_msm_ext_display_dist".format(tv),
+        data = [":{}_msm_ext_display".format(tv)],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+        log = "info",
+    )
+
+def define_msm_ext_display():
+    for (t, v) in get_all_variants():
+        _define_module(t, v)

+ 1 - 0
sync_fence/Android.mk

@@ -1,4 +1,5 @@
 LOCAL_PATH := $(call my-dir)
+LOCAL_MODULE_DDK_BUILD := true
 include $(CLEAR_VARS)
 
 # This makefile is only for DLKM

+ 16 - 0
sync_fence/BUILD.bazel

@@ -0,0 +1,16 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
+load(":define_sync_fence.bzl", "define_sync_fence")
+
+package(
+    default_visibility = [
+      "//visibility:public"
+    ],
+)
+
+ddk_headers(
+    name = "sync_fence_uapi_headers",
+    hdrs = glob(["include/uapi/sync_fence/*.h"]),
+    includes = ["include"]
+)
+
+define_sync_fence()

+ 4 - 0
sync_fence/Kconfig

@@ -0,0 +1,4 @@
+config QCOM_SPEC_SYNC
+	bool "Enable spec fence"
+	help
+	  Enable sync_fence driver

+ 1 - 0
sync_fence/defconfig

@@ -0,0 +1 @@
+CONFIG_QCOM_SPEC_SYNC=y

+ 33 - 0
sync_fence/define_sync_fence.bzl

@@ -0,0 +1,33 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//msm-kernel:target_variants.bzl", "get_all_variants")
+
+def _define_module(target, variant):
+    tv = "{}_{}".format(target, variant)
+    ddk_module(
+        name = "{}_sync_fence".format(tv),
+        srcs = ["src/qcom_sync_file.c"],
+        out = "sync_fence.ko",
+        kconfig = "Kconfig",
+        defconfig = "defconfig",
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/mm-drivers:mm_drivers_headers",
+        ],
+        kernel_build = "//msm-kernel:{}".format(tv),
+    )
+
+    copy_to_dist_dir(
+        name = "{}_sync_fence_dist".format(tv),
+        data = [":{}_sync_fence".format(tv)],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+        log = "info",
+    )
+
+def define_sync_fence():
+    for (t, v) in get_all_variants():
+        _define_module(t, v)

+ 0 - 16
target.bzl

@@ -1,16 +0,0 @@
-load(":mm_modules.bzl", "mm_driver_modules")
-load(":mm_module_build.bzl", "define_consolidate_gki_modules")
-
-def define_pineapple():
-    define_consolidate_gki_modules(
-        target = "pineapple",
-        registry = mm_driver_modules,
-        modules = [
-            "hw_fence",
-            "msm_ext_display",
-            "sync_fence",
-        ],
-        config_options = [
-            "CONFIG_DEBUG_FS",
-        ],
-)