Commit 747f6230 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "It's been busy summer weeks and hence lots of changes, partly for a
  few new drivers and partly for a wide range of fixes.

  Here are highlights:

  ALSA Core:
   - Fix rawmidi buffer management, code cleanup / refactoring
   - Fix the SG-buffer page handling with incorrect fallback size
   - Fix the stall at virmidi trigger callback with a large buffer; also
     offloading and code-refactoring along with it
   - Various ALSA sequencer code cleanups

  ASoC:
   - Deploy the standard snd_pcm_stop_xrun() helper in several drivers
   - Support for providing name prefixes to generic component nodes
   - Quite a few fixes for DPCM as it gains a bit wider use and more
     robust testing
   - Generalization of the DIO2125 support to a simple amplifier driver
   - Accessory detection support for the audio graph card
   - DT support for PXA AC'97 devices
   - Quirks for a number of new x86 systems
   - Support for AM Logic Meson, Everest ES7154, Intel systems with
     RT5682, Qualcomm QDSP6 and WCD9335, Realtek RT5682 and TI TAS5707

  HD-audio:
   - Code refactoring in HD-audio ext codec codes to drop own classes;
     preliminary works for the upcoming legacy codec support
   - Generalized DRM audio component for the upcoming radeon / amdgpu
     support
   - Unification of mic mute-LED and GPIO support for various codecs
   - Further improvement of CA0132 codec support including Recon3D
   - Proper vga_switcheroo handling for AMD i-GPU
   - Update of model list in documentation
   - Fixups for another HP Spectre x360, Conexant codecs, power-save
     blacklist update

  USB-audio:
   - Fix the invalid sample rate setup with external clock
   - Support of UAC3 selector units and processing units
   - Basic UAC3 power-domain support
   - Support for Encore mDSD and Thesycon-based DSD devices
   - Preparation for future complete callback changes

  Firewire:
   - Add support for MOTU Traveler

  Misc:
   - The endianess notation fixes in various drivers
   - Add fall-through comment in lots of drivers
   - Various sparse warning fixes, e.g. about PCM format types"

* tag 'sound-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (529 commits)
  ASoC: adav80x: mark expected switch fall-through
  ASoC: da7219: Add delays to capture path to remove DC offset noise
  ALSA: usb-audio: Mark expected switch fall-through
  ALSA: mixart: Mark expected switch fall-through
  ALSA: opl3: Mark expected switch fall-through
  ALSA: hda/ca0132 - Add exit commands for Recon3D
  ALSA: hda/ca0132 - Change mixer controls for Recon3D
  ALSA: hda/ca0132 - Add Recon3D input and output select commands
  ALSA: hda/ca0132 - Add DSP setup defaults for Recon3D
  ALSA: hda/ca0132 - Add Recon3D startup functions and setup
  ALSA: hda/ca0132 - Add bool variable to enable/disable pci region2 mmio
  ALSA: hda/ca0132 - Add Recon3D pincfg
  ALSA: hda/ca0132 - Add quirk ID and enum for Recon3D
  ALSA: hda/ca0132 - Add alt_functions unsolicited response
  ALSA: hda/ca0132 - Clean up ca0132_init function.
  ALSA: hda/ca0132 - Create mmio gpio function to make code clearer
  ASoC: wm_adsp: Make DSP name configurable by codec driver
  ASoC: wm_adsp: Declare firmware controls from codec driver
  ASoC: max98373: Added software reset register to readable registers
  ASoC: wm_adsp: Correct DSP pointer for preloader control
  ...
parents 2c20443e f5b6c1fc
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
Generic AC97 Device Properties

This documents describes the devicetree bindings for an ac97 controller child
node describing ac97 codecs.

Required properties:
-compatible : Must be "ac97,vendor_id1,vendor_id2
	      The ids shall be the 4 characters hexadecimal encoding, such as
	      given by "%04x" formatting of printf
-reg	    : Must be the ac97 codec number, between 0 and 3

Example:
ac97: sound@40500000 {
	compatible = "marvell,pxa270-ac97";
	reg = < 0x40500000 0x1000 >;
	interrupts = <14>;
	reset-gpios = <&gpio 95 GPIO_ACTIVE_HIGH>;
	#sound-dai-cells = <1>;
	pinctrl-names = "default";
	pinctrl-0 = < &pinctrl_ac97_default >;
	clocks = <&clks CLK_AC97>, <&clks CLK_AC97CONF>;
	clock-names = "AC97CLK", "AC97CONFCLK";

	#address-cells = <1>;
	#size-cells = <0>;
	audio-codec@0 {
		reg = <0>;
		compatible = "ac97,574d,4c13";
		clocks = <&fixed_wm9713_clock>;
		clock-names = "ac97_clk";
	}
};
+23 −0
Original line number Diff line number Diff line
* Amlogic Audio FIFO controllers

Required properties:
- compatible: 'amlogic,axg-toddr' or
	      'amlogic,axg-frddr'
- reg: physical base address of the controller and length of memory
       mapped region.
- interrupts: interrupt specifier for the fifo.
- clocks: phandle to the fifo peripheral clock provided by the audio
	  clock controller.
- resets: phandle to memory ARB line provided by the arb reset controller.
- #sound-dai-cells: must be 0.

Example of FRDDR A on the A113 SoC:

frddr_a: audio-controller@1c0 {
	compatible = "amlogic,axg-frddr";
	reg = <0x0 0x1c0 0x0 0x1c>;
	#sound-dai-cells = <0>;
	interrupts = <GIC_SPI 88 IRQ_TYPE_EDGE_RISING>;
	clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
	resets = <&arb AXG_ARB_FRDDR_A>;
};
+124 −0
Original line number Diff line number Diff line
Amlogic AXG sound card:

Required properties:

- compatible: "amlogic,axg-sound-card"
- model : User specified audio sound card name, one string

Optional properties:

- audio-aux-devs : List of phandles pointing to auxiliary devices
- audio-widgets : Please refer to widgets.txt.
- audio-routing : A list of the connections between audio components.

Subnodes:

- dai-link: Container for dai-link level properties and the CODEC
	    sub-nodes. There should be at least one (and probably more)
	    subnode of this type.

Required dai-link properties:

- sound-dai: phandle and port of the CPU DAI.

Required TDM Backend dai-link properties:
- dai-format : CPU/CODEC common audio format

Optional TDM Backend dai-link properties:
- dai-tdm-slot-rx-mask-{0,1,2,3}: Receive direction slot masks
- dai-tdm-slot-tx-mask-{0,1,2,3}: Transmit direction slot masks
				  When omitted, mask is assumed to have to no
				  slots. A valid must have at one slot, so at
				  least one these mask should be provided with
				  an enabled slot.
- dai-tdm-slot-num : Please refer to tdm-slot.txt.
		     If omitted, slot number is set to accommodate the largest
		     mask provided.
- dai-tdm-slot-width : Please refer to tdm-slot.txt. default to 32 if omitted.
- mclk-fs : Multiplication factor between stream rate and mclk

Backend dai-link subnodes:

- codec: dai-link representing backend links should have at least one subnode.
	 One subnode for each codec of the dai-link.
	 dai-link representing frontend links have no codec, therefore have no
	 subnodes

Required codec subnodes properties:

- sound-dai: phandle and port of the CODEC DAI.

Optional codec subnodes properties:

- dai-tdm-slot-tx-mask : Please refer to tdm-slot.txt.
- dai-tdm-slot-rx-mask : Please refer to tdm-slot.txt.

Example:

sound {
	compatible = "amlogic,axg-sound-card";
	model = "AXG-S420";
	audio-aux-devs = <&tdmin_a>, <&tdmout_c>;
	audio-widgets = "Line", "Lineout",
			"Line", "Linein",
			"Speaker", "Speaker1 Left",
			"Speaker", "Speaker1 Right";
			"Speaker", "Speaker2 Left",
			"Speaker", "Speaker2 Right";
	audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
			"SPDIFOUT IN 0", "FRDDR_A OUT 3",
			"TDM_C Playback", "TDMOUT_C OUT",
			"TDMIN_A IN 2", "TDM_C Capture",
			"TDMIN_A IN 5", "TDM_C Loopback",
			"TODDR_A IN 0", "TDMIN_A OUT",
			"Lineout", "Lineout AOUTL",
			"Lineout", "Lineout AOUTR",
			"Speaker1 Left", "SPK1 OUT_A",
			"Speaker2 Left", "SPK2 OUT_A",
			"Speaker1 Right", "SPK1 OUT_B",
			"Speaker2 Right", "SPK2 OUT_B",
			"Linein AINL", "Linein",
			"Linein AINR", "Linein";

	dai-link@0 {
		sound-dai = <&frddr_a>;
	};

	dai-link@1 {
		sound-dai = <&toddr_a>;
	};

	dai-link@2 {
		sound-dai = <&tdmif_c>;
		dai-format = "i2s";
		dai-tdm-slot-tx-mask-2 = <1 1>;
		dai-tdm-slot-tx-mask-3 = <1 1>;
		dai-tdm-slot-rx-mask-1 = <1 1>;
		mclk-fs = <256>;

		codec@0 {
			sound-dai = <&lineout>;
		};

		codec@1 {
			sound-dai = <&speaker_amp1>;
		};

		codec@2 {
			sound-dai = <&speaker_amp2>;
		};

		codec@3 {
			sound-dai = <&linein>;
		};

	};

	dai-link@3 {
		sound-dai = <&spdifout>;

		codec {
			sound-dai = <&spdif_dit>;
		};
	};
};
+20 −0
Original line number Diff line number Diff line
* Amlogic Audio SPDIF Output

Required properties:
- compatible: 'amlogic,axg-spdifout'
- clocks: list of clock phandle, one for each entry clock-names.
- clock-names: should contain the following:
  * "pclk" : peripheral clock.
  * "mclk" : master clock
- #sound-dai-cells: must be 0.

Example on the A113 SoC:

spdifout: audio-controller@480 {
	compatible = "amlogic,axg-spdifout";
	reg = <0x0 0x480 0x0 0x50>;
	#sound-dai-cells = <0>;
	clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
		 <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
	clock-names = "pclk", "mclk";
};
+28 −0
Original line number Diff line number Diff line
* Amlogic Audio TDM formatters

Required properties:
- compatible: 'amlogic,axg-tdmin' or
	      'amlogic,axg-tdmout'
- reg: physical base address of the controller and length of memory
       mapped region.
- clocks: list of clock phandle, one for each entry clock-names.
- clock-names: should contain the following:
  * "pclk"     : peripheral clock.
  * "sclk"     : bit clock.
  * "sclk_sel" : bit clock input multiplexer.
  * "lrclk"    : sample clock
  * "lrclk_sel": sample clock input multiplexer

Example of TDMOUT_A on the A113 SoC:

tdmout_a: audio-controller@500 {
	compatible = "amlogic,axg-tdmout";
	reg = <0x0 0x500 0x0 0x40>;
	clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
		 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
		 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
		 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
		 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
	clock-names = "pclk", "sclk", "sclk_sel",
		      "lrclk", "lrclk_sel";
};
Loading