Commit 33e02dc6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "This one became bigger than usual, not in the total size but rather
  containing lots of small changes all over the places.

  The majority of changes are about ASoC, especially SOF / Intel stuff,
  and we see an interesting work for ASoC DAPM graph visualization,
  while there are many other code cleanup and refactoring, too.

  Core:
   - A deadlock fix at device disconnection
   - A new tool dapm-graph for visualising the DAPM state

  ASoC:
   - Large updates throughout the Intel audio drivers
   - Fixes and clarifications for the DAPM documentation
   - Cleanups of accessors for driver data, module labelling, and for
     constification
   - Modernsation and cleanup work in the Mediatek drivers
   - Several fixes and features for the DaVinci I2S driver
   - New drivers for several AMD and Intel platforms, Nuvoton NAU8325,
     Rockchip RK3308 and Texas Instruments PCM6240

  HD-audio:
   - Cleanup for CONFIG_PM dependencies
   - Cirrus HD-audio codec fixes and quirks

  Others:
   - Series of tree-wide fixes in Makefiles to use *-y
   - Additions of missing module descriptions
   - Scarlett2 USB mixer enhancements
   - A series of legacy emu10k1 fixes and improvements"

* tag 'sound-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (603 commits)
  ALSA: hda/realtek: Drop doubly quirk entry for 103c:8a2e
  ALSA: hda/realtek - fixed headset Mic not show
  ASoC: SOF: amd: Fix build error with built-in config
  ALSA: scarlett2: Increase mixer range to +12dB
  ALSA: scarlett2: Add S/PDIF source selection controls
  ALSA: core: Remove superfluous CONFIG_PM
  ALSA: Fix deadlocks with kctl removals at disconnection
  ASoC: audio-graph-card2: call of_node_get() before of_get_next_child()
  ASoC: SOF: amd: Correct spaces in Makefile
  ASoC: rt715-sdca-sdw: Fix wrong complete waiting in rt715_dev_resume()
  ASoC: Intel: sof_sdw_rt_amp: use dai parameter
  ASoC: Intel: sof_sdw: add dai parameter to rtd_init callback
  ASoC: Intel: sof_sdw: use .controls/.widgets to add controls/widgets
  ASoC: Intel: sof_sdw: add controls and dapm widgets in codec_info
  ASoC: Intel: sof_sdw: use generic name for controls/widgets
  ASoC: Intel: sof_sdw_cs_amp: rename Speakers to Speaker
  ASoC: Intel: maxim-common: change max98373 data to static
  ASoC: Intel: sof_sdw: add max98373 dapm routes
  ASoC: Intel: sof_rt5682: use max_98373_dai_link function
  ASoC: Intel: sof_nau8825: use max_98373_dai_link function
  ...
parents d3467277 d731b1ed
Loading
Loading
Loading
Loading
+0 −50
Original line number Diff line number Diff line
Texas Instruments DaVinci McBSP module
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This binding describes the "Multi-channel Buffered Serial Port" (McBSP)
audio interface found in some TI DaVinci processors like the OMAP-L138 or AM180x.


Required properties:
~~~~~~~~~~~~~~~~~~~~
- compatible :
        "ti,da850-mcbsp" : for DA850, AM180x and OPAM-L138 platforms

- reg : physical base address and length of the controller memory mapped
        region(s).
- reg-names : Should contain:
        * "mpu" for the main registers (required).
        * "dat" for the data FIFO (optional).

- dmas: three element list of DMA controller phandles, DMA request line and
	TC channel ordered triplets.
- dma-names: identifier string for each DMA request line in the dmas property.
	These strings correspond 1:1 with the ordered pairs in dmas. The dma
	identifiers must be "rx" and "tx".

Optional properties:
~~~~~~~~~~~~~~~~~~~~
- interrupts : Interrupt numbers for McBSP
- interrupt-names : Known interrupt names are "rx" and "tx"

- pinctrl-0: Should specify pin control group used for this controller.
- pinctrl-names: Should contain only one value - "default", for more details
        please refer to pinctrl-bindings.txt

Example (AM1808):
~~~~~~~~~~~~~~~~~

mcbsp0: mcbsp@1d10000 {
	compatible = "ti,da850-mcbsp";
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp0_pins>;

	reg = 	<0x00110000 0x1000>,
		<0x00310000 0x1000>;
	reg-names = "mpu", "dat";
	interrupts = <97 98>;
	interrupt-names = "rx", "tx";
	dmas = <&edma0 3 1
		&edma0 2 1>;
	dma-names = "tx", "rx";
};
+113 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/davinci-mcbsp.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: McBSP Controller for TI SoCs

maintainers:
  - Bastien Curutchet <bastien.curutchet@bootlin.com>

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    enum:
      - ti,da850-mcbsp

  reg:
    minItems: 1
    items:
      - description: CFG registers
      - description: data registers

  reg-names:
    minItems: 1
    items:
      - const: mpu
      - const: dat

  dmas:
    items:
      - description: transmission DMA channel
      - description: reception DMA channel

  dma-names:
    items:
      - const: tx
      - const: rx

  interrupts:
    items:
      - description: RX interrupt
      - description: TX interrupt

  interrupt-names:
    items:
      - const: rx
      - const: tx

  clocks:
    minItems: 1
    items:
      - description: functional clock
      - description: external input clock for sample rate generator.

  clock-names:
    minItems: 1
    items:
      - const: fck
      - const: clks

  power-domains:
    maxItems: 1

  "#sound-dai-cells":
    const: 0

  ti,T1-framing-tx:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If the property is present, tx data delay is set to 2 bit clock periods.
      McBSP will insert a blank period (high-impedance period) before the first
      data bit. This can be used to interface to T1-framing devices.

  ti,T1-framing-rx:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If the property is present, rx data delay is set to 2 bit clock periods.
      McBSP will discard the bit preceding the data stream (called framing bit).
      This can be used to interface to T1-framing devices.

required:
  - "#sound-dai-cells"
  - compatible
  - reg
  - reg-names
  - dmas
  - dma-names
  - clocks

unevaluatedProperties: false

examples:
  - |
    mcbsp0@1d10000 {
      #sound-dai-cells = <0>;
      compatible = "ti,da850-mcbsp";
      pinctrl-names = "default";
      pinctrl-0 = <&mcbsp0_pins>;

      reg = <0x111000 0x1000>,
            <0x311000 0x1000>;
      reg-names = "mpu", "dat";
      interrupts = <97>, <98>;
      interrupt-names = "rx", "tx";
      dmas = <&edma0 3 1>,
             <&edma0 2 1>;
      dma-names = "tx", "rx";

      clocks = <&psc1 14>;
    };
+0 −50
Original line number Diff line number Diff line
NXP Audio Mixer (AUDMIX).

The Audio Mixer is a on-chip functional module that allows mixing of two
audio streams into a single audio stream. Audio Mixer has two input serial
audio interfaces. These are driven by two Synchronous Audio interface
modules (SAI). Each input serial interface carries 8 audio channels in its
frame in TDM manner. Mixer mixes audio samples of corresponding channels
from two interfaces into a single sample. Before mixing, audio samples of
two inputs can be attenuated based on configuration. The output of the
Audio Mixer is also a serial audio interface. Like input interfaces it has
the same TDM frame format. This output is used to drive the serial DAC TDM
interface of audio codec and also sent to the external pins along with the
receive path of normal audio SAI module for readback by the CPU.

The output of Audio Mixer can be selected from any of the three streams
 - serial audio input 1
 - serial audio input 2
 - mixed audio

Mixing operation is independent of audio sample rate but the two audio
input streams must have same audio sample rate with same number of channels
in TDM frame to be eligible for mixing.

Device driver required properties:
=================================
  - compatible		: Compatible list, contains "fsl,imx8qm-audmix"

  - reg			: Offset and length of the register set for the device.

  - clocks		: Must contain an entry for each entry in clock-names.

  - clock-names		: Must include the "ipg" for register access.

  - power-domains	: Must contain the phandle to AUDMIX power domain node

  - dais		: Must contain a list of phandles to AUDMIX connected
			  DAIs. The current implementation requires two phandles
			  to SAI interfaces to be provided, the first SAI in the
			  list being used to route the AUDMIX output.

Device driver configuration example:
======================================
  audmix: audmix@59840000 {
    compatible = "fsl,imx8qm-audmix";
    reg = <0x0 0x59840000 0x0 0x10000>;
    clocks = <&clk IMX8QXP_AUD_AUDMIX_IPG>;
    clock-names = "ipg";
    power-domains = <&pd_audmix>;
    dais = <&sai4>, <&sai5>;
  };
+83 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/fsl,audmix.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP Audio Mixer (AUDMIX).

maintainers:
  - Shengjiu Wang <shengjiu.wang@nxp.com>
  - Frank Li <Frank.Li@nxp.com>

description: |
  The Audio Mixer is a on-chip functional module that allows mixing of two
  audio streams into a single audio stream. Audio Mixer has two input serial
  audio interfaces. These are driven by two Synchronous Audio interface
  modules (SAI). Each input serial interface carries 8 audio channels in its
  frame in TDM manner. Mixer mixes audio samples of corresponding channels
  from two interfaces into a single sample. Before mixing, audio samples of
  two inputs can be attenuated based on configuration. The output of the
  Audio Mixer is also a serial audio interface. Like input interfaces it has
  the same TDM frame format. This output is used to drive the serial DAC TDM
  interface of audio codec and also sent to the external pins along with the
  receive path of normal audio SAI module for readback by the CPU.

  The output of Audio Mixer can be selected from any of the three streams
    - serial audio input 1
    - serial audio input 2
    - mixed audio

  Mixing operation is independent of audio sample rate but the two audio
  input streams must have same audio sample rate with same number of channels
  in TDM frame to be eligible for mixing.

properties:
  compatible:
    const: fsl,imx8qm-audmix

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: ipg

  power-domains:
    maxItems: 1

  dais:
    description: contain a list of phandles to AUDMIX connected DAIs.
    $ref: /schemas/types.yaml#/definitions/phandle-array
    minItems: 2
    items:
      - description: the AUDMIX output
        maxItems: 1
      - description: serial audio input 1
        maxItems: 1
      - description: serial audio input 2
        maxItems: 1

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - power-domains
  - dais

unevaluatedProperties: false

examples:
  - |
    audmix@59840000 {
      compatible = "fsl,imx8qm-audmix";
      reg = <0x59840000 0x10000>;
      clocks = <&amix_lpcg 0>;
      clock-names = "ipg";
      power-domains = <&pd_audmix>;
      dais = <&sai4>, <&sai5>;
    };
+0 −68
Original line number Diff line number Diff line
Freescale Enhanced Serial Audio Interface (ESAI) Controller

The Enhanced Serial Audio Interface (ESAI) provides a full-duplex serial port
for serial communication with a variety of serial devices, including industry
standard codecs, Sony/Phillips Digital Interface (S/PDIF) transceivers, and
other DSPs. It has up to six transmitters and four receivers.

Required properties:

  - compatible		: Compatible list, should contain one of the following
			  compatibles:
			  "fsl,imx35-esai",
			  "fsl,vf610-esai",
			  "fsl,imx6ull-esai",
			  "fsl,imx8qm-esai",

  - reg			: Offset and length of the register set for the device.

  - interrupts		: Contains the spdif interrupt.

  - dmas		: Generic dma devicetree binding as described in
			  Documentation/devicetree/bindings/dma/dma.txt.

  - dma-names		: Two dmas have to be defined, "tx" and "rx".

  - clocks		: Contains an entry for each entry in clock-names.

  - clock-names		: Includes the following entries:
	"core"		  The core clock used to access registers
	"extal"		  The esai baud clock for esai controller used to
			  derive HCK, SCK and FS.
	"fsys"		  The system clock derived from ahb clock used to
			  derive HCK, SCK and FS.
	"spba"		  The spba clock is required when ESAI is placed as a
			  bus slave of the Shared Peripheral Bus and when two
			  or more bus masters (CPU, DMA or DSP) try to access
			  it. This property is optional depending on the SoC
			  design.

  - fsl,fifo-depth	: The number of elements in the transmit and receive
			  FIFOs. This number is the maximum allowed value for
			  TFCR[TFWM] or RFCR[RFWM].

  - fsl,esai-synchronous: This is a boolean property. If present, indicating
			  that ESAI would work in the synchronous mode, which
			  means all the settings for Receiving would be
			  duplicated from Transmission related registers.

Optional properties:

  - big-endian		: If this property is absent, the native endian mode
			  will be in use as default, or the big endian mode
			  will be in use for all the device registers.

Example:

esai: esai@2024000 {
	compatible = "fsl,imx35-esai";
	reg = <0x02024000 0x4000>;
	interrupts = <0 51 0x04>;
	clocks = <&clks 208>, <&clks 118>, <&clks 208>;
	clock-names = "core", "extal", "fsys";
	dmas = <&sdma 23 21 0>, <&sdma 24 21 0>;
	dma-names = "rx", "tx";
	fsl,fifo-depth = <128>;
	fsl,esai-synchronous;
	big-endian;
};
Loading