mainboard/google/reef: Add proper DMIC endpoints based on DMIC config pin

Reef board uses GPIO_17 as DMIC config pin.
This pin distinguishes board with Quad DMIC's or Mono DMIC.
This patch adds necessary DMIC endpoints to support either of
those configurations.

CQ-DEPEND=CL:*304339,CL:409774

BUG=chrome-os-partner:56918
BRANCH=none
TEST=Verify Mono and Quad Channel DMIC record

Change-Id: I5b2825b5f39f8962985a129f8ec65265fb18f0b2
Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>
Reviewed-on: https://review.coreboot.org/17158
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
This commit is contained in:
Sathyanarayana Nujella 2016-10-26 17:35:39 -07:00 committed by Martin Roth
parent 37d15c6cab
commit b7d44dfcf5
3 changed files with 18 additions and 3 deletions

View file

@ -91,7 +91,9 @@ config UART_FOR_CONSOLE
config INCLUDE_NHLT_BLOBS config INCLUDE_NHLT_BLOBS
bool "Include blobs for audio." bool "Include blobs for audio."
select NHLT_DMIC_1CH_16B
select NHLT_DMIC_2CH_16B select NHLT_DMIC_2CH_16B
select NHLT_DMIC_4CH_16B
select NHLT_DA7219 select NHLT_DA7219
select NHLT_MAX98357 select NHLT_MAX98357

View file

@ -45,4 +45,7 @@
#define MEM_CONFIG1 GPIO_102 #define MEM_CONFIG1 GPIO_102
#define MEM_CONFIG0 GPIO_101 #define MEM_CONFIG0 GPIO_101
/* DMIC_CONFIG_PIN: High for 1-DMIC and low for 4-DMIC's */
#define DMIC_CONFIG_PIN GPIO_17
#endif /* BASEBOARD_GPIO_H */ #endif /* BASEBOARD_GPIO_H */

View file

@ -17,13 +17,23 @@
#include <console/console.h> #include <console/console.h>
#include <nhlt.h> #include <nhlt.h>
#include <soc/nhlt.h> #include <soc/nhlt.h>
#include <gpio.h>
#include <baseboard/gpio.h>
void __attribute__((weak)) variant_nhlt_init(struct nhlt *nhlt) void __attribute__((weak)) variant_nhlt_init(struct nhlt *nhlt)
{ {
/* 2 Channel DMIC array. */ if (gpio_get(DMIC_CONFIG_PIN) == 1) {
/* 1-dmic configuration */
if (!nhlt_soc_add_dmic_array(nhlt, 1))
printk(BIOS_ERR, "Added 1CH DMIC array.\n");
} else {
/* 4-dmic configuration */
if (!nhlt_soc_add_dmic_array(nhlt, 2)) if (!nhlt_soc_add_dmic_array(nhlt, 2))
printk(BIOS_ERR, "Added 2CH DMIC array.\n"); printk(BIOS_ERR, "Added 2CH DMIC array.\n");
if (!nhlt_soc_add_dmic_array(nhlt, 4))
printk(BIOS_ERR, "Added 4CH DMIC array.\n");
}
/* Dialog for Headset codec. /* Dialog for Headset codec.
* Headset codec is bi-directional but uses the same configuration * Headset codec is bi-directional but uses the same configuration
* settings for render and capture endpoints. * settings for render and capture endpoints.