Commit 28c0cf16 authored by Garrett Giordano's avatar Garrett Giordano Committed by Nishanth Menon
Browse files

arm64: dts: ti: k3-am625-phyboard-lyra-rdk: Add Audio Codec



The Audio Codec runs over the MCASP (Multichannel Audio Serial Port).

Add pinmux for the Audio Reference Clock and MCASP2.

Add DT nodes for Audio Codec, MCASP2, VCC 1v8 and VCC 3v3 regulators.

Additionally, create a sound node that connects our sound card and the
MCASP2.

Signed-off-by: default avatarGarrett Giordano <ggiordano@phytec.com>
Reviewed-by: default avatarWadim Egorov <w.egorov@phytec.de>
Link: https://lore.kernel.org/r/20240404184250.3772829-1-ggiordano@phytec.com


Signed-off-by: default avatarNishanth Menon <nm@ti.com>
parent b3f62948
Loading
Loading
Loading
Loading
+99 −0
Original line number Diff line number Diff line
@@ -66,6 +66,35 @@ key-menu {
		};
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "phyBOARD-Lyra";
		simple-audio-card,widgets =
			"Microphone",           "Mic Jack",
			"Headphone",            "Headphone Jack",
			"Speaker",              "External Speaker";
		simple-audio-card,routing =
			"MIC3R",                "Mic Jack",
			"Mic Jack",             "Mic Bias",
			"Headphone Jack",       "HPLOUT",
			"Headphone Jack",       "HPROUT",
			"External Speaker",     "SPOP",
			"External Speaker",     "SPOM";
		simple-audio-card,format = "dsp_b";
		simple-audio-card,bitclock-master = <&sound_master>;
		simple-audio-card,frame-master = <&sound_master>;
		simple-audio-card,bitclock-inversion;

		simple-audio-card,cpu {
			sound-dai = <&mcasp2>;
		};

		sound_master: simple-audio-card,codec {
				sound-dai = <&audio_codec>;
				clocks = <&audio_refclk1>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -82,6 +111,15 @@ led-2 {
		};
	};

	vcc_1v8: regulator-vcc-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
		regulator-boot-on;
	};

	vcc_3v3_mmc: regulator-vcc-3v3-mmc {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3_MMC";
@@ -90,9 +128,24 @@ vcc_3v3_mmc: regulator-vcc-3v3-mmc {
		regulator-always-on;
		regulator-boot-on;
	};

	vcc_3v3_sw: regulator-vcc-3v3-sw {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3_SW";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
	};
};

&main_pmx0 {
	audio_ext_refclk1_pins_default: audio-ext-refclk1-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x0a0, PIN_OUTPUT, 1) /* (K25) GPMC0_WPn.AUDIO_EXT_REFCLK1 */
		>;
	};

	gpio_keys_pins_default: gpio-keys-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x1d4, PIN_INPUT, 7) /* (B15) UART0_RTSn.GPIO1_23 */
@@ -150,6 +203,15 @@ AM62X_IOPAD(0x1d8, PIN_OUTPUT, 0) /* (C15) MCAN0_TX */
		>;
	};

	main_mcasp2_pins_default: main-mcasp2-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x070, PIN_INPUT, 3) /* (T24) GPMC0_AD13.MCASP2_ACLKX */
			AM62X_IOPAD(0x06c, PIN_INPUT, 3) /* (T22) GPMC0_AD12.MCASP2_AFSX */
			AM62X_IOPAD(0x064, PIN_OUTPUT, 3) /* (T25) GPMC0_AD10.MCASP2_AXR2 */
			AM62X_IOPAD(0x068, PIN_INPUT, 3) /* (R21) GPMC0_AD11.MCASP2_AXR3 */
		>;
	};

	main_mmc1_pins_default: main-mmc1-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x23c, PIN_INPUT_PULLUP, 0) /* (A21) MMC1_CMD */
@@ -254,6 +316,21 @@ &main_i2c1 {
	clock-frequency = <100000>;
	status = "okay";

	audio_codec: audio-codec@18 {
		pinctrl-names = "default";
		pinctrl-0 = <&audio_ext_refclk1_pins_default>;

		#sound-dai-cells = <0>;
		compatible = "ti,tlv320aic3007";
		reg = <0x18>;
		ai3x-micbias-vg = <2>;

		AVDD-supply = <&vcc_3v3_sw>;
		IOVDD-supply = <&vcc_3v3_sw>;
		DRVDD-supply = <&vcc_3v3_sw>;
		DVDD-supply = <&vcc_1v8>;
	};

	gpio_exp: gpio-expander@21 {
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_exp_int_pins_default>;
@@ -329,6 +406,28 @@ &main_uart1 {
	status = "okay";
};

&mcasp2 {
	#sound-dai-cells = <0>;

	pinctrl-names = "default";
	pinctrl-0 = <&main_mcasp2_pins_default>;

	/* MCASP_IIS_MODE */
	op-mode = <0>;
	tdm-slots = <2>;

	/* 0: INACTIVE, 1: TX, 2: RX */
	serial-dir = <
			0 0 1 2
			0 0 0 0
			0 0 0 0
			0 0 0 0
	>;
	tx-num-evt = <32>;
	rx-num-evt = <32>;
	status = "okay";
};

&sdhci1 {
	vmmc-supply = <&vcc_3v3_mmc>;
	vqmmc-supply = <&vddshv5_sdio>;