forked from PAWPAW-Mirror/lib_xua
Manually apply: [PATCH 03/19] Added checks for NUM_USB_CHAN_IN and NUM_USB_CHAN_OUT being 0 - previously build errors
This commit is contained in:
@@ -64,8 +64,12 @@ extern void device_reboot(void);
|
|||||||
unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_dig_rx)
|
unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_dig_rx)
|
||||||
{
|
{
|
||||||
unsigned sample;
|
unsigned sample;
|
||||||
|
#if NUM_USB_CHAN_OUT > 0
|
||||||
unsigned samplesOut[NUM_USB_CHAN_OUT];
|
unsigned samplesOut[NUM_USB_CHAN_OUT];
|
||||||
|
#endif
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
unsigned samplesIn[NUM_USB_CHAN_IN];
|
unsigned samplesIn[NUM_USB_CHAN_IN];
|
||||||
|
#endif
|
||||||
unsigned samplesInPrev[NUM_USB_CHAN_IN];
|
unsigned samplesInPrev[NUM_USB_CHAN_IN];
|
||||||
unsigned tmp;
|
unsigned tmp;
|
||||||
unsigned index;
|
unsigned index;
|
||||||
@@ -73,15 +77,14 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
unsigned prev=0;
|
unsigned prev=0;
|
||||||
int started = 0;
|
int started = 0;
|
||||||
#endif
|
#endif
|
||||||
#ifndef CODEC_SLAVE
|
|
||||||
int oldtime;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
for (int i=0;i<NUM_USB_CHAN_IN;i++)
|
for (int i=0;i<NUM_USB_CHAN_IN;i++)
|
||||||
{
|
{
|
||||||
samplesIn[i] = 0;
|
samplesIn[i] = 0;
|
||||||
samplesInPrev[i] = 0;
|
samplesInPrev[i] = 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
outuint(c_out, 0);
|
outuint(c_out, 0);
|
||||||
|
|
||||||
/* Check for sample freq change or new samples from mixer*/
|
/* Check for sample freq change or new samples from mixer*/
|
||||||
@@ -96,16 +99,21 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
#ifndef MIXER // Interfaces straight to decouple()
|
#ifndef MIXER // Interfaces straight to decouple()
|
||||||
(void) inuint(c_out);
|
(void) inuint(c_out);
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_IN; i++)
|
for(int i = 0; i < NUM_USB_CHAN_IN; i++)
|
||||||
{
|
{
|
||||||
outuint(c_out, samplesIn[i]);
|
outuint(c_out, samplesIn[i]);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_OUT > 0
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
||||||
{
|
{
|
||||||
samplesOut[i] = inuint(c_out);
|
samplesOut[i] = inuint(c_out);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
||||||
@@ -201,6 +209,7 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
tmp += 33;
|
tmp += 33;
|
||||||
|
|
||||||
#if (I2S_CHANS_DAC != 0)
|
#if (I2S_CHANS_DAC != 0)
|
||||||
|
#pragma loop unroll
|
||||||
for(int i = 0; i < I2S_WIRES_DAC; i++)
|
for(int i = 0; i < I2S_WIRES_DAC; i++)
|
||||||
{
|
{
|
||||||
p_i2s_dac[i] @ tmp <: 0;
|
p_i2s_dac[i] @ tmp <: 0;
|
||||||
@@ -214,7 +223,6 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
{
|
{
|
||||||
clearbuf(p_i2s_adc[i]);
|
clearbuf(p_i2s_adc[i]);
|
||||||
}
|
}
|
||||||
oldtime = tmp-1+32;
|
|
||||||
|
|
||||||
/* TODO In master mode, the i/o loop assumes L/RCLK = 32bit clocks. We should check this every interation
|
/* TODO In master mode, the i/o loop assumes L/RCLK = 32bit clocks. We should check this every interation
|
||||||
* and resync if we got a bclk glitch */
|
* and resync if we got a bclk glitch */
|
||||||
@@ -237,17 +245,22 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
{
|
{
|
||||||
#ifndef MIXER // Interfaces straight to decouple()
|
#ifndef MIXER // Interfaces straight to decouple()
|
||||||
(void) inuint(c_out);
|
(void) inuint(c_out);
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_IN; i++)
|
for(int i = 0; i < NUM_USB_CHAN_IN; i++)
|
||||||
{
|
{
|
||||||
outuint(c_out, samplesIn[i]);
|
outuint(c_out, samplesIn[i]);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_OUT > 0
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
||||||
{
|
{
|
||||||
samplesOut[i] = inuint(c_out);
|
samplesOut[i] = inuint(c_out);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
|
||||||
@@ -297,7 +310,7 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
|
|
||||||
#pragma xta endpoint "i2s_output_l"
|
#pragma xta endpoint "i2s_output_l"
|
||||||
|
|
||||||
#if (I2S_CHANS_DAC != 0)
|
#if (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0)
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 0; i < I2S_CHANS_DAC; i+=2)
|
for(int i = 0; i < I2S_CHANS_DAC; i+=2)
|
||||||
{
|
{
|
||||||
@@ -355,14 +368,16 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
for(int i = 1; i < I2S_CHANS_ADC; i += 2)
|
for(int i = 1; i < I2S_CHANS_ADC; i += 2)
|
||||||
{
|
{
|
||||||
p_i2s_adc[index++] :> sample;
|
p_i2s_adc[index++] :> sample;
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
samplesIn[i] = bitrev(sample);
|
samplesIn[i] = bitrev(sample);
|
||||||
|
|
||||||
/* Store the previous left in left */
|
/* Store the previous left in left */
|
||||||
samplesIn[i-1] = samplesInPrev[i];
|
samplesIn[i-1] = samplesInPrev[i];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SPDIF
|
#if defined(SPDIF) && (NUM_USB_CHAN_OUT > 0)
|
||||||
outuint(c_spd_out, samplesOut[SPDIF_TX_INDEX]); /* Forward sample to SPDIF txt thread */
|
outuint(c_spd_out, samplesOut[SPDIF_TX_INDEX]); /* Forward sample to SPDIF txt thread */
|
||||||
sample = samplesOut[SPDIF_TX_INDEX + 1];
|
sample = samplesOut[SPDIF_TX_INDEX + 1];
|
||||||
outuint(c_spd_out, sample); /* Forward sample to SPDIF txt thread */
|
outuint(c_spd_out, sample); /* Forward sample to SPDIF txt thread */
|
||||||
@@ -385,7 +400,7 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
|
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
#pragma xta endpoint "i2s_output_r"
|
#pragma xta endpoint "i2s_output_r"
|
||||||
#if (I2S_CHANS_DAC != 0)
|
#if (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0)
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for(int i = 1; i < I2S_CHANS_DAC; i+=2)
|
for(int i = 1; i < I2S_CHANS_DAC; i+=2)
|
||||||
{
|
{
|
||||||
@@ -440,7 +455,10 @@ unsigned deliver(chanend c_out, chanend ?c_spd_out, unsigned divide, chanend ?c_
|
|||||||
for(int i = 1; i < I2S_CHANS_ADC; i += 2)
|
for(int i = 1; i < I2S_CHANS_ADC; i += 2)
|
||||||
{
|
{
|
||||||
p_i2s_adc[index++] :> sample;
|
p_i2s_adc[index++] :> sample;
|
||||||
|
|
||||||
|
#if NUM_USB_CHAN_IN > 0
|
||||||
samplesInPrev[i] = bitrev(sample);
|
samplesInPrev[i] = bitrev(sample);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user