Unverified Commit 6b045e2e authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: SOF: Intel: remove circular dependency for

Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:

The SoundWire BPT support will rely on the HDaudio DMA. This exposes a
circular dependency module dependency which has to be resolved by
splitting common parts used by HDaudio and SoundWire parts, and
'generic' parts used by HDaudio only.

This patchset does not change any functionality, it just moves code
around, exposes symbols that are used in the new module. The code has
been in use for more than one kernel cycle already so it really
shouldn't break any existing platforms.

The main issue with such code moves is that it makes backports or
fixes more complicated. That's the main reason why we held back these
patches until we were reasonably confident on the maturity of MTL and
LNL drivers.
parents f283219b 6fe61f31
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ config SND_SOC_SOF_MERRIFIELD

config SND_SOC_SOF_INTEL_SKL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_IPC4

config SND_SOC_SOF_SKYLAKE
@@ -122,7 +122,7 @@ config SND_SOC_SOF_KABYLAKE

config SND_SOC_SOF_INTEL_APL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_IPC4

@@ -148,7 +148,7 @@ config SND_SOC_SOF_GEMINILAKE

config SND_SOC_SOF_INTEL_CNL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_IPC4
@@ -184,10 +184,11 @@ config SND_SOC_SOF_COMETLAKE

config SND_SOC_SOF_INTEL_ICL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_IPC4
	select SND_SOC_SOF_INTEL_CNL

config SND_SOC_SOF_ICELAKE
	tristate "SOF support for Icelake"
@@ -211,10 +212,11 @@ config SND_SOC_SOF_JASPERLAKE

config SND_SOC_SOF_INTEL_TGL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_IPC4
	select SND_SOC_SOF_INTEL_CNL

config SND_SOC_SOF_TIGERLAKE
	tristate "SOF support for Tigerlake"
@@ -248,7 +250,7 @@ config SND_SOC_SOF_ALDERLAKE

config SND_SOC_SOF_INTEL_MTL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC4

@@ -264,9 +266,10 @@ config SND_SOC_SOF_METEORLAKE

config SND_SOC_SOF_INTEL_LNL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_HDA_GENERIC
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC4
	select SND_SOC_SOF_INTEL_MTL

config SND_SOC_SOF_LUNARLAKE
	tristate "SOF support for Lunarlake"
@@ -280,6 +283,10 @@ config SND_SOC_SOF_LUNARLAKE

config SND_SOC_SOF_HDA_COMMON
	tristate

config SND_SOC_SOF_HDA_GENERIC
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_PCI_DEV
	select SND_INTEL_DSP_CONFIG
@@ -296,7 +303,7 @@ config SND_SOC_SOF_HDA_MLINK
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

if SND_SOC_SOF_HDA_COMMON
if SND_SOC_SOF_HDA_GENERIC

config SND_SOC_SOF_HDA_LINK
	bool "SOF support for HDA Links(HDA/HDMI)"
@@ -316,7 +323,7 @@ config SND_SOC_SOF_HDA_AUDIO_CODEC
	  Say Y if you want to enable HDAudio codecs with SOF.
	  If unsure select "N".

endif ## SND_SOC_SOF_HDA_COMMON
endif ## SND_SOC_SOF_HDA_GENERIC

config SND_SOC_SOF_HDA_LINK_BASELINE
	tristate
+12 −11
Original line number Diff line number Diff line
@@ -3,12 +3,12 @@
snd-sof-acpi-intel-byt-objs := byt.o
snd-sof-acpi-intel-bdw-objs := bdw.o

snd-sof-intel-hda-common-objs := hda.o hda-loader.o hda-stream.o hda-trace.o \
snd-sof-intel-hda-common-objs := 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-dai-ops.o hda-bus.o \
				 skl.o hda-loader-skl.o \
				 apl.o cnl.o tgl.o icl.o mtl.o lnl.o hda-common-ops.o \
				 telemetry.o
				 telemetry.o tracepoints.o

snd-sof-intel-hda-generic-objs := hda.o hda-common-ops.o

snd-sof-intel-hda-mlink-objs := hda-mlink.o

@@ -22,17 +22,18 @@ obj-$(CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP) += snd-sof-intel-atom.o
obj-$(CONFIG_SND_SOC_SOF_BAYTRAIL) += snd-sof-acpi-intel-byt.o
obj-$(CONFIG_SND_SOC_SOF_BROADWELL) += snd-sof-acpi-intel-bdw.o
obj-$(CONFIG_SND_SOC_SOF_HDA_COMMON) += snd-sof-intel-hda-common.o
obj-$(CONFIG_SND_SOC_SOF_HDA_GENERIC) += snd-sof-intel-hda-generic.o
obj-$(CONFIG_SND_SOC_SOF_HDA_MLINK) += snd-sof-intel-hda-mlink.o
obj-$(CONFIG_SND_SOC_SOF_HDA) += snd-sof-intel-hda.o

snd-sof-pci-intel-tng-objs := pci-tng.o
snd-sof-pci-intel-skl-objs := pci-skl.o
snd-sof-pci-intel-apl-objs := pci-apl.o
snd-sof-pci-intel-cnl-objs := pci-cnl.o
snd-sof-pci-intel-icl-objs := pci-icl.o
snd-sof-pci-intel-tgl-objs := pci-tgl.o
snd-sof-pci-intel-mtl-objs := pci-mtl.o
snd-sof-pci-intel-lnl-objs := pci-lnl.o
snd-sof-pci-intel-skl-objs := pci-skl.o skl.o hda-loader-skl.o
snd-sof-pci-intel-apl-objs := pci-apl.o apl.o
snd-sof-pci-intel-cnl-objs := pci-cnl.o cnl.o
snd-sof-pci-intel-icl-objs := pci-icl.o icl.o
snd-sof-pci-intel-tgl-objs := pci-tgl.o tgl.o
snd-sof-pci-intel-mtl-objs := pci-mtl.o mtl.o
snd-sof-pci-intel-lnl-objs := pci-lnl.o lnl.o

obj-$(CONFIG_SND_SOC_SOF_MERRIFIELD) += snd-sof-pci-intel-tng.o
obj-$(CONFIG_SND_SOC_SOF_INTEL_SKL) += snd-sof-pci-intel-skl.o
+0 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ static const struct snd_sof_debugfs_map apl_dsp_debugfs[] = {

/* apollolake ops */
struct snd_sof_dsp_ops sof_apl_ops;
EXPORT_SYMBOL_NS(sof_apl_ops, SND_SOC_SOF_INTEL_HDA_COMMON);

int sof_apl_ops_init(struct snd_sof_dev *sdev)
{
@@ -97,7 +96,6 @@ int sof_apl_ops_init(struct snd_sof_dev *sdev)

	return 0;
};
EXPORT_SYMBOL_NS(sof_apl_ops_init, SND_SOC_SOF_INTEL_HDA_COMMON);

const struct sof_intel_dsp_desc apl_chip_info = {
	/* Apollolake */
@@ -121,4 +119,3 @@ const struct sof_intel_dsp_desc apl_chip_info = {
	.disable_interrupts = hda_dsp_disable_interrupts,
	.hw_ip_version = SOF_INTEL_CAVS_1_5_PLUS,
};
EXPORT_SYMBOL_NS(apl_chip_info, SND_SOC_SOF_INTEL_HDA_COMMON);
+11 −4
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ irqreturn_t cnl_ipc4_irq_thread(int irq, void *context)

	return IRQ_HANDLED;
}
EXPORT_SYMBOL_NS(cnl_ipc4_irq_thread, SND_SOC_SOF_INTEL_CNL);

irqreturn_t cnl_ipc_irq_thread(int irq, void *context)
{
@@ -202,6 +203,7 @@ irqreturn_t cnl_ipc_irq_thread(int irq, void *context)

	return IRQ_HANDLED;
}
EXPORT_SYMBOL_NS(cnl_ipc_irq_thread, SND_SOC_SOF_INTEL_CNL);

static void cnl_ipc_host_done(struct snd_sof_dev *sdev)
{
@@ -284,6 +286,7 @@ int cnl_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg)

	return 0;
}
EXPORT_SYMBOL_NS(cnl_ipc4_send_msg, SND_SOC_SOF_INTEL_CNL);

int cnl_ipc_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg)
{
@@ -331,6 +334,7 @@ int cnl_ipc_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg)

	return 0;
}
EXPORT_SYMBOL_NS(cnl_ipc_send_msg, SND_SOC_SOF_INTEL_CNL);

void cnl_ipc_dump(struct snd_sof_dev *sdev)
{
@@ -351,6 +355,7 @@ void cnl_ipc_dump(struct snd_sof_dev *sdev)
		"error: host status 0x%8.8x dsp status 0x%8.8x mask 0x%8.8x\n",
		hipcida, hipctdr, hipcctl);
}
EXPORT_SYMBOL_NS(cnl_ipc_dump, SND_SOC_SOF_INTEL_CNL);

void cnl_ipc4_dump(struct snd_sof_dev *sdev)
{
@@ -372,10 +377,11 @@ void cnl_ipc4_dump(struct snd_sof_dev *sdev)
		"Host IPC initiator: %#x|%#x|%#x, target: %#x|%#x|%#x, ctl: %#x\n",
		hipcidr, hipcidd, hipcida, hipctdr, hipctdd, hipctda, hipcctl);
}
EXPORT_SYMBOL_NS(cnl_ipc4_dump, SND_SOC_SOF_INTEL_CNL);

/* cannonlake ops */
struct snd_sof_dsp_ops sof_cnl_ops;
EXPORT_SYMBOL_NS(sof_cnl_ops, SND_SOC_SOF_INTEL_HDA_COMMON);
EXPORT_SYMBOL_NS(sof_cnl_ops, SND_SOC_SOF_INTEL_CNL);

int sof_cnl_ops_init(struct snd_sof_dev *sdev)
{
@@ -444,7 +450,7 @@ int sof_cnl_ops_init(struct snd_sof_dev *sdev)

	return 0;
};
EXPORT_SYMBOL_NS(sof_cnl_ops_init, SND_SOC_SOF_INTEL_HDA_COMMON);
EXPORT_SYMBOL_NS(sof_cnl_ops_init, SND_SOC_SOF_INTEL_CNL);

const struct sof_intel_dsp_desc cnl_chip_info = {
	/* Cannonlake */
@@ -467,13 +473,13 @@ const struct sof_intel_dsp_desc cnl_chip_info = {
	.enable_sdw_irq	= hda_common_enable_sdw_irq,
	.check_sdw_irq	= hda_common_check_sdw_irq,
	.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
	.sdw_process_wakeen = hda_sdw_process_wakeen_common,
	.check_ipc_irq	= hda_dsp_check_ipc_irq,
	.cl_init = cl_dsp_init,
	.power_down_dsp = hda_power_down_dsp,
	.disable_interrupts = hda_dsp_disable_interrupts,
	.hw_ip_version = SOF_INTEL_CAVS_1_8,
};
EXPORT_SYMBOL_NS(cnl_chip_info, SND_SOC_SOF_INTEL_HDA_COMMON);

/*
 * JasperLake is technically derived from IceLake, and should be in
@@ -503,10 +509,11 @@ const struct sof_intel_dsp_desc jsl_chip_info = {
	.enable_sdw_irq	= hda_common_enable_sdw_irq,
	.check_sdw_irq	= hda_common_check_sdw_irq,
	.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
	.sdw_process_wakeen = hda_sdw_process_wakeen_common,
	.check_ipc_irq	= hda_dsp_check_ipc_irq,
	.cl_init = cl_dsp_init,
	.power_down_dsp = hda_power_down_dsp,
	.disable_interrupts = hda_dsp_disable_interrupts,
	.hw_ip_version = SOF_INTEL_CAVS_2_0,
};
EXPORT_SYMBOL_NS(jsl_chip_info, SND_SOC_SOF_INTEL_HDA_COMMON);
EXPORT_SYMBOL_NS(jsl_chip_info, SND_SOC_SOF_INTEL_CNL);
+2 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ void sof_hda_bus_init(struct snd_sof_dev *sdev, struct device *dev)
	spin_lock_init(&bus->reg_lock);
#endif /* CONFIG_SND_SOC_SOF_HDA_LINK */
}
EXPORT_SYMBOL_NS(sof_hda_bus_init, SND_SOC_SOF_INTEL_HDA_COMMON);

void sof_hda_bus_exit(struct snd_sof_dev *sdev)
{
@@ -103,3 +104,4 @@ void sof_hda_bus_exit(struct snd_sof_dev *sdev)
	snd_hdac_ext_bus_exit(bus);
#endif
}
EXPORT_SYMBOL_NS(sof_hda_bus_exit, SND_SOC_SOF_INTEL_HDA_COMMON);
Loading