162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2018 Logic PD, Inc - https://www.logicpd.com/
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/ {
962306a36Sopenharmony_ci	codec1 {
1062306a36Sopenharmony_ci		compatible = "simple-audio-card";
1162306a36Sopenharmony_ci		simple-audio-card,name = "tlv320aic23-hifi";
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci		simple-audio-card,widgets =
1462306a36Sopenharmony_ci			"Microphone", "Mic In",
1562306a36Sopenharmony_ci			"Line", "Line In",
1662306a36Sopenharmony_ci			"Line", "Line Out";
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci		simple-audio-card,routing =
1962306a36Sopenharmony_ci			"Line Out", "LOUT",
2062306a36Sopenharmony_ci			"Line Out", "ROUT",
2162306a36Sopenharmony_ci			"LLINEIN", "Line In",
2262306a36Sopenharmony_ci			"RLINEIN", "Line In",
2362306a36Sopenharmony_ci			"MICIN", "Mic In";
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci		simple-audio-card,format = "i2s";
2662306a36Sopenharmony_ci		simple-audio-card,bitclock-master = <&sound_master>;
2762306a36Sopenharmony_ci		simple-audio-card,frame-master = <&sound_master>;
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci		simple-audio-card,cpu {
3062306a36Sopenharmony_ci			sound-dai = <&mcbsp1>;
3162306a36Sopenharmony_ci		};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci		sound_master: simple-audio-card,codec {
3462306a36Sopenharmony_ci			sound-dai = <&tlv320aic23_1>;
3562306a36Sopenharmony_ci			system-clock-frequency = <12000000>;
3662306a36Sopenharmony_ci		};
3762306a36Sopenharmony_ci	};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	codec2 {
4062306a36Sopenharmony_ci		compatible = "simple-audio-card";
4162306a36Sopenharmony_ci		simple-audio-card,name = "tlv320aic23-hifi";
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci		simple-audio-card,widgets =
4462306a36Sopenharmony_ci			"Microphone", "Mic In",
4562306a36Sopenharmony_ci			"Line", "Line In",
4662306a36Sopenharmony_ci			"Line", "Line Out";
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci		simple-audio-card,routing =
4962306a36Sopenharmony_ci			"Line Out", "LOUT",
5062306a36Sopenharmony_ci			"Line Out", "ROUT",
5162306a36Sopenharmony_ci			"LLINEIN", "Line In",
5262306a36Sopenharmony_ci			"RLINEIN", "Line In",
5362306a36Sopenharmony_ci			"MICIN", "Mic In";
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci		simple-audio-card,format = "i2s";
5662306a36Sopenharmony_ci		simple-audio-card,bitclock-master = <&sound_master2>;
5762306a36Sopenharmony_ci		simple-audio-card,frame-master = <&sound_master2>;
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci		simple-audio-card,cpu {
6062306a36Sopenharmony_ci			sound-dai = <&mcbsp2>;
6162306a36Sopenharmony_ci		};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci		sound_master2: simple-audio-card,codec {
6462306a36Sopenharmony_ci			sound-dai = <&tlv320aic23_2>;
6562306a36Sopenharmony_ci			system-clock-frequency = <12000000>;
6662306a36Sopenharmony_ci		};
6762306a36Sopenharmony_ci	};
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	expander-keys {
7062306a36Sopenharmony_ci		compatible = "gpio-keys-polled";
7162306a36Sopenharmony_ci		poll-interval = <100>;
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci		key-record {
7462306a36Sopenharmony_ci			label = "Record";
7562306a36Sopenharmony_ci			/* linux,code = <BTN_0>; */
7662306a36Sopenharmony_ci			gpios = <&tca6416_2 15 GPIO_ACTIVE_LOW>;
7762306a36Sopenharmony_ci		};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci		key-play {
8062306a36Sopenharmony_ci			label = "Play";
8162306a36Sopenharmony_ci			linux,code = <KEY_PLAY>;
8262306a36Sopenharmony_ci			gpios = <&tca6416_2 14 GPIO_ACTIVE_LOW>;
8362306a36Sopenharmony_ci		};
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci		key-stop {
8662306a36Sopenharmony_ci			label = "Stop";
8762306a36Sopenharmony_ci			linux,code = <KEY_STOP>;
8862306a36Sopenharmony_ci			gpios = <&tca6416_2 13 GPIO_ACTIVE_LOW>;
8962306a36Sopenharmony_ci		};
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci		key-fwd {
9262306a36Sopenharmony_ci			label = "FWD";
9362306a36Sopenharmony_ci			linux,code = <KEY_FASTFORWARD>;
9462306a36Sopenharmony_ci			gpios = <&tca6416_2 12 GPIO_ACTIVE_LOW>;
9562306a36Sopenharmony_ci		};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci		key-rwd {
9862306a36Sopenharmony_ci			label = "RWD";
9962306a36Sopenharmony_ci			linux,code = <KEY_REWIND>;
10062306a36Sopenharmony_ci			gpios = <&tca6416_2 11 GPIO_ACTIVE_LOW>;
10162306a36Sopenharmony_ci		};
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci		key-shift {
10462306a36Sopenharmony_ci			label = "Shift";
10562306a36Sopenharmony_ci			linux,code = <KEY_LEFTSHIFT>;
10662306a36Sopenharmony_ci			gpios = <&tca6416_2 10 GPIO_ACTIVE_LOW>;
10762306a36Sopenharmony_ci		};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci		key-mode {
11062306a36Sopenharmony_ci			label = "Mode";
11162306a36Sopenharmony_ci			linux,code = <BTN_MODE>;
11262306a36Sopenharmony_ci			gpios = <&tca6416_2 9 GPIO_ACTIVE_LOW>;
11362306a36Sopenharmony_ci		};
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci		key-menu {
11662306a36Sopenharmony_ci			label = "Menu";
11762306a36Sopenharmony_ci			linux,code = <KEY_MENU>;
11862306a36Sopenharmony_ci			gpios = <&tca6416_2 8 GPIO_ACTIVE_LOW>;
11962306a36Sopenharmony_ci		};
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci		key-up {
12262306a36Sopenharmony_ci			label = "Up";
12362306a36Sopenharmony_ci			linux,code = <KEY_UP>;
12462306a36Sopenharmony_ci			gpios = <&tca6416_2 7 GPIO_ACTIVE_LOW>;
12562306a36Sopenharmony_ci		};
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci		key-down {
12862306a36Sopenharmony_ci			label = "Down";
12962306a36Sopenharmony_ci			linux,code = <KEY_DOWN>;
13062306a36Sopenharmony_ci			gpios = <&tca6416_2 6 GPIO_ACTIVE_LOW>;
13162306a36Sopenharmony_ci		};
13262306a36Sopenharmony_ci	};
13362306a36Sopenharmony_ci};
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci&i2c2 {
13662306a36Sopenharmony_ci	/* Audio codecs */
13762306a36Sopenharmony_ci	tlv320aic23_1: codec@1a {
13862306a36Sopenharmony_ci		compatible = "ti,tlv320aic23";
13962306a36Sopenharmony_ci		reg = <0x1a>;
14062306a36Sopenharmony_ci		#sound-dai-cells = <0>;
14162306a36Sopenharmony_ci		status = "okay";
14262306a36Sopenharmony_ci	};
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci	tlv320aic23_2: codec@1b {
14562306a36Sopenharmony_ci		compatible = "ti,tlv320aic23";
14662306a36Sopenharmony_ci		reg = <0x1b>;
14762306a36Sopenharmony_ci		#sound-dai-cells = <0>;
14862306a36Sopenharmony_ci		status = "okay";
14962306a36Sopenharmony_ci	};
15062306a36Sopenharmony_ci};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci&i2c3 {
15362306a36Sopenharmony_ci	/* Audio codecs */
15462306a36Sopenharmony_ci	tlv320aic23_3: codec@1a {
15562306a36Sopenharmony_ci		compatible = "ti,tlv320aic23";
15662306a36Sopenharmony_ci		reg = <0x1a>;
15762306a36Sopenharmony_ci		#sound-dai-cells = <0>;
15862306a36Sopenharmony_ci		status = "okay";
15962306a36Sopenharmony_ci	};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci	/* GPIO Expanders */
16262306a36Sopenharmony_ci	tca6416_2: gpio@20 {
16362306a36Sopenharmony_ci		compatible = "ti,tca6416";
16462306a36Sopenharmony_ci		reg = <0x20>;
16562306a36Sopenharmony_ci		gpio-controller;
16662306a36Sopenharmony_ci		#gpio-cells = <2>;
16762306a36Sopenharmony_ci		vcc-supply = <&vdd_io_reg>;
16862306a36Sopenharmony_ci	};
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	tca6416_3: gpio@21 {
17162306a36Sopenharmony_ci		compatible = "ti,tca6416";
17262306a36Sopenharmony_ci		reg = <0x21>;
17362306a36Sopenharmony_ci		gpio-controller;
17462306a36Sopenharmony_ci		#gpio-cells = <2>;
17562306a36Sopenharmony_ci		vcc-supply = <&vdd_io_reg>;
17662306a36Sopenharmony_ci	};
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci	/* TVP5146 Analog Video decoder input */
17962306a36Sopenharmony_ci	tvp5146@5c {
18062306a36Sopenharmony_ci		compatible = "ti,tvp5146m2";
18162306a36Sopenharmony_ci		reg = <0x5c>;
18262306a36Sopenharmony_ci	};
18362306a36Sopenharmony_ci};
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci&mcbsp1 {
18662306a36Sopenharmony_ci	status = "okay";
18762306a36Sopenharmony_ci	#sound-dai-cells = <0>;
18862306a36Sopenharmony_ci	pinctrl-names = "default";
18962306a36Sopenharmony_ci	pinctrl-0 = <&mcbsp1_pins>;
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci&mcbsp2 {
19362306a36Sopenharmony_ci	status = "okay";
19462306a36Sopenharmony_ci	#sound-dai-cells = <0>;
19562306a36Sopenharmony_ci	pinctrl-names = "default";
19662306a36Sopenharmony_ci	pinctrl-0 = <&mcbsp2_pins>;
19762306a36Sopenharmony_ci};
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci&omap3_pmx_core {
20062306a36Sopenharmony_ci	mcbsp1_pins: mcbsp1-pins {
20162306a36Sopenharmony_ci		pinctrl-single,pins = <
20262306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)	/* mcbsp1_dx.mcbsp1_dx */
20362306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0)	/* mcbsp1_dx.mcbsp1_dr */
20462306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0)	/* mcbsp_clks.mcbsp1_fsx */
20562306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)	/* mcbsp1_clkx.mcbsp1_clkx */
20662306a36Sopenharmony_ci		>;
20762306a36Sopenharmony_ci	};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci	mcbsp2_pins: mcbsp2-pins {
21062306a36Sopenharmony_ci		pinctrl-single,pins = <
21162306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0)	/* mcbsp2_fsx.mcbsp2_fsx */
21262306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x213e, PIN_INPUT | MUX_MODE0)	/* mcbsp2_clkx.mcbsp2_clkx */
21362306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2140, PIN_INPUT | MUX_MODE0)	/* mcbsp2_dr.mcbsp2.dr */
21462306a36Sopenharmony_ci			OMAP3_CORE1_IOPAD(0x2142, PIN_OUTPUT | MUX_MODE0)	/* mcbsp2_dx.mcbsp2_dx */
21562306a36Sopenharmony_ci		>;
21662306a36Sopenharmony_ci	};
21762306a36Sopenharmony_ci};
218