nikkov Posted November 16, 2019 Posted November 16, 2019 Hi, I try working with i2s driver on last armbian (5.99 kernel 4.19.84) with nanopi neo and found trouble with I2S clock - it has very excessive jitter (see attached screen from my oscilloscope). I use small dts overlay for enable i2s and mainline i2s code without changes and with changes from codekipper, nanopi neo and neo 2 with same result, but old armbian image 5.65 (4.14.17) working without problem. I also found a mention of a similar problem on forum volumio sun8i-h3-i2s0.dts /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3"; fragment@0 { target-path = "/"; __overlay__ { pcm5102a: pcm5102a { #sound-dai-cells = <0>; compatible = "ti,pcm5102a"; pcm510x,format = "i2s"; }; }; }; fragment@1 { target = <&i2s0>; __overlay__ { status = "okay"; pinctrl-0 = <&i2s0_pins>; sound-dai = <&pcm5102a>; pinctrl-names = "default"; }; }; fragment@2 { target-path = "/"; __overlay__ { sound_i2s { compatible = "simple-audio-card"; simple-audio-card,name = "I2S-master"; simple-audio-card,mclk-fs = <256>; simple-audio-card,format = "i2s"; status = "okay"; simple-audio-card,cpu { sound-dai = <&i2s0>; }; simple-audio-card,codec { sound-dai = <&pcm5102a>; }; }; }; }; };
nikkov Posted November 22, 2019 Author Posted November 22, 2019 I made some investigation and found that unstable phase is a consequence of sigma-delta modulation for audio PLL from this commit Sigma-delta modulation make more exact frequency but it leads variable phase of clocks. This means that with the kernel> 4.15 some codecs will not work, as they will not be able to synchronize with the clocks. My PCM5102A may work only with 48k, but not higher
HEAudio Posted August 21, 2020 Posted August 21, 2020 Any fix for that? I installed a rockpi S a week ago with new kernel with no problems.
Christos Posted January 24, 2021 Posted January 24, 2021 On 11/22/2019 at 5:20 AM, nikkov said: I made some investigation and found that unstable phase is a consequence of sigma-delta modulation for audio PLL from this commit Sigma-delta modulation make more exact frequency but it leads variable phase of clocks. This means that with the kernel> 4.15 some codecs will not work, as they will not be able to synchronize with the clocks. My PCM5102A may work only with 48k, but not higher Hi @nikkov Although quite more than a year old thread but it looks that I also stumbled on that problem too. Terrible phase noise of the produced bitclock in all samplerates tested (48/96/192KHz). Attached the relevant oscilloscope screenshot. It seems that this bitclock phase instability, jitter, creates problems in codec/DAC/ADC parts that have internal PLL and the outcome in my case is a bit of audible noise during play. Tested the same board/hardware with a RPi and it works ok, but with OPiPC and latest Armbian with kernel 5.10.8 is having this audible output noise problem. Did you manage to have a fix or possibly reverted the mentioned patch succesfully ? (https://github.com/megous/linux/commit/417a54f606c4ccf75023da0d165febe1a30e2764#diff-874a1d4d688766992a150cf3b81a4d8c) Christos
Recommended Posts