Merge branch 'master' of github.com:xmos/lib_xua

This commit is contained in:
xross
2018-01-26 12:05:28 +00:00
7 changed files with 23 additions and 24 deletions

1
.gitignore vendored
View File

@@ -21,3 +21,4 @@ module_dfu/host/xmosdfu/xmosdfu
.lock-waf_*
.waf-*/
build/
host/xmosdfu/xmosdfu

View File

@@ -17,6 +17,7 @@ lib_xua Change Log
so it shows up with a descriptive name in Windows Device Manager
- CHANGE: DFU_BCD_DEVICE removed (now uses BCD_DEVICE)
- CHANGE: Renaming in descriptors.h to avoid clashes with application
- CHANGE: Make device reboot function no-argument (was one channel end)
- RESOLVED: FIR gain compensation for PDM mics set incorrectly for divide of 8
- RESOLVED: Incorrect xmosdfu DYLD path in test script code
- RESOLVED: xmosdfu cannot find XMOS device on modern MacBook Pro (#17897)

View File

@@ -282,7 +282,6 @@ static inline void DoDsdDop(int &everyOther, unsigned samplesOut[], unsigned &ds
asm volatile("out res[%0], %1"::"r"(p_dsd_dac[1]),"r"(bitrev(dsdSample_r)));
}
}
#endif
/* When DSD is enabled and streaming is standard PCM, this function checks for a series of DoP markers in the upper byte.
If found it will exit deliver() with the command to restart in DoP mode.
@@ -337,6 +336,7 @@ static inline int DoDsdDopCheck(unsigned &dsdMode, int &dsdCount, unsigned curSa
#endif
return 1;
}
#endif
#if !CODEC_MASTER
static inline void InitPorts_master(unsigned divide)
@@ -406,7 +406,7 @@ static inline void InitPorts_slave(unsigned divide)
p_lrclk when pinseq(1) :> void;
p_lrclk when pinseq(0) :> void;
p_lrclk when pinseq(1) :> void;
#ifdef I2S_MODE_TDM
#if I2S_MODE_TDM
p_lrclk when pinseq(0) :> void;
p_lrclk when pinseq(1) :> void @ tmp;
#else
@@ -609,7 +609,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out
/* LR clock delayed by one clock, This is so MSB is output on the falling edge of BCLK
* after the falling edge on which LRCLK was toggled. (see I2S spec) */
/* Generate clocks LR Clock low - LEFT */
#ifdef I2S_MODE_TDM
#if I2S_MODE_TDM
p_lrclk <: 0x00000000;
#else
p_lrclk <: 0x80000000;
@@ -736,7 +736,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out
}
#endif
#ifdef I2S_MODE_TDM
#if I2S_MODE_TDM
if(frameCount == (I2S_CHANS_PER_FRAME-2))
p_lrclk <: 0x80000000;
else
@@ -772,13 +772,12 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out
} // !dsdMode
if((DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0))
{
if(DoDsdDopCheck(dsdMode, dsdCount, curSamFreq, samplesOut, dsdMarker) == 0)
return 0;
}
#if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0)
if(DoDsdDopCheck(dsdMode, dsdCount, curSamFreq, samplesOut, dsdMarker) == 0)
return 0;
#endif
#ifdef I2S_MODE_TDM
#if I2S_MODE_TDM
/* Increase frameCount by 2 since we have output two channels (per data line) */
frameCount+=2;
if(frameCount == I2S_CHANS_PER_FRAME)
@@ -1145,7 +1144,7 @@ unsigned static deliver_slave(chanend ?c_out, chanend ?c_spd_out
#endif // (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0)
#ifdef I2S_MODE_TDM
#if I2S_MODE_TDM
/* Increase frameCount by 2 since we have output two channels (per data line) */
frameCount+=2;
if(frameCount == I2S_CHANS_PER_FRAME)

View File

@@ -56,7 +56,7 @@
#if (XUA_DFU_EN == 1)
#include "xua_dfu.h"
#define DFU_IF_NUM INPUT_INTERFACES + OUTPUT_INTERFACES + MIDI_INTERFACES + 1
extern void device_reboot(chanend);
extern void device_reboot(void);
#endif
unsigned int DFU_mode_active = 0; // 0 - App active, 1 - DFU active
@@ -579,7 +579,7 @@ void XUA_Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl,
if(reset)
{
DFUDelay(50000000);
device_reboot(c_audioControl);
device_reboot();
}
}
#endif
@@ -794,7 +794,7 @@ void XUA_Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl,
/* Send reboot command */
DFUDelay(5000000);
device_reboot(c_audioControl);
device_reboot();
}
}
#endif

View File

@@ -1,5 +1,6 @@
#include <xs1.h>
#include <platform.h>
#include <print.h>
#include <xs1_su.h>
#define XS1_SU_PERIPH_USB_ID 0x1
@@ -30,8 +31,10 @@ static void reset_tile(unsigned const tileId)
write_sswitch_reg_no_ack(tileId, 6, pllVal);
}
/* Note - resetting is per *node* not tile */
static inline void device_reboot_aux(void)
/* Reboots XMOS device by writing to the PLL config register
* Note - resetting is per *node* not tile
*/
void device_reboot(void)
{
#if (XUD_SERIES_SUPPORT == 1)
/* Disconnect from bus */
@@ -72,10 +75,10 @@ static inline void device_reboot_aux(void)
#ifdef __XS2A__
/* Reset all even tiles, starting from the remote ones */
for(unsigned int tileNum = tileArrayLength-2; tileNum>=0; tileNum-=2)
for(int tileNum = tileArrayLength-2; tileNum>=0; tileNum-=2)
#else
/* Reset all tiles, starting from the remote ones */
for(unsigned int tileNum = tileArrayLength-1; tileNum>=0; tileNum--)
for(int tileNum = tileArrayLength-1; tileNum>=0; tileNum--)
#endif
{
/* Cannot cast tileref to unsigned! */
@@ -96,11 +99,6 @@ static inline void device_reboot_aux(void)
/* Finally reboot the node this tile resides on */
reset_tile(localTileId);
#endif
}
/* Reboots XMOS device by writing to the PLL config register */
void device_reboot(chanend spare)
{
device_reboot_aux();
while(1);
while (1);
}

Binary file not shown.

Binary file not shown.