From 3f80a7aa6db62c16a724b86dfdcfe6202859e6e8 Mon Sep 17 00:00:00 2001 From: Tzung-Bi Shih Date: Tue, 5 Jan 2021 17:57:04 +0800 Subject: [PATCH] mb/google/asurada: Support audio - Turns audio-related things power on. - Selects I2S pin-muxing. - Exposes GPIO "speaker enable" for switching on and off. BUG=b:176856418 Signed-off-by: Tzung-Bi Shih Change-Id: If595657bbddad85bc9a154b3648bae1190cb00b5 Reviewed-on: https://review.coreboot.org/c/coreboot/+/49135 Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu --- src/mainboard/google/asurada/chromeos.c | 2 ++ src/mainboard/google/asurada/gpio.h | 2 ++ src/mainboard/google/asurada/mainboard.c | 13 +++++++++++++ 3 files changed, 17 insertions(+) diff --git a/src/mainboard/google/asurada/chromeos.c b/src/mainboard/google/asurada/chromeos.c index a57392bc04..56a1084e81 100644 --- a/src/mainboard/google/asurada/chromeos.c +++ b/src/mainboard/google/asurada/chromeos.c @@ -15,6 +15,7 @@ void setup_chromeos_gpios(void) gpio_input_pullup(GPIO_H1_AP_INT); gpio_input_pullup(GPIO_SD_CD); gpio_output(GPIO_RESET, 0); + gpio_output(GPIO_EN_SPK_AMP, 0); } void fill_lb_gpios(struct lb_gpios *gpios) @@ -24,6 +25,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) {GPIO_EC_AP_INT.id, ACTIVE_LOW, -1, "EC interrupt"}, {GPIO_H1_AP_INT.id, ACTIVE_HIGH, -1, "TPM interrupt"}, {GPIO_SD_CD.id, ACTIVE_HIGH, -1, "SD card detect"}, + {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/asurada/gpio.h b/src/mainboard/google/asurada/gpio.h index 90de583f77..ae34d33313 100644 --- a/src/mainboard/google/asurada/gpio.h +++ b/src/mainboard/google/asurada/gpio.h @@ -14,6 +14,8 @@ #define GPIO_SD_CD GPIO(EINT17) /* AP_EC_WARM_RST_REQ */ #define GPIO_RESET GPIO(CAM_PDN2) +/* EN_SPK */ +#define GPIO_EN_SPK_AMP GPIO(CAM_PDN1) void setup_chromeos_gpios(void); diff --git a/src/mainboard/google/asurada/mainboard.c b/src/mainboard/google/asurada/mainboard.c index f836724df6..812cb006da 100644 --- a/src/mainboard/google/asurada/mainboard.c +++ b/src/mainboard/google/asurada/mainboard.c @@ -193,10 +193,23 @@ static void configure_sdcard(void) mainboard_enable_regulator(MTK_REGULATOR_VCCQ, enable); } +static void configure_audio(void) +{ + /* Audio PWR */ + mtcmos_audio_power_on(); + + /* SoC I2S */ + gpio_set_mode(GPIO(I2S3_MCK), PAD_I2S3_MCK_FUNC_I2S3_MCK); + gpio_set_mode(GPIO(I2S3_BCK), PAD_I2S3_BCK_FUNC_I2S3_BCK); + gpio_set_mode(GPIO(I2S3_LRCK), PAD_I2S3_LRCK_FUNC_I2S3_LRCK); + gpio_set_mode(GPIO(I2S3_DO), PAD_I2S3_DO_FUNC_I2S3_DO); +} + static void mainboard_init(struct device *dev) { configure_emmc(); configure_sdcard(); + configure_audio(); setup_usb_host(); register_reset_to_bl31();