@@ -60,10 +60,9 @@ int asoc_simple_parse_daifmt(struct device *dev,
struct device_node *bitclkmaster = NULL;
struct device_node *framemaster = NULL;
unsigned int daifmt;
+ unsigned int bit_frame;
- daifmt = snd_soc_of_parse_daifmt(node, prefix,
- &bitclkmaster, &framemaster);
- daifmt &= ~SND_SOC_DAIFMT_MASTER_MASK;
+ snd_soc_daifmt_parse_clock_provider(node, prefix, &bitclkmaster, &framemaster);
if (!bitclkmaster && !framemaster) {
/*
@@ -73,17 +72,15 @@ int asoc_simple_parse_daifmt(struct device *dev,
*/
dev_dbg(dev, "Revert to legacy daifmt parsing\n");
- daifmt = snd_soc_of_parse_daifmt(codec, NULL, NULL, NULL) |
- (daifmt & ~SND_SOC_DAIFMT_CLOCK_MASK);
+ bit_frame = snd_soc_daifmt_parse_clock_provider(codec, NULL, NULL, NULL);
} else {
- if (codec == bitclkmaster)
- daifmt |= (codec == framemaster) ?
- SND_SOC_DAIFMT_CBM_CFM : SND_SOC_DAIFMT_CBM_CFS;
- else
- daifmt |= (codec == framemaster) ?
- SND_SOC_DAIFMT_CBS_CFM : SND_SOC_DAIFMT_CBS_CFS;
+ bit_frame = ((codec == bitclkmaster) << 4) +
+ (codec == framemaster);
}
+ daifmt = snd_soc_daifmt_parse_format(node, prefix) |
+ snd_soc_daifmt_clock_provider_pickup(bit_frame);
+
of_node_put(bitclkmaster);
of_node_put(framemaster);