soc/intel/.../hda: Add and use config for initialization of HDA codecs

Config option SOC_INTEL_COMMON_BLOCK_HDA is currently used for
initialization of HDA codecs only. This prevents adding of any static
devices under the HDA device node. However, there can be boards which
want to add devices under HDA node (e.g. nocturne that wants to
provide DMIC properties to OS) without performing any codec
initialization using the HDA. This change:

1. Adds a new config option SOC_INTEL_COMMON_BLOCK_HDA_VERB that can
be set explicitly by the boards that want to perform codec
initialization.

2. Uses newly added config option is used to guard the initialization
functions for the codec. Rest of the device operations can still be
used by all the other boards without having to use HDA codec
initialization.

3. Selects the newly added option SOC_INTEL_COMMON_BLOCK_HDA_VERB in
kblrvp which is the only board enabling HDA codec initialization
using common block code.

4. Selects original config SOC_INTEL_COMMON_BLOCK_HDA for skylake SoC.

Above changes need to be bundled and pushed in as a single change in
order to avoid breaking existing users.

BUG=b:112888584

Change-Id: Ie6f39c13a801833b283120a2d4b6f6175688999c
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/28806
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Furquan Shaikh 2018-09-29 23:31:04 -07:00
parent 3b6bddafe7
commit 31bff01a72
4 changed files with 12 additions and 1 deletions

View File

@ -8,7 +8,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select HAVE_ACPI_TABLES select HAVE_ACPI_TABLES
select HAVE_OPTION_TABLE select HAVE_OPTION_TABLE
select HAVE_SMI_HANDLER select HAVE_SMI_HANDLER
select SOC_INTEL_COMMON_BLOCK_HDA if BOARD_INTEL_KBLRVP3 || BOARD_INTEL_KBLRVP7 select SOC_INTEL_COMMON_BLOCK_HDA_VERB if BOARD_INTEL_KBLRVP3 || BOARD_INTEL_KBLRVP7
select SOC_INTEL_SKYLAKE select SOC_INTEL_SKYLAKE
select SKYLAKE_SOC_PCH_H if BOARD_INTEL_KBLRVP8 select SKYLAKE_SOC_PCH_H if BOARD_INTEL_KBLRVP8
select MAINBOARD_USES_FSP2_0 select MAINBOARD_USES_FSP2_0

View File

@ -2,3 +2,9 @@ config SOC_INTEL_COMMON_BLOCK_HDA
bool bool
help help
Intel Processor common High Definition Audio driver support Intel Processor common High Definition Audio driver support
config SOC_INTEL_COMMON_BLOCK_HDA_VERB
bool
depends on SOC_INTEL_COMMON_BLOCK_HDA
help
Enable initialization of HDA codecs.

View File

@ -22,6 +22,7 @@
#include <soc/intel/common/hda_verb.h> #include <soc/intel/common/hda_verb.h>
#include <soc/ramstage.h> #include <soc/ramstage.h>
#if IS_ENABLED(CONFIG_SOC_INTEL_COMMON_BLOCK_HDA_VERB)
static void codecs_init(uint8_t *base, u32 codec_mask) static void codecs_init(uint8_t *base, u32 codec_mask)
{ {
int i; int i;
@ -57,12 +58,15 @@ static void hda_init(struct device *dev)
codecs_init(base, codec_mask); codecs_init(base, codec_mask);
} }
} }
#endif
static struct device_operations hda_ops = { static struct device_operations hda_ops = {
.read_resources = &pci_dev_read_resources, .read_resources = &pci_dev_read_resources,
.set_resources = &pci_dev_set_resources, .set_resources = &pci_dev_set_resources,
.enable_resources = &pci_dev_enable_resources, .enable_resources = &pci_dev_enable_resources,
#if IS_ENABLED(CONFIG_SOC_INTEL_COMMON_BLOCK_HDA_VERB)
.init = &hda_init, .init = &hda_init,
#endif
.ops_pci = &pci_dev_ops_pci, .ops_pci = &pci_dev_ops_pci,
}; };

View File

@ -61,6 +61,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_BLOCK_GPIO_LEGACY_MACROS select SOC_INTEL_COMMON_BLOCK_GPIO_LEGACY_MACROS
select SOC_INTEL_COMMON_BLOCK_GPIO_PADCFG_PADTOL select SOC_INTEL_COMMON_BLOCK_GPIO_PADCFG_PADTOL
select SOC_INTEL_COMMON_BLOCK_GSPI select SOC_INTEL_COMMON_BLOCK_GSPI
select SOC_INTEL_COMMON_BLOCK_HDA
select SOC_INTEL_COMMON_BLOCK_SA select SOC_INTEL_COMMON_BLOCK_SA
select SOC_INTEL_COMMON_BLOCK_SGX select SOC_INTEL_COMMON_BLOCK_SGX
select SOC_INTEL_COMMON_BLOCK_SMM select SOC_INTEL_COMMON_BLOCK_SMM