[alsa-devel] [RFC PATCH v2 0/7] Fix Intel audio Kconfig issues
The first patch implements what Linus, Takashi and Mark requested: a top-level selector defaulting to 'y' to easily filter all other options and with no impact on code generation. There should be no functionality change and will avoid breaking audio for people using make oldnoconfig.
The rest of the patch series does a more in-depth cleanup. It was tested on Baytrail/Cherrytrail/Skylake platforms with no regressions observed and no reports of any compilation issues with 0-day or randconfig.
The 4th patch is really the most important one, there were nested configs which made no sense to me. I don't know the history which led to such complicated stuff but simpler is better.
The last 3 patches are just clean-ups of the machine driver configs, for some reason there is no consistency in the settings so I tried to apply common sense and use the same rules. At Andy Shevchenko's suggestion, I also replaced the broken dependency on X86_INTEL_LPSS by MFD_INTEL_LPSS for Skylake+ machines, which looks ok but needs to be tested further, hence the RFCv2 status (this change is fine for Chrome, Ubuntu and other distros but better be cautious with a second set of tests with randconfig and on Skylake)
Changes since initial RFC: Removed default n Added help text for HASWELL, BAYTRAIL (legacy) and SKYLAKE options Made top level machine driver selection dependent on INTEL_SST_TOPLEVEL. Added help text for PCI and HIFI2 platforms Replaced X86_INTEL_LPSS by MFD_INTEL_LPSS for Skylake+ devices Fixed a couple of indentation issues
Pierre-Louis Bossart (7): ASoC: Intel: Fix Kconfig with top-level selector ASoC: Intel: Kconfig: Simplify-clarify ACPI/PCI dependencies ASoC: Intel: document what Kconfig options do ASoC: Intel: Fix nested/unnecessary Kconfig dependencies ASoC: Intel: boards: align Kconfig dependencies for Haswell/Broadwell ASoC: Intel: boards: align Kconfig configurations for HiFi2 ASoC: Intel: boards: align/fix SKL/BXT/KBL Kconfigs
sound/soc/intel/Kconfig | 118 +++++++++++++++++++++++-------- sound/soc/intel/boards/Kconfig | 155 ++++++++++++++++++++++------------------- 2 files changed, 172 insertions(+), 101 deletions(-)
Follow network example suggested by Linus, move Intel definitions in if/endif block and clarify in help text which options distro configurations should enable - everything except legacy Baytrail stuff and NOCODEC (test only)
There should be no functionality change - except that sound capabilities are restored when using older configs without any user selection.
Note that the SND_SOC_INTEL_COMMON and SND_SOC_ACPI_INTEL_MATCH config are not filtered out by the top-level selector since they will also be selected with the upcoming SOF drivers. Likewise the machine drivers are filtered by a top-level selector which will allow for selection/reuse of the same machine driver with existing SST or SOF-based platform drivers.
Fixes: f6a118a800e3 ("ASoC: Intel: clarify Kconfig dependencies") Reported-by: Linus Torvalds torvalds@linux-foundation.org Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/Kconfig | 78 +++++++++++++++++++++++++---------- sound/soc/intel/boards/Kconfig | 94 ++++++++++++++++++++++++------------------ 2 files changed, 109 insertions(+), 63 deletions(-)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index 7b49d04e3c60..8a659a3b20ea 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -1,3 +1,18 @@ +config SND_SOC_INTEL_SST_TOPLEVEL + bool "Intel ASoC SST drivers" + default y + depends on X86 || COMPILE_TEST + help + Intel ASoC SST Platform Drivers. If you have a Intel machine that + has an audio controller with a DSP and I2S or DMIC port, then + enable this option by saying Y + + Note that the answer to this question doesn't directly affect the + kernel: saying N will just cause the configurator to skip all + the questions about Intel SST drivers. + +if SND_SOC_INTEL_SST_TOPLEVEL + config SND_SST_IPC tristate
@@ -11,9 +26,6 @@ config SND_SST_IPC_ACPI select SND_SOC_INTEL_SST select IOSF_MBI
-config SND_SOC_INTEL_COMMON - tristate - config SND_SOC_INTEL_SST tristate select SND_SOC_INTEL_SST_ACPI if ACPI @@ -25,47 +37,69 @@ config SND_SOC_INTEL_SST_FIRMWARE config SND_SOC_INTEL_SST_ACPI tristate
-config SND_SOC_ACPI_INTEL_MATCH - tristate - select SND_SOC_ACPI if ACPI - -config SND_SOC_INTEL_SST_TOPLEVEL - tristate "Intel ASoC SST drivers" - depends on X86 || COMPILE_TEST - select SND_SOC_INTEL_MACH - select SND_SOC_INTEL_COMMON - help - Intel ASoC Audio Drivers. If you have a Intel machine that - has audio controller with a DSP and I2S or DMIC port, then - enable this option by saying Y or M - If unsure select "N". - config SND_SOC_INTEL_HASWELL tristate "Intel ASoC SST driver for Haswell/Broadwell" - depends on SND_SOC_INTEL_SST_TOPLEVEL && SND_DMA_SGBUF + depends on SND_DMA_SGBUF depends on DMADEVICES select SND_SOC_INTEL_SST select SND_SOC_INTEL_SST_FIRMWARE + select SND_SOC_INTEL_COMMON + help + If you have a Intel Haswell or Broadwell platform connected to + an I2S codec, then enable this option by saying Y or m. This is + typically used for Chromebooks. This is a recommended option.
config SND_SOC_INTEL_BAYTRAIL tristate "Intel ASoC SST driver for Baytrail (legacy)" - depends on SND_SOC_INTEL_SST_TOPLEVEL depends on DMADEVICES select SND_SOC_INTEL_SST select SND_SOC_INTEL_SST_FIRMWARE + select SND_SOC_INTEL_COMMON + help + If you have a Intel Baytrail platform connected to an I2S codec, + then enable this option by saying Y or m. This was typically used + for Baytrail Chromebooks but this option is now deprecated and is + not recommended, use SND_SST_ATOM_HIFI2_PLATFORM instead.
config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)" - depends on SND_SOC_INTEL_SST_TOPLEVEL && X86 + depends on X86 select SND_SOC_COMPRESS + select SND_SOC_INTEL_COMMON
config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL" - depends on SND_SOC_INTEL_SST_TOPLEVEL && PCI && ACPI + depends on PCI && ACPI select SND_HDA_EXT_CORE select SND_HDA_DSP_LOADER select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST + select SND_SOC_INTEL_COMMON + help + If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/ + GeminiLake or CannonLake platform with the DSP enabled in the BIOS + then enable this option by saying Y or m. + +endif ## SND_SOC_INTEL_SST_TOPLEVEL
# ASoC codec drivers source "sound/soc/intel/boards/Kconfig" + +# configs common to SST and SOF to compile sound/soc/intel/common +# directory and use matching tables + +config SND_SOC_INTEL_COMMON + tristate + select SND_SOC_ACPI_INTEL_MATCH if ACPI + # this option controls the compilation of the sound/soc/intel/common + # directory and is not meant to be selected by the user. It is + # not filtered out on purpose by the top-level selector since + # it will be selected by SST or SOF platform driver options + +config SND_SOC_ACPI_INTEL_MATCH + tristate + select SND_SOC_ACPI if ACPI + # this option controls the compilation of ACPI matching tables and + # helpers and is not meant to be selected by the user. It is not + # filtered out on purpose by the top-level selector since it will + # be selected by SST or SOF platform driver options diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index 6f754708a48c..ce0eb431cafa 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -1,7 +1,16 @@ +if SND_SOC_INTEL_SST_TOPLEVEL config SND_SOC_INTEL_MACH - tristate "Intel Audio machine drivers" - depends on SND_SOC_INTEL_SST_TOPLEVEL - select SND_SOC_ACPI_INTEL_MATCH if ACPI + bool "Intel ASoC machine drivers" + default y + help + Intel ASoC Machine Drivers. If you have a Intel machine that + has an audio controller with a DSP and I2S or DMIC port, then + enable this option by saying Y + + Note that the answer to this question doesn't directly affect the + kernel: saying N will just cause the configurator to skip all + the questions about Intel ASoC machine drivers. +endif
if SND_SOC_INTEL_MACH
@@ -17,103 +26,106 @@ config SND_MFLD_MACHINE Say Y if you have such a device. If unsure select "N".
+if SND_SOC_INTEL_HASWELL + config SND_SOC_INTEL_HASWELL_MACH tristate "ASoC Audio DSP support for Intel Haswell Lynxpoint" depends on X86_INTEL_LPSS && I2C && I2C_DESIGNWARE_PLATFORM - depends on SND_SOC_INTEL_HASWELL select SND_SOC_RT5640 help This adds support for the Lynxpoint Audio DSP on Intel(R) Haswell - Ultrabook platforms. - Say Y if you have such a device. + Ultrabook platforms. This is a recommended option. + Say Y or m if you have such a device. If unsure select "N".
config SND_SOC_INTEL_BDW_RT5677_MACH tristate "ASoC Audio driver for Intel Broadwell with RT5677 codec" depends on X86_INTEL_LPSS && GPIOLIB && I2C - depends on SND_SOC_INTEL_HASWELL select SND_SOC_RT5677 help This adds support for Intel Broadwell platform based boards with - the RT5677 audio codec. + the RT5677 audio codec. This is a recommended option. + Say Y or m if you have such a device. + If unsure select "N".
config SND_SOC_INTEL_BROADWELL_MACH tristate "ASoC Audio DSP support for Intel Broadwell Wildcatpoint" depends on X86_INTEL_LPSS && I2C && I2C_DESIGNWARE_PLATFORM - depends on SND_SOC_INTEL_HASWELL select SND_SOC_RT286 help This adds support for the Wilcatpoint Audio DSP on Intel(R) Broadwell Ultrabook platforms. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N". +endif + +if SND_SOC_INTEL_BAYTRAIL
config SND_SOC_INTEL_BYT_MAX98090_MACH tristate "ASoC Audio driver for Intel Baytrail with MAX98090 codec" depends on X86_INTEL_LPSS && I2C - depends on SND_SST_IPC_ACPI = n - depends on SND_SOC_INTEL_BAYTRAIL select SND_SOC_MAX98090 help This adds audio driver for Intel Baytrail platform based boards - with the MAX98090 audio codec. + with the MAX98090 audio codec. This driver is deprecated, use + SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH instead for better + functionality.
config SND_SOC_INTEL_BYT_RT5640_MACH tristate "ASoC Audio driver for Intel Baytrail with RT5640 codec" depends on X86_INTEL_LPSS && I2C - depends on SND_SST_IPC_ACPI = n - depends on SND_SOC_INTEL_BAYTRAIL select SND_SOC_RT5640 help This adds audio driver for Intel Baytrail platform based boards with the RT5640 audio codec. This driver is deprecated, use SND_SOC_INTEL_BYTCR_RT5640_MACH instead for better functionality.
+endif + +if SND_SST_ATOM_HIFI2_PLATFORM + config SND_SOC_INTEL_BYTCR_RT5640_MACH tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5640 codec" depends on X86 && I2C && ACPI select SND_SOC_RT5640 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR platforms with RT5640 audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BYTCR_RT5651_MACH tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5651 codec" depends on X86 && I2C && ACPI select SND_SOC_RT5651 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR platforms with RT5651 audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_CHT_BSW_RT5672_MACH tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_RT5670 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with RT5672 audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_CHT_BSW_RT5645_MACH tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5645/5650 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_RT5645 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with RT5645/5650 audio codec. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH @@ -121,63 +133,67 @@ config SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_MAX98090 select SND_SOC_TS3A227E - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with MAX98090 audio codec it also can support TI jack chip as aux device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BYT_CHT_DA7213_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail with DA7212/7213 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_DA7213 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail & CherryTrail platforms with DA7212/7213 audio codec. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BYT_CHT_ES8316_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail with ES8316 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_ES8316 - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail & Cherrytrail platforms with ES8316 audio codec. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail platform with no codec (MinnowBoard MAX, Up)" depends on X86_INTEL_LPSS && I2C && ACPI - depends on SND_SST_ATOM_HIFI2_PLATFORM select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for the MinnowBoard Max or Up boards and provides access to I2S signals on the Low-Speed - connector + connector. This is not a recommended option outside of these cases. + It is not intended to be enabled by distros by default. + Say Y or m if you have such a device. + If unsure select "N".
+endif + +if SND_SOC_INTEL_SKYLAKE + config SND_SOC_INTEL_SKL_RT286_MACH tristate "ASoC Audio driver for SKL with RT286 I2S mode" depends on X86 && ACPI && I2C - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_RT286 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI help This adds support for ASoC machine driver for Skylake platforms with RT286 I2S audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. If unsure select "N".
config SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH tristate "ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode" depends on X86_INTEL_LPSS && I2C - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_NAU8825 select SND_SOC_SSM4567 select SND_SOC_DMIC @@ -185,13 +201,12 @@ config SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH help This adds support for ASoC Onboard Codec I2S machine driver. This will create an alsa sound card for NAU88L25 + SSM4567. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH tristate "ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode" depends on X86_INTEL_LPSS && I2C - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_NAU8825 select SND_SOC_MAX98357A select SND_SOC_DMIC @@ -199,13 +214,12 @@ config SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH help This adds support for ASoC Onboard Codec I2S machine driver. This will create an alsa sound card for NAU88L25 + MAX98357A. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH tristate "ASoC Audio driver for Broxton with DA7219 and MAX98357A in I2S Mode" depends on X86 && ACPI && I2C - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_DA7219 select SND_SOC_MAX98357A select SND_SOC_DMIC @@ -214,13 +228,12 @@ config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH help This adds support for ASoC machine driver for Broxton-P platforms with DA7219 + MAX98357A I2S audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_BXT_RT298_MACH tristate "ASoC Audio driver for Broxton with RT298 I2S mode" depends on X86 && ACPI && I2C - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_RT298 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI @@ -228,14 +241,13 @@ config SND_SOC_INTEL_BXT_RT298_MACH help This adds support for ASoC machine driver for Broxton platforms with RT286 I2S audio codec. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH tristate "ASoC Audio driver for KBL with RT5663 and MAX98927 in I2S Mode" depends on X86_INTEL_LPSS && I2C select SND_SOC_INTEL_SST - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_RT5663 select SND_SOC_MAX98927 select SND_SOC_DMIC @@ -243,14 +255,13 @@ config SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH help This adds support for ASoC Onboard Codec I2S machine driver. This will create an alsa sound card for RT5663 + MAX98927. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N".
config SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH tristate "ASoC Audio driver for KBL with RT5663, RT5514 and MAX98927 in I2S Mode" depends on X86_INTEL_LPSS && I2C && SPI select SND_SOC_INTEL_SST - depends on SND_SOC_INTEL_SKYLAKE select SND_SOC_RT5663 select SND_SOC_RT5514 select SND_SOC_RT5514_SPI @@ -259,7 +270,8 @@ config SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH help This adds support for ASoC Onboard Codec I2S machine driver. This will create an alsa sound card for RT5663 + RT5514 + MAX98927. - Say Y if you have such a device. + Say Y or m if you have such a device. This is a recommended option. If unsure select "N". +endif
endif
On Tue, Nov 28, 2017 at 07:45:45PM -0600, Pierre-Louis Bossart wrote:
I am not sure about top level being default to Y...
config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && X86
- depends on X86 select SND_SOC_COMPRESS
- select SND_SOC_INTEL_COMMON
config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && PCI && ACPI
- depends on PCI && ACPI select SND_HDA_EXT_CORE select SND_HDA_DSP_LOADER select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST
- select SND_SOC_INTEL_COMMON
- help
If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
GeminiLake or CannonLake platform with the DSP enabled in the BIOS
then enable this option by saying Y or m.
this is good stuff, helps in improving UX vastly. Btw can we have select ALL machine also as an option for people who dont want to select a specfic one, that one will really help for a better UX
+endif ## SND_SOC_INTEL_SST_TOPLEVEL
# ASoC codec drivers source "sound/soc/intel/boards/Kconfig"
+# configs common to SST and SOF to compile sound/soc/intel/common +# directory and use matching tables
+config SND_SOC_INTEL_COMMON
- tristate
- select SND_SOC_ACPI_INTEL_MATCH if ACPI
common selects only MATCH
- # this option controls the compilation of the sound/soc/intel/common
- # directory and is not meant to be selected by the user. It is
- # not filtered out on purpose by the top-level selector since
- # it will be selected by SST or SOF platform driver options
+config SND_SOC_ACPI_INTEL_MATCH
- tristate
- select SND_SOC_ACPI if ACPI
then why keep common, lets remove one level and have SND_SOC_ACPI_INTEL_MATCH selected. ACPI is must have at top level so we can add depends on that symbol
On Wed, Nov 29, 2017 at 03:57:34PM +0530, Vinod Koul wrote:
On Tue, Nov 28, 2017 at 07:45:45PM -0600, Pierre-Louis Bossart wrote:
I am not sure about top level being default to Y...
This is the same as the handling of the vendor configuration options for ethernet drivers - it doesn't enable any actual code itself, it just makes the configuration options below it visible by default so that people running make oldconfig don't get their drivers turned off.
On 11/29/17 4:27 AM, Vinod Koul wrote:
On Tue, Nov 28, 2017 at 07:45:45PM -0600, Pierre-Louis Bossart wrote:
I am not sure about top level being default to Y...
It's standard procedure apparently, see Linus/Mark/Takashi's emails.
config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && X86
depends on X86 select SND_SOC_COMPRESS
select SND_SOC_INTEL_COMMON
config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && PCI && ACPI
- depends on PCI && ACPI select SND_HDA_EXT_CORE select SND_HDA_DSP_LOADER select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST
- select SND_SOC_INTEL_COMMON
- help
If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
GeminiLake or CannonLake platform with the DSP enabled in the BIOS
then enable this option by saying Y or m.
this is good stuff, helps in improving UX vastly. Btw can we have select ALL machine also as an option for people who dont want to select a specfic one, that one will really help for a better UX
no, we shouldn't select things, especially with the Baytrail legacy which is kept to avoid breaking existing setups but shouldn't be used any longer. And with SOF coming, we may have hybrid configurations with SOF used on Baytrail/Cherrytrail/APL/CNL but SST used on Skylake/Kabylake due to firmware authentication stuff.
+endif ## SND_SOC_INTEL_SST_TOPLEVEL
# ASoC codec drivers source "sound/soc/intel/boards/Kconfig"
+# configs common to SST and SOF to compile sound/soc/intel/common +# directory and use matching tables
+config SND_SOC_INTEL_COMMON
- tristate
- select SND_SOC_ACPI_INTEL_MATCH if ACPI
common selects only MATCH
COMMON is only there to go compile the sound/soc/intel/common directory. That's not very useful indeed but otherwise the Makefile doesn't compile the match tables or the sst-ipc stuff. If you find a better solution I am all ears.
- # this option controls the compilation of the sound/soc/intel/common
- # directory and is not meant to be selected by the user. It is
- # not filtered out on purpose by the top-level selector since
- # it will be selected by SST or SOF platform driver options
+config SND_SOC_ACPI_INTEL_MATCH
- tristate
- select SND_SOC_ACPI if ACPI
then why keep common, lets remove one level and have SND_SOC_ACPI_INTEL_MATCH selected. ACPI is must have at top level so we can add depends on that symbol
we still have platforms which don't depend on ACPI, so we shouldn't take this out.
On Wed, Nov 29, 2017 at 08:52:58AM -0600, Pierre-Louis Bossart wrote:
On 11/29/17 4:27 AM, Vinod Koul wrote:
On Tue, Nov 28, 2017 at 07:45:45PM -0600, Pierre-Louis Bossart wrote:
I am not sure about top level being default to Y...
It's standard procedure apparently, see Linus/Mark/Takashi's emails.
config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && X86
- depends on X86 select SND_SOC_COMPRESS
- select SND_SOC_INTEL_COMMON
config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && PCI && ACPI
- depends on PCI && ACPI select SND_HDA_EXT_CORE select SND_HDA_DSP_LOADER select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST
- select SND_SOC_INTEL_COMMON
- help
If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
GeminiLake or CannonLake platform with the DSP enabled in the BIOS
then enable this option by saying Y or m.
this is good stuff, helps in improving UX vastly. Btw can we have select ALL machine also as an option for people who dont want to select a specfic one, that one will really help for a better UX
no, we shouldn't select things, especially with the Baytrail legacy which is kept to avoid breaking existing setups but shouldn't be used any longer. And with SOF coming, we may have hybrid configurations with SOF used on Baytrail/Cherrytrail/APL/CNL but SST used on Skylake/Kabylake due to firmware authentication stuff.
Okay I am checking this out.
Btw you need to rebase this series I wasn't able to apply to mark/intel/topic So I grabbed the branch from your github tree. Assuming I have the right branch (topic/fix-kconfig)
At top level UX is bit confusing:
[ ] Intel ASoC SST drivers [*] Intel ASoC machine drivers
And selecting first symbol shows me the platforms and once I select platform then machines appear under second menu. Now this is really not a great way from UX. Why are we adding platforms selectable? We might be able to simplify this by getting rid of first set and let machine then select Platfroms specfied.
[*] Intel ASoC SST drivers < > Intel ASoC SST driver for Haswell/Broadwell (NEW) < > Intel ASoC SST driver for Baytrail (legacy) (NEW) < > Intel ASoC SST driver for PCI HiFi2 platforms (Medfield, Merrifield) (NEW) < > Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail) (NEW) <*> Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL [*] Intel ASoC machine drivers < > ASoC Audio driver for SKL with RT286 I2S mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode (NEW)
If we still want both I would like the machine to appear below the respective platform, in above example, I would like to see:
[*] Intel ASoC SST drivers < > Intel ASoC SST driver for Haswell/Broadwell (NEW) < > Intel ASoC SST driver for Baytrail (legacy) (NEW) < > Intel ASoC SST driver for PCI HiFi2 platforms (Medfield, Merrifield) (NEW) < > Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail) (NEW) <*> Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL < > ASoC Audio driver for SKL with RT286 I2S mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode (NEW)
Then you can get rid of global mach symbol and select platform and then respective machine and better UX :).
+endif ## SND_SOC_INTEL_SST_TOPLEVEL # ASoC codec drivers source "sound/soc/intel/boards/Kconfig"
+# configs common to SST and SOF to compile sound/soc/intel/common +# directory and use matching tables
+config SND_SOC_INTEL_COMMON
- tristate
- select SND_SOC_ACPI_INTEL_MATCH if ACPI
common selects only MATCH
COMMON is only there to go compile the sound/soc/intel/common directory. That's not very useful indeed but otherwise the Makefile doesn't compile the match tables or the sst-ipc stuff. If you find a better solution I am all ears.
Coming to this topic (my original intention to check this), I found that common symbol is not doing anything expect adding common directory, which is not really needed as we have individual bits for files, so I kept this but removed the match one.
-- >8 --
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index dee731d42634..33a05aa2cf32 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -99,8 +99,4 @@ source "sound/soc/intel/boards/Kconfig"
config SND_SOC_INTEL_COMMON tristate - select SND_SOC_ACPI_INTEL_MATCH if ACPI - -config SND_SOC_ACPI_INTEL_MATCH - tristate - select SND_SOC_ACPI if ACPI + depends on ACPI diff --git a/sound/soc/intel/Makefile b/sound/soc/intel/Makefile index b973d457e834..8160520fd74c 100644 --- a/sound/soc/intel/Makefile +++ b/sound/soc/intel/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 # Core support -obj-$(CONFIG_SND_SOC_INTEL_COMMON) += common/ +obj-$(CONFIG_SND_SOC) += common/
# Platform Support obj-$(CONFIG_SND_SOC_INTEL_HASWELL) += haswell/ diff --git a/sound/soc/intel/common/Makefile b/sound/soc/intel/common/Makefile index 7379d8830c39..92c66c47eb78 100644 --- a/sound/soc/intel/common/Makefile +++ b/sound/soc/intel/common/Makefile @@ -8,4 +8,4 @@ snd-soc-acpi-intel-match-objs := soc-acpi-intel-byt-match.o soc-acpi-intel-cht-m obj-$(CONFIG_SND_SOC_INTEL_SST) += snd-soc-sst-dsp.o snd-soc-sst-ipc.o obj-$(CONFIG_SND_SOC_INTEL_SST_ACPI) += snd-soc-sst-acpi.o obj-$(CONFIG_SND_SOC_INTEL_SST_FIRMWARE) += snd-soc-sst-firmware.o -obj-$(CONFIG_SND_SOC_ACPI_INTEL_MATCH) += snd-soc-acpi-intel-match.o +obj-$(CONFIG_SND_SOC_INTEL_COMMON) += snd-soc-acpi-intel-match.o
-- >8 --
This way we have one lesser symbol to manage :) I am okay if you want to keep match and remove common.
- # this option controls the compilation of the sound/soc/intel/common
- # directory and is not meant to be selected by the user. It is
- # not filtered out on purpose by the top-level selector since
- # it will be selected by SST or SOF platform driver options
+config SND_SOC_ACPI_INTEL_MATCH
- tristate
- select SND_SOC_ACPI if ACPI
then why keep common, lets remove one level and have SND_SOC_ACPI_INTEL_MATCH selected. ACPI is must have at top level so we can add depends on that symbol
we still have platforms which don't depend on ACPI, so we shouldn't take this out.
For the controllers which are PCI only, yes. But as a platform we won't boot without ACPI :) so take your pick!
On 11/30/17 6:24 AM, Vinod Koul wrote:
On Wed, Nov 29, 2017 at 08:52:58AM -0600, Pierre-Louis Bossart wrote:
On 11/29/17 4:27 AM, Vinod Koul wrote:
On Tue, Nov 28, 2017 at 07:45:45PM -0600, Pierre-Louis Bossart wrote:
I am not sure about top level being default to Y...
It's standard procedure apparently, see Linus/Mark/Takashi's emails.
config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && X86
- depends on X86 select SND_SOC_COMPRESS
- select SND_SOC_INTEL_COMMON config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL"
- depends on SND_SOC_INTEL_SST_TOPLEVEL && PCI && ACPI
- depends on PCI && ACPI select SND_HDA_EXT_CORE select SND_HDA_DSP_LOADER select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST
- select SND_SOC_INTEL_COMMON
- help
If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
GeminiLake or CannonLake platform with the DSP enabled in the BIOS
then enable this option by saying Y or m.
this is good stuff, helps in improving UX vastly. Btw can we have select ALL machine also as an option for people who dont want to select a specfic one, that one will really help for a better UX
no, we shouldn't select things, especially with the Baytrail legacy which is kept to avoid breaking existing setups but shouldn't be used any longer. And with SOF coming, we may have hybrid configurations with SOF used on Baytrail/Cherrytrail/APL/CNL but SST used on Skylake/Kabylake due to firmware authentication stuff.
Okay I am checking this out.
Btw you need to rebase this series I wasn't able to apply to mark/intel/topic So I grabbed the branch from your github tree. Assuming I have the right branch (topic/fix-kconfig)
I rebased against Mark's for-next branch on Tuesday?
At top level UX is bit confusing:
[ ] Intel ASoC SST drivers [*] Intel ASoC machine drivers
I don't know how you reached this since there is a dependency on the first one. Is this a real case you've seen, it's not supposed to happen.
I just tested and the second line is indeed filtered out if the first one is not selected. Can you please check on your side?
The opposite can happen though if the user explicitly disables the compilation of machine drivers
[*] Intel ASoC SST drivers [ ] Intel ASoC machine drivers
not sure if there's a way or need to prevent this though?
And selecting first symbol shows me the platforms and once I select platform then machines appear under second menu. Now this is really not a great way from UX. Why are we adding platforms selectable? We might be able to simplify this by getting rid of first set and let machine then select Platfroms specfied.
No. This is done so that I can have alternate platform drivers based on SOF and still share the machine drivers. The selection of machine first also leads to multiple complications mixing Intel and board level.
[*] Intel ASoC SST drivers < > Intel ASoC SST driver for Haswell/Broadwell (NEW) < > Intel ASoC SST driver for Baytrail (legacy) (NEW) < > Intel ASoC SST driver for PCI HiFi2 platforms (Medfield, Merrifield) (NEW) < > Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail) (NEW) <*> Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL [*] Intel ASoC machine drivers < > ASoC Audio driver for SKL with RT286 I2S mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode (NEW)
If we still want both I would like the machine to appear below the respective platform, in above example, I would like to see:
[*] Intel ASoC SST drivers < > Intel ASoC SST driver for Haswell/Broadwell (NEW) < > Intel ASoC SST driver for Baytrail (legacy) (NEW) < > Intel ASoC SST driver for PCI HiFi2 platforms (Medfield, Merrifield) (NEW) < > Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail) (NEW) <*> Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL < > ASoC Audio driver for SKL with RT286 I2S mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode (NEW) < > ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode (NEW)
Then you can get rid of global mach symbol and select platform and then respective machine and better UX :).
And how is this going to look when I add SOF? I'll have to duplicate the machine drivers entry?
+endif ## SND_SOC_INTEL_SST_TOPLEVEL # ASoC codec drivers source "sound/soc/intel/boards/Kconfig"
+# configs common to SST and SOF to compile sound/soc/intel/common +# directory and use matching tables
+config SND_SOC_INTEL_COMMON
- tristate
- select SND_SOC_ACPI_INTEL_MATCH if ACPI
common selects only MATCH
COMMON is only there to go compile the sound/soc/intel/common directory. That's not very useful indeed but otherwise the Makefile doesn't compile the match tables or the sst-ipc stuff. If you find a better solution I am all ears.
Coming to this topic (my original intention to check this), I found that common symbol is not doing anything expect adding common directory, which is not really needed as we have individual bits for files, so I kept this but removed the match one.
I really don't get what you are trying to do, see below.
-- >8 --
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index dee731d42634..33a05aa2cf32 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -99,8 +99,4 @@ source "sound/soc/intel/boards/Kconfig"
config SND_SOC_INTEL_COMMON tristate
select SND_SOC_ACPI_INTEL_MATCH if ACPI
-config SND_SOC_ACPI_INTEL_MATCH
tristate
select SND_SOC_ACPI if ACPI
depends on ACPI
diff --git a/sound/soc/intel/Makefile b/sound/soc/intel/Makefile index b973d457e834..8160520fd74c 100644 --- a/sound/soc/intel/Makefile +++ b/sound/soc/intel/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 # Core support -obj-$(CONFIG_SND_SOC_INTEL_COMMON) += common/ +obj-$(CONFIG_SND_SOC) += common/
# Platform Support obj-$(CONFIG_SND_SOC_INTEL_HASWELL) += haswell/ diff --git a/sound/soc/intel/common/Makefile b/sound/soc/intel/common/Makefile index 7379d8830c39..92c66c47eb78 100644 --- a/sound/soc/intel/common/Makefile +++ b/sound/soc/intel/common/Makefile @@ -8,4 +8,4 @@ snd-soc-acpi-intel-match-objs := soc-acpi-intel-byt-match.o soc-acpi-intel-cht-m obj-$(CONFIG_SND_SOC_INTEL_SST) += snd-soc-sst-dsp.o snd-soc-sst-ipc.o obj-$(CONFIG_SND_SOC_INTEL_SST_ACPI) += snd-soc-sst-acpi.o obj-$(CONFIG_SND_SOC_INTEL_SST_FIRMWARE) += snd-soc-sst-firmware.o -obj-$(CONFIG_SND_SOC_ACPI_INTEL_MATCH) += snd-soc-acpi-intel-match.o +obj-$(CONFIG_SND_SOC_INTEL_COMMON) += snd-soc-acpi-intel-match.o
not very elegant, is it?
-- >8 --
This way we have one lesser symbol to manage :) I am okay if you want to keep match and remove common.
if that's possible yes, i don't mind removing the common part and moving the CONFIG_SND_SOC_ACPI_INTEL_MATCH to each platform where it makes sense. In my initial trial the COMMON symbol was required, if it can be removed then fine.
- # this option controls the compilation of the sound/soc/intel/common
- # directory and is not meant to be selected by the user. It is
- # not filtered out on purpose by the top-level selector since
- # it will be selected by SST or SOF platform driver options
+config SND_SOC_ACPI_INTEL_MATCH
- tristate
- select SND_SOC_ACPI if ACPI
then why keep common, lets remove one level and have SND_SOC_ACPI_INTEL_MATCH selected. ACPI is must have at top level so we can add depends on that symbol
we still have platforms which don't depend on ACPI, so we shouldn't take this out.
For the controllers which are PCI only, yes. But as a platform we won't boot without ACPI :) so take your pick!
I was referring to Medfield/Merrifield. As I mentioned it the fate of those platforms in to be determined but as of today your assertions that all platforms need ACPI is not correct.
PCI/ACPI selections should not happen in Kconfig for machine drivers, move to SOC selections.
Add distinction between PCI and ACPI HiFi2 platforms and help text.
There should be no functionality change.
The PCI-based platforms may be removed at some point since Medfield is not really supported by anyone, and with Edison now defunct support for Merrifield/Edison is to be determined.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/Kconfig | 27 +++++++++++++++++++++++---- sound/soc/intel/boards/Kconfig | 14 ++++---------- 2 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index 8a659a3b20ea..a982bc2fde62 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -39,7 +39,7 @@ config SND_SOC_INTEL_SST_ACPI
config SND_SOC_INTEL_HASWELL tristate "Intel ASoC SST driver for Haswell/Broadwell" - depends on SND_DMA_SGBUF + depends on SND_DMA_SGBUF && ACPI depends on DMADEVICES select SND_SOC_INTEL_SST select SND_SOC_INTEL_SST_FIRMWARE @@ -51,7 +51,7 @@ config SND_SOC_INTEL_HASWELL
config SND_SOC_INTEL_BAYTRAIL tristate "Intel ASoC SST driver for Baytrail (legacy)" - depends on DMADEVICES + depends on DMADEVICES && ACPI select SND_SOC_INTEL_SST select SND_SOC_INTEL_SST_FIRMWARE select SND_SOC_INTEL_COMMON @@ -61,11 +61,30 @@ config SND_SOC_INTEL_BAYTRAIL for Baytrail Chromebooks but this option is now deprecated and is not recommended, use SND_SST_ATOM_HIFI2_PLATFORM instead.
+config SND_SST_ATOM_HIFI2_PLATFORM_PCI + tristate "Intel ASoC SST driver for PCI HiFi2 platforms (Medfield, Merrifield)" + depends on X86 && PCI + select SND_SST_IPC_PCI + select SND_SOC_COMPRESS + select SND_SOC_INTEL_COMMON + help + If you have a Intel Medfield or Merrifield/Edison platform, then + enable this option by saying Y or m. Distros will typically not + enable this option: Medfield devices are not available to + developers and while Merrifield/Edison can run a mainline kernel with + limited functionality it will require a firmware file which + is not in the standard firmware tree + config SND_SST_ATOM_HIFI2_PLATFORM - tristate "Intel ASoC SST driver for HiFi2 platforms (*field, *trail)" - depends on X86 + tristate "Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail)" + depends on X86 && ACPI + select SND_SST_IPC_ACPI select SND_SOC_COMPRESS select SND_SOC_INTEL_COMMON + help + If you have a Intel Baytrail or Cherrytrail platform with an I2S + codec, then enable this option by saying Y or m. This is a + recommended option
config SND_SOC_INTEL_SKYLAKE tristate "Intel ASoC SST driver for SKL/BXT/KBL/GLK/CNL" diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index ce0eb431cafa..df41a6016217 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -14,18 +14,20 @@ endif
if SND_SOC_INTEL_MACH
+if SND_SST_ATOM_HIFI2_PLATFORM_PCI + config SND_MFLD_MACHINE tristate "SOC Machine Audio driver for Intel Medfield MID platform" depends on INTEL_SCU_IPC select SND_SOC_SN95031 - depends on SND_SST_ATOM_HIFI2_PLATFORM - select SND_SST_IPC_PCI help This adds support for ASoC machine driver for Intel(R) MID Medfield platform used as alsa device in audio substem in Intel(R) MID devices Say Y if you have such a device. If unsure select "N".
+endif + if SND_SOC_INTEL_HASWELL
config SND_SOC_INTEL_HASWELL_MACH @@ -88,7 +90,6 @@ config SND_SOC_INTEL_BYTCR_RT5640_MACH tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5640 codec" depends on X86 && I2C && ACPI select SND_SOC_RT5640 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR platforms with RT5640 audio codec. @@ -99,7 +100,6 @@ config SND_SOC_INTEL_BYTCR_RT5651_MACH tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5651 codec" depends on X86 && I2C && ACPI select SND_SOC_RT5651 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR platforms with RT5651 audio codec. @@ -110,7 +110,6 @@ config SND_SOC_INTEL_CHT_BSW_RT5672_MACH tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_RT5670 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with RT5672 audio codec. @@ -121,7 +120,6 @@ config SND_SOC_INTEL_CHT_BSW_RT5645_MACH tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5645/5650 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_RT5645 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with RT5645/5650 audio codec. @@ -133,7 +131,6 @@ config SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_MAX98090 select SND_SOC_TS3A227E - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with MAX98090 audio codec it also can support TI jack chip as aux device. @@ -144,7 +141,6 @@ config SND_SOC_INTEL_BYT_CHT_DA7213_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail with DA7212/7213 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_DA7213 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail & CherryTrail platforms with DA7212/7213 audio codec. @@ -155,7 +151,6 @@ config SND_SOC_INTEL_BYT_CHT_ES8316_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail with ES8316 codec" depends on X86_INTEL_LPSS && I2C && ACPI select SND_SOC_ES8316 - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for Intel(R) Baytrail & Cherrytrail platforms with ES8316 audio codec. @@ -165,7 +160,6 @@ config SND_SOC_INTEL_BYT_CHT_ES8316_MACH config SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail platform with no codec (MinnowBoard MAX, Up)" depends on X86_INTEL_LPSS && I2C && ACPI - select SND_SST_IPC_ACPI help This adds support for ASoC machine driver for the MinnowBoard Max or Up boards and provides access to I2S signals on the Low-Speed
Document in comments what the options are supposed to mean, before clean-up in next patch.
No functionality change here.
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/Kconfig | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index a982bc2fde62..2542e71a0e6a 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -15,16 +15,26 @@ if SND_SOC_INTEL_SST_TOPLEVEL
config SND_SST_IPC tristate + # This option controls the IPC core for HiFi2 platforms
config SND_SST_IPC_PCI tristate select SND_SST_IPC + # This option controls the PCI-based IPC for HiFi2 platforms + # (Medfield, Merrifield).
config SND_SST_IPC_ACPI tristate select SND_SST_IPC select SND_SOC_INTEL_SST select IOSF_MBI + # This option controls the ACPI-based IPC for HiFi2 platforms + # (Baytrail, Cherrytrail) + +config SND_SOC_INTEL_SST_ACPI + tristate + # This option controls ACPI-based probing on Haswell/Broadwell/ + # Baytrail legacy and will be set when these platforms are enabled
config SND_SOC_INTEL_SST tristate @@ -33,9 +43,8 @@ config SND_SOC_INTEL_SST config SND_SOC_INTEL_SST_FIRMWARE tristate select DW_DMAC_CORE - -config SND_SOC_INTEL_SST_ACPI - tristate + # This option controls firmware download on Haswell/Broadwell/ + # Baytrail legacy and will be set when these platforms are enabled
config SND_SOC_INTEL_HASWELL tristate "Intel ASoC SST driver for Haswell/Broadwell"
This patch fixes a number of issues: 1. IOSF_MBI is only needed for byt-cr detection, which is only supported on Baytrail/Cherrytrail, move to HiFi2 config
2. SND_SOC_INTEL_SST should not select SND_SOC_INTEL_SST_ACPI, the latter config is only valid for Haswell/Baytrail legacy but not needed by Skylake
3. SND_SST_IPC_ACPI, used only by the atom/sst driver, should not select SND_SOC_INTEL_SST, none of the code under common/sst*.c is used
This nesting of configs really makes no sense, it's easier to maintain if for each platform one can control what is strictly required.
Compiled-tested with each of Haswell, Baytrail legacy, HiFi2, SKL cases selected independently. 0-day and explicit randconfig tests did not report additional issues and no functionality loss was observed in Intel tests on HIFI2 and SKYLAKE platforms
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index 2542e71a0e6a..b8dcb49f16b2 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -26,8 +26,6 @@ config SND_SST_IPC_PCI config SND_SST_IPC_ACPI tristate select SND_SST_IPC - select SND_SOC_INTEL_SST - select IOSF_MBI # This option controls the ACPI-based IPC for HiFi2 platforms # (Baytrail, Cherrytrail)
@@ -38,7 +36,6 @@ config SND_SOC_INTEL_SST_ACPI
config SND_SOC_INTEL_SST tristate - select SND_SOC_INTEL_SST_ACPI if ACPI
config SND_SOC_INTEL_SST_FIRMWARE tristate @@ -51,6 +48,7 @@ config SND_SOC_INTEL_HASWELL depends on SND_DMA_SGBUF && ACPI depends on DMADEVICES select SND_SOC_INTEL_SST + select SND_SOC_INTEL_SST_ACPI select SND_SOC_INTEL_SST_FIRMWARE select SND_SOC_INTEL_COMMON help @@ -62,6 +60,7 @@ config SND_SOC_INTEL_BAYTRAIL tristate "Intel ASoC SST driver for Baytrail (legacy)" depends on DMADEVICES && ACPI select SND_SOC_INTEL_SST + select SND_SOC_INTEL_SST_ACPI select SND_SOC_INTEL_SST_FIRMWARE select SND_SOC_INTEL_COMMON help @@ -88,6 +87,7 @@ config SND_SST_ATOM_HIFI2_PLATFORM tristate "Intel ASoC SST driver for ACPI HiFi2 platforms (Baytrail, Cherrytrail)" depends on X86 && ACPI select SND_SST_IPC_ACPI + select IOSF_MBI select SND_SOC_COMPRESS select SND_SOC_INTEL_COMMON help
Make sure that the same I2C/I2C_DESIGNWARE_PLATFORM are selected. The latter might actually need to be moved to the SOC side of things, it really has no place in a machine driver dependency
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/boards/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index df41a6016217..a1e169c86526 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -42,7 +42,7 @@ config SND_SOC_INTEL_HASWELL_MACH
config SND_SOC_INTEL_BDW_RT5677_MACH tristate "ASoC Audio driver for Intel Broadwell with RT5677 codec" - depends on X86_INTEL_LPSS && GPIOLIB && I2C + depends on X86_INTEL_LPSS && I2C && I2C_DESIGNWARE_PLATFORM && GPIOLIB select SND_SOC_RT5677 help This adds support for Intel Broadwell platform based boards with
On Tue, Nov 28, 2017 at 07:45:49PM -0600, Pierre-Louis Bossart wrote:
Make sure that the same I2C/I2C_DESIGNWARE_PLATFORM are selected. The latter might actually need to be moved to the SOC side of things, it really has no place in a machine driver dependency
not really, given that we will come with platforms where I2C may not be used for audio, we should keep this in machine or better move to codecs as it belongs to them, machine being second best :)
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
sound/soc/intel/boards/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index df41a6016217..a1e169c86526 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -42,7 +42,7 @@ config SND_SOC_INTEL_HASWELL_MACH
config SND_SOC_INTEL_BDW_RT5677_MACH tristate "ASoC Audio driver for Intel Broadwell with RT5677 codec"
- depends on X86_INTEL_LPSS && GPIOLIB && I2C
- depends on X86_INTEL_LPSS && I2C && I2C_DESIGNWARE_PLATFORM && GPIOLIB select SND_SOC_RT5677 help This adds support for Intel Broadwell platform based boards with
-- 2.14.1
Make sure all the configs are aligned Also add the missing dependencies on SOC_ACPI stuff used to fix DAI names based on HID and fix a couple of indentation issues
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/boards/Kconfig | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index a1e169c86526..850b5ef9265e 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -87,29 +87,32 @@ endif if SND_SST_ATOM_HIFI2_PLATFORM
config SND_SOC_INTEL_BYTCR_RT5640_MACH - tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5640 codec" - depends on X86 && I2C && ACPI + tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5640 codec" + depends on X86_INTEL_LPSS && I2C && ACPI + select CONFIG_SND_SOC_ACPI select SND_SOC_RT5640 help - This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR - platforms with RT5640 audio codec. - Say Y or m if you have such a device. This is a recommended option. - If unsure select "N". + This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR + platforms with RT5640 audio codec. + Say Y or m if you have such a device. This is a recommended option. + If unsure select "N".
config SND_SOC_INTEL_BYTCR_RT5651_MACH - tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5651 codec" - depends on X86 && I2C && ACPI + tristate "ASoC Audio driver for Intel Baytrail and Baytrail-CR with RT5651 codec" + depends on X86_INTEL_LPSS && I2C && ACPI + select CONFIG_SND_SOC_ACPI select SND_SOC_RT5651 help - This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR - platforms with RT5651 audio codec. - Say Y or m if you have such a device. This is a recommended option. - If unsure select "N". + This adds support for ASoC machine driver for Intel(R) Baytrail and Baytrail-CR + platforms with RT5651 audio codec. + Say Y or m if you have such a device. This is a recommended option. + If unsure select "N".
config SND_SOC_INTEL_CHT_BSW_RT5672_MACH - tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec" + tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec" depends on X86_INTEL_LPSS && I2C && ACPI - select SND_SOC_RT5670 + select CONFIG_SND_SOC_ACPI + select SND_SOC_RT5670 help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell platforms with RT5672 audio codec. @@ -119,6 +122,7 @@ config SND_SOC_INTEL_CHT_BSW_RT5672_MACH config SND_SOC_INTEL_CHT_BSW_RT5645_MACH tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5645/5650 codec" depends on X86_INTEL_LPSS && I2C && ACPI + select CONFIG_SND_SOC_ACPI select SND_SOC_RT5645 help This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell @@ -140,6 +144,7 @@ config SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH config SND_SOC_INTEL_BYT_CHT_DA7213_MACH tristate "ASoC Audio driver for Intel Baytrail & Cherrytrail with DA7212/7213 codec" depends on X86_INTEL_LPSS && I2C && ACPI + select CONFIG_SND_SOC_ACPI select SND_SOC_DA7213 help This adds support for ASoC machine driver for Intel(R) Baytrail & CherryTrail
No reason why SND_SOC_INTEL_SST should be set here. Also make sure same dependencies are used everywhere (only last one has SPI in addition). Replace X86_INTEL_LPSS by MFD_INTEL_LPSS since the former makes no sense for Skylake+ devices
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- sound/soc/intel/boards/Kconfig | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig index 850b5ef9265e..ded21a093587 100644 --- a/sound/soc/intel/boards/Kconfig +++ b/sound/soc/intel/boards/Kconfig @@ -180,7 +180,7 @@ if SND_SOC_INTEL_SKYLAKE
config SND_SOC_INTEL_SKL_RT286_MACH tristate "ASoC Audio driver for SKL with RT286 I2S mode" - depends on X86 && ACPI && I2C + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_RT286 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI @@ -192,7 +192,7 @@ config SND_SOC_INTEL_SKL_RT286_MACH
config SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH tristate "ASoC Audio driver for SKL with NAU88L25 and SSM4567 in I2S Mode" - depends on X86_INTEL_LPSS && I2C + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_NAU8825 select SND_SOC_SSM4567 select SND_SOC_DMIC @@ -205,7 +205,7 @@ config SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH
config SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH tristate "ASoC Audio driver for SKL with NAU88L25 and MAX98357A in I2S Mode" - depends on X86_INTEL_LPSS && I2C + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_NAU8825 select SND_SOC_MAX98357A select SND_SOC_DMIC @@ -218,7 +218,7 @@ config SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH
config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH tristate "ASoC Audio driver for Broxton with DA7219 and MAX98357A in I2S Mode" - depends on X86 && ACPI && I2C + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_DA7219 select SND_SOC_MAX98357A select SND_SOC_DMIC @@ -232,7 +232,7 @@ config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH
config SND_SOC_INTEL_BXT_RT298_MACH tristate "ASoC Audio driver for Broxton with RT298 I2S mode" - depends on X86 && ACPI && I2C + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_RT298 select SND_SOC_DMIC select SND_SOC_HDAC_HDMI @@ -245,8 +245,7 @@ config SND_SOC_INTEL_BXT_RT298_MACH
config SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH tristate "ASoC Audio driver for KBL with RT5663 and MAX98927 in I2S Mode" - depends on X86_INTEL_LPSS && I2C - select SND_SOC_INTEL_SST + depends on MFD_INTEL_LPSS && I2C && ACPI select SND_SOC_RT5663 select SND_SOC_MAX98927 select SND_SOC_DMIC @@ -259,8 +258,7 @@ config SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH
config SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH tristate "ASoC Audio driver for KBL with RT5663, RT5514 and MAX98927 in I2S Mode" - depends on X86_INTEL_LPSS && I2C && SPI - select SND_SOC_INTEL_SST + depends on MFD_INTEL_LPSS && I2C && SPI && ACPI select SND_SOC_RT5663 select SND_SOC_RT5514 select SND_SOC_RT5514_SPI
participants (3)
-
Mark Brown
-
Pierre-Louis Bossart
-
Vinod Koul