Hi Nicolin,
On Wed, Sep 06, 2017 at 08:35:50PM +0200, Łukasz Majewski wrote:
clocks = <&clks IMX6QDL_CLK_SSI2_IPG>, <&clks IMX6QDL_CLK_SSI2>; clock-names = "ipg", "baud";
dailink_master: cpu { sound-dai = <&ssi2>; clock = <&SSSS>;
If possible I do prefer a solution, which uses only DTS. Side question - how to refer to baud clock from [1]?
Just add a property to this cpu node like: clock = <&clks IMX6QDL_CLK_SSI2>;
This doesn't solve the issue:
root@display5:~# speaker-test
speaker-test 1.1.3
Playback device is default Stream parameters are 48000Hz, S16_LE, 1 channels Using 16 octaves of pink noise Rate set to 48000Hz (requested 48fsl-ssi-dai 202c000.ssi: bitclk > ipgclk/5 000Hz) Buffer size range from 64fsl-ssi-dai 202c000.ssi: ASoC: can't set 202c000.ssi hw params: -22 to 65536 Period size range from 32 to 8191 Using max buffer size 65536 Periods = 4 Unable to set hw params for playback: Invalid argument Setting of hwparams failed: Invalid argument
system-clock-frequency = <XXXX>;
This would not be necessary unless you want to specify a clock rate so as to override the clock rate configuration in hw_params().
This is the right solution based on current simple-card driver. For SSI (having two clocks), you have to specify the baud clock in the cpu node like that. I believe this is what the simple-card designer expected users to do since the cpu node is the first place that the driver tries to look at.
I will give a shoot the option with adding the ipg clock.
No, not ipg clock. You should use the second clock -- baud clock.