[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bb23ba754ed1f51c9b20ccd4a2b87520ce7c1893.1462285398.git.Adam.Thomson.Opensource@diasemi.com>
Date: Fri, 10 Jun 2016 11:16:07 +0100
From: Adam Thomson <Adam.Thomson.Opensource@...semi.com>
To: Mark Brown <broonie@...nel.org>,
Liam Girdwood <lgirdwood@...il.com>,
Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>
CC: <alsa-devel@...a-project.org>, <linux-kernel@...r.kernel.org>,
Support Opensource <support.opensource@...semi.com>,
Sathyanarayana Nujella <sathyanarayana.nujella@...el.com>
Subject: [PATCH 2/3] ASoC: da7219: Add ACPI parsing support
This update allows for parsing of ACPI, in addition to existing DT
support.
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@...semi.com>
Tested-by: Sathyanarayana Nujella <sathyanarayana.nujella@...el.com>
---
sound/soc/codecs/da7219-aad.c | 32 ++++++++++++++++++++++++++++----
sound/soc/codecs/da7219.c | 7 ++++---
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/sound/soc/codecs/da7219-aad.c b/sound/soc/codecs/da7219-aad.c
index c4853a8..e04ee4f 100644
--- a/sound/soc/codecs/da7219-aad.c
+++ b/sound/soc/codecs/da7219-aad.c
@@ -15,6 +15,7 @@
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/of_device.h>
+#include <linux/acpi.h>
#include <linux/property.h>
#include <linux/pm_wakeirq.h>
#include <linux/slab.h>
@@ -27,7 +28,6 @@
#include "da7219.h"
#include "da7219-aad.h"
-
/*
* Detection control
*/
@@ -383,7 +383,7 @@ static irqreturn_t da7219_aad_irq_thread(int irq, void *data)
}
/*
- * DT to pdata conversion
+ * DT/ACPI to pdata conversion
*/
static enum da7219_aad_micbias_pulse_lvl
@@ -539,6 +539,26 @@ static enum da7219_aad_adc_1bit_rpt
}
}
+#ifdef CONFIG_ACPI
+static inline bool da7219_aad_of_acpi_node_matched(struct fwnode_handle *child,
+ const char *name)
+{
+ struct acpi_data_node *acpi_node = to_acpi_data_node(child);
+
+ if (strcmp(acpi_node->name, name) == 0)
+ return true;
+ else
+ return false;
+}
+#else
+static inline bool da7219_aad_of_acpi_node_matched(struct fwnode_handle *child,
+ const char *name)
+{
+ return false;
+}
+
+#endif /* CONFIG_ACPI */
+
static struct fwnode_handle *da7219_aad_of_named_fwhandle(struct device *dev,
const char *name)
{
@@ -551,6 +571,9 @@ static struct fwnode_handle *da7219_aad_of_named_fwhandle(struct device *dev,
of_node = to_of_node(child);
if (of_node_cmp(of_node->name, name) == 0)
return child;
+ } else if (is_acpi_data_node(child)) {
+ if (da7219_aad_of_acpi_node_matched(child, name))
+ return child;
}
}
@@ -787,8 +810,9 @@ int da7219_aad_init(struct snd_soc_codec *codec)
da7219->aad = da7219_aad;
da7219_aad->codec = codec;
- /* Handle any DT/platform data */
- if ((codec->dev->of_node) && (da7219->pdata))
+ /* Handle any DT/ACPI/platform data */
+ if (((codec->dev->of_node) || is_acpi_node(codec->dev->fwnode)) &&
+ (da7219->pdata))
da7219->pdata->aad_pdata = da7219_aad_of_to_pdata(codec);
da7219_aad_handle_pdata(codec);
diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
index 6c6c8db..bc32322 100644
--- a/sound/soc/codecs/da7219.c
+++ b/sound/soc/codecs/da7219.c
@@ -14,6 +14,7 @@
#include <linux/clk.h>
#include <linux/i2c.h>
#include <linux/of_device.h>
+#include <linux/acpi.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/slab.h>
@@ -1418,7 +1419,7 @@ static struct snd_soc_dai_driver da7219_dai = {
/*
- * DT
+ * DT/ACPI
*/
static const struct of_device_id da7219_of_match[] = {
@@ -1656,8 +1657,8 @@ static int da7219_probe(struct snd_soc_codec *codec)
break;
}
- /* Handle DT/Platform data */
- if (codec->dev->of_node)
+ /* Handle DT/ACPI/Platform data */
+ if (codec->dev->of_node || is_acpi_node(codec->dev->fwnode))
da7219->pdata = da7219_of_to_pdata(codec);
else
da7219->pdata = dev_get_platdata(codec->dev);
--
1.9.3
Powered by blists - more mailing lists