Skip to contentSkip to conversation

ALSA: ASoC: ak4104: add reset line property to DT bindings

PATCH In review Daniel Mack 2 participants 5 messages Nov 14, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ALSA: ASoC: ak4104: add reset line property to DT bindings

This device doesn't have a pdata definition for legacy boards, and unless anyone need to control the reset GPIO, it's not worth adding one. So this feature is only available to DT users for now.

---
 Documentation/devicetree/bindings/sound/ak4104.txt |  5 +++++
 sound/soc/codecs/ak4104.c                          | 17 +++++++++++++++++
 2 files changed, 22 insertions(+)
Documentation/devicetree/bindings/sound/ak4104.txt +5 -0
index 1f8e506..b902ee3 100644
@@ -8,6 +8,11 @@ Required properties:
 
   - reg : The chip select number on the SPI bus
 
+Optional properties:
+
+  - reset-gpio : a GPIO spec for the reset pin. If specified, it will be
+		 deasserted before communication to the device starts.
+
 Example:
 
 spdif: ak4104@0 {
sound/soc/codecs/ak4104.c +17 -0
index d4d4858..eec086b 100644
@@ -15,6 +15,8 @@
 #include <sound/soc.h>
 #include <sound/initval.h>
 #include <linux/spi/spi.h>
+#include <linux/of_device.h>
+#include <linux/of_gpio.h>
 #include <sound/asoundef.h>
 
 /* AK4104 registers addresses */
@@ -204,6 +206,7 @@ static const struct regmap_config ak4104_regmap = {
 
 static int ak4104_spi_probe(struct spi_device *spi)
 {
+	struct device_node *np = spi->dev.of_node;
 	struct ak4104_private *ak4104;
 	unsigned int val;
 	int ret;
@@ -225,6 +228,20 @@ static int ak4104_spi_probe(struct spi_device *spi)
 		return ret;
 	}
 
+	if (np) {
+		enum of_gpio_flags flags;
+		int gpio = of_get_named_gpio_flags(np, "reset-gpio", 0, &flags);
+
+		if (gpio_is_valid(gpio)) {
+			ret = devm_gpio_request_one(&spi->dev, gpio,
+				     flags & OF_GPIO_ACTIVE_LOW ?
+					GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH,
+				     "ak4104 reset");
+			if (ret < 0)
+				return ret;
+		}
+	}
+
 	/* read the 'reserved' register - according to the datasheet, it
 	 * should contain 0x5b. Not a good way to verify the presence of
 	 * the device, but there is no hardware ID register. */
Signature · 1 line
1.7.11.7
#1 lore raw
Quoted 7 lines · Daniel Mack

This device doesn't have a pdata definition for legacy boards, and unless anyone need to control the reset GPIO, it's not worth adding one. So this feature is only available to DT users for now.

---
 Documentation/devicetree/bindings/sound/ak4104.txt |  5 +++++

This doesn't apply, the bindings file doesn't exist in mainline or -next
- probably an earlier patch you forgot to submit.

#2 lore raw
Quoted 11 lines · Mark Brown
Quoted 7 lines · Daniel Mack

This device doesn't have a pdata definition for legacy boards, and unless anyone need to control the reset GPIO, it's not worth adding one. So this feature is only available to DT users for now.

---
 Documentation/devicetree/bindings/sound/ak4104.txt |  5 +++++

This doesn't apply, the bindings file doesn't exist in mainline or -next
- probably an earlier patch you forgot to submit.

I submitted that some weeks ago - it's in your topic/ak4104 branch :)

https://git.kernel.org/?p=linux/kernel/git/broonie/sound.git;a=commit;h=ac5dbea

#4 lore raw
Quoted 6 lines · Mark Brown
Quoted 4 lines · Daniel Mack

On Wed, Nov 14, 2012 at 6:43 PM, Mark Brown

Quoted 2 lines

This doesn't apply, the bindings file doesn't exist in mainline or -next
- probably an earlier patch you forgot to submit.

Quoted 6 lines
Quoted 3 lines

I submitted that some weeks ago - it's in your topic/ak4104 branch :)

https://git.kernel.org/?p=linux/kernel/git/broonie/sound.git;a=commit;h=ac5dbea

I don't appear to have any such branch locally... wonder where that went.

I was refering to your remote branch of course:

https://git.kernel.org/?p=linux/kernel/git/broonie/sound.git;a=shortlog;h=refs/heads/topic/ak4104