Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04f87446 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung',...

Merge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/sh', 'asoc/topic/simple', 'asoc/topic/sirf', 'asoc/topic/sta350' and 'asoc/topic/tlv320dac33' into asoc-next
Loading
+50 −38
Original line number Diff line number Diff line
Simple-Card:

Simple-Card specifies audio DAI connection of SoC <-> codec.
Simple-Card specifies audio DAI connections of SoC <-> codec.

Required properties:

@@ -10,26 +10,51 @@ Optional properties:

- simple-audio-card,name		: User specified audio sound card name, one string
					  property.
- simple-audio-card,format		: CPU/CODEC common audio format.
					  "i2s", "right_j", "left_j" , "dsp_a"
					  "dsp_b", "ac97", "pdm", "msb", "lsb"
- simple-audio-card,widgets		: Please refer to widgets.txt.
- simple-audio-card,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.
- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
- dai-tdm-slot-width			: Please refer to tdm-slot.txt.
Optional subnodes:

- simple-audio-card,dai-link		: Container for dai-link level
					  properties and the CPU and CODEC
					  sub-nodes. This container may be
					  omitted when the card has only one
					  DAI link. See the examples and the
					  section bellow.

Required subnodes:
Dai-link subnode properties and subnodes:

- simple-audio-card,dai-link		: container for the CPU and CODEC sub-nodes
					  This container may be omitted when the
					  card has only one DAI link.
					  See the examples.
If dai-link subnode is omitted and the subnode properties are directly
under "sound"-node the subnode property and subnode names have to be
prefixed with "simple-audio-card,"-prefix.

- simple-audio-card,cpu			: CPU   sub-node
- simple-audio-card,codec		: CODEC sub-node
Required dai-link subnodes:

- cpu					: CPU   sub-node
- codec					: CODEC sub-node

Optional dai-link subnode properties:

- format				: CPU/CODEC common audio format.
					  "i2s", "right_j", "left_j" , "dsp_a"
					  "dsp_b", "ac97", "pdm", "msb", "lsb"
- frame-master				: Indicates dai-link frame master.
					  phandle to a cpu or codec subnode.
- bitclock-master			: Indicates dai-link bit clock master.
					  phandle to a cpu or codec subnode.
- bitclock-inversion			: bool property. Add this if the
					  dai-link uses bit clock inversion.
- frame-inversion			: bool property. Add this if the
					  dai-link uses frame clock inversion.

For backward compatibility the frame-master and bitclock-master
properties can be used as booleans in codec subnode to indicate if the
codec is the dai-link frame or bit clock master. In this case there
should be no dai-link node, the same properties should not be present
at sound-node level, and the bitclock-inversion and frame-inversion
properties should also be placed in the codec node if needed.

Required CPU/CODEC subnodes properties:

@@ -37,29 +62,21 @@ Required CPU/CODEC subnodes properties:

Optional CPU/CODEC subnodes properties:

- format				: CPU/CODEC specific audio format if needed.
					  see simple-audio-card,format
- frame-master				: bool property. add this if subnode is frame master
- bitclock-master			: bool property. add this if subnode is bitclock master
- bitclock-inversion			: bool property. add this if subnode has clock inversion
- frame-inversion			: bool property. add this if subnode has frame inversion
- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
- dai-tdm-slot-width			: Please refer to tdm-slot.txt.
- clocks / system-clock-frequency	: specify subnode's clock if needed.
					  it can be specified via "clocks" if system has
					  clock node (= common clock), or "system-clock-frequency"
					  (if system doens't support common clock)

Note:
 * For 'format', 'frame-master', 'bitclock-master', 'bitclock-inversion' and
   'frame-inversion', the simple card will use the settings of CODEC for both
   CPU and CODEC sides as we need to keep the settings identical for both ends
   of the link.

Example 1 - single DAI link:

sound {
	compatible = "simple-audio-card";
	simple-audio-card,name = "VF610-Tower-Sound-Card";
	simple-audio-card,format = "left_j";
	simple-audio-card,bitclock-master = <&dailink0_master>;
	simple-audio-card,frame-master = <&dailink0_master>;
	simple-audio-card,widgets =
		"Microphone", "Microphone Jack",
		"Headphone", "Headphone Jack",
@@ -69,17 +86,12 @@ sound {
		"Headphone Jack", "HP_OUT",
		"External Speaker", "LINE_OUT";

	dai-tdm-slot-num = <2>;
	dai-tdm-slot-width = <8>;

	simple-audio-card,cpu {
		sound-dai = <&sh_fsi2 0>;
	};

	simple-audio-card,codec {
	dailink0_master: simple-audio-card,codec {
		sound-dai = <&ak4648>;
		bitclock-master;
		frame-master;
		clocks = <&osc>;
	};
};
@@ -105,31 +117,31 @@ Example 2 - many DAI links:
sound {
	compatible = "simple-audio-card";
	simple-audio-card,name = "Cubox Audio";
	simple-audio-card,format = "i2s";

	simple-audio-card,dai-link@0 {		/* I2S - HDMI */
		simple-audio-card,cpu {
		format = "i2s";
		cpu {
			sound-dai = <&audio1 0>;
		};
		simple-audio-card,codec {
		codec {
			sound-dai = <&tda998x 0>;
		};
	};

	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
		simple-audio-card,cpu {
		cpu {
			sound-dai = <&audio1 1>;
		};
		simple-audio-card,codec {
		codec {
			sound-dai = <&tda998x 1>;
		};
	};

	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
		simple-audio-card,cpu {
		cpu {
			sound-dai = <&audio1 1>;
		};
		simple-audio-card,codec {
		codec {
			sound-dai = <&spdif_codec>;
		};
	};
+17 −0
Original line number Diff line number Diff line
Audio Binding for Snow boards

Required properties:
- compatible : Can be one of the following,
			"google,snow-audio-max98090" or
			"google,snow-audio-max98095"
- samsung,i2s-controller: The phandle of the Samsung I2S controller
- samsung,audio-codec: The phandle of the audio codec

Example:

sound {
		compatible = "google,snow-audio-max98095";

		samsung,i2s-controller = <&i2s0>;
		samsung,audio-codec = <&max98095>;
};
+29 −5
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ Optional properties:
	2: 2 Channel (Full-Bridge) Power, 1 Channel FFX
	3: 1 Channel Mono-Parallel
	If parameter is missing, mode 0 will be enabled.
	This property has to be specified as '/bits/ 8' value.

  -  st,ch1-output-mapping: Channel 1 output mapping
  -  st,ch2-output-mapping: Channel 2 output mapping
@@ -33,6 +34,7 @@ Optional properties:
	1: Channel 2
	2: Channel 3
	If parameter is missing, channel 1 is choosen.
	This properties have to be specified as '/bits/ 8' values.

  -  st,thermal-warning-recover:
	If present, thermal warning recovery is enabled.
@@ -82,9 +84,31 @@ Optional properties:
	If not present, preset DC coefficient is used.

  -  st,invalid-input-detect-mute:
	If not present, automatic invalid input detect mute is enabled.
	If present, automatic invalid input detect mute is enabled.

  -  st,activate-mute-output:
	If present, a mute output will be activated in ase the volume will
	reach a value lower than -76 dBFS.

  -  st,bridge-immediate-off:
	If present, the bridge will be switched off immediately after the
	power-down-gpio goes low. Otherwise, the bridge will wait for 13
	million clock cycles to pass before shutting down.

  -  st,noise-shape-dc-cut:
	If present, the noise-shaping technique on the DC cutoff filter are
	enabled.

  -  st,powerdown-master-volume:
	If present, the power-down pin and I2C power-down functions will
	act on the master volume. Otherwise, the functions will act on the
	mute commands.

  -  st,powerdown-delay-divider:
	If present, the bridge power-down time will be divided by the provided
	value. If not specified, a divider of 1 will be used. Allowed values
	are 1, 2, 4, 8, 16, 32, 64 and 128.
	This property has to be specified as '/bits/ 8' value.

Example:

@@ -93,12 +117,12 @@ codec: sta350@38 {
	reg = <0x1c>;
	reset-gpios = <&gpio1 19 0>;
	power-down-gpios = <&gpio1 16 0>;
	st,output-conf = <0x3>;			// set output to 2-channel
	st,output-conf = /bits/ 8  <0x3>;	// set output to 2-channel
						// (full-bridge) power,
						// 2-channel data-out
	st,ch1-output-mapping = <0>;		// set channel 1 output ch 1
	st,ch2-output-mapping = <0>;		// set channel 2 output ch 1
	st,ch3-output-mapping = <0>;		// set channel 3 output ch 1
	st,ch1-output-mapping = /bits/ 8 <0>;	// set channel 1 output ch 1
	st,ch2-output-mapping = /bits/ 8 <0>;	// set channel 2 output ch 1
	st,ch3-output-mapping = /bits/ 8 <0>;	// set channel 3 output ch 1
	st,max-power-correction;		// enables power bridge
						// correction for THD reduction
						// near maximum power output
+3 −1
Original line number Diff line number Diff line
@@ -1326,7 +1326,9 @@ int snd_soc_of_parse_tdm_slot(struct device_node *np,
int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
				   const char *propname);
unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
				     const char *prefix);
				     const char *prefix,
				     struct device_node **bitclkmaster,
				     struct device_node **framemaster);
int snd_soc_of_get_dai_name(struct device_node *of_node,
			    const char **dai_name);

+5 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ struct sta350_platform_data {
	u8 ch3_output_mapping;
	u8 ffx_power_output_mode;
	u8 drop_compensation_ns;
	u8 powerdown_delay_divider;
	unsigned int thermal_warning_recovery:1;
	unsigned int thermal_warning_adjustment:1;
	unsigned int fault_detect_recovery:1;
@@ -47,6 +48,10 @@ struct sta350_platform_data {
	unsigned int odd_pwm_speed_mode:1;
	unsigned int distortion_compensation:1;
	unsigned int invalid_input_detect_mute:1;
	unsigned int activate_mute_output:1;
	unsigned int bridge_immediate_off:1;
	unsigned int noise_shape_dc_cut:1;
	unsigned int powerdown_master_vol:1;
};

#endif /* __LINUX_SND__STA350_H */
Loading