summaryrefslogtreecommitdiff
path: root/asoc/codecs/msm_sdw
diff options
context:
space:
mode:
authorLaxminath Kasam <lkasam@codeaurora.org>2017-10-05 01:44:16 +0530
committerLaxminath Kasam <lkasam@codeaurora.org>2017-11-02 13:42:09 +0530
commit8b1366a648d53416d16f94dee0c33d4249018f92 (patch)
tree55cab8d80e2cdd748ff0bc40bd3612f32a823fa9 /asoc/codecs/msm_sdw
parent97c9da7a1efac2d70fbbdb700e9122c49f1bb2df (diff)
downloadmsm-extra-8b1366a648d53416d16f94dee0c33d4249018f92.tar.gz
Audio: DLKM support for all audio modules
Switch to DLKM for all audio kernel modules. Change-Id: I6a96023a21f655f873531af9ace81f2b01eb0f58 Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
Diffstat (limited to 'asoc/codecs/msm_sdw')
-rw-r--r--asoc/codecs/msm_sdw/Android.mk46
-rw-r--r--asoc/codecs/msm_sdw/Kbuild104
-rw-r--r--asoc/codecs/msm_sdw/msm_sdw.h29
3 files changed, 179 insertions, 0 deletions
diff --git a/asoc/codecs/msm_sdw/Android.mk b/asoc/codecs/msm_sdw/Android.mk
new file mode 100644
index 00000000..421420b8
--- /dev/null
+++ b/asoc/codecs/msm_sdw/Android.mk
@@ -0,0 +1,46 @@
+# Android makefile for audio kernel modules
+
+# Assume no targets will be supported
+
+AUDIO_CHIPSET := audio
+# Build/Package only in case of supported target
+ifeq ($(call is-board-platform,sdm670),true)
+AUDIO_SELECT := CONFIG_SND_SOC_SDM670=m
+
+LOCAL_PATH := $(call my-dir)
+
+# This makefile is only for DLKM
+ifneq ($(findstring vendor,$(LOCAL_PATH)),)
+
+ifneq ($(findstring opensource,$(LOCAL_PATH)),)
+ AUDIO_BLD_DIR := $(ANDROID_BUILD_TOP)/vendor/qcom/opensource/audio-kernel
+endif # opensource
+
+DLKM_DIR := $(TOP)/device/qcom/common/dlkm
+
+# Build audio.ko as $(AUDIO_CHIPSET)_audio.ko
+###########################################################
+# This is set once per LOCAL_PATH, not per (kernel) module
+KBUILD_OPTIONS := AUDIO_ROOT=$(AUDIO_BLD_DIR)
+
+# We are actually building audio.ko here, as per the
+# requirement we are specifying <chipset>_audio.ko as LOCAL_MODULE.
+# This means we need to rename the module to <chipset>_audio.ko
+# after audio.ko is built.
+KBUILD_OPTIONS += MODNAME=msm_sdw_dlkm
+KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
+KBUILD_OPTIONS += $(AUDIO_SELECT)
+
+###########################################################
+include $(CLEAR_VARS)
+LOCAL_MODULE := $(AUDIO_CHIPSET)_msm_sdw.ko
+LOCAL_MODULE_KBUILD_NAME := msm_sdw_dlkm.ko
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_DEBUG_ENABLE := true
+LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
+include $(DLKM_DIR)/AndroidKernelModule.mk
+###########################################################
+###########################################################
+
+endif # DLKM check
+endif # supported target check
diff --git a/asoc/codecs/msm_sdw/Kbuild b/asoc/codecs/msm_sdw/Kbuild
new file mode 100644
index 00000000..a55948e2
--- /dev/null
+++ b/asoc/codecs/msm_sdw/Kbuild
@@ -0,0 +1,104 @@
+# We can build either as part of a standalone Kernel build or as
+# an external module. Determine which mechanism is being used
+KERNEL_BUILD := 0
+
+
+ifeq ($(KERNEL_BUILD), 0)
+ # These are configurable via Kconfig for kernel-based builds
+ # Need to explicitly configure for Android-based builds
+ ifeq ($(CONFIG_ARCH_SDM845), y)
+ include $(AUDIO_ROOT)/config/sdm845auto.conf
+ export
+ endif
+ ifeq ($(CONFIG_ARCH_SDM670), y)
+ include $(AUDIO_ROOT)/config/sdm670auto.conf
+ export
+ endif
+endif
+
+
+# As per target team, build is done as follows:
+# Defconfig : build with default flags
+# Slub : defconfig + CONFIG_SLUB_DEBUG := y +
+# CONFIG_SLUB_DEBUG_ON := y + CONFIG_PAGE_POISONING := y
+# Perf : Using appropriate msmXXXX-perf_defconfig
+#
+# Shipment builds (user variants) should not have any debug feature
+# enabled. This is identified using 'TARGET_BUILD_VARIANT'. Slub builds
+# are identified using the CONFIG_SLUB_DEBUG_ON configuration. Since
+# there is no other way to identify defconfig builds, QTI internal
+# representation of perf builds (identified using the string 'perf'),
+# is used to identify if the build is a slub or defconfig one. This
+# way no critical debug feature will be enabled for perf and shipment
+# builds. Other OEMs are also protected using the TARGET_BUILD_VARIANT
+# config.
+
+############ UAPI ############
+UAPI_DIR := uapi
+UAPI_INC := -I$(AUDIO_ROOT)/include/$(UAPI_DIR)
+
+############ COMMON ############
+COMMON_DIR := include
+COMMON_INC := -I$(AUDIO_ROOT)/$(COMMON_DIR)
+
+############ MSM Soundwire ############
+
+# for MSM Soundwire Codec
+ifeq ($(CONFIG_SND_SOC_MSM_SDW), m)
+ MSM_SDW_OBJS += msm_sdw_cdc.o
+ MSM_SDW_OBJS += msm_sdw_regmap.o
+ MSM_SDW_OBJS += msm-sdw-tables.o
+ MSM_SDW_OBJS += msm_sdw_cdc_utils.o
+endif
+
+LINUX_INC += -Iinclude/linux
+
+INCS := $(COMMON_INC) \
+ $(UAPI_INC)
+
+ifeq ($(CONFIG_ARCH_SDM845), y)
+INCS += -include $(AUDIO_ROOT)/config/sdm845autoconf.h
+endif
+ifeq ($(CONFIG_ARCH_SDM670), y)
+INCS += -include $(AUDIO_ROOT)/config/sdm670autoconf.h
+endif
+
+EXTRA_CFLAGS += $(INCS)
+
+
+CDEFINES += -DANI_LITTLE_BYTE_ENDIAN \
+ -DANI_LITTLE_BIT_ENDIAN \
+ -DDOT11F_LITTLE_ENDIAN_HOST \
+ -DANI_COMPILER_TYPE_GCC \
+ -DANI_OS_TYPE_ANDROID=6 \
+ -DPTT_SOCK_SVC_ENABLE \
+ -Wall\
+ -Werror\
+ -D__linux__
+
+KBUILD_CPPFLAGS += $(CDEFINES)
+
+# Currently, for versions of gcc which support it, the kernel Makefile
+# is disabling the maybe-uninitialized warning. Re-enable it for the
+# AUDIO driver. Note that we must use EXTRA_CFLAGS here so that it
+# will override the kernel settings.
+ifeq ($(call cc-option-yn, -Wmaybe-uninitialized),y)
+EXTRA_CFLAGS += -Wmaybe-uninitialized
+endif
+#EXTRA_CFLAGS += -Wmissing-prototypes
+
+ifeq ($(call cc-option-yn, -Wheader-guard),y)
+EXTRA_CFLAGS += -Wheader-guard
+endif
+
+KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/ipc/Module.symvers
+KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/dsp/Module.symvers
+KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/Module.symvers
+KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/Module.symvers
+KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/soc/Module.symvers
+# Module information used by KBuild framework
+obj-$(CONFIG_SND_SOC_MSM_SDW) += msm_sdw_dlkm.o
+msm_sdw_dlkm-y := $(MSM_SDW_OBJS)
+
+# inject some build related information
+DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\"
diff --git a/asoc/codecs/msm_sdw/msm_sdw.h b/asoc/codecs/msm_sdw/msm_sdw.h
index 3285f5f5..d4ac4333 100644
--- a/asoc/codecs/msm_sdw/msm_sdw.h
+++ b/asoc/codecs/msm_sdw/msm_sdw.h
@@ -156,6 +156,7 @@ struct msm_sdw_priv {
struct snd_info_entry *version_entry;
};
+#if IS_ENABLED(CONFIG_SND_SOC_MSM_SDW)
extern int msm_sdw_set_spkr_mode(struct snd_soc_codec *codec, int mode);
extern int msm_sdw_set_spkr_gain_offset(struct snd_soc_codec *codec,
int offset);
@@ -167,4 +168,32 @@ extern struct regmap *msm_sdw_regmap_init(struct device *dev,
extern int msm_sdw_codec_info_create_codec_entry(
struct snd_info_entry *codec_root,
struct snd_soc_codec *codec);
+#else /* CONFIG_SND_SOC_MSM_SDW */
+static inline int msm_sdw_set_spkr_mode(struct snd_soc_codec *codec, int mode)
+{
+ return 0;
+}
+static inline int msm_sdw_set_spkr_gain_offset(struct snd_soc_codec *codec,
+ int offset);
+{
+ return 0;
+}
+static inline void msm_sdw_gpio_cb(
+ int (*sdw_cdc_gpio_fn)(bool enable, struct snd_soc_codec *codec),
+ struct snd_soc_codec *codec);
+{
+
+}
+static inline struct regmap *msm_sdw_regmap_init(struct device *dev,
+ const struct regmap_config *config);
+{
+ return NULL;
+}
+static inline int msm_sdw_codec_info_create_codec_entry(
+ struct snd_info_entry *codec_root,
+ struct snd_soc_codec *codec)
+{
+ return 0;
+}
+#endif /* CONFIG_SND_SOC_MSM_SDW */
#endif