diff mbox

[RFC,5/7] ASoC: Add Odroid sound DT bindings documentation

Message ID 1492795191-31298-6-git-send-email-s.nawrocki@samsung.com
State Changes Requested, archived
Headers show

Commit Message

Sylwester Nawrocki April 21, 2017, 5:19 p.m. UTC
This patch adds DT binding documentation for Odroid XU3/4
sound subsystem.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
 .../devicetree/bindings/sound/samsung,odroid.txt   | 57 ++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/samsung,odroid.txt

Comments

Rob Herring April 28, 2017, 5:03 p.m. UTC | #1
On Fri, Apr 21, 2017 at 07:19:49PM +0200, Sylwester Nawrocki wrote:
> This patch adds DT binding documentation for Odroid XU3/4
> sound subsystem.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
>  .../devicetree/bindings/sound/samsung,odroid.txt   | 57 ++++++++++++++++++++++
>  1 file changed, 57 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/samsung,odroid.txt
> 
> diff --git a/Documentation/devicetree/bindings/sound/samsung,odroid.txt b/Documentation/devicetree/bindings/sound/samsung,odroid.txt
> new file mode 100644
> index 0000000..c1ac70c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/samsung,odroid.txt
> @@ -0,0 +1,57 @@
> +Samsung Exynos Odroid XU3/XU4 audio complex with MAX98090 codec
> +
> +Required properties:
> +
> + - compatible - "samsung,odroidxu3-audio" - for Odroid XU3 board,
> +		"samsung,odroidxu4-audio" - for Odroid XU4 board
> + - model - the user-visible name of this sound complex

ASoC will support "label" soon (see graph support). Use that instead.

> + - 'cpu' subnode with a 'sound-dai' property containing the phandle of the I2S
> +    controller
> + - 'codec' subnode with a 'sound-dai' property containing list of phandles
> +    to the CODEC nodes, first entry must be corresponding to the MAX98090
> +    CODEC and the second entry must be the phandle of the HDMI IP block node

These are not properties, so move them to a sub-node section.

> + - clocks - should contain entries matching clock names in the clock-names
> +    property
> + - clock-names - should contain following entries:
> +    - "epll" - indicating the EPLL output clock
> +    - "i2s_rclk" - indicating the RCLK (root) clock of the I2S0 controller

At least the 2nd one should be in the i2s node. This node isn't really a 
h/w block, so it shouldn't have clocks IMO.

> + - samsung,audio-widgets - this property specifies off-codec audio elements
> +   like headphones or speakers, for details see widgets.txt
> + - samsung,audio-routing - a list of the connections between audio
> +   components;  each entry is a pair of strings, the first being the
> +   connection's sink, the second being the connection's source;
> +   valid names for sources and sinks are the MAX98090's pins (as
> +   documented in its binding), and the jacks on the board
> +
> +   For Odroid X2:
> +     "Headphone Jack", "Mic Jack", "DMIC"
> +
> +   For Odroid U3, XU3:
> +     "Headphone Jack", "Speakers"
> +
> +   For Odroid XU4:
> +     no entries
> +
> +Example:
> +
> +sound {
> +	compatible = "samsung,odroidxu3-audio";

> +	samsung,cpu-dai = <&i2s0>;
> +	samsung,codec-dai = <&max98090>;

Not documented. Nor needed?

> +	model = "Odroid-XU3";
> +	samsung,audio-routing =
> +		"Headphone Jack", "HPL",
> +		"Headphone Jack", "HPR",
> +		"IN1", "Mic Jack",
> +		"Mic Jack", "MICBIAS";
> +
> +	clocks = <&clock CLK_FOUT_EPLL>, <&i2s0 CLK_I2S_RCLK_SRC>;
> +	clock-names = "epll", "sclk_i2s";
> +
> +	cpu {
> +		sound-dai = <&i2s0 0>;
> +	};
> +	codec {
> +		sound-dai = <&hdmi>, <&max98090>;
> +	};
> +};
> -- 
> 1.9.1
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sylwester Nawrocki June 9, 2017, 4:53 p.m. UTC | #2
On 04/28/2017 07:03 PM, Rob Herring wrote:
> On Fri, Apr 21, 2017 at 07:19:49PM +0200, Sylwester Nawrocki wrote:

>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/samsung,odroid.txt
>> @@ -0,0 +1,57 @@
>> +Samsung Exynos Odroid XU3/XU4 audio complex with MAX98090 codec
>> +
>> +Required properties:
>> +
>> + - compatible - "samsung,odroidxu3-audio" - for Odroid XU3 board,
>> +		"samsung,odroidxu4-audio" - for Odroid XU4 board
>> + - model - the user-visible name of this sound complex
>
> ASoC will support "label" soon (see graph support). Use that instead.

I could change that but it now might be too late since the patch has been
merged in v4.12-rc1. Sorry, I couldn't get back to this earlier.

>> + - clocks - should contain entries matching clock names in the clock-names
>> +    property
>> + - clock-names - should contain following entries:
>> +    - "epll" - indicating the EPLL output clock
>> +    - "i2s_rclk" - indicating the RCLK (root) clock of the I2S0 controller
>
> At least the 2nd one should be in the i2s node. This node isn't really a
> h/w block, so it shouldn't have clocks IMO.

"i2s_rclk" is a clock exposed by the I2S controller.

The RCLK clock has already assigned clock parent in DT:

&i2s0 {
	assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
	assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
};

In fact the sound card is not a consumer of this clock, the clock is used
only internally in the I2S device.  I could try to drop it and use ASoC
internal API for CPU DAI clock setting.

But I have no idea what else could be done with the PLL, it belongs to
the audio card and the card driver must somehow get hold of that clock
to configure its frequency depending on audio sampling rate.

>> +Example:
>> +
>> +sound {
>> +	compatible = "samsung,odroidxu3-audio";
>
>> +	samsung,cpu-dai = <&i2s0>;
>> +	samsung,codec-dai = <&max98090>;
>
> Not documented. Nor needed?

Yes, I will remove these, that's a leftover from initial versions
of the binding.

--
Thanks,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/sound/samsung,odroid.txt b/Documentation/devicetree/bindings/sound/samsung,odroid.txt
new file mode 100644
index 0000000..c1ac70c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/samsung,odroid.txt
@@ -0,0 +1,57 @@ 
+Samsung Exynos Odroid XU3/XU4 audio complex with MAX98090 codec
+
+Required properties:
+
+ - compatible - "samsung,odroidxu3-audio" - for Odroid XU3 board,
+		"samsung,odroidxu4-audio" - for Odroid XU4 board
+ - model - the user-visible name of this sound complex
+ - 'cpu' subnode with a 'sound-dai' property containing the phandle of the I2S
+    controller
+ - 'codec' subnode with a 'sound-dai' property containing list of phandles
+    to the CODEC nodes, first entry must be corresponding to the MAX98090
+    CODEC and the second entry must be the phandle of the HDMI IP block node
+ - clocks - should contain entries matching clock names in the clock-names
+    property
+ - clock-names - should contain following entries:
+    - "epll" - indicating the EPLL output clock
+    - "i2s_rclk" - indicating the RCLK (root) clock of the I2S0 controller
+ - samsung,audio-widgets - this property specifies off-codec audio elements
+   like headphones or speakers, for details see widgets.txt
+ - samsung,audio-routing - a list of the connections between audio
+   components;  each entry is a pair of strings, the first being the
+   connection's sink, the second being the connection's source;
+   valid names for sources and sinks are the MAX98090's pins (as
+   documented in its binding), and the jacks on the board
+
+   For Odroid X2:
+     "Headphone Jack", "Mic Jack", "DMIC"
+
+   For Odroid U3, XU3:
+     "Headphone Jack", "Speakers"
+
+   For Odroid XU4:
+     no entries
+
+Example:
+
+sound {
+	compatible = "samsung,odroidxu3-audio";
+	samsung,cpu-dai = <&i2s0>;
+	samsung,codec-dai = <&max98090>;
+	model = "Odroid-XU3";
+	samsung,audio-routing =
+		"Headphone Jack", "HPL",
+		"Headphone Jack", "HPR",
+		"IN1", "Mic Jack",
+		"Mic Jack", "MICBIAS";
+
+	clocks = <&clock CLK_FOUT_EPLL>, <&i2s0 CLK_I2S_RCLK_SRC>;
+	clock-names = "epll", "sclk_i2s";
+
+	cpu {
+		sound-dai = <&i2s0 0>;
+	};
+	codec {
+		sound-dai = <&hdmi>, <&max98090>;
+	};
+};