ASoC: SOF: Add Build support for SOF core and Intel drivers
authorLiam Girdwood <liam.r.girdwood@linux.intel.com>
Fri, 12 Apr 2019 16:09:02 +0000 (11:09 -0500)
committerMark Brown <broonie@kernel.org>
Sat, 27 Apr 2019 17:51:46 +0000 (02:51 +0900)
Build SOF core and Intel-specific drivers.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/Kconfig
sound/soc/Makefile
sound/soc/sof/Kconfig [new file with mode: 0644]
sound/soc/sof/Makefile [new file with mode: 0644]
sound/soc/sof/intel/Kconfig [new file with mode: 0644]
sound/soc/sof/intel/Makefile [new file with mode: 0644]

index aa35940f5c50b694bf7bed85637436ccd0ac064b..297be0ca3dbc8e721ce862ab95dc7a291d8183a2 100644 (file)
@@ -63,6 +63,7 @@ source "sound/soc/rockchip/Kconfig"
 source "sound/soc/samsung/Kconfig"
 source "sound/soc/sh/Kconfig"
 source "sound/soc/sirf/Kconfig"
+source "sound/soc/sof/Kconfig"
 source "sound/soc/spear/Kconfig"
 source "sound/soc/sprd/Kconfig"
 source "sound/soc/sti/Kconfig"
index 974fb9821e172611375c0c1123851c1da7bd2034..d90ce8a3288788a334b20d697ef17962cae2a0e6 100644 (file)
@@ -47,6 +47,7 @@ obj-$(CONFIG_SND_SOC) += rockchip/
 obj-$(CONFIG_SND_SOC)  += samsung/
 obj-$(CONFIG_SND_SOC)  += sh/
 obj-$(CONFIG_SND_SOC)  += sirf/
+obj-$(CONFIG_SND_SOC)  += sof/
 obj-$(CONFIG_SND_SOC)  += spear/
 obj-$(CONFIG_SND_SOC)  += sprd/
 obj-$(CONFIG_SND_SOC)  += sti/
diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig
new file mode 100644 (file)
index 0000000..eaa3800
--- /dev/null
@@ -0,0 +1,141 @@
+config SND_SOC_SOF_TOPLEVEL
+       bool "Sound Open Firmware Support"
+       help
+         This adds support for Sound Open Firmware (SOF). SOF is a free and
+         generic open source audio DSP firmware for multiple devices.
+         Say Y if you have such a device that is supported by SOF.
+         If unsure select "N".
+
+if SND_SOC_SOF_TOPLEVEL
+
+config SND_SOC_SOF_PCI
+       tristate "SOF PCI enumeration support"
+       depends on PCI
+       select SND_SOC_SOF
+       select SND_SOC_ACPI if ACPI
+       select SND_SOC_SOF_OPTIONS
+       select SND_SOC_SOF_INTEL_PCI if SND_SOC_SOF_INTEL_TOPLEVEL
+       help
+         This adds support for PCI enumeration. This option is
+         required to enable Intel Skylake+ devices
+         Say Y if you need this option
+         If unsure select "N".
+
+config SND_SOC_SOF_ACPI
+       tristate "SOF ACPI enumeration support"
+       depends on ACPI || COMPILE_TEST
+       select SND_SOC_SOF
+       select SND_SOC_ACPI if ACPI
+       select SND_SOC_SOF_OPTIONS
+       select SND_SOC_SOF_INTEL_ACPI if SND_SOC_SOF_INTEL_TOPLEVEL
+       select IOSF_MBI if X86
+       help
+         This adds support for ACPI enumeration. This option is required
+         to enable Intel Haswell/Broadwell/Baytrail/Cherrytrail devices
+         Say Y if you need this option
+         If unsure select "N".
+
+config SND_SOC_SOF_OPTIONS
+       tristate
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+if SND_SOC_SOF_OPTIONS
+
+config SND_SOC_SOF_NOCODEC
+       tristate "SOF nocodec mode Support"
+       help
+         This adds support for a dummy/nocodec machine driver fallback
+         option if no known codec is detected. This is typically only
+         enabled for developers or devices where the sound card is
+         controlled externally
+         Say Y if you need this nocodec fallback option
+         If unsure select "N".
+
+config SND_SOC_SOF_DEBUG
+       bool "SOF debugging features"
+       help
+         This option can be used to enable or disable individual SOF firmware
+         and driver debugging options.
+         Say Y if you are debugging SOF FW or drivers.
+         If unsure select "N".
+
+if SND_SOC_SOF_DEBUG
+
+config SND_SOC_SOF_FORCE_NOCODEC_MODE
+       bool "SOF force nocodec Mode"
+       depends on SND_SOC_SOF_NOCODEC
+       help
+         This forces SOF to use dummy/nocodec as machine driver, even
+         though there is a codec detected on the real platform. This is
+         typically only enabled for developers for debug purposes, before
+         codec/machine driver is ready, or to exclude the impact of those
+         drivers
+         Say Y if you need this force nocodec mode option
+         If unsure select "N".
+
+config SND_SOC_SOF_DEBUG_XRUN_STOP
+       bool "SOF stop on XRUN"
+       help
+         This option forces PCMs to stop on any XRUN event. This is useful to
+         preserve any trace data ond pipeline status prior to the XRUN.
+         Say Y if you are debugging SOF FW pipeline XRUNs.
+         If unsure select "N".
+
+config SND_SOC_SOF_DEBUG_VERBOSE_IPC
+       bool "SOF verbose IPC logs"
+       help
+         This option enables more verbose IPC logs, with command types in
+         human-readable form instead of just 32-bit hex dumps. This is useful
+         if you are trying to debug IPC with the DSP firmware.
+         If unsure select "N".
+
+config SND_SOC_SOF_DEBUG_FORCE_IPC_POSITION
+       bool "SOF force to use IPC for position update on SKL+"
+       help
+         This option force to handle stream position update IPCs and run pcm
+         elapse to inform ALSA about that, on platforms (e.g. Intel SKL+) that
+         with other approach (e.g. HDAC DPIB/posbuf) to elapse PCM.
+         On platforms (e.g. Intel SKL-) where position update IPC is the only
+         one choice, this setting won't impact anything.
+         if you are trying to debug pointer update with position IPCs or where
+         DPIB/posbuf is not ready, select "Y".
+         If unsure select "N".
+
+config SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE
+       bool "SOF enable debugfs caching"
+       help
+         This option enables caching of debugfs
+         memory -> DSP resource (memory, register, etc)
+         before the audio DSP is suspended. This will increase the suspend
+         latency and therefore should be used for debug purposes only.
+         Say Y if you want to enable caching the memory windows.
+         If unsure, select "N".
+
+endif ## SND_SOC_SOF_DEBUG
+
+endif ## SND_SOC_SOF_OPTIONS
+
+config SND_SOC_SOF
+       tristate
+       select SND_SOC_TOPOLOGY
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+         The selection is made at the top level and does not exactly follow
+         module dependencies but since the module or built-in type is decided
+         at the top level it doesn't matter.
+
+config SND_SOC_SOF_PROBE_WORK_QUEUE
+       bool
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+         When selected, the probe is handled in two steps, for example to
+         avoid lockdeps if request_module is used in the probe.
+
+source "sound/soc/sof/intel/Kconfig"
+source "sound/soc/sof/xtensa/Kconfig"
+
+endif
diff --git a/sound/soc/sof/Makefile b/sound/soc/sof/Makefile
new file mode 100644 (file)
index 0000000..8f14c9d
--- /dev/null
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+
+snd-sof-objs := core.o ops.o loader.o ipc.o pcm.o pm.o debug.o topology.o\
+               control.o trace.o utils.o
+
+snd-sof-pci-objs := sof-pci-dev.o
+snd-sof-acpi-objs := sof-acpi-dev.o
+snd-sof-nocodec-objs := nocodec.o
+
+obj-$(CONFIG_SND_SOC_SOF) += snd-sof.o
+obj-$(CONFIG_SND_SOC_SOF_NOCODEC) += snd-sof-nocodec.o
+
+
+obj-$(CONFIG_SND_SOC_SOF_ACPI) += sof-acpi-dev.o
+obj-$(CONFIG_SND_SOC_SOF_PCI) += sof-pci-dev.o
+
+obj-$(CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL) += intel/
+obj-$(CONFIG_SND_SOC_SOF_XTENSA) += xtensa/
diff --git a/sound/soc/sof/intel/Kconfig b/sound/soc/sof/intel/Kconfig
new file mode 100644 (file)
index 0000000..32ee0fa
--- /dev/null
@@ -0,0 +1,230 @@
+config SND_SOC_SOF_INTEL_TOPLEVEL
+       bool "SOF support for Intel audio DSPs"
+       depends on X86 || COMPILE_TEST
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+if SND_SOC_SOF_INTEL_TOPLEVEL
+
+config SND_SOC_SOF_INTEL_ACPI
+       tristate
+       select SND_SOC_SOF_BAYTRAIL  if SND_SOC_SOF_BAYTRAIL_SUPPORT
+       select SND_SOC_SOF_BROADWELL if SND_SOC_SOF_BROADWELL_SUPPORT
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_INTEL_PCI
+       tristate
+       select SND_SOC_SOF_MERRIFIELD  if SND_SOC_SOF_MERRIFIELD_SUPPORT
+       select SND_SOC_SOF_APOLLOLAKE  if SND_SOC_SOF_APOLLOLAKE_SUPPORT
+       select SND_SOC_SOF_GEMINILAKE  if SND_SOC_SOF_GEMINILAKE_SUPPORT
+       select SND_SOC_SOF_CANNONLAKE  if SND_SOC_SOF_CANNONLAKE_SUPPORT
+       select SND_SOC_SOF_COFFEELAKE  if SND_SOC_SOF_COFFEELAKE_SUPPORT
+       select SND_SOC_SOF_ICELAKE     if SND_SOC_SOF_ICELAKE_SUPPORT
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_INTEL_HIFI_EP_IPC
+       tristate
+       help
+          This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_INTEL_ATOM_HIFI_EP
+       tristate
+       select SND_SOC_INTEL_COMMON
+       select SND_SOC_SOF_INTEL_HIFI_EP_IPC
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_INTEL_COMMON
+       tristate
+       select SND_SOC_ACPI_INTEL_MATCH
+       select SND_SOC_SOF_XTENSA
+       select SND_SOC_INTEL_MACH
+       select SND_SOC_ACPI if ACPI
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+if SND_SOC_SOF_INTEL_ACPI
+
+config SND_SOC_SOF_BAYTRAIL_SUPPORT
+       bool "SOF support for Baytrail, Braswell and Cherrytrail"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Baytrail, Braswell or Cherrytrail processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_BAYTRAIL
+       tristate
+       select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_BROADWELL_SUPPORT
+       bool "SOF support for Broadwell"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Broadwell processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_BROADWELL
+       tristate
+       select SND_SOC_SOF_INTEL_COMMON
+       select SND_SOC_SOF_INTEL_HIFI_EP_IPC
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+endif ## SND_SOC_SOF_INTEL_ACPI
+
+if SND_SOC_SOF_INTEL_PCI
+
+config SND_SOC_SOF_MERRIFIELD_SUPPORT
+       bool "SOF support for Tangier/Merrifield"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Tangier/Merrifield processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_MERRIFIELD
+       tristate
+       select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_APOLLOLAKE_SUPPORT
+       bool "SOF support for Apollolake"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Apollolake processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_APOLLOLAKE
+       tristate
+       select SND_SOC_SOF_HDA_COMMON
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_GEMINILAKE_SUPPORT
+       bool "SOF support for GeminiLake"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Geminilake processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_GEMINILAKE
+       tristate
+       select SND_SOC_SOF_HDA_COMMON
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_CANNONLAKE_SUPPORT
+       bool "SOF support for Cannonlake"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Cannonlake processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_CANNONLAKE
+       tristate
+       select SND_SOC_SOF_HDA_COMMON
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_COFFEELAKE_SUPPORT
+       bool "SOF support for CoffeeLake"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Coffeelake processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_COFFEELAKE
+       tristate
+       select SND_SOC_SOF_HDA_COMMON
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_ICELAKE_SUPPORT
+       bool "SOF support for Icelake"
+       help
+         This adds support for Sound Open Firmware for Intel(R) platforms
+         using the Icelake processors.
+         Say Y if you have such a device.
+         If unsure select "N".
+
+config SND_SOC_SOF_ICELAKE
+       tristate
+       select SND_SOC_SOF_HDA_COMMON
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_HDA_COMMON
+       tristate
+       select SND_SOC_SOF_INTEL_COMMON
+       select SND_SOC_SOF_HDA_LINK_BASELINE
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+if SND_SOC_SOF_HDA_COMMON
+
+config SND_SOC_SOF_HDA_LINK
+       bool "SOF support for HDA Links(HDA/HDMI)"
+       depends on SND_SOC_SOF_NOCODEC=n
+       select SND_SOC_SOF_PROBE_WORK_QUEUE
+       help
+         This adds support for HDA links(HDA/HDMI) with Sound Open Firmware
+                 for Intel(R) platforms.
+         Say Y if you want to enable HDA links with SOF.
+         If unsure select "N".
+
+config SND_SOC_SOF_HDA_AUDIO_CODEC
+       bool "SOF support for HDAudio codecs"
+       depends on SND_SOC_SOF_HDA_LINK
+       help
+         This adds support for HDAudio codecs with Sound Open Firmware
+                 for Intel(R) platforms.
+         Say Y if you want to enable HDAudio codecs with SOF.
+         If unsure select "N".
+
+endif ## SND_SOC_SOF_HDA_COMMON
+
+config SND_SOC_SOF_HDA_LINK_BASELINE
+       tristate
+       select SND_SOC_SOF_HDA if SND_SOC_SOF_HDA_LINK
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+config SND_SOC_SOF_HDA
+       tristate
+       select SND_HDA_EXT_CORE if SND_SOC_SOF_HDA_LINK
+       select SND_SOC_HDAC_HDA if SND_SOC_SOF_HDA_AUDIO_CODEC
+       help
+         This option is not user-selectable but automagically handled by
+         'select' statements at a higher level
+
+endif ## SND_SOC_SOF_INTEL_PCI
+
+endif ## SND_SOC_SOF_INTEL_TOPLEVEL
diff --git a/sound/soc/sof/intel/Makefile b/sound/soc/sof/intel/Makefile
new file mode 100644 (file)
index 0000000..b8f58e0
--- /dev/null
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+
+snd-sof-intel-byt-objs := byt.o
+snd-sof-intel-bdw-objs := bdw.o
+
+snd-sof-intel-ipc-objs := intel-ipc.o
+
+snd-sof-intel-hda-common-objs := hda.o hda-loader.o hda-stream.o hda-trace.o \
+                                hda-dsp.o hda-ipc.o hda-ctrl.o hda-pcm.o \
+                                hda-dai.o hda-bus.o \
+                                apl.o cnl.o
+
+snd-sof-intel-hda-objs := hda-codec.o
+
+obj-$(CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP) += snd-sof-intel-byt.o
+obj-$(CONFIG_SND_SOC_SOF_BROADWELL) += snd-sof-intel-bdw.o
+obj-$(CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC) += snd-sof-intel-ipc.o
+obj-$(CONFIG_SND_SOC_SOF_HDA_COMMON) += snd-sof-intel-hda-common.o
+obj-$(CONFIG_SND_SOC_SOF_HDA) += snd-sof-intel-hda.o