Commit 1839533f authored by Tero Kristo's avatar Tero Kristo Committed by Tony Lindgren

ARM: dts: dra7: add clkctrl nodes

Add clkctrl nodes for DRA7 SoC. These are going to be acting as
replacement for part of the existing clock data and the existing
clkctrl hooks under hwmod data.

This patch also removes any obsolete clock nodes, and reroutes all users
for these to use the new clkctrl clocks instead.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 460c4961
...@@ -554,7 +554,7 @@ &pcie1_ep { ...@@ -554,7 +554,7 @@ &pcie1_ep {
&mcasp3 { &mcasp3 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
assigned-clocks = <&mcasp3_ahclkx_mux>; assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
assigned-clock-parents = <&sys_clkin2>; assigned-clock-parents = <&sys_clkin2>;
status = "okay"; status = "okay";
......
...@@ -204,7 +204,7 @@ &usb2 { ...@@ -204,7 +204,7 @@ &usb2 {
&atl { &atl {
assigned-clocks = <&abe_dpll_sys_clk_mux>, assigned-clocks = <&abe_dpll_sys_clk_mux>,
<&atl_gfclk_mux>, <&atl_clkctrl DRA7_ATL_CLKCTRL 26>,
<&dpll_abe_ck>, <&dpll_abe_ck>,
<&dpll_abe_m2x2_ck>, <&dpll_abe_m2x2_ck>,
<&atl_clkin2_ck>; <&atl_clkin2_ck>;
...@@ -222,7 +222,7 @@ atl2 { ...@@ -222,7 +222,7 @@ atl2 {
&mcasp3 { &mcasp3 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
assigned-clocks = <&mcasp3_ahclkx_mux>; assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
assigned-clock-parents = <&atl_clkin2_ck>; assigned-clock-parents = <&atl_clkin2_ck>;
status = "okay"; status = "okay";
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/dra.h> #include <dt-bindings/pinctrl/dra.h>
#include <dt-bindings/clock/dra7.h>
#define MAX_SOURCES 400 #define MAX_SOURCES 400
...@@ -887,7 +888,7 @@ timer1: timer@4ae18000 { ...@@ -887,7 +888,7 @@ timer1: timer@4ae18000 {
ti,hwmods = "timer1"; ti,hwmods = "timer1";
ti,timer-alwon; ti,timer-alwon;
clock-names = "fck"; clock-names = "fck";
clocks = <&timer1_gfclk_mux>; clocks = <&wkupaon_clkctrl DRA7_TIMER1_CLKCTRL 24>;
}; };
timer2: timer@48032000 { timer2: timer@48032000 {
...@@ -1370,7 +1371,7 @@ qspi: qspi@4b300000 { ...@@ -1370,7 +1371,7 @@ qspi: qspi@4b300000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ti,hwmods = "qspi"; ti,hwmods = "qspi";
clocks = <&qspi_gfclk_div>; clocks = <&l4per_clkctrl DRA7_QSPI_CLKCTRL 25>;
clock-names = "fck"; clock-names = "fck";
num-cs = <4>; num-cs = <4>;
interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>;
...@@ -1392,7 +1393,8 @@ sata_phy: phy@4A096000 { ...@@ -1392,7 +1393,8 @@ sata_phy: phy@4A096000 {
<0x4A096800 0x40>; /* pll_ctrl */ <0x4A096800 0x40>; /* pll_ctrl */
reg-names = "phy_rx", "phy_tx", "pll_ctrl"; reg-names = "phy_rx", "phy_tx", "pll_ctrl";
syscon-phy-power = <&scm_conf 0x374>; syscon-phy-power = <&scm_conf 0x374>;
clocks = <&sys_clkin1>, <&sata_ref_clk>; clocks = <&sys_clkin1>,
<&l3init_clkctrl DRA7_SATA_CLKCTRL 8>;
clock-names = "sysclk", "refclk"; clock-names = "sysclk", "refclk";
syscon-pllreset = <&scm_conf 0x3fc>; syscon-pllreset = <&scm_conf 0x3fc>;
#phy-cells = <0>; #phy-cells = <0>;
...@@ -1407,9 +1409,9 @@ pcie1_phy: pciephy@4a094000 { ...@@ -1407,9 +1409,9 @@ pcie1_phy: pciephy@4a094000 {
syscon-pcs = <&scm_conf_pcie 0x10>; syscon-pcs = <&scm_conf_pcie 0x10>;
clocks = <&dpll_pcie_ref_ck>, clocks = <&dpll_pcie_ref_ck>,
<&dpll_pcie_ref_m2ldo_ck>, <&dpll_pcie_ref_m2ldo_ck>,
<&optfclk_pciephy1_32khz>, <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 8>,
<&optfclk_pciephy1_clk>, <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 9>,
<&optfclk_pciephy1_div_clk>, <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 10>,
<&optfclk_pciephy_div>, <&optfclk_pciephy_div>,
<&sys_clkin1>; <&sys_clkin1>;
clock-names = "dpll_ref", "dpll_ref_m2", clock-names = "dpll_ref", "dpll_ref_m2",
...@@ -1427,9 +1429,9 @@ pcie2_phy: pciephy@4a095000 { ...@@ -1427,9 +1429,9 @@ pcie2_phy: pciephy@4a095000 {
syscon-pcs = <&scm_conf_pcie 0x10>; syscon-pcs = <&scm_conf_pcie 0x10>;
clocks = <&dpll_pcie_ref_ck>, clocks = <&dpll_pcie_ref_ck>,
<&dpll_pcie_ref_m2ldo_ck>, <&dpll_pcie_ref_m2ldo_ck>,
<&optfclk_pciephy2_32khz>, <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 8>,
<&optfclk_pciephy2_clk>, <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 9>,
<&optfclk_pciephy2_div_clk>, <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 10>,
<&optfclk_pciephy_div>, <&optfclk_pciephy_div>,
<&sys_clkin1>; <&sys_clkin1>;
clock-names = "dpll_ref", "dpll_ref_m2", clock-names = "dpll_ref", "dpll_ref_m2",
...@@ -1446,7 +1448,7 @@ sata: sata@4a141100 { ...@@ -1446,7 +1448,7 @@ sata: sata@4a141100 {
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
phys = <&sata_phy>; phys = <&sata_phy>;
phy-names = "sata-phy"; phy-names = "sata-phy";
clocks = <&sata_ref_clk>; clocks = <&l3init_clkctrl DRA7_SATA_CLKCTRL 8>;
ti,hwmods = "sata"; ti,hwmods = "sata";
ports-implemented = <0x1>; ports-implemented = <0x1>;
}; };
...@@ -1474,7 +1476,7 @@ usb2_phy1: phy@4a084000 { ...@@ -1474,7 +1476,7 @@ usb2_phy1: phy@4a084000 {
reg = <0x4a084000 0x400>; reg = <0x4a084000 0x400>;
syscon-phy-power = <&scm_conf 0x300>; syscon-phy-power = <&scm_conf 0x300>;
clocks = <&usb_phy1_always_on_clk32k>, clocks = <&usb_phy1_always_on_clk32k>,
<&usb_otg_ss1_refclk960m>; <&l3init_clkctrl DRA7_USB_OTG_SS1_CLKCTRL 8>;
clock-names = "wkupclk", clock-names = "wkupclk",
"refclk"; "refclk";
#phy-cells = <0>; #phy-cells = <0>;
...@@ -1486,7 +1488,7 @@ usb2_phy2: phy@4a085000 { ...@@ -1486,7 +1488,7 @@ usb2_phy2: phy@4a085000 {
reg = <0x4a085000 0x400>; reg = <0x4a085000 0x400>;
syscon-phy-power = <&scm_conf 0xe74>; syscon-phy-power = <&scm_conf 0xe74>;
clocks = <&usb_phy2_always_on_clk32k>, clocks = <&usb_phy2_always_on_clk32k>,
<&usb_otg_ss2_refclk960m>; <&l3init_clkctrl DRA7_USB_OTG_SS2_CLKCTRL 8>;
clock-names = "wkupclk", clock-names = "wkupclk",
"refclk"; "refclk";
#phy-cells = <0>; #phy-cells = <0>;
...@@ -1501,7 +1503,7 @@ usb3_phy1: phy@4a084400 { ...@@ -1501,7 +1503,7 @@ usb3_phy1: phy@4a084400 {
syscon-phy-power = <&scm_conf 0x370>; syscon-phy-power = <&scm_conf 0x370>;
clocks = <&usb_phy3_always_on_clk32k>, clocks = <&usb_phy3_always_on_clk32k>,
<&sys_clkin1>, <&sys_clkin1>,
<&usb_otg_ss1_refclk960m>; <&l3init_clkctrl DRA7_USB_OTG_SS1_CLKCTRL 8>;
clock-names = "wkupclk", clock-names = "wkupclk",
"sysclk", "sysclk",
"refclk"; "refclk";
...@@ -1648,7 +1650,7 @@ atl: atl@4843c000 { ...@@ -1648,7 +1650,7 @@ atl: atl@4843c000 {
ti,hwmods = "atl"; ti,hwmods = "atl";
ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>, ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>,
<&atl_clkin2_ck>, <&atl_clkin3_ck>; <&atl_clkin2_ck>, <&atl_clkin3_ck>;
clocks = <&atl_gfclk_mux>; clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
clock-names = "fck"; clock-names = "fck";
status = "disabled"; status = "disabled";
}; };
...@@ -1664,8 +1666,8 @@ mcasp1: mcasp@48460000 { ...@@ -1664,8 +1666,8 @@ mcasp1: mcasp@48460000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 129 1>, <&edma_xbar 128 1>; dmas = <&edma_xbar 129 1>, <&edma_xbar 128 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp1_aux_gfclk_mux>, <&mcasp1_ahclkx_mux>, clocks = <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 22>, <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 24>,
<&mcasp1_ahclkr_mux>; <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 28>;
clock-names = "fck", "ahclkx", "ahclkr"; clock-names = "fck", "ahclkx", "ahclkr";
status = "disabled"; status = "disabled";
}; };
...@@ -1681,8 +1683,9 @@ mcasp2: mcasp@48464000 { ...@@ -1681,8 +1683,9 @@ mcasp2: mcasp@48464000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 131 1>, <&edma_xbar 130 1>; dmas = <&edma_xbar 131 1>, <&edma_xbar 130 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp2_aux_gfclk_mux>, <&mcasp2_ahclkx_mux>, clocks = <&l4per_clkctrl DRA7_MCASP2_CLKCTRL 22>,
<&mcasp2_ahclkr_mux>; <&l4per_clkctrl DRA7_MCASP2_CLKCTRL 24>,
<&l4per_clkctrl DRA7_MCASP2_CLKCTRL 28>;
clock-names = "fck", "ahclkx", "ahclkr"; clock-names = "fck", "ahclkx", "ahclkr";
status = "disabled"; status = "disabled";
}; };
...@@ -1698,7 +1701,8 @@ mcasp3: mcasp@48468000 { ...@@ -1698,7 +1701,8 @@ mcasp3: mcasp@48468000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 133 1>, <&edma_xbar 132 1>; dmas = <&edma_xbar 133 1>, <&edma_xbar 132 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp3_aux_gfclk_mux>, <&mcasp3_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1714,7 +1718,8 @@ mcasp4: mcasp@4846c000 { ...@@ -1714,7 +1718,8 @@ mcasp4: mcasp@4846c000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 135 1>, <&edma_xbar 134 1>; dmas = <&edma_xbar 135 1>, <&edma_xbar 134 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp4_aux_gfclk_mux>, <&mcasp4_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP4_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP4_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1730,7 +1735,8 @@ mcasp5: mcasp@48470000 { ...@@ -1730,7 +1735,8 @@ mcasp5: mcasp@48470000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 137 1>, <&edma_xbar 136 1>; dmas = <&edma_xbar 137 1>, <&edma_xbar 136 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp5_aux_gfclk_mux>, <&mcasp5_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP5_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP5_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1746,7 +1752,8 @@ mcasp6: mcasp@48474000 { ...@@ -1746,7 +1752,8 @@ mcasp6: mcasp@48474000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 139 1>, <&edma_xbar 138 1>; dmas = <&edma_xbar 139 1>, <&edma_xbar 138 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp6_aux_gfclk_mux>, <&mcasp6_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP6_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP6_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1762,7 +1769,8 @@ mcasp7: mcasp@48478000 { ...@@ -1762,7 +1769,8 @@ mcasp7: mcasp@48478000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 141 1>, <&edma_xbar 140 1>; dmas = <&edma_xbar 141 1>, <&edma_xbar 140 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp7_aux_gfclk_mux>, <&mcasp7_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP7_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP7_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1778,7 +1786,8 @@ mcasp8: mcasp@4847c000 { ...@@ -1778,7 +1786,8 @@ mcasp8: mcasp@4847c000 {
interrupt-names = "tx", "rx"; interrupt-names = "tx", "rx";
dmas = <&edma_xbar 143 1>, <&edma_xbar 142 1>; dmas = <&edma_xbar 143 1>, <&edma_xbar 142 1>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
clocks = <&mcasp8_aux_gfclk_mux>, <&mcasp8_ahclkx_mux>; clocks = <&l4per_clkctrl DRA7_MCASP8_CLKCTRL 22>,
<&l4per_clkctrl DRA7_MCASP8_CLKCTRL 24>;
clock-names = "fck", "ahclkx"; clock-names = "fck", "ahclkx";
status = "disabled"; status = "disabled";
}; };
...@@ -1800,7 +1809,7 @@ crossbar_mpu: crossbar@4a002a48 { ...@@ -1800,7 +1809,7 @@ crossbar_mpu: crossbar@4a002a48 {
mac: ethernet@48484000 { mac: ethernet@48484000 {
compatible = "ti,dra7-cpsw","ti,cpsw"; compatible = "ti,dra7-cpsw","ti,cpsw";
ti,hwmods = "gmac"; ti,hwmods = "gmac";
clocks = <&gmac_main_clk>, <&gmac_rft_clk_mux>; clocks = <&gmac_main_clk>, <&l3init_clkctrl DRA7_GMAC_CLKCTRL 25>;
clock-names = "fck", "cpts"; clock-names = "fck", "cpts";
cpdma_channels = <8>; cpdma_channels = <8>;
ale_entries = <1024>; ale_entries = <1024>;
...@@ -1870,7 +1879,7 @@ dcan1: can@481cc000 { ...@@ -1870,7 +1879,7 @@ dcan1: can@481cc000 {
reg = <0x4ae3c000 0x2000>; reg = <0x4ae3c000 0x2000>;
syscon-raminit = <&scm_conf 0x558 0>; syscon-raminit = <&scm_conf 0x558 0>;
interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&dcan1_sys_clk_mux>; clocks = <&wkupaon_clkctrl DRA7_DCAN1_CLKCTRL 24>;
status = "disabled"; status = "disabled";
}; };
...@@ -1901,7 +1910,7 @@ dispc@58001000 { ...@@ -1901,7 +1910,7 @@ dispc@58001000 {
reg = <0x58001000 0x1000>; reg = <0x58001000 0x1000>;
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "dss_dispc"; ti,hwmods = "dss_dispc";
clocks = <&dss_dss_clk>; clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>;
clock-names = "fck"; clock-names = "fck";
/* CTRL_CORE_SMA_SW_1 */ /* CTRL_CORE_SMA_SW_1 */
syscon-pol = <&scm_conf 0x534>; syscon-pol = <&scm_conf 0x534>;
...@@ -1917,7 +1926,8 @@ hdmi: encoder@58060000 { ...@@ -1917,7 +1926,8 @@ hdmi: encoder@58060000 {
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
ti,hwmods = "dss_hdmi"; ti,hwmods = "dss_hdmi";
clocks = <&dss_48mhz_clk>, <&dss_hdmi_clk>; clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 9>,
<&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 10>;
clock-names = "fck", "sys_clk"; clock-names = "fck", "sys_clk";
}; };
}; };
...@@ -2101,4 +2111,4 @@ &cpu_crit { ...@@ -2101,4 +2111,4 @@ &cpu_crit {
temperature = <120000>; /* milli Celsius */ temperature = <120000>; /* milli Celsius */
}; };
/include/ "dra7xx-clocks.dtsi" #include "dra7xx-clocks.dtsi"
...@@ -514,7 +514,7 @@ hdmi_out: endpoint { ...@@ -514,7 +514,7 @@ hdmi_out: endpoint {
&atl { &atl {
assigned-clocks = <&abe_dpll_sys_clk_mux>, assigned-clocks = <&abe_dpll_sys_clk_mux>,
<&atl_gfclk_mux>, <&atl_clkctrl DRA7_ATL_CLKCTRL 26>,
<&dpll_abe_ck>, <&dpll_abe_ck>,
<&dpll_abe_m2x2_ck>, <&dpll_abe_m2x2_ck>,
<&atl_clkin2_ck>; <&atl_clkin2_ck>;
...@@ -532,7 +532,7 @@ atl2 { ...@@ -532,7 +532,7 @@ atl2 {
&mcasp3 { &mcasp3 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
assigned-clocks = <&mcasp3_ahclkx_mux>; assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
assigned-clock-parents = <&atl_clkin2_ck>; assigned-clock-parents = <&atl_clkin2_ck>;
status = "okay"; status = "okay";
......
...@@ -25,8 +25,8 @@ &dss { ...@@ -25,8 +25,8 @@ &dss {
<0x58004300 0x20>; <0x58004300 0x20>;
reg-names = "dss", "pll1_clkctrl", "pll1"; reg-names = "dss", "pll1_clkctrl", "pll1";
clocks = <&dss_dss_clk>, clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>,
<&dss_video1_clk>; <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 12>;
clock-names = "fck", "video1_clk"; clock-names = "fck", "video1_clk";
}; };
......
...@@ -93,9 +93,9 @@ &dss { ...@@ -93,9 +93,9 @@ &dss {
reg-names = "dss", "pll1_clkctrl", "pll1", reg-names = "dss", "pll1_clkctrl", "pll1",
"pll2_clkctrl", "pll2"; "pll2_clkctrl", "pll2";
clocks = <&dss_dss_clk>, clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>,
<&dss_video1_clk>, <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 12>,
<&dss_video2_clk>; <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 13>;
clock-names = "fck", "video1_clk", "video2_clk"; clock-names = "fck", "video1_clk", "video2_clk";
}; };
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment