Thread (11 messages) flat view 11 messages, 4 authors, 2016-02-18

Re: [PATCH v2 5/5] ASoC: adau17x1: Support platform data via DT

From: Arnd Bergmann <hidden>
Date: 2016-02-16 13:42:22
Also in: alsa-devel, lkml

On Tuesday 16 February 2016 13:56:45 Andreas Irestål wrote:
Currently, it is only possible to configure HW-specific options to the
adau17x1 codecs by providing a platform data struct. With this patch,
it is possible to provide the same data via DT instead.

Signed-off-by: Andreas Irestål <redacted>
---
 .../devicetree/bindings/sound/adi,adau17x1.txt     |  31 +++++
 include/dt-bindings/sound/adau17x1.h               |  14 +++
 sound/soc/codecs/adau1761.c                        | 127 +++++++++++++++++++++
 sound/soc/codecs/adau1781.c                        |  48 ++++++++
 4 files changed, 220 insertions(+)
 create mode 100644 include/dt-bindings/sound/adau17x1.h
It would be nicer to avoid the need for the extra header file, those
tend to cause more problems than they solve.
 
quoted hunk ↗ jump to hunk
diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
index 8dbce0e..6050602 100644
--- a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
+++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
@@ -13,6 +13,32 @@ Required properties:
  - reg:			The i2c address. Value depends on the state of ADDR0
 			and ADDR1, as wired in hardware.
 
+Optional properties:
+
+ - adi,input-differential	bool to set if the input is differential
+ - adi,digital-microphone	bool to set if there is a digital microphone
+				connected to digmic/jackdet pin.
+ - adi,micbias-vg		Microphone bias voltage
+	MICBIAS_0_90_AVDD - 0.9 * AVDD
+	MICBIAS_0_65_AVDD - 0.65 * AVDD
This could be an integer property, or possibly two (mutually exclusive)
boolean properties.
+Optional properties (ADAU1361/ADAU1461/ADAU1761/ADAU1961 only)
+
+ - adi,jack-detection	If present, configures codec to use the digmic/jackdet
+			pin for jack detection. must provide one of
+			JACKDETECT_ACTIVE_LO or JACKDETECT_ACTIVE_HI followed
+			by debounce time in ms, which must be 5, 10, 20, or 40.
I would use one integer property for debounce and one bool property for
polarity.
+The output mode must be one of:
+	OUTPUT_MODE_HEADPHONE           - Headphone output
+	OUTPUT_MODE_HEADPHONE_CAPLESS   - Capless headphone output
+	OUTPUT_MODE_LINE                - Line output
And something along the same lines here. Or just document the three modes
as numbers in the binding file.
+#ifdef CONFIG_OF
+static void adau1781_pdata_from_of(struct device *dev,
+				   struct adau1781_platform_data *pdata)
You can remove the #ifdef here...
+	if (!dev->platform_data && np) {
if you change this to 

	if (IS_ENABLED(CONFIG_OF) && np) {
+		of_pdata = devm_kzalloc(dev, sizeof(*of_pdata), GFP_KERNEL);
+		if (!of_pdata)
+			return -ENOMEM;
+		adau1781_pdata_from_of(dev, of_pdata);
+		dev->platform_data = of_pdata;
and here I'd try to avoid the dynamic allocation and just add the fields to the
driver private structure. You can copy the information from the platform
data in the 'else' path.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help