فهرست منبع

datarmnet : Add support for Bazel compilation

Add the required makefiles and configurations to support the
bazel build system.

CRs-Fixed: 3524428
Change-Id: Ibe750321cc30a50b220fb2f71c71939ba6a74a60
Signed-off-by: Abhinay Reddy Vanipally <[email protected]>
Abhinay Reddy Vanipally 2 سال پیش
والد
کامیت
83524585f7
8فایلهای تغییر یافته به همراه158 افزوده شده و 36 حذف شده
  1. 20 0
      BUILD.bazel
  2. 3 0
      core/Android.mk
  3. 15 5
      core/Kconfig
  4. 13 10
      core/dfc.h
  5. 4 3
      core/rmnet_ctl.h
  6. 9 7
      core/rmnet_trace.h
  7. 13 11
      core/wda.h
  8. 81 0
      define_modules.bzl

+ 20 - 0
BUILD.bazel

@@ -0,0 +1,20 @@
+load(":define_modules.bzl", "define_modules")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
+
+define_modules("pineapple", "consolidate")
+
+define_modules("pineapple", "gki")
+
+package(
+    default_visibility = [
+        "//visibility:public",
+    ],
+)
+
+ddk_headers(
+    name = "rmnet_core_headers",
+    hdrs = glob([
+        "core/*.h",
+    ]),
+    includes = ["core"],
+)

+ 3 - 0
core/Android.mk

@@ -6,6 +6,9 @@ ifeq ($(call is-board-platform-in-list, $(RMNET_CORE_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_CFLAGS := -Wno-macro-redefined -Wno-unused-function -Wall -Werror
 LOCAL_CLANG :=true
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)

+ 15 - 5
core/Kconfig

@@ -2,17 +2,27 @@
 # RMNET MAP driver
 #
 
-menuconfig RMNET_CORE
-	default m 
+config RMNET_CORE
+	default m
 	select GRO_CELLS
-	---help---
+	help
 	  If you select this, you will enable the RMNET module which is used
 	  for handling data in the multiplexing and aggregation protocol (MAP)
 	  format in the embedded data path. RMNET devices can be attached to
 	  any IP mode physical device.
 
-menuconfig RMNET_CTL
+config RMNET_CTL
 	default m
-	---help---
+	help
 	  Enable the RMNET CTL module which is used for handling QMAP commands
 	  for flow control purposes.
+
+config RMNET_LA_PLATFORM
+	default y
+	bool "RMNET platform support"
+	depends on ARCH_PINEAPPLE
+	help
+	  Enable the functionality gated by the RMNET_LA_PLATFORM configuration
+	  in rmnet driver.
+	  This should be automatically set based on the target used for
+	  compilation.

+ 13 - 10
core/dfc.h

@@ -1,5 +1,5 @@
 /* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. 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
@@ -15,18 +15,21 @@
 #define TRACE_SYSTEM dfc
 #undef TRACE_INCLUDE_PATH
 
-#if defined(RMNET_LA_PLATFORM)
-	#ifdef CONFIG_ARCH_KHAJE
-		#define TRACE_INCLUDE_PATH ../../../../../vendor/qcom/opensource/datarmnet/core
-	#else
-		#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
-	#endif
+#ifndef RMNET_TRACE_INCLUDE_PATH
+#if defined(CONFIG_RMNET_LA_PLATFORM)
+#ifdef CONFIG_ARCH_KHAJE
+#define RMNET_TRACE_INCLUDE_PATH ../../../../../vendor/qcom/opensource/datarmnet/core
+#else
+#define RMNET_TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
+#endif /* CONFIG_ARCH_KHAJE */
 #elif defined(__arch_um__)
-	#define TRACE_INCLUDE_PATH ../../datarmnet/core
+#define RMNET_TRACE_INCLUDE_PATH ../../datarmnet/core
 #else
-	#define TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
-#endif /* defined(RMNET_LA_PLATFORM) */
+#define RMNET_TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
+#endif /* defined(CONFIG_RMNET_LA_PLATFORM) */
+#endif /* RMNET_TRACE_INCLUDE_PATH */
 
+#define TRACE_INCLUDE_PATH RMNET_TRACE_INCLUDE_PATH
 #define TRACE_INCLUDE_FILE dfc
 
 #if !defined(_TRACE_DFC_H) || defined(TRACE_HEADER_MULTI_READ)

+ 4 - 3
core/rmnet_ctl.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * RMNET_CTL header
  *
@@ -9,6 +9,7 @@
 #ifndef _RMNET_CTL_H_
 #define _RMNET_CTL_H_
 
+
 #include <linux/skbuff.h>
 
 enum rmnet_ctl_log_lvl {
@@ -30,12 +31,12 @@ struct rmnet_ctl_client_if {
 		       const void *data, unsigned int len);
 };
 
-#ifdef RMNET_LA_PLATFORM
+#ifdef CONFIG_RMNET_LA_PLATFORM
 struct rmnet_ctl_client_if *rmnet_ctl_if(void);
 int rmnet_ctl_get_stats(u64 *s, int n);
 #else
 static inline struct rmnet_ctl_client_if *rmnet_ctl_if(void) {return NULL;};
 static inline int rmnet_ctl_get_stats(u64 *s, int n) {return 0;};
-#endif /* RMNET_LA_PLATFORM */
+#endif /* CONFIG_RMNET_LA_PLATFORM */
 
 #endif /* _RMNET_CTL_H_ */

+ 9 - 7
core/rmnet_trace.h

@@ -1,20 +1,22 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 #include <linux/version.h>
 #undef TRACE_SYSTEM
 #define TRACE_SYSTEM rmnet
 #undef TRACE_INCLUDE_PATH
 
-#if defined(RMNET_LA_PLATFORM)
-	#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
+#ifndef RMNET_TRACE_INCLUDE_PATH
+#if defined(CONFIG_RMNET_LA_PLATFORM)
+#define RMNET_TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
 #elif defined(__arch_um__)
-	#define TRACE_INCLUDE_PATH ../../datarmnet/core
+#define RMNET_TRACE_INCLUDE_PATH ../../datarmnet/core
 #else
-	#define TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
-#endif /* defined(RMNET_LA_PLATFORM) */
-
+#define RMNET_TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
+#endif /* defined(CONFIG_RMNET_LA_PLATFORM) */
+#endif /* RMNET_TRACE_INCLUDE_PATH */
+#define TRACE_INCLUDE_PATH RMNET_TRACE_INCLUDE_PATH
 #define TRACE_INCLUDE_FILE rmnet_trace
 
 #if !defined(_TRACE_RMNET_H) || defined(TRACE_HEADER_MULTI_READ)

+ 13 - 11
core/wda.h

@@ -1,24 +1,26 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (c) 2018,2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 #include <linux/version.h>
 #undef TRACE_SYSTEM
 #define TRACE_SYSTEM wda
 #undef TRACE_INCLUDE_PATH
 
-#if defined(RMNET_LA_PLATFORM)
-	#ifdef CONFIG_ARCH_KHAJE
-		#define TRACE_INCLUDE_PATH ../../../../../vendor/qcom/opensource/datarmnet/core
-	#else
-		#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
-	#endif
+#ifndef RMNET_TRACE_INCLUDE_PATH
+#if defined(CONFIG_RMNET_LA_PLATFORM)
+#ifdef CONFIG_ARCH_KHAJE
+#define RMNET_TRACE_INCLUDE_PATH ../../../../../vendor/qcom/opensource/datarmnet/core
+#else
+#define RMNET_TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/datarmnet/core
+#endif /* CONFIG_ARCH_KHAJE */
 #elif defined(__arch_um__)
-	#define TRACE_INCLUDE_PATH ../../datarmnet/core
+#define RMNET_TRACE_INCLUDE_PATH ../../datarmnet/core
 #else
-	#define TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
-#endif /* defined(RMNET_LA_PLATFORM) */
-
+#define RMNET_TRACE_INCLUDE_PATH ../../../../../../../datarmnet/core
+#endif /* defined(CONFIG_RMNET_LA_PLATFORM) */
+#endif /* RMNET_TRACE_INCLUDE_PATH */
+#define TRACE_INCLUDE_PATH RMNET_TRACE_INCLUDE_PATH
 #define TRACE_INCLUDE_FILE wda
 
 #if !defined(_TRACE_WDA_H) || defined(TRACE_HEADER_MULTI_READ)

+ 81 - 0
define_modules.bzl

@@ -0,0 +1,81 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_modules(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    #The below will take care of the defconfig
+    #include_defconfig = ":{}_defconfig".format(variant)
+
+    ddk_module(
+        name = "{}_rmnet_ctl".format(kernel_build_variant),
+        out = "rmnet_ctl.ko",
+        srcs = [
+            "core/rmnet_ctl_ipa.c",
+            "core/rmnet_ctl.h",
+            "core/rmnet_ctl_client.h",
+        ],
+        kconfig = "core/Kconfig",
+        conditional_srcs = {
+            "CONFIG_ARCH_PINEAPPLE": {
+                True: [
+                    "core/rmnet_ctl_client.c",
+                ],
+            },
+        },
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//vendor/qcom/opensource/dataipa:{}_ipam".format(kernel_build_variant),
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/dataipa:include_headers",
+        ],
+    )
+
+    ddk_module(
+        name = "{}_rmnet_core".format(kernel_build_variant),
+        out = "rmnet_core.ko",
+        srcs = [
+            "core/rmnet_config.c",
+            "core/rmnet_descriptor.c",
+            "core/rmnet_genl.c",
+            "core/rmnet_handlers.c",
+            "core/rmnet_map_command.c",
+            "core/rmnet_map_data.c",
+            "core/rmnet_module.c",
+            "core/rmnet_vnd.c",
+            "core/dfc_qmap.c",
+            "core/dfc_qmi.c",
+            "core/qmi_rmnet.c",
+            "core/wda_qmi.c",
+            "core/rmnet_ll.c",
+            "core/rmnet_ll_ipa.c",
+            "core/rmnet_qmap.c",
+            "core/rmnet_ll_qmap.c",
+        ],
+        local_defines = [
+            "RMNET_TRACE_INCLUDE_PATH={}/core".format(include_base),
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            ":rmnet_core_headers",
+            ":{}_rmnet_ctl".format(kernel_build_variant),
+            "//vendor/qcom/opensource/dataipa:{}_ipam".format(kernel_build_variant),
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/dataipa:include_headers",
+        ],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_modules_dist".format(kernel_build_variant),
+        data = [
+            "{}_rmnet_core".format(kernel_build_variant),
+            "{}_rmnet_ctl".format(kernel_build_variant),
+        ],
+        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",
+    )