From c62f83a3b85f65d15b3ebd37ebb44c0f50845d9f Mon Sep 17 00:00:00 2001 From: Steven Dan Date: Fri, 22 May 2026 23:20:47 +0800 Subject: [PATCH] update codec init in remote --- .../src/extensions/audiohw.xc | 143 +++++++++--------- .../src/extensions/audiohw.xc | 143 +++++++++--------- 2 files changed, 144 insertions(+), 142 deletions(-) diff --git a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc index 0f2b383..b67630e 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc +++ b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc @@ -49,8 +49,10 @@ unsigned g_volume_level = 60, g_saved_volume_level = 60; unsigned g_request_volume_set = 0; unsigned g_dac_vol = 0xB8; unsigned g_adc_vol = 0x25; +// 改动原因:CODEC 在 AudioHwRemote2 内完成初始化后置 1,供其它逻辑确认 NAU88 已就绪。 +unsigned g_codec_init_done = 0; unsigned g_adc_loop = 0; -unsigned g_mute_switch = 0; // 改动原因:与g_adc_loop一致,记录MCU回传的静音开关状态并用于HID变化上报(k6 UART在tile0可直接设置) +unsigned g_mute_switch = 1; // 改动原因:0=静音(亮红)、1=非静音(灭红);默认1非静音,与LED/按键一致;UART/HID/Flash可覆盖 unsigned g_led_enable = 0; unsigned g_dnr_enable = 1; unsigned g_3d_enable = 1; @@ -241,6 +243,7 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) reboot_need = 1; #endif break; + case 5: #if !BYPASS_UAC1 SetRoleSwitchFlag(MODE_BYPASS_UAC1); @@ -248,7 +251,7 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) #endif break; } -#endif +#endif // UAC1_MODE == 1 debug_printf("switch_mode_by_c1_mode: reboot_need = %d, force_reboot = %d\n", reboot_need, force_reboot); debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode); @@ -443,28 +446,6 @@ uint8_t samp_support(unsigned samFreq) } } -void codec_init(void) -{ - /* - * Setup CODEC - */ - uint16_t addr = 0, val; - for (int i = 0; i < sizeof(nau88c22_registers) / sizeof(nau88c22_registers[0]); i++) { - addr = nau88c22_registers[i][1]; - val = (nau88c22_registers[i][2] << 8) | nau88c22_registers[i][3]; - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, addr, val); - } - - // ADCL PGA default setting - if(NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE == NAU88L21_PGA_GAIN_REG_MAX_VALUE) - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x007E, (NAU88L21_PGA_GAIN_REG_MAX_VALUE-1) << 8); - else - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x007E, NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE << 8); - - debug_printf("Codec init finished\n"); -} - - void dac_volume(signed level, client interface i2c_master_if i2c) { // 1dB/步: level 范围 -28 ~ 0,对应寄存器 0xcf-28=0xb3 ~ 0xcf @@ -498,6 +479,47 @@ void mic_volume(unsigned level, client interface i2c_master_if i2c) } } +// 改动原因:CODEC 初始化改在 AudioHwRemote2 的 I2C 线程内执行(原 AudioHwInit 经 channel 转发易与主循环竞态); +// 写完寄存器表及 0x0003/0x002B/0x002C 后,立即把 Flash 恢复的 DAC 音量与 mic mute 写入芯片。 +static void codec_init_on_i2c(client interface i2c_master_if i2c) +{ + uint16_t addr = 0, val; + unsigned boot_dac_vol, boot_mute_switch, boot_adc_vol; + unsigned boot_dac_reg, boot_effective_adc_vol; + + for (int i = 0; i < sizeof(nau88c22_registers) / sizeof(nau88c22_registers[0]); i++) { + addr = nau88c22_registers[i][1]; + val = (nau88c22_registers[i][2] << 8) | nau88c22_registers[i][3]; + NAU88C22_REGWRITE(addr, val, i2c); + } + + // ADCL PGA default setting + if (NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE == NAU88L21_PGA_GAIN_REG_MAX_VALUE) + NAU88C22_REGWRITE(0x007E, (NAU88L21_PGA_GAIN_REG_MAX_VALUE - 1) << 8, i2c); + else + NAU88C22_REGWRITE(0x007E, NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE << 8, i2c); + + // 改动原因:原 AudioHwInit 在 codec_init 之后的附加寄存器写,一并挪到本线程直接 I2C 写。 + NAU88C22_REGWRITE(0x0003, 0x0053, i2c); + NAU88C22_REGWRITE(0x002B, 0x4002, i2c); + NAU88C22_REGWRITE(0x002C, 0x0082, i2c); + + GET_SHARED_GLOBAL(boot_dac_vol, g_dac_vol); + GET_SHARED_GLOBAL(boot_mute_switch, g_mute_switch); + GET_SHARED_GLOBAL(boot_adc_vol, g_adc_vol); + + boot_dac_reg = boot_dac_vol & 0xff; + NAU88C22_REGWRITE(0x0034, ((boot_dac_reg << 8) | boot_dac_reg), i2c); + + // 改动原因:与定时器路径一致——g_mute_switch==0 为静音,否则用 g_adc_vol。 + boot_effective_adc_vol = (boot_mute_switch == 0) ? 0 : boot_adc_vol; + mic_volume(boot_effective_adc_vol, i2c); + + SET_SHARED_GLOBAL(g_codec_init_done, 1); + debug_printf("Codec init on AudioHwRemote2 done: dac=0x%x adc_eff=%d mute=%d\n", + boot_dac_reg, boot_effective_adc_vol, boot_mute_switch); +} + void save_value(unsigned char * unsafe path, unsigned char value); unsigned char load_value(unsigned char * unsafe path); #define C1_MODE_INFO_PATH "c1_mode" @@ -613,8 +635,6 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli else init_dac_vol = loaded_dac_vol; SET_SHARED_GLOBAL(g_dac_vol, init_dac_vol); - // 改动原因:强制首轮定时器路径执行 NAU88C22 写音量(含 mute=0 时 old_dac_vol 初值也为 0 的情况)。 - old_dac_vol = ~init_dac_vol; dac_vol_persist_snapshot = init_dac_vol; dac_vol_persist_deadline = 0; } @@ -648,7 +668,22 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli i_c1_led_ctrl.set_mic_dnr_state(init_dnr_for_led); last_mute_switch_for_led = init_mute_for_led; } - + + // 改动原因:等待并行 AudioHwInit 完成 MCLK/PLL(约 100ms+10ms)后再初始化 CODEC,避免上电时序不足。 + delay_milliseconds(110); + codec_init_on_i2c(i2c); + { + unsigned boot_dac_vol, boot_mute_switch, boot_adc_vol; + unsigned boot_effective_adc_vol; + GET_SHARED_GLOBAL(boot_dac_vol, g_dac_vol); + GET_SHARED_GLOBAL(boot_mute_switch, g_mute_switch); + GET_SHARED_GLOBAL(boot_adc_vol, g_adc_vol); + old_dac_vol = boot_dac_vol; + old_dac_jack_force_mute = 0; + boot_effective_adc_vol = (boot_mute_switch == 0) ? 0 : boot_adc_vol; + old_adc_vol = boot_effective_adc_vol; + } + while(1) { select @@ -827,8 +862,9 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli i_c1_led_ctrl.set_mic_mute_state(mute_switch); last_mute_switch_for_led = mute_switch; } - // 改动原因:MIC 物理拔出时 mic_jack_adc_mute 强制 ADC 静音;插入 500ms 内仍保持静音,之后恢复 g_mute_switch 与 g_adc_vol 决定的电平(不触碰 LED 条件 mute_switch)。 - unsigned effective_adc_vol = mic_jack_adc_mute ? 0 : ((mute_switch != 0) ? 0 : adc_vol); + // 改动原因:MIC 物理拔出时 mic_jack_adc_mute 强制 ADC 静音;插入 500ms 后按 g_mute_switch 恢复: + // g_mute_switch==0 静音→effective_adc_vol=0;==1 非静音→用 g_adc_vol。此前误写 mute_switch!=0 导致与按键/LED 相反。 + unsigned effective_adc_vol = mic_jack_adc_mute ? 0 : ((mute_switch == 0) ? 0 : adc_vol); // 改动原因:耳机拔出或 MIC 插/拔防 pop 时写 C1_DAC_MUTE(不改 g_dac_vol);各事件满 500ms 或互斥清除后按 g_dac_vol 写回 0x0034。 { @@ -905,10 +941,13 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli if (current_mute_switch == 0) { mic_volume(0, i2c); + // 改动原因:同步 old_adc_vol,避免定时器下一轮仍按旧值误判或与按键写入冲突。 + old_adc_vol = 0; } else { mic_volume(effective_adc_vol, i2c); + old_adc_vol = effective_adc_vol; } SET_SHARED_GLOBAL(g_mute_switch, current_mute_switch); // 改动原因:静音状态变化后立即保存到Flash,保证断电后恢复正确的静音灯状态。 @@ -1610,6 +1649,7 @@ void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led * use a channel to communicate CODEC reg read/writes to a remote core */ void AudioHwInit() { + set_gpio(P_GPIO_MUTE, MUTE); debug_printf("AudioHwInit\n"); delay_milliseconds(100); @@ -1629,18 +1669,12 @@ void AudioHwInit() } } - set_gpio(P_GPIO_MUTE, MUTE); - debug_printf("mute_dac ======== \n"); delay_milliseconds(10); - codec_init(); - - debug_printf("AudioHwInit completed\n"); - - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0053); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4002); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); + // 改动原因:NAU88 CODEC 寄存器初始化已移至 AudioHwRemote2(codec_init_on_i2c), + // 此处仅配置 MCLK/PLL;音量与 mic mute 在 Remote2 完成 init 后立即写入。 + debug_printf("AudioHwInit completed (codec init in AudioHwRemote2)\n"); } void unmute_dac(void) @@ -1887,39 +1921,6 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, sw_pll_fixed_clock(MCLK_48); } } - - switch (samFreq) - { - case 192000: - case 176400: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x00D0); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4000); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - case 96000: - case 88200: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0092); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4001); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - case 44100: - case 48000: - default: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0053); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4002); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - } - - if (led_count == 0) - { - led_count = 1; - } - else if (led_count == 1) - { - led_count = 2; - // SET_SHARED_GLOBAL(g_update_led, 1); - } } void AudioHwConfig_UnMute(void) diff --git a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc index d5e2dd0..2bed6d6 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc +++ b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc @@ -49,8 +49,10 @@ unsigned g_volume_level = 60, g_saved_volume_level = 60; unsigned g_request_volume_set = 0; unsigned g_dac_vol = 0xB8; unsigned g_adc_vol = 0x25; +// 改动原因:CODEC 在 AudioHwRemote2 内完成初始化后置 1,供其它逻辑确认 NAU88 已就绪。 +unsigned g_codec_init_done = 0; unsigned g_adc_loop = 0; -unsigned g_mute_switch = 0; // 改动原因:与g_adc_loop一致,记录MCU回传的静音开关状态并用于HID变化上报(k6 UART在tile0可直接设置) +unsigned g_mute_switch = 1; // 改动原因:0=静音(亮红)、1=非静音(灭红);默认1非静音,与LED/按键一致;UART/HID/Flash可覆盖 unsigned g_led_enable = 0; unsigned g_dnr_enable = 1; unsigned g_3d_enable = 1; @@ -239,8 +241,9 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) #if !FPS_UAC1 SetRoleSwitchFlag(MODE_FPS_UAC1); reboot_need = 1; - break; #endif + break; + case 5: #if !BYPASS_UAC1 SetRoleSwitchFlag(MODE_BYPASS_UAC1); @@ -443,28 +446,6 @@ uint8_t samp_support(unsigned samFreq) } } -void codec_init(void) -{ - /* - * Setup CODEC - */ - uint16_t addr = 0, val; - for (int i = 0; i < sizeof(nau88c22_registers) / sizeof(nau88c22_registers[0]); i++) { - addr = nau88c22_registers[i][1]; - val = (nau88c22_registers[i][2] << 8) | nau88c22_registers[i][3]; - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, addr, val); - } - - // ADCL PGA default setting - if(NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE == NAU88L21_PGA_GAIN_REG_MAX_VALUE) - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x007E, (NAU88L21_PGA_GAIN_REG_MAX_VALUE-1) << 8); - else - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x007E, NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE << 8); - - debug_printf("Codec init finished\n"); -} - - void dac_volume(signed level, client interface i2c_master_if i2c) { // 1dB/步: level 范围 -28 ~ 0,对应寄存器 0xcf-28=0xb3 ~ 0xcf @@ -498,6 +479,47 @@ void mic_volume(unsigned level, client interface i2c_master_if i2c) } } +// 改动原因:CODEC 初始化改在 AudioHwRemote2 的 I2C 线程内执行(原 AudioHwInit 经 channel 转发易与主循环竞态); +// 写完寄存器表及 0x0003/0x002B/0x002C 后,立即把 Flash 恢复的 DAC 音量与 mic mute 写入芯片。 +static void codec_init_on_i2c(client interface i2c_master_if i2c) +{ + uint16_t addr = 0, val; + unsigned boot_dac_vol, boot_mute_switch, boot_adc_vol; + unsigned boot_dac_reg, boot_effective_adc_vol; + + for (int i = 0; i < sizeof(nau88c22_registers) / sizeof(nau88c22_registers[0]); i++) { + addr = nau88c22_registers[i][1]; + val = (nau88c22_registers[i][2] << 8) | nau88c22_registers[i][3]; + NAU88C22_REGWRITE(addr, val, i2c); + } + + // ADCL PGA default setting + if (NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE == NAU88L21_PGA_GAIN_REG_MAX_VALUE) + NAU88C22_REGWRITE(0x007E, (NAU88L21_PGA_GAIN_REG_MAX_VALUE - 1) << 8, i2c); + else + NAU88C22_REGWRITE(0x007E, NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE << 8, i2c); + + // 改动原因:原 AudioHwInit 在 codec_init 之后的附加寄存器写,一并挪到本线程直接 I2C 写。 + NAU88C22_REGWRITE(0x0003, 0x0053, i2c); + NAU88C22_REGWRITE(0x002B, 0x4002, i2c); + NAU88C22_REGWRITE(0x002C, 0x0082, i2c); + + GET_SHARED_GLOBAL(boot_dac_vol, g_dac_vol); + GET_SHARED_GLOBAL(boot_mute_switch, g_mute_switch); + GET_SHARED_GLOBAL(boot_adc_vol, g_adc_vol); + + boot_dac_reg = boot_dac_vol & 0xff; + NAU88C22_REGWRITE(0x0034, ((boot_dac_reg << 8) | boot_dac_reg), i2c); + + // 改动原因:与定时器路径一致——g_mute_switch==0 为静音,否则用 g_adc_vol。 + boot_effective_adc_vol = (boot_mute_switch == 0) ? 0 : boot_adc_vol; + mic_volume(boot_effective_adc_vol, i2c); + + SET_SHARED_GLOBAL(g_codec_init_done, 1); + debug_printf("Codec init on AudioHwRemote2 done: dac=0x%x adc_eff=%d mute=%d\n", + boot_dac_reg, boot_effective_adc_vol, boot_mute_switch); +} + void save_value(unsigned char * unsafe path, unsigned char value); unsigned char load_value(unsigned char * unsafe path); #define C1_MODE_INFO_PATH "c1_mode" @@ -616,8 +638,6 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli else init_dac_vol = loaded_dac_vol; SET_SHARED_GLOBAL(g_dac_vol, init_dac_vol); - // 改动原因:强制首轮定时器路径执行 NAU88C22 写音量(含 mute=0 时 old_dac_vol 初值也为 0 的情况)。 - old_dac_vol = ~init_dac_vol; dac_vol_persist_snapshot = init_dac_vol; dac_vol_persist_deadline = 0; } @@ -651,7 +671,22 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli i_c1_led_ctrl.set_mic_dnr_state(init_dnr_for_led); last_mute_switch_for_led = init_mute_for_led; } - + + // 改动原因:等待并行 AudioHwInit 完成 MCLK/PLL(约 100ms+10ms)后再初始化 CODEC,避免上电时序不足。 + delay_milliseconds(110); + codec_init_on_i2c(i2c); + { + unsigned boot_dac_vol, boot_mute_switch, boot_adc_vol; + unsigned boot_effective_adc_vol; + GET_SHARED_GLOBAL(boot_dac_vol, g_dac_vol); + GET_SHARED_GLOBAL(boot_mute_switch, g_mute_switch); + GET_SHARED_GLOBAL(boot_adc_vol, g_adc_vol); + old_dac_vol = boot_dac_vol; + old_dac_jack_force_mute = 0; + boot_effective_adc_vol = (boot_mute_switch == 0) ? 0 : boot_adc_vol; + old_adc_vol = boot_effective_adc_vol; + } + while(1) { select @@ -830,8 +865,9 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli i_c1_led_ctrl.set_mic_mute_state(mute_switch); last_mute_switch_for_led = mute_switch; } - // 改动原因:MIC 物理拔出时 mic_jack_adc_mute 强制 ADC 静音;插入 500ms 内仍保持静音,之后恢复 g_mute_switch 与 g_adc_vol 决定的电平(不触碰 LED 条件 mute_switch)。 - unsigned effective_adc_vol = mic_jack_adc_mute ? 0 : ((mute_switch != 0) ? 0 : adc_vol); + // 改动原因:MIC 物理拔出时 mic_jack_adc_mute 强制 ADC 静音;插入 500ms 后按 g_mute_switch 恢复: + // g_mute_switch==0 静音→effective_adc_vol=0;==1 非静音→用 g_adc_vol。此前误写 mute_switch!=0 导致与按键/LED 相反。 + unsigned effective_adc_vol = mic_jack_adc_mute ? 0 : ((mute_switch == 0) ? 0 : adc_vol); // 改动原因:耳机拔出或 MIC 插/拔防 pop 时写 C1_DAC_MUTE(不改 g_dac_vol);各事件满 500ms 或互斥清除后按 g_dac_vol 写回 0x0034。 { @@ -908,10 +944,13 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli if (current_mute_switch == 0) { mic_volume(0, i2c); + // 改动原因:同步 old_adc_vol,避免定时器下一轮仍按旧值误判或与按键写入冲突。 + old_adc_vol = 0; } else { mic_volume(effective_adc_vol, i2c); + old_adc_vol = effective_adc_vol; } SET_SHARED_GLOBAL(g_mute_switch, current_mute_switch); // 改动原因:静音状态变化后立即保存到Flash,保证断电后恢复正确的静音灯状态。 @@ -1613,6 +1652,7 @@ void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led * use a channel to communicate CODEC reg read/writes to a remote core */ void AudioHwInit() { + set_gpio(P_GPIO_MUTE, MUTE); debug_printf("AudioHwInit\n"); delay_milliseconds(100); @@ -1632,18 +1672,12 @@ void AudioHwInit() } } - set_gpio(P_GPIO_MUTE, MUTE); - debug_printf("mute_dac ======== \n"); delay_milliseconds(10); - codec_init(); - - debug_printf("AudioHwInit completed\n"); - - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0053); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4002); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); + // 改动原因:NAU88 CODEC 寄存器初始化已移至 AudioHwRemote2(codec_init_on_i2c), + // 此处仅配置 MCLK/PLL;音量与 mic mute 在 Remote2 完成 init 后立即写入。 + debug_printf("AudioHwInit completed (codec init in AudioHwRemote2)\n"); } void unmute_dac(void) @@ -1890,39 +1924,6 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, sw_pll_fixed_clock(MCLK_48); } } - - switch (samFreq) - { - case 192000: - case 176400: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x00D0); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4000); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - case 96000: - case 88200: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0092); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4001); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - case 44100: - case 48000: - default: - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x0003, 0x0053); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002B, 0x4002); - CODEC_REGWRITE(NAU88_I2C_DEVICE_ADDR, 0x002C, 0x0082); - break; - } - - if (led_count == 0) - { - led_count = 1; - } - else if (led_count == 1) - { - led_count = 2; - // SET_SHARED_GLOBAL(g_update_led, 1); - } } void AudioHwConfig_UnMute(void)