/* Audio init: clocks and enables/resets */ static void setup_audio(void) { /* Audio codec (ES755) uses OSC freq (via AUD_MCLK), s/b 38.4MHz */ soc_configure_funits(audio_funit, ARRAY_SIZE(audio_funit)); /* * As per NVIDIA hardware team, we need to take ALL audio devices * connected to AHUB (AUDIO, APB2APE, I2S, SPDIF, etc.) out of reset * and clock-enabled, otherwise reading AHUB devices (in our case, * I2S/APBIF/AUDIO<XBAR>) will hang. */ soc_configure_ape(); clock_enable_audio(); }
/* Audio init: clocks and enables/resets */ static void setup_audio(void) { /* * External peripheral 1: audio codec (max98090) uses 12MHz CLK1 * NOTE: We can't use a funits struct/call here because EXTPERIPH1/2/3 * don't have BASE regs or CAR RST/ENA bits. Also, the mux setting for * EXTPERIPH1/DAP_MCLK1 is rolled into the I2S1 padcfg. */ clock_configure_source(extperiph1, CLK_M, 12000); soc_configure_funits(audio_funit, ARRAY_SIZE(audio_funit)); clock_external_output(1); /* For external MAX98090 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(); }
/* Audio init: clocks and enables/resets */ static void setup_audio(void) { /* Audio codec (RT5677) uses 12MHz CLK1/EXTPERIPH1 */ clock_configure_source(extperiph1, PLLP, 12000); /* Configure AUD_MCLK pad drive strength */ write32((unsigned int *)TEGRA_APB_MISC_GP_BASE + 0xF4, (0x10 << PINGROUP_DRVUP_SHIFT | 0x10 << PINGROUP_DRVDN_SHIFT)); /* Set up audio peripheral clocks/muxes */ soc_configure_funits(audio_funit, ARRAY_SIZE(audio_funit)); /* Enable CLK1_OUT */ clock_external_output(1); /* * As per NVIDIA hardware team, we need to take ALL audio devices * connected to AHUB (AUDIO, APB2APE, I2S, SPDIF, etc.) out of reset * and clock-enabled, otherwise reading AHUB devices (in our case, * I2S/APBIF/AUDIO<XBAR>) will hang. */ soc_configure_ape(); clock_enable_audio(); }