Commit dc1d964a authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Mark Brown

ASoC: SOF: Intel: hda-codec: simplify SND_SOC_SOF_HDA_AUDIO_CODEC handling

Now that we have removed the dependency on SND_SOC_HDAC_HDMI, we can
simplify the code and make the code conditional on a single #ifdef.
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarRander Wang <rander.wang@intel.com>
Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20221027193540.259520-4-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2c6c809c
...@@ -16,13 +16,12 @@ ...@@ -16,13 +16,12 @@
#include <sound/sof.h> #include <sound/sof.h>
#include "../ops.h" #include "../ops.h"
#include "hda.h" #include "hda.h"
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
#include "../../codecs/hdac_hda.h" #include "../../codecs/hdac_hda.h"
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
#define CODEC_PROBE_RETRIES 3 #define CODEC_PROBE_RETRIES 3
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
#define IDISP_VID_INTEL 0x80860000 #define IDISP_VID_INTEL 0x80860000
/* load the legacy HDA codec driver */ /* load the legacy HDA codec driver */
...@@ -80,6 +79,7 @@ void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) ...@@ -80,6 +79,7 @@ void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable)
snd_hdac_chip_updatew(bus, WAKEEN, STATESTS_INT_MASK, mask); snd_hdac_chip_updatew(bus, WAKEEN, STATESTS_INT_MASK, mask);
} }
EXPORT_SYMBOL_NS(hda_codec_jack_wake_enable, SND_SOC_SOF_HDA_AUDIO_CODEC);
/* check jack status after resuming from suspend mode */ /* check jack status after resuming from suspend mode */
void hda_codec_jack_check(struct snd_sof_dev *sdev) void hda_codec_jack_check(struct snd_sof_dev *sdev)
...@@ -95,11 +95,6 @@ void hda_codec_jack_check(struct snd_sof_dev *sdev) ...@@ -95,11 +95,6 @@ void hda_codec_jack_check(struct snd_sof_dev *sdev)
if (codec->jacktbl.used) if (codec->jacktbl.used)
pm_request_resume(&codec->core.dev); pm_request_resume(&codec->core.dev);
} }
#else
void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) {}
void hda_codec_jack_check(struct snd_sof_dev *sdev) {}
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
EXPORT_SYMBOL_NS(hda_codec_jack_wake_enable, SND_SOC_SOF_HDA_AUDIO_CODEC);
EXPORT_SYMBOL_NS(hda_codec_jack_check, SND_SOC_SOF_HDA_AUDIO_CODEC); EXPORT_SYMBOL_NS(hda_codec_jack_check, SND_SOC_SOF_HDA_AUDIO_CODEC);
#if IS_ENABLED(CONFIG_SND_HDA_GENERIC) #if IS_ENABLED(CONFIG_SND_HDA_GENERIC)
...@@ -141,10 +136,7 @@ static struct hda_codec *hda_codec_device_init(struct hdac_bus *bus, int addr, i ...@@ -141,10 +136,7 @@ static struct hda_codec *hda_codec_device_init(struct hdac_bus *bus, int addr, i
/* probe individual codec */ /* probe individual codec */
static int hda_codec_probe(struct snd_sof_dev *sdev, int address) static int hda_codec_probe(struct snd_sof_dev *sdev, int address)
{ {
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
struct hdac_hda_priv *hda_priv; struct hdac_hda_priv *hda_priv;
int type = HDA_DEV_LEGACY;
#endif
struct hda_bus *hbus = sof_to_hbus(sdev); struct hda_bus *hbus = sof_to_hbus(sdev);
struct hda_codec *codec; struct hda_codec *codec;
u32 hda_cmd = (address << 28) | (AC_NODE_ROOT << 20) | u32 hda_cmd = (address << 28) | (AC_NODE_ROOT << 20) |
...@@ -164,12 +156,11 @@ static int hda_codec_probe(struct snd_sof_dev *sdev, int address) ...@@ -164,12 +156,11 @@ static int hda_codec_probe(struct snd_sof_dev *sdev, int address)
dev_dbg(sdev->dev, "HDA codec #%d probed OK: response: %x\n", dev_dbg(sdev->dev, "HDA codec #%d probed OK: response: %x\n",
address, resp); address, resp);
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
hda_priv = devm_kzalloc(sdev->dev, sizeof(*hda_priv), GFP_KERNEL); hda_priv = devm_kzalloc(sdev->dev, sizeof(*hda_priv), GFP_KERNEL);
if (!hda_priv) if (!hda_priv)
return -ENOMEM; return -ENOMEM;
codec = hda_codec_device_init(&hbus->core, address, type); codec = hda_codec_device_init(&hbus->core, address, HDA_DEV_LEGACY);
ret = PTR_ERR_OR_ZERO(codec); ret = PTR_ERR_OR_ZERO(codec);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -192,25 +183,19 @@ static int hda_codec_probe(struct snd_sof_dev *sdev, int address) ...@@ -192,25 +183,19 @@ static int hda_codec_probe(struct snd_sof_dev *sdev, int address)
else else
codec->probe_id = 0; codec->probe_id = 0;
if (type == HDA_DEV_LEGACY) { ret = hda_codec_load_module(codec);
ret = hda_codec_load_module(codec); /*
/* * handle ret==0 (no driver bound) as an error, but pass
* handle ret==0 (no driver bound) as an error, but pass * other return codes without modification
* other return codes without modification */
*/ if (ret == 0)
if (ret == 0) ret = -ENOENT;
ret = -ENOENT;
}
out: out:
if (ret < 0) { if (ret < 0) {
snd_hdac_device_unregister(&codec->core); snd_hdac_device_unregister(&codec->core);
put_device(&codec->core.dev); put_device(&codec->core.dev);
} }
#else
codec = hda_codec_device_init(&hbus->core, address, HDA_DEV_ASOC);
ret = PTR_ERR_OR_ZERO(codec);
#endif
return ret; return ret;
} }
...@@ -237,6 +222,8 @@ void hda_codec_probe_bus(struct snd_sof_dev *sdev) ...@@ -237,6 +222,8 @@ void hda_codec_probe_bus(struct snd_sof_dev *sdev)
} }
EXPORT_SYMBOL_NS(hda_codec_probe_bus, SND_SOC_SOF_HDA_AUDIO_CODEC); EXPORT_SYMBOL_NS(hda_codec_probe_bus, SND_SOC_SOF_HDA_AUDIO_CODEC);
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) && IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI) #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) && IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI)
void hda_codec_i915_display_power(struct snd_sof_dev *sdev, bool enable) void hda_codec_i915_display_power(struct snd_sof_dev *sdev, bool enable)
......
...@@ -710,7 +710,7 @@ void hda_dsp_ctrl_stop_chip(struct snd_sof_dev *sdev); ...@@ -710,7 +710,7 @@ void hda_dsp_ctrl_stop_chip(struct snd_sof_dev *sdev);
*/ */
void sof_hda_bus_init(struct hdac_bus *bus, struct device *dev); void sof_hda_bus_init(struct hdac_bus *bus, struct device *dev);
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
/* /*
* HDA Codec operations. * HDA Codec operations.
*/ */
...@@ -718,7 +718,13 @@ void hda_codec_probe_bus(struct snd_sof_dev *sdev); ...@@ -718,7 +718,13 @@ void hda_codec_probe_bus(struct snd_sof_dev *sdev);
void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable); void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable);
void hda_codec_jack_check(struct snd_sof_dev *sdev); void hda_codec_jack_check(struct snd_sof_dev *sdev);
#endif /* CONFIG_SND_SOC_SOF_HDA */ #else
static inline void hda_codec_probe_bus(struct snd_sof_dev *sdev) { }
static inline void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) { }
static inline void hda_codec_jack_check(struct snd_sof_dev *sdev) { }
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) && IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI) #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) && IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment