[alsa-devel] [PATCH 0/5] ASoC: Intel: fix cross-compilation/COMPILE_TEST issues
The Intel code has dependencies that aren't defined on all platforms and prevent COMPILE_TEST from working.
The first patch was submitted as an RFC and includes Takashi Reviewed-by tag. The second patch was submitted by Randy Dunlap, I only corrected minor issues to make it more generic. The rest are just simple fixes to remove useless asm/ headers, make sure all machine drivers use COMPILE_TEST and add dependencies on CONFIG_PCI to let the SOF code support COMPILE_TEST.
Tested for the following ARCH: x86_64, i386, ia64, arm, arm64, sh, mips, openrisc, sparc, m68k, s390
Pierre-Louis Bossart (4): ASoC: Intel: use common helpers to detect CPUs ASoC: Intel: boards: remove dependency on asm/platform_sst_audio.h ASoC: Intel: boards: Add COMPILE_TEST for new machine drivers ASoC: SOF: add COMPILE_TEST for PCI options
Randy Dunlap (1): ASoc: fix sound/soc/intel/skylake/slk-ssp-clk.c build error on IA64
sound/soc/intel/Kconfig | 9 ++ sound/soc/intel/atom/sst/sst_acpi.c | 65 +--------- sound/soc/intel/boards/Kconfig | 7 +- sound/soc/intel/boards/bxt_da7219_max98357a.c | 11 +- sound/soc/intel/boards/bytcht_cx2072x.c | 1 - sound/soc/intel/boards/bytcht_da7213.c | 1 - sound/soc/intel/boards/bytcht_es8316.c | 13 +- sound/soc/intel/boards/bytcr_rt5640.c | 16 +-- sound/soc/intel/boards/bytcr_rt5651.c | 17 +-- sound/soc/intel/boards/cht_bsw_rt5645.c | 16 +-- sound/soc/intel/boards/sof_rt5682.c | 11 +- sound/soc/intel/common/soc-intel-quirks.h | 115 ++++++++++++++++++ sound/soc/sof/Kconfig | 2 +- sound/soc/sof/intel/hda.c | 13 +- sound/soc/sof/sof-acpi-dev.c | 57 +-------- sound/soc/sof/sof-pci-dev.c | 4 + 16 files changed, 164 insertions(+), 194 deletions(-) create mode 100644 sound/soc/intel/common/soc-intel-quirks.h
We have duplicated code in multiple locations (atom, machine drivers, SOF) to detect Baytrail, Cherrytrail and other SOCs. This is not very elegant, and introduces dependencies on CONFIG_X86 that prevent COMPILE_TEST from working.
Add common helpers to provide same functionality in a cleaner way. This will also help support the DMI-based quirks being introduced to handle SOF/SST autodetection.
Reviewed-by: Takashi Iwai tiwai@suse.de Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/atom/sst/sst_acpi.c | 65 +--------- sound/soc/intel/boards/bxt_da7219_max98357a.c | 11 +- sound/soc/intel/boards/bytcht_es8316.c | 12 +- sound/soc/intel/boards/bytcr_rt5640.c | 16 +-- sound/soc/intel/boards/bytcr_rt5651.c | 17 +-- sound/soc/intel/boards/cht_bsw_rt5645.c | 16 +-- sound/soc/intel/boards/sof_rt5682.c | 11 +- sound/soc/intel/common/soc-intel-quirks.h | 115 ++++++++++++++++++ sound/soc/sof/sof-acpi-dev.c | 57 +-------- 9 files changed, 135 insertions(+), 185 deletions(-) create mode 100644 sound/soc/intel/common/soc-intel-quirks.h
diff --git a/sound/soc/intel/atom/sst/sst_acpi.c b/sound/soc/intel/atom/sst/sst_acpi.c index ae17ce4677a5..06c4a2da900c 100644 --- a/sound/soc/intel/atom/sst/sst_acpi.c +++ b/sound/soc/intel/atom/sst/sst_acpi.c @@ -38,12 +38,11 @@ #include <acpi/platform/aclinux.h> #include <acpi/actypes.h> #include <acpi/acpi_bus.h> -#include <asm/cpu_device_id.h> -#include <asm/iosf_mbi.h> #include <sound/soc-acpi.h> #include <sound/soc-acpi-intel-match.h> #include "../sst-mfld-platform.h" #include "../../common/sst-dsp.h" +#include "../../common/soc-intel-quirks.h" #include "sst.h"
/* LPE viewpoint addresses */ @@ -243,64 +242,6 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx) return 0; }
-static int is_byt(void) -{ - bool status = false; - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - if (x86_match_cpu(cpu_ids)) - status = true; - return status; -} - -static bool is_byt_cr(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - int status = 0; - - if (!is_byt()) - return false; - - if (iosf_mbi_available()) { - u32 bios_status; - status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ - MBI_REG_READ, /* 0x10 */ - 0x006, /* BIOS_CONFIG */ - &bios_status); - - if (status) { - dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); - } else { - /* bits 26:27 mirror PMIC options */ - bios_status = (bios_status >> 26) & 3; - - if (bios_status == 1 || bios_status == 3) { - dev_info(dev, "Detected Baytrail-CR platform\n"); - return true; - } - - dev_info(dev, "BYT-CR not detected\n"); - } - } else { - dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); - } - - if (platform_get_resource(pdev, IORESOURCE_IRQ, 5) == NULL) { - /* - * Some devices detected as BYT-T have only a single IRQ listed, - * causing platform_get_irq with index 5 to return -ENXIO. - * The correct IRQ in this case is at index 0, as on BYT-CR. - */ - dev_info(dev, "Falling back to Baytrail-CR platform\n"); - return true; - } - - return false; -} - - static int sst_acpi_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -325,7 +266,7 @@ static int sst_acpi_probe(struct platform_device *pdev) return -ENODEV; }
- if (is_byt()) + if (soc_intel_is_byt()) mach->pdata = &byt_rvp_platform_data; else mach->pdata = &chv_platform_data; @@ -343,7 +284,7 @@ static int sst_acpi_probe(struct platform_device *pdev) if (ret < 0) return ret;
- if (is_byt_cr(pdev)) { + if (soc_intel_is_byt_cr(pdev)) { /* override resource info */ byt_rvp_platform_data.res_info = &bytcr_res_info; } diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 5cadb7f654f3..4ee769a86201 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -16,7 +16,6 @@ * GNU General Public License for more details. */
-#include <asm/cpu_device_id.h> #include <linux/input.h> #include <linux/module.h> #include <linux/platform_device.h> @@ -29,6 +28,7 @@ #include "../../codecs/hdac_hdmi.h" #include "../../codecs/da7219.h" #include "../../codecs/da7219-aad.h" +#include "../common/soc-intel-quirks.h"
#define BXT_DIALOG_CODEC_DAI "da7219-hifi" #define BXT_MAXIM_CODEC_DAI "HiFi" @@ -568,11 +568,6 @@ static struct snd_soc_dai_link broxton_dais[] = { }, };
-static const struct x86_cpu_id glk_ids[] = { - { X86_VENDOR_INTEL, 6, 0x7A }, /* Geminilake CPU_ID */ - {} -}; - #define NAME_SIZE 32 static int bxt_card_late_probe(struct snd_soc_card *card) { @@ -582,7 +577,7 @@ static int bxt_card_late_probe(struct snd_soc_card *card) int err, i = 0; char jack_name[NAME_SIZE];
- if (x86_match_cpu(glk_ids)) + if (soc_intel_is_glk()) snd_soc_dapm_add_routes(&card->dapm, gemini_map, ARRAY_SIZE(gemini_map)); else @@ -645,7 +640,7 @@ static int broxton_audio_probe(struct platform_device *pdev)
broxton_audio_card.dev = &pdev->dev; snd_soc_card_set_drvdata(&broxton_audio_card, ctx); - if (x86_match_cpu(glk_ids)) { + if (soc_intel_is_glk()) { unsigned int i;
broxton_audio_card.name = "glkda7219max"; diff --git a/sound/soc/intel/boards/bytcht_es8316.c b/sound/soc/intel/boards/bytcht_es8316.c index e8c585ffd04d..d08715ac3945 100644 --- a/sound/soc/intel/boards/bytcht_es8316.c +++ b/sound/soc/intel/boards/bytcht_es8316.c @@ -30,8 +30,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <asm/platform_sst_audio.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -40,6 +38,7 @@ #include <sound/soc-acpi.h> #include "../atom/sst-atom-controls.h" #include "../common/sst-dsp.h" +#include "../common/soc-intel-quirks.h"
/* jd-inv + terminating entry */ #define MAX_NO_PROPS 2 @@ -430,11 +429,6 @@ static struct snd_soc_card byt_cht_es8316_card = { .resume_post = byt_cht_es8316_resume, };
-static const struct x86_cpu_id baytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Valleyview */ - {} -}; - static const struct acpi_gpio_params first_gpio = { 0, 0, false };
static const struct acpi_gpio_mapping byt_cht_es8316_gpios[] = { @@ -506,8 +500,8 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev) dmi_id = dmi_first_match(byt_cht_es8316_quirk_table); if (dmi_id) { quirk = (unsigned long)dmi_id->driver_data; - } else if (x86_match_cpu(baytrail_cpu_ids) && - mach->mach_params.acpi_ipc_irq_index == 0) { + } else if (soc_intel_is_byt() && + mach->mach_params.acpi_ipc_irq_index == 0) { /* On BYTCR default to SSP0, internal-mic-in2-map, mono-spk */ quirk = BYT_CHT_ES8316_SSP0 | BYT_CHT_ES8316_INTMIC_IN2_MAP | BYT_CHT_ES8316_MONO_SPEAKER; diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c index dc22df9a99fb..7aae7b78efba 100644 --- a/sound/soc/intel/boards/bytcr_rt5640.c +++ b/sound/soc/intel/boards/bytcr_rt5640.c @@ -28,7 +28,6 @@ #include <linux/dmi.h> #include <linux/input.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -38,6 +37,7 @@ #include "../../codecs/rt5640.h" #include "../atom/sst-atom-controls.h" #include "../common/sst-dsp.h" +#include "../common/soc-intel-quirks.h"
enum { BYT_RT5640_DMIC1_MAP, @@ -1130,18 +1130,6 @@ static struct snd_soc_card byt_rt5640_card = { .resume_post = byt_rt5640_resume, };
-static bool is_valleyview(void) -{ - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - - if (!x86_match_cpu(cpu_ids)) - return false; - return true; -} - struct acpi_chan_package { /* ACPICA seems to require 64 bit integers */ u64 aif_value; /* 1: AIF1, 2: AIF2 */ u64 mclock_value; /* usually 25MHz (0x17d7940), ignored */ @@ -1190,7 +1178,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (is_valleyview()) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c index ca657c3e5726..6df6435ea394 100644 --- a/sound/soc/intel/boards/bytcr_rt5651.c +++ b/sound/soc/intel/boards/bytcr_rt5651.c @@ -30,8 +30,6 @@ #include <linux/gpio/consumer.h> #include <linux/gpio/machine.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -39,6 +37,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5651.h" #include "../atom/sst-atom-controls.h" +#include "../common/soc-intel-quirks.h"
enum { BYT_RT5651_DMIC_MAP, @@ -852,16 +851,6 @@ static struct snd_soc_card byt_rt5651_card = { .resume_post = byt_rt5651_resume, };
-static const struct x86_cpu_id baytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Valleyview */ - {} -}; - -static const struct x86_cpu_id cherrytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT }, /* Braswell */ - {} -}; - static const struct acpi_gpio_params ext_amp_enable_gpios = { 0, 0, false };
static const struct acpi_gpio_mapping cht_rt5651_gpios[] = { @@ -932,7 +921,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (x86_match_cpu(baytrail_cpu_ids)) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } @@ -1001,7 +990,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev) }
/* Cherry Trail devices use an external amplifier enable gpio */ - if (x86_match_cpu(cherrytrail_cpu_ids) && !byt_rt5651_gpios) + if (soc_intel_is_cht() && !byt_rt5651_gpios) byt_rt5651_gpios = cht_rt5651_gpios;
if (byt_rt5651_gpios) { diff --git a/sound/soc/intel/boards/cht_bsw_rt5645.c b/sound/soc/intel/boards/cht_bsw_rt5645.c index 32dbeaf1ab94..de5fe58ae3b4 100644 --- a/sound/soc/intel/boards/cht_bsw_rt5645.c +++ b/sound/soc/intel/boards/cht_bsw_rt5645.c @@ -26,7 +26,6 @@ #include <linux/clk.h> #include <linux/dmi.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -34,6 +33,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5645.h" #include "../atom/sst-atom-controls.h" +#include "../common/soc-intel-quirks.h"
#define CHT_PLAT_CLK_3_HZ 19200000 #define CHT_CODEC_DAI1 "rt5645-aif1" @@ -509,18 +509,6 @@ static char cht_rt5645_codec_name[SND_ACPI_I2C_ID_LEN]; static char cht_rt5645_codec_aif_name[12]; /* = "rt5645-aif[1|2]" */ static char cht_rt5645_cpu_dai_name[10]; /* = "ssp[0|2]-port" */
-static bool is_valleyview(void) -{ - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - - if (!x86_match_cpu(cpu_ids)) - return false; - return true; -} - struct acpi_chan_package { /* ACPICA seems to require 64 bit integers */ u64 aif_value; /* 1: AIF1, 2: AIF2 */ u64 mclock_value; /* usually 25MHz (0x17d7940), ignored */ @@ -585,7 +573,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (is_valleyview()) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } diff --git a/sound/soc/intel/boards/sof_rt5682.c b/sound/soc/intel/boards/sof_rt5682.c index e441dc979966..355fd9730a44 100644 --- a/sound/soc/intel/boards/sof_rt5682.c +++ b/sound/soc/intel/boards/sof_rt5682.c @@ -10,8 +10,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/dmi.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -21,6 +19,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5682.h" #include "../../codecs/hdac_hdmi.h" +#include "../common/soc-intel-quirks.h"
#define NAME_SIZE 32
@@ -304,12 +303,6 @@ static struct snd_soc_card sof_audio_card_rt5682 = { .late_probe = sof_card_late_probe, };
-static const struct x86_cpu_id legacy_cpi_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Baytrail */ - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT }, /* Cherrytrail */ - {} -}; - static struct snd_soc_dai_link_component rt5682_component[] = { { .name = "i2c-10EC5682:00", @@ -498,7 +491,7 @@ static int sof_audio_probe(struct platform_device *pdev) if (!ctx) return -ENOMEM;
- if (x86_match_cpu(legacy_cpi_ids)) { + if (soc_intel_is_byt() || soc_intel_is_cht()) { is_legacy_cpu = 1; dmic_num = 0; hdmi_num = 0; diff --git a/sound/soc/intel/common/soc-intel-quirks.h b/sound/soc/intel/common/soc-intel-quirks.h new file mode 100644 index 000000000000..4718fd3cf636 --- /dev/null +++ b/sound/soc/intel/common/soc-intel-quirks.h @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * soc-intel-quirks.h - prototypes for quirk autodetection + * + * Copyright (c) 2019, Intel Corporation. + * + */ + +#ifndef _SND_SOC_INTEL_QUIRKS_H +#define _SND_SOC_INTEL_QUIRKS_H + +#if IS_ENABLED(CONFIG_X86) + +#include <asm/cpu_device_id.h> +#include <asm/intel-family.h> +#include <asm/iosf_mbi.h> + +#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } + +#define SOC_INTEL_IS_CPU(soc, type) \ +static inline bool soc_intel_is_##soc(void) \ +{ \ + static const struct x86_cpu_id soc##_cpu_ids[] = { \ + ICPU(type), \ + {} \ + }; \ + const struct x86_cpu_id *id; \ + \ + id = x86_match_cpu(soc##_cpu_ids); \ + if (id) \ + return true; \ + return false; \ +} + +SOC_INTEL_IS_CPU(byt, INTEL_FAM6_ATOM_SILVERMONT); +SOC_INTEL_IS_CPU(cht, INTEL_FAM6_ATOM_AIRMONT); +SOC_INTEL_IS_CPU(apl, INTEL_FAM6_ATOM_GOLDMONT); +SOC_INTEL_IS_CPU(glk, INTEL_FAM6_ATOM_GOLDMONT_PLUS); + +static inline bool soc_intel_is_byt_cr(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + int status = 0; + + if (!soc_intel_is_byt()) + return false; + + if (iosf_mbi_available()) { + u32 bios_status; + + status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ + MBI_REG_READ, /* 0x10 */ + 0x006, /* BIOS_CONFIG */ + &bios_status); + + if (status) { + dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); + } else { + /* bits 26:27 mirror PMIC options */ + bios_status = (bios_status >> 26) & 3; + + if (bios_status == 1 || bios_status == 3) { + dev_info(dev, "Detected Baytrail-CR platform\n"); + return true; + } + + dev_info(dev, "BYT-CR not detected\n"); + } + } else { + dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); + } + + if (!platform_get_resource(pdev, IORESOURCE_IRQ, 5)) { + /* + * Some devices detected as BYT-T have only a single IRQ listed, + * causing platform_get_irq with index 5 to return -ENXIO. + * The correct IRQ in this case is at index 0, as on BYT-CR. + */ + dev_info(dev, "Falling back to Baytrail-CR platform\n"); + return true; + } + + return false; +} + +#else + +static inline bool soc_intel_is_byt_cr(struct platform_device *pdev) +{ + return false; +} + +static inline bool soc_intel_is_byt(void) +{ + return false; +} + +static inline bool soc_intel_is_cht(void) +{ + return false; +} + +static inline bool soc_intel_is_apl(void) +{ + return false; +} + +static inline bool soc_intel_is_glk(void) +{ + return false; +} + +#endif + + #endif /* _SND_SOC_INTEL_QUIRKS_H */ diff --git a/sound/soc/sof/sof-acpi-dev.c b/sound/soc/sof/sof-acpi-dev.c index e9cf69874b5b..c8dafb1ac54e 100644 --- a/sound/soc/sof/sof-acpi-dev.c +++ b/sound/soc/sof/sof-acpi-dev.c @@ -15,10 +15,7 @@ #include <sound/soc-acpi.h> #include <sound/soc-acpi-intel-match.h> #include <sound/sof.h> -#ifdef CONFIG_X86 -#include <asm/iosf_mbi.h> -#endif - +#include "../intel/common/soc-intel-quirks.h" #include "ops.h"
/* platform specific devices */ @@ -99,56 +96,6 @@ static const struct sof_dev_desc sof_acpi_baytrail_desc = { .arch_ops = &sof_xtensa_arch_ops };
-#ifdef CONFIG_X86 /* TODO: move this to common helper */ - -static bool is_byt_cr(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - int status; - - if (iosf_mbi_available()) { - u32 bios_status; - status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ - MBI_REG_READ, /* 0x10 */ - 0x006, /* BIOS_CONFIG */ - &bios_status); - - if (status) { - dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); - } else { - /* bits 26:27 mirror PMIC options */ - bios_status = (bios_status >> 26) & 3; - - if (bios_status == 1 || bios_status == 3) { - dev_info(dev, "Detected Baytrail-CR platform\n"); - return true; - } - - dev_info(dev, "BYT-CR not detected\n"); - } - } else { - dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); - } - - if (platform_get_resource(pdev, IORESOURCE_IRQ, 5) == NULL) { - /* - * Some devices detected as BYT-T have only a single IRQ listed, - * causing platform_get_irq with index 5 to return -ENXIO. - * The correct IRQ in this case is at index 0, as on BYT-CR. - */ - dev_info(dev, "Falling back to Baytrail-CR platform\n"); - return true; - } - - return false; -} -#else -static int is_byt_cr(struct platform_device *pdev) -{ - return 0; -} -#endif - static const struct sof_dev_desc sof_acpi_cherrytrail_desc = { .machines = snd_soc_acpi_intel_cherrytrail_machines, .resindex_lpe_base = 0, @@ -200,7 +147,7 @@ static int sof_acpi_probe(struct platform_device *pdev) return -ENODEV;
#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL) - if (desc == &sof_acpi_baytrail_desc && is_byt_cr(pdev)) + if (desc == &sof_acpi_baytrail_desc && soc_intel_is_byt_cr(pdev)) desc = &sof_acpi_baytrailcr_desc; #endif
The patch
ASoC: Intel: use common helpers to detect CPUs
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From 536cfd2f375d36f4316c0b93bb9e0eaf78e0ef6c Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Date: Thu, 30 May 2019 06:50:11 -0500 Subject: [PATCH] ASoC: Intel: use common helpers to detect CPUs
We have duplicated code in multiple locations (atom, machine drivers, SOF) to detect Baytrail, Cherrytrail and other SOCs. This is not very elegant, and introduces dependencies on CONFIG_X86 that prevent COMPILE_TEST from working.
Add common helpers to provide same functionality in a cleaner way. This will also help support the DMI-based quirks being introduced to handle SOF/SST autodetection.
Reviewed-by: Takashi Iwai tiwai@suse.de Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/intel/atom/sst/sst_acpi.c | 65 +--------- sound/soc/intel/boards/bxt_da7219_max98357a.c | 11 +- sound/soc/intel/boards/bytcht_es8316.c | 12 +- sound/soc/intel/boards/bytcr_rt5640.c | 16 +-- sound/soc/intel/boards/bytcr_rt5651.c | 17 +-- sound/soc/intel/boards/cht_bsw_rt5645.c | 16 +-- sound/soc/intel/boards/sof_rt5682.c | 11 +- sound/soc/intel/common/soc-intel-quirks.h | 115 ++++++++++++++++++ sound/soc/sof/sof-acpi-dev.c | 57 +-------- 9 files changed, 135 insertions(+), 185 deletions(-) create mode 100644 sound/soc/intel/common/soc-intel-quirks.h
diff --git a/sound/soc/intel/atom/sst/sst_acpi.c b/sound/soc/intel/atom/sst/sst_acpi.c index ae17ce4677a5..06c4a2da900c 100644 --- a/sound/soc/intel/atom/sst/sst_acpi.c +++ b/sound/soc/intel/atom/sst/sst_acpi.c @@ -38,12 +38,11 @@ #include <acpi/platform/aclinux.h> #include <acpi/actypes.h> #include <acpi/acpi_bus.h> -#include <asm/cpu_device_id.h> -#include <asm/iosf_mbi.h> #include <sound/soc-acpi.h> #include <sound/soc-acpi-intel-match.h> #include "../sst-mfld-platform.h" #include "../../common/sst-dsp.h" +#include "../../common/soc-intel-quirks.h" #include "sst.h"
/* LPE viewpoint addresses */ @@ -243,64 +242,6 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx) return 0; }
-static int is_byt(void) -{ - bool status = false; - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - if (x86_match_cpu(cpu_ids)) - status = true; - return status; -} - -static bool is_byt_cr(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - int status = 0; - - if (!is_byt()) - return false; - - if (iosf_mbi_available()) { - u32 bios_status; - status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ - MBI_REG_READ, /* 0x10 */ - 0x006, /* BIOS_CONFIG */ - &bios_status); - - if (status) { - dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); - } else { - /* bits 26:27 mirror PMIC options */ - bios_status = (bios_status >> 26) & 3; - - if (bios_status == 1 || bios_status == 3) { - dev_info(dev, "Detected Baytrail-CR platform\n"); - return true; - } - - dev_info(dev, "BYT-CR not detected\n"); - } - } else { - dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); - } - - if (platform_get_resource(pdev, IORESOURCE_IRQ, 5) == NULL) { - /* - * Some devices detected as BYT-T have only a single IRQ listed, - * causing platform_get_irq with index 5 to return -ENXIO. - * The correct IRQ in this case is at index 0, as on BYT-CR. - */ - dev_info(dev, "Falling back to Baytrail-CR platform\n"); - return true; - } - - return false; -} - - static int sst_acpi_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -325,7 +266,7 @@ static int sst_acpi_probe(struct platform_device *pdev) return -ENODEV; }
- if (is_byt()) + if (soc_intel_is_byt()) mach->pdata = &byt_rvp_platform_data; else mach->pdata = &chv_platform_data; @@ -343,7 +284,7 @@ static int sst_acpi_probe(struct platform_device *pdev) if (ret < 0) return ret;
- if (is_byt_cr(pdev)) { + if (soc_intel_is_byt_cr(pdev)) { /* override resource info */ byt_rvp_platform_data.res_info = &bytcr_res_info; } diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 5cadb7f654f3..4ee769a86201 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -16,7 +16,6 @@ * GNU General Public License for more details. */
-#include <asm/cpu_device_id.h> #include <linux/input.h> #include <linux/module.h> #include <linux/platform_device.h> @@ -29,6 +28,7 @@ #include "../../codecs/hdac_hdmi.h" #include "../../codecs/da7219.h" #include "../../codecs/da7219-aad.h" +#include "../common/soc-intel-quirks.h"
#define BXT_DIALOG_CODEC_DAI "da7219-hifi" #define BXT_MAXIM_CODEC_DAI "HiFi" @@ -568,11 +568,6 @@ static struct snd_soc_dai_link broxton_dais[] = { }, };
-static const struct x86_cpu_id glk_ids[] = { - { X86_VENDOR_INTEL, 6, 0x7A }, /* Geminilake CPU_ID */ - {} -}; - #define NAME_SIZE 32 static int bxt_card_late_probe(struct snd_soc_card *card) { @@ -582,7 +577,7 @@ static int bxt_card_late_probe(struct snd_soc_card *card) int err, i = 0; char jack_name[NAME_SIZE];
- if (x86_match_cpu(glk_ids)) + if (soc_intel_is_glk()) snd_soc_dapm_add_routes(&card->dapm, gemini_map, ARRAY_SIZE(gemini_map)); else @@ -645,7 +640,7 @@ static int broxton_audio_probe(struct platform_device *pdev)
broxton_audio_card.dev = &pdev->dev; snd_soc_card_set_drvdata(&broxton_audio_card, ctx); - if (x86_match_cpu(glk_ids)) { + if (soc_intel_is_glk()) { unsigned int i;
broxton_audio_card.name = "glkda7219max"; diff --git a/sound/soc/intel/boards/bytcht_es8316.c b/sound/soc/intel/boards/bytcht_es8316.c index e8c585ffd04d..d08715ac3945 100644 --- a/sound/soc/intel/boards/bytcht_es8316.c +++ b/sound/soc/intel/boards/bytcht_es8316.c @@ -30,8 +30,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <asm/platform_sst_audio.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -40,6 +38,7 @@ #include <sound/soc-acpi.h> #include "../atom/sst-atom-controls.h" #include "../common/sst-dsp.h" +#include "../common/soc-intel-quirks.h"
/* jd-inv + terminating entry */ #define MAX_NO_PROPS 2 @@ -430,11 +429,6 @@ static struct snd_soc_card byt_cht_es8316_card = { .resume_post = byt_cht_es8316_resume, };
-static const struct x86_cpu_id baytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Valleyview */ - {} -}; - static const struct acpi_gpio_params first_gpio = { 0, 0, false };
static const struct acpi_gpio_mapping byt_cht_es8316_gpios[] = { @@ -506,8 +500,8 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev) dmi_id = dmi_first_match(byt_cht_es8316_quirk_table); if (dmi_id) { quirk = (unsigned long)dmi_id->driver_data; - } else if (x86_match_cpu(baytrail_cpu_ids) && - mach->mach_params.acpi_ipc_irq_index == 0) { + } else if (soc_intel_is_byt() && + mach->mach_params.acpi_ipc_irq_index == 0) { /* On BYTCR default to SSP0, internal-mic-in2-map, mono-spk */ quirk = BYT_CHT_ES8316_SSP0 | BYT_CHT_ES8316_INTMIC_IN2_MAP | BYT_CHT_ES8316_MONO_SPEAKER; diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c index dc22df9a99fb..7aae7b78efba 100644 --- a/sound/soc/intel/boards/bytcr_rt5640.c +++ b/sound/soc/intel/boards/bytcr_rt5640.c @@ -28,7 +28,6 @@ #include <linux/dmi.h> #include <linux/input.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -38,6 +37,7 @@ #include "../../codecs/rt5640.h" #include "../atom/sst-atom-controls.h" #include "../common/sst-dsp.h" +#include "../common/soc-intel-quirks.h"
enum { BYT_RT5640_DMIC1_MAP, @@ -1130,18 +1130,6 @@ static struct snd_soc_card byt_rt5640_card = { .resume_post = byt_rt5640_resume, };
-static bool is_valleyview(void) -{ - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - - if (!x86_match_cpu(cpu_ids)) - return false; - return true; -} - struct acpi_chan_package { /* ACPICA seems to require 64 bit integers */ u64 aif_value; /* 1: AIF1, 2: AIF2 */ u64 mclock_value; /* usually 25MHz (0x17d7940), ignored */ @@ -1190,7 +1178,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (is_valleyview()) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c index ca657c3e5726..6df6435ea394 100644 --- a/sound/soc/intel/boards/bytcr_rt5651.c +++ b/sound/soc/intel/boards/bytcr_rt5651.c @@ -30,8 +30,6 @@ #include <linux/gpio/consumer.h> #include <linux/gpio/machine.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -39,6 +37,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5651.h" #include "../atom/sst-atom-controls.h" +#include "../common/soc-intel-quirks.h"
enum { BYT_RT5651_DMIC_MAP, @@ -852,16 +851,6 @@ static struct snd_soc_card byt_rt5651_card = { .resume_post = byt_rt5651_resume, };
-static const struct x86_cpu_id baytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Valleyview */ - {} -}; - -static const struct x86_cpu_id cherrytrail_cpu_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT }, /* Braswell */ - {} -}; - static const struct acpi_gpio_params ext_amp_enable_gpios = { 0, 0, false };
static const struct acpi_gpio_mapping cht_rt5651_gpios[] = { @@ -932,7 +921,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (x86_match_cpu(baytrail_cpu_ids)) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } @@ -1001,7 +990,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev) }
/* Cherry Trail devices use an external amplifier enable gpio */ - if (x86_match_cpu(cherrytrail_cpu_ids) && !byt_rt5651_gpios) + if (soc_intel_is_cht() && !byt_rt5651_gpios) byt_rt5651_gpios = cht_rt5651_gpios;
if (byt_rt5651_gpios) { diff --git a/sound/soc/intel/boards/cht_bsw_rt5645.c b/sound/soc/intel/boards/cht_bsw_rt5645.c index 32dbeaf1ab94..de5fe58ae3b4 100644 --- a/sound/soc/intel/boards/cht_bsw_rt5645.c +++ b/sound/soc/intel/boards/cht_bsw_rt5645.c @@ -26,7 +26,6 @@ #include <linux/clk.h> #include <linux/dmi.h> #include <linux/slab.h> -#include <asm/cpu_device_id.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> @@ -34,6 +33,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5645.h" #include "../atom/sst-atom-controls.h" +#include "../common/soc-intel-quirks.h"
#define CHT_PLAT_CLK_3_HZ 19200000 #define CHT_CODEC_DAI1 "rt5645-aif1" @@ -509,18 +509,6 @@ static char cht_rt5645_codec_name[SND_ACPI_I2C_ID_LEN]; static char cht_rt5645_codec_aif_name[12]; /* = "rt5645-aif[1|2]" */ static char cht_rt5645_cpu_dai_name[10]; /* = "ssp[0|2]-port" */
-static bool is_valleyview(void) -{ - static const struct x86_cpu_id cpu_ids[] = { - { X86_VENDOR_INTEL, 6, 55 }, /* Valleyview, Bay Trail */ - {} - }; - - if (!x86_match_cpu(cpu_ids)) - return false; - return true; -} - struct acpi_chan_package { /* ACPICA seems to require 64 bit integers */ u64 aif_value; /* 1: AIF1, 2: AIF2 */ u64 mclock_value; /* usually 25MHz (0x17d7940), ignored */ @@ -585,7 +573,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev) * swap SSP0 if bytcr is detected * (will be overridden if DMI quirk is detected) */ - if (is_valleyview()) { + if (soc_intel_is_byt()) { if (mach->mach_params.acpi_ipc_irq_index == 0) is_bytcr = true; } diff --git a/sound/soc/intel/boards/sof_rt5682.c b/sound/soc/intel/boards/sof_rt5682.c index e441dc979966..355fd9730a44 100644 --- a/sound/soc/intel/boards/sof_rt5682.c +++ b/sound/soc/intel/boards/sof_rt5682.c @@ -10,8 +10,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/dmi.h> -#include <asm/cpu_device_id.h> -#include <asm/intel-family.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -21,6 +19,7 @@ #include <sound/soc-acpi.h> #include "../../codecs/rt5682.h" #include "../../codecs/hdac_hdmi.h" +#include "../common/soc-intel-quirks.h"
#define NAME_SIZE 32
@@ -304,12 +303,6 @@ static struct snd_soc_card sof_audio_card_rt5682 = { .late_probe = sof_card_late_probe, };
-static const struct x86_cpu_id legacy_cpi_ids[] = { - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT }, /* Baytrail */ - { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT }, /* Cherrytrail */ - {} -}; - static struct snd_soc_dai_link_component rt5682_component[] = { { .name = "i2c-10EC5682:00", @@ -498,7 +491,7 @@ static int sof_audio_probe(struct platform_device *pdev) if (!ctx) return -ENOMEM;
- if (x86_match_cpu(legacy_cpi_ids)) { + if (soc_intel_is_byt() || soc_intel_is_cht()) { is_legacy_cpu = 1; dmic_num = 0; hdmi_num = 0; diff --git a/sound/soc/intel/common/soc-intel-quirks.h b/sound/soc/intel/common/soc-intel-quirks.h new file mode 100644 index 000000000000..4718fd3cf636 --- /dev/null +++ b/sound/soc/intel/common/soc-intel-quirks.h @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * soc-intel-quirks.h - prototypes for quirk autodetection + * + * Copyright (c) 2019, Intel Corporation. + * + */ + +#ifndef _SND_SOC_INTEL_QUIRKS_H +#define _SND_SOC_INTEL_QUIRKS_H + +#if IS_ENABLED(CONFIG_X86) + +#include <asm/cpu_device_id.h> +#include <asm/intel-family.h> +#include <asm/iosf_mbi.h> + +#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } + +#define SOC_INTEL_IS_CPU(soc, type) \ +static inline bool soc_intel_is_##soc(void) \ +{ \ + static const struct x86_cpu_id soc##_cpu_ids[] = { \ + ICPU(type), \ + {} \ + }; \ + const struct x86_cpu_id *id; \ + \ + id = x86_match_cpu(soc##_cpu_ids); \ + if (id) \ + return true; \ + return false; \ +} + +SOC_INTEL_IS_CPU(byt, INTEL_FAM6_ATOM_SILVERMONT); +SOC_INTEL_IS_CPU(cht, INTEL_FAM6_ATOM_AIRMONT); +SOC_INTEL_IS_CPU(apl, INTEL_FAM6_ATOM_GOLDMONT); +SOC_INTEL_IS_CPU(glk, INTEL_FAM6_ATOM_GOLDMONT_PLUS); + +static inline bool soc_intel_is_byt_cr(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + int status = 0; + + if (!soc_intel_is_byt()) + return false; + + if (iosf_mbi_available()) { + u32 bios_status; + + status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ + MBI_REG_READ, /* 0x10 */ + 0x006, /* BIOS_CONFIG */ + &bios_status); + + if (status) { + dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); + } else { + /* bits 26:27 mirror PMIC options */ + bios_status = (bios_status >> 26) & 3; + + if (bios_status == 1 || bios_status == 3) { + dev_info(dev, "Detected Baytrail-CR platform\n"); + return true; + } + + dev_info(dev, "BYT-CR not detected\n"); + } + } else { + dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); + } + + if (!platform_get_resource(pdev, IORESOURCE_IRQ, 5)) { + /* + * Some devices detected as BYT-T have only a single IRQ listed, + * causing platform_get_irq with index 5 to return -ENXIO. + * The correct IRQ in this case is at index 0, as on BYT-CR. + */ + dev_info(dev, "Falling back to Baytrail-CR platform\n"); + return true; + } + + return false; +} + +#else + +static inline bool soc_intel_is_byt_cr(struct platform_device *pdev) +{ + return false; +} + +static inline bool soc_intel_is_byt(void) +{ + return false; +} + +static inline bool soc_intel_is_cht(void) +{ + return false; +} + +static inline bool soc_intel_is_apl(void) +{ + return false; +} + +static inline bool soc_intel_is_glk(void) +{ + return false; +} + +#endif + + #endif /* _SND_SOC_INTEL_QUIRKS_H */ diff --git a/sound/soc/sof/sof-acpi-dev.c b/sound/soc/sof/sof-acpi-dev.c index e9cf69874b5b..c8dafb1ac54e 100644 --- a/sound/soc/sof/sof-acpi-dev.c +++ b/sound/soc/sof/sof-acpi-dev.c @@ -15,10 +15,7 @@ #include <sound/soc-acpi.h> #include <sound/soc-acpi-intel-match.h> #include <sound/sof.h> -#ifdef CONFIG_X86 -#include <asm/iosf_mbi.h> -#endif - +#include "../intel/common/soc-intel-quirks.h" #include "ops.h"
/* platform specific devices */ @@ -99,56 +96,6 @@ static const struct sof_dev_desc sof_acpi_baytrail_desc = { .arch_ops = &sof_xtensa_arch_ops };
-#ifdef CONFIG_X86 /* TODO: move this to common helper */ - -static bool is_byt_cr(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - int status; - - if (iosf_mbi_available()) { - u32 bios_status; - status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */ - MBI_REG_READ, /* 0x10 */ - 0x006, /* BIOS_CONFIG */ - &bios_status); - - if (status) { - dev_err(dev, "could not read PUNIT BIOS_CONFIG\n"); - } else { - /* bits 26:27 mirror PMIC options */ - bios_status = (bios_status >> 26) & 3; - - if (bios_status == 1 || bios_status == 3) { - dev_info(dev, "Detected Baytrail-CR platform\n"); - return true; - } - - dev_info(dev, "BYT-CR not detected\n"); - } - } else { - dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n"); - } - - if (platform_get_resource(pdev, IORESOURCE_IRQ, 5) == NULL) { - /* - * Some devices detected as BYT-T have only a single IRQ listed, - * causing platform_get_irq with index 5 to return -ENXIO. - * The correct IRQ in this case is at index 0, as on BYT-CR. - */ - dev_info(dev, "Falling back to Baytrail-CR platform\n"); - return true; - } - - return false; -} -#else -static int is_byt_cr(struct platform_device *pdev) -{ - return 0; -} -#endif - static const struct sof_dev_desc sof_acpi_cherrytrail_desc = { .machines = snd_soc_acpi_intel_cherrytrail_machines, .resindex_lpe_base = 0, @@ -200,7 +147,7 @@ static int sof_acpi_probe(struct platform_device *pdev) return -ENODEV;
#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL) - if (desc == &sof_acpi_baytrail_desc && is_byt_cr(pdev)) + if (desc == &sof_acpi_baytrail_desc && soc_intel_is_byt_cr(pdev)) desc = &sof_acpi_baytrailcr_desc; #endif
From: Randy Dunlap rdunlap@infradead.org
skl-ssp-clk.c does not build on IA64 because the driver uses the common clock interface, so make the driver depend on COMMON_CLK.
Fixes this build error: ../sound/soc/intel/skylake/skl-ssp-clk.c:26:16: error: field 'hw' has incomplete type struct clk_hw hw; ^~ [Corrections for SKL support by Pierre Bossart]
Reported-by: kbuild test robot lkp@intel.com Signed-off-by: Randy Dunlap rdunlap@infradead.org Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Cc: Mark Brown broonie@kernel.org Cc: Liam Girdwood liam.r.girdwood@linux.intel.com Cc: Jie Yang yang.jie@linux.intel.com Cc: alsa-devel@alsa-project.org --- sound/soc/intel/Kconfig | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index b089ed3bf77f..a3cf47d09816 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -104,6 +104,7 @@ config SND_SST_ATOM_HIFI2_PLATFORM_ACPI config SND_SOC_INTEL_SKYLAKE tristate "All Skylake/SST Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKL select SND_SOC_INTEL_APL select SND_SOC_INTEL_KBL @@ -120,6 +121,7 @@ config SND_SOC_INTEL_SKYLAKE config SND_SOC_INTEL_SKL tristate "Skylake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Skylake platform with the DSP enabled @@ -128,6 +130,7 @@ config SND_SOC_INTEL_SKL config SND_SOC_INTEL_APL tristate "Broxton/ApolloLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Broxton/ApolloLake platform with the DSP @@ -136,6 +139,7 @@ config SND_SOC_INTEL_APL config SND_SOC_INTEL_KBL tristate "Kabylake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Kabylake platform with the DSP @@ -144,6 +148,7 @@ config SND_SOC_INTEL_KBL config SND_SOC_INTEL_GLK tristate "GeminiLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel GeminiLake platform with the DSP @@ -152,6 +157,7 @@ config SND_SOC_INTEL_GLK config SND_SOC_INTEL_CNL tristate "CannonLake/WhiskyLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CNL/WHL platform with the DSP @@ -160,6 +166,7 @@ config SND_SOC_INTEL_CNL config SND_SOC_INTEL_CFL tristate "CoffeeLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CoffeeLake platform with the DSP @@ -168,6 +175,7 @@ config SND_SOC_INTEL_CFL config SND_SOC_INTEL_CML_H tristate "CometLake-H Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CometLake-H platform with the DSP @@ -176,6 +184,7 @@ config SND_SOC_INTEL_CML_H config SND_SOC_INTEL_CML_LP tristate "CometLake-LP Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CometLake-LP platform with the DSP
The patch
ASoc: fix sound/soc/intel/skylake/slk-ssp-clk.c build error on IA64
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From 2c79eeb1aaf2bf0a6d9bb4732596f7dc147cab4d Mon Sep 17 00:00:00 2001
From: Randy Dunlap rdunlap@infradead.org Date: Thu, 30 May 2019 06:50:12 -0500 Subject: [PATCH] ASoc: fix sound/soc/intel/skylake/slk-ssp-clk.c build error on IA64
skl-ssp-clk.c does not build on IA64 because the driver uses the common clock interface, so make the driver depend on COMMON_CLK.
Fixes this build error: ../sound/soc/intel/skylake/skl-ssp-clk.c:26:16: error: field 'hw' has incomplete type struct clk_hw hw; ^~ [Corrections for SKL support by Pierre Bossart]
Reported-by: kbuild test robot lkp@intel.com Signed-off-by: Randy Dunlap rdunlap@infradead.org Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Cc: Mark Brown broonie@kernel.org Cc: Liam Girdwood liam.r.girdwood@linux.intel.com Cc: Jie Yang yang.jie@linux.intel.com Cc: alsa-devel@alsa-project.org Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/intel/Kconfig | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index b089ed3bf77f..a3cf47d09816 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -104,6 +104,7 @@ config SND_SST_ATOM_HIFI2_PLATFORM_ACPI config SND_SOC_INTEL_SKYLAKE tristate "All Skylake/SST Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKL select SND_SOC_INTEL_APL select SND_SOC_INTEL_KBL @@ -120,6 +121,7 @@ config SND_SOC_INTEL_SKYLAKE config SND_SOC_INTEL_SKL tristate "Skylake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Skylake platform with the DSP enabled @@ -128,6 +130,7 @@ config SND_SOC_INTEL_SKL config SND_SOC_INTEL_APL tristate "Broxton/ApolloLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Broxton/ApolloLake platform with the DSP @@ -136,6 +139,7 @@ config SND_SOC_INTEL_APL config SND_SOC_INTEL_KBL tristate "Kabylake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Kabylake platform with the DSP @@ -144,6 +148,7 @@ config SND_SOC_INTEL_KBL config SND_SOC_INTEL_GLK tristate "GeminiLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel GeminiLake platform with the DSP @@ -152,6 +157,7 @@ config SND_SOC_INTEL_GLK config SND_SOC_INTEL_CNL tristate "CannonLake/WhiskyLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CNL/WHL platform with the DSP @@ -160,6 +166,7 @@ config SND_SOC_INTEL_CNL config SND_SOC_INTEL_CFL tristate "CoffeeLake Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CoffeeLake platform with the DSP @@ -168,6 +175,7 @@ config SND_SOC_INTEL_CFL config SND_SOC_INTEL_CML_H tristate "CometLake-H Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CometLake-H platform with the DSP @@ -176,6 +184,7 @@ config SND_SOC_INTEL_CML_H config SND_SOC_INTEL_CML_LP tristate "CometLake-LP Platforms" depends on PCI && ACPI + depends on COMMON_CLK select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CometLake-LP platform with the DSP
This is not needed. Probably a copy/paste that was never removed.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/boards/bytcht_cx2072x.c | 1 - sound/soc/intel/boards/bytcht_da7213.c | 1 - sound/soc/intel/boards/bytcht_es8316.c | 1 - 3 files changed, 3 deletions(-)
diff --git a/sound/soc/intel/boards/bytcht_cx2072x.c b/sound/soc/intel/boards/bytcht_cx2072x.c index b21b0e7f981a..4b985b393dae 100644 --- a/sound/soc/intel/boards/bytcht_cx2072x.c +++ b/sound/soc/intel/boards/bytcht_cx2072x.c @@ -9,7 +9,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/jack.h> diff --git a/sound/soc/intel/boards/bytcht_da7213.c b/sound/soc/intel/boards/bytcht_da7213.c index 4decba338156..9091ee697fbe 100644 --- a/sound/soc/intel/boards/bytcht_da7213.c +++ b/sound/soc/intel/boards/bytcht_da7213.c @@ -23,7 +23,6 @@ #include <linux/acpi.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> diff --git a/sound/soc/intel/boards/bytcht_es8316.c b/sound/soc/intel/boards/bytcht_es8316.c index d08715ac3945..1f319b2a835f 100644 --- a/sound/soc/intel/boards/bytcht_es8316.c +++ b/sound/soc/intel/boards/bytcht_es8316.c @@ -30,7 +30,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/jack.h> #include <sound/pcm.h> #include <sound/pcm_params.h>
The patch
ASoC: Intel: boards: remove dependency on asm/platform_sst_audio.h
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From 0d365acbbe295a67df5e1dc1e3661dc37390dd58 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Date: Thu, 30 May 2019 06:50:13 -0500 Subject: [PATCH] ASoC: Intel: boards: remove dependency on asm/platform_sst_audio.h
This is not needed. Probably a copy/paste that was never removed.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/intel/boards/bytcht_cx2072x.c | 1 - sound/soc/intel/boards/bytcht_da7213.c | 1 - sound/soc/intel/boards/bytcht_es8316.c | 1 - 3 files changed, 3 deletions(-)
diff --git a/sound/soc/intel/boards/bytcht_cx2072x.c b/sound/soc/intel/boards/bytcht_cx2072x.c index b21b0e7f981a..4b985b393dae 100644 --- a/sound/soc/intel/boards/bytcht_cx2072x.c +++ b/sound/soc/intel/boards/bytcht_cx2072x.c @@ -9,7 +9,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/jack.h> diff --git a/sound/soc/intel/boards/bytcht_da7213.c b/sound/soc/intel/boards/bytcht_da7213.c index 4decba338156..9091ee697fbe 100644 --- a/sound/soc/intel/boards/bytcht_da7213.c +++ b/sound/soc/intel/boards/bytcht_da7213.c @@ -23,7 +23,6 @@ #include <linux/acpi.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> diff --git a/sound/soc/intel/boards/bytcht_es8316.c b/sound/soc/intel/boards/bytcht_es8316.c index d08715ac3945..1f319b2a835f 100644 --- a/sound/soc/intel/boards/bytcht_es8316.c +++ b/sound/soc/intel/boards/bytcht_es8316.c @@ -30,7 +30,6 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <asm/platform_sst_audio.h> #include <sound/jack.h> #include <sound/pcm.h> #include <sound/pcm_params.h>
We recently added COMPILE_TEST but new machine drivers were not updated. Fix.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/boards/Kconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index 59e366edc16b..7f6e9546e10c 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -157,7 +157,8 @@ config SND_SOC_INTEL_CHT_BSW_NAU8824_MACH
config SND_SOC_INTEL_BYT_CHT_CX2072X_MACH tristate "Baytrail & Cherrytrail with CX2072X codec" - depends on X86_INTEL_LPSS && I2C && ACPI + depends on I2C && ACPI + depends on X86_INTEL_LPSS || COMPILE_TEST select SND_SOC_ACPI select SND_SOC_CX2072X help @@ -398,8 +399,8 @@ if SND_SOC_SOF_HDA_COMMON || SND_SOC_SOF_BAYTRAIL config SND_SOC_INTEL_SOF_RT5682_MACH tristate "SOF with rt5682 codec in I2S Mode" depends on I2C && ACPI - depends on (SND_SOC_SOF_HDA_COMMON && MFD_INTEL_LPSS) ||\ - (SND_SOC_SOF_BAYTRAIL && X86_INTEL_LPSS) + depends on (SND_SOC_SOF_HDA_COMMON && (MFD_INTEL_LPSS || COMPILE_TEST)) ||\ + (SND_SOC_SOF_BAYTRAIL && (X86_INTEL_LPSS || COMPILE_TEST)) select SND_SOC_RT5682 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI if SND_SOC_SOF_HDA_COMMON
The patch
ASoC: Intel: boards: Add COMPILE_TEST for new machine drivers
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From 8fe751d8fd5cbf19e9d7852c5b7d8ed818be1934 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Date: Thu, 30 May 2019 06:50:14 -0500 Subject: [PATCH] ASoC: Intel: boards: Add COMPILE_TEST for new machine drivers
We recently added COMPILE_TEST but new machine drivers were not updated. Fix.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/intel/boards/Kconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index 317ee1e8c8c6..41649dc1c5e0 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -157,7 +157,8 @@ config SND_SOC_INTEL_CHT_BSW_NAU8824_MACH
config SND_SOC_INTEL_BYT_CHT_CX2072X_MACH tristate "Baytrail & Cherrytrail with CX2072X codec" - depends on X86_INTEL_LPSS && I2C && ACPI + depends on I2C && ACPI + depends on X86_INTEL_LPSS || COMPILE_TEST select SND_SOC_ACPI select SND_SOC_CX2072X help @@ -398,8 +399,8 @@ if SND_SOC_SOF_HDA_COMMON || SND_SOC_SOF_BAYTRAIL config SND_SOC_INTEL_SOF_RT5682_MACH tristate "SOF with rt5682 codec in I2S Mode" depends on I2C && ACPI - depends on (SND_SOC_SOF_HDA_COMMON && MFD_INTEL_LPSS) ||\ - (SND_SOC_SOF_BAYTRAIL && X86_INTEL_LPSS) + depends on (SND_SOC_SOF_HDA_COMMON && (MFD_INTEL_LPSS || COMPILE_TEST)) ||\ + (SND_SOC_SOF_BAYTRAIL && (X86_INTEL_LPSS || COMPILE_TEST)) select SND_SOC_RT5682 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI
Add COMPILE_TEST and use IS_ENABLED(CONFIG_PCI) to sort out cross-compilation issues.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/sof/Kconfig | 2 +- sound/soc/sof/intel/hda.c | 13 +++++++++++-- sound/soc/sof/sof-pci-dev.c | 4 ++++ 3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig index a9a1d502daae..ca3ad3362478 100644 --- a/sound/soc/sof/Kconfig +++ b/sound/soc/sof/Kconfig @@ -10,7 +10,7 @@ if SND_SOC_SOF_TOPLEVEL
config SND_SOC_SOF_PCI tristate "SOF PCI enumeration support" - depends on PCI + depends on PCI || COMPILE_TEST select SND_SOC_SOF select SND_SOC_ACPI if ACPI select SND_SOC_SOF_OPTIONS diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index e47f03dc62f0..b1f4db0a6895 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -488,7 +488,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) * TODO: support interrupt mode selection with kernel parameter * support msi multiple vectors */ +#if IS_ENABLED(CONFIG_PCI) ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI); +#endif if (ret < 0) { dev_info(sdev->dev, "use legacy interrupt mode\n"); /* @@ -500,7 +502,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) sdev->msi_enabled = 0; } else { dev_info(sdev->dev, "use msi interrupt mode\n"); +#if IS_ENABLED(CONFIG_PCI) hdev->irq = pci_irq_vector(pci, 0); +#endif /* ipc irq number is the same of hda irq */ sdev->ipc_irq = hdev->irq; sdev->msi_enabled = 1; @@ -561,8 +565,10 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) free_hda_irq: free_irq(hdev->irq, bus); free_irq_vector: +#if IS_ENABLED(CONFIG_PCI) if (sdev->msi_enabled) pci_free_irq_vectors(pci); +#endif free_streams: hda_dsp_stream_free(sdev); /* dsp_unmap: not currently used */ @@ -577,7 +583,6 @@ int hda_dsp_remove(struct snd_sof_dev *sdev) { struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; struct hdac_bus *bus = sof_to_bus(sdev); - struct pci_dev *pci = to_pci_dev(sdev->dev); const struct sof_intel_dsp_desc *chip = hda->desc;
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) @@ -606,8 +611,12 @@ int hda_dsp_remove(struct snd_sof_dev *sdev)
free_irq(sdev->ipc_irq, sdev); free_irq(hda->irq, bus); - if (sdev->msi_enabled) +#if IS_ENABLED(CONFIG_PCI) + if (sdev->msi_enabled) { + struct pci_dev *pci = to_pci_dev(sdev->dev); pci_free_irq_vectors(pci); + } +#endif
hda_dsp_stream_free(sdev); #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c index e2b19782f01a..ab58d4f9119f 100644 --- a/sound/soc/sof/sof-pci-dev.c +++ b/sound/soc/sof/sof-pci-dev.c @@ -251,9 +251,11 @@ static int sof_pci_probe(struct pci_dev *pci, if (!sof_pdata) return -ENOMEM;
+#if IS_ENABLED(CONFIG_PCI) ret = pcim_enable_device(pci); if (ret < 0) return ret; +#endif
ret = pci_request_regions(pci, "Audio DSP"); if (ret < 0) @@ -386,6 +388,7 @@ static const struct pci_device_id sof_pci_ids[] = { }; MODULE_DEVICE_TABLE(pci, sof_pci_ids);
+#if IS_ENABLED(CONFIG_PCI) /* pci_driver definition */ static struct pci_driver snd_sof_pci_driver = { .name = "sof-audio-pci", @@ -397,5 +400,6 @@ static struct pci_driver snd_sof_pci_driver = { }, }; module_pci_driver(snd_sof_pci_driver); +#endif
MODULE_LICENSE("Dual BSD/GPL");
The patch
ASoC: SOF: add COMPILE_TEST for PCI options
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From e13ef82a9ab83dd21d8dd43ef9f5e8bf5b101106 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Date: Thu, 30 May 2019 06:50:15 -0500 Subject: [PATCH] ASoC: SOF: add COMPILE_TEST for PCI options
Add COMPILE_TEST and use IS_ENABLED(CONFIG_PCI) to sort out cross-compilation issues.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/sof/Kconfig | 2 +- sound/soc/sof/intel/hda.c | 13 +++++++++++-- sound/soc/sof/sof-pci-dev.c | 4 ++++ 3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig index a9a1d502daae..ca3ad3362478 100644 --- a/sound/soc/sof/Kconfig +++ b/sound/soc/sof/Kconfig @@ -10,7 +10,7 @@ if SND_SOC_SOF_TOPLEVEL
config SND_SOC_SOF_PCI tristate "SOF PCI enumeration support" - depends on PCI + depends on PCI || COMPILE_TEST select SND_SOC_SOF select SND_SOC_ACPI if ACPI select SND_SOC_SOF_OPTIONS diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index 7e3980a2f7ba..5378d47a55fd 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -506,7 +506,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) * TODO: support interrupt mode selection with kernel parameter * support msi multiple vectors */ +#if IS_ENABLED(CONFIG_PCI) ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI); +#endif if (ret < 0) { dev_info(sdev->dev, "use legacy interrupt mode\n"); /* @@ -518,7 +520,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) sdev->msi_enabled = 0; } else { dev_info(sdev->dev, "use msi interrupt mode\n"); +#if IS_ENABLED(CONFIG_PCI) hdev->irq = pci_irq_vector(pci, 0); +#endif /* ipc irq number is the same of hda irq */ sdev->ipc_irq = hdev->irq; sdev->msi_enabled = 1; @@ -622,8 +626,10 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) free_hda_irq: free_irq(hdev->irq, bus); free_irq_vector: +#if IS_ENABLED(CONFIG_PCI) if (sdev->msi_enabled) pci_free_irq_vectors(pci); +#endif free_streams: hda_dsp_stream_free(sdev); /* dsp_unmap: not currently used */ @@ -638,7 +644,6 @@ int hda_dsp_remove(struct snd_sof_dev *sdev) { struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; struct hdac_bus *bus = sof_to_bus(sdev); - struct pci_dev *pci = to_pci_dev(sdev->dev); const struct sof_intel_dsp_desc *chip = hda->desc;
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) @@ -667,8 +672,12 @@ int hda_dsp_remove(struct snd_sof_dev *sdev)
free_irq(sdev->ipc_irq, sdev); free_irq(hda->irq, bus); - if (sdev->msi_enabled) +#if IS_ENABLED(CONFIG_PCI) + if (sdev->msi_enabled) { + struct pci_dev *pci = to_pci_dev(sdev->dev); pci_free_irq_vectors(pci); + } +#endif
hda_dsp_stream_free(sdev); #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c index e2b19782f01a..ab58d4f9119f 100644 --- a/sound/soc/sof/sof-pci-dev.c +++ b/sound/soc/sof/sof-pci-dev.c @@ -251,9 +251,11 @@ static int sof_pci_probe(struct pci_dev *pci, if (!sof_pdata) return -ENOMEM;
+#if IS_ENABLED(CONFIG_PCI) ret = pcim_enable_device(pci); if (ret < 0) return ret; +#endif
ret = pci_request_regions(pci, "Audio DSP"); if (ret < 0) @@ -386,6 +388,7 @@ static const struct pci_device_id sof_pci_ids[] = { }; MODULE_DEVICE_TABLE(pci, sof_pci_ids);
+#if IS_ENABLED(CONFIG_PCI) /* pci_driver definition */ static struct pci_driver snd_sof_pci_driver = { .name = "sof-audio-pci", @@ -397,5 +400,6 @@ static struct pci_driver snd_sof_pci_driver = { }, }; module_pci_driver(snd_sof_pci_driver); +#endif
MODULE_LICENSE("Dual BSD/GPL");
participants (2)
-
Mark Brown
-
Pierre-Louis Bossart