From 085a654371f19614ce09406d325f7e551fbc7a5b Mon Sep 17 00:00:00 2001 From: Sudheer Papothi Date: Thu, 25 Jan 2018 23:38:29 +0530 Subject: [PATCH] ASoC: AQT1000: DLKM support for AQT1000 driver Add build configuration to compile AQT1000 driver for msmnile target. Change-Id: Ia5b43544a2247c53458fd5585d62152d0e9fd3a7 Signed-off-by: Sudheer Papothi --- Android.mk | 5 ++ asoc/codecs/aqt1000/Android.mk | 41 ++++++++++++ asoc/codecs/aqt1000/Kbuild | 114 +++++++++++++++++++++++++++++++++ config/sdm855auto.conf | 1 + config/sdm855autoconf.h | 1 + 5 files changed, 162 insertions(+) create mode 100644 asoc/codecs/aqt1000/Android.mk create mode 100644 asoc/codecs/aqt1000/Kbuild diff --git a/Android.mk b/Android.mk index 89636e6f34..74058a1cb1 100644 --- a/Android.mk +++ b/Android.mk @@ -23,6 +23,11 @@ include $(MY_LOCAL_PATH)/asoc/codecs/Android.mk include $(MY_LOCAL_PATH)/asoc/codecs/wcd934x/Android.mk endif +ifeq ($(call is-board-platform-in-list,sdm670 msmnile),true) +$(shell rm -rf $(PRODUCT_OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/aqt1000/Module.symvers) +include $(MY_LOCAL_PATH)/asoc/codecs/aqt1000/Android.mk +endif + ifeq ($(call is-board-platform-in-list,msm8953 sdm670 qcs605),true) $(shell rm -rf $(PRODUCT_OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/sdm660_cdc/Module.symvers) $(shell rm -rf $(PRODUCT_OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/msm_sdw/Module.symvers) diff --git a/asoc/codecs/aqt1000/Android.mk b/asoc/codecs/aqt1000/Android.mk new file mode 100644 index 0000000000..63635da807 --- /dev/null +++ b/asoc/codecs/aqt1000/Android.mk @@ -0,0 +1,41 @@ +# Android makefile for audio kernel modules + +AUDIO_CHIPSET := audio +# Build/Package only in case of supported target +ifeq ($(call is-board-platform-in-list,sdm670 msmnile),true) + +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 _audio.ko as LOCAL_MODULE. +# This means we need to rename the module to _audio.ko +# after audio.ko is built. +KBUILD_OPTIONS += MODNAME=aqt1000_cdc_dlkm +KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM) +KBUILD_OPTIONS += $(AUDIO_SELECT) + +########################################################### +include $(CLEAR_VARS) +LOCAL_MODULE := $(AUDIO_CHIPSET)_aqt1000_cdc.ko +LOCAL_MODULE_KBUILD_NAME := aqt1000_cdc_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/aqt1000/Kbuild b/asoc/codecs/aqt1000/Kbuild new file mode 100644 index 0000000000..40cc7d4ab4 --- /dev/null +++ b/asoc/codecs/aqt1000/Kbuild @@ -0,0 +1,114 @@ +# We can build either as part of a standalone Kernel build or as +# an external module. Determine which mechanism is being used +ifeq ($(MODNAME),) + KERNEL_BUILD := 1 +else + KERNEL_BUILD := 0 +endif + +ifeq ($(KERNEL_BUILD), 1) + # These are configurable via Kconfig for kernel-based builds + # Need to explicitly configure for Android-based builds + AUDIO_BLD_DIR := $(ANDROID_BUILD_TOP)/kernel/msm-4.14 + AUDIO_ROOT := $(AUDIO_BLD_DIR)/techpack/audio +endif + +ifeq ($(KERNEL_BUILD), 0) + # These are configurable via Kconfig for kernel-based builds + # Need to explicitly configure for Android-based builds + + ifeq ($(CONFIG_ARCH_SDM670), y) + include $(AUDIO_ROOT)/config/sdm670auto.conf + export + INCS += -include $(AUDIO_ROOT)/config/sdm670autoconf.h + endif + + ifeq ($(CONFIG_ARCH_SDM855), y) + include $(AUDIO_ROOT)/config/sdm855auto.conf + export + INCS += -include $(AUDIO_ROOT)/config/sdm855autoconf.h + 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) + +# for AQT1000 Codec +ifeq ($(CONFIG_SND_SOC_AQT1000), m) + AQT1000_CDC_OBJS += aqt1000-regmap.o + AQT1000_CDC_OBJS += aqt1000-utils.o + AQT1000_CDC_OBJS += aqt1000-core.o + AQT1000_CDC_OBJS += aqt1000-irq.o + AQT1000_CDC_OBJS += aqt1000-clsh.o + AQT1000_CDC_OBJS += aqt1000.o + AQT1000_CDC_OBJS += aqt1000-mbhc.o +endif + +LINUX_INC += -Iinclude/linux + +INCS := $(COMMON_INC) \ + $(UAPI_INC) + +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 + +ifeq ($(KERNEL_BUILD), 0) +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 +KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/aqt1000/Module.symvers +endif + +# Module information used by KBuild framework +obj-$(CONFIG_SND_SOC_AQT1000) += aqt1000_cdc_dlkm.o +aqt1000_cdc_dlkm-y := $(AQT1000_CDC_OBJS) + +# inject some build related information +DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" diff --git a/config/sdm855auto.conf b/config/sdm855auto.conf index 5257790c61..2ebdce0379 100644 --- a/config/sdm855auto.conf +++ b/config/sdm855auto.conf @@ -35,3 +35,4 @@ CONFIG_DTS_SRS_TM=m CONFIG_SND_SOC_MSM_STUB=m CONFIG_MSM_AVTIMER=m CONFIG_SND_SOC_MSM_HDMI_CODEC_RX=m +CONFIG_SND_SOC_AQT1000=m diff --git a/config/sdm855autoconf.h b/config/sdm855autoconf.h index 593934adfe..651b04a49a 100644 --- a/config/sdm855autoconf.h +++ b/config/sdm855autoconf.h @@ -47,3 +47,4 @@ #define CONFIG_SND_SOC_MSM_STUB 1 #define CONFIG_MSM_AVTIMER 1 #define CONFIG_SND_SOC_MSM_HDMI_CODEC_RX 1 +#define CONFIG_SND_SOC_AQT1000 1