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_* .lock-waf_*
.waf-*/ .waf-*/
build/ 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 so it shows up with a descriptive name in Windows Device Manager
- CHANGE: DFU_BCD_DEVICE removed (now uses BCD_DEVICE) - CHANGE: DFU_BCD_DEVICE removed (now uses BCD_DEVICE)
- CHANGE: Renaming in descriptors.h to avoid clashes with application - 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: FIR gain compensation for PDM mics set incorrectly for divide of 8
- RESOLVED: Incorrect xmosdfu DYLD path in test script code - RESOLVED: Incorrect xmosdfu DYLD path in test script code
- RESOLVED: xmosdfu cannot find XMOS device on modern MacBook Pro (#17897) - 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))); 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. /* 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. 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 #endif
return 1; return 1;
} }
#endif
#if !CODEC_MASTER #if !CODEC_MASTER
static inline void InitPorts_master(unsigned divide) 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(1) :> void;
p_lrclk when pinseq(0) :> void; p_lrclk when pinseq(0) :> void;
p_lrclk when pinseq(1) :> 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(0) :> void;
p_lrclk when pinseq(1) :> void @ tmp; p_lrclk when pinseq(1) :> void @ tmp;
#else #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 /* 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) */ * after the falling edge on which LRCLK was toggled. (see I2S spec) */
/* Generate clocks LR Clock low - LEFT */ /* Generate clocks LR Clock low - LEFT */
#ifdef I2S_MODE_TDM #if I2S_MODE_TDM
p_lrclk <: 0x00000000; p_lrclk <: 0x00000000;
#else #else
p_lrclk <: 0x80000000; p_lrclk <: 0x80000000;
@@ -736,7 +736,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out
} }
#endif #endif
#ifdef I2S_MODE_TDM #if I2S_MODE_TDM
if(frameCount == (I2S_CHANS_PER_FRAME-2)) if(frameCount == (I2S_CHANS_PER_FRAME-2))
p_lrclk <: 0x80000000; p_lrclk <: 0x80000000;
else else
@@ -772,13 +772,12 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out
} // !dsdMode } // !dsdMode
if((DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0)) #if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0)
{
if(DoDsdDopCheck(dsdMode, dsdCount, curSamFreq, samplesOut, dsdMarker) == 0) if(DoDsdDopCheck(dsdMode, dsdCount, curSamFreq, samplesOut, dsdMarker) == 0)
return 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) */ /* Increase frameCount by 2 since we have output two channels (per data line) */
frameCount+=2; frameCount+=2;
if(frameCount == I2S_CHANS_PER_FRAME) 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) #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) */ /* Increase frameCount by 2 since we have output two channels (per data line) */
frameCount+=2; frameCount+=2;
if(frameCount == I2S_CHANS_PER_FRAME) if(frameCount == I2S_CHANS_PER_FRAME)

View File

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

View File

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

Binary file not shown.

Binary file not shown.