From: Daniel Baluta Date: Tue, 3 Dec 2019 13:16:53 +0000 (+0200) Subject: arm64: dts: Enable simple-audio-card for SAI1 + wm8960 X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~577^2~2^2~557 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=54615c8e2bba75a433b09a1e09746a97a2925024;p=linux.git arm64: dts: Enable simple-audio-card for SAI1 + wm8960 We use existing simple-audio-card machine drivfer to demonstrate the usage of SAI1 + wm8960 codec. FSL DAI driver is used in order to manage SAI resources (PD, clocks, pinctrl) the rest is taken care of by the SAI driver from the DSP. Signed-off-by: Daniel Baluta --- diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile index f160839949f3..80e202e99e47 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -72,6 +72,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8dxl-phantom-mek.dtb \ imx8dxl-phantom-mek-rpmsg.dtb dtb-$(CONFIG_ARCH_MXC) += imx8qxp-mek.dtb imx8qxp-mek-dsp.dtb imx8qxp-mek-ov5640.dtb \ imx8qxp-mek-enet2.dtb imx8qxp-mek-enet2-tja1100.dtb imx8qxp-mek-sof.dtb \ + imx8qxp-mek-sof-wm8960.dtb \ imx8qxp-mek-rpmsg.dtb imx8qxp-mek-a0.dtb \ imx8qxp-mek-it6263-lvds0-dual-channel.dtb \ imx8qxp-mek-it6263-lvds1-dual-channel.dtb \ diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek-sof-wm8960.dts b/arch/arm64/boot/dts/freescale/imx8qxp-mek-sof-wm8960.dts new file mode 100644 index 000000000000..81eaeba31935 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek-sof-wm8960.dts @@ -0,0 +1,147 @@ +// SPDX-License-Identifier: GPL-2.0+ +// Copyright NXP 2018 + +#include "imx8qxp-mek.dts" + +/ { + sound-cs42888 { + status = "disabled"; + }; + + sound-wm8960 { + status = "disabled"; + }; + + sai1_port: sai-port { + #sound-dai-cells = <0>; + compatible = "fsl,sai-dai"; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai1>; + + power-domains = <&pd IMX_SC_R_SAI_1>, + <&pd IMX_SC_R_DMA_0_CH14>, + <&pd IMX_SC_R_DMA_0_CH15>, + <&pd IMX_SC_R_AUDIO_CLK_0>, + <&pd IMX_SC_R_AUDIO_CLK_1>, + <&pd IMX_SC_R_AUDIO_PLL_0>, + <&pd IMX_SC_R_AUDIO_PLL_1>; + + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; + clocks = <&sai1_lpcg 1>, <&clk_dummy>, <&sai1_lpcg 0>, + <&clk_dummy>, <&clk_dummy>; + assigned-clocks = <&acm IMX_ADMA_ACM_SAI1_MCLK_SEL>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MISC0>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MISC1>, + <&sai1_lpcg 0>; /* FIXME: should be sai1, original code is 0 */ + assigned-clock-parents = <&aud_pll_div0_lpcg 0>; + assigned-clock-rates = <0>, <786432000>, <49152000>, <12288000>, <49152000>; + status="okay"; + }; + + sof-sound-wm8960 { + compatible = "simple-audio-card"; + model = "wm8960-audio"; + simple-audio-card,bitclock-master = <&sndcodec>; + simple-audio-card,frame-master = <&sndcodec>; + hp-det-gpio = <&lsio_gpio1 0 0>; + mic-det-gpio = <&lsio_gpio1 0 0>; + simple-audio-card,widgets = + "Headphone", "Headphone Jack", + "Speaker", "Ext Spk", + "Microphone", "Mic Jack"; + simple-audio-card,audio-routing = + "Headphone Jack", "HP_L", + "Headphone Jack", "HP_R", + "Ext Spk", "SPK_LP", + "Ext Spk", "SPK_LN", + "Ext Spk", "SPK_RP", + "Ext Spk", "SPK_RN", + "LINPUT2", "Mic Jack", + "LINPUT3", "Mic Jack", + "RINPUT1", "Mic Jack", + "RINPUT2", "Mic Jack", + "Playback", "SAI1.OUT", + "SAI1.IN", "Capture"; + simple-audio-card,dai-link { + format = "i2s"; + cpu { + sound-dai = <&sai1_port>; + }; + plat { + sound-dai = <&dsp>; + }; + sndcodec: codec { + sound-dai = <&wm8960>; + }; + }; + }; +}; + +&edma0 { + compatible = "fsl,imx8qm-edma"; + reg = <0x59280000 0x10000>, /* spdif0 rx */ + <0x59290000 0x10000>, /* spdif0 tx */ + <0x592c0000 0x10000>, /* sai0 rx */ + <0x592d0000 0x10000>, /* sai0 tx */ + <0x59350000 0x10000>, + <0x59370000 0x10000>; + #dma-cells = <3>; + shared-interrupt; + dma-channels = <6>; + interrupts = , /* spdif0 */ + , + , /* sai0 */ + , + , + ; + interrupt-names = "edma0-chan8-rx", "edma0-chan9-tx", /* spdif0 */ + "edma0-chan12-rx", "edma0-chan13-tx", /* sai0 */ + "edma0-chan21-tx", /* gpt5 */ + "edma0-chan23-rx"; /* gpt7 */ + + power-domains = <&pd IMX_SC_R_DMA_0_CH8>, + <&pd IMX_SC_R_DMA_0_CH9>, + <&pd IMX_SC_R_DMA_0_CH12>, + <&pd IMX_SC_R_DMA_0_CH13>, + <&pd IMX_SC_R_DMA_0_CH21>, + <&pd IMX_SC_R_DMA_0_CH23>; + power-domain-names = "edma0-chan8", "edma0-chan9", + "edma0-chan12", "edma0-chan13", + "edma0-chan21", "edma0-chan23"; + status = "okay"; +}; + +&dsp { + #sound-dai-cells = <0>; + compatible = "fsl,imx8qxp-dsp"; + reg = <0x596e8000 0x88000>; + tplg-name = "sof-imx8qxp-wm8960.tplg"; + status = "okay"; +}; + +&wm8960 { + #sound-dai-cells = <0>; + status = "okay"; +}; + +&amix { + status = "disabled"; +}; + +&esai0 { + status = "disabled"; +}; + +&asrc0 { + status = "disabled"; +}; + +&sai1 { + status = "disabled"; +}; + +&cs42888 { + status = "disabled"; +};