Commit e7b6b3ec authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v5.7-rc2' of...

Merge tag 'asoc-fix-v5.7-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v5.7

Quite a lot of fixes here, a lot of driver specific ones but the biggest
one is the revert of changes to the startup and shutdown sequence for
DAIs that went in during the merge window - they broke some older x86
platforms and attempts to fix them didn't succeed so it's safer to just
roll them back and try to make sure those platforms are handled properly
in any future attempt.

The rockchip S/PDIF DT stuff was IIRC for validation issues.
parents cf9fb7b8 1e060a45
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -56,6 +56,9 @@ properties:
      - const: tx
      - const: rx

  power-domains:
    maxItems: 1

  rockchip,capture-channels:
    allOf:
      - $ref: /schemas/types.yaml#/definitions/uint32
+0 −45
Original line number Diff line number Diff line
* Rockchip SPDIF transceiver

The S/PDIF audio block is a stereo transceiver that allows the
processor to receive and transmit digital audio via an coaxial cable or
a fibre cable.

Required properties:

- compatible: should be one of the following:
   - "rockchip,rk3066-spdif"
   - "rockchip,rk3188-spdif"
   - "rockchip,rk3228-spdif"
   - "rockchip,rk3288-spdif"
   - "rockchip,rk3328-spdif"
   - "rockchip,rk3366-spdif"
   - "rockchip,rk3368-spdif"
   - "rockchip,rk3399-spdif"
- reg: physical base address of the controller and length of memory mapped
  region.
- interrupts: should contain the SPDIF interrupt.
- dmas: DMA specifiers for tx dma. See the DMA client binding,
  Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should be "tx"
- clocks: a list of phandle + clock-specifier pairs, one for each entry
  in clock-names.
- clock-names: should contain following:
   - "hclk": clock for SPDIF controller
   - "mclk" : clock for SPDIF bus

Required properties on RK3288:
  - rockchip,grf: the phandle of the syscon node for the general register
                   file (GRF)

Example for the rk3188 SPDIF controller:

spdif: spdif@1011e000 {
	compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
	reg = <0x1011e000 0x2000>;
	interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
	dmas = <&dmac1_s 8>;
	dma-names = "tx";
	clock-names = "hclk", "mclk";
	clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
	#sound-dai-cells = <0>;
};
+101 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/rockchip-spdif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Rockchip SPDIF transceiver

description:
  The S/PDIF audio block is a stereo transceiver that allows the
  processor to receive and transmit digital audio via a coaxial or
  fibre cable.

maintainers:
  - Heiko Stuebner <heiko@sntech.de>

properties:
  compatible:
    oneOf:
      - const: rockchip,rk3066-spdif
      - const: rockchip,rk3228-spdif
      - const: rockchip,rk3328-spdif
      - const: rockchip,rk3366-spdif
      - const: rockchip,rk3368-spdif
      - const: rockchip,rk3399-spdif
      - items:
          - enum:
            - rockchip,rk3188-spdif
            - rockchip,rk3288-spdif
          - const: rockchip,rk3066-spdif

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    items:
      - description: clock for SPDIF bus
      - description: clock for SPDIF controller

  clock-names:
    items:
      - const: mclk
      - const: hclk

  dmas:
    maxItems: 1

  dma-names:
    const: tx

  power-domains:
    maxItems: 1

  rockchip,grf:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      The phandle of the syscon node for the GRF register.
      Required property on RK3288.

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

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

if:
  properties:
    compatible:
      contains:
        const: rockchip,rk3288-spdif

then:
  required:
    - rockchip,grf

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/rk3188-cru.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    spdif: spdif@1011e000 {
      compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
      reg = <0x1011e000 0x2000>;
      interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&cru SCLK_SPDIF>, <&cru HCLK_SPDIF>;
      clock-names = "mclk", "hclk";
      dmas = <&dmac1_s 8>;
      dma-names = "tx";
      #sound-dai-cells = <0>;
    };
+0 −1
Original line number Diff line number Diff line
@@ -351,7 +351,6 @@ struct snd_soc_dai {

	/* bit field */
	unsigned int probed:1;
	unsigned int started[SNDRV_PCM_STREAM_LAST + 1];
};

static inline struct snd_soc_pcm_stream *
+3 −0
Original line number Diff line number Diff line
@@ -790,6 +790,9 @@ struct snd_soc_dai_link {
	const struct snd_soc_pcm_stream *params;
	unsigned int num_params;

	struct snd_soc_dapm_widget *playback_widget;
	struct snd_soc_dapm_widget *capture_widget;

	unsigned int dai_fmt;           /* format to set on init */

	enum snd_soc_dpcm_trigger trigger[2]; /* trigger type for DPCM */
Loading