google/rush_ryu: audio: Setup clocks for AHUB, I2S1, codec, etc.
The Ryu RT5677 audio codec uses EXTPERIPH1 clock (12MHz) for MCLK1, I2S1 for input. AHUB needs all of its child peripherals taken out of reset and enabled, too. This just sets up the audio clocks. More work still to be done in the codec driver, and some kind of stub needs to be created/hacked to set up the AD4567 speaker amp regs for mono output on P1. BUG=chrome-os-partner:32582 BRANCH=none TEST=Dumped clock regs and saw correct values Change-Id: Ifb6551f1e09b38f440f3bb7c759b5e6c0b9e4e44 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 48f989a0291044f5fb4340cc89546325d819d82f Original-Change-Id: I6c9e760ac39def92a6054d673f781facdbfd70a2 Original-Signed-off-by: Tom Warren <twarren@nvidia.com> Original-Reviewed-on: https://chromium-review.googlesource.com/229993 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/9523 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
93147b5ed1
commit
bcea3f64a3
|
@ -186,6 +186,30 @@ static int configure_display_blocks(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Audio init: clocks and enables/resets */
|
||||||
|
static void setup_audio(void)
|
||||||
|
{
|
||||||
|
/* External peripheral 1: audio codec (RT5677) using 12MHz CLK1 */
|
||||||
|
clock_configure_source(extperiph1, CLK_M, 12000);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We need 1.5MHz for I2S1. So, we use CLK_M. CLK_DIVIDER macro
|
||||||
|
* returns a divisor (0xe) a little bit off from the ideal value (0xd),
|
||||||
|
* but it's good enough for beeps.
|
||||||
|
*/
|
||||||
|
clock_configure_source(i2s1, CLK_M, 1500);
|
||||||
|
|
||||||
|
clock_external_output(1); /* For external RT5677 audio codec. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Confirmed by NVIDIA hardware team, we need to take ALL audio devices
|
||||||
|
* connected to AHUB (AUDIO, APBIF, I2S, DAM, AMX, ADX, SPDIF, AFC) out
|
||||||
|
* of reset and clock-enabled, otherwise reading AHUB devices (in our
|
||||||
|
* case, I2S/APBIF/AUDIO<XBAR>) will hang.
|
||||||
|
*/
|
||||||
|
clock_enable_audio();
|
||||||
|
}
|
||||||
|
|
||||||
static void mainboard_init(device_t dev)
|
static void mainboard_init(device_t dev)
|
||||||
{
|
{
|
||||||
soc_configure_funits(funits, ARRAY_SIZE(funits));
|
soc_configure_funits(funits, ARRAY_SIZE(funits));
|
||||||
|
@ -193,6 +217,9 @@ static void mainboard_init(device_t dev)
|
||||||
/* I2C6 bus (audio, etc.) */
|
/* I2C6 bus (audio, etc.) */
|
||||||
soc_configure_i2c6pad();
|
soc_configure_i2c6pad();
|
||||||
i2c_init(I2C6_BUS);
|
i2c_init(I2C6_BUS);
|
||||||
|
|
||||||
|
setup_audio();
|
||||||
|
|
||||||
elog_init();
|
elog_init();
|
||||||
elog_add_boot_reason();
|
elog_add_boot_reason();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue