From 037bc85ee2e1018dceffda459010137e1ae66f3d Mon Sep 17 00:00:00 2001 From: vb6174 Date: Wed, 7 Jul 2021 12:13:26 +0000 Subject: [PATCH 1/5] audio driver model makefile and config file Signed-off-by: vb6174 --- Kconfig | 3 + Makefile | 1 + hcs/audio/audio_config.hcs | 36 +++++++++++ hcs/audio/codec_config.hcs | 19 ++++++ hcs/audio/dai_config.hcs | 12 ++++ hcs/audio/dma_config.hcs | 12 ++++ hcs/audio/dsp_config.hcs | 19 ++++++ hcs/device_info/device_info.hcs | 107 ++++++++++++++++++++++++++++++++ hcs/hdf.hcs | 5 ++ model/audio/Kconfig | 13 ++++ model/audio/Makefile | 84 +++++++++++++++++++++++++ test/Makefile | 18 +++++- 12 files changed, 328 insertions(+), 1 deletion(-) create mode 100755 hcs/audio/audio_config.hcs create mode 100755 hcs/audio/codec_config.hcs create mode 100755 hcs/audio/dai_config.hcs create mode 100755 hcs/audio/dma_config.hcs create mode 100755 hcs/audio/dsp_config.hcs create mode 100755 model/audio/Kconfig create mode 100755 model/audio/Makefile diff --git a/Kconfig b/Kconfig index d732eda..3f4581f 100644 --- a/Kconfig +++ b/Kconfig @@ -21,4 +21,7 @@ source "drivers/hdf/khdf/model/network/wifi/Kconfig" source "drivers/hdf/khdf/model/network/bluetooth/Kconfig" source "drivers/hdf/khdf/model/sensor/Kconfig" source "drivers/hdf/khdf/model/storage/Kconfig" +source "drivers/hdf/khdf/model/usb/host/Kconfig" +source "drivers/hdf/khdf/model/usb/device/Kconfig" +source "drivers/hdf/khdf/model/audio/Kconfig" source "drivers/hdf/khdf/model/misc/vibrator/Kconfig" diff --git a/Makefile b/Makefile index 7a7c12e..691c5b7 100644 --- a/Makefile +++ b/Makefile @@ -45,3 +45,4 @@ obj-$(CONFIG_DRIVERS_HDF_SENSOR) += model/sensor/ obj-$(CONFIG_DRIVERS_HDF_STORAGE) += model/storage/ obj-$(CONFIG_DRIVERS_HDF_BT) += model/network/bluetooth/ obj-$(CONFIG_DRIVERS_HDF_VIBRATOR) += model/misc/vibrator/ +obj-$(CONFIG_DRIVERS_HDF_AUDIO) += model/audio/ diff --git a/hcs/audio/audio_config.hcs b/hcs/audio/audio_config.hcs new file mode 100755 index 0000000..0f0fad3 --- /dev/null +++ b/hcs/audio/audio_config.hcs @@ -0,0 +1,36 @@ +root { + platfrom { + template card_controller { + match_attr = ""; + serviceName = ""; + codecName = ""; + platformName = ""; + cpuDaiName = ""; + codecDaiName = ""; + accessoryName = ""; + accessoryDaiName = ""; + dspName = ""; + dspDaiName = ""; + } + controller_0x120c1000 :: card_controller { + match_attr = "hdf_audio_driver_0"; + serviceName = "hdf_audio_codec_dev0"; + codecName = "codec_service_0"; + platformName = "dma_service_0"; + cpuDaiName = "dai_service"; + codecDaiName = "codec_dai"; + dspName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + controller_0x120c1001 :: card_controller { + match_attr = "hdf_audio_driver_1"; + serviceName = "hdf_audio_smartpa_dev0"; + accessoryName = "codec_service_1"; + platformName = "dma_service_0"; + cpuDaiName = "dai_service"; + accessoryDaiName = "accessory_dai"; + dspName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + } +} diff --git a/hcs/audio/codec_config.hcs b/hcs/audio/codec_config.hcs new file mode 100755 index 0000000..919e55b --- /dev/null +++ b/hcs/audio/codec_config.hcs @@ -0,0 +1,19 @@ +root { + platfrom { + template codec_controller { + match_attr = ""; + serviceName = ""; + codecDaiName = ""; + } + controller_0x120c1030 :: codec_controller { + match_attr = "hdf_codec_driver"; + serviceName = "codec_service_0"; + codecDaiName = "codec_dai"; + } + controller_0x120c1031 :: codec_controller { + match_attr = "hdf_codec_driver_ex"; + serviceName = "codec_service_1"; + codecDaiName = "accessory_dai"; + } + } +} diff --git a/hcs/audio/dai_config.hcs b/hcs/audio/dai_config.hcs new file mode 100755 index 0000000..af6791c --- /dev/null +++ b/hcs/audio/dai_config.hcs @@ -0,0 +1,12 @@ +root { + platfrom { + template dai_controller { + match_attr = ""; + serviceName = ""; + } + controller_0x120c1020 :: dai_controller { + match_attr = "hdf_dai_driver"; + serviceName = "dai_service"; + } + } +} diff --git a/hcs/audio/dma_config.hcs b/hcs/audio/dma_config.hcs new file mode 100755 index 0000000..dc8a162 --- /dev/null +++ b/hcs/audio/dma_config.hcs @@ -0,0 +1,12 @@ +root { + platfrom { + template dma_controller { + match_attr = ""; + serviceName = ""; + } + controller_0x120c1010 :: dma_controller { + match_attr = "hdf_dma_driver"; + serviceName = "dma_service_0"; + } + } +} diff --git a/hcs/audio/dsp_config.hcs b/hcs/audio/dsp_config.hcs new file mode 100755 index 0000000..c234c79 --- /dev/null +++ b/hcs/audio/dsp_config.hcs @@ -0,0 +1,19 @@ +root { + platfrom { + template dsp_controller { + match_attr = ""; + serviceName = ""; + dspDaiName = ""; + } + controller_0x120c1040 :: dsp_controller { + match_attr = "hdf_dsp_driver"; + serviceName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + controller_0x120c1041 :: dsp_controller { + match_attr = "hdf_dsp_driver"; + serviceName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + } +} \ No newline at end of file diff --git a/hcs/device_info/device_info.hcs b/hcs/device_info/device_info.hcs index 88cdc50..a0e9d6c 100644 --- a/hcs/device_info/device_info.hcs +++ b/hcs/device_info/device_info.hcs @@ -308,6 +308,113 @@ } } } + audio :: host { + hostName = "audio_host"; + priority = 60; + device_dai0 :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DAI_HI3516"; + serviceName = "dai_service"; + deviceMatchAttr = "hdf_dai_driver"; + } + } + device_codec :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "CODEC_HI3516"; + serviceName = "codec_service_0"; + deviceMatchAttr = "hdf_codec_driver"; + } + } + device_codec_ex :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "CODEC_TFA9879"; + serviceName = "codec_service_1"; + deviceMatchAttr = "hdf_codec_driver_ex"; + } + } + device_dsp :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DSP"; + serviceName = "dsp_service_0"; + deviceMatchAttr = "hdf_dsp_driver"; + } + } + device_dma :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DMA_HI3516"; + serviceName = "dma_service_0"; + deviceMatchAttr = "hdf_dma_driver"; + } + } + device_audio :: device { + device0 :: deviceNode { + policy = 2; + priority = 60; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO"; + deviceMatchAttr = "hdf_audio_driver_0"; + serviceName = "hdf_audio_codec_dev0"; + } + device1 :: deviceNode { + policy = 2; + priority = 60; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO"; + deviceMatchAttr = "hdf_audio_driver_1"; + serviceName = "hdf_audio_smartpa_dev0"; + } + } + device_stream :: device { + device0 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_STREAM"; + serviceName = "hdf_audio_render"; + } + device1 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_STREAM"; + serviceName = "hdf_audio_capture"; + } + } + device_control :: device { + device0 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_CONTROL"; + serviceName = "hdf_audio_control"; + } + } + } vibrator :: host { hostName = "vibrator_host"; device_vibrator :: device { diff --git a/hcs/hdf.hcs b/hcs/hdf.hcs index 920c7de..084e3cd 100644 --- a/hcs/hdf.hcs +++ b/hcs/hdf.hcs @@ -9,6 +9,11 @@ #include "wifi/wlan_platform.hcs" #include "wifi/wlan_chip_hi3881.hcs" #include "sensor/sensor_config.hcs" +#include "audio/audio_config.hcs" +#include "audio/codec_config.hcs" +#include "audio/dai_config.hcs" +#include "audio/dma_config.hcs" +#include "audio/dsp_config.hcs" #include "vibrator/vibrator_config.hcs" #include "vibrator/linear_vibrator_config.hcs" diff --git a/model/audio/Kconfig b/model/audio/Kconfig new file mode 100755 index 0000000..048b140 --- /dev/null +++ b/model/audio/Kconfig @@ -0,0 +1,13 @@ +config DRIVERS_HDF_AUDIO + bool "Enable HDF Audio input driver" + default y + depends on DRIVERS_HDF + help + Answer Y to choice HDF Audio input driver. + +config DRIVERS_HDF_AUDIO_TEST + bool "Enable HDF Audio Test input driver" + default n + depends on DRIVERS_HDF_AUDIO + help + Answer Y to choice HDF Audio Test input driver. diff --git a/model/audio/Makefile b/model/audio/Makefile new file mode 100755 index 0000000..da28e8f --- /dev/null +++ b/model/audio/Makefile @@ -0,0 +1,84 @@ +# +# Copyright (c) 2020-2021 Huawei Device Co., Ltd. +# +# This software is licensed under the terms of the GNU General Public +# License version 2, as published by the Free Software Foundation, and +# may be copied, distributed, and modified under those terms. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# + +KHDF_AUDIO_BASE_ROOT_DIR = ../../../../../.. +KHDF_AUDIO_KHDF_ROOT_DIR = ../drivers/hdf/khdf +KHDF_FRAMEWORK_ROOT_DIR = ../drivers/hdf/framework +KHDF_AUDIO_ROOT_DIR = ../../../../../framework/model/audio +KHDF_AUDIO_PERIPHERAL_ROOT_DIR = $(KHDF_AUDIO_BASE_ROOT_DIR)/drivers/peripheral +KHDF_AUDIO_CODEC_DIR = $(KHDF_AUDIO_PERIPHERAL_ROOT_DIR)/audio/chipsets + +obj-y += \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_host.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_parse.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/codec_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/sapm/src/audio_sapm.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/platform.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dai.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dsp.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/codec/src/codec.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/accessory/src/accessory.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_stream_dispatch.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_control_dispatch.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_codec.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_aiao.o \ + $(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/src/tfa9879_codec.o + +obj-$(CONFIG_ARCH_HI3516DV300) += \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_host.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_parse.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/codec_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/sapm/src/audio_sapm.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/platform.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dai.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dsp.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/codec/src/codec.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/accessory/src/accessory.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_stream_dispatch.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_control_dispatch.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_codec.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_aiao.o \ + $(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/src/tfa9879_codec.o + +ccflags-y += -lm -lc -lgcc -std=gnu99 -Werror \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/drivers/framework/include/platform \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/utils/native/base/include \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/third_party/bounds_checking_function/include \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/third_party/FreeBSD/sys/dev/evdev \ + -Iinclude/$(KHDF_AUDIO_KHDF_ROOT_DIR)/osal/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/support/platform/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/utils/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/core \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/common/include/host \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/utils \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/utils \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/osal \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/ability/sbuf/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/platform \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/config \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/host/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/shared/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/manager/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/core/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/sapm/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/dispatch/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/accessory/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/codec/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/soc/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/include \ + -Iinclude/$(KHDF_AUDIO_PERIPHERAL_ROOT_DIR)/audio/interfaces/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/include diff --git a/test/Makefile b/test/Makefile index 9e460e8..f1a65ae 100644 --- a/test/Makefile +++ b/test/Makefile @@ -54,6 +54,13 @@ obj-$(CONFIG_DRIVERS_HDF_WIFI) += $(HDF_FRAMWORK_TEST_ROOT)/wifi/hdf_wifi_test.o obj-$(CONFIG_DRIVERS_HDF_SENSOR) += $(HDF_FRAMWORK_TEST_ROOT)/sensor/hdf_sensor_test.o +obj-$(CONFIG_DRIVERS_HDF_AUDIO_TEST) += $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/hdf_audio_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_host_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_core_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_parse_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_sapm_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_stream_dispatch_test.o + ccflags-y += -Idrivers/hdf/framework/include \ -Idrivers/hdf/framework/include/osal \ -Idrivers/hdf/framework/include/utils \ @@ -74,4 +81,13 @@ ccflags-y += -Idrivers/hdf/framework/include \ -Idrivers/hdf/framework/include/config \ -Idrivers/hdf/framework/ability/config/hcs_parser/include \ -Idrivers/hdf/framework/test/unittest/osal \ - -Idrivers/hdf/khdf/osal/include + -Idrivers/hdf/khdf/osal/include \ + -Idrivers/hdf/framework/model/audio/include \ + -Idrivers/hdf/framework/model/audio/sapm/include \ + -Idrivers/hdf/framework/model/audio/dispatch/include \ + -Idrivers/hdf/framework/test/unittest/model/audio/include \ + -Idrivers/hdf/framework/../peripheral/audio/interfaces/include \ + -Idrivers/hdf/framework/model/audio/dispatch/include \ + -Idrivers/hdf/framework/model/audio/device/codec/include \ + -Idrivers/hdf/framework/model/audio/device/soc/include \ + -Idrivers/hdf/framework/model/audio/device/accessory/include -- Gitee From 14d980009c8da41fe8116af26bbe0007bebbfd7e Mon Sep 17 00:00:00 2001 From: vb6174 Date: Wed, 7 Jul 2021 12:13:26 +0000 Subject: [PATCH 2/5] audio driver model makefile and config file Signed-off-by: vb6174 --- Kconfig | 1 + Makefile | 1 + hcs/audio/audio_config.hcs | 36 +++++++++++ hcs/audio/codec_config.hcs | 19 ++++++ hcs/audio/dai_config.hcs | 12 ++++ hcs/audio/dma_config.hcs | 12 ++++ hcs/audio/dsp_config.hcs | 19 ++++++ hcs/device_info/device_info.hcs | 107 ++++++++++++++++++++++++++++++++ hcs/hdf.hcs | 5 ++ model/audio/Kconfig | 13 ++++ model/audio/Makefile | 84 +++++++++++++++++++++++++ test/Makefile | 18 +++++- 12 files changed, 326 insertions(+), 1 deletion(-) create mode 100755 hcs/audio/audio_config.hcs create mode 100755 hcs/audio/codec_config.hcs create mode 100755 hcs/audio/dai_config.hcs create mode 100755 hcs/audio/dma_config.hcs create mode 100755 hcs/audio/dsp_config.hcs create mode 100755 model/audio/Kconfig create mode 100755 model/audio/Makefile diff --git a/Kconfig b/Kconfig index d732eda..5cd99b4 100644 --- a/Kconfig +++ b/Kconfig @@ -21,4 +21,5 @@ source "drivers/hdf/khdf/model/network/wifi/Kconfig" source "drivers/hdf/khdf/model/network/bluetooth/Kconfig" source "drivers/hdf/khdf/model/sensor/Kconfig" source "drivers/hdf/khdf/model/storage/Kconfig" +source "drivers/hdf/khdf/model/audio/Kconfig" source "drivers/hdf/khdf/model/misc/vibrator/Kconfig" diff --git a/Makefile b/Makefile index 7a7c12e..691c5b7 100644 --- a/Makefile +++ b/Makefile @@ -45,3 +45,4 @@ obj-$(CONFIG_DRIVERS_HDF_SENSOR) += model/sensor/ obj-$(CONFIG_DRIVERS_HDF_STORAGE) += model/storage/ obj-$(CONFIG_DRIVERS_HDF_BT) += model/network/bluetooth/ obj-$(CONFIG_DRIVERS_HDF_VIBRATOR) += model/misc/vibrator/ +obj-$(CONFIG_DRIVERS_HDF_AUDIO) += model/audio/ diff --git a/hcs/audio/audio_config.hcs b/hcs/audio/audio_config.hcs new file mode 100755 index 0000000..0f0fad3 --- /dev/null +++ b/hcs/audio/audio_config.hcs @@ -0,0 +1,36 @@ +root { + platfrom { + template card_controller { + match_attr = ""; + serviceName = ""; + codecName = ""; + platformName = ""; + cpuDaiName = ""; + codecDaiName = ""; + accessoryName = ""; + accessoryDaiName = ""; + dspName = ""; + dspDaiName = ""; + } + controller_0x120c1000 :: card_controller { + match_attr = "hdf_audio_driver_0"; + serviceName = "hdf_audio_codec_dev0"; + codecName = "codec_service_0"; + platformName = "dma_service_0"; + cpuDaiName = "dai_service"; + codecDaiName = "codec_dai"; + dspName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + controller_0x120c1001 :: card_controller { + match_attr = "hdf_audio_driver_1"; + serviceName = "hdf_audio_smartpa_dev0"; + accessoryName = "codec_service_1"; + platformName = "dma_service_0"; + cpuDaiName = "dai_service"; + accessoryDaiName = "accessory_dai"; + dspName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + } +} diff --git a/hcs/audio/codec_config.hcs b/hcs/audio/codec_config.hcs new file mode 100755 index 0000000..919e55b --- /dev/null +++ b/hcs/audio/codec_config.hcs @@ -0,0 +1,19 @@ +root { + platfrom { + template codec_controller { + match_attr = ""; + serviceName = ""; + codecDaiName = ""; + } + controller_0x120c1030 :: codec_controller { + match_attr = "hdf_codec_driver"; + serviceName = "codec_service_0"; + codecDaiName = "codec_dai"; + } + controller_0x120c1031 :: codec_controller { + match_attr = "hdf_codec_driver_ex"; + serviceName = "codec_service_1"; + codecDaiName = "accessory_dai"; + } + } +} diff --git a/hcs/audio/dai_config.hcs b/hcs/audio/dai_config.hcs new file mode 100755 index 0000000..af6791c --- /dev/null +++ b/hcs/audio/dai_config.hcs @@ -0,0 +1,12 @@ +root { + platfrom { + template dai_controller { + match_attr = ""; + serviceName = ""; + } + controller_0x120c1020 :: dai_controller { + match_attr = "hdf_dai_driver"; + serviceName = "dai_service"; + } + } +} diff --git a/hcs/audio/dma_config.hcs b/hcs/audio/dma_config.hcs new file mode 100755 index 0000000..dc8a162 --- /dev/null +++ b/hcs/audio/dma_config.hcs @@ -0,0 +1,12 @@ +root { + platfrom { + template dma_controller { + match_attr = ""; + serviceName = ""; + } + controller_0x120c1010 :: dma_controller { + match_attr = "hdf_dma_driver"; + serviceName = "dma_service_0"; + } + } +} diff --git a/hcs/audio/dsp_config.hcs b/hcs/audio/dsp_config.hcs new file mode 100755 index 0000000..c234c79 --- /dev/null +++ b/hcs/audio/dsp_config.hcs @@ -0,0 +1,19 @@ +root { + platfrom { + template dsp_controller { + match_attr = ""; + serviceName = ""; + dspDaiName = ""; + } + controller_0x120c1040 :: dsp_controller { + match_attr = "hdf_dsp_driver"; + serviceName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + controller_0x120c1041 :: dsp_controller { + match_attr = "hdf_dsp_driver"; + serviceName = "dsp_service_0"; + dspDaiName = "dsp_dai"; + } + } +} \ No newline at end of file diff --git a/hcs/device_info/device_info.hcs b/hcs/device_info/device_info.hcs index 88cdc50..a0e9d6c 100644 --- a/hcs/device_info/device_info.hcs +++ b/hcs/device_info/device_info.hcs @@ -308,6 +308,113 @@ } } } + audio :: host { + hostName = "audio_host"; + priority = 60; + device_dai0 :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DAI_HI3516"; + serviceName = "dai_service"; + deviceMatchAttr = "hdf_dai_driver"; + } + } + device_codec :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "CODEC_HI3516"; + serviceName = "codec_service_0"; + deviceMatchAttr = "hdf_codec_driver"; + } + } + device_codec_ex :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "CODEC_TFA9879"; + serviceName = "codec_service_1"; + deviceMatchAttr = "hdf_codec_driver_ex"; + } + } + device_dsp :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DSP"; + serviceName = "dsp_service_0"; + deviceMatchAttr = "hdf_dsp_driver"; + } + } + device_dma :: device { + device0 :: deviceNode { + policy = 1; + priority = 50; + preload = 0; + permission = 0666; + moduleName = "DMA_HI3516"; + serviceName = "dma_service_0"; + deviceMatchAttr = "hdf_dma_driver"; + } + } + device_audio :: device { + device0 :: deviceNode { + policy = 2; + priority = 60; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO"; + deviceMatchAttr = "hdf_audio_driver_0"; + serviceName = "hdf_audio_codec_dev0"; + } + device1 :: deviceNode { + policy = 2; + priority = 60; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO"; + deviceMatchAttr = "hdf_audio_driver_1"; + serviceName = "hdf_audio_smartpa_dev0"; + } + } + device_stream :: device { + device0 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_STREAM"; + serviceName = "hdf_audio_render"; + } + device1 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_STREAM"; + serviceName = "hdf_audio_capture"; + } + } + device_control :: device { + device0 :: deviceNode { + policy = 2; + priority = 80; + preload = 0; + permission = 0666; + moduleName = "HDF_AUDIO_CONTROL"; + serviceName = "hdf_audio_control"; + } + } + } vibrator :: host { hostName = "vibrator_host"; device_vibrator :: device { diff --git a/hcs/hdf.hcs b/hcs/hdf.hcs index 920c7de..084e3cd 100644 --- a/hcs/hdf.hcs +++ b/hcs/hdf.hcs @@ -9,6 +9,11 @@ #include "wifi/wlan_platform.hcs" #include "wifi/wlan_chip_hi3881.hcs" #include "sensor/sensor_config.hcs" +#include "audio/audio_config.hcs" +#include "audio/codec_config.hcs" +#include "audio/dai_config.hcs" +#include "audio/dma_config.hcs" +#include "audio/dsp_config.hcs" #include "vibrator/vibrator_config.hcs" #include "vibrator/linear_vibrator_config.hcs" diff --git a/model/audio/Kconfig b/model/audio/Kconfig new file mode 100755 index 0000000..048b140 --- /dev/null +++ b/model/audio/Kconfig @@ -0,0 +1,13 @@ +config DRIVERS_HDF_AUDIO + bool "Enable HDF Audio input driver" + default y + depends on DRIVERS_HDF + help + Answer Y to choice HDF Audio input driver. + +config DRIVERS_HDF_AUDIO_TEST + bool "Enable HDF Audio Test input driver" + default n + depends on DRIVERS_HDF_AUDIO + help + Answer Y to choice HDF Audio Test input driver. diff --git a/model/audio/Makefile b/model/audio/Makefile new file mode 100755 index 0000000..da28e8f --- /dev/null +++ b/model/audio/Makefile @@ -0,0 +1,84 @@ +# +# Copyright (c) 2020-2021 Huawei Device Co., Ltd. +# +# This software is licensed under the terms of the GNU General Public +# License version 2, as published by the Free Software Foundation, and +# may be copied, distributed, and modified under those terms. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# + +KHDF_AUDIO_BASE_ROOT_DIR = ../../../../../.. +KHDF_AUDIO_KHDF_ROOT_DIR = ../drivers/hdf/khdf +KHDF_FRAMEWORK_ROOT_DIR = ../drivers/hdf/framework +KHDF_AUDIO_ROOT_DIR = ../../../../../framework/model/audio +KHDF_AUDIO_PERIPHERAL_ROOT_DIR = $(KHDF_AUDIO_BASE_ROOT_DIR)/drivers/peripheral +KHDF_AUDIO_CODEC_DIR = $(KHDF_AUDIO_PERIPHERAL_ROOT_DIR)/audio/chipsets + +obj-y += \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_host.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_parse.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/codec_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/sapm/src/audio_sapm.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/platform.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dai.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dsp.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/codec/src/codec.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/accessory/src/accessory.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_stream_dispatch.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_control_dispatch.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_codec.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_aiao.o \ + $(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/src/tfa9879_codec.o + +obj-$(CONFIG_ARCH_HI3516DV300) += \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_host.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/audio_parse.o \ + $(KHDF_AUDIO_ROOT_DIR)/core/src/codec_core.o \ + $(KHDF_AUDIO_ROOT_DIR)/sapm/src/audio_sapm.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/platform.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dai.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/soc/src/dsp.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/codec/src/codec.o \ + $(KHDF_AUDIO_ROOT_DIR)/device/accessory/src/accessory.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_stream_dispatch.o \ + $(KHDF_AUDIO_ROOT_DIR)/dispatch/src/audio_control_dispatch.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_codec.o \ + $(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/src/hi3516_aiao.o \ + $(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/src/tfa9879_codec.o + +ccflags-y += -lm -lc -lgcc -std=gnu99 -Werror \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/drivers/framework/include/platform \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/utils/native/base/include \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/third_party/bounds_checking_function/include \ + -Iinclude/$(KHDF_AUDIO_BASE_ROOT_DIR)/third_party/FreeBSD/sys/dev/evdev \ + -Iinclude/$(KHDF_AUDIO_KHDF_ROOT_DIR)/osal/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/support/platform/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/utils/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/core \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/common/include/host \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/utils \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/utils \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/osal \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/ability/sbuf/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/platform \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/include/config \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/host/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/shared/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/core/manager/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/core/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/sapm/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/dispatch/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/accessory/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/codec/include \ + -Iinclude/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/device/soc/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/codec/hi3516_codec/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/accessory/tfa9879_smartPA/include \ + -Iinclude/$(KHDF_AUDIO_PERIPHERAL_ROOT_DIR)/audio/interfaces/include \ + -Iinclude/$(KHDF_AUDIO_CODEC_DIR)/include diff --git a/test/Makefile b/test/Makefile index 9e460e8..f1a65ae 100644 --- a/test/Makefile +++ b/test/Makefile @@ -54,6 +54,13 @@ obj-$(CONFIG_DRIVERS_HDF_WIFI) += $(HDF_FRAMWORK_TEST_ROOT)/wifi/hdf_wifi_test.o obj-$(CONFIG_DRIVERS_HDF_SENSOR) += $(HDF_FRAMWORK_TEST_ROOT)/sensor/hdf_sensor_test.o +obj-$(CONFIG_DRIVERS_HDF_AUDIO_TEST) += $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/hdf_audio_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_host_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_core_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_parse_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_sapm_test.o \ + $(HDF_FRAMWORK_TEST_ROOT)/model/audio/src/audio_stream_dispatch_test.o + ccflags-y += -Idrivers/hdf/framework/include \ -Idrivers/hdf/framework/include/osal \ -Idrivers/hdf/framework/include/utils \ @@ -74,4 +81,13 @@ ccflags-y += -Idrivers/hdf/framework/include \ -Idrivers/hdf/framework/include/config \ -Idrivers/hdf/framework/ability/config/hcs_parser/include \ -Idrivers/hdf/framework/test/unittest/osal \ - -Idrivers/hdf/khdf/osal/include + -Idrivers/hdf/khdf/osal/include \ + -Idrivers/hdf/framework/model/audio/include \ + -Idrivers/hdf/framework/model/audio/sapm/include \ + -Idrivers/hdf/framework/model/audio/dispatch/include \ + -Idrivers/hdf/framework/test/unittest/model/audio/include \ + -Idrivers/hdf/framework/../peripheral/audio/interfaces/include \ + -Idrivers/hdf/framework/model/audio/dispatch/include \ + -Idrivers/hdf/framework/model/audio/device/codec/include \ + -Idrivers/hdf/framework/model/audio/device/soc/include \ + -Idrivers/hdf/framework/model/audio/device/accessory/include -- Gitee From d22b0455bf3f4b7591ff0c1a70d1a07a02aab688 Mon Sep 17 00:00:00 2001 From: vb6174 Date: Wed, 7 Jul 2021 13:01:01 +0000 Subject: [PATCH 3/5] update Kconfig. --- Kconfig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Kconfig b/Kconfig index 8ec55b5..5cd99b4 100644 --- a/Kconfig +++ b/Kconfig @@ -21,10 +21,5 @@ source "drivers/hdf/khdf/model/network/wifi/Kconfig" source "drivers/hdf/khdf/model/network/bluetooth/Kconfig" source "drivers/hdf/khdf/model/sensor/Kconfig" source "drivers/hdf/khdf/model/storage/Kconfig" -<<<<<<< HEAD -======= -source "drivers/hdf/khdf/model/usb/host/Kconfig" -source "drivers/hdf/khdf/model/usb/device/Kconfig" ->>>>>>> 037bc85ee2e1018dceffda459010137e1ae66f3d source "drivers/hdf/khdf/model/audio/Kconfig" source "drivers/hdf/khdf/model/misc/vibrator/Kconfig" -- Gitee From ee815abc1094e81a7b8575649840c413cbd38062 Mon Sep 17 00:00:00 2001 From: vb6174 Date: Wed, 7 Jul 2021 13:04:41 +0000 Subject: [PATCH 4/5] update hcs/hdf.hcs. --- hcs/hdf.hcs | 1 + 1 file changed, 1 insertion(+) diff --git a/hcs/hdf.hcs b/hcs/hdf.hcs index 084e3cd..0793c11 100644 --- a/hcs/hdf.hcs +++ b/hcs/hdf.hcs @@ -1,4 +1,5 @@ #include "device_info/device_info.hcs" +#include "platform/i2c_config.hcs" #include "platform/hi35xx_watchdog_config.hcs" #include "platform/hi35xx_pwm_config.hcs" #include "platform/hi35xx_uart_config.hcs" -- Gitee From 1ca6ef7a322767eb99a69d3c4527e7ff6460defe Mon Sep 17 00:00:00 2001 From: vb6174 Date: Wed, 7 Jul 2021 13:04:41 +0000 Subject: [PATCH 5/5] update hcs/hdf.hcs. Signed-off-by: vb6174 --- hcs/hdf.hcs | 1 + hcs/platform/i2c_config.hcs | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100755 hcs/platform/i2c_config.hcs diff --git a/hcs/hdf.hcs b/hcs/hdf.hcs index 084e3cd..0793c11 100644 --- a/hcs/hdf.hcs +++ b/hcs/hdf.hcs @@ -1,4 +1,5 @@ #include "device_info/device_info.hcs" +#include "platform/i2c_config.hcs" #include "platform/hi35xx_watchdog_config.hcs" #include "platform/hi35xx_pwm_config.hcs" #include "platform/hi35xx_uart_config.hcs" diff --git a/hcs/platform/i2c_config.hcs b/hcs/platform/i2c_config.hcs new file mode 100755 index 0000000..7bc3d00 --- /dev/null +++ b/hcs/platform/i2c_config.hcs @@ -0,0 +1,36 @@ +root { + platform { + i2c_config { + match_attr = "linux_i2c_adapter"; + + template i2c_controller { + bus = 0; + } + + controller_0x120b0000 :: i2c_controller { + bus = 0; + } + controller_0x120b1000 :: i2c_controller { + bus = 1; + } + controller_0x120b2000 :: i2c_controller { + bus = 2; + } + controller_0x120b3000 :: i2c_controller { + bus = 3; + } + controller_0x120b4000 :: i2c_controller { + bus = 4; + } + controller_0x120b5000 :: i2c_controller { + bus = 5; + } + controller_0x120b6000 :: i2c_controller { + bus = 6; + } + controller_0x120b7000 :: i2c_controller { + bus = 7; + } + } + } +} -- Gitee