From f63edb52ef8ecf18520926b40b3c61db37081a9d Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sun, 30 May 2021 19:56:44 +0100 Subject: x1000: refactor AIC initialization Have pcm-x1000 handle most work, so target's audiohw code touches only the relevant settings. Change-Id: Icf3d1b7ca428ac50a5a16ecec39ed8186ac5ae13 --- .../mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c | 26 ++++++---------------- 1 file changed, 7 insertions(+), 19 deletions(-) (limited to 'firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c') diff --git a/firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c b/firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c index 2f43809523..d1c4d67d33 100644 --- a/firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c +++ b/firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c @@ -26,22 +26,13 @@ #include "aic-x1000.h" #include "i2c-x1000.h" #include "gpio-x1000.h" -#include "x1000/aic.h" -#include "x1000/cpm.h" void audiohw_init(void) { - /* Configure AIC for I2S operation */ - jz_writef(CPM_CLKGR, AIC(0)); - gpio_config(GPIO_B, 0x1f, GPIO_DEVICE(1)); - jz_writef(AIC_I2SCR, STPBK(1)); - - /* Operate as I2S master, use external codec */ - jz_writef(AIC_CFG, AUSEL(1), ICDC(0), BCKD(1), SYNCD(1), LSMP(1)); - jz_writef(AIC_I2SCR, ESCLK(1), AMSL(0)); - - /* Stereo audio, packed 16 bit samples */ - jz_writef(AIC_CCR, PACK16(1), CHANNEL(1), OSS(1)); + /* Configure AIC */ + aic_set_external_codec(true); + aic_set_i2s_mode(AIC_I2S_MASTER_MODE); + aic_enable_i2s_master_clock(true); /* Initialize DAC */ i2c_x1000_set_freq(AK4376_BUS, I2C_FREQ_400K); @@ -64,18 +55,15 @@ void ak4376_set_pdn_pin(int level) int ak4376_set_mclk_freq(int hw_freq, bool enabled) { - /* Get the multiplier */ int freq = hw_freq_sampr[hw_freq]; int mult = freq >= SAMPR_176 ? 128 : 256; if(enabled) { - /* Set the new frequency; clock is enabled afterward */ - if(aic_i2s_set_mclk(X1000_CLK_SCLK_A, freq, mult)) + if(aic_set_i2s_clock(X1000_CLK_SCLK_A, freq, mult)) { logf("WARNING: unachievable audio rate %d x %d!?", freq, mult); - } else { - /* Shut off the clock */ - jz_writef(AIC_I2SCR, STPBK(1)); + } } + aic_enable_i2s_bit_clock(enabled); return mult; } -- cgit v1.2.3