Qualcomm audio devices for ALSA sound SoC * msm-pcm Required properties: - compatible : "qcom,msm-pcm-dsp" - qcom,msm-pcm-dsp-id : device node id * msm-pcm-low-latency Required properties: - compatible : "qcom,msm-pcm-dsp" - qcom,msm-pcm-dsp-id : device node id Optional properties - qcom,msm-pcm-low-latency : Flag indicating whether the device node is of type low latency. * msm-pcm-routing Required properties: - compatible : "qcom,msm-pcm-routing" * msm-pcm-lpa Required properties: - compatible : "qcom,msm-pcm-lpa" * msm-compr-dsp Required properties: - compatible : "qcom,msm-compr-dsp" * msm-voip-dsp Required properties: - compatible : "qcom,msm-voip-dsp" * msm-pcm-voice Required properties: - compatible : "qcom,msm-pcm-voice" * msm-voice-host-pcm Required properties: - compatible : "qcom,msm-voice-host-pcm" * msm-stub-codec Required properties: - compatible : "qcom,msm-stub-codec" * msm-dai-fe Required properties: - compatible : "qcom,msm-dai-fe" * msm-pcm-afe Required properties: - compatible : "qcom,msm-pcm-afe" * msm-pcm-dtmf Required properties: - compatible : "qcom,msm-pcm-dtmf" - qcom,msm-pcm-dtmf : Enable DTMF driver in Audio. DTMF driver is used for generation and detection of DTMF tones, when user is in active voice call. APR commands are sent from DTMF driver to ADSP. * msm-dai-stub Required properties: - compatible : "qcom,msm-dai-stub" - qcom,msm-dai-stub : This enables stub CPU dai in Audio. The stub dai is used when there is no real backend in Audio. * msm-dai-q6-hdmi Required properties: - compatible : "msm-dai-q6-hdmi" - qcom,msm-dai-q6-dev-id : The hdmi multi channel port ID. It is passed onto the dsp from the apps to form an audio path to the HDMI device. Currently the only supported value is 8, which indicates the rx path used for audio playback on HDMI device. * msm-lsm-client Required properties: - compatible : "qcom,msm-lsm-client" * msm-dai-q6 [First Level Nodes] Required properties: - compatible : "msm-dai-q6" Optional properties: - qcom,ext-spk-amp-supply : External speaker amplifier power supply. - qcom,ext-spk-amp-gpio : External speaker amplifier enable signal. [Second Level Nodes] Required properties: - compatible : "qcom,msm-dai-q6-dev" - qcom,msm-dai-q6-dev-id : The slimbus multi channel port ID Value is from 16384 to 16393 BT SCO port ID value from 12288 to 12289 RT Proxy port ID values from 224 to 225 and 240 to 241 FM Rx and TX port ID values from 12292 to 12293 incall record Rx and TX port ID values from 32771 to 32772 inCall Music Delivery port ID is 32773 * msm-auxpcm [First Level Nodes] Required properties: - compatible : "qcom,msm-auxpcm-resource" - qcom,msm-cpudai-auxpcm-clk: clock for auxpcm. The first value is for 8khz mode, the second is for 16khz - qcom,msm-cpudai-auxpcm-mode: mode information. The first value is for 8khz mode, the second is for 16khz 0 - for PCM - qcom,msm-cpudai-auxpcm-sync: sync information. The first value is for 8khz mode, the second is for 16khz - qcom,msm-cpudai-auxpcm-frame: No.of bytes per frame. The first value is for 8khz mode, the second is for 16khz 5 - 256BPF 4 - 128BPF - qcom,msm-cpudai-auxpcm-quant: Type of quantization. The first value is for 8khz mode, the second is for 16khz 2 - Linear quantization - qcom,msm-cpudai-auxpcm-slot: Slot number for multichannel scenario The first value is for 8khz mode the second is for 16khz Value is 1 - qcom,msm-cpudai-auxpcm-data: Data field - 0. The first value is for 8khz mode, the second is for 16khz - qcom,msm-cpudai-auxpcm-pcm-clk-rate: Clock rate for pcm - 2048000. The first value is for 8khz mode, the second is for auxpcm [Second Level Nodes] Required Properties: - qcom,msm-auxpcm-dev-id: This property specifies the device port id. For Rx device, the port id is 4106 and for Tx device, the port id is 4107 - compatible: "qcom,msm-auxpcm-dev" * msm-pcm-hostless Required properties: - compatible : "qcom,msm-pcm-hostless" * msm-ocmem-audio Required properties: - compatible : "qcom,msm-ocmem-audio" - qcom,msm_bus,name: Client name - qcom,msm_bus,num_cases: Total number of use cases - qcom,msm_bus,active_only: Context flag for requests in active or dual (active & sleep) contex - qcom,msm_bus,num_paths: Total number of master-slave pairs - qcom,msm_bus,vectors: Arrays of unsigned integers representing: master-id, slave-id, arbitrated bandwidth, instantaneous bandwidth * wcd9xxx_intc Required properties: - compatible : "qcom,wcd9xxx-irq" - interrupt-controller : Mark this device node as an interrupt controller - #interrupt-cells : Should be 1 - interrupt-parent : Parent interrupt controller - interrupts : Interrupt number on the parent interrupt controller - interrupt-names : Name of interrupt on the parent interrupt controller Example: qcom,msm-pcm { compatible = "qcom,msm-pcm-dsp"; qcom,msm-pcm-dsp-id = <0>; }; qcom,msm-pcm-low-latency { compatible = "qcom,msm-pcm-dsp"; qcom,msm-pcm-dsp-id = <1>; qcom,msm-pcm-low-latency; }; qcom,msm-pcm-routing { compatible = "qcom,msm-pcm-routing"; }; qcom,msm-pcm-lpa { compatible = "qcom,msm-pcm-lpa"; }; qcom,msm-compr-dsp { compatible = "qcom,msm-compr-dsp"; }; qcom,msm-voip-dsp { compatible = "qcom,msm-voip-dsp"; }; qcom,msm-voice-host-pcm { compatible = "qcom,msm-voice-host-pcm"; }; qcom,msm-stub-codec { compatible = "qcom,msm-stub-codec"; }; qcom,msm-dai-fe { compatible = "qcom,msm-dai-fe"; }; qcom,msm-pcm-dtmf { compatible = "qcom,msm-pcm-dtmf"; }; qcom,msm-dai-stub { compatible = "qcom,msm-dai-stub"; }; qcom,msm-dai-q6-hdmi { compatible = "qcom,msm-dai-q6-hdmi"; qcom,msm-dai-q6-dev-id = <8>; }; qcom,msm-dai-q6 { compatible = "qcom,msm-dai-q6"; qcom,msm-dai-q6-sb-0-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16384>; }; qcom,msm-dai-q6-sb-0-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16385>; }; qcom,msm-dai-q6-sb-1-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16386>; }; qcom,msm-dai-q6-sb-1-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16387>; }; qcom,msm-dai-q6-sb-3-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16390>; }; qcom,msm-dai-q6-sb-3-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16391>; }; qcom,msm-dai-q6-sb-4-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16392>; }; qcom,msm-dai-q6-sb-4-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <16393>; }; qcom,msm-dai-q6-bt-sco-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <12288>; }; qcom,msm-dai-q6-bt-sco-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <12289>; }; qcom,msm-dai-q6-int-fm-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <12292>; }; qcom,msm-dai-q6-int-fm-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <12293>; }; qcom,msm-dai-q6-be-afe-pcm-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <224>; }; qcom,msm-dai-q6-be-afe-pcm-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <225>; }; qcom,msm-dai-q6-afe-proxy-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <241>; }; qcom,msm-dai-q6-afe-proxy-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <240>; }; qcom,msm-dai-q6-incall-record-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <32771>; }; qcom,msm-dai-q6-incall-record-tx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <32772>; }; qcom,msm-dai-q6-incall-music-rx { compatible = "qcom,msm-dai-q6-dev"; qcom,msm-dai-q6-dev-id = <32773>; }; }; qcom,msm-auxpcm { compatible = "qcom,msm-auxpcm-resource"; qcom,msm-cpudai-auxpcm-clk = "pcm_clk"; qcom,msm-cpudai-auxpcm-mode = <0>, <0>; qcom,msm-cpudai-auxpcm-sync = <1>, <1>; qcom,msm-cpudai-auxpcm-frame = <5>, <4>; qcom,msm-cpudai-auxpcm-quant = <2>, <2>; qcom,msm-cpudai-auxpcm-slot = <1>, <1>; qcom,msm-cpudai-auxpcm-data = <0>, <0>; qcom,msm-cpudai-auxpcm-pcm-clk-rate = <2048000>, <2048000>; qcom,msm-prim-auxpcm-rx { qcom,msm-auxpcm-dev-id = <4106>; compatible = "qcom,msm-auxpcm-dev"; }; qcom,msm-prim-auxpcm-tx { qcom,msm-auxpcm-dev-id = <4107>; compatible = "qcom,msm-auxpcm-dev"; }; qcom,msm-sec-auxpcm-rx { qcom,msm-auxpcm-dev-id = <4108>; compatible = "qcom,msm-auxpcm-dev"; }; qcom,msm-sec-auxpcm-tx { qcom,msm-auxpcm-dev-id = <4109>; compatible = "qcom,msm-auxpcm-dev"; }; }; qcom,msm-pcm-hostless { compatible = "qcom,msm-pcm-hostless"; }; qcom,msm-ocmem-audio { compatible = "qcom,msm-ocmem-audio"; qcom,msm_bus,name = "audio-ocmem"; qcom,msm_bus,num_cases = <2>; qcom,msm_bus,active_only = <0>; qcom,msm_bus,num_paths = <1>; qcom,msm_bus,vectors = <11 604 0 0>, <11 604 32505856 325058560>; }; wcd9xxx_intc: wcd9xxx-irq { compatible = "qcom,wcd9xxx-irq"; interrupt-controller; #interrupt-cells = <1>; interrupt-parent = <&msmgpio>; interrupts = <72 0>; interrupt-names = "cdc-int"; }; * MSM8974 ASoC Machine driver Required properties: - compatible : "qcom,msm8974-audio-taiko" - qcom,model : The user-visible name of this sound card. - qcom,audio-routing : A list of the connections between audio components. Each entry is a pair of strings, the first being the connection's sink, the second being the connection's source. - qcom,cdc-mclk-gpios : GPIO on which mclk signal is comming. - qcom,taiko-mclk-clk-freq : Taiko mclk Freq in Hz. currently only 9600000Hz is supported. - qcom,prim-auxpcm-gpio-clk : GPIO on which Primary AUXPCM clk signal is coming. - qcom,prim-auxpcm-gpio-sync : GPIO on which Primary AUXPCM SYNC signal is coming. - qcom,prim-auxpcm-gpio-din : GPIO on which Primary AUXPCM DIN signal is coming. - qcom,prim-auxpcm-gpio-dout : GPIO on which Primary AUXPCM DOUT signal is coming. - qcom,prim-auxpcm-gpio-set : set of GPIO lines used for Primary AUXPCM port Possible Values: prim-gpio-prim : Primary AUXPCM shares GPIOs with Primary MI2S prim-gpio-tert : Primary AUXPCM shares GPIOs with Tertiary MI2S - qcom,sec-auxpcm-gpio-clk : GPIO on which Secondary AUXPCM clk signal is coming. - qcom,sec-auxpcm-gpio-sync : GPIO on which Secondary AUXPCM SYNC signal is coming. - qcom,sec-auxpcm-gpio-din : GPIO on which Secondary AUXPCM DIN signal is coming. - qcom,sec-auxpcm-gpio-dout : GPIO on which Secondary AUXPCM DOUT signal is coming. - qcom,us-euro-gpios : GPIO on which gnd/mic swap signal is coming. Optional properties: - qcom,hdmi-audio-rx: specifies if HDMI audio support is enabled or not. - qcom,ext-ult-spk-amp-gpio : GPIO for enabling of speaker path amplifier. - qcom,ext-ult-lo-amp-gpio: GPIO to enable external ultrasound lineout amplifier. - qcom,headset-jack-type-NO: Adjust GPIO level based on the headset jack type. * APQ8074 ASoC Machine driver Required properties: - compatible : "qcom,apq8074-audio-taiko" Example: sound { compatible = "qcom,msm8974-audio-taiko"; qcom,model = "msm8974-taiko-snd-card"; qcom,audio-routing = "RX_BIAS", "MCLK", "LDO_H", "MCLK", "HEADPHONE", "LDO_H", "Ext Spk Bottom Pos", "LINEOUT1", "Ext Spk Bottom Neg", "LINEOUT3", "Ext Spk Top Pos", "LINEOUT2", "Ext Spk Top Neg", "LINEOUT4", "AMIC1", "MIC BIAS1 Internal1", "MIC BIAS1 Internal1", "Handset Mic", "AMIC2", "MIC BIAS2 External", "MIC BIAS2 External", "Headset Mic", "AMIC3", "MIC BIAS3 Internal1", "MIC BIAS3 Internal1", "ANCRight Headset Mic", "AMIC4", "MIC BIAS1 Internal2", "MIC BIAS1 Internal2", "ANCLeft Headset Mic", "DMIC1", "MIC BIAS1 External", "MIC BIAS1 External", "Digital Mic1", "DMIC2", "MIC BIAS1 External", "MIC BIAS1 External", "Digital Mic2", "DMIC3", "MIC BIAS3 External", "MIC BIAS3 External", "Digital Mic3", "DMIC4", "MIC BIAS3 External", "MIC BIAS3 External", "Digital Mic4", "DMIC5", "MIC BIAS4 External", "MIC BIAS4 External", "Digital Mic5", "DMIC6", "MIC BIAS4 External", "MIC BIAS4 External", "Digital Mic6"; qcom,cdc-mclk-gpios = <&pm8941_gpios 15 0>; qcom,taiko-mclk-clk-freq = <9600000>; qcom,us-euro-gpios = <&pm8941_gpios 20 0>; qcom,hdmi-audio-rx; qcom,ext-ult-lo-amp-gpio = <&pm8941_gpios 6 0>; qcom,prim-auxpcm-gpio-clk = <&msmgpio 65 0>; qcom,prim-auxpcm-gpio-sync = <&msmgpio 66 0>; qcom,prim-auxpcm-gpio-din = <&msmgpio 67 0>; qcom,prim-auxpcm-gpio-dout = <&msmgpio 68 0>; qcom,prim-auxpcm-gpio-set = "prim-gpio-prim"; qcom,sec-auxpcm-gpio-clk = <&msmgpio 79 0>; qcom,sec-auxpcm-gpio-sync = <&msmgpio 80 0>; qcom,sec-auxpcm-gpio-din = <&msmgpio 81 0>; qcom,sec-auxpcm-gpio-dout = <&msmgpio 82 0>; }; * msm-dai-mi2s [First Level Nodes] Required properties: - compatible : "msm-dai-mi2s" [Second Level Nodes] Required properties: - compatible : "qcom,msm-dai-q6-mi2s" - qcom,msm-dai-q6-mi2s-dev-id: MSM or MDM can use Slimbus or I2S interface to transfer data to (WCD9XXX) codec. If slimbus interface is used then "msm-dai-q6" needs to be filled with correct data for slimbus interface. The sections "msm-dai-mi2s" is used by MDM or MSM to use I2S interface with codec. This section is used by CPU driver in ASOC MSM to configure MI2S interface. MSM internally has multiple MI2S namely Primary, Secondary, Tertiary and Quaternary MI2S. They are represented with id 0, 1, 2, 3 respectively. The field "qcom,msm-dai-q6-mi2s-dev-id" represents which of the MI2S block is used. These MI2S are connected to I2S interface. - qcom,msm-mi2s-rx-lines: Each MI2S interface in MSM has one or more SD lines. These lines are used for data transfer between codec and MSM. This element in indicates which output RX lines are used in the MI2S interface. - qcom,msm-mi2s-tx-lines: Each MI2S interface in MSM has one or more SD lines. These lines are used for data transfer between codec and MSM. This element in indicates which input TX lines are used in the MI2S interface. Example: qcom,msm-dai-mi2s { compatible = "qcom,msm-dai-mi2s"; qcom,msm-dai-q6-mi2s-prim { compatible = "qcom,msm-dai-q6-mi2s"; qcom,msm-dai-q6-mi2s-dev-id = <0>; qcom,msm-mi2s-rx-lines = <2>; qcom,msm-mi2s-tx-lines = <1>; }; }; * MSM9625 ASoC Machine driver Required properties: - compatible : "qcom,mdm9625-audio-taiko" - qcom,model : The user-visible name of this sound card. - qcom,audio-routing : A list of the connections between audio components. Each entry is a pair of strings, the first being the connection's sink, the second being the connection's source. - qcom,taiko-mclk-clk-freq : Master clock value given to codec. Some WCD9XXX codec can run at different mclk values. Mclk value can be 9.6MHz or 12.288MHz. This element represents the value for MCLK provided to codec. - prim-i2s-gpio-ws : Specifies gpio assigned for primary WS I2S pin. - prim-i2s-gpio-din : Specifies gpio assigned for primary DIN I2S pin. - prim-i2s-gpio-dout : Specifies gpio assigned for primary DOUT I2S pin. - prim-i2s-gpio-sclk : Specifies gpio assigned for primary SCLK I2S pin. - prim-i2s-gpio-mclk : Specifies gpio assigned for MCLK I2S pin. Example: sound { compatible = "qcom,mdm9625-audio-taiko"; qcom,model = "mdm9625-taiko-i2s-snd-card"; qcom,audio-routing = "RX_BIAS", "MCLK", "LDO_H", "MCLK", "Ext Spk Bottom Pos", "LINEOUT1", "Ext Spk Bottom Neg", "LINEOUT3", "Ext Spk Top Pos", "LINEOUT2", "Ext Spk Top Neg", "LINEOUT4", "AMIC1", "MIC BIAS1 External", "MIC BIAS1 External", "Handset Mic", "AMIC2", "MIC BIAS2 External", "MIC BIAS2 External", "Headset Mic", "AMIC3", "MIC BIAS3 Internal1", "MIC BIAS3 Internal1", "ANCRight Headset Mic", "AMIC4", "MIC BIAS1 Internal2", "MIC BIAS1 Internal2", "ANCLeft Headset Mic", "DMIC1", "MIC BIAS1 External", "MIC BIAS1 External", "Digital Mic1", "DMIC2", "MIC BIAS1 External", "MIC BIAS1 External", "Digital Mic2", "DMIC3", "MIC BIAS3 External", "MIC BIAS3 External", "Digital Mic3", "DMIC4", "MIC BIAS3 External", "MIC BIAS3 External", "Digital Mic4", "DMIC5", "MIC BIAS4 External", "MIC BIAS4 External", "Digital Mic5", "DMIC6", "MIC BIAS4 External", "MIC BIAS4 External", "Digital Mic6"; qcom,taiko-mclk-clk-freq = <12288000>; prim-i2s-gpio-ws = <&msmgpio 12 0>; prim-i2s-gpio-din = <&msmgpio 13 0>; prim-i2s-gpio-dout = <&msmgpio 14 0>; prim-i2s-gpio-sclk = <&msmgpio 15 0>; prim-i2s-gpio-mclk = <&msmgpio 71 0>; }; * msm-adsp-loader Required properties: - compatible : "qcom,adsp-loader" - qcom,adsp-state: It is possible that some MSM use PIL to load the ADSP image. While other MSM may use SBL to load the ADSP image at boot. Audio APR needs state of ADSP to register and enable APR to be used for sending commands to ADSP. so adsp-state represents the state of ADSP to ADSP loader. Value of 0 indicates ADSP loader needs to use PIL and value of 2 means ADSP image is already loaded by SBL. Example: qcom,msm-adsp-loader { compatible = "qcom,adsp-loader"; qcom,adsp-state = <2>; }; * msm-audio-ion Required properties: - compatible : "qcom,msm-audio-ion" Optional properties: - qcom,smmu-enabled: It is possible that some MSM have SMMU in ADSP. While other MSM use no SMMU. Audio lib introduce wrapper for ION APIs. The wrapper needs presence of SMMU in ADSP to handle ION APIs differently. Presence of this property means ADSP has SMMU in it. Example: qcom,msm-audio-ion { compatible = "qcom,msm-audio-ion; qcom,smmu-enabled; }; * MSM8226 ASoC Machine driver Required properties: - compatible : "qcom,msm8226-audio-tapan" - qcom,model : The user-visible name of this sound card. - qcom,tapan-mclk-clk-freq : Tapan mclk Freq in Hz. currently only 9600000Hz is supported. - qcom,prim-auxpcm-gpio-clk : GPIO on which Primary AUXPCM clk signal is coming. - qcom,prim-auxpcm-gpio-sync : GPIO on which Primary AUXPCM SYNC signal is coming. - qcom,prim-auxpcm-gpio-din : GPIO on which Primary AUXPCM DIN signal is coming. - qcom,prim-auxpcm-gpio-dout : GPIO on which Primary AUXPCM DOUT signal is coming. - qcom,prim-auxpcm-gpio-set : set of GPIO lines used for Primary AUXPCM port Possible Values: prim-gpio-prim : Primary AUXPCM shares GPIOs with Primary MI2S prim-gpio-tert : Primary AUXPCM shares GPIOs with Tertiary MI2S Optional Properties: - qcom,us-euro-gpios : GPIO on which gnd/mic swap signal is coming. Example: sound { compatible = "qcom,msm8226-audio-tapan"; qcom,model = "msm8226-tapan-snd-card"; qcom,tapan-mclk-clk-freq = <9600000>; qcom,prim-auxpcm-gpio-clk = <&msmgpio 63 0>; qcom,prim-auxpcm-gpio-sync = <&msmgpio 64 0>; qcom,prim-auxpcm-gpio-din = <&msmgpio 65 0>; qcom,prim-auxpcm-gpio-dout = <&msmgpio 66 0>; qcom,prim-auxpcm-gpio-set = "prim-gpio-prim"; qcom,cdc-us-euro-gpios = <&msmgpio 69 0>; };