Subject: [alsa-devel] [PATCH 2/2] ASoC: samsung: Add machine driver for odroidx2

From: [email-masked] (Sylwester Nawrocki)
Date: Fri, 04 Jul 2014 13:24:36 +0200

On 04/07/14 13:10, Lars-Peter Clausen wrote:
> On 07/04/2014 01:04 PM, Sylwester Nawrocki wrote:
>> On 22/05/14 20:53, Mark Brown wrote:
>>>> +	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S
>>>>> +					| SND_SOC_DAIFMT_NB_NF
>>>>> +					| SND_SOC_DAIFMT_CBM_CFM);
>>>>> +	if (ret < 0)
>>>>> +		return ret;
>>>>> +
>>>>> +	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S
>>>>> +					| SND_SOC_DAIFMT_NB_NF
>>>>> +					| SND_SOC_DAIFMT_CBM_CFM);
>>>>> +	if (ret < 0)
>>>>> +		return ret;
>>>
>>> These are constant, set these in the dai_link.
>>
>> set_fmt also sets master/slave mode of the I2S DAI, after I moved
>> this into the cpu_dai link data structure after suspend/resume cycle
>> the I2S IP block is not being properly re-configured. Should the
>> format setting be added in resume_post callback, or is there any
>> other preferred way ? Similarly the syclk settings are being lost
>> over suspend/resume cycle and nothing restores them.
> 
> The I2S driver should save and restore it's register during suspend/resume.

OK, thanks. I checked the I2S driver does it, but only when dai->active
flags is set [1]. However, during system resume this flag is not set
(in situation where playback or capture wasn't active right before
system suspend). Is the dai->active test wrong in that driver then ?
I'm not sure if it could just be removed.

[1] http://lxr.free-electrons.com/source/sound/soc/samsung/i2s.c#L913

--
Regards,
Sylwester