It depends on what I2S chip you are using, 'popular' chips like the WM8804 or UDA1380 have linux kernel drivers already. In theory you could just hook up the i2s IC/circuit and then load the kernel module (after you compile it) and start using your i2s sound card.
Are you designing a board for the Edison? Or are you just 'experimenting' right now? if you are just tinkering, you could get an 'already built' i2s audio module from DX or ebay to try things out.
I have been curious about I2S audio myself (I am by no means an Edison/I2S 'expert'). If you get something working post it to the forum.
One thing I am not sure about is if there is an Edison compatible implementation of the ASoC interface, If there is than you should be able to use the drivers posted on TI's site.
Just adding myself as another person looking for the same information. There seems to be very little info on using the i2s features of this module.
Someone posted a link to this document which has been the closest I've come to useful information.
Had something working with the TLV320AIC3104? You need to recompile the Linux kernel modules for audio SOC support. Maybe we could prototype something with this :
When compiling the kernel :
It seems that kernel 3.10.17 does not support the "Merrifield" Machine Audio driver for the Z34XX Atom SOC. I only found the driver for "SOC Machine Audio driver for Intel Medfield MID platform" which does not seem to be compatible. Can somebody confirm this please?
I managed to build and install the kernel with with all ASoC CODEC drivers though.
Once we get low level support for the I2S bus, which I2C bus should we use so the CODEC drivers work directly ?
Thanks for your help!
Dan, which pin should be connected to UDA1380's I2C?
I already got Waveshare UDA1380 Board.
I think both of I2S and I2C should be connected to Edison.
I rebuilt kernel with ALSA support.
But no signal appears on I2C1 and I2C6 when 'modprobe snd-soc-uda1380' or 'aplay testfile.wav' or so.
Edison's I2C pins are 1.8V, it needs voltage shifter.
But no 1.8V signal on I2C pins(viewed in osciloscope).
I think this is software(kernel or driver) problem. Isn't it?
Yes both I2S and I2C pins need to be connected.
I have been in communication with the Intel ALSA kernel developers, and there is still no support for this SOC in the kernel right now. For external CODECS to work, we need both the I2C and I2S working. Also, external CODEC drivers need to be configured to use the right I2C bus.
My initial goal was to make a TI TLV320AIC3104 CODEC work with Edison. It supports 1.8V directly, so no voltage shifter needed.
I have come to the conclusion that it is preferable to use an USB CODEC for now for the first iteration of our product. We will switch back to the I2S CODEC when adequate support and documentation is available. I have compiled the kernel with usb audio support and tested it with external USB module with the Arduino dev board (HOST mode) and it works fine.
Please keep us informed of your progress.
>> tested it with external USB module with the Arduino dev board (HOST mode) and it works fine.
Can you share which hardware you actually use?
I'm trying to find USB audio card (I'm actually fine with just stereo ADC 24bit / 96 kHz, don't need DAC).
The closest I found so far that I think should work with Edison is this:
I used a Polycom CX100 device (the only reason is that I had one already) :
The TI module should work fine.
Just a quick thing that I found, I wanted to use the USB host functionality with a Li-Ion (3.7V) battery connected to the Arduino board. It does not work, since there is no step-up converter to provide the required 5V on the board. There is only a step-down converter usable with the external power connector J1 (VIN > 5V).