[alsa-devel] [RFC][PATCH 1/2] ASoC: add snd_soc_of_parse_daifmt()

Stephen Warren swarren at wwwdotorg.org
Wed Dec 5 21:42:05 CET 2012


On 12/05/2012 12:55 AM, Kuninori Morimoto wrote:
> 
> Hi Stephen
> Cc  Mark
> 
> Thank you for your reply
> 
>>> +	ret |= __snd_soc_of_parse_daifmt(np, prefix, fmt,
>>> +					 "i2s", SND_SOC_DAIFMT_I2S);
>>> +	ret |= __snd_soc_of_parse_daifmt(np, prefix, fmt,
>>> +					 "right_j", SND_SOC_DAIFMT_RIGHT_J);
>>> +	ret |= __snd_soc_of_parse_daifmt(np, prefix, fmt,
>>> +					 "left_j", SND_SOC_DAIFMT_LEFT_J);
>>> +	ret |= __snd_soc_of_parse_daifmt(np, prefix, fmt,
>>> +					 "dsp_a", SND_SOC_DAIFMT_DSP_A);
>>> +	ret |= __snd_soc_of_parse_daifmt(np, prefix, fmt,
>>> +					 "dsp_b", SND_SOC_DAIFMT_DSP_B);
>>
>> I'd expect to see something more like:
>>
>> fmt = of_property_read_u32_array(np, "bit-format");
> 
> Ahh... I see.
> 
>> Well, once a DT binding is created, you can't change the numbers, or you
>> would break the ability for an old DT to work with a newer kernel.
> 
> OK. I understand.
> 
>>> How about to use string ?
>>>
>>>   snd.soc.daifmt.format      = "left_j"
>>>   snd.soc.daifmt.clock_gate  = "cont"
>>>   snd.soc.daifmt.inversion   = "ib_nf"
>>>   snd.soc.daifmt.hw_clock    = "cbs_cfm"
>>
>> That's probably the best we can do for now. Using a pre-processor would
>> be best:
>>
>> #define SND_SOC_DAIFMT_LEFT_J 3
>>
>> snd.soc.daifmt.format = <SND_SOC_DAIFMT_LEFT_J>;
>>
>> ... but we can't do that yet...
> 
> Thank you.
> 
> I tried v2 of snd_soc_of_parse_daifmt() which is using "string" and "array" style
> 
> 	[prefix]snd,soc,daifmt = "i2c", "nb_if", "cbm_cfm";

I assume you mean i2s not i2c there.

That seems to be overloading one property so that it contains a lot of
separate data items. I'd expect separate properties for the format, the
bitclock inversion, the frame inversion, the bitclock master, and the
frame master.



More information about the Alsa-devel mailing list