1976e9201SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2976e9201SNeil Armstrong/* 3976e9201SNeil Armstrong * Copyright (c) 2021 BayLibre SAS 4976e9201SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com> 5976e9201SNeil Armstrong */ 6976e9201SNeil Armstrong 7976e9201SNeil Armstrong/dts-v1/; 8976e9201SNeil Armstrong 9*ca8dac3aSChristian Hewitt#include "meson-sm1-bananapi.dtsi" 10976e9201SNeil Armstrong#include <dt-bindings/sound/meson-g12a-toacodec.h> 11976e9201SNeil Armstrong#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 12976e9201SNeil Armstrong 13976e9201SNeil Armstrong/ { 14976e9201SNeil Armstrong compatible = "bananapi,bpi-m5", "amlogic,sm1"; 15976e9201SNeil Armstrong model = "Banana Pi BPI-M5"; 16976e9201SNeil Armstrong 17976e9201SNeil Armstrong /* TOFIX: handle CVBS_DET on SARADC channel 0 */ 18976e9201SNeil Armstrong cvbs-connector { 19976e9201SNeil Armstrong compatible = "composite-video-connector"; 20976e9201SNeil Armstrong 21976e9201SNeil Armstrong port { 22976e9201SNeil Armstrong cvbs_connector_in: endpoint { 23976e9201SNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 24976e9201SNeil Armstrong }; 25976e9201SNeil Armstrong }; 26976e9201SNeil Armstrong }; 27976e9201SNeil Armstrong 28976e9201SNeil Armstrong sound { 29976e9201SNeil Armstrong compatible = "amlogic,axg-sound-card"; 30976e9201SNeil Armstrong model = "BPI-M5"; 31976e9201SNeil Armstrong audio-widgets = "Line", "Lineout"; 32976e9201SNeil Armstrong audio-aux-devs = <&tdmout_b>, <&tdmout_c>, 33976e9201SNeil Armstrong <&tdmin_a>, <&tdmin_b>, <&tdmin_c>; 34976e9201SNeil Armstrong audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", 35976e9201SNeil Armstrong "TDMOUT_B IN 1", "FRDDR_B OUT 1", 36976e9201SNeil Armstrong "TDMOUT_B IN 2", "FRDDR_C OUT 1", 37976e9201SNeil Armstrong "TDM_B Playback", "TDMOUT_B OUT", 38976e9201SNeil Armstrong "TDMOUT_C IN 0", "FRDDR_A OUT 2", 39976e9201SNeil Armstrong "TDMOUT_C IN 1", "FRDDR_B OUT 2", 40976e9201SNeil Armstrong "TDMOUT_C IN 2", "FRDDR_C OUT 2", 41976e9201SNeil Armstrong "TDM_C Playback", "TDMOUT_C OUT", 42976e9201SNeil Armstrong "TDMIN_A IN 4", "TDM_B Loopback", 43976e9201SNeil Armstrong "TDMIN_B IN 4", "TDM_B Loopback", 44976e9201SNeil Armstrong "TDMIN_C IN 4", "TDM_B Loopback", 45976e9201SNeil Armstrong "TDMIN_A IN 5", "TDM_C Loopback", 46976e9201SNeil Armstrong "TDMIN_B IN 5", "TDM_C Loopback", 47976e9201SNeil Armstrong "TDMIN_C IN 5", "TDM_C Loopback", 48976e9201SNeil Armstrong "TODDR_A IN 0", "TDMIN_A OUT", 49976e9201SNeil Armstrong "TODDR_B IN 0", "TDMIN_A OUT", 50976e9201SNeil Armstrong "TODDR_C IN 0", "TDMIN_A OUT", 51976e9201SNeil Armstrong "TODDR_A IN 1", "TDMIN_B OUT", 52976e9201SNeil Armstrong "TODDR_B IN 1", "TDMIN_B OUT", 53976e9201SNeil Armstrong "TODDR_C IN 1", "TDMIN_B OUT", 54976e9201SNeil Armstrong "TODDR_A IN 2", "TDMIN_C OUT", 55976e9201SNeil Armstrong "TODDR_B IN 2", "TDMIN_C OUT", 56976e9201SNeil Armstrong "TODDR_C IN 2", "TDMIN_C OUT", 57976e9201SNeil Armstrong "Lineout", "ACODEC LOLP", 58976e9201SNeil Armstrong "Lineout", "ACODEC LORP"; 59976e9201SNeil Armstrong 60976e9201SNeil Armstrong assigned-clocks = <&clkc CLKID_MPLL2>, 61976e9201SNeil Armstrong <&clkc CLKID_MPLL0>, 62976e9201SNeil Armstrong <&clkc CLKID_MPLL1>; 63976e9201SNeil Armstrong assigned-clock-parents = <0>, <0>, <0>; 64976e9201SNeil Armstrong assigned-clock-rates = <294912000>, 65976e9201SNeil Armstrong <270950400>, 66976e9201SNeil Armstrong <393216000>; 67976e9201SNeil Armstrong 68976e9201SNeil Armstrong dai-link-0 { 69976e9201SNeil Armstrong sound-dai = <&frddr_a>; 70976e9201SNeil Armstrong }; 71976e9201SNeil Armstrong 72976e9201SNeil Armstrong dai-link-1 { 73976e9201SNeil Armstrong sound-dai = <&frddr_b>; 74976e9201SNeil Armstrong }; 75976e9201SNeil Armstrong 76976e9201SNeil Armstrong dai-link-2 { 77976e9201SNeil Armstrong sound-dai = <&frddr_c>; 78976e9201SNeil Armstrong }; 79976e9201SNeil Armstrong 80976e9201SNeil Armstrong dai-link-3 { 81976e9201SNeil Armstrong sound-dai = <&toddr_a>; 82976e9201SNeil Armstrong }; 83976e9201SNeil Armstrong 84976e9201SNeil Armstrong dai-link-4 { 85976e9201SNeil Armstrong sound-dai = <&toddr_b>; 86976e9201SNeil Armstrong }; 87976e9201SNeil Armstrong 88976e9201SNeil Armstrong dai-link-5 { 89976e9201SNeil Armstrong sound-dai = <&toddr_c>; 90976e9201SNeil Armstrong }; 91976e9201SNeil Armstrong 92976e9201SNeil Armstrong /* 8ch hdmi interface */ 93976e9201SNeil Armstrong dai-link-6 { 94976e9201SNeil Armstrong sound-dai = <&tdmif_b>; 95976e9201SNeil Armstrong dai-format = "i2s"; 96976e9201SNeil Armstrong dai-tdm-slot-tx-mask-0 = <1 1>; 97976e9201SNeil Armstrong dai-tdm-slot-tx-mask-1 = <1 1>; 98976e9201SNeil Armstrong dai-tdm-slot-tx-mask-2 = <1 1>; 99976e9201SNeil Armstrong dai-tdm-slot-tx-mask-3 = <1 1>; 100976e9201SNeil Armstrong mclk-fs = <256>; 101976e9201SNeil Armstrong 102976e9201SNeil Armstrong codec-0 { 103976e9201SNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 104976e9201SNeil Armstrong }; 105976e9201SNeil Armstrong 106976e9201SNeil Armstrong codec-1 { 107976e9201SNeil Armstrong sound-dai = <&toacodec TOACODEC_IN_B>; 108976e9201SNeil Armstrong }; 109976e9201SNeil Armstrong }; 110976e9201SNeil Armstrong 111976e9201SNeil Armstrong /* i2s jack output interface */ 112976e9201SNeil Armstrong dai-link-7 { 113976e9201SNeil Armstrong sound-dai = <&tdmif_c>; 114976e9201SNeil Armstrong dai-format = "i2s"; 115976e9201SNeil Armstrong dai-tdm-slot-tx-mask-0 = <1 1>; 116976e9201SNeil Armstrong mclk-fs = <256>; 117976e9201SNeil Armstrong 118976e9201SNeil Armstrong codec-0 { 119976e9201SNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; 120976e9201SNeil Armstrong }; 121976e9201SNeil Armstrong 122976e9201SNeil Armstrong codec-1 { 123976e9201SNeil Armstrong sound-dai = <&toacodec TOACODEC_IN_C>; 124976e9201SNeil Armstrong }; 125976e9201SNeil Armstrong }; 126976e9201SNeil Armstrong 127976e9201SNeil Armstrong /* hdmi glue */ 128976e9201SNeil Armstrong dai-link-8 { 129976e9201SNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 130976e9201SNeil Armstrong 131976e9201SNeil Armstrong codec { 132976e9201SNeil Armstrong sound-dai = <&hdmi_tx>; 133976e9201SNeil Armstrong }; 134976e9201SNeil Armstrong }; 135976e9201SNeil Armstrong 136976e9201SNeil Armstrong /* acodec glue */ 137976e9201SNeil Armstrong dai-link-9 { 138976e9201SNeil Armstrong sound-dai = <&toacodec TOACODEC_OUT>; 139976e9201SNeil Armstrong 140976e9201SNeil Armstrong codec { 141976e9201SNeil Armstrong sound-dai = <&acodec>; 142976e9201SNeil Armstrong }; 143976e9201SNeil Armstrong }; 144976e9201SNeil Armstrong }; 145976e9201SNeil Armstrong}; 146976e9201SNeil Armstrong 147976e9201SNeil Armstrong&acodec { 148976e9201SNeil Armstrong AVDD-supply = <&vddao_1v8>; 149976e9201SNeil Armstrong status = "okay"; 150976e9201SNeil Armstrong}; 151976e9201SNeil Armstrong 152976e9201SNeil Armstrong 153976e9201SNeil Armstrong&clkc_audio { 154976e9201SNeil Armstrong status = "okay"; 155976e9201SNeil Armstrong}; 156976e9201SNeil Armstrong 157976e9201SNeil Armstrong&cvbs_vdac_port { 158976e9201SNeil Armstrong cvbs_vdac_out: endpoint { 159976e9201SNeil Armstrong remote-endpoint = <&cvbs_connector_in>; 160976e9201SNeil Armstrong }; 161976e9201SNeil Armstrong}; 162976e9201SNeil Armstrong 163976e9201SNeil Armstrong&frddr_a { 164976e9201SNeil Armstrong status = "okay"; 165976e9201SNeil Armstrong}; 166976e9201SNeil Armstrong 167976e9201SNeil Armstrong&frddr_b { 168976e9201SNeil Armstrong status = "okay"; 169976e9201SNeil Armstrong}; 170976e9201SNeil Armstrong 171976e9201SNeil Armstrong&frddr_c { 172976e9201SNeil Armstrong status = "okay"; 173976e9201SNeil Armstrong}; 174976e9201SNeil Armstrong 175976e9201SNeil Armstrong&tdmif_b { 176976e9201SNeil Armstrong status = "okay"; 177976e9201SNeil Armstrong}; 178976e9201SNeil Armstrong 179976e9201SNeil Armstrong&tdmif_c { 180976e9201SNeil Armstrong status = "okay"; 181976e9201SNeil Armstrong}; 182976e9201SNeil Armstrong 183976e9201SNeil Armstrong&tdmin_a { 184976e9201SNeil Armstrong status = "okay"; 185976e9201SNeil Armstrong}; 186976e9201SNeil Armstrong 187976e9201SNeil Armstrong&tdmin_b { 188976e9201SNeil Armstrong status = "okay"; 189976e9201SNeil Armstrong}; 190976e9201SNeil Armstrong 191976e9201SNeil Armstrong&tdmin_c { 192976e9201SNeil Armstrong status = "okay"; 193976e9201SNeil Armstrong}; 194976e9201SNeil Armstrong 195976e9201SNeil Armstrong&tdmout_b { 196976e9201SNeil Armstrong status = "okay"; 197976e9201SNeil Armstrong}; 198976e9201SNeil Armstrong 199976e9201SNeil Armstrong&tdmout_c { 200976e9201SNeil Armstrong status = "okay"; 201976e9201SNeil Armstrong}; 202976e9201SNeil Armstrong 203976e9201SNeil Armstrong&toacodec { 204976e9201SNeil Armstrong status = "okay"; 205976e9201SNeil Armstrong}; 206976e9201SNeil Armstrong 207976e9201SNeil Armstrong&tohdmitx { 208976e9201SNeil Armstrong status = "okay"; 209976e9201SNeil Armstrong}; 210976e9201SNeil Armstrong 211976e9201SNeil Armstrong&toddr_a { 212976e9201SNeil Armstrong status = "okay"; 213976e9201SNeil Armstrong}; 214976e9201SNeil Armstrong 215976e9201SNeil Armstrong&toddr_b { 216976e9201SNeil Armstrong status = "okay"; 217976e9201SNeil Armstrong}; 218976e9201SNeil Armstrong 219976e9201SNeil Armstrong&toddr_c { 220976e9201SNeil Armstrong status = "okay"; 221976e9201SNeil Armstrong}; 222