Pillgram::Audio
From Amar
TLV320AIC3110
Schematics
Device Tree
<syntaxhighlight/dts-v1/; /plugin/;
/ {
compatible = "brcm,bcm2712", "brcm,bcm2711", "brcm,bcm2835"; // compatible = "brcm,bcm2835";
fragment@0 { target = <&i2s_clk_consumer>; __overlay__ { status = "okay"; #sound-dai-cells = <0>; brcm,tx-channels = <2>; brcm,rx-channels = <1>; }; };
fragment@1 { target-path = "/"; __overlay__ { status = "okay";
codec_1v8_reg: codec-1v8-reg { compatible = "regulator-fixed"; regulator-name = "tlv320aic3104_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; status = "okay"; }; }; }; fragment@2 { target = <&i2c1>; __overlay__ { #address-cells = <1>; /* Single cell for I2C address */ #size-cells = <0>; /* No size cells for I2C devices */ status = "okay";
tlv320aic3110: tlv320aic3110@18 { compatible = "ti-pg,tlv320aic3110", "ti,tlv320aic3110", "ti,tlv320aic311x"; reg = <0x18>; #sound-dai-cells = <0>; // system-clock-frequency = <12288000>; // Codec clock config // system-clock-direction-out; // Codec as master status = "okay";
HPVDD-supply = <&vdd_3v3_reg>; SPRVDD-supply = <&vdd_5v0_reg>; SPLVDD-supply = <&vdd_5v0_reg>; AVDD-supply = <&vdd_3v3_reg>; IOVDD-supply = <&vdd_3v3_reg>; DVDD-supply = <&codec_1v8_reg>;
clocks = <&mclk_external>; clock-names = "mclk"; // system-clk-frequency = <12288000>; mclk-frequency = <12288000>; // gpio-controller;
reset-gpios = <&gpio 13 1>; // GPIO 13 as active low reset reset-delay-us = <10000>; /* 10ms delay */
// Debug properties (must precede subnodes) debug; linux,debug;
}; }; };
fragment@3 { target = <&sound>; __overlay__ { compatible = "simple-audio-card"; i2s-controller = <&i2s_clk_consumer>; simple-audio-card,name = "TLV320AIC3110"; simple-audio-card,format = "i2s"; simple-audio-card,convert-rate = <48000>; simple-audio-card,mclk-fs = <256>;
simple-audio-card,bitclock-master = <&snd_codec>; simple-audio-card,frame-master = <&snd_codec>;
simple-audio-card,widgets = "Microphone", "Mic Jack", "Speaker", "External Speaker"; simple-audio-card,routing = "External Speaker", "SPL", "External Speaker", "SPR", "MIC1LP", "Mic Jack", "MIC1LM", "Mic Jack";
status = "okay";
dailink0_master: simple-audio-card,cpu { sound-dai = <&i2s_clk_consumer>; dai-tdm-slot-num = <2>; dai-tdm-slot-width = <32>; };
snd_codec: simple-audio-card,codec { sound-dai = <&tlv320aic3110>; clocks = <&mclk_external>; system-clock-direction-out = "out"; system-clock-frequency = <12288000>; //*** added LAX mclk-fs = <256>; //*** added LAX }; }; };
fragment@4 { target-path = "/"; __overlay__ { mclk_external: mclk_external { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <12288000>; // 12.288 MHz clock-output-names = "mclk"; }; }; };
}; </syntaxhighlight>