Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb27b2a5 authored by Trinath Thammishetty's avatar Trinath Thammishetty
Browse files

ARM: dts: add audio device tree for sdm429



Add audio device tree for sdm429.

Change-Id: I1ab8abf75c65086f23d4d761c65dfd24f3061212
Signed-off-by: default avatarTrinath Thammishetty <tthamish@codeaurora.org>
parent f2be2c18
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1185,6 +1185,8 @@ Example:
Required properties:
- compatible : "qcom,sm8150-asoc-snd-stub" for SM8150 target.
- compatible : "qcom,kona-asoc-snd-stub" for Kona target.
- compatible : "qcom,msm8952-audio-codec" for pmic codec,
		"qcom,msm8952-dig-asoc-snd" for digital internal codec.
- qcom,model : The user-visible name of this sound card.
- qcom,tasha-mclk-clk-freq : MCLK frequency value for tasha codec
- asoc-platform: This is phandle list containing the references to platform device
+26 −0
Original line number Diff line number Diff line
TFA9898 SmartpA

Required properties:

  - compatible : "nxp,tfa98xx"

  - reg : I2C address of the device

  - reset-gpio : gpio used for HW reset

  - dvdd-supply : Power supply for PA's dvdd

  - dvdd-voltage : Minimum and maximum voltage in uV to set for power supply

  - dvdd-current : dvdd's max current in uA

Examples:

	i2c_smartpa@34 {
		compatible = "nxp,tfa98xx;
		reg = <0x34>;
		reset-gpio = <&tlmm 68 0>;
		dvdd-supply = <&pm660_l9>;
		dvdd-voltage = <1800000 1800000>;
		dvdd-current = <15000>;
	};
+162 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include "msm-audio-lpass.dtsi"

&msm_audio_ion {
	iommus = <&apps_iommu 0x2001 0x0>;
	qcom,smmu-sid-mask = /bits/ 64 <0xf>;
};

&soc {
	qcom,avtimer@c0a300c {
		compatible = "qcom,avtimer";
		reg = <0x0c0a300c 0x4>,
			<0x0c0a3010 0x4>;
		reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
		qcom,clk-div = <27>;
	};

	audio_apr: qcom,msm-audio-apr {
		compatible = "qcom,msm-audio-apr";
		q6core: q6core {
			compatible = "qcom,q6core-audio";
		};
	};

	int_codec: sound {
		status = "disabled";
		compatible = "qcom,msm8952-audio-codec";
		qcom,model = "msm8952-snd-card-mtp";
		reg = <0xc051000 0x4>,
			<0xc051004 0x4>,
			<0xc055000 0x4>,
			<0xc052000 0x4>;
		reg-names = "csr_gp_io_mux_mic_ctl",
			"csr_gp_io_mux_spkr_ctl",
			"csr_gp_io_lpaif_pri_pcm_pri_mode_muxsel",
			"csr_gp_io_mux_quin_ctl";

		qcom,msm-ext-pa = "primary";
		qcom,msm-mclk-freq = <9600000>;
		qcom,msm-mbhc-hphl-swh = <0>;
		qcom,msm-mbhc-gnd-swh = <0>;
		qcom,msm-hs-micbias-type = "external";
		qcom,msm-micbias1-ext-cap;

		qcom,audio-routing =
				"RX_BIAS", "MCLK",
				"SPK_RX_BIAS", "MCLK",
				"INT_LDO_H", "MCLK",
				"RX_I2S_CLK", "MCLK",
				"TX_I2S_CLK", "MCLK",
				"MIC BIAS External", "Handset Mic",
				"MIC BIAS External2", "Headset Mic",
				"MIC BIAS External", "Secondary Mic",
				"AMIC1", "MIC BIAS External",
				"AMIC2", "MIC BIAS External2",
				"AMIC3", "MIC BIAS External",
				"ADC1_IN", "ADC1_OUT",
				"ADC2_IN", "ADC2_OUT",
				"ADC3_IN", "ADC3_OUT",
				"PDM_IN_RX1", "PDM_OUT_RX1",
				"PDM_IN_RX2", "PDM_OUT_RX2",
				"PDM_IN_RX3", "PDM_OUT_RX3",
				"WSA_SPK OUT", "VDD_WSA_SWITCH",
				"SpkrMono WSA_IN", "WSA_SPK OUT";

		qcom,cdc-us-euro-gpios = <&tlmm 63 0>;
		qcom,cdc-us-eu-gpios = <&cdc_us_euro_sw>;
		qcom,pri-mi2s-gpios = <&cdc_pri_mi2s_gpios>;
		qcom,quin-mi2s-gpios = <&cdc_quin_mi2s_gpios>;

		asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
				<&loopback>, <&compress>, <&hostless>,
				<&afe>, <&lsm>, <&routing>, <&pcm_noirq>;
		asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
				"msm-pcm-dsp.2", "msm-voip-dsp",
				"msm-pcm-voice", "msm-pcm-loopback",
				"msm-compress-dsp", "msm-pcm-hostless",
				"msm-pcm-afe", "msm-lsm-client",
				"msm-pcm-routing", "msm-pcm-dsp-noirq";
		asoc-cpu = <&dai_pri_auxpcm>,
			<&dai_mi2s0>, <&dai_mi2s1>,
			<&dai_mi2s2>, <&dai_mi2s3>,
			<&dai_mi2s4>, <&dai_mi2s5>,
			<&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
			<&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,
			<&bt_sco_rx>, <&bt_sco_tx>,
			<&int_fm_rx>, <&int_fm_tx>,
			<&afe_pcm_rx>, <&afe_pcm_tx>,
			<&afe_proxy_rx>, <&afe_proxy_tx>,
			<&incall_record_rx>, <&incall_record_tx>,
			<&incall_music_rx>, <&incall_music_2_rx>;

		asoc-cpu-names = "msm-dai-q6-auxpcm.1",
				"msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
				"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
				"msm-dai-q6-mi2s.4", "msm-dai-q6-mi2s.6",
				"msm-dai-q6-dev.16384", "msmdai-q6-dev.16385",
				"msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
				"msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
				"msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
				"msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289",
				"msm-dai-q6-dev.12292", "msm-dai-q6-dev.12293",
				"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
				"msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
				"msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
				"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770";

		asoc-codec = <&stub_codec>;
		asoc-codec-names = "msm-stub-codec.1";
	};

	cdc_us_euro_sw: msm_cdc_pinctrl_us_euro_sw {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&cross_conn_det_act>;
		pinctrl-1 = <&cross_conn_det_sus>;
	};

	cdc_pri_mi2s_gpios: msm_cdc_pinctrl_pri {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&cdc_pdm_lines_act &cdc_pdm_lines_2_act>;
		pinctrl-1 = <&cdc_pdm_lines_sus &cdc_pdm_lines_2_sus>;
	};

	cdc_quin_mi2s_gpios: msm_cdc_pinctrl_quin {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&pri_tlmm_lines_act &pri_tlmm_ws_act>;
		pinctrl-1 = <&pri_tlmm_lines_sus &pri_tlmm_ws_sus>;
	};

	i2c@78b6000 {
		status = "okay";
	};

	cpe: qcom,msm-cpe-lsm {
		compatible = "qcom,msm-cpe-lsm";
	};

	clock_audio: audio_ext_clk {
		status = "disabled";
		compatible = "qcom,audio-ref-clk";
		clock-names = "osr_clk";
		qcom,node_has_rpm_clock;
		#clock-cells = <1>;
		pinctrl-0 = <&cdc_mclk2_sleep>;
		pinctrl-1 = <&cdc_mclk2_active>;
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <dt-bindings/clock/qcom,rpmcc.h>
#include "sdm429-bg-dvt2-wtp.dtsi"
#include "sdm429-mdss-panels.dtsi"
#include "sdm429-spyro-qrd-evt-audio.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDM429 QRD BG WTP Overlay";
+269 −0
Original line number Diff line number Diff line
@@ -1044,5 +1044,274 @@
				};
			};
		};

		pmx_quat_mi2s {
			label = "quat_mi2s";
			quat_mi2s_active: quat_mi2s_active {
				mux {
					pins = "gpio94", "gpio95";
					function = "sec_mi2s";
				};
				configs {
					pins = "gpio94", "gpio95";
					drive-strength = <8>;   /* 8 MA */
					bias-disable;           /* No PULL */
				};
			};
			quat_mi2s_sleep: quat_mi2s_sleep {
				mux {
					pins = "gpio94", "gpio95";
					function = "sec_mi2s";
				};
				configs {
					pins = "gpio94", "gpio95";
					drive-strength = <2>;   /* 2 MA */
					bias-pull-down;	        /* PULL DOWN */
				};
			};
		};

		pmx_quat_mi2s_din {
			label = "quat_mi2s_din";
			quat_mi2s_din_active: quat_mi2s_din_active {
				mux {
					pins = "gpio12", "gpio13";
					function = "sec_mi2s";
				};
				configs {
					pins = "gpio12", "gpio13";
					drive-strength = <8>;   /* 8 MA */
					bias-disable;	        /* No PULL */
					output-high;
				};
			};
			quat_mi2s_din_sleep: quat_mi2s_din_sleep {
				mux {
					pins = "gpio12", "gpio13";
					function = "sec_mi2s";
				};
				configs {
					pins = "gpio12", "gpio13";
					drive-strength = <2>;   /* 2 MA */
					bias-pull-down;	        /* PULL DOWN */
				};
			};
		};

		cdc-dmic-lines {
			cdc_dmic0_clk_act: dmic0_clk_on {
				mux {
					pins = "gpio89";
					function = "dmic0_clk";
				};

				config {
					pins = "gpio89";
					drive-strength = <8>;
					bias-pull-none;
				};
			};

			cdc_dmic0_clk_sus: dmic0_clk_off {
				mux {
					pins = "gpio89";
					function = "gpio";
				};

				config {
					pins = "gpio89";
					drive-strength = <2>;
					bias-disable;
				};
			};

			cdc_dmic0_data_act: dmic0_data_on {
				mux {
					pins = "gpio90";
					function = "dmic0_data";
				};

				config {
					pins = "gpio90";
					drive-strength = <8>;
					bias-pull-none;
				};
			};

			cdc_dmic0_data_sus: dmic0_data_off {
				mux {
					pins = "gpio90";
					function = "gpio";
				};

				config {
					pins = "gpio90";
					drive-strength = <2>;
					bias-disable;
				};
			};
		};

		cdc_mclk2_pin {
			cdc_mclk2_sleep: cdc_mclk2_sleep {
				mux {
					pins = "gpio66";
					function = "pri_mi2s";
				};
				config {
					pins = "gpio66";
					drive-strength = <2>; /* 2 mA */
					bias-pull-down;       /* PULL DOWN */
				};
			};
			cdc_mclk2_active: cdc_mclk2_active {
				mux {
					pins = "gpio66";
					function = "pri_mi2s";
				};
				config {
					pins = "gpio66";
					drive-strength = <8>; /* 8 mA */
					bias-disable;         /* NO PULL */
				};
			};
		};

		cross-conn-det {
			cross_conn_det_act: lines_on {
				mux {
					pins = "gpio63";
					function = "gpio";
				};

				config {
					pins = "gpio63";
					drive-strength = <8>;
					output-low;
					bias-pull-down;
				};
			};

			cross_conn_det_sus: lines_off {
				mux {
					pins = "gpio63";
					function = "gpio";
				};

				config {
					pins = "gpio63";
					drive-strength = <2>;
					bias-pull-down;
				};
			};
		};

		cdc-pdm-lines {
			cdc_pdm_lines_act: pdm_lines_on {
				mux {
					pins = "gpio69", "gpio73", "gpio74";
					function = "cdc_pdm0";
				};

				config {
					pins = "gpio69", "gpio73", "gpio74";
					drive-strength = <8>;
				};
			};
			cdc_pdm_lines_sus: pdm_lines_off {
				mux {
					pins = "gpio69", "gpio73", "gpio74";
					function = "cdc_pdm0";
				};

				config {
					pins = "gpio69", "gpio73", "gpio74";
					drive-strength = <2>;
					bias-disable;
				};
			};
		};

		cdc-pdm-2-lines {
			cdc_pdm_lines_2_act: pdm_lines_2_on {
				mux {
					pins = "gpio70", "gpio71", "gpio72";
					function = "cdc_pdm0";
				};

				config {
					pins = "gpio70", "gpio71", "gpio72";
					drive-strength = <8>;
				};
			};

			cdc_pdm_lines_2_sus: pdm_lines_2_off {
				mux {
					pins = "gpio70", "gpio71", "gpio72";
					function = "cdc_pdm0";
				};

				config {
					pins = "gpio70", "gpio71", "gpio72";
					drive-strength = <2>;
					bias-disable;
				};
			};
		};

		pri-tlmm-lines {
			pri_tlmm_lines_act: pri_tlmm_lines_act {
				mux {
					pins = "gpio85", "gpio88";
					function = "pri_mi2s";
				};

				config {
					pins = "gpio85", "gpio88";
					drive-strength = <8>;
				};
			};

			pri_tlmm_lines_sus: pri_tlmm_lines_sus {
				mux {
					pins = "gpio85", "gpio88";
					function = "pri_mi2s";
				};

				config {
					pins = "gpio85", "gpio88";
					drive-strength = <2>;
					bias-pull-down;
				};
			};
		};

		pri-tlmm-ws-lines {
			pri_tlmm_ws_act: pri_tlmm_ws_act {
				mux {
					pins = "gpio87";
					function = "pri_mi2s_ws";
				};

				config {
					pins = "gpio87";
					drive-strength = <8>;
				};
			};

			pri_tlmm_ws_sus: pri_tlmm_ws_sus {
				mux {
					pins = "gpio87";
					function = "pri_mi2s_ws";
				};

				config {
					pins = "gpio87";
					drive-strength = <2>;
					bias-pull-down;
				};
			};
		};

	};
};
Loading