Unverified Commit 7ed1f83b authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown
Browse files

ASoC: SOF: Compile and runtime IPC version selection



The new IPC4 version is only supported by Intel platforms, iMX, AMD and
MediaTek only uses the standard SOF IPC.
There is no need for these platforms to build kernel support for IPC4 as
it is just dead code for them.

SND_SOC_SOF_IPC3 and SND_SOC_SOF_INTEL_IPC4 is introduced to allow compile
time selection and exclusion of IPC implementations.

To avoid randconfig failures add also support for runtime selection of
the IPC ops in ipc.c based on sdev->pdata->ipc_type

Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20220614075618.28605-1-peter.ujfalusi@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 689614ce
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -252,6 +252,13 @@ config SND_SOC_SOF_PROBE_WORK_QUEUE
	  When selected, the probe is handled in two steps, for example to
	  avoid lockdeps if request_module is used in the probe.

# Supported IPC versions
config SND_SOC_SOF_IPC3
	bool

config SND_SOC_SOF_INTEL_IPC4
	bool

source "sound/soc/sof/amd/Kconfig"
source "sound/soc/sof/imx/Kconfig"
source "sound/soc/sof/intel/Kconfig"
+12 −4
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only 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 iomem-utils.o sof-audio.o stream-ipc.o\
		ipc3-topology.o ipc3-control.o ipc3.o ipc3-pcm.o ipc3-loader.o\
		ipc3-dtrace.o\
		ipc4.o ipc4-loader.o ipc4-topology.o ipc4-control.o ipc4-pcm.o
		control.o trace.o iomem-utils.o sof-audio.o stream-ipc.o

# IPC implementations
ifneq ($(CONFIG_SND_SOC_SOF_IPC3),)
snd-sof-objs +=	ipc3.o ipc3-loader.o ipc3-topology.o ipc3-control.o ipc3-pcm.o\
		ipc3-dtrace.o
endif
ifneq ($(CONFIG_SND_SOC_SOF_INTEL_IPC4),)
snd-sof-objs += ipc4.o ipc4-loader.o ipc4-topology.o ipc4-control.o ipc4-pcm.o
endif

# SOF client support
ifneq ($(CONFIG_SND_SOC_SOF_CLIENT),)
snd-sof-objs += sof-client.o
endif
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ if SND_SOC_SOF_AMD_TOPLEVEL
config SND_SOC_SOF_AMD_COMMON
	tristate
	select SND_SOC_SOF
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_PCI_DEV
	select SND_AMD_ACP_CONFIG
	select SND_SOC_ACPI if ACPI
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ config SND_SOC_SOF_IMX_COMMON
	tristate
	select SND_SOC_SOF_OF_DEV
	select SND_SOC_SOF
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_XTENSA
	select SND_SOC_SOF_COMPRESS
	help
+11 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ if SND_SOC_SOF_ACPI
config SND_SOC_SOF_BAYTRAIL
	tristate "SOF support for Baytrail, Braswell and Cherrytrail"
	default SND_SOC_SOF_ACPI
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
	select SND_SOC_SOF_ACPI_DEV
@@ -60,6 +61,7 @@ config SND_SOC_SOF_BAYTRAIL
config SND_SOC_SOF_BROADWELL
	tristate "SOF support for Broadwell"
	default SND_SOC_SOF_ACPI
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_INTEL_HIFI_EP_IPC
	select SND_SOC_SOF_ACPI_DEV
@@ -85,6 +87,7 @@ config SND_SOC_SOF_MERRIFIELD
	tristate "SOF support for Tangier/Merrifield"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_PCI_DEV
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
@@ -95,6 +98,8 @@ config SND_SOC_SOF_MERRIFIELD
config SND_SOC_SOF_INTEL_APL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_APOLLOLAKE
	tristate "SOF support for Apollolake"
@@ -120,6 +125,8 @@ config SND_SOC_SOF_INTEL_CNL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_CANNONLAKE
	tristate "SOF support for Cannonlake"
@@ -154,6 +161,8 @@ config SND_SOC_SOF_INTEL_ICL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_ICELAKE
	tristate "SOF support for Icelake"
@@ -179,6 +188,8 @@ config SND_SOC_SOF_INTEL_TGL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_TIGERLAKE
	tristate "SOF support for Tigerlake"
Loading