[alsa-devel] [RFC 02/10] ASoC: Intel: Skylake: Add entry in sst_acpi_mach for HDA codecs
Rakesh Ughreja
rakesh.a.ughreja at intel.com
Fri Dec 1 10:14:00 CET 2017
When no I2S based codecs are detected in the BIOS, check if there are
any HDA codecs present. If yes, load the corresponding machine driver.
TODO:
support for detecting the presence of HDA codec is not implemented.
it will be implemented in the next revision.
Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja at intel.com>
---
sound/soc/intel/skylake/skl.c | 46 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
index 27462c0..568a285 100644
--- a/sound/soc/intel/skylake/skl.c
+++ b/sound/soc/intel/skylake/skl.c
@@ -424,6 +424,26 @@ static int skl_free(struct hdac_bus *bus)
return 0;
}
+static struct snd_soc_acpi_mach *skl_probe_hda_machine(
+ struct snd_soc_acpi_mach *machines)
+{
+
+ struct snd_soc_acpi_mach *mach;
+
+ /*
+ * FIXME:
+ * First check if there are any HDA codecs present on the system
+ * then search the match table.
+ * For now this function is not detecting the presence of any
+ * HDA codecs.
+ */
+ for (mach = machines; mach->id[0]; mach++) {
+ if (!strcmp(mach->id, "HDA_GEN"))
+ return mach;
+ }
+ return NULL;
+}
+
static int skl_machine_device_register(struct skl *skl, void *driver_data)
{
struct hdac_bus *bus = skl_to_bus(skl);
@@ -433,9 +453,14 @@ static int skl_machine_device_register(struct skl *skl, void *driver_data)
mach = snd_soc_acpi_find_machine(mach);
if (mach == NULL) {
- dev_err(bus->dev, "No matching machine driver found\n");
- return -ENODEV;
+ dev_dbg(bus->dev, "No matching I2S machine driver found\n");
+ mach = skl_probe_hda_machine(driver_data);
+ if (mach == NULL) {
+ dev_err(bus->dev, "No matching machine driver found\n");
+ return -ENODEV;
+ }
}
+
skl->fw_name = mach->fw_filename;
pdev = platform_device_alloc(mach->drv_name, -1);
@@ -911,6 +936,14 @@ static struct snd_soc_acpi_mach sst_skl_devdata[] = {
.quirk_data = &skl_codecs,
.pdata = &skl_dmic_data
},
+ {
+ .id = "HDA_GEN",
+ .drv_name = "skl_hda_generic",
+ .fw_filename = "intel/dsp_fw_release.bin",
+ .machine_quirk = NULL,
+ .quirk_data = NULL,
+ .pdata = NULL
+ },
{}
};
@@ -973,7 +1006,14 @@ static struct snd_soc_acpi_mach sst_kbl_devdata[] = {
.drv_name = "kbl_rt5663",
.fw_filename = "intel/dsp_fw_kbl.bin",
},
-
+ {
+ .id = "HDA_GEN",
+ .drv_name = "skl_hda_generic",
+ .fw_filename = "intel/dsp_fw_kbl.bin",
+ .machine_quirk = NULL,
+ .quirk_data = NULL,
+ .pdata = NULL
+ },
{}
};
--
2.7.4
More information about the Alsa-devel
mailing list