1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2018 Logic PD, Inc - https://www.logicpd.com/ 4 */ 5 6#include <dt-bindings/input/input.h> 7 8/ { 9 codec1 { 10 compatible = "simple-audio-card"; 11 simple-audio-card,name = "tlv320aic23-hifi"; 12 13 simple-audio-card,widgets = 14 "Microphone", "Mic In", 15 "Line", "Line In", 16 "Line", "Line Out"; 17 18 simple-audio-card,routing = 19 "Line Out", "LOUT", 20 "Line Out", "ROUT", 21 "LLINEIN", "Line In", 22 "RLINEIN", "Line In", 23 "MICIN", "Mic In"; 24 25 simple-audio-card,format = "i2s"; 26 simple-audio-card,bitclock-master = <&sound_master>; 27 simple-audio-card,frame-master = <&sound_master>; 28 29 simple-audio-card,cpu { 30 sound-dai = <&mcbsp1>; 31 }; 32 33 sound_master: simple-audio-card,codec { 34 sound-dai = <&tlv320aic23_1>; 35 system-clock-frequency = <12000000>; 36 }; 37 }; 38 39 codec2 { 40 compatible = "simple-audio-card"; 41 simple-audio-card,name = "tlv320aic23-hifi"; 42 43 simple-audio-card,widgets = 44 "Microphone", "Mic In", 45 "Line", "Line In", 46 "Line", "Line Out"; 47 48 simple-audio-card,routing = 49 "Line Out", "LOUT", 50 "Line Out", "ROUT", 51 "LLINEIN", "Line In", 52 "RLINEIN", "Line In", 53 "MICIN", "Mic In"; 54 55 simple-audio-card,format = "i2s"; 56 simple-audio-card,bitclock-master = <&sound_master2>; 57 simple-audio-card,frame-master = <&sound_master2>; 58 59 simple-audio-card,cpu { 60 sound-dai = <&mcbsp2>; 61 }; 62 63 sound_master2: simple-audio-card,codec { 64 sound-dai = <&tlv320aic23_2>; 65 system-clock-frequency = <12000000>; 66 }; 67 }; 68 69 expander-keys { 70 compatible = "gpio-keys-polled"; 71 poll-interval = <100>; 72 73 key-record { 74 label = "Record"; 75 /* linux,code = <BTN_0>; */ 76 gpios = <&tca6416_2 15 GPIO_ACTIVE_LOW>; 77 }; 78 79 key-play { 80 label = "Play"; 81 linux,code = <KEY_PLAY>; 82 gpios = <&tca6416_2 14 GPIO_ACTIVE_LOW>; 83 }; 84 85 key-stop { 86 label = "Stop"; 87 linux,code = <KEY_STOP>; 88 gpios = <&tca6416_2 13 GPIO_ACTIVE_LOW>; 89 }; 90 91 key-fwd { 92 label = "FWD"; 93 linux,code = <KEY_FASTFORWARD>; 94 gpios = <&tca6416_2 12 GPIO_ACTIVE_LOW>; 95 }; 96 97 key-rwd { 98 label = "RWD"; 99 linux,code = <KEY_REWIND>; 100 gpios = <&tca6416_2 11 GPIO_ACTIVE_LOW>; 101 }; 102 103 key-shift { 104 label = "Shift"; 105 linux,code = <KEY_LEFTSHIFT>; 106 gpios = <&tca6416_2 10 GPIO_ACTIVE_LOW>; 107 }; 108 109 key-mode { 110 label = "Mode"; 111 linux,code = <BTN_MODE>; 112 gpios = <&tca6416_2 9 GPIO_ACTIVE_LOW>; 113 }; 114 115 key-menu { 116 label = "Menu"; 117 linux,code = <KEY_MENU>; 118 gpios = <&tca6416_2 8 GPIO_ACTIVE_LOW>; 119 }; 120 121 key-up { 122 label = "Up"; 123 linux,code = <KEY_UP>; 124 gpios = <&tca6416_2 7 GPIO_ACTIVE_LOW>; 125 }; 126 127 key-down { 128 label = "Down"; 129 linux,code = <KEY_DOWN>; 130 gpios = <&tca6416_2 6 GPIO_ACTIVE_LOW>; 131 }; 132 }; 133}; 134 135&i2c2 { 136 /* Audio codecs */ 137 tlv320aic23_1: codec@1a { 138 compatible = "ti,tlv320aic23"; 139 reg = <0x1a>; 140 #sound-dai-cells = <0>; 141 status = "okay"; 142 }; 143 144 tlv320aic23_2: codec@1b { 145 compatible = "ti,tlv320aic23"; 146 reg = <0x1b>; 147 #sound-dai-cells = <0>; 148 status = "okay"; 149 }; 150}; 151 152&i2c3 { 153 /* Audio codecs */ 154 tlv320aic23_3: codec@1a { 155 compatible = "ti,tlv320aic23"; 156 reg = <0x1a>; 157 #sound-dai-cells = <0>; 158 status = "okay"; 159 }; 160 161 /* GPIO Expanders */ 162 tca6416_2: gpio@20 { 163 compatible = "ti,tca6416"; 164 reg = <0x20>; 165 gpio-controller; 166 #gpio-cells = <2>; 167 vcc-supply = <&vdd_io_reg>; 168 }; 169 170 tca6416_3: gpio@21 { 171 compatible = "ti,tca6416"; 172 reg = <0x21>; 173 gpio-controller; 174 #gpio-cells = <2>; 175 vcc-supply = <&vdd_io_reg>; 176 }; 177 178 /* TVP5146 Analog Video decoder input */ 179 tvp5146@5c { 180 compatible = "ti,tvp5146m2"; 181 reg = <0x5c>; 182 }; 183}; 184 185&mcbsp1 { 186 status = "okay"; 187 #sound-dai-cells = <0>; 188 pinctrl-names = "default"; 189 pinctrl-0 = <&mcbsp1_pins>; 190}; 191 192&mcbsp2 { 193 status = "okay"; 194 #sound-dai-cells = <0>; 195 pinctrl-names = "default"; 196 pinctrl-0 = <&mcbsp2_pins>; 197}; 198 199&omap3_pmx_core { 200 mcbsp1_pins: pinmux_mcbsp1_pins { 201 pinctrl-single,pins = < 202 OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0) /* mcbsp1_dx.mcbsp1_dx */ 203 OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0) /* mcbsp1_dx.mcbsp1_dr */ 204 OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0) /* mcbsp_clks.mcbsp1_fsx */ 205 OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0) /* mcbsp1_clkx.mcbsp1_clkx */ 206 >; 207 }; 208 209 mcbsp2_pins: pinmux_mcbsp2_pins { 210 pinctrl-single,pins = < 211 OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0) /* mcbsp2_fsx.mcbsp2_fsx */ 212 OMAP3_CORE1_IOPAD(0x213e, PIN_INPUT | MUX_MODE0) /* mcbsp2_clkx.mcbsp2_clkx */ 213 OMAP3_CORE1_IOPAD(0x2140, PIN_INPUT | MUX_MODE0) /* mcbsp2_dr.mcbsp2.dr */ 214 OMAP3_CORE1_IOPAD(0x2142, PIN_OUTPUT | MUX_MODE0) /* mcbsp2_dx.mcbsp2_dx */ 215 >; 216 }; 217}; 218