DSD ports could be reused for I2S ports, how to cansel this?

Technical questions regarding the XTC tools and programming with XMOS.
hushange
Member++
Posts: 30
Joined: Tue Oct 11, 2016 7:08 am

DSD ports could be reused for I2S ports, how to cansel this?

Post by hushange »

in usb audio firmware, the app_usb_aud_skc_su1 reuse DSD ports for I2S ports:
DSD ports:
<Port Location="XS1_PORT_1A" Name="PORT_DSD_CLK"/>
<Port Location="XS1_PORT_1C" Name="PORT_DSD_DAC0"/>
<Port Location="XS1_PORT_1D" Name="PORT_DSD_DAC1"/>

I2S ports:
<Port Location="XS1_PORT_1A" Name="PORT_I2S_BCLK"/>
<Port Location="XS1_PORT_1C" Name="PORT_I2S_LRCLK"/>
<Port Location="XS1_PORT_1D" Name="PORT_I2S_DAC0"/>

when set CODEC_MASTER=0, the DSD and I2S can work well.
but if set -DCODEC_MASTER=1 and -DDSD_CHANS_DAC=2, there is some error when compile:

sc_usb_audio/module_usb_audio/audio.xc:793:21: error: output to an input-designated port
p_lrclk <: 0;
^~~~~~~
sc_usb_audio/module_usb_audio/audio.xc:794:21: error: output to an input-designated port
p_bclk <: 0;


so how to cancel the ports reuse between DSD and I2S?
User avatar
larry
Respected Member
Posts: 275
Joined: Fri Mar 12, 2010 6:03 pm

Post by larry »

I can build CODEC master with DSD successfully using these build options:

Code: Select all

-DOUTPUT_FORMAT_COUNT=3 -DDSD_CHANS_DAC=2 -DCODEC_MASTER
and adding the following to xp_skc_su1.xn:

Code: Select all

            <Port Location="XS1_PORT_1A"  Name="PORT_DSD_CLK"/>
            <Port Location="XS1_PORT_1C"  Name="PORT_DSD_DAC0"/>
            <Port Location="XS1_PORT_1D"  Name="PORT_DSD_DAC1"/>
What version of USB audio software version are you using?
hushange
Member++
Posts: 30
Joined: Tue Oct 11, 2016 7:08 am

Post by hushange »

Hi Larry:

many thanks for your reply.

my firmware version is 6.15.2.
i have tried your setting, you should remove CODEC_MASTER setting as bellow:
//#define CODEC_MASTER 0 (customdefines.h of app_usb_aud_skc_su1)
otherwise your setting -DCODEC_MASTER=1 in Makefile don't take effect, so it compile well.

i tried remove CODEC_MASTER setting in customdefines.h, and set CODEC_MASTER=1 in Makefile,
it compile errors as i writed.

in our product, we want to take XMOS as I2S slave, we also need DSD feathure, so whether this can be implemented ?

here is my Makefile configure:
# Audio Class 2, No Input, Output, No MIDI, No SPDIF
XCC_FLAGS_2xoxxslave = $(BUILD_FLAGS) -DNUM_USB_CHAN_IN=0 -DI2S_CHANS_ADC=0 -DI2S_CHANS_DAC=2 -DSPDIF_TX=0 -DOUTPUT_FORMAT_COUNT=3 -DDSD_CHANS_DAC=2 -DCODEC_MASTER=1
INCLUDE_ONLY_IN_2xoxxslave =
User avatar
larry
Respected Member
Posts: 275
Joined: Fri Mar 12, 2010 6:03 pm

Post by larry »

I noticed in other forum posts on this topic, others have pointed out that the current XMOS USB audio code only does DSD in CODEC slave mode (xCORE master).

Adding support for DSD in CODEC master mode may be relatively easy and largely come down to not doing DSD clock outputs. There is no word clock or sample alignment simply because DSD is a stream of 1-bit samples.
hushange
Member++
Posts: 30
Joined: Tue Oct 11, 2016 7:08 am

Post by hushange »

yes, i have got some reply from your colleague,
thanks a lot to you.