Unverified Commit bc6d2e30 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: mediatek: Add support for MT8186 SoC

Merge series from Jiaxin Yu <jiaxin.yu@mediatek.com>:

This series of patches adds support for Mediatek AFE of MT8186 Soc.
parents cd57272c 1bcca73e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -7,7 +7,9 @@ Must be a child node of PMIC wrapper.

Required properties:

- compatible : "mediatek,mt6358-sound".
- compatible - "string" - One of:
    "mediatek,mt6358-sound"
    "mediatek,mt6366-sound"
- Avdd-supply : power source of AVDD

Optional properties:
+175 −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/mt8186-afe-pcm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek AFE PCM controller for mt8186

maintainers:
  - Jiaxin Yu <jiaxin.yu@mediatek.com>

properties:
  compatible:
    const: mediatek,mt8186-sound

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  resets:
    maxItems: 1

  reset-names:
    const: audiosys

  mediatek,apmixedsys:
    $ref: "/schemas/types.yaml#/definitions/phandle"
    description: The phandle of the mediatek apmixedsys controller

  mediatek,infracfg:
    $ref: "/schemas/types.yaml#/definitions/phandle"
    description: The phandle of the mediatek infracfg controller

  mediatek,topckgen:
    $ref: "/schemas/types.yaml#/definitions/phandle"
    description: The phandle of the mediatek topckgen controller

  clocks:
    items:
      - description: audio infra sys clock
      - description: audio infra 26M clock
      - description: audio top mux
      - description: audio intbus mux
      - description: mainpll 136.5M clock
      - description: faud1 mux
      - description: apll1 clock
      - description: faud2 mux
      - description: apll2 clock
      - description: audio engen1 mux
      - description: apll1_d8 22.5792M clock
      - description: audio engen2 mux
      - description: apll2_d8 24.576M clock
      - description: i2s0 mclk mux
      - description: i2s1 mclk mux
      - description: i2s2 mclk mux
      - description: i2s4 mclk mux
      - description: tdm mclk mux
      - description: i2s0_mck divider
      - description: i2s1_mck divider
      - description: i2s2_mck divider
      - description: i2s4_mck divider
      - description: tdm_mck divider
      - description: audio hires mux
      - description: 26M clock

  clock-names:
    items:
      - const: aud_infra_clk
      - const: mtkaif_26m_clk
      - const: top_mux_audio
      - const: top_mux_audio_int
      - const: top_mainpll_d2_d4
      - const: top_mux_aud_1
      - const: top_apll1_ck
      - const: top_mux_aud_2
      - const: top_apll2_ck
      - const: top_mux_aud_eng1
      - const: top_apll1_d8
      - const: top_mux_aud_eng2
      - const: top_apll2_d8
      - const: top_i2s0_m_sel
      - const: top_i2s1_m_sel
      - const: top_i2s2_m_sel
      - const: top_i2s4_m_sel
      - const: top_tdm_m_sel
      - const: top_apll12_div0
      - const: top_apll12_div1
      - const: top_apll12_div2
      - const: top_apll12_div4
      - const: top_apll12_div_tdm
      - const: top_mux_audio_h
      - const: top_clk26m_clk

required:
  - compatible
  - interrupts
  - resets
  - reset-names
  - mediatek,apmixedsys
  - mediatek,infracfg
  - mediatek,topckgen
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    afe: mt8186-afe-pcm@11210000 {
        compatible = "mediatek,mt8186-sound";
        reg = <0x11210000 0x2000>;
        interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
        resets = <&watchdog 17>; //MT8186_TOPRGU_AUDIO_SW_RST
        reset-names = "audiosys";
        mediatek,apmixedsys = <&apmixedsys>;
        mediatek,infracfg = <&infracfg>;
        mediatek,topckgen = <&topckgen>;
        clocks = <&infracfg_ao 44>, //CLK_INFRA_AO_AUDIO
                 <&infracfg_ao 54>, //CLK_INFRA_AO_AUDIO_26M_BCLK
                 <&topckgen 15>, //CLK_TOP_AUDIO
                 <&topckgen 16>, //CLK_TOP_AUD_INTBUS
                 <&topckgen 70>, //CLK_TOP_MAINPLL_D2_D4
                 <&topckgen 17>, //CLK_TOP_AUD_1
                 <&apmixedsys 12>, //CLK_APMIXED_APLL1
                 <&topckgen 18>, //CLK_TOP_AUD_2
                 <&apmixedsys 13>, //CLK_APMIXED_APLL2
                 <&topckgen 19>, //CLK_TOP_AUD_ENGEN1
                 <&topckgen 101>, //CLK_TOP_APLL1_D8
                 <&topckgen 20>, //CLK_TOP_AUD_ENGEN2
                 <&topckgen 104>, //CLK_TOP_APLL2_D8
                 <&topckgen 63>, //CLK_TOP_APLL_I2S0_MCK_SEL
                 <&topckgen 64>, //CLK_TOP_APLL_I2S1_MCK_SEL
                 <&topckgen 65>, //CLK_TOP_APLL_I2S2_MCK_SEL
                 <&topckgen 66>, //CLK_TOP_APLL_I2S4_MCK_SEL
                 <&topckgen 67>, //CLK_TOP_APLL_TDMOUT_MCK_SEL
                 <&topckgen 131>, //CLK_TOP_APLL12_CK_DIV0
                 <&topckgen 132>, //CLK_TOP_APLL12_CK_DIV1
                 <&topckgen 133>, //CLK_TOP_APLL12_CK_DIV2
                 <&topckgen 134>, //CLK_TOP_APLL12_CK_DIV4
                 <&topckgen 135>, //CLK_TOP_APLL12_CK_DIV_TDMOUT_M
                 <&topckgen 44>, //CLK_TOP_AUDIO_H
                 <&clk26m>;
        clock-names = "aud_infra_clk",
                      "mtkaif_26m_clk",
                      "top_mux_audio",
                      "top_mux_audio_int",
                      "top_mainpll_d2_d4",
                      "top_mux_aud_1",
                      "top_apll1_ck",
                      "top_mux_aud_2",
                      "top_apll2_ck",
                      "top_mux_aud_eng1",
                      "top_apll1_d8",
                      "top_mux_aud_eng2",
                      "top_apll2_d8",
                      "top_i2s0_m_sel",
                      "top_i2s1_m_sel",
                      "top_i2s2_m_sel",
                      "top_i2s4_m_sel",
                      "top_tdm_m_sel",
                      "top_apll12_div0",
                      "top_apll12_div1",
                      "top_apll12_div2",
                      "top_apll12_div4",
                      "top_apll12_div_tdm",
                      "top_mux_audio_h",
                      "top_clk26m_clk";
    };

...
+75 −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/mt8186-mt6366-da7219-max98357.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek MT8186 with MT6366, DA7219 and MAX98357 ASoC sound card driver

maintainers:
  - Jiaxin Yu <jiaxin.yu@mediatek.com>

description:
  This binding describes the MT8186 sound card.

properties:
  compatible:
    enum:
      - mediatek,mt8186-mt6366-da7219-max98357-sound

  mediatek,platform:
    $ref: "/schemas/types.yaml#/definitions/phandle"
    description: The phandle of MT8186 ASoC platform.

  headset-codec:
    type: object
    additionalProperties: false
    properties:
      sound-dai:
        maxItems: 1
    required:
      - sound-dai

  playback-codecs:
    type: object
    additionalProperties: false
    properties:
      sound-dai:
        items:
          - description: phandle of dp codec
          - description: phandle of l channel speaker codec
          - description: phandle of r channel speaker codec
        minItems: 2
    required:
      - sound-dai

additionalProperties: false

required:
  - compatible
  - mediatek,platform
  - headset-codec
  - playback-codecs

examples:
  - |

    sound: mt8186-sound {
        compatible = "mediatek,mt8186-mt6366-da7219-max98357-sound";
        mediatek,platform = <&afe>;
        pinctrl-names = "aud_clk_mosi_off",
                        "aud_clk_mosi_on";
        pinctrl-0 = <&aud_clk_mosi_off>;
        pinctrl-1 = <&aud_clk_mosi_on>;

        headset-codec {
            sound-dai = <&da7219>;
        };

        playback-codecs {
            sound-dai = <&anx_bridge_dp>,
                        <&max98357a>;
        };
    };

...
+75 −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/mt8186-mt6366-rt1019-rt5682s.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek MT8186 with MT6366, RT1019 and RT5682S ASoC sound card driver

maintainers:
  - Jiaxin Yu <jiaxin.yu@mediatek.com>

description:
  This binding describes the MT8186 sound card.

properties:
  compatible:
    enum:
      - mediatek,mt8186-mt6366-rt1019-rt5682s-sound

  mediatek,platform:
    $ref: "/schemas/types.yaml#/definitions/phandle"
    description: The phandle of MT8186 ASoC platform.

  headset-codec:
    type: object
    additionalProperties: false
    properties:
      sound-dai:
        maxItems: 1
    required:
      - sound-dai

  playback-codecs:
    type: object
    additionalProperties: false
    properties:
      sound-dai:
        items:
          - description: phandle of dp codec
          - description: phandle of l channel speaker codec
          - description: phandle of r channel speaker codec
        minItems: 2
    required:
      - sound-dai

additionalProperties: false

required:
  - compatible
  - mediatek,platform
  - headset-codec
  - playback-codecs

examples:
  - |

    sound: mt8186-sound {
        compatible = "mediatek,mt8186-mt6366-rt1019-rt5682s-sound";
        mediatek,platform = <&afe>;
        pinctrl-names = "aud_clk_mosi_off",
                        "aud_clk_mosi_on";
        pinctrl-0 = <&aud_clk_mosi_off>;
        pinctrl-1 = <&aud_clk_mosi_on>;

        headset-codec {
            sound-dai = <&rt5682s>;
        };

        playback-codecs {
             sound-dai = <&it6505dptx>,
                         <&rt1019p>;
        };
    };

...
+44 −0
Original line number Diff line number Diff line
@@ -152,6 +152,50 @@ config SND_SOC_MT8183_DA7219_MAX98357A
	  Select Y if you have such device.
	  If unsure select "N".

config SND_SOC_MT8186
	tristate "ASoC support for Mediatek MT8186 chip"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on COMMON_CLK
	select SND_SOC_MEDIATEK
	select MFD_SYSCON if SND_SOC_MT6358
	help
	  This adds ASoC driver for Mediatek MT8186 boards
	  that can be used with other codecs.
	  Select Y if you have such device.
	  If unsure select "N".

config SND_SOC_MT8186_MT6366_DA7219_MAX98357
	tristate "ASoC Audio driver for MT8186 with DA7219 MAX98357A codec"
	depends on I2C && GPIOLIB
	depends on SND_SOC_MT8186 && MTK_PMIC_WRAP
	select SND_SOC_MT6358
	select SND_SOC_MAX98357A
	select SND_SOC_DA7219
	select SND_SOC_BT_SCO
	select SND_SOC_DMIC
	select SND_SOC_HDMI_CODEC
	help
	  This adds ASoC driver for Mediatek MT8186 boards
	  with the MT6366(MT6358) DA7219 MAX98357A codecs.
	  Select Y if you have such device.
	  If unsure select "N".

config SND_SOC_MT8186_MT6366_RT1019_RT5682S
	tristate "ASoC Audio driver for MT8186 with RT1019 RT5682S codec"
	depends on I2C && GPIOLIB
	depends on SND_SOC_MT8186 && MTK_PMIC_WRAP
	select SND_SOC_MT6358
	select SND_SOC_RT1015P
	select SND_SOC_RT5682S
	select SND_SOC_BT_SCO
	select SND_SOC_DMIC
	select SND_SOC_HDMI_CODEC
	help
	  This adds ASoC driver for Mediatek MT8186 boards
	  with the MT6366(MT6358) RT1019 RT5682S codecs.
	  Select Y if you have such device.
	  If unsure select "N".

config SND_SOC_MTK_BTCVSD
	tristate "ALSA BT SCO CVSD/MSBC Driver"
	help
Loading