update eq from DS3
This commit is contained in:
@@ -45,7 +45,11 @@
|
|||||||
|
|
||||||
/* Enable/Disable Mixing core(s) - Default is on */
|
/* Enable/Disable Mixing core(s) - Default is on */
|
||||||
#ifndef MIXER
|
#ifndef MIXER
|
||||||
#define MIXER (1)
|
#define MIXER (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _XUA_BMAX_POWER
|
||||||
|
#define _XUA_BMAX_POWER (50)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set the number of mixes to perform - Default is 0 i.e mixing disabled */
|
/* Set the number of mixes to perform - Default is 0 i.e mixing disabled */
|
||||||
@@ -177,7 +181,184 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EXCLUDE_USB_AUDIO_MAIN (1)
|
#define EXCLUDE_USB_AUDIO_MAIN (1)
|
||||||
|
/*
|
||||||
|
* New spispec for QF60 board
|
||||||
|
* */
|
||||||
|
|
||||||
|
#define FL_QUADDEVICE_XT25F16F \
|
||||||
|
{ \
|
||||||
|
0, /* XT25F16F - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
8192, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
4, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0x0B4015, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x0,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define FL_QUADDEVICE_WINBOND_W25Q16JW \
|
||||||
|
{ \
|
||||||
|
0, /* W25Q16JW - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
8192, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
4, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0xEF4015, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x3C,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define FL_QUADDEVICE_UC25HQ16B \
|
||||||
|
{ \
|
||||||
|
0, /* W25Q16JW - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
8192, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
4, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0xB36015, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x3C,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New spispec for QF60 3V3 board
|
||||||
|
* */
|
||||||
|
|
||||||
|
#define FL_QUADDEVICE_WINBOND_W25Q32JVxxxM \
|
||||||
|
{ \
|
||||||
|
0, /* W25Q32JV - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
16384, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
4, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0xEF4016, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x3C,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New spispec for xcore-AI explorer board
|
||||||
|
* */
|
||||||
|
#define FL_QUADDEVICE_MX25R3235 \
|
||||||
|
{ \
|
||||||
|
0, /* MX25R3235 - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
16384, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
3, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0xC22816, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x3C,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define FL_QUADDEVICE_MX25L160E \
|
||||||
|
{ \
|
||||||
|
0, /* MX25R3235 - Just specify 0 as flash_id */ \
|
||||||
|
256, /* page size */ \
|
||||||
|
8192, /* num pages */ \
|
||||||
|
3, /* address size */ \
|
||||||
|
3, /* log2 clock divider */ \
|
||||||
|
0x9F, /* QSPI_RDID */ \
|
||||||
|
0, /* id dummy bytes */ \
|
||||||
|
3, /* id size in bytes */ \
|
||||||
|
0xC22017, /* device id */ \
|
||||||
|
0x20, /* QSPI_SE */ \
|
||||||
|
4096, /* Sector erase is always 4KB */ \
|
||||||
|
0x06, /* QSPI_WREN */ \
|
||||||
|
0x04, /* QSPI_WRDI */ \
|
||||||
|
PROT_TYPE_SR, /* Protection via SR */ \
|
||||||
|
{{0x3C,0x00},{0,0}}, /* QSPI_SP, QSPI_SU */ \
|
||||||
|
0x02, /* QSPI_PP */ \
|
||||||
|
0xEB, /* QSPI_READ_FAST */ \
|
||||||
|
1, /* 1 read dummy byte */ \
|
||||||
|
SECTOR_LAYOUT_REGULAR, /* mad sectors */ \
|
||||||
|
{4096,{0,{0}}}, /* regular sector sizes */ \
|
||||||
|
0x05, /* QSPI_RDSR */ \
|
||||||
|
0x01, /* QSPI_WRSR */ \
|
||||||
|
0x01, /* QSPI_WIP_BIT_MASK */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// DFU_FLASH_DEVICE is a comma-separated list of flash spec structures
|
||||||
|
// This define is used in lib_xua/lib_xua/src/dfu/flashlib_user.c
|
||||||
|
#define DFU_FLASH_DEVICE FL_QUADDEVICE_XT25F16F, FL_QUADDEVICE_WINBOND_W25Q16JW, FL_QUADDEVICE_UC25HQ16B, FL_QUADDEVICE_WINBOND_W25Q32JVxxxM, FL_QUADDEVICE_MX25R3235, FL_QUADDEVICE_MX25L160E
|
||||||
|
//:
|
||||||
#include "user_main.h"
|
#include "user_main.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ audio_type g_new_audio_type, g_audio_type = 0;
|
|||||||
unsigned g_mute_enable = 0;
|
unsigned g_mute_enable = 0;
|
||||||
unsigned g_mute_state = 0;
|
unsigned g_mute_state = 0;
|
||||||
unsigned g_mute_state_old = 1;
|
unsigned g_mute_state_old = 1;
|
||||||
unsigned g_samfreq;
|
|
||||||
unsigned g_unmute_dac_state, g_unmute_time, g_format_time;
|
unsigned g_unmute_dac_state, g_unmute_time, g_format_time;
|
||||||
unsigned g_volume_level = 60, g_saved_volume_level = 60;
|
unsigned g_volume_level = 60, g_saved_volume_level = 60;
|
||||||
unsigned g_request_volume_set = 0;
|
unsigned g_request_volume_set = 0;
|
||||||
@@ -62,7 +61,7 @@ uint32_t get_reference_time();
|
|||||||
unsigned g_disable_i2c = 0;
|
unsigned g_disable_i2c = 0;
|
||||||
unsigned g_dac_mode = 10;
|
unsigned g_dac_mode = 10;
|
||||||
unsigned g_new_dac_mode = 0;
|
unsigned g_new_dac_mode = 0;
|
||||||
unsigned g_samFreq = DEFAULT_FREQ;
|
unsigned g_samfreq = 48000;
|
||||||
// 改动原因:添加DSD模式全局变量,用于HID命令读取采样率和格式信息(已去掉DAC采样分辨率)
|
// 改动原因:添加DSD模式全局变量,用于HID命令读取采样率和格式信息(已去掉DAC采样分辨率)
|
||||||
unsigned g_dsd_mode = 0; // DSD模式:0=PCM, >0=DSD
|
unsigned g_dsd_mode = 0; // DSD模式:0=PCM, >0=DSD
|
||||||
unsigned g_gain_mode = 0; // 0: 低阻, 1: 高阻
|
unsigned g_gain_mode = 0; // 0: 低阻, 1: 高阻
|
||||||
@@ -429,35 +428,42 @@ void AudioHwRemote2(chanend c, client interface i2c_master_if i2c)
|
|||||||
GET_SHARED_GLOBAL(force_request_mode_change, g_force_request_eq_mode_change);
|
GET_SHARED_GLOBAL(force_request_mode_change, g_force_request_eq_mode_change);
|
||||||
if (new_eq_mode != request_eq_mode)
|
if (new_eq_mode != request_eq_mode)
|
||||||
{
|
{
|
||||||
|
// debug_printf("new eq mode != request eq mode\n");
|
||||||
SET_SHARED_GLOBAL(g_new_eq_mode, request_eq_mode);
|
SET_SHARED_GLOBAL(g_new_eq_mode, request_eq_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (force_request_mode_change == 1)
|
if (force_request_mode_change == 1)
|
||||||
{
|
{
|
||||||
|
debug_printf("force request mode change\n");
|
||||||
SET_SHARED_GLOBAL(g_force_eq_mode_change, 1);
|
SET_SHARED_GLOBAL(g_force_eq_mode_change, 1);
|
||||||
SET_SHARED_GLOBAL(g_force_request_eq_mode_change, 0);
|
SET_SHARED_GLOBAL(g_force_request_eq_mode_change, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case eq_sync_timer when timerafter(eq_sync_time) :> void :
|
case eq_sync_timer when timerafter(eq_sync_time) :> void :
|
||||||
eq_sync_time += EQ_SYNC_DELAY;
|
eq_sync_time += EQ_SYNC_DELAY;
|
||||||
|
|
||||||
// 使用单参数存储系统保存脏参数(独立保存EQ参数)
|
// 使用单参数存储系统保存脏参数(独立保存EQ参数)
|
||||||
if (eq_save_dirty_params() == 0) {
|
if (eq_save_dirty_params() == 0) {
|
||||||
|
//debug_printf("Single EQ parameters synced to Flash successfully\n");
|
||||||
} else {
|
} else {
|
||||||
|
//debug_printf("Failed to sync single EQ parameters to Flash\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 独立保存脏的增益
|
// 独立保存脏的增益
|
||||||
if (eq_save_dirty_gain() == 0) {
|
if (eq_save_dirty_gain() == 0) {
|
||||||
|
// debug_printf("Gain synced to Flash successfully\n");
|
||||||
} else {
|
} else {
|
||||||
|
//debug_printf("Failed to sync gain to Flash\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 独立保存脏的模式名称
|
// 独立保存脏的模式名称
|
||||||
if (eq_save_dirty_names() == 0) {
|
if (eq_save_dirty_names() == 0) {
|
||||||
|
// debug_printf("Mode names synced to Flash successfully\n");
|
||||||
} else {
|
} else {
|
||||||
|
//debug_printf("Failed to sync mode names to Flash\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -699,6 +705,7 @@ void AudioHwInit()
|
|||||||
/* Configures the external audio hardware for the required sample frequency */
|
/* Configures the external audio hardware for the required sample frequency */
|
||||||
void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, unsigned sampRes_DAC, unsigned sampRes_ADC)
|
void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, unsigned sampRes_DAC, unsigned sampRes_ADC)
|
||||||
{
|
{
|
||||||
|
g_samfreq = samFreq;
|
||||||
{
|
{
|
||||||
sw_pll_fixed_clock(mClk);
|
sw_pll_fixed_clock(mClk);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,9 +202,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if EQ_EN
|
#if EQ_EN
|
||||||
if (!is_eq_disabled()) {
|
|
||||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio);
|
buffer_exchange(uc_eq_data, sampsFromUsbToAudio);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
sampsFromAudioToUsb[0] = sampsFromUsbToAudio[0];
|
sampsFromAudioToUsb[0] = sampsFromUsbToAudio[0];
|
||||||
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1];
|
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1];
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
int eq_flash_initialized = 0;
|
int eq_flash_initialized = 0;
|
||||||
extern unsigned int is_mode_changed(void);
|
extern unsigned int is_mode_changed(void);
|
||||||
extern void change_eq_mode(unsigned sample_freq);
|
extern void change_eq_mode(unsigned sample_freq);
|
||||||
extern unsigned int g_samfreq;
|
|
||||||
extern void clear_eq_status(unsigned sample_freq, unsigned ch_no);
|
extern void clear_eq_status(unsigned sample_freq, unsigned ch_no);
|
||||||
extern unsigned int g_request_eq_mode;
|
extern unsigned int g_request_eq_mode;
|
||||||
extern unsigned int g_eq_enable; // 改动原因:添加EQ使能开关外部声明,用于初始化时检查EQ状态
|
extern unsigned int g_eq_enable; // 改动原因:添加EQ使能开关外部声明,用于初始化时检查EQ状态
|
||||||
@@ -132,7 +131,7 @@ void dsp_core0(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sample_freq = g_samfreq;
|
sample_freq = 48000;
|
||||||
audio_in_samples[0] = read_from_ring_buffer(0);
|
audio_in_samples[0] = read_from_ring_buffer(0);
|
||||||
audio_in_samples[1] = read_from_ring_buffer(1);
|
audio_in_samples[1] = read_from_ring_buffer(1);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "share_buffer.h"
|
#include "share_buffer.h"
|
||||||
#define RING_BUFFER_SIZE 128
|
#define RING_BUFFER_SIZE 512
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int buffer[RING_BUFFER_SIZE];
|
int buffer[RING_BUFFER_SIZE];
|
||||||
|
|||||||
Reference in New Issue
Block a user