summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiaxin Yu <jiaxin.yu@mediatek.com>2019-04-23 20:45:50 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-05-07 16:00:31 +0000
commit30bc9f415d9564de90fc0c6c6a92462ce3ce7c06 (patch)
treea441be62f4d858fac288c4195629d30f63737ba2
parent3c0d23b6ab1ca23c9e54f3554386e7aa2cfec94d (diff)
downloadcoreboot-30bc9f415d9564de90fc0c6c6a92462ce3ce7c06.tar.xz
google/kukui: Support sound in boot process
Configure and enable GPIO for speaker amp max98357a. BUG=b:117254418 TEST=Build pass and verified on kukui p1 board BRANCH=None Change-Id: I97655702dff402245326d2eff71fae0e336df9f5 Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32459 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--src/mainboard/google/kukui/chromeos.c2
-rw-r--r--src/mainboard/google/kukui/gpio.h1
-rw-r--r--src/mainboard/google/kukui/mainboard.c13
3 files changed, 16 insertions, 0 deletions
diff --git a/src/mainboard/google/kukui/chromeos.c b/src/mainboard/google/kukui/chromeos.c
index 44e75e29f0..35395014d6 100644
--- a/src/mainboard/google/kukui/chromeos.c
+++ b/src/mainboard/google/kukui/chromeos.c
@@ -27,6 +27,7 @@ void setup_chromeos_gpios(void)
gpio_input_pullup(EC_IRQ);
gpio_input_pullup(CR50_IRQ);
gpio_output(GPIO_RESET, 0);
+ gpio_output(GPIO_EN_SPK_AMP, 0);
}
void fill_lb_gpios(struct lb_gpios *gpios)
@@ -38,6 +39,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
{EC_IN_RW.id, ACTIVE_HIGH, -1, "EC in RW"},
{EC_IRQ.id, ACTIVE_LOW, -1, "EC interrupt"},
{CR50_IRQ.id, ACTIVE_HIGH, -1, "TPM interrupt"},
+ {GPIO_EN_SPK_AMP.id, ACTIVE_HIGH, -1, "speaker enable"},
};
lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios));
}
diff --git a/src/mainboard/google/kukui/gpio.h b/src/mainboard/google/kukui/gpio.h
index 92d238ece2..977acc3739 100644
--- a/src/mainboard/google/kukui/gpio.h
+++ b/src/mainboard/google/kukui/gpio.h
@@ -23,6 +23,7 @@
#define EC_IN_RW GPIO(PERIPHERAL_EN14)
#define CR50_IRQ GPIO(PERIPHERAL_EN3)
#define GPIO_RESET GPIO(PERIPHERAL_EN8)
+#define GPIO_EN_SPK_AMP GPIO(PERIPHERAL_EN12)
void setup_chromeos_gpios(void);
diff --git a/src/mainboard/google/kukui/mainboard.c b/src/mainboard/google/kukui/mainboard.c
index e1d8f5fb8d..40b8a49c61 100644
--- a/src/mainboard/google/kukui/mainboard.c
+++ b/src/mainboard/google/kukui/mainboard.c
@@ -16,6 +16,7 @@
#include <device/device.h>
#include <soc/gpio.h>
#include <soc/mmu_operations.h>
+#include <soc/mtcmos.h>
#include <soc/usb.h>
static void configure_emmc(void)
@@ -37,10 +38,22 @@ static void configure_usb(void)
setup_usb_host();
}
+static void configure_audio(void)
+{
+ /* Audio PWR*/
+ mtcmos_audio_power_on();
+
+ /* SoC I2S */
+ gpio_set_mode(GPIO(CAM_RST0), PAD_CAM_RST0_FUNC_I2S2_LRCK);
+ gpio_set_mode(GPIO(CAM_PDN1), PAD_CAM_PDN1_FUNC_I2S2_BCK);
+ gpio_set_mode(GPIO(CAM_PDN0), PAD_CAM_PDN0_FUNC_I2S2_MCK);
+ gpio_set_mode(GPIO(EINT3), PAD_EINT3_FUNC_I2S3_DO);
+}
static void mainboard_init(struct device *dev)
{
configure_emmc();
configure_usb();
+ configure_audio();
}
static void mainboard_enable(struct device *dev)