summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorSathyanarayana Nujella <sathyanarayana.nujella@intel.com>2016-10-26 17:35:39 -0700
committerMartin Roth <martinroth@google.com>2016-11-16 18:11:44 +0100
commitb7d44dfcf59a6d09194f73dd37b79539be0c797a (patch)
tree6489388862470c70567e53ff343afc9d9358bb1b /src/mainboard
parent37d15c6cab5aca9de39377cb5018c35537676faa (diff)
downloadcoreboot-b7d44dfcf59a6d09194f73dd37b79539be0c797a.tar.xz
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)
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/google/reef/Kconfig2
-rw-r--r--src/mainboard/google/reef/variants/baseboard/include/baseboard/gpio.h3
-rw-r--r--src/mainboard/google/reef/variants/baseboard/nhlt.c16
3 files changed, 18 insertions, 3 deletions
diff --git a/src/mainboard/google/reef/Kconfig b/src/mainboard/google/reef/Kconfig
index 4e32b8614f..4d76f3838b 100644
--- a/src/mainboard/google/reef/Kconfig
+++ b/src/mainboard/google/reef/Kconfig
@@ -91,7 +91,9 @@ config UART_FOR_CONSOLE
config INCLUDE_NHLT_BLOBS
bool "Include blobs for audio."
+ select NHLT_DMIC_1CH_16B
select NHLT_DMIC_2CH_16B
+ select NHLT_DMIC_4CH_16B
select NHLT_DA7219
select NHLT_MAX98357
diff --git a/src/mainboard/google/reef/variants/baseboard/include/baseboard/gpio.h b/src/mainboard/google/reef/variants/baseboard/include/baseboard/gpio.h
index f60bfdc6de..ca6aa31f34 100644
--- a/src/mainboard/google/reef/variants/baseboard/include/baseboard/gpio.h
+++ b/src/mainboard/google/reef/variants/baseboard/include/baseboard/gpio.h
@@ -45,4 +45,7 @@
#define MEM_CONFIG1 GPIO_102
#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 */
diff --git a/src/mainboard/google/reef/variants/baseboard/nhlt.c b/src/mainboard/google/reef/variants/baseboard/nhlt.c
index ef9ec6c9c5..86da039d68 100644
--- a/src/mainboard/google/reef/variants/baseboard/nhlt.c
+++ b/src/mainboard/google/reef/variants/baseboard/nhlt.c
@@ -17,13 +17,23 @@
#include <console/console.h>
#include <nhlt.h>
#include <soc/nhlt.h>
+#include <gpio.h>
+#include <baseboard/gpio.h>
void __attribute__((weak)) variant_nhlt_init(struct nhlt *nhlt)
{
- /* 2 Channel DMIC array. */
- if (!nhlt_soc_add_dmic_array(nhlt, 2))
- printk(BIOS_ERR, "Added 2CH DMIC array.\n");
+ 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))
+ 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.
* Headset codec is bi-directional but uses the same configuration
* settings for render and capture endpoints.