AnsweredAssumed Answered

i.MX6 I2S output

Question asked by Pawel Krzyzanowski on Dec 14, 2015


I am using I.MX6sl processor and would like to stream some I2S audio. How to do this in simplest way?

Since board I use is similar to imx6slevk board, I start with small changes to wm8962 codec.

I comment checking ID where code was 'goto err_enable'

Results I have: wm8962 is seen and available form Linux user-space


Linux :~# aplay -L null     Discard all samples (playback) or generate zero samples (capture) sysdefault:CARD=wm8962audio     wm8962-audio,      Default Audio Device Linux :~# ./  wm8962 1-001a: DSPCLK is 11289600Hz, BCLK 1411200Hz, LRCLK: 44100Hz. wm8962 1-001a: DSPCLK is 11289600Hz, BCLK 1411200Hz, LRCLK: 44100Hz. POST_PMU: HPOUTL PGA event failed: -5 POST_PMU: HPOUTR PGA event failed: -5 POST_PMU: SPKOUTL PGA event failed: -5 POST_PMU: SPKOUTR PGA event failed: -5 wm8962 1-001a: DC servo timed out Playing WAVE 'audiocheck.net_sin_1000Hz_-3dBFS_10s.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono


But I don't see correct output (totally nothing on BCLK/LRCLK/DATA and 10MHz on MCLK) form i.MX on oscilloscope. PGA event's are for mic and speaker so I can skip it now (am I right?). Strange for me is double printf "wm8962 1-001a: DSPCLK is 11289600Hz, BCLK 1411200Hz, LRCLK: 44100Hz" Since I have it in one place  (in function wm8962_configure_bclk).



As it comes to hardware I have AUD3 routed (hw.jpg). And my setting during initialization.

static struct mxc_audio_platform_data wm8962_data = {   .ssi_num = 1,   .src_port = 2,   .ext_port = 3,   .hp_gpio = -1,   .hp_active_low = 1,   .mic_gpio = -1,   .mic_active_low = 1,   .init = mxc_wm8962_init,   .clock_enable = wm8962_clk_enable, };

Which looks ok for me and I change Master clock:

//rate = clk_round_rate(extern_audio_root, 26000000);  //org rate = clk_round_rate(extern_audio_root, 11289600);    // mine


Any ideas why I don't have I2S audio out? (I don't have anything connected to output yet).

Original Attachment has been moved to: