[linux-sunxi] Re: patch for I2S test on 'mripard' A20 wip-i2s branch

2016-01-15 Thread Andrea Venturi


Il giorno giovedì 14 gennaio 2016 14:25:34 UTC+1, mar...@r2r.nl ha scritto:
>
> On Wednesday, January 13, 2016 at 6:49:03 AM UTC+1, Andrea Venturi wrote: 
> > hello, 
> > 
> > 
> > i've tested the experimental github branch for I2S DAI mainline linux 
> driver on: 
> >  https://github.com/mripard/linux/tree/sunxi/wip/a20-i2s 
> > 
> > 
> > 
> > my HW setup actually is: 
> > an Olimex A20-SOM with EValuation Board: 
> https://www.olimex.com/Products/SOM/A20/A20-SOM-EVB/the Audio DAC is a 
> PCM5102x based low cost device: 
> http://www.aliexpress.com/item/PCM5102-DAC-Decoder-I2S-Player-Assembled-Board-32Bit-384K-Beyond-ES9023-PCM1794/32579339671.html
>  
>
 

> ...
>
> What would be the best way tot test this for me ?



this is a pretty wide question, if you do not elaborate a bit about your 
starting point! :-)

you mean software or hardware wise? 

here the easiest way, AFAIK

* hardware: you need an A20 based SBC with I2S0 pins exposed (BCLK LRCLK 
SDO0) and a "dumb" codec (i.e. one that "sync" at any reasonable sample 
rate in the incoming rate

* sw wise: mripard's wip/a20-i2s and patches i attached. 
https://github.com/mripard/linux/tree/sunxi/wip/a20-i2s   

then put in place a rootfs with some kind of media player like aplay, then 
boot the new kernel with properly configured audio modules (mainly A20 I2S 
DAI) . BTW i've not tested the driver hardcoded inside kernel.

of course you need to take care of any difference on your setup, for 
example enable the devices in your own DTS/DTB and so on..

bye

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[linux-sunxi] Re: patch for I2S test on 'mripard' A20 wip-i2s branch

2016-01-14 Thread martijn
On Wednesday, January 13, 2016 at 6:49:03 AM UTC+1, Andrea Venturi wrote:
> hello,
> 
> 
> i've tested the experimental github branch for I2S DAI mainline linux driver 
> on:
>  https://github.com/mripard/linux/tree/sunxi/wip/a20-i2s
> 
> 
> 
> my HW setup actually is:
> an Olimex A20-SOM with EValuation Board: 
> https://www.olimex.com/Products/SOM/A20/A20-SOM-EVB/the Audio DAC is a 
> PCM5102x based low cost device: 
> http://www.aliexpress.com/item/PCM5102-DAC-Decoder-I2S-Player-Assembled-Board-32Bit-384K-Beyond-ES9023-PCM1794/32579339671.html
> let me state in advance i've no economic interest at all in these specific 
> vendors or products! :-)
> 
> 
> BTW the PCM510x DAC is a pretty simple device with no cfg at all on the 
> software side (there's no I2C or SPI bus [*]) and it does need only three 
> wires on the I2S side (BITCLK, LRCLK and DATAIN) as the local system clock is 
> "generated" internally with some kind of PLL.
> 
> 
> so, as technically speaking, the "simple sound card" need two entries for the 
> two "legs" (DAI+CODEC) of an audio connection, i had to put in place a pretty 
> simple "stub" driver of the PCM codec (patch 0001); this PCM510x codec driver 
> needs to be enabled in kernel config for module creation. (also the I2S sunxi 
> DAI has to be enabled there)
> 
> 
> then in patch 0004 there are the DTS entries for the A20-OLIMEX-SOM EVB 
> entries enabling the I2S DAI based audio card (the patched DTS enables also 
> the analog audio codec here)
> 
> 
> at this point, as per my tests,we could alreay have a bitstream when doing a 
> playback with aplay but with wrong clocks (slower) on BITCLK and LRCLK pins. 
> 
> 
> AFAICS this is happening for two reasons:
> the 4 clock (PLL2x1 .. PLL2x8) entries in DTSI about i2s0 on the clk 
> compatible = "allwinner,sun4i-a10-mod1-clk" are reversed , look at others clk 
> entries for spdif/ac97 to see they do not match (patch 0002)
> the mod1_clk clock composite driver was not able to set parent rate for a 
> missing flag (patch 0003), thanx to mripard for the hint on IRC. 
> after these four patches applied, the playback is working "flawlessly" (a 
> part of some "scratching frames" in the playback start.. some kind of audio 
> muting would be useful at start).
> 
> 
> a (not so subtle) issue come to mind if both analog audio codec and I2S DAI 
> try to playback two streams with incompatible sample rate (44100 and 48000 
> for example), i suppose the latest starting would reprogram the PLL2 in a way 
> not compatible with the first one. some kind of locking preventing this issue 
> would be needed in the long run.. 
> 
> 
> i post this mail for further consideration and tests from the linux-sunxi 
> community; as i've been told by Maxime Ripard, we are still far from having a 
> mainlining of this driver because it would need a proper submission to 
> relevant linux group of interests and maintainers (Alsa and ARM i suppose), 
> and that's something i'm actually not really ready to properly tackle! :-)
> 
> 
> me, i'm actually considering to test and implement also the "I2S slave mode" 
> where clocks come from "codec" (with a different HW codec, of course and 
> report if something useful comes out..)
> 
> 
> hope this is useful for someone, anyway. that's all, bye
> 
> 
> Andrea
> 
> 
> [*] technically speaking there's a "jumper" on the DAC board (selecting from 
> "I2S" formatted to LEFT justified I2S data) that is "statically" forced to 
> one level (actually i tested I2S only) and i suppose it could be configured 
> with an additional GPIO line between SOC and DAC board as selectable on the 
> fly at startup or maybe runtime too, but i don't see it a compelling or 
> missing feature at all. who carez! :-)

What would be the best way tot test this for me ?

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.