[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAGb2v65NQHZ5k8626+cH_kM5==y0yHHWinsyvU8utu6ywKwDJg@mail.gmail.com>
Date: Thu, 8 Nov 2018 14:52:19 +0800
From: Chen-Yu Tsai <wens@...e.org>
To: Vasily Khoruzhick <anarsoul@...il.com>
Cc: Maxime Ripard <maxime.ripard@...tlin.com>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>,
linux-arm-kernel <linux-arm-kernel@...ts.infradead.org>,
devicetree <devicetree@...r.kernel.org>,
linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v6 1/3] arm64: dts: allwinner: a64: add nodes necessary
for analog sound support
On Thu, Nov 8, 2018 at 2:42 PM Vasily Khoruzhick <anarsoul@...il.com> wrote:
>
> Add nodes for i2s, digital and analog parts of audiocodec on A64
>
> Signed-off-by: Vasily Khoruzhick <anarsoul@...il.com>
> ---
> arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 58 +++++++++++++++++++
> 1 file changed, 58 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> index f3a66f888205..53796a3e6bf3 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> @@ -173,6 +173,34 @@
> compatible = "linux,spdif-dit";
> };
>
> + sound: sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "sun50i-a64-audio";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,frame-master = <&cpudai>;
> + simple-audio-card,bitclock-master = <&cpudai>;
> + simple-audio-card,mclk-fs = <512>;
> + simple-audio-card,aux-devs = <&codec_analog>;
> + simple-audio-card,routing =
> + "Left DAC", "AIF1 Slot 0 Left",
> + "Right DAC", "AIF1 Slot 0 Right",
> + "AIF1 Slot 0 Left ADC", "Left ADC",
> + "AIF1 Slot 0 Right ADC", "Right ADC",
> + "Left ADC", "ADC",
> + "Right ADC", "ADC",
The ADC widget is an overall enable control for the digital part of
the codec's ADC.
It is modeled as a supply widget in sun8i-codec. The routing should be internal
to sun8i-codec. See the following for the DAC routing:
https://elixir.bootlin.com/linux/v4.20-rc1/source/sound/soc/sunxi/sun8i-codec.c#L474
> + "MIC1", "Mic",
> + "MIC2", "Headset Mic";
Drop the last two. These belong at the board level. And as previously mentioned,
these two widgets from the sun8i-codec driver are bogus.
> + status = "disabled";
> +
> + cpudai: simple-audio-card,cpu {
> + sound-dai = <&dai>;
> + };
> +
> + link_codec: simple-audio-card,codec {
> + sound-dai = <&codec>;
> + };
> + };
> +
> timer {
> compatible = "arm,armv8-timer";
> interrupts = <GIC_PPI 13
> @@ -665,6 +693,30 @@
> status = "disabled";
> };
>
> + dai: dai@...2c00 {
> + #sound-dai-cells = <0>;
> + compatible = "allwinner,sun50i-a64-codec-i2s";
> + reg = <0x01c22c00 0x200>;
> + interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
> + clock-names = "apb", "mod";
> + resets = <&ccu RST_BUS_CODEC>;
> + reset-names = "rst";
> + dmas = <&dma 15>, <&dma 15>;
> + dma-names = "rx", "tx";
> + status = "disabled";
> + };
> +
> + codec: codec@...2e00 {
> + #sound-dai-cells = <0>;
> + compatible = "allwinner,sun8i-a33-codec";
> + reg = <0x01c22e00 0x600>;
> + interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
> + clock-names = "bus", "mod";
> + status = "disabled";
> + };
> +
> uart0: serial@...8000 {
> compatible = "snps,dw-apb-uart";
> reg = <0x01c28000 0x400>;
> @@ -902,6 +954,12 @@
> #reset-cells = <1>;
> };
>
> + codec_analog: codec-analog@...15c0 {
> + compatible = "allwinner,sun50i-a64-codec-analog";
> + reg = <0x01f015c0 0x4>;
> + status = "disabled";
> + };
> +
> r_i2c: i2c@...2400 {
> compatible = "allwinner,sun50i-a64-i2c",
> "allwinner,sun6i-a31-i2c";
> --
> 2.19.1
>
Powered by blists - more mailing lists