ASoC: pcm3060: Add DT property for single-ended output
authorKirill Marinushkin <kmarinushkin@birdec.tech>
Mon, 12 Nov 2018 07:08:33 +0000 (08:08 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 14 Nov 2018 00:59:33 +0000 (16:59 -0800)
DAC output may be differential (default) or single-ended.

Signed-off-by: Kirill Marinushkin <kmarinushkin@birdec.tech>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/pcm3060.c
sound/soc/codecs/pcm3060.h

index 494d9d662be8d084113e5720a2c3e86b3331eaf2..5f479aa6109713dfd1f60e0ddfc70259f0304b19 100644 (file)
@@ -274,9 +274,23 @@ EXPORT_SYMBOL(pcm3060_regmap);
 
 /* device */
 
+static void pcm3060_parse_dt(const struct device_node *np,
+                            struct pcm3060_priv *priv)
+{
+       priv->out_se = of_property_read_bool(np, "ti,out-single-ended");
+}
+
 int pcm3060_probe(struct device *dev)
 {
        int rc;
+       struct pcm3060_priv *priv = dev_get_drvdata(dev);
+
+       if (dev->of_node)
+               pcm3060_parse_dt(dev->of_node, priv);
+
+       if (priv->out_se)
+               regmap_update_bits(priv->regmap, PCM3060_REG64,
+                                  PCM3060_REG_SE, PCM3060_REG_SE);
 
        rc = devm_snd_soc_register_component(dev, &pcm3060_soc_comp_driver,
                                             pcm3060_dai,
index fd89a68aa8a77355641aa410bbf6c6507925f508..c895cf40ee10aae84ed0b7f434db1a7bead8fa58 100644 (file)
@@ -25,6 +25,7 @@ struct pcm3060_priv_dai {
 struct pcm3060_priv {
        struct regmap *regmap;
        struct pcm3060_priv_dai dai[PCM3060_DAI_IDS_NUM];
+       u8 out_se: 1;
 };
 
 int pcm3060_probe(struct device *dev);