Qualcomm Technologies, Inc. WCD audio CODEC

WSA macro in Bolero codec

Required properties:
 - compatible = "qcom,wsa-macro";
 - reg: Specifies the WSA macro base address for Bolero
	soundwire core registers.
 - clock-names : clock names defined for WSA macro
 - clocks : clock handles defined for WSA  macro
 - qcom,default-clk-id: Default clk ID used for WSA macro
 - qcom,wsa-swr-gpios: phandle for SWR data and clock GPIOs of WSA macro
 - qcom,wsa-bcl-pmic-params: u8 array of PMIC ID, SID and PPID in same order
			 required to be configured to receive interrupts
			 in BCL block of WSA macro

WSA slave device as child of Bolero codec

Required properties:
 - compatible = "qcom,wsa881x";
 - reg: Specifies the WSA slave device base address.
 - qcom,spkr-sd-n-gpio: speaker reset gpio

Optional properties:
 - bolero-handle: phandle to bolero codec

Example:

&bolero {
	wsa_macro: wsa-macro {
		compatible = "qcom,wsa-macro";
		reg = <0x0C2C0000 0x0>;
		clock-names = "wsa_core_clk", "wsa_npl_clk";
		clocks = <&clock_audio_wsa_1 0>,
		<&clock_audio_wsa_2 0>;
		qcom,wsa-swr-gpios = &wsa_swr_gpios;
		qcom,wsa-bcl-pmic-params = /bits/ 8 <0x00 0x00 0x1E>;
		qcom,default-clk-id = <TX_CORE_CLK>;
		swr_0: wsa_swr_master {
			compatible = "qcom,swr-mstr";
			wsa881x_1: wsa881x@20170212 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x20170212>;
				qcom,spkr-sd-n-gpio = <&tlmm 80 0>;
				bolero-handle = <&bolero>;
			};
		};
	};
};

VA macro in bolero codec

Required properties:
 - compatible = "qcom,va-macro";
 - reg: Specifies the VA macro base address for Bolero
	soundwire core registers.
 - clock-names : clock names defined for VA macro
 - clocks : clock handles defined for VA macro
 - qcom,default-clk-id: Default clk ID used for VA macro
 - va-vdd-micb-supply： phandle of mic bias supply's regulator device tree node
 - qcom,va-vdd-micb-voltage： mic bias supply's voltage level min and max in mV
 - qcom,va-vdd-micb-current： mic bias supply's max current in mA
 - qcom,va-dmic-sample-rate： Sample rate defined for DMIC connected to VA macro

Optional properties:
 - qcom,va-clk-mux-select： VA macro MCLK MUX selection
 - qcom,va-island-mode-muxsel： VA macro island mode MUX selection
		This property is required if qcom,va-clk-mux-select is provided

Example:

&bolero {
	va_macro: va-macro {
		compatible = "qcom,va-macro";
		reg = <0x0C490000 0x0>;
		clock-names = "va_core_clk";
		clocks = <&clock_audio_va 0>;
		qcom,default-clk-id = <TX_CORE_CLK>;
		va-vdd-micb-supply = <&S4A>;
		qcom,va-vdd-micb-voltage = <1800000 1800000>;
		qcom,va-vdd-micb-current = <11200>;
		qcom,va-dmic-sample-rate = <4800000>;
		qcom,va-clk-mux-select = <1>;
		qcom,va-island-mode-muxsel = <0x033A0000>;
	};
};

RX macro in bolero codec

Required properties:
 - compatible = "qcom,rx-macro";
 - reg: Specifies the Rx macro base address for Bolero
	soundwire core registers.
 - clock-names : clock names defined for RX macro
 - clocks : clock handles defined for RX macro
 - qcom,default-clk-id: Default clk ID used for RX macro
 - qcom,rx-swr-gpios: phandle for SWR data and clock GPIOs of RX macro
 - qcom,rx_mclk_mode_muxsel: register address for RX macro MCLK mode mux select
 - qcom,rx-bcl-pmic-params: u8 array of PMIC ID, SID and PPID in same order
			 required to be configured to receive interrupts
			 in BCL block of WSA macro

Optional properties:
 - qcom,disable-div2-clk-switch: u32 int to disable clock switch for rx master.

Example:

&bolero {
	rx_macro: rx-macro {
		compatible = "qcom,rx-macro";
		reg = <0x62EE0000 0x0>;
		clock-names = "rx_core_clk", "rx_npl_clk";
		clocks = <&clock_audio_rx_1 0>,
			 <&clock_audio_rx_2 0>;
		qcom,rx-swr-gpios = <&rx_swr_gpios>;
		qcom,rx_mclk_mode_muxsel = <0x62C25020>;
		qcom,rx-bcl-pmic-params = /bits/ 8 <0x00 0x00 0x1E>;
		qcom,default-clk-id = <TX_CORE_CLK>;
		swr_1: rx_swr_master {
			compatible = "qcom,swr-mstr";
			wcd938x_rx_slave: wcd938x-rx-slave {
				compatible = "qcom,wcd938x-slave";
			};
		};
	};
};

TX macro in bolero codec

Required properties:
 - compatible = "qcom,tx-macro";
 - reg: Specifies the Tx macro base address for Bolero
	soundwire core registers.
 - clock-names : clock names defined for TX macro
 - clocks : clock handles defined for TX macro
 - qcom,tx-swr-gpios: phandle for SWR data and clock GPIOs of TX macro
 - qcom,tx-dmic-sample-rate: Sample rate defined for DMICs connected to TX macro

Optional properties:
 - compatible = "qcom,swr-mstr";
	- Child of TX macro represent TX SWR master.
 - qcom,swrm-hctl-reg: HW_CTL and CLK_ENABLE bits of SWR module.
                       Need Disable HW_CTL bit(to gate HW control)
                       for particular Soundwire master version as SW workaround.

Example:

&bolero {
	tx_macro: tx-macro {
		compatible = "qcom,tx-macro";
		reg = <0x62EC0000 0x0>;
		clock-names = "tx_core_clk", "tx_npl_clk";
		clocks = <&clock_audio_tx_1 0>
			 <&clock_audio_tx_2 0>;
		qcom,tx-swr-gpios = <&tx_swr_gpios>;
		qcom,tx-dmic-sample-rate = <4800000>;
		swr_2: tx_swr_master {
			compatible = "qcom,swr-mstr";
			qcom,swrm-hctl-reg = <0xa53a400>;
			wcd938x_tx_slave: wcd938x-tx-slave {
				compatible = "qcom,wcd938x-slave";
			};
			rouleur_tx_slave: rouleur-tx-slave {
				compatible = "qcom,rouleur-slave";
			};
		};
	};
};

&bolero {
	rx_macro: rx-macro {
		compatible = "qcom,tx-macro";
		reg = <0x62EC0000 0x0>;
		clock-names = "rx_core_clk", "rx_npl_clk";
		clocks = <&clock_audio_rx_1 0>
			 <&clock_audio_rx_2 0>;
		qcom,rx-swr-gpios = <&rx_swr_gpios>;
		swr_2: rx_swr_master {
			compatible = "qcom,swr-mstr";
			wcd937x_rx_slave: wcd937x-rx-slave {
				compatible = "qcom,wcd937x-slave";
			};
			rouleur_rx_slave: rouleur-rx-slave {
				compatible = "qcom,rouleur-slave";
			};
		};
	};
};

Tanggu Codec

Required properties:
 - compatible: "qcom,wcd937x-codec";
 - qcom,rx_swr_ch_map: mapping of swr rx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id, slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,tx_swr_ch_map: mapping of swr tx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id,slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,wcd-rst-gpio-node: Phandle reference to the DT node having codec reset gpio
                        configuration. If this property is not defined, it is
                        expected to atleast define "qcom,cdc-reset-gpio" property.
 - qcom,rx-slave: phandle reference of Soundwire Rx slave device.
 - qcom,tx-slave: phandle reference of Soundwire Tx slave device.

Optional properties:

 - cdc-vdd-rxtx-supply: phandle of rxtx supply's regulator device tree node.
 - qcom,cdc-vdd-rxtx-voltage: rxtx supply's voltage level min and max in mV.
 - qcom,cdc-vdd-rxtx-current: rxtx supply's max current in mA.
 - qcom,cdc-vdd-rxtx-lpm-supported: rxtx supply's LPM mode.

 - cdc-vddio-supply: phandle of io supply's regulator device tree node.
 - qcom,cdc-vddio-voltage: io supply's voltage level min and max in mV.
 - qcom,cdc-vddio-current: io supply's max current in mA.
 - qcom,cdc-vddio-lpm-supported: io supply's LPM mode.

 - cdc-vdd-buck-supply: phandle of buck supply's regulator device tree node.
 - qcom,cdc-vdd-buck-voltage: buck supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buck-current: buck supply's max current in mA.

 - cdc-vdd-mic-bias-supply: phandle of mic bias supply's regulator device tree node.
 - qcom,cdc-vdd-mic-bias-voltage: mic bias supply's voltage level min and max in mV.
 - qcom,cdc-vdd-mic-bias-current: mic bias supply's max current in mA.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.

Example:
wcd937x_codec: wcd937x-codec {
	compatible = "qcom,wcd937x-codec";
	qcom,rx_swr_ch_map = <0 HPH_L 0x1 0 HPH_L>,
		<0 HPH_R 0x2 0 HPH_R>, <1 CLSH 0x3 0 CLSH>,
		<2 COMP_L 0x1 0 COMP_L>, <2 COMP_R 0x2 0 COMP_R>,
		<3 LO 0x1 0 LO>, <4 DSD_L 0x1 0 DSD_L>,
		<4 DSD_R 0x2 0 DSD_R>;
	qcom,tx_swr_ch_map = <0 ADC1 0x1 0 ADC1>,
		<1 ADC2 0x1 0 ADC3>, <1 ADC3 0x2 0 ADC4>,
		<2 DMIC0 0x1 0 DMIC0>, <2 DMIC1 0x2 0 DMIC1>,
		<2 MBHC 0x4 0 DMIC2>, <3 DMIC2 0x1 0 DMIC4>,
		<3 DMIC3 0x2 0 DMIC5>, <3 DMIC4 0x4 0 DMIC6>,
		<3 DMIC5 0x8 0 DMIC7>;

	qcom,wcd-rst-gpio-node = <&wcd937x_rst_gpio>;
	qcom,rx-slave = <&wcd937x_rx_slave>;
	qcom,tx-slave = <&wcd937x_tx_slave>;

	cdc-vdd-buck-supply = <&S4A>;
	qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
	qcom,cdc-vdd-buck-current = <650000>;

	cdc-vdd-rxtx-supply = <&S4A>;
	qcom,cdc-vdd-rxtx-voltage = <1800000 1800000>;
	qcom,cdc-vdd-rxtx-current = <30000>;

	cdc-vddio-supply = <&S4A>;
	qcom,cdc-vddio-voltage = <1800000 1800000>;
	qcom,cdc-vddio-current = <30000>;

	cdc-vdd-mic-bias-supply = <&BOB>;
	qcom,cdc-vdd-mic-bias-voltage = <3296000 3296000>;
	qcom,cdc-vdd-mic-bias-current = <30000>;

	qcom,cdc-static-supplies = "cdc-vdd-rxtx",
				   "cdc-vddio";
	qcom,cdc-on-demand-supplies = "cdc-vdd-buck",
				      "cdc-vdd-mic-bias";
};

Traverso Codec

Required properties:
 - compatible: "qcom,wcd938x-codec";
 - qcom,rx_swr_ch_map: mapping of swr rx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id, slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,tx_swr_ch_map: mapping of swr tx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id,slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,wcd-rst-gpio-node: Phandle reference to the DT node having codec reset gpio
                        configuration. If this property is not defined, it is
                        expected to atleast define "qcom,cdc-reset-gpio" property.
 - qcom,rx-slave: phandle reference of Soundwire Rx slave device.
 - qcom,tx-slave: phandle reference of Soundwire Tx slave device.

Optional properties:

 - cdc-vdd-rxtx-supply: phandle of rxtx supply's regulator device tree node.
 - qcom,cdc-vdd-rxtx-voltage: rxtx supply's voltage level min and max in mV.
 - qcom,cdc-vdd-rxtx-current: rxtx supply's max current in mA.

 - cdc-vddio-supply: phandle of io supply's regulator device tree node.
 - qcom,cdc-vddio-voltage: io supply's voltage level min and max in mV.
 - qcom,cdc-vddio-current: io supply's max current in mA.

 - cdc-vdd-buck-supply: phandle of buck supply's regulator device tree node.
 - qcom,cdc-vdd-buck-voltage: buck supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buck-current: buck supply's max current in mA.

 - cdc-vdd-mic-bias-supply: phandle of mic bias supply's regulator device tree node.
 - qcom,cdc-vdd-mic-bias-voltage: mic bias supply's voltage level min and max in mV.
 - qcom,cdc-vdd-mic-bias-current: mic bias supply's max current in mA.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.

Example:
wcd938x_codec: wcd938x-codec {
	compatible = "qcom,wcd938x-codec";
	qcom,rx_swr_ch_map = <0 HPH_L 0x1 0 HPH_L>,
		<0 HPH_R 0x2 0 HPH_R>, <1 CLSH 0x3 0 CLSH>,
		<2 COMP_L 0x1 0 COMP_L>, <2 COMP_R 0x2 0 COMP_R>,
		<3 LO 0x1 0 LO>, <4 DSD_L 0x1 0 DSD_L>,
		<4 DSD_R 0x2 0 DSD_R>;
	qcom,tx_swr_ch_map = <0 ADC1 0x1 0 ADC1>,
		<1 ADC2 0x1 0 ADC3>, <1 ADC3 0x2 0 ADC4>,
		<2 DMIC0 0x1 0 DMIC0>, <2 DMIC1 0x2 0 DMIC1>,
		<2 MBHC 0x4 0 DMIC2>, <3 DMIC2 0x1 0 DMIC4>,
		<3 DMIC3 0x2 0 DMIC5>, <3 DMIC4 0x4 0 DMIC6>,
		<3 DMIC5 0x8 0 DMIC7>;

	qcom,wcd-rst-gpio-node = <&wcd938x_rst_gpio>;
	qcom,rx-slave = <&wcd938x_rx_slave>;
	qcom,tx-slave = <&wcd938x_tx_slave>;

	cdc-vdd-buck-supply = <&S4A>;
	qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
	qcom,cdc-vdd-buck-current = <650000>;

	cdc-vdd-rxtx-supply = <&S4A>;
	qcom,cdc-vdd-rxtx-voltage = <1800000 1800000>;
	qcom,cdc-vdd-rxtx-current = <30000>;

	cdc-vddio-supply = <&S4A>;
	qcom,cdc-vddio-voltage = <1800000 1800000>;
	qcom,cdc-vddio-current = <30000>;

	cdc-vdd-mic-bias-supply = <&BOB>;
	qcom,cdc-vdd-mic-bias-voltage = <3296000 3296000>;
	qcom,cdc-vdd-mic-bias-current = <30000>;

	qcom,cdc-static-supplies = "cdc-vdd-rxtx",
				   "cdc-vddio";
	qcom,cdc-on-demand-supplies = "cdc-vdd-buck",
				      "cdc-vdd-mic-bias";
};

Bolero Clock Resource Manager

Required Properties:
 - compatible = "qcom,bolero-clk-rsc-mngr";
 - qcom,fs-gen-sequence: Register sequence for fs clock generation
 - clock-names : clock names defined for WSA macro
 - clocks : clock handles defined for WSA  macro

Optional Properties:
 - qcom,rx_mclk_mode_muxsel: register address for RX macro MCLK mode mux select
 - qcom,wsa_mclk_mode_muxsel: register address for WSA macro MCLK mux select
 - qcom,va_mclk_mode_muxsel: register address for VA macro MCLK mode mux select

Example:
&bolero {
	bolero-clock-rsc-manager {
		compatible = "qcom,bolero-clk-rsc-mngr";
		qcom,fs-gen-sequence = <0x3000 0x1>,
				<0x3004 0x1>, <0x3080 0x2>;
		qcom,rx_mclk_mode_muxsel = <0x033240D8>;
		qcom,wsa_mclk_mode_muxsel = <0x033220D8>;
		qcom,va_mclk_mode_muxsel = <0x033A0000>;
		clock-names = "tx_core_clk", "tx_npl_clk", "rx_core_clk",
			"rx_npl_clk", "wsa_core_clk", "wsa_npl_clk",
			"va_core_clk", "va_npl_clk";
		clocks = <&clock_audio_tx_1 0>, <&clock_audio_tx_2 0>,
			<&clock_audio_rx_1 0>, <&clock_audio_rx_2 0>,
			<&clock_audio_wsa_1 0>, <&clock_audio_wsa_2 0>,
			<&clock_audio_va_1 0>, <&clock_audio_va_2 0>;
	};
};

WSA Analog Codec

Required Properties:
 - compatible = "qcom,wsa881x-i2c-codec";
 - reg: Specifies the I2C chip address.
 - clock-names : clock names defined for WSA master clock
 - clocks : clock handles defined for WSA master clock
 - qcom,wsa-analog-clk-gpio: Specificies WSA_MCLK GPIO handle
 - qcom,wsa-analog-reset-gpio: Specifies WSA reset GPIO handle

Optional Properties:
 - qcom,wsa-analog-vi-gpio: Specifies WSA VI sense GPIO handle

Example:
&qupv3_se1_i2c {
	wsa881x_i2c_f: wsa881x-i2c-codec@f {
		compatible = "qcom,wsa881x-i2c-codec";
		reg = <0x0f>;
		clock-names = "wsa_mclk";
		clocks = <&wsa881x_analog_clk 0>;
		qcom,wsa-analog-clk-gpio = <&wsa881x_analog_clk_gpio>;
		qcom,wsa-analog-reset-gpio = <&wsa881x_analog_reset_gpio>;
	};

	wsa881x_i2c_45: wsa881x-i2c-codec@45 {
		compatible = "qcom,wsa881x-i2c-codec";
		reg = <0x045>;
	};
};

WSA883x Soundwire slave device as child of Soundwire master in Bolero codec

Required properties:
 - compatible = "qcom,wsa883x";
 - reg: Specifies the WSA883x soundwire slave unique device address
 - qcom,spkr-sd-n-gpio: speaker reset gpio

Optional properties:
 - bolero-handle: phandle to bolero codec
 - cdc-vdd-1p8-supply: phandle of VDD 1.8V supply's regulator device tree node.
 - qcom,cdc-vdd-1p8-voltage: VDD 1.8V supply's voltage level min and max in mV.
 - qcom,cdc-vdd-1p8-current: VDD 1.8V supply's max current in mA.
 - qcom,cdc-vdd-qp8-lpm-supported: VDD 1.8V supply's LPM mode.
 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

Example:
wsa883x_0221: wsa883x@02170221 {
	compatible = "qcom,wsa883x";
	reg = <0x02 0x02170221>;
	qcom,spkr-sd-n-gpio = <&tlmm 80 0>;
	bolero-handle = <&bolero>;

	cdc-vdd-1p8-supply = <&S10B>;
	qcom,cdc-vdd-1p8-voltage = <1800000 1800000>;
	qcom,cdc-vdd-1p8-current = <20000>;
	qcom,cdc-static-supplies = "cdc-vdd-1p8";
};

PM2250 SPMI node

pm2250_spmi: Child node of SPMI bus required for rouleur codec
	     in order to access SPMI register to reset the peripheral.

Required properties:
 -compatible: "qcom,pm2250-spmi";

&spmi_bus {
                pm2250_cdc: qcom,pm2250-cdc {
                        compatible = "qcom,pm2250-spmi";
                };
};


Rouleur Codec

Required properties:
 - compatible: "qcom,rouleur-codec";
 - qcom,split-codec: Property to check on split codec support.
 - qcom,rx_swr_ch_map: mapping of swr rx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id, slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,tx_swr_ch_map: mapping of swr tx slave port configuration to port_type and also
		corresponding master port type it need to attach.
		format: <port_id,slave_port_type, ch_mask, ch_rate, master_port_type>
		same port_id configurations have to be grouped, and in ascending order.
 - qcom,pmic-spmi-node: Phandle reference to the PMIC SPMI DT node.
 - qcom,wcd-reset-reg: Reset register address in PMIC for rouleur codec.
 - qcom,rx-slave: phandle reference of Soundwire Rx slave device.
 - qcom,tx-slave: phandle reference of Soundwire Tx slave device.

Optional properties:

 - cdc-pa-vpos-supply: phandle of pa vpos supply's regulator device tree node.
 - qcom,cdc-pa-vpos-voltage: pa vpos supply's voltage level min and max in mV.
 - qcom,cdc-pa-vpos-current: pa vpos supply's max current in mA.

 - cdc-vdd-io-supply: phandle of io supply's regulator device tree node.
 - qcom,cdc-vdd-io-voltage: io supply's voltage level min and max in mV.
 - qcom,cdc-vdd-io-current: io supply's max current in mA.

 - cdc-vdd-cp-supply: phandle of vdd cp supply's regulator device tree node.
 - qcom,cdc-vdd-cp-voltage: vdd cp supply's voltage level min and max in mV.
 - qcom,cdc-vdd-cp-current: vdd cp supply's max current in mA.

 - cdc-vdd-mic-bias-supply: phandle of mic bias supply's regulator device tree node.
 - qcom,cdc-vdd-mic-bias-voltage: mic bias supply's voltage level min and max in mV.
 - qcom,cdc-vdd-mic-bias-current: mic bias supply's max current in mA.
 - qcom,cdc-vdd-mic-bias-lpm-supported: mic bias supply's LPM mode.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.

Example:

	rouleur_codec: rouleur-codec {
		compatible = "qcom,rouleur-codec";
		qcom,split-codec = <1>;
		qcom,pmic-spmi-node = <&pm2250_cdc>;
		qcom,wcd-reset-reg = <0x0000F3DB>;
		qcom,rx_swr_ch_map = <0 HPH_L 0x1 0 HPH_L>,
			<0 HPH_R 0x2 0 HPH_R>, <1 CLSH 0x1 0 CLSH>,
			<2 COMP_L 0x1 0 COMP_L>, <2 COMP_R 0x2 0 COMP_R>,
			<3 LO 0x1 0 LO>, <4 DSD_L 0x1 0 DSD_L>,
			<4 DSD_R 0x2 0 DSD_R>;
		qcom,tx_swr_ch_map = <0 ADC1 0x1 0 ADC1>,
			<0 ADC2 0x2 0 ADC2>, <0 DMIC0 0x4 0 ADC3>,
			<0 MBHC 0x8 0 ADC4>, <1 DMIC0 0x1 0 DMIC0>,
			<1 DMIC1 0x2 0 DMIC1>, <1 ADC1 0x4 0 DMIC2>,
			<1 MBHC 0x8 0 DMIC3>;

		qcom,rx-slave = <&rouleur_rx_slave>;
		qcom,tx-slave = <&rouleur_tx_slave>;

		cdc-vdd-io-supply = <&L15A>;
		qcom,cdc-vdd-io-voltage = <1800000 1800000>;
		qcom,cdc-vdd-io-current = <10000>;

		cdc-vdd-cp-supply = <&S4A>;
		qcom,cdc-vdd-cp-voltage = <2040000 2040000>;
		qcom,cdc-vdd-cp-current = <300000>;

		cdc-pa-vpos-supply = <&S4A>;
		qcom,cdc-pa-vpos-voltage = <2040000 2040000>;
		qcom,cdc-pa-vpos-current = <2400000>;

		cdc-vdd-mic-bias-supply = <&L22A>;
		qcom,cdc-vdd-mic-bias-voltage = <3304000 3304000>;
		qcom,cdc-vdd-mic-bias-current = <50000>;
		qcom,cdc-vdd-mic-bias-lpm-supported = <1>;

		qcom,cdc-micbias1-mv = <1800>;
		qcom,cdc-micbias2-mv = <1800>;
		qcom,cdc-micbias3-mv = <1800>;

		qcom,cdc-static-supplies = "cdc-vdd-cp",
					   "cdc-vdd-io";
		qcom,cdc-on-demand-supplies = "cdc-pa-vpos",
					      "cdc-vdd-mic-bias";
	};
};

WCD audio CODEC

Required properties:

 - compatible : "qcom,tasha-slim-pgd" or "qcom,tasha-i2c-pgd" for Tasha Codec
		"qcom,tavil-slim-pgd" or "qcom,tavil-i2c-pgd" for Tavil Codec
 - elemental-addr: codec slimbus slave PGD enumeration address.(48 bits)

 - qcom,cdc-reset-gpio: gpio used for codec SOC reset.
                        If this property is not defined, it is expected
                        to atleast have "qcom,wcd-rst-n-gpio" to be defined.
 - qcom,wcd-rst-gpio-node: Phandle reference to the DT node having codec reset gpio
                        configuration. If this property is not defined, it is
                        expected to atleast define "qcom,cdc-reset-gpio" property.
 - cdc-vdd-buck-supply: phandle of buck supply's regulator device tree node.
 - qcom,cdc-vdd-buck-voltage: buck supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buck-current: buck supply's max current in mA.

 - cdc-vdd-tx-h-supply: phandle of tx-h supply's regulator device tree node.
 - qcom,cdc-vdd-tx-h-voltage: tx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-tx-h-current: tx-h supply's max current in mA.

 - cdc-vdd-rx-h-supply: phandle of rx-h supply's regulator device tree node.
 - qcom,cdc-vdd-rx-h-voltage: rx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-rx-h-current: rx-h supply's max current in mA.

 - cdc-vddpx-1-supply: phandle of px-1 supply's regulator device tree node.
 - qcom,cdc-vddpx-1-voltage: px-1 supply's voltage level min and max in mV.
 - qcom,cdc-vddpx-1-current: px-1 supply's max current in mA.

 - cdc-vdd-a-1p2v-supply: phandle of 1.2v supply's regulator device tree node.
 - qcom,cdc-vdd-a-1p2v-voltage: 1.2v supply's voltage level min and max in mV.
 - qcom,cdc-vdd-a-1p2v-current: 1.2v supply's max current in mA.

 - cdc-vddcx-1-supply: phandle of cx-1 supply's regulator device tree node.
 - qcom,cdc-vddcx-1-voltage: cx-1 supply's voltage level min and max in mV.
 - qcom,cdc-vddcx-1-current: cx-1 supply's max current in mA.

 - cdc-vddcx-2-supply: phandle of cx-2 supply's regulator device tree node.
 - qcom,cdc-vddcx-2-voltage: cx-2 supply's voltage level min and max in mV.
 - qcom,cdc-vddcx-2-current: cx-2 supply's max current in mA.

 - cdc-vdd-buckhelper-supply: phandle of helper regulator supply's
				device tree node. This supply is a helper regulator for
				cdc-vdd-buck-supply regulator.
 - cdc-vdd-buckhelper-voltage: helper supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buckhelper-current: helper supply's max current in mA.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-micbias-ldoh-v - LDOH output in volts (should be 1.95 V and 3.00 V).

 - qcom,cdc-micbias-cfilt1-mv - cfilt1 output voltage in milli volts.
 - qcom,cdc-micbias-cfilt2-mv - cfilt2 output voltage in milli volts.
 - qcom,cdc-micbias-cfilt3-mv - cfilt3 output voltage in milli volts.
   cfilt voltage can be set to max of qcom,cdc-micbias-ldoh-v - 0.15V.

 - qcom,cdc-micbias1-cfilt-sel = cfilt to use for micbias1
				 (should be from 1 to 3).
 - qcom,cdc-micbias2-cfilt-sel = cfilt to use for micbias2
				 (should be from 1 to 3).
 - qcom,cdc-micbias3-cfilt-sel = cfilt to use for micbias3
				 (should be from 1 to 3).
 - qcom,cdc-micbias4-cfilt-sel = cfilt to use for micbias4
				 (should be from 1 to 3).
   This value represents the connected CFLIT to MIC Bias.

 - qcom,cdc-micbias1-ext-cap: Boolean. Enable micbias 1 external capacitor mode.
 - qcom,cdc-micbias2-ext-cap: Boolean. Enable micbias 2 external capacitor mode.
 - qcom,cdc-micbias3-ext-cap: Boolean. Enable micbias 3 external capacitor mode.
 - qcom,cdc-micbias4-ext-cap: Boolean. Enable micbias 4 external capacitor mode.
 - qcom,cdc-mclk-clk-rate - Specifies the master clock rate in Hz required for
			    codec.
 - qcom,cdc-slim-ifd-dev - namme of the codec slim interface device.
 - qcom,cdc-slim-ifd-elemental-addr - codec slimbus slave interface device
				     enumeration address.

Optional properties:
 - cdc-dmic-sample-rate: Specifies the sample rate of digital mic in HZ. The
			 values for 9.6MHZ mclk can be 2400000 Hz, 3200000 Hz
			 and 4800000 Hz.  The values for 12.288MHz mclk can be
			 3072200 Hz, 4096000 Hz and 6144000 Hz.

 - qcom,cdc-mad-dmic-rate: Specifies the sample rate of digital mic in HZ to be
			   used by MAD (Microphone Activity Detection) hardware
			   block on the codec. The valid set of values are same
			   as that of cdc-dmic-sample-rate, but this rate will
			   only be used by MAD and all other audio use cases
			   involving DMIC will use the rate defined by
			   cdc-dmic-sample-rate.

 - qcom,cdc-ecpp-dmic-rate: Specifies the sample rate of digital mic in HZ to be
			    used by ECPP (Echo Cancellation Ping Pong) block
			    on the codec. The valid set of values are same
			    as that of cdc-dmic-sample-rate, but this rate will
			    only be used by ECPP and all other audio use cases
			    involving DMIC will use the rate defined by
			    cdc-dmic-sample-rate.

 - qcom,cdc-dmic-clk-drv-strength: Specifies the drive strength for digital microphone
				   clock in the codec. Accepted values are 2,4,8 and 16.
				   The clock drive strentgh is in uA. Codec driver will
				   choose default value for particular codec if this
				   value is not specified in device tree.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.

- qcom,cdc-cp-supplies: List of supplies required for codec chargepump enable
				Supplies in this list can be enabled/disabled dynamically and
				are off by default.

 - qcom,cdc-micbias2-headset-only: Boolean. Allow micbias 2 only to headset mic.

 - qcom,cdc-variant: Indicates codec variant, WCD9XXX indicates all codecs till Taiko
			WCD9330 indicates wcd9330 audio codec

 - qcom,cdc-micbias1-mv: micbias1 output voltage in milli volts.
			 This is used when cfilt is not user configurable
			 and micbias1 is directly controlled with a register
			 write.

 - qcom,cdc-micbias2-mv: micbias2 output voltage in milli volts.
			 This is used when cfilt is not user configurable
			 and micbias2 is directly controlled with a register
			 write.

 - qcom,cdc-micbias3-mv: micbias3 output voltage in milli volts.
			 This is used when cfilt is not user configurable
			 and micbias3 is directly controlled with a register
			 write.

 - qcom,cdc-micbias4-mv: micbias4 output voltage in milli volts.
			 This is used when cfilt is not user configurable
			 and micbias4 is directly controlled with a register
			 write.

 - clock-names : clock name defined for external clock.
 - clocks : external clock defined for codec clock.

 - qcom,has-buck-vsel-gpio:  Boolean property to select if WCD_BUCK has VSEL
			controlled by GPIO.
 - qcom,buck-vsel-gpio-node: Phandle reference to the DT node having wcd buck
			VSEL gpio configuration.

Example:

taiko_codec {
	compatible = "qcom,taiko-slim-pgd";
	elemental-addr = [00 01 A0 00 17 02];

	qcom,cdc-reset-gpio = <&msmgpio 63 0>;

	cdc-vdd-buck-supply = <&pm8941_s2>;
	qcom,cdc-vdd-buck-voltage = <2150000 2150000>;
	qcom,cdc-vdd-buck-current = <500000>;

	cdc-vdd-tx-h-supply = <&pm8941_s3>;
	qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdd-tx-h-current = <200000>;

	cdc-vdd-rx-h-supply = <&pm8941_s3>;
	qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdd-rx-h-current = <200000>;

	cdc-vddpx-1-supply = <&pm8941_s3>;
	qcom,cdc-vddpx-1-voltage = <1800000 1800000>;
	qcom,cdc-vddpx-1-current = <5000>;

	cdc-vdd-a-1p2v-supply = <&pm8941_l1>;
	qcom,cdc-vdd-a-1p2v-voltage = <1225000 1225000>;
	qcom,cdc-vdd-a-1p2v-current = <5000>;

	cdc-vddcx-1-supply = <&pm8941_l1>;
	qcom,cdc-vddcx-1-voltage = <1225000 1225000>;
	qcom,cdc-vddcx-1-current = <5000>;

	cdc-vddcx-2-supply = <&pm8941_l1>;
	qcom,cdc-vddcx-2-voltage = <1225000 1225000>;
	qcom,cdc-vddcx-2-current = <5000>;

	qcom,cdc-static-supplies = "cdc-vdd-buck",
				   "cdc-vdd-tx-h",
				   "cdc-vdd-rx-h",
				   "cdc-vddpx-1",
				   "cdc-vdd-a-1p2v",
				   "cdc-vddcx-1",
				   "cdc-vddcx-2";

	com,cdc-on-demand-supplies = "cdc-vdd-spkdrv";

	qcom,cdc-micbias-ldoh-v = <0x3>;
	qcom,cdc-micbias-cfilt1-mv = <1800>;
	qcom,cdc-micbias-cfilt2-mv = <2700>;
	qcom,cdc-micbias-cfilt3-mv = <1800>;
	qcom,cdc-micbias1-cfilt-sel = <0x0>;
	qcom,cdc-micbias2-cfilt-sel = <0x1>;
	qcom,cdc-micbias3-cfilt-sel = <0x2>;
	qcom,cdc-micbias4-cfilt-sel = <0x2>;
	qcom,cdc-micbias1-ext-cap;
	qcom,cdc-micbias2-ext-cap;
	qcom,cdc-micbias3-ext-cap;
	qcom,cdc-micbias4-ext-cap;
	qcom,cdc-mclk-clk-rate = <9600000>;
	qcom,cdc-slim-ifd = "taiko-slim-ifd";
	qcom,cdc-slim-ifd-elemental-addr = [00 00 A0 00 17 02];
	qcom,cdc-dmic-sample-rate = <4800000>;
	qcom,cdc-micbias2-headset-only;
};

Wcd9xxx audio CODEC in I2C mode

 - compatible = "qcom,wcd9xxx-i2c-device";
 - reg: represents the slave address provided to the I2C driver.
 - qcom,cdc-reset-gpio: gpio used for codec SOC reset.

 - cdc-vdd-buck-supply: phandle of buck supply's regulator device tree node.
 - qcom,cdc-vdd-buck-voltage: buck supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buck-current: buck supply's max current in mA.

 - cdc-vdd-tx-h-supply: phandle of tx-h supply's regulator device tree node.
 - qcom,cdc-vdd-tx-h-voltage: tx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-tx-h-current: tx-h supply's max current in mA.

 - cdc-vdd-rx-h-supply: phandle of rx-h supply's regulator device tree node.
 - qcom,cdc-vdd-rx-h-voltage: rx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-rx-h-current: rx-h supply's max current in mA.

 - cdc-vddpx-1-supply: phandle of px-1 supply's regulator device tree node.
 - qcom,cdc-vddpx-1-voltage: px-1 supply's voltage level min and max in mV.
 - qcom,cdc-vddpx-1-current: px-1 supply's max current in mA.

 - cdc-vdd-a-1p2v-supply: phandle of 1.2v supply's regulator device tree node.
 - qcom,cdc-vdd-a-1p2v-voltage: 1.2v supply's voltage level min and max in mV.
 - qcom,cdc-vdd-a-1p2v-current: 1.2v supply's max current in mA.

 - cdc-vddcx-1-supply: phandle of cx-1 supply's regulator device tree node.
 - qcom,cdc-vddcx-1-voltage: cx-1 supply's voltage level min and max in mV.
 - qcom,cdc-vddcx-1-current: cx-1 supply's max current in mA.

 - cdc-vddcx-2-supply: phandle of cx-2 supply's regulator device tree node.
 - qcom,cdc-vddcx-2-voltage: cx-2 supply's voltage level min and max in mV.
 - qcom,cdc-vddcx-2-current: cx-2 supply's max current in mA.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-micbias-ldoh-v - LDOH output in volts (should be 1.95 V and 3.00 V).

 - qcom,cdc-micbias-cfilt1-mv - cfilt1 output voltage in milli volts.
 - qcom,cdc-micbias-cfilt2-mv - cfilt2 output voltage in milli volts.
 - qcom,cdc-micbias-cfilt3-mv - cfilt3 output voltage in milli volts.
   cfilt voltage can be set to max of qcom,cdc-micbias-ldoh-v - 0.15V.

 - qcom,cdc-micbias1-cfilt-sel = cfilt to use for micbias1
				 (should be from 1 to 3).
 - qcom,cdc-micbias2-cfilt-sel = cfilt to use for micbias2
				 (should be from 1 to 3).
 - qcom,cdc-micbias3-cfilt-sel = cfilt to use for micbias3
				 (should be from 1 to 3).
 - qcom,cdc-micbias4-cfilt-sel = cfilt to use for micbias4
				 (should be from 1 to 3).
   This value represents the connected CFLIT to MIC Bias.

 - qcom,cdc-micbias1-ext-cap: Boolean. Enable micbias 1 external capacitor mode.
 - qcom,cdc-micbias2-ext-cap: Boolean. Enable micbias 2 external capacitor mode.
 - qcom,cdc-micbias3-ext-cap: Boolean. Enable micbias 3 external capacitor mode.
 - qcom,cdc-micbias4-ext-cap: Boolean. Enable micbias 4 external capacitor mode.
 - qcom,cdc-mclk-clk-rate - Specifies the master clock rate in Hz required for
			    codec.

Optional properties:

 - cdc-vdd-spkdrv-supply: phandle of spkdrv supply's regulator device tree node.
 - qcom,cdc-vdd-spkdrv-voltage: spkdrv supply voltage level min and max in mV.
 - qcom,cdc-vdd-spkdrv-current: spkdrv supply max current in mA.

 - cdc-vdd-spkdrv-supply: phandle of spkdrv supply's regulator device tree node.
 - qcom,cdc-vdd-spkdrv-voltage: spkdrv supply voltage level min and max in mV.
 - qcom,cdc-vdd-spkdrv-current: spkdrv supply max current in mA.

 - cdc-vdd-spkdrv-2-supply: phandle of spkdrv2 supply's regulator device tree node.
 - qcom,cdc-vdd-spkdrv-2-voltage: spkdrv2 supply voltage level min and max in mV.
 - qcom,cdc-vdd-spkdrv-2-current: spkdrv2 supply max current in mA.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.

Example:
i2c@f9925000 {
	cell-index = <3>;
	compatible = "qcom,i2c-qup";
	reg = <0xf9925000 0x1000>;
	#address-cells = <1>;
	#size-cells = <0>;
	reg-names = "qup_phys_addr";
	interrupts = <0 97 0>;
	interrupt-names = "qup_err_intr";
	qcom,i2c-bus-freq = <100000>;
	qcom,i2c-src-freq = <24000000>;

	wcd9xxx_codec@0d{
		compatible = "qcom,wcd9xxx-i2c";
		reg = <0x0d>;
		qcom,cdc-reset-gpio = <&msmgpio 22 0>;
		interrupt-parent = <&wcd9xxx_intc>;
		interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
			      20 21 22 23 24 25 26 27 28>;

		cdc-vdd-buck-supply = <&pm8019_l11>;
		qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
		qcom,cdc-vdd-buck-current = <25000>;

		cdc-vdd-tx-h-supply = <&pm8019_l11>;
		qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-tx-h-current = <25000>;

		cdc-vdd-rx-h-supply = <&pm8019_l11>;
		qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-rx-h-current = <25000>;

		cdc-vddpx-1-supply = <&pm8019_l11>;
		qcom,cdc-vddpx-1-voltage = <1800000 1800000>;
		qcom,cdc-vddpx-1-current = <10000>;

		cdc-vdd-a-1p2v-supply = <&pm8019_l9>;
		qcom,cdc-vdd-a-1p2v-voltage = <1200000 1200000>;
		qcom,cdc-vdd-a-1p2v-current = <10000>;

		cdc-vddcx-1-supply = <&pm8019_l9>;
		qcom,cdc-vddcx-1-voltage = <1200000 1200000>;
		qcom,cdc-vddcx-1-current = <10000>;

		cdc-vddcx-2-supply = <&pm8019_l9>;
		qcom,cdc-vddcx-2-voltage = <1200000 1200000>;
		qcom,cdc-vddcx-2-current = <10000>;

		qcom,cdc-static-supplies = "cdc-vdd-buck",
					   "cdc-vdd-tx-h",
					   "cdc-vdd-rx-h",
					   "cdc-vddpx-1",
					   "cdc-vdd-a-1p2v",
					   "cdc-vddcx-1",
					   "cdc-vddcx-2";

		cdc-vdd-spkdrv-supply = <&pmi8994_boost>;
		qcom,cdc-vdd-spkdrv-voltage = <5000000 5000000>;
		qcom,cdc-vdd-spkdrv-current = <600000>;

		cdc-vdd-spkdrv-2-supply = <&pmi8994_boost>;
		qcom,cdc-vdd-spkdrv-2-voltage = <5000000 5000000>;
		qcom,cdc-vdd-spkdrv-2-current = <600000>;

		qcom,cdc-on-demand-supplies = "cdc-vdd-spkdrv",
					      "cdc-vdd-spkdrv-2";

		qcom,cdc-micbias-ldoh-v = <0x3>;
		qcom,cdc-micbias-cfilt1-mv = <1800>;
		qcom,cdc-micbias-cfilt2-mv = <2700>;
		qcom,cdc-micbias-cfilt3-mv = <1800>;
		qcom,cdc-micbias1-cfilt-sel = <0x0>;
		qcom,cdc-micbias2-cfilt-sel = <0x1>;
		qcom,cdc-micbias3-cfilt-sel = <0x2>;
		qcom,cdc-micbias4-cfilt-sel = <0x2>;
		qcom,cdc-mclk-clk-rate = <12288000>;
	};

	wcd9xxx_codec@77{
		compatible = "qcom,wcd9xxx-i2c";
		reg = <0x77>;
	};

	wcd9xxx_codec@66{
		compatible = "qcom,wcd9xxx-i2c";
		reg = <0x66>;
	};
	wcd9xxx_codec@55{
		compatible = "qcom,wcd9xxx-i2c";
		reg = <0x55>;
	};
};

Tombak audio CODEC in SPMI mode

 - compatible = "qcom,msm-codec-core",
 - compatible = "qcom,msm-digital-codec"
 - compatible = "qcom,pmic-analog-codec"
 - reg: represents the slave base address provided to the peripheral.
 - interrupt-parent : The parent interrupt controller.
 - interrupts: List of interrupts in given SPMI peripheral.
 - interrupt-names: Names specificed to above list of interrupts in same
		    order.

Optional properties:

 - cdc-vdda-cp-supply: phandle of cp supply's regulator device tree node.
 - qcom,cdc-vdda-cp-voltage: cp supply's voltage level min and max in mV.
 - qcom,cdc-vdda-cp-current: cp supply's max current in mA.

 - cdc-vdda-rx-h-supply: phandle of vdda-rx-h supply's regulator device tree node.
 - qcom,cdc-vdda-rx-h-voltage: vdda-rx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdda-rx-h-current: vdda-rx-h supply's max current in mA.

 - cdc-vdda-tx-h-supply: phandle of vdda-tx-h supply's regulator device tree node.
 - qcom,cdc-vdda-tx-h-voltage: vdda-tx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdda-tx-h-current: vdda-tx-h supply's max current in mA.

 - cdc-vdd-px-supply: phandle of vdd-px supply's regulator device tree node.
 - qcom,cdc-vdd-px-voltage: vdd-px supply's voltage level min and max in mV.
 - qcom,cdc-vdd-px-current: vdd-px supply's max current in mA.

 - cdc-vdd-pa-supply: phandle of vdd-pa supply's regulator device tree node.
 - qcom,cdc-vdd-pa-voltage: vdd-pa supply's voltage level min and max in mV.
 - qcom,cdc-vdd-pa-current: vdd-pa supply's max current in mA.

 - cdc-vdd-mic-bias-supply: phandle of mic-bias supply's regulator device tree
			    node.
 - qcom,cdc-vdd-mic-bias-voltage: mic-bias supply's voltage level min and max
				  in mV.
 - qcom,cdc-vdd-mic-bias-current: mic-bias supply's max current in mA.

 - qcom,cdc-mclk-clk-rate: Specifies the master clock rate in Hz required for
			    codec.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-on-demand-supplies: List of supplies which can be enabled
				dynamically.
				Supplies in this list are off by default.
 - qcom,cdc-micbias-cfilt-mv : MICBIAS voltage value
 - qcom,cdc-boost-voltage: Specifies the analog boost output voltage value.
				Value from 4000 to 5550 in mV in steps of 50 mV can be given.
 - qcom,dig-cdc-base-addr: Specifies the digital codec base address for MSM digital
				core register writes.
 - qcom,anlg-cdc-mbhc-disable: Boolean variable that informs if AQT1000 codec is enabled or not.

Example:

msm_digital_codec: msm-dig-codec@c0f0000 {
	compatible = "qcom,msm-digital-codec";
	reg = <0xc0f0000 0x0>;
};

pmic_analog_codec: analog-codec@f000 {
	compatible = "qcom,pmic-analog-codec";
	reg = <0xf000 0x200>;
	interrupt-parent = <&spmi_bus>;
	interrupts = <0x1 0xf0 0x0>,
		     <0x1 0xf0 0x1>,
		     <0x1 0xf0 0x2>,
		     <0x1 0xf0 0x3>,
		     <0x1 0xf0 0x4>,
		     <0x1 0xf0 0x5>,
		     <0x1 0xf0 0x6>,
		     <0x1 0xf0 0x7>;
	interrupt-names = "spk_cnp_int",
			  "spk_clip_int",
			  "spk_ocp_int",
			  "ins_rem_det1",
			  "but_rel_det",
			  "but_press_det",
			  "ins_rem_det",
			  "mbhc_int";

	cdc-vdda-cp-supply = <&pm8916_s4>;
	qcom,cdc-vdda-cp-voltage = <1800000 2200000>;
	qcom,cdc-vdda-cp-current = <770000>;

	cdc-vdda-rx-h-supply = <&pm8916_l5>;
	qcom,cdc-vdda-rx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdda-rx-h-current = <20000>;

	cdc-vdda-tx-h-supply = <&pm8916_l5>;
	qcom,cdc-vdda-tx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdda-tx-h-current = <20000>;

	cdc-vdd-px-supply = <&pm8916_s4>;
	qcom,cdc-vdd-px-voltage = <1800000 2200000>;
	qcom,cdc-vdd-px-current = <770000>;

	cdc-vdd-pa-supply = <&pm8916_l5>;
	qcom,cdc-vdd-pa-voltage = <1800000 1800000>;
	qcom,cdc-vdd-pa-current = <5000>;

	cdc-vdd-mic-bias-supply = <&pm8916_l13>;
	qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
	qcom,cdc-vdd-mic-bias-current = <25000>;

	qcom,cdc-mclk-clk-rate = <9600000>;

	qcom,cdc-static-supplies = "cdc-vdda-h",
				   "cdc-vdd-px",
				   "cdc-vdd-pa",
				   "cdc-vdda-cp";

	qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
};

MSM based Soundwire audio codec

Required properties:
 - compatible = "qcom,msm-sdw-codec";
 - reg: Specifies the soundwire codec base address for MSM digital
	soundwire core registers.
 - interrupts: Specifies the soundwire master interrupt number to Apps processor.
 - interrupt-names: Specify the interrupt name from soundwire master.
 - swr_master: This node is added as a child of MSM soundwire codec
	       and uses already existing driver soundwire master.
	       And there is/are subchild node(s) under soundwire master
	       which is also existing driver WSA881x that represents
	       soundwire slave devices.

Example:

msm_sdw_codec: qcom,msm-sdw-codec@152c1000 {
	compatible = "qcom,msm-sdw-codec";
	reg = <0x152c1000 0x0>;
	interrupts = <0 161 0>;
	interrupt-names = "swr_master_irq";

	swr_master {
		compatible = "qcom,swr-wcd";
		#address-cells = <2>;
		#size-cells = <0>;

		wsa881x_1: wsa881x@20170212 {
			compatible = "qcom,wsa881x";
			reg = <0x00 0x20170212>;
			qcom,spkr-sd-n-gpio = <&tlmm 80 0>;
		};
	};
};

Tasha audio CODEC in I2C mode

 - compatible = "qcom,tasha-i2c-pgd";
 - reg: represents the slave address provided to the I2C driver.
 - qcom,cdc-reset-gpio: gpio used for codec SOC reset.

 - cdc-vdd-buck-supply: phandle of buck supply's regulator device tree node.
 - qcom,cdc-vdd-buck-voltage: buck supply's voltage level min and max in mV.
 - qcom,cdc-vdd-buck-current: buck supply's max current in mA.

 - cdc-buck-sido-supply: phandle of sido supply's regulator device tree node.
 - qcom,cdc-buck-sido-voltage = sido supply's voltage level min and max in mV.
 - qcom,cdc-buck-sido-current = sido supply's max current in mA.

 - cdc-vdd-tx-h-supply: phandle of tx-h supply's regulator device tree node.
 - qcom,cdc-vdd-tx-h-voltage: tx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-tx-h-current: tx-h supply's max current in mA.

 - cdc-vdd-rx-h-supply: phandle of rx-h supply's regulator device tree node.
 - qcom,cdc-vdd-rx-h-voltage: rx-h supply's voltage level min and max in mV.
 - qcom,cdc-vdd-rx-h-current: rx-h supply's max current in mA.

 - cdc-vddpx-1-supply: phandle of px-1 supply's regulator device tree node.
 - qcom,cdc-vddpx-1-voltage: px-1 supply's voltage level min and max in mV.
 - qcom,cdc-vddpx-1-current: px-1 supply's max current in mA.

 - qcom,cdc-static-supplies: List of supplies to be enabled prior to codec
			     hardware probe.  Supplies in this list will be
			     stay enabled.

 - qcom,cdc-micbias1-mv - micbias1 output voltage in milli volts.
 - qcom,cdc-micbias2-mv - micbias2 output voltage in milli volts.
 - qcom,cdc-micbias3-mv - micbias3 output voltage in milli volts.
 - qcom,cdc-micbias4-mv - micbias4 output voltage in milli volts.

 - qcom,cdc-mclk-clk-rate - Specifies the master clock rate in Hz required for
			    codec.

 - qcom,cdc-dmic-sample-rate - Specifies dmic sample rate.
 - qcom,cdc-variant - Specifies codec variant.

Example:
i2c_3: i2c@78B7000 { /* BLSP1 QUP3 */
	compatible = "qcom,i2c-msm-v2";
	#address-cells = <1>;
	#size-cells = <0>;
	reg-names = "qup_phys_addr";
	reg = <0x78B7000 0x600>;
	interrupt-names = "qup_irq";
	interrupts = <0 97 0>;
	dmas = <&dma_blsp1 12 64 0x20000020 0x20>,
		<&dma_blsp1 13 32 0x20000020 0x20>;
	dma-names = "tx", "rx";
	qcom,master-id = <86>;
	qcom,clk-freq-out = <400000>;
	qcom,clk-freq-in  = <19200000>;
	clock-names = "iface_clk", "core_clk";
	clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
		 <&clock_gcc clk_gcc_blsp1_qup3_i2c_apps_clk>;
	pinctrl-names = "i2c_active", "i2c_sleep";
	pinctrl-0 = <&i2c_3_active>;
	pinctrl-1 = <&i2c_3_sleep>;
	status = "disabled";

	wcd9xxx_codec@d{
		compatible = "qcom,tasha-i2c-pgd";
		reg = <0x0d>;

		interrupt-parent = <&wcd9xxx_intc>;
		interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
				  17 18 19 20 21 22 23 24 25 26 27 28 29
				  30>;

		qcom,cdc-reset-gpio = <&tlmm_pinmux 90 0>;

		cdc-vdd-buck-supply = <&codec_buck_vreg>;
		qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
		qcom,cdc-vdd-buck-current = <650000>;

		cdc-buck-sido-supply = <&codec_buck_vreg>;
		qcom,cdc-buck-sido-voltage = <1800000 1800000>;
		qcom,cdc-buck-sido-current = <200000>;

		cdc-vdd-tx-h-supply = <&pmdcalifornium_l6>;
		qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-tx-h-current = <25000>;

		cdc-vdd-rx-h-supply = <&pmdcalifornium_l6>;
		qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-rx-h-current = <25000>;

		cdc-vddpx-1-supply = <&pmdcalifornium_l6>;
		qcom,cdc-vddpx-1-voltage = <1800000 1800000>;
		qcom,cdc-vddpx-1-current = <10000>;

		qcom,cdc-static-supplies = "cdc-vdd-buck",
					   "cdc-buck-sido",
					   "cdc-vdd-tx-h",
					   "cdc-vdd-rx-h",
					   "cdc-vddpx-1";

		qcom,cdc-micbias1-mv = <1800>;
		qcom,cdc-micbias2-mv = <1800>;
		qcom,cdc-micbias3-mv = <1800>;
		qcom,cdc-micbias4-mv = <1800>;
		qcom,cdc-mclk-clk-rate = <12288000>;
		qcom,cdc-dmic-sample-rate = <4800000>;

		swr_master {
			compatible = "qcom,swr-wcd";
			#address-cells = <2>;
			#size-cells = <0>;

			wsa881x_1: wsa881x@20170212 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x20170212>;
				qcom,spkr-sd-n-gpio = <&tlmm_pinmux 80 0>;

				cdc-vdd-d-supply = <&pmdcalifornium_l6>;
				qcom,cdc-vdd-d-voltage = <1800000
							  1800000>;
				qcom,cdc-vdd-d-current = <2000>;

				cdc-vdd-a-supply = <&pmdcalifornium_l6>;
				qcom,cdc-vdd-a-voltage = <1800000
							  1800000>;
				qcom,cdc-vdd-a-current = <2000>;

				qcom,cdc-static-supplies = "cdc-vdd-d",
							   "cdc-vdd-a";
			};
		};
	};
};
