1462c5c0aSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2462c5c0aSKrzysztof Kozlowski%YAML 1.2 3462c5c0aSKrzysztof Kozlowski--- 4462c5c0aSKrzysztof Kozlowski$id: http://devicetree.org/schemas/ufs/qcom,ufs.yaml# 5462c5c0aSKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml# 6462c5c0aSKrzysztof Kozlowski 7462c5c0aSKrzysztof Kozlowskititle: Qualcomm Universal Flash Storage (UFS) Controller 8462c5c0aSKrzysztof Kozlowski 9462c5c0aSKrzysztof Kozlowskimaintainers: 10462c5c0aSKrzysztof Kozlowski - Bjorn Andersson <bjorn.andersson@linaro.org> 11462c5c0aSKrzysztof Kozlowski - Andy Gross <agross@kernel.org> 12462c5c0aSKrzysztof Kozlowski 13462c5c0aSKrzysztof Kozlowski# Select only our matches, not all jedec,ufs-2.0 14462c5c0aSKrzysztof Kozlowskiselect: 15462c5c0aSKrzysztof Kozlowski properties: 16462c5c0aSKrzysztof Kozlowski compatible: 17462c5c0aSKrzysztof Kozlowski contains: 18462c5c0aSKrzysztof Kozlowski const: qcom,ufshc 19462c5c0aSKrzysztof Kozlowski required: 20462c5c0aSKrzysztof Kozlowski - compatible 21462c5c0aSKrzysztof Kozlowski 22462c5c0aSKrzysztof Kozlowskiproperties: 23462c5c0aSKrzysztof Kozlowski compatible: 24462c5c0aSKrzysztof Kozlowski items: 25462c5c0aSKrzysztof Kozlowski - enum: 26462c5c0aSKrzysztof Kozlowski - qcom,msm8994-ufshc 27462c5c0aSKrzysztof Kozlowski - qcom,msm8996-ufshc 28462c5c0aSKrzysztof Kozlowski - qcom,msm8998-ufshc 291b093633SSayali Lokhande - qcom,qcs615-ufshc 30c602a04bSXin Liu - qcom,qcs8300-ufshc 318f0c17bfSBartosz Golaszewski - qcom,sa8775p-ufshc 327fb5aafcSKrzysztof Kozlowski - qcom,sc7180-ufshc 3398bfeda3SNitin Rawat - qcom,sc7280-ufshc 34ad91c1d7SKrzysztof Kozlowski - qcom,sc8180x-ufshc 352f3b3200SJohan Hovold - qcom,sc8280xp-ufshc 36462c5c0aSKrzysztof Kozlowski - qcom,sdm845-ufshc 37a11eaed3SIskren Chernev - qcom,sm6115-ufshc 38b5237d0bSKrzysztof Kozlowski - qcom,sm6125-ufshc 393d8fa7a2SLuca Weiss - qcom,sm6350-ufshc 40462c5c0aSKrzysztof Kozlowski - qcom,sm8150-ufshc 41462c5c0aSKrzysztof Kozlowski - qcom,sm8250-ufshc 42462c5c0aSKrzysztof Kozlowski - qcom,sm8350-ufshc 43462c5c0aSKrzysztof Kozlowski - qcom,sm8450-ufshc 44b8c20389SAbel Vesa - qcom,sm8550-ufshc 45e439e4a6SNeil Armstrong - qcom,sm8650-ufshc 46*7727a9d4SNitin Rawat - qcom,sm8750-ufshc 47462c5c0aSKrzysztof Kozlowski - const: qcom,ufshc 48462c5c0aSKrzysztof Kozlowski - const: jedec,ufs-2.0 49462c5c0aSKrzysztof Kozlowski 50462c5c0aSKrzysztof Kozlowski clocks: 517fb5aafcSKrzysztof Kozlowski minItems: 7 52a9a34fc7SDmitry Baryshkov maxItems: 9 53462c5c0aSKrzysztof Kozlowski 54462c5c0aSKrzysztof Kozlowski clock-names: 557fb5aafcSKrzysztof Kozlowski minItems: 7 56a9a34fc7SDmitry Baryshkov maxItems: 9 57462c5c0aSKrzysztof Kozlowski 5885e182b4SJohan Hovold dma-coherent: true 5985e182b4SJohan Hovold 60462c5c0aSKrzysztof Kozlowski interconnects: 61462c5c0aSKrzysztof Kozlowski minItems: 2 62462c5c0aSKrzysztof Kozlowski maxItems: 2 63462c5c0aSKrzysztof Kozlowski 64462c5c0aSKrzysztof Kozlowski interconnect-names: 65462c5c0aSKrzysztof Kozlowski items: 66462c5c0aSKrzysztof Kozlowski - const: ufs-ddr 67462c5c0aSKrzysztof Kozlowski - const: cpu-ufs 68462c5c0aSKrzysztof Kozlowski 69462c5c0aSKrzysztof Kozlowski iommus: 70462c5c0aSKrzysztof Kozlowski minItems: 1 71462c5c0aSKrzysztof Kozlowski maxItems: 2 72462c5c0aSKrzysztof Kozlowski 73462c5c0aSKrzysztof Kozlowski phys: 74462c5c0aSKrzysztof Kozlowski maxItems: 1 75462c5c0aSKrzysztof Kozlowski 76462c5c0aSKrzysztof Kozlowski phy-names: 77462c5c0aSKrzysztof Kozlowski items: 78462c5c0aSKrzysztof Kozlowski - const: ufsphy 79462c5c0aSKrzysztof Kozlowski 80462c5c0aSKrzysztof Kozlowski power-domains: 81462c5c0aSKrzysztof Kozlowski maxItems: 1 82462c5c0aSKrzysztof Kozlowski 8329a6d121SAbel Vesa qcom,ice: 8429a6d121SAbel Vesa $ref: /schemas/types.yaml#/definitions/phandle 8529a6d121SAbel Vesa description: phandle to the Inline Crypto Engine node 8629a6d121SAbel Vesa 87462c5c0aSKrzysztof Kozlowski reg: 88462c5c0aSKrzysztof Kozlowski minItems: 1 89462c5c0aSKrzysztof Kozlowski maxItems: 2 90462c5c0aSKrzysztof Kozlowski 917839d566SLuca Weiss reg-names: 927839d566SLuca Weiss items: 937839d566SLuca Weiss - const: std 947839d566SLuca Weiss - const: ice 957839d566SLuca Weiss 968ffbaa98SKrzysztof Kozlowski required-opps: 978ffbaa98SKrzysztof Kozlowski maxItems: 1 988ffbaa98SKrzysztof Kozlowski 99462c5c0aSKrzysztof Kozlowski resets: 100462c5c0aSKrzysztof Kozlowski maxItems: 1 101462c5c0aSKrzysztof Kozlowski 102462c5c0aSKrzysztof Kozlowski '#reset-cells': 103462c5c0aSKrzysztof Kozlowski const: 1 104462c5c0aSKrzysztof Kozlowski 105462c5c0aSKrzysztof Kozlowski reset-names: 106462c5c0aSKrzysztof Kozlowski items: 107462c5c0aSKrzysztof Kozlowski - const: rst 108462c5c0aSKrzysztof Kozlowski 109462c5c0aSKrzysztof Kozlowski reset-gpios: 110462c5c0aSKrzysztof Kozlowski maxItems: 1 111462c5c0aSKrzysztof Kozlowski description: 112462c5c0aSKrzysztof Kozlowski GPIO connected to the RESET pin of the UFS memory device. 113462c5c0aSKrzysztof Kozlowski 114462c5c0aSKrzysztof Kozlowskirequired: 115462c5c0aSKrzysztof Kozlowski - compatible 116462c5c0aSKrzysztof Kozlowski - reg 117462c5c0aSKrzysztof Kozlowski 118462c5c0aSKrzysztof KozlowskiallOf: 119462c5c0aSKrzysztof Kozlowski - $ref: ufs-common.yaml 120462c5c0aSKrzysztof Kozlowski 121462c5c0aSKrzysztof Kozlowski - if: 122462c5c0aSKrzysztof Kozlowski properties: 123462c5c0aSKrzysztof Kozlowski compatible: 124462c5c0aSKrzysztof Kozlowski contains: 125462c5c0aSKrzysztof Kozlowski enum: 1267fb5aafcSKrzysztof Kozlowski - qcom,sc7180-ufshc 1277fb5aafcSKrzysztof Kozlowski then: 1287fb5aafcSKrzysztof Kozlowski properties: 1297fb5aafcSKrzysztof Kozlowski clocks: 1307fb5aafcSKrzysztof Kozlowski minItems: 7 1317fb5aafcSKrzysztof Kozlowski maxItems: 7 1327fb5aafcSKrzysztof Kozlowski clock-names: 1337fb5aafcSKrzysztof Kozlowski items: 1347fb5aafcSKrzysztof Kozlowski - const: core_clk 1357fb5aafcSKrzysztof Kozlowski - const: bus_aggr_clk 1367fb5aafcSKrzysztof Kozlowski - const: iface_clk 1377fb5aafcSKrzysztof Kozlowski - const: core_clk_unipro 1387fb5aafcSKrzysztof Kozlowski - const: ref_clk 1397fb5aafcSKrzysztof Kozlowski - const: tx_lane0_sync_clk 1407fb5aafcSKrzysztof Kozlowski - const: rx_lane0_sync_clk 1417fb5aafcSKrzysztof Kozlowski reg: 1427fb5aafcSKrzysztof Kozlowski maxItems: 1 1437fb5aafcSKrzysztof Kozlowski reg-names: 1447fb5aafcSKrzysztof Kozlowski maxItems: 1 1457fb5aafcSKrzysztof Kozlowski 1467fb5aafcSKrzysztof Kozlowski - if: 1477fb5aafcSKrzysztof Kozlowski properties: 1487fb5aafcSKrzysztof Kozlowski compatible: 1497fb5aafcSKrzysztof Kozlowski contains: 1507fb5aafcSKrzysztof Kozlowski enum: 151462c5c0aSKrzysztof Kozlowski - qcom,msm8998-ufshc 152c602a04bSXin Liu - qcom,qcs8300-ufshc 1538f0c17bfSBartosz Golaszewski - qcom,sa8775p-ufshc 15498bfeda3SNitin Rawat - qcom,sc7280-ufshc 155ad91c1d7SKrzysztof Kozlowski - qcom,sc8180x-ufshc 1562f3b3200SJohan Hovold - qcom,sc8280xp-ufshc 157462c5c0aSKrzysztof Kozlowski - qcom,sm8250-ufshc 158462c5c0aSKrzysztof Kozlowski - qcom,sm8350-ufshc 159462c5c0aSKrzysztof Kozlowski - qcom,sm8450-ufshc 160b8c20389SAbel Vesa - qcom,sm8550-ufshc 161e439e4a6SNeil Armstrong - qcom,sm8650-ufshc 162*7727a9d4SNitin Rawat - qcom,sm8750-ufshc 163462c5c0aSKrzysztof Kozlowski then: 164462c5c0aSKrzysztof Kozlowski properties: 165462c5c0aSKrzysztof Kozlowski clocks: 166462c5c0aSKrzysztof Kozlowski minItems: 8 167462c5c0aSKrzysztof Kozlowski maxItems: 8 168462c5c0aSKrzysztof Kozlowski clock-names: 169462c5c0aSKrzysztof Kozlowski items: 170462c5c0aSKrzysztof Kozlowski - const: core_clk 171462c5c0aSKrzysztof Kozlowski - const: bus_aggr_clk 172462c5c0aSKrzysztof Kozlowski - const: iface_clk 173462c5c0aSKrzysztof Kozlowski - const: core_clk_unipro 174462c5c0aSKrzysztof Kozlowski - const: ref_clk 175462c5c0aSKrzysztof Kozlowski - const: tx_lane0_sync_clk 176462c5c0aSKrzysztof Kozlowski - const: rx_lane0_sync_clk 177462c5c0aSKrzysztof Kozlowski - const: rx_lane1_sync_clk 178462c5c0aSKrzysztof Kozlowski reg: 179462c5c0aSKrzysztof Kozlowski minItems: 1 180462c5c0aSKrzysztof Kozlowski maxItems: 1 1817839d566SLuca Weiss reg-names: 1827839d566SLuca Weiss maxItems: 1 183462c5c0aSKrzysztof Kozlowski 184462c5c0aSKrzysztof Kozlowski - if: 185462c5c0aSKrzysztof Kozlowski properties: 186462c5c0aSKrzysztof Kozlowski compatible: 187462c5c0aSKrzysztof Kozlowski contains: 188462c5c0aSKrzysztof Kozlowski enum: 189462c5c0aSKrzysztof Kozlowski - qcom,sdm845-ufshc 1903d8fa7a2SLuca Weiss - qcom,sm6350-ufshc 191462c5c0aSKrzysztof Kozlowski - qcom,sm8150-ufshc 192462c5c0aSKrzysztof Kozlowski then: 193462c5c0aSKrzysztof Kozlowski properties: 194462c5c0aSKrzysztof Kozlowski clocks: 195462c5c0aSKrzysztof Kozlowski minItems: 9 196462c5c0aSKrzysztof Kozlowski maxItems: 9 197462c5c0aSKrzysztof Kozlowski clock-names: 198462c5c0aSKrzysztof Kozlowski items: 199462c5c0aSKrzysztof Kozlowski - const: core_clk 200462c5c0aSKrzysztof Kozlowski - const: bus_aggr_clk 201462c5c0aSKrzysztof Kozlowski - const: iface_clk 202462c5c0aSKrzysztof Kozlowski - const: core_clk_unipro 203462c5c0aSKrzysztof Kozlowski - const: ref_clk 204462c5c0aSKrzysztof Kozlowski - const: tx_lane0_sync_clk 205462c5c0aSKrzysztof Kozlowski - const: rx_lane0_sync_clk 206462c5c0aSKrzysztof Kozlowski - const: rx_lane1_sync_clk 207462c5c0aSKrzysztof Kozlowski - const: ice_core_clk 208462c5c0aSKrzysztof Kozlowski reg: 209462c5c0aSKrzysztof Kozlowski minItems: 2 210462c5c0aSKrzysztof Kozlowski maxItems: 2 2117839d566SLuca Weiss reg-names: 2127839d566SLuca Weiss minItems: 2 2137839d566SLuca Weiss required: 2147839d566SLuca Weiss - reg-names 215462c5c0aSKrzysztof Kozlowski 216462c5c0aSKrzysztof Kozlowski - if: 217462c5c0aSKrzysztof Kozlowski properties: 218462c5c0aSKrzysztof Kozlowski compatible: 219462c5c0aSKrzysztof Kozlowski contains: 220462c5c0aSKrzysztof Kozlowski enum: 221462c5c0aSKrzysztof Kozlowski - qcom,msm8996-ufshc 222462c5c0aSKrzysztof Kozlowski then: 223462c5c0aSKrzysztof Kozlowski properties: 224462c5c0aSKrzysztof Kozlowski clocks: 225a9a34fc7SDmitry Baryshkov minItems: 9 226a9a34fc7SDmitry Baryshkov maxItems: 9 227462c5c0aSKrzysztof Kozlowski clock-names: 228462c5c0aSKrzysztof Kozlowski items: 229462c5c0aSKrzysztof Kozlowski - const: core_clk 230462c5c0aSKrzysztof Kozlowski - const: bus_clk 231462c5c0aSKrzysztof Kozlowski - const: bus_aggr_clk 232462c5c0aSKrzysztof Kozlowski - const: iface_clk 233462c5c0aSKrzysztof Kozlowski - const: core_clk_unipro 234462c5c0aSKrzysztof Kozlowski - const: core_clk_ice 235462c5c0aSKrzysztof Kozlowski - const: ref_clk 236462c5c0aSKrzysztof Kozlowski - const: tx_lane0_sync_clk 237462c5c0aSKrzysztof Kozlowski - const: rx_lane0_sync_clk 238462c5c0aSKrzysztof Kozlowski reg: 239462c5c0aSKrzysztof Kozlowski minItems: 1 240462c5c0aSKrzysztof Kozlowski maxItems: 1 2417839d566SLuca Weiss reg-names: 2427839d566SLuca Weiss maxItems: 1 243462c5c0aSKrzysztof Kozlowski 244a11eaed3SIskren Chernev - if: 245a11eaed3SIskren Chernev properties: 246a11eaed3SIskren Chernev compatible: 247a11eaed3SIskren Chernev contains: 248a11eaed3SIskren Chernev enum: 2491b093633SSayali Lokhande - qcom,qcs615-ufshc 250a11eaed3SIskren Chernev - qcom,sm6115-ufshc 251b5237d0bSKrzysztof Kozlowski - qcom,sm6125-ufshc 252a11eaed3SIskren Chernev then: 253a11eaed3SIskren Chernev properties: 254a11eaed3SIskren Chernev clocks: 255a11eaed3SIskren Chernev minItems: 8 256a11eaed3SIskren Chernev maxItems: 8 257a11eaed3SIskren Chernev clock-names: 258a11eaed3SIskren Chernev items: 259a11eaed3SIskren Chernev - const: core_clk 260a11eaed3SIskren Chernev - const: bus_aggr_clk 261a11eaed3SIskren Chernev - const: iface_clk 262a11eaed3SIskren Chernev - const: core_clk_unipro 263a11eaed3SIskren Chernev - const: ref_clk 264a11eaed3SIskren Chernev - const: tx_lane0_sync_clk 265a11eaed3SIskren Chernev - const: rx_lane0_sync_clk 266a11eaed3SIskren Chernev - const: ice_core_clk 267a11eaed3SIskren Chernev reg: 268a11eaed3SIskren Chernev minItems: 2 269a11eaed3SIskren Chernev maxItems: 2 270a11eaed3SIskren Chernev reg-names: 271a11eaed3SIskren Chernev minItems: 2 272a11eaed3SIskren Chernev required: 273a11eaed3SIskren Chernev - reg-names 274a11eaed3SIskren Chernev 275462c5c0aSKrzysztof Kozlowski # TODO: define clock bindings for qcom,msm8994-ufshc 276462c5c0aSKrzysztof Kozlowski 27729a6d121SAbel Vesa - if: 2789b7c13b8SAbel Vesa required: 2799b7c13b8SAbel Vesa - qcom,ice 28029a6d121SAbel Vesa then: 28129a6d121SAbel Vesa properties: 28229a6d121SAbel Vesa reg: 28329a6d121SAbel Vesa maxItems: 1 28429a6d121SAbel Vesa clocks: 2857fb5aafcSKrzysztof Kozlowski minItems: 7 28629a6d121SAbel Vesa maxItems: 8 28729a6d121SAbel Vesa else: 28829a6d121SAbel Vesa properties: 28929a6d121SAbel Vesa reg: 2909b7c13b8SAbel Vesa minItems: 1 29129a6d121SAbel Vesa maxItems: 2 29229a6d121SAbel Vesa clocks: 2937fb5aafcSKrzysztof Kozlowski minItems: 7 294a9a34fc7SDmitry Baryshkov maxItems: 9 29529a6d121SAbel Vesa 296462c5c0aSKrzysztof KozlowskiunevaluatedProperties: false 297462c5c0aSKrzysztof Kozlowski 298462c5c0aSKrzysztof Kozlowskiexamples: 299462c5c0aSKrzysztof Kozlowski - | 300462c5c0aSKrzysztof Kozlowski #include <dt-bindings/clock/qcom,gcc-sm8450.h> 301462c5c0aSKrzysztof Kozlowski #include <dt-bindings/clock/qcom,rpmh.h> 302462c5c0aSKrzysztof Kozlowski #include <dt-bindings/gpio/gpio.h> 303462c5c0aSKrzysztof Kozlowski #include <dt-bindings/interconnect/qcom,sm8450.h> 304462c5c0aSKrzysztof Kozlowski #include <dt-bindings/interrupt-controller/arm-gic.h> 305462c5c0aSKrzysztof Kozlowski 306462c5c0aSKrzysztof Kozlowski soc { 307462c5c0aSKrzysztof Kozlowski #address-cells = <2>; 308462c5c0aSKrzysztof Kozlowski #size-cells = <2>; 309462c5c0aSKrzysztof Kozlowski 310462c5c0aSKrzysztof Kozlowski ufs@1d84000 { 311462c5c0aSKrzysztof Kozlowski compatible = "qcom,sm8450-ufshc", "qcom,ufshc", 312462c5c0aSKrzysztof Kozlowski "jedec,ufs-2.0"; 313462c5c0aSKrzysztof Kozlowski reg = <0 0x01d84000 0 0x3000>; 314462c5c0aSKrzysztof Kozlowski interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; 315462c5c0aSKrzysztof Kozlowski phys = <&ufs_mem_phy_lanes>; 316462c5c0aSKrzysztof Kozlowski phy-names = "ufsphy"; 317462c5c0aSKrzysztof Kozlowski lanes-per-direction = <2>; 318462c5c0aSKrzysztof Kozlowski #reset-cells = <1>; 319462c5c0aSKrzysztof Kozlowski resets = <&gcc GCC_UFS_PHY_BCR>; 320462c5c0aSKrzysztof Kozlowski reset-names = "rst"; 321462c5c0aSKrzysztof Kozlowski reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>; 322462c5c0aSKrzysztof Kozlowski 323462c5c0aSKrzysztof Kozlowski vcc-supply = <&vreg_l7b_2p5>; 324462c5c0aSKrzysztof Kozlowski vcc-max-microamp = <1100000>; 325462c5c0aSKrzysztof Kozlowski vccq-supply = <&vreg_l9b_1p2>; 326462c5c0aSKrzysztof Kozlowski vccq-max-microamp = <1200000>; 327462c5c0aSKrzysztof Kozlowski 328462c5c0aSKrzysztof Kozlowski power-domains = <&gcc UFS_PHY_GDSC>; 329462c5c0aSKrzysztof Kozlowski iommus = <&apps_smmu 0xe0 0x0>; 330462c5c0aSKrzysztof Kozlowski interconnects = <&aggre1_noc MASTER_UFS_MEM &mc_virt SLAVE_EBI1>, 331462c5c0aSKrzysztof Kozlowski <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_UFS_MEM_CFG>; 332462c5c0aSKrzysztof Kozlowski interconnect-names = "ufs-ddr", "cpu-ufs"; 333462c5c0aSKrzysztof Kozlowski 334462c5c0aSKrzysztof Kozlowski clock-names = "core_clk", 335462c5c0aSKrzysztof Kozlowski "bus_aggr_clk", 336462c5c0aSKrzysztof Kozlowski "iface_clk", 337462c5c0aSKrzysztof Kozlowski "core_clk_unipro", 338462c5c0aSKrzysztof Kozlowski "ref_clk", 339462c5c0aSKrzysztof Kozlowski "tx_lane0_sync_clk", 340462c5c0aSKrzysztof Kozlowski "rx_lane0_sync_clk", 341462c5c0aSKrzysztof Kozlowski "rx_lane1_sync_clk"; 342462c5c0aSKrzysztof Kozlowski clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, 343462c5c0aSKrzysztof Kozlowski <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, 344462c5c0aSKrzysztof Kozlowski <&gcc GCC_UFS_PHY_AHB_CLK>, 345462c5c0aSKrzysztof Kozlowski <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, 346462c5c0aSKrzysztof Kozlowski <&rpmhcc RPMH_CXO_CLK>, 347462c5c0aSKrzysztof Kozlowski <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, 348462c5c0aSKrzysztof Kozlowski <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, 349462c5c0aSKrzysztof Kozlowski <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; 350462c5c0aSKrzysztof Kozlowski freq-table-hz = <75000000 300000000>, 351462c5c0aSKrzysztof Kozlowski <0 0>, 352462c5c0aSKrzysztof Kozlowski <0 0>, 353462c5c0aSKrzysztof Kozlowski <75000000 300000000>, 354462c5c0aSKrzysztof Kozlowski <75000000 300000000>, 355462c5c0aSKrzysztof Kozlowski <0 0>, 356462c5c0aSKrzysztof Kozlowski <0 0>, 357462c5c0aSKrzysztof Kozlowski <0 0>; 358e95094d0SLuca Weiss qcom,ice = <&ice>; 359462c5c0aSKrzysztof Kozlowski }; 360462c5c0aSKrzysztof Kozlowski }; 361