Commit e50da555 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "We've received lots of commits at this time, as a result of various
  cleanup and refactoring works as well as a few new drivers and the
  generic SoundWire support. Most of changes are device-specific, little
  about the core changes. Some highlights below:

  Core:
   - A couple of (rather minor) race fixes in ALSA sequencer code
   - A regression fix in ALSA timer code that may lead to a deadlock

  ASoC:
   - A large series of code conversion to use modern terminology for the
     clocking configuration
   - Conversions of PM ops with the modern macros in all ASoC drivers
   - Clarification of the control operations
   - Prepartory work for more generic SoundWire SCDA controls
   - Support for AMD ACP 7.x, AWINC WM88166, Everest ES8388, Intel AVS
     PEAKVOL and GAIN DSP modules Mediatek MT8188 DMIC, NXP i.MX95,
     nVidia Tegra interconnects, Rockchip RK3588 S/PDIF, Texas
     Instruments SN012776 and TAS5770L, and Wolfson WM8904 DMICs

  Others:
   - Conversions of PM ops with the modern macros in the rest drivers
   - USB-audio quirks and fixes for Presonus Studio, DJM-A9, CME
   - HD-audio quirks and fixes ASUS, HP, Lenovo, and others"

* tag 'sound-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (651 commits)
  ALSA: hda: tas2781-i2c: Remove unnecessary NULL check before release_firmware()
  ALSA: hda: cs35l56: Remove unnecessary NULL check before release_firmware()
  ALSA: hda/realtek: Bass speaker fixup for ASUS UM5606KA
  ALSA: hda/realtek: Fix built-in mic assignment on ASUS VivoBook X515UA
  ALSA: hda/realtek: Add support for various HP Laptops using CS35L41 HDA
  ALSA: timer: Don't take register_mutex with copy_from/to_user()
  ASoC: SDCA: Correct handling of selected mode DisCo property
  ASoC: amd: yc: update quirk data for new Lenovo model
  ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3247
  ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3315
  ASoC: SOF: mediatek: Commonize duplicated functions
  ASoC: dmic: Fix NULL pointer dereference
  ASoC: wm8904: add DMIC support
  ASoC: wm8904: get platform data from DT
  ASoC: dt-bindings: wm8904: Add DMIC, GPIO, MIC and EQ support
  ASoC: wm8904: Don't touch GPIO configs set to 0xFFFF
  of: Add of_property_read_u16_index
  ALSA: oxygen: Fix dependency on CONFIG_PM_SLEEP
  ASoC: ops: Apply platform_max after deciding control type
  ASoC: ops: Remove some unnecessary local variables
  ...
parents 1e26c5e2 3a949fc0
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -31,6 +31,10 @@ node must be named "audio-codec".
Required properties for the audio-codec subnode:

- #sound-dai-cells = <1>;
- interrupts		: should contain jack detection interrupts, with headset
			  detect interrupt matching "hs" and microphone bias 2
			  detect interrupt matching "mb2" in interrupt-names.
- interrupt-names	: Contains "hs", "mb2"

The audio-codec provides two DAIs. The first one is connected to the
Stereo HiFi DAC and the second one is connected to the Voice DAC.
@@ -52,6 +56,8 @@ Example:

		audio-codec {
			#sound-dai-cells = <1>;
			interrupts-extended = <&cpcap 9 0>, <&cpcap 10 0>;
			interrupt-names = "hs", "mb2";

			/* HiFi */
			port@0 {
+0 −50
Original line number Diff line number Diff line
* Atmel SSC driver.

Required properties:
- compatible: "atmel,at91rm9200-ssc" or "atmel,at91sam9g45-ssc"
	- atmel,at91rm9200-ssc: support pdc transfer
	- atmel,at91sam9g45-ssc: support dma transfer
- reg: Should contain SSC registers location and length
- interrupts: Should contain SSC interrupt
- clock-names: tuple listing input clock names.
	Required elements: "pclk"
- clocks: phandles to input clocks.


Required properties for devices compatible with "atmel,at91sam9g45-ssc":
- dmas: DMA specifier, consisting of a phandle to DMA controller node,
  the memory interface and SSC DMA channel ID (for tx and rx).
  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
- dma-names: Must be "tx", "rx".

Optional properties:
  - atmel,clk-from-rk-pin: bool property.
     - When SSC works in slave mode, according to the hardware design, the
       clock can get from TK pin, and also can get from RK pin. So, add
       this parameter to choose where the clock from.
     - By default the clock is from TK pin, if the clock from RK pin, this
       property is needed.
  - #sound-dai-cells: Should contain <0>.
     - This property makes the SSC into an automatically registered DAI.

Examples:
- PDC transfer:
ssc0: ssc@fffbc000 {
	compatible = "atmel,at91rm9200-ssc";
	reg = <0xfffbc000 0x4000>;
	interrupts = <14 4 5>;
	clocks = <&ssc0_clk>;
	clock-names = "pclk";
};

- DMA transfer:
ssc0: ssc@f0010000 {
      compatible = "atmel,at91sam9g45-ssc";
      reg = <0xf0010000 0x4000>;
      interrupts = <28 4 5>;
      dmas = <&dma0 1 13>,
	     <&dma0 1 14>;
      dma-names = "tx", "rx";
      pinctrl-names = "default";
      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
};
+6 −0
Original line number Diff line number Diff line
@@ -102,6 +102,10 @@ properties:
    maxItems: 1
    description: GPIO to enable the external amplifier

  hp-det-gpios:
    maxItems: 1
    description: GPIO for headphone/line-out detection

required:
  - "#sound-dai-cells"
  - compatible
@@ -251,8 +255,10 @@ allOf:
        allwinner,audio-routing:
          items:
            enum:
              - Headphone
              - LINEOUT
              - Line Out
              - Speaker

        dmas:
          items:
+104 −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/atmel,at91-ssc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Atmel Serial Synchronous Serial (SSC)

maintainers:
  - Andrei Simion <andrei.simion@microchip.com>

description:
  The Atmel Synchronous Serial Controller (SSC) provides a versatile
  synchronous communication link for audio and telecom applications,
  supporting protocols like I2S, Short Frame Sync, and Long Frame Sync.

properties:
  compatible:
    enum:
      - atmel,at91rm9200-ssc
      - atmel,at91sam9g45-ssc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: pclk

  dmas:
    items:
      - description: TX DMA Channel
      - description: RX DMA Channel

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

  atmel,clk-from-rk-pin:
    description:
      Specify the clock source for the SSC (Synchronous Serial Controller)
      when operating in slave mode. By default, the clock is sourced from
      the TK pin.
    type: boolean

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

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

allOf:
  - $ref: dai-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - atmel,at91sam9g45-ssc
    then:
      required:
        - dmas
        - dma-names

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/at91.h>
    #include <dt-bindings/dma/at91.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    ssc@100000 {
       compatible = "atmel,at91sam9g45-ssc";
       reg = <0x100000 0x4000>;
       interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
       dmas = <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
                     AT91_XDMAC_DT_PERID(38))>,
              <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
                     AT91_XDMAC_DT_PERID(39))>;
       dma-names = "tx", "rx";
       clocks = <&pmc PMC_TYPE_PERIPHERAL 28>;
       clock-names = "pclk";
       #sound-dai-cells = <0>;
    };

    ssc@c00000 {
      compatible = "atmel,at91rm9200-ssc";
      reg = <0xc00000 0x4000>;
      interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
      clocks = <&pmc PMC_TYPE_PERIPHERAL 14>;
      clock-names = "pclk";
    };
+72 −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/atmel,at91sam9g20ek-wm8731.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Atmel at91sam9g20ek wm8731 audio complex

maintainers:
  - Balakrishnan Sambath <balakrishnan.s@microchip.com>

description:
  The audio complex configuration for Atmel at91sam9g20ek with WM8731 audio codec.

properties:
  compatible:
    const: atmel,at91sam9g20ek-wm8731-audio

  atmel,model:
    $ref: /schemas/types.yaml#/definitions/string
    description: The user-visible name of this sound complex.

  atmel,audio-routing:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    description: A list of the connections between audio components.
    minItems: 2
    maxItems: 4
    items:
      enum:
        # Board Connectors
        - Ext Spk
        - Int Mic

        # CODEC Pins
        - LOUT
        - ROUT
        - LHPOUT
        - RHPOUT
        - LLINEIN
        - RLINEIN
        - MICIN

  atmel,ssc-controller:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle of the SSC controller.

  atmel,audio-codec:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle of WM8731 audio codec.

required:
  - compatible
  - atmel,model
  - atmel,audio-routing
  - atmel,ssc-controller
  - atmel,audio-codec

additionalProperties: false

examples:
  - |
    sound {
        compatible = "atmel,at91sam9g20ek-wm8731-audio";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pck0_as_mck>;
        atmel,model = "wm8731 @ AT91SAMG20EK";
        atmel,audio-routing =
            "Ext Spk", "LHPOUT",
            "Int Mic", "MICIN";
        atmel,ssc-controller = <&ssc0>;
        atmel,audio-codec = <&wm8731>;
    };
Loading