diff mbox series

arm64: dts: qcom: sdm845-oneplus-*: add audio devices

Message ID 20230118092040.1444129-1-caleb.connolly@linaro.org (mailing list archive)
State Superseded
Headers show
Series arm64: dts: qcom: sdm845-oneplus-*: add audio devices | expand

Commit Message

Caleb Connolly Jan. 18, 2023, 9:20 a.m. UTC
Populate the audio devices found on the OnePlus 6 and 6T using the
sdm845-sndcard driver.

Both devices have the earpiece and headphone jack connected to the
WCD9341 codec. The OnePlus 6 uses the MAX98927 speaker codec which is
already supported upstream. The OnePlus 6T uses a currently unsupported
TFA9894 codec.

Two internal microphones are supported, as well as an external headset
mic. Each DAI link is expected to be used for a single device.

Alsa UCM2 configs for this setup can be found here, they are not yet
upstream and include support for call audio which is missing in this
patch

https://gitlab.com/sdm845-mainline/alsa-ucm-conf/-/tree/9ed12836b269764c4a853411d38ccb6abb70b383/ucm2/OnePlus

Co-developed-by: Dylan Van Assche <me@dylanvanassche.be>
Signed-off-by: Dylan Van Assche <me@dylanvanassche.be>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---
 .../boot/dts/qcom/sdm845-oneplus-common.dtsi  | 208 ++++++++++++++++++
 .../dts/qcom/sdm845-oneplus-enchilada.dts     |  40 ++++
 .../boot/dts/qcom/sdm845-oneplus-fajita.dts   |  29 +++
 3 files changed, 277 insertions(+)

Comments

Krzysztof Kozlowski Jan. 18, 2023, 9:37 a.m. UTC | #1
On 18/01/2023 10:20, Caleb Connolly wrote:
> Populate the audio devices found on the OnePlus 6 and 6T using the
> sdm845-sndcard driver.
> 
> Both devices have the earpiece and headphone jack connected to the
> WCD9341 codec. The OnePlus 6 uses the MAX98927 speaker codec which is
> already supported upstream. The OnePlus 6T uses a currently unsupported
> TFA9894 codec.
> 
> Two internal microphones are supported, as well as an external headset
> mic. Each DAI link is expected to be used for a single device.
> 
> Alsa UCM2 configs for this setup can be found here, they are not yet
> upstream and include support for call audio which is missing in this
> patch
> 
> https://gitlab.com/sdm845-mainline/alsa-ucm-conf/-/tree/9ed12836b269764c4a853411d38ccb6abb70b383/ucm2/OnePlus
> 
> Co-developed-by: Dylan Van Assche <me@dylanvanassche.be>
> Signed-off-by: Dylan Van Assche <me@dylanvanassche.be>
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../boot/dts/qcom/sdm845-oneplus-common.dtsi  | 208 ++++++++++++++++++
>  .../dts/qcom/sdm845-oneplus-enchilada.dts     |  40 ++++
>  .../boot/dts/qcom/sdm845-oneplus-fajita.dts   |  29 +++
>  3 files changed, 277 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> index 42cf4dd5ea28..76017fad4443 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> @@ -9,6 +9,8 @@
>  
>  #include <dt-bindings/input/linux-event-codes.h>
>  #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> +#include <dt-bindings/sound/qcom,q6afe.h>
> +#include <dt-bindings/sound/qcom,q6asm.h>
>  
>  #include "sdm845.dtsi"
>  #include "pm8998.dtsi"
> @@ -466,6 +468,44 @@ &pmi8998_rradc {
>  	status = "okay";
>  };
>  
> +&q6afedai {
> +	qi2s@22 {
> +		reg = <22>;
> +		qcom,sd-lines = <1>;
> +	};
> +
> +	qi2s@23 {
> +		reg = <23>;
> +		qcom,sd-lines = <0>;
> +	};
> +};
> +
> +&q6asmdai {
> +	dai@0 {
> +		reg = <0>;
> +	};
> +
> +	dai@1 {
> +		reg = <1>;
> +	};
> +
> +	dai@2 {
> +		reg = <2>;
> +	};
> +
> +	dai@3 {
> +		reg = <3>;
> +	};
> +
> +	dai@4 {
> +		reg = <4>;
> +	};
> +
> +	dai@5 {
> +		reg = <5>;
> +	};
> +};
> +
>  &qupv3_id_1 {
>  	status = "okay";
>  };
> @@ -505,6 +545,140 @@ pinconf-rx {
>  	};
>  };
>  
> +&sound {
> +	compatible = "qcom,sdm845-sndcard";
> +	pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active>;
> +	pinctrl-names = "default";
> +
> +	mm1-dai-link {
> +		link-name = "MultiMedia1";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
> +		};
> +	};
> +
> +	mm2-dai-link {
> +		link-name = "MultiMedia2";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
> +		};
> +	};
> +
> +	mm3-dai-link {
> +		link-name = "MultiMedia3";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
> +		};
> +	};
> +
> +	mm4-dai-link {
> +		link-name = "MultiMedia4";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
> +		};
> +	};
> +
> +	mm5-dai-link {
> +		link-name = "MultiMedia5";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
> +		};
> +	};
> +
> +	mm6-dai-link {
> +		link-name = "MultiMedia6";
> +		cpu {
> +			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
> +		};
> +	};
> +
> +	speaker_playback: speaker-dai-link {
> +		link-name = "Speaker Playback";
> +		cpu {
> +			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +	};
> +
> +	slim1-dai-link {
> +		link-name = "SLIM Playback 1";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 0>; /* AIF1_PB */
> +		};
> +	};
> +
> +	slimcap1-dai-link {
> +		link-name = "SLIM Capture 1";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 1>; /* AIF1_CAP */
> +		};
> +	};
> +
> +	slim2-dai-link {
> +		link-name = "SLIM Playback 2";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_1_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 2>; /* AIF2_PB */
> +		};
> +	};
> +
> +	slimcap2-dai-link {
> +		link-name = "SLIM Capture 2";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_1_TX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 3>; /* AIF2_CAP */
> +		};
> +	};
> +
> +	slimcap3-dai-link {
> +		link-name = "SLIM Capture 3";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_2_TX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 5>; /* AIF3_CAP */
> +		};
> +	};
> +};
> +
>  &uart6 {
>  	status = "okay";
>  
> @@ -634,6 +808,27 @@ mux {
>  			input-enable;
>  		};
>  	};
> +
> +	speaker_default: speaker-default-state {
> +		mux {

Drop and test dtbs_check with pinctrl bindings.

> +			pins = "gpio69";
> +			function = "gpio";
> +			drive-strength = <16>;
> +			bias-pull-up;
> +			output-high;
> +		};
> +	};
> +
> +	wcd_default: wcd-default-state {
> +		mux {

Drop

> +			pins = "gpio54";
> +			function = "gpio";
> +
> +			input-enable;
> +			bias-pull-down;
> +			drive-strength = <2>;
> +		};
> +	};
>  };
>  
>  &venus {
> @@ -641,6 +836,19 @@ &venus {
>  	firmware-name = "qcom/sdm845/oneplus6/venus.mbn";
>  };
>  
> +&wcd9340 {

I will send today v2 of
https://lore.kernel.org/all/20230113162245.117324-2-krzysztof.kozlowski@linaro.org/
which will conflict here. If my patch gets first, please rebase on top
of it.

> +	pinctrl-0 = <&wcd_default>;
> +	pinctrl-names = "default";
> +	clock-names = "extclk";
> +	clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
> +	reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
> +	vdd-buck-supply = <&vreg_s4a_1p8>;
> +	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
> +	vdd-tx-supply = <&vreg_s4a_1p8>;
> +	vdd-rx-supply = <&vreg_s4a_1p8>;
> +	vdd-io-supply = <&vreg_s4a_1p8>;
> +};
> +
>  &wifi {
>  	status = "okay";
>  	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> index bf2cf92e8976..aae1a3a27144 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> @@ -32,3 +32,43 @@ &display_panel {
>  &bq27441_fg {
>  	monitored-battery = <&battery>;
>  };
> +
> +&i2c4 {
> +	status = "okay";
> +
> +	max98927_codec: max98927@3a {

audio-codec
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation

> +		compatible = "maxim,max98927";
> +		reg = <0x3a>;
> +		#sound-dai-cells = <1>;
> +
> +		pinctrl-0 = <&speaker_default>;
> +		pinctrl-names = "default";
> +
> +		reset-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
> +
> +		vmon-slot-no = <1>;
> +		imon-slot-no = <0>;
> +	};
> +};
> +
> +&sound {
> +	model = "OnePlus 6";
> +	audio-routing =	"RX_BIAS", "MCLK",
> +			"AMIC2", "MIC BIAS2",
> +			"AMIC3", "MIC BIAS4",
> +			"AMIC4", "MIC BIAS1",
> +			"AMIC5", "MIC BIAS4";
> +
> +	speaker-dai-link {
> +		codec {
> +			sound-dai = <&max98927_codec 0>;
> +		};
> +	};
> +};
> +
> +&wcd9340 {
> +	qcom,micbias1-microvolt = <1800000>;
> +	qcom,micbias2-microvolt = <2700000>;
> +	qcom,micbias3-microvolt = <1800000>;
> +	qcom,micbias4-microvolt = <1800000>;
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> index 1b6b5bf368df..4b1a5d3c3713 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> @@ -29,10 +29,39 @@ &display_panel {
>  	compatible = "samsung,s6e3fc2x01";
>  };
>  
> +&i2c4 {
> +	/* nxp,tfa9894 @ 0x34 */

I don't think this is related to this patch.

> +};
> +
>  &bq27441_fg {
>  	monitored-battery = <&battery>;
>  };
>  
> +&sound {
> +	model = "OnePlus 6T";
> +	audio-routing = "RX_BIAS", "MCLK",
> +			"AMIC1", "MIC BIAS3",
> +			"AMIC2", "MIC BIAS2",
> +			"AMIC3", "MIC BIAS4",
> +			"AMIC4", "MIC BIAS1",
> +			"AMIC5", "MIC BIAS3";
> +
> +};
> +
> +/*
> + * The TFA9894 codec is currently unsupported.
> + * We need to delete the node to allow the soundcard
> + * to probe for headphones/earpiece.
> + */
> +/delete-node/ &speaker_playback;
> +
>  &rmi4_f12 {
>  	touchscreen-y-mm = <148>;
>  };
> +
> +&wcd9340 {
> +	qcom,micbias1-microvolt = <2700000>;
> +	qcom,micbias2-microvolt = <2700000>;
> +	qcom,micbias3-microvolt = <2700000>;
> +	qcom,micbias4-microvolt = <2700000>;
> +};

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
index 42cf4dd5ea28..76017fad4443 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
@@ -9,6 +9,8 @@ 
 
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
 
 #include "sdm845.dtsi"
 #include "pm8998.dtsi"
@@ -466,6 +468,44 @@  &pmi8998_rradc {
 	status = "okay";
 };
 
+&q6afedai {
+	qi2s@22 {
+		reg = <22>;
+		qcom,sd-lines = <1>;
+	};
+
+	qi2s@23 {
+		reg = <23>;
+		qcom,sd-lines = <0>;
+	};
+};
+
+&q6asmdai {
+	dai@0 {
+		reg = <0>;
+	};
+
+	dai@1 {
+		reg = <1>;
+	};
+
+	dai@2 {
+		reg = <2>;
+	};
+
+	dai@3 {
+		reg = <3>;
+	};
+
+	dai@4 {
+		reg = <4>;
+	};
+
+	dai@5 {
+		reg = <5>;
+	};
+};
+
 &qupv3_id_1 {
 	status = "okay";
 };
@@ -505,6 +545,140 @@  pinconf-rx {
 	};
 };
 
+&sound {
+	compatible = "qcom,sdm845-sndcard";
+	pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active>;
+	pinctrl-names = "default";
+
+	mm1-dai-link {
+		link-name = "MultiMedia1";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+		};
+	};
+
+	mm2-dai-link {
+		link-name = "MultiMedia2";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+		};
+	};
+
+	mm3-dai-link {
+		link-name = "MultiMedia3";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+		};
+	};
+
+	mm4-dai-link {
+		link-name = "MultiMedia4";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+		};
+	};
+
+	mm5-dai-link {
+		link-name = "MultiMedia5";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
+		};
+	};
+
+	mm6-dai-link {
+		link-name = "MultiMedia6";
+		cpu {
+			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
+		};
+	};
+
+	speaker_playback: speaker-dai-link {
+		link-name = "Speaker Playback";
+		cpu {
+			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+	};
+
+	slim1-dai-link {
+		link-name = "SLIM Playback 1";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_0_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 0>; /* AIF1_PB */
+		};
+	};
+
+	slimcap1-dai-link {
+		link-name = "SLIM Capture 1";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_0_TX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 1>; /* AIF1_CAP */
+		};
+	};
+
+	slim2-dai-link {
+		link-name = "SLIM Playback 2";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_1_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 2>; /* AIF2_PB */
+		};
+	};
+
+	slimcap2-dai-link {
+		link-name = "SLIM Capture 2";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_1_TX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 3>; /* AIF2_CAP */
+		};
+	};
+
+	slimcap3-dai-link {
+		link-name = "SLIM Capture 3";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_2_TX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 5>; /* AIF3_CAP */
+		};
+	};
+};
+
 &uart6 {
 	status = "okay";
 
@@ -634,6 +808,27 @@  mux {
 			input-enable;
 		};
 	};
+
+	speaker_default: speaker-default-state {
+		mux {
+			pins = "gpio69";
+			function = "gpio";
+			drive-strength = <16>;
+			bias-pull-up;
+			output-high;
+		};
+	};
+
+	wcd_default: wcd-default-state {
+		mux {
+			pins = "gpio54";
+			function = "gpio";
+
+			input-enable;
+			bias-pull-down;
+			drive-strength = <2>;
+		};
+	};
 };
 
 &venus {
@@ -641,6 +836,19 @@  &venus {
 	firmware-name = "qcom/sdm845/oneplus6/venus.mbn";
 };
 
+&wcd9340 {
+	pinctrl-0 = <&wcd_default>;
+	pinctrl-names = "default";
+	clock-names = "extclk";
+	clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
+	reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
+	vdd-buck-supply = <&vreg_s4a_1p8>;
+	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
+	vdd-tx-supply = <&vreg_s4a_1p8>;
+	vdd-rx-supply = <&vreg_s4a_1p8>;
+	vdd-io-supply = <&vreg_s4a_1p8>;
+};
+
 &wifi {
 	status = "okay";
 	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
index bf2cf92e8976..aae1a3a27144 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
@@ -32,3 +32,43 @@  &display_panel {
 &bq27441_fg {
 	monitored-battery = <&battery>;
 };
+
+&i2c4 {
+	status = "okay";
+
+	max98927_codec: max98927@3a {
+		compatible = "maxim,max98927";
+		reg = <0x3a>;
+		#sound-dai-cells = <1>;
+
+		pinctrl-0 = <&speaker_default>;
+		pinctrl-names = "default";
+
+		reset-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
+
+		vmon-slot-no = <1>;
+		imon-slot-no = <0>;
+	};
+};
+
+&sound {
+	model = "OnePlus 6";
+	audio-routing =	"RX_BIAS", "MCLK",
+			"AMIC2", "MIC BIAS2",
+			"AMIC3", "MIC BIAS4",
+			"AMIC4", "MIC BIAS1",
+			"AMIC5", "MIC BIAS4";
+
+	speaker-dai-link {
+		codec {
+			sound-dai = <&max98927_codec 0>;
+		};
+	};
+};
+
+&wcd9340 {
+	qcom,micbias1-microvolt = <1800000>;
+	qcom,micbias2-microvolt = <2700000>;
+	qcom,micbias3-microvolt = <1800000>;
+	qcom,micbias4-microvolt = <1800000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
index 1b6b5bf368df..4b1a5d3c3713 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
@@ -29,10 +29,39 @@  &display_panel {
 	compatible = "samsung,s6e3fc2x01";
 };
 
+&i2c4 {
+	/* nxp,tfa9894 @ 0x34 */
+};
+
 &bq27441_fg {
 	monitored-battery = <&battery>;
 };
 
+&sound {
+	model = "OnePlus 6T";
+	audio-routing = "RX_BIAS", "MCLK",
+			"AMIC1", "MIC BIAS3",
+			"AMIC2", "MIC BIAS2",
+			"AMIC3", "MIC BIAS4",
+			"AMIC4", "MIC BIAS1",
+			"AMIC5", "MIC BIAS3";
+
+};
+
+/*
+ * The TFA9894 codec is currently unsupported.
+ * We need to delete the node to allow the soundcard
+ * to probe for headphones/earpiece.
+ */
+/delete-node/ &speaker_playback;
+
 &rmi4_f12 {
 	touchscreen-y-mm = <148>;
 };
+
+&wcd9340 {
+	qcom,micbias1-microvolt = <2700000>;
+	qcom,micbias2-microvolt = <2700000>;
+	qcom,micbias3-microvolt = <2700000>;
+	qcom,micbias4-microvolt = <2700000>;
+};