[PATCH v3 2/6] ASoC: WM8903: Create default platform data structure

Stephen Warren swarren at nvidia.com
Fri Dec 2 07:49:20 EST 2011


When no platform data is supplied, point pdata at a default platform
structure. This enables two future changes:

a) Defines the default platform data values in a single place.
b) There is always a valid pdata pointer, so some conditional code can
   be simplified by a later patch.

Based on work by John Bonesio, but significantly reworked since then.

Signed-off-by: Stephen Warren <swarren at nvidia.com>
---
 sound/soc/codecs/wm8903.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index 0d1640e..8249571 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -1905,6 +1905,7 @@ static void wm8903_free_gpio(struct snd_soc_codec *codec)
 static int wm8903_probe(struct snd_soc_codec *codec)
 {
 	struct wm8903_platform_data *pdata = dev_get_platdata(codec->dev);
+	struct wm8903_platform_data defpdata;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 	int ret, i;
 	int trigger, irq_pol;
@@ -1931,6 +1932,18 @@ static int wm8903_probe(struct snd_soc_codec *codec)
 
 	wm8903_reset(codec);
 
+	/* Default platform data, for use if none is supplied */
+	defpdata.irq_active_low = false;
+	defpdata.micdet_cfg = 0;
+	defpdata.micdet_delay = 0;
+	defpdata.gpio_base = -1;
+	for (i = 0; i < ARRAY_SIZE(defpdata.gpio_cfg); i++)
+		defpdata.gpio_cfg[i] = 0xffffffff;
+
+	/* If no platform data was supplied, use the defaults */
+	if (!pdata)
+		pdata = &defpdata;
+
 	/* Set up GPIOs and microphone detection */
 	if (pdata) {
 		bool mic_gpio = false;
-- 
1.7.0.4



More information about the devicetree-discuss mailing list