ASoC: jack - add_gpiods accepts filled descriptors
authorDylan Reid <dgreid@chromium.org>
Fri, 22 May 2015 22:09:20 +0000 (15:09 -0700)
committerMark Brown <broonie@kernel.org>
Mon, 25 May 2015 12:11:45 +0000 (13:11 +0100)
Allow for the desc field to be pre-filled when adding gpios to a jack.
This allows drivers to get the gpios and decide if they should be added
to the list or not.  Specifically this will allow the gpio jack driver
to add gpios based on device property specifications.

Signed-off-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-jack.c

index 9f60c25c4568e7e1280e1ca28058c48c0ca65efa..171c4291ea211fd2caaa83573bf150e3f6597a83 100644 (file)
@@ -315,8 +315,11 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
                        goto undo;
                }
 
-               if (gpios[i].gpiod_dev) {
-                       /* GPIO descriptor */
+               if (gpios[i].desc) {
+                       /* Already have a GPIO descriptor. */
+                       goto got_gpio;
+               } else if (gpios[i].gpiod_dev) {
+                       /* Get a GPIO descriptor */
                        gpios[i].desc = gpiod_get_index(gpios[i].gpiod_dev,
                                                        gpios[i].name,
                                                        gpios[i].idx, GPIOD_IN);
@@ -344,7 +347,7 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
 
                        gpios[i].desc = gpio_to_desc(gpios[i].gpio);
                }
-
+got_gpio:
                INIT_DELAYED_WORK(&gpios[i].work, gpio_work);
                gpios[i].jack = jack;