M7350/kernel/arch/arm/boot/dts/qcom/msm8996-v2.dtsi

731 lines
19 KiB
Plaintext
Raw Normal View History

2024-09-09 08:57:42 +00:00
/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
* As a general rule, only version-specific property overrides should be placed
* inside this file. Common device definitions should be placed inside the
* msm8996.dtsi file.
*/
#include "msm8996.dtsi"
#include "msm8996-coresight-v2.dtsi"
#include "msm-arm-smmu-impl-defs-8996-v2.dtsi"
/ {
model = "Qualcomm Technologies, Inc. MSM 8996 v2";
qcom,msm-id = <246 0x20001>;
};
&clock_gcc {
compatible = "qcom,gcc-8996-v2";
};
&clock_debug {
compatible = "qcom,cc-debug-8996-v2";
};
&clock_mmss {
compatible = "qcom,mmsscc-8996-v2";
};
&clock_gpu {
compatible = "qcom,gpucc-8996-v2";
qcom,gfx3d_clk_src_v2-opp-handle = <&msm_gpu>;
qcom,gfxfreq-speedbin0 =
< 0 0 0 >,
< 125000000 3 4 >,
< 210000000 3 4 >,
< 300000000 3 4 >,
< 500000000 4 5 >,
< 604800000 5 7 >;
qcom,gfxfreq-mx-speedbin0 =
< 0 0 >,
< 125000000 4 >,
< 210000000 4 >,
< 300000000 4 >,
< 500000000 5 >,
< 604800000 7 >;
};
&gdsc_gpu_gx {
clock-names = "core_clk", "core_root_clk";
clocks = <&clock_gpu clk_gpu_gx_gfx3d_clk>,
<&clock_gpu clk_gfx3d_clk_src_v2>;
};
&pm8994_s11 {
regulator-max-microvolt = <1015000>;
/delete-property/ qcom,recal-mask;
};
&pm8994_s11_limit {
regulator-max-microvolt = <1015000>;
};
&apc_apm {
/delete-property/ qcom,clock-source-override;
};
&apcc_cpr {
compatible = "qcom,cpr3-msm8996-v2-hmss-regulator";
qcom,cpr-count-mode = <2>; /* Staggered */
/delete-property/ qcom,cpr-count-repeat;
/delete-property/ mem-acc-thread0-supply;
/delete-property/ mem-acc-thread1-supply;
/delete-property/ mem-acc-supply;
qcom,apm-ctrl = <&apc_apm>;
qcom,apm-threshold-voltage = <850000>;
qcom,apm-hysteresis-voltage = <5000>;
qcom,cpr-enable;
qcom,cpr-hw-closed-loop;
/delete-property/ qcom,cpr-aging-ref-voltage;
/delete-property/ proxy-supply;
thread@0 {
qcom,cpr-consecutive-down = <2>;
qcom,cpr-up-threshold = <0>;
};
thread@1 {
qcom,cpr-consecutive-down = <2>;
qcom,cpr-up-threshold = <0>;
};
};
&apc0_pwrcl_vreg {
regulator-min-microvolt = <1>;
regulator-max-microvolt = <19>;
qcom,cpr-fuse-corners = <5>;
qcom,cpr-fuse-combos = <4>;
/delete-property/ qcom,cpr-speed-bins;
/delete-property/ qcom,cpr-speed-bin-corners;
/delete-property/ qcom,uses-mem-acc;
qcom,cpr-corners = <19>;
qcom,ldo-max-voltage = <805000>;
qcom,cpr-corner-fmax-map = <1 2 6 11 19>;
qcom,cpr-voltage-ceiling =
<670000 670000 745000 745000 745000 745000 905000 905000
905000 905000 905000 1015000 1015000 1015000 1015000 1015000
1015000 1015000 1015000>;
qcom,cpr-voltage-floor =
<470000 470000 470000 470000 470000 470000 470000 470000
470000 470000 470000 470000 470000 470000 470000 470000
470000 470000 470000>;
qcom,cpr-floor-to-ceiling-max-range =
<80000 80000 80000 80000 80000 80000 80000 80000
80000 80000 80000 80000 80000 80000 80000 80000
80000 80000 80000>;
qcom,corner-frequencies =
<192000000 268800000 307200000 345600000 403200000
480000000 576000000 633600000 729600000 806400000
883200000 960000000 1017600000 1113600000 1190400000
1267200000 1344000000 1420800000 1459200000>;
qcom,cpr-ro-scaling-factor =
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0
0 0 0>,
< 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0
0 0 0>;
qcom,cpr-open-loop-voltage-fuse-adjustment =
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 0>;
qcom,cpr-closed-loop-voltage-fuse-adjustment =
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 0>;
/delete-property/ qcom,cpr-open-loop-voltage-adjustment;
/delete-property/ qcom,cpr-open-loop-voltage-min-diff;
/delete-property/ qcom,cpr-closed-loop-voltage-adjustment;
/delete-property/ qcom,cpr-aging-max-voltage-adjustment;
/delete-property/ qcom,cpr-aging-ref-corner;
/delete-property/ qcom,cpr-aging-ro-scaling-factor;
/delete-property/ qcom,allow-aging-voltage-adjustment;
};
&apc0_cbf_vreg {
regulator-min-microvolt = <1>;
regulator-max-microvolt = <10>;
qcom,cpr-fuse-corners = <5>;
qcom,cpr-fuse-combos = <4>;
/delete-property/ qcom,cpr-speed-bins;
/delete-property/ qcom,cpr-speed-bin-corners;
qcom,cpr-corners = <10>;
qcom,cpr-corner-fmax-map = <1 2 5 9 10>;
qcom,cpr-voltage-ceiling =
<605000 670000 745000 745000 745000 905000 905000 905000
905000 1015000>;
qcom,cpr-voltage-floor =
<470000 470000 470000 470000 470000 470000 470000 470000
470000 470000>;
qcom,cpr-floor-to-ceiling-max-range =
<80000 80000 80000 80000 80000 80000 80000 80000
80000 80000>;
qcom,corner-frequencies =
<150000000 307200000 384000000 499200000 595200000
691200000 787200000 883200000 960000000 1036800000>;
qcom,cpr-ro-scaling-factor =
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
0 0 0>,
< 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0
0 0 0>,
< 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0
0 0 0>;
qcom,cpr-open-loop-voltage-fuse-adjustment =
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 (-130000)>,
<0 0 0 0 (-130000)>;
qcom,cpr-closed-loop-voltage-fuse-adjustment =
<0 0 0 0 0>,
<0 0 0 0 0>,
<0 0 0 0 (-115000)>,
<0 0 0 0 (-115000)>;
/delete-property/ qcom,cpr-aging-max-voltage-adjustment;
/delete-property/ qcom,cpr-aging-ref-corner;
/delete-property/ qcom,cpr-aging-ro-scaling-factor;
/delete-property/ qcom,allow-aging-voltage-adjustment;
/delete-property/ qcom,proxy-consumer-enable;
/delete-property/ qcom,proxy-consumer-voltage;
};
&apc1_vreg {
regulator-min-microvolt = <1>;
regulator-max-microvolt = <18>;
qcom,cpr-fuse-corners = <5>;
qcom,cpr-fuse-combos = <4>;
/delete-property/ qcom,cpr-speed-bins;
/delete-property/ qcom,cpr-speed-bin-corners;
/delete-property/ qcom,uses-mem-acc;
qcom,cpr-corners = <18>;
qcom,ldo-max-voltage = <805000>;
qcom,cpr-corner-fmax-map = <1 3 5 11 18>;
qcom,cpr-voltage-ceiling =
<670000 670000 670000 745000 745000 905000 905000 905000
905000 905000 905000 1015000 1015000 1015000 1015000 1015000
1015000 1015000>;
qcom,cpr-voltage-floor =
<470000 470000 470000 470000 470000 470000 470000 470000
470000 470000 470000 470000 470000 470000 470000 470000
470000 470000>;
qcom,cpr-floor-to-ceiling-max-range =
<80000 80000 80000 80000 80000 80000 80000 80000
80000 80000 80000 80000 80000 80000 80000 80000
80000 80000>;
qcom,corner-frequencies =
<307200000 345600000 403200000 480000000 576000000
633600000 729600000 806400000 883200000 960000000
1017600000 1113600000 1190400000 1267200000 1344000000
1420800000 1497600000 1593600000>;
qcom,cpr-ro-scaling-factor =
< 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
0 0 0>,
< 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
0 0 0>,
< 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
0 0 0>,
< 0 0 0 0 2152 2237 2321 2337 2475 2469 2636 2612 0
0 0 0>,
< 0 0 0 0 2001 2102 2092 2090 2203 2210 2297 2297 0
0 0 0>;
qcom,cpr-open-loop-voltage-fuse-adjustment =
<0 0 0 5000 0>,
<0 0 0 5000 0>,
<0 0 0 0 0>,
<0 0 0 0 0>;
qcom,cpr-closed-loop-voltage-fuse-adjustment =
<0 0 0 20000 0>,
<0 0 0 20000 0>,
<0 0 0 0 0>,
<0 0 0 0 0>;
/delete-property/ qcom,cpr-open-loop-voltage-adjustment;
/delete-property/ qcom,cpr-open-loop-voltage-min-diff;
/delete-property/ qcom,cpr-closed-loop-voltage-adjustment;
/delete-property/ qcom,cpr-aging-max-voltage-adjustment;
/delete-property/ qcom,cpr-aging-ref-corner;
/delete-property/ qcom,cpr-aging-ro-scaling-factor;
/delete-property/ qcom,allow-aging-voltage-adjustment;
/delete-property/ qcom,cpr-dynamic-floor-corner;
};
&gfx_cpr {
system-supply = <&pm8994_s1_corner>;
qcom,cpr-enable;
/delete-property/ qcom,cpr-aging-ref-voltage;
};
&gfx_vreg {
regulator-min-microvolt = <2>;
regulator-max-microvolt = <5>;
qcom,cpr-fuse-corners = <4>;
qcom,cpr-fuse-combos = <8>;
qcom,cpr-corners = <5>;
qcom,cpr-corner-fmax-map = <2 3 4 5>;
qcom,cpr-voltage-ceiling =
<400000 670000 745000 905000 1015000>;
qcom,cpr-voltage-floor =
<400000 520000 520000 520000 520000>;
qcom,system-voltage = <2 2 2 2 4>;
qcom,mem-acc-voltage = <1 1 1 2 2>;
qcom,corner-frequencies =
<0 210000000 300000000 500000000 604800000>;
qcom,cpr-target-quotients =
< 0 0 0 0 249 232 0 394 0 422 0 0 0
0 0 0>,
< 0 0 0 0 249 232 0 394 0 422 0 0 0
0 0 0>,
< 0 0 0 0 400 363 0 565 0 603 0 0 0
0 0 0>,
< 0 0 0 0 669 601 0 851 0 905 0 0 0
0 0 0>,
< 0 0 0 0 899 806 0 1084 0 1149 0 0 0
0 0 0>;
qcom,cpr-ro-scaling-factor =
< 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
0 0 0>,
< 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
0 0 0>,
< 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
0 0 0>,
< 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
0 0 0>,
< 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
0 0 0>;
qcom,cpr-open-loop-voltage-fuse-adjustment =
<0 (-5000) (-30000) (-115000)>;
qcom,cpr-closed-loop-voltage-adjustment =
<0 0 0 (-10000) (-65000)>;
qcom,cpr-floor-to-ceiling-max-range =
<0 130000 40000 85000 85000>;
/delete-property/ qcom,cpr-fused-closed-loop-voltage-adjustment-map;
/delete-property/ qcom,cpr-aging-max-voltage-adjustment;
/delete-property/ qcom,cpr-aging-ref-corner;
/delete-property/ qcom,cpr-aging-ro-scaling-factor;
/delete-property/ qcom,allow-aging-voltage-adjustment;
};
&kryo0_vreg {
regulator-min-microvolt = <468864>;
regulator-max-microvolt = <808896>;
qcom,vref-functional-step-voltage = <4048>;
qcom,vref-functional-min-voltage = <294800>;
qcom,vref-retention-step-voltage = <4462>;
qcom,vref-retention-min-voltage = <324950>;
qcom,ldo-config-init = <0x31f0e471>;
};
&kryo0_retention_vreg {
regulator-min-microvolt = <467734>;
regulator-max-microvolt = <891624>;
};
&kryo1_vreg {
regulator-min-microvolt = <468864>;
regulator-max-microvolt = <808896>;
qcom,vref-functional-step-voltage = <4048>;
qcom,vref-functional-min-voltage = <294800>;
qcom,vref-retention-step-voltage = <4462>;
qcom,vref-retention-min-voltage = <324950>;
qcom,ldo-config-init = <0x31f0e471>;
};
&kryo1_retention_vreg {
regulator-min-microvolt = <467734>;
regulator-max-microvolt = <891624>;
};
&apc0_pwrcl_mem_acc_vreg {
status = "disabled";
};
&apc1_perfcl_mem_acc_vreg {
status = "disabled";
};
&apcc_l3_mem_acc_vreg {
status = "disabled";
};
/* GPU overrides */
&msm_gpu {
/* Updated chip ID */
qcom,chipid = <0x05030001>;
qcom,initial-pwrlevel = <3>;
qcom,bus-width = <32>;
/* Quirks */
qcom,gpu-quirk-two-pass-use-wfi;
qcom,gpu-quirk-iommu-sync;
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <604800000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <500000000>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <300000000>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <210000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <125000000>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <27000000>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
&mdss_mdp {
gdsc-venus-supply = <&gdsc_venus>;
};
&mdss_dsi {
gdsc-venus-supply = <&gdsc_venus>;
qcom,core-supply-entries {
#address-cells = <1>;
#size-cells = <0>;
qcom,core-supply-entry@0 {
reg = <0>;
qcom,supply-name = "gdsc-venus";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
qcom,core-supply-entry@1 {
reg = <1>;
qcom,supply-name = "gdsc";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
};
};
&mdss_hdmi_tx {
hpd-gdsc-venus-supply = <&gdsc_venus>;
qcom,supply-names = "hpd-gdsc-venus", "hpd-gdsc";
qcom,min-voltage-level = <0 0>;
qcom,max-voltage-level = <0 0>;
qcom,enable-load = <0 0>;
qcom,disable-load = <0 0>;
};
&mdss_dsi0_pll {
gdsc-venus-supply = <&gdsc_venus>;
qcom,platform-supply-entries {
#address-cells = <1>;
#size-cells = <0>;
qcom,platform-supply-entry@0 {
reg = <0>;
qcom,supply-name = "gdsc-venus";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
qcom,platform-supply-entry@1 {
reg = <1>;
qcom,supply-name = "gdsc";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
};
};
&mdss_dsi1_pll {
gdsc-venus-supply = <&gdsc_venus>;
qcom,platform-supply-entries {
#address-cells = <1>;
#size-cells = <0>;
qcom,platform-supply-entry@0 {
reg = <0>;
qcom,supply-name = "gdsc-venus";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
qcom,platform-supply-entry@1 {
reg = <1>;
qcom,supply-name = "gdsc";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
};
};
&mdss_hdmi_pll {
gdsc-venus-supply = <&gdsc_venus>;
qcom,platform-supply-entries {
#address-cells = <1>;
#size-cells = <0>;
qcom,platform-supply-entry@0 {
reg = <0>;
qcom,supply-name = "gdsc-venus";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
qcom,platform-supply-entry@1 {
reg = <1>;
qcom,supply-name = "gdsc";
qcom,supply-min-voltage = <0>;
qcom,supply-max-voltage = <0>;
qcom,supply-enable-load = <0>;
qcom,supply-disable-load = <0>;
};
qcom,platform-supply-entry@2 {
reg = <2>;
qcom,supply-name = "vddio";
qcom,supply-min-voltage = <1800000>;
qcom,supply-max-voltage = <1800000>;
qcom,supply-enable-load = <100000>;
qcom,supply-disable-load = <100>;
};
qcom,platform-supply-entry@3 {
reg = <3>;
qcom,supply-name = "vcca";
qcom,supply-min-voltage = <925000>;
qcom,supply-max-voltage = <925000>;
qcom,supply-enable-load = <10000>;
qcom,supply-disable-load = <100>;
};
};
};
&gdsc_venus {
proxy-supply = <&gdsc_venus>;
qcom,proxy-consumer-enable;
};
&soc {
tsens1: tsens@4ad000 {
compatible = "qcom,msm8996-tsens";
reg = <0x4ac000 0x2000>,
<0x75230 0x1000>;
reg-names = "tsens_physical", "tsens_eeprom_physical";
interrupts = <0 184 0>, <0 430 0>;
interrupt-names = "tsens-upper-lower", "tsens-critical";
qcom,client-id = <13 14 15 16 17 18 19 20>;
qcom,sensor-id = <1 6 7 0 2 3 4 5>;
qcom,sensors = <8>;
qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200>;
};
ipa_hw: qcom,ipa@680000 {
compatible = "qcom,ipa";
reg = <0x680000 0x4effc>,
<0x684000 0x26934>;
reg-names = "ipa-base", "bam-base";
interrupts = <0 333 0>,
<0 432 0>;
interrupt-names = "ipa-irq", "bam-irq";
qcom,ipa-hw-ver = <5>; /* IPA core version = IPAv2.5 */
qcom,ipa-hw-mode = <0>;
qcom,ee = <0>;
qcom,use-ipa-tethering-bridge;
qcom,ipa-bam-remote-mode;
qcom,modem-cfg-emb-pipe-flt;
clocks = <&clock_gcc clk_ipa_clk>;
clock-names = "core_clk";
qcom,use-dma-zone;
};
qcom,msm-thermal{
qcom,vdd-gfx-rstr{
qcom,levels = <4 5 5>; /* Nominal, Turbo, Turbo */
};
};
jtag_mm0: jtagmm@3840000 {
compatible = "qcom,jtagv8-mm";
reg = <0x3840000 0x1000>;
reg-names = "etm-base";
clocks = <&clock_gcc clk_qdss_clk>,
<&clock_gcc clk_qdss_a_clk>;
clock-names = "core_clk", "core_a_clk";
qcom,coresight-jtagmm-cpu = <&CPU0>;
qcom,si-enable;
qcom,save-restore-disable;
};
jtag_mm1: jtagmm@3940000 {
compatible = "qcom,jtagv8-mm";
reg = <0x3940000 0x1000>;
reg-names = "etm-base";
clocks = <&clock_gcc clk_qdss_clk>,
<&clock_gcc clk_qdss_a_clk>;
clock-names = "core_clk", "core_a_clk";
qcom,coresight-jtagmm-cpu = <&CPU1>;
qcom,si-enable;
qcom,save-restore-disable;
};
jtag_mm2: jtagmm@3a40000 {
compatible = "qcom,jtagv8-mm";
reg = <0x3a40000 0x1000>;
reg-names = "etm-base";
clocks = <&clock_gcc clk_qdss_clk>,
<&clock_gcc clk_qdss_a_clk>;
clock-names = "core_clk", "core_a_clk";
qcom,coresight-jtagmm-cpu = <&CPU2>;
qcom,si-enable;
qcom,save-restore-disable;
};
jtag_mm3: jtagmm@3b40000 {
compatible = "qcom,jtagv8-mm";
reg = <0x3b40000 0x1000>;
reg-names = "etm-base";
clocks = <&clock_gcc clk_qdss_clk>,
<&clock_gcc clk_qdss_a_clk>;
clock-names = "core_clk", "core_a_clk";
qcom,coresight-jtagmm-cpu = <&CPU3>;
qcom,si-enable;
qcom,save-restore-disable;
};
};
&tsens0 {
interrupts = <0 458 0>, <0 445 0>;
qcom,sensors = <13>;
qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200>;
};
&mdss_hdmi_pll {
compatible = "qcom,mdss_hdmi_pll_8996_v2";
};
&mdss_hdmi_tx {
status = "ok";
};
&ssphy {
qcom,qmp-misc-config;
};