14f346005SAlim Akhtar // SPDX-License-Identifier: GPL-2.0-only 24f346005SAlim Akhtar /* 34f346005SAlim Akhtar * Copyright (c) 2017-2022 Samsung Electronics Co., Ltd. 44f346005SAlim Akhtar * https://www.samsung.com 54f346005SAlim Akhtar * Copyright (c) 2017-2022 Tesla, Inc. 64f346005SAlim Akhtar * https://www.tesla.com 74f346005SAlim Akhtar * 84f346005SAlim Akhtar * Common Clock Framework support for FSD SoC. 94f346005SAlim Akhtar */ 104f346005SAlim Akhtar 11e3f3dc38SAlim Akhtar #include <linux/clk.h> 124f346005SAlim Akhtar #include <linux/clk-provider.h> 134f346005SAlim Akhtar #include <linux/init.h> 144f346005SAlim Akhtar #include <linux/kernel.h> 154f346005SAlim Akhtar #include <linux/of.h> 16e3f3dc38SAlim Akhtar #include <linux/of_address.h> 17e3f3dc38SAlim Akhtar #include <linux/of_device.h> 18e3f3dc38SAlim Akhtar #include <linux/platform_device.h> 194f346005SAlim Akhtar 204f346005SAlim Akhtar #include <dt-bindings/clock/fsd-clk.h> 214f346005SAlim Akhtar 224f346005SAlim Akhtar #include "clk.h" 23e3f3dc38SAlim Akhtar #include "clk-exynos-arm64.h" 244f346005SAlim Akhtar 254f346005SAlim Akhtar /* Register Offset definitions for CMU_CMU (0x11c10000) */ 264f346005SAlim Akhtar #define PLL_LOCKTIME_PLL_SHARED0 0x0 274f346005SAlim Akhtar #define PLL_LOCKTIME_PLL_SHARED1 0x4 284f346005SAlim Akhtar #define PLL_LOCKTIME_PLL_SHARED2 0x8 294f346005SAlim Akhtar #define PLL_LOCKTIME_PLL_SHARED3 0xc 304f346005SAlim Akhtar #define PLL_CON0_PLL_SHARED0 0x100 314f346005SAlim Akhtar #define PLL_CON0_PLL_SHARED1 0x120 324f346005SAlim Akhtar #define PLL_CON0_PLL_SHARED2 0x140 334f346005SAlim Akhtar #define PLL_CON0_PLL_SHARED3 0x160 344f346005SAlim Akhtar #define MUX_CMU_CIS0_CLKMUX 0x1000 354f346005SAlim Akhtar #define MUX_CMU_CIS1_CLKMUX 0x1004 364f346005SAlim Akhtar #define MUX_CMU_CIS2_CLKMUX 0x1008 374f346005SAlim Akhtar #define MUX_CMU_CPUCL_SWITCHMUX 0x100c 384f346005SAlim Akhtar #define MUX_CMU_FSYS1_ACLK_MUX 0x1014 394f346005SAlim Akhtar #define MUX_PLL_SHARED0_MUX 0x1020 404f346005SAlim Akhtar #define MUX_PLL_SHARED1_MUX 0x1024 414f346005SAlim Akhtar #define DIV_CMU_CIS0_CLK 0x1800 424f346005SAlim Akhtar #define DIV_CMU_CIS1_CLK 0x1804 434f346005SAlim Akhtar #define DIV_CMU_CIS2_CLK 0x1808 444f346005SAlim Akhtar #define DIV_CMU_CMU_ACLK 0x180c 454f346005SAlim Akhtar #define DIV_CMU_CPUCL_SWITCH 0x1810 464f346005SAlim Akhtar #define DIV_CMU_FSYS0_SHARED0DIV4 0x181c 474f346005SAlim Akhtar #define DIV_CMU_FSYS0_SHARED1DIV3 0x1820 484f346005SAlim Akhtar #define DIV_CMU_FSYS0_SHARED1DIV4 0x1824 494f346005SAlim Akhtar #define DIV_CMU_FSYS1_SHARED0DIV4 0x1828 504f346005SAlim Akhtar #define DIV_CMU_FSYS1_SHARED0DIV8 0x182c 514f346005SAlim Akhtar #define DIV_CMU_IMEM_ACLK 0x1834 524f346005SAlim Akhtar #define DIV_CMU_IMEM_DMACLK 0x1838 534f346005SAlim Akhtar #define DIV_CMU_IMEM_TCUCLK 0x183c 544f346005SAlim Akhtar #define DIV_CMU_PERIC_SHARED0DIV20 0x1844 554f346005SAlim Akhtar #define DIV_CMU_PERIC_SHARED0DIV3_TBUCLK 0x1848 564f346005SAlim Akhtar #define DIV_CMU_PERIC_SHARED1DIV36 0x184c 574f346005SAlim Akhtar #define DIV_CMU_PERIC_SHARED1DIV4_DMACLK 0x1850 584f346005SAlim Akhtar #define DIV_PLL_SHARED0_DIV2 0x1858 594f346005SAlim Akhtar #define DIV_PLL_SHARED0_DIV3 0x185c 604f346005SAlim Akhtar #define DIV_PLL_SHARED0_DIV4 0x1860 614f346005SAlim Akhtar #define DIV_PLL_SHARED0_DIV6 0x1864 624f346005SAlim Akhtar #define DIV_PLL_SHARED1_DIV3 0x1868 634f346005SAlim Akhtar #define DIV_PLL_SHARED1_DIV36 0x186c 644f346005SAlim Akhtar #define DIV_PLL_SHARED1_DIV4 0x1870 654f346005SAlim Akhtar #define DIV_PLL_SHARED1_DIV9 0x1874 664f346005SAlim Akhtar #define GAT_CMU_CIS0_CLKGATE 0x2000 674f346005SAlim Akhtar #define GAT_CMU_CIS1_CLKGATE 0x2004 684f346005SAlim Akhtar #define GAT_CMU_CIS2_CLKGATE 0x2008 694f346005SAlim Akhtar #define GAT_CMU_CPUCL_SWITCH_GATE 0x200c 704f346005SAlim Akhtar #define GAT_CMU_FSYS0_SHARED0DIV4_GATE 0x2018 714f346005SAlim Akhtar #define GAT_CMU_FSYS0_SHARED1DIV4_CLK 0x201c 724f346005SAlim Akhtar #define GAT_CMU_FSYS0_SHARED1DIV4_GATE 0x2020 734f346005SAlim Akhtar #define GAT_CMU_FSYS1_SHARED0DIV4_GATE 0x2024 744f346005SAlim Akhtar #define GAT_CMU_FSYS1_SHARED1DIV4_GATE 0x2028 754f346005SAlim Akhtar #define GAT_CMU_IMEM_ACLK_GATE 0x2030 764f346005SAlim Akhtar #define GAT_CMU_IMEM_DMACLK_GATE 0x2034 774f346005SAlim Akhtar #define GAT_CMU_IMEM_TCUCLK_GATE 0x2038 784f346005SAlim Akhtar #define GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE 0x2040 794f346005SAlim Akhtar #define GAT_CMU_PERIC_SHARED0DIVE4_GATE 0x2044 804f346005SAlim Akhtar #define GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE 0x2048 814f346005SAlim Akhtar #define GAT_CMU_PERIC_SHARED1DIVE4_GATE 0x204c 824f346005SAlim Akhtar #define GAT_CMU_CMU_CMU_IPCLKPORT_PCLK 0x2054 834f346005SAlim Akhtar #define GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK 0x2058 844f346005SAlim Akhtar #define GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU 0x205c 854f346005SAlim Akhtar #define GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK 0x2060 864f346005SAlim Akhtar 874f346005SAlim Akhtar static const unsigned long cmu_clk_regs[] __initconst = { 884f346005SAlim Akhtar PLL_LOCKTIME_PLL_SHARED0, 894f346005SAlim Akhtar PLL_LOCKTIME_PLL_SHARED1, 904f346005SAlim Akhtar PLL_LOCKTIME_PLL_SHARED2, 914f346005SAlim Akhtar PLL_LOCKTIME_PLL_SHARED3, 924f346005SAlim Akhtar PLL_CON0_PLL_SHARED0, 934f346005SAlim Akhtar PLL_CON0_PLL_SHARED1, 944f346005SAlim Akhtar PLL_CON0_PLL_SHARED2, 954f346005SAlim Akhtar PLL_CON0_PLL_SHARED3, 964f346005SAlim Akhtar MUX_CMU_CIS0_CLKMUX, 974f346005SAlim Akhtar MUX_CMU_CIS1_CLKMUX, 984f346005SAlim Akhtar MUX_CMU_CIS2_CLKMUX, 994f346005SAlim Akhtar MUX_CMU_CPUCL_SWITCHMUX, 1004f346005SAlim Akhtar MUX_CMU_FSYS1_ACLK_MUX, 1014f346005SAlim Akhtar MUX_PLL_SHARED0_MUX, 1024f346005SAlim Akhtar MUX_PLL_SHARED1_MUX, 1034f346005SAlim Akhtar DIV_CMU_CIS0_CLK, 1044f346005SAlim Akhtar DIV_CMU_CIS1_CLK, 1054f346005SAlim Akhtar DIV_CMU_CIS2_CLK, 1064f346005SAlim Akhtar DIV_CMU_CMU_ACLK, 1074f346005SAlim Akhtar DIV_CMU_CPUCL_SWITCH, 1084f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED0DIV4, 1094f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED1DIV3, 1104f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED1DIV4, 1114f346005SAlim Akhtar DIV_CMU_FSYS1_SHARED0DIV4, 1124f346005SAlim Akhtar DIV_CMU_FSYS1_SHARED0DIV8, 1134f346005SAlim Akhtar DIV_CMU_IMEM_ACLK, 1144f346005SAlim Akhtar DIV_CMU_IMEM_DMACLK, 1154f346005SAlim Akhtar DIV_CMU_IMEM_TCUCLK, 1164f346005SAlim Akhtar DIV_CMU_PERIC_SHARED0DIV20, 1174f346005SAlim Akhtar DIV_CMU_PERIC_SHARED0DIV3_TBUCLK, 1184f346005SAlim Akhtar DIV_CMU_PERIC_SHARED1DIV36, 1194f346005SAlim Akhtar DIV_CMU_PERIC_SHARED1DIV4_DMACLK, 1204f346005SAlim Akhtar DIV_PLL_SHARED0_DIV2, 1214f346005SAlim Akhtar DIV_PLL_SHARED0_DIV3, 1224f346005SAlim Akhtar DIV_PLL_SHARED0_DIV4, 1234f346005SAlim Akhtar DIV_PLL_SHARED0_DIV6, 1244f346005SAlim Akhtar DIV_PLL_SHARED1_DIV3, 1254f346005SAlim Akhtar DIV_PLL_SHARED1_DIV36, 1264f346005SAlim Akhtar DIV_PLL_SHARED1_DIV4, 1274f346005SAlim Akhtar DIV_PLL_SHARED1_DIV9, 1284f346005SAlim Akhtar GAT_CMU_CIS0_CLKGATE, 1294f346005SAlim Akhtar GAT_CMU_CIS1_CLKGATE, 1304f346005SAlim Akhtar GAT_CMU_CIS2_CLKGATE, 1314f346005SAlim Akhtar GAT_CMU_CPUCL_SWITCH_GATE, 1324f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED0DIV4_GATE, 1334f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED1DIV4_CLK, 1344f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED1DIV4_GATE, 1354f346005SAlim Akhtar GAT_CMU_FSYS1_SHARED0DIV4_GATE, 1364f346005SAlim Akhtar GAT_CMU_FSYS1_SHARED1DIV4_GATE, 1374f346005SAlim Akhtar GAT_CMU_IMEM_ACLK_GATE, 1384f346005SAlim Akhtar GAT_CMU_IMEM_DMACLK_GATE, 1394f346005SAlim Akhtar GAT_CMU_IMEM_TCUCLK_GATE, 1404f346005SAlim Akhtar GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE, 1414f346005SAlim Akhtar GAT_CMU_PERIC_SHARED0DIVE4_GATE, 1424f346005SAlim Akhtar GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE, 1434f346005SAlim Akhtar GAT_CMU_PERIC_SHARED1DIVE4_GATE, 1444f346005SAlim Akhtar GAT_CMU_CMU_CMU_IPCLKPORT_PCLK, 1454f346005SAlim Akhtar GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK, 1464f346005SAlim Akhtar GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU, 1474f346005SAlim Akhtar GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK, 1484f346005SAlim Akhtar }; 1494f346005SAlim Akhtar 1504f346005SAlim Akhtar static const struct samsung_pll_rate_table pll_shared0_rate_table[] __initconst = { 1514f346005SAlim Akhtar PLL_35XX_RATE(24 * MHZ, 2000000000U, 250, 3, 0), 1524f346005SAlim Akhtar }; 1534f346005SAlim Akhtar 1544f346005SAlim Akhtar static const struct samsung_pll_rate_table pll_shared1_rate_table[] __initconst = { 1554f346005SAlim Akhtar PLL_35XX_RATE(24 * MHZ, 2400000000U, 200, 2, 0), 1564f346005SAlim Akhtar }; 1574f346005SAlim Akhtar 1584f346005SAlim Akhtar static const struct samsung_pll_rate_table pll_shared2_rate_table[] __initconst = { 1594f346005SAlim Akhtar PLL_35XX_RATE(24 * MHZ, 2400000000U, 200, 2, 0), 1604f346005SAlim Akhtar }; 1614f346005SAlim Akhtar 1624f346005SAlim Akhtar static const struct samsung_pll_rate_table pll_shared3_rate_table[] __initconst = { 1634f346005SAlim Akhtar PLL_35XX_RATE(24 * MHZ, 1800000000U, 150, 2, 0), 1644f346005SAlim Akhtar }; 1654f346005SAlim Akhtar 1664f346005SAlim Akhtar static const struct samsung_pll_clock cmu_pll_clks[] __initconst = { 1674f346005SAlim Akhtar PLL(pll_142xx, 0, "fout_pll_shared0", "fin_pll", PLL_LOCKTIME_PLL_SHARED0, 1684f346005SAlim Akhtar PLL_CON0_PLL_SHARED0, pll_shared0_rate_table), 1694f346005SAlim Akhtar PLL(pll_142xx, 0, "fout_pll_shared1", "fin_pll", PLL_LOCKTIME_PLL_SHARED1, 1704f346005SAlim Akhtar PLL_CON0_PLL_SHARED1, pll_shared1_rate_table), 1714f346005SAlim Akhtar PLL(pll_142xx, 0, "fout_pll_shared2", "fin_pll", PLL_LOCKTIME_PLL_SHARED2, 1724f346005SAlim Akhtar PLL_CON0_PLL_SHARED2, pll_shared2_rate_table), 1734f346005SAlim Akhtar PLL(pll_142xx, 0, "fout_pll_shared3", "fin_pll", PLL_LOCKTIME_PLL_SHARED3, 1744f346005SAlim Akhtar PLL_CON0_PLL_SHARED3, pll_shared3_rate_table), 1754f346005SAlim Akhtar }; 1764f346005SAlim Akhtar 1774f346005SAlim Akhtar /* List of parent clocks for Muxes in CMU_CMU */ 1784f346005SAlim Akhtar PNAME(mout_cmu_shared0_pll_p) = { "fin_pll", "fout_pll_shared0" }; 1794f346005SAlim Akhtar PNAME(mout_cmu_shared1_pll_p) = { "fin_pll", "fout_pll_shared1" }; 1804f346005SAlim Akhtar PNAME(mout_cmu_shared2_pll_p) = { "fin_pll", "fout_pll_shared2" }; 1814f346005SAlim Akhtar PNAME(mout_cmu_shared3_pll_p) = { "fin_pll", "fout_pll_shared3" }; 1824f346005SAlim Akhtar PNAME(mout_cmu_cis0_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 1834f346005SAlim Akhtar PNAME(mout_cmu_cis1_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 1844f346005SAlim Akhtar PNAME(mout_cmu_cis2_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 1854f346005SAlim Akhtar PNAME(mout_cmu_cpucl_switchmux_p) = { "mout_cmu_pll_shared2", "mout_cmu_pll_shared0_mux" }; 1864f346005SAlim Akhtar PNAME(mout_cmu_fsys1_aclk_mux_p) = { "dout_cmu_pll_shared0_div4", "fin_pll" }; 1874f346005SAlim Akhtar PNAME(mout_cmu_pll_shared0_mux_p) = { "fin_pll", "mout_cmu_pll_shared0" }; 1884f346005SAlim Akhtar PNAME(mout_cmu_pll_shared1_mux_p) = { "fin_pll", "mout_cmu_pll_shared1" }; 1894f346005SAlim Akhtar 1904f346005SAlim Akhtar static const struct samsung_mux_clock cmu_mux_clks[] __initconst = { 1914f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared0", mout_cmu_shared0_pll_p, PLL_CON0_PLL_SHARED0, 4, 1), 1924f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared1", mout_cmu_shared1_pll_p, PLL_CON0_PLL_SHARED1, 4, 1), 1934f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared2", mout_cmu_shared2_pll_p, PLL_CON0_PLL_SHARED2, 4, 1), 1944f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared3", mout_cmu_shared3_pll_p, PLL_CON0_PLL_SHARED3, 4, 1), 1954f346005SAlim Akhtar MUX(0, "mout_cmu_cis0_clkmux", mout_cmu_cis0_clkmux_p, MUX_CMU_CIS0_CLKMUX, 0, 1), 1964f346005SAlim Akhtar MUX(0, "mout_cmu_cis1_clkmux", mout_cmu_cis1_clkmux_p, MUX_CMU_CIS1_CLKMUX, 0, 1), 1974f346005SAlim Akhtar MUX(0, "mout_cmu_cis2_clkmux", mout_cmu_cis2_clkmux_p, MUX_CMU_CIS2_CLKMUX, 0, 1), 1984f346005SAlim Akhtar MUX(0, "mout_cmu_cpucl_switchmux", mout_cmu_cpucl_switchmux_p, 1994f346005SAlim Akhtar MUX_CMU_CPUCL_SWITCHMUX, 0, 1), 2004f346005SAlim Akhtar MUX(0, "mout_cmu_fsys1_aclk_mux", mout_cmu_fsys1_aclk_mux_p, MUX_CMU_FSYS1_ACLK_MUX, 0, 1), 2014f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared0_mux", mout_cmu_pll_shared0_mux_p, MUX_PLL_SHARED0_MUX, 0, 1), 2024f346005SAlim Akhtar MUX(0, "mout_cmu_pll_shared1_mux", mout_cmu_pll_shared1_mux_p, MUX_PLL_SHARED1_MUX, 0, 1), 2034f346005SAlim Akhtar }; 2044f346005SAlim Akhtar 2054f346005SAlim Akhtar static const struct samsung_div_clock cmu_div_clks[] __initconst = { 2064f346005SAlim Akhtar DIV(0, "dout_cmu_cis0_clk", "cmu_cis0_clkgate", DIV_CMU_CIS0_CLK, 0, 4), 2074f346005SAlim Akhtar DIV(0, "dout_cmu_cis1_clk", "cmu_cis1_clkgate", DIV_CMU_CIS1_CLK, 0, 4), 2084f346005SAlim Akhtar DIV(0, "dout_cmu_cis2_clk", "cmu_cis2_clkgate", DIV_CMU_CIS2_CLK, 0, 4), 2094f346005SAlim Akhtar DIV(0, "dout_cmu_cmu_aclk", "dout_cmu_pll_shared1_div9", DIV_CMU_CMU_ACLK, 0, 4), 2104f346005SAlim Akhtar DIV(0, "dout_cmu_cpucl_switch", "cmu_cpucl_switch_gate", DIV_CMU_CPUCL_SWITCH, 0, 4), 2114f346005SAlim Akhtar DIV(DOUT_CMU_FSYS0_SHARED0DIV4, "dout_cmu_fsys0_shared0div4", "cmu_fsys0_shared0div4_gate", 2124f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED0DIV4, 0, 4), 2134f346005SAlim Akhtar DIV(0, "dout_cmu_fsys0_shared1div3", "cmu_fsys0_shared1div4_clk", 2144f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED1DIV3, 0, 4), 2154f346005SAlim Akhtar DIV(DOUT_CMU_FSYS0_SHARED1DIV4, "dout_cmu_fsys0_shared1div4", "cmu_fsys0_shared1div4_gate", 2164f346005SAlim Akhtar DIV_CMU_FSYS0_SHARED1DIV4, 0, 4), 2174f346005SAlim Akhtar DIV(DOUT_CMU_FSYS1_SHARED0DIV4, "dout_cmu_fsys1_shared0div4", "cmu_fsys1_shared0div4_gate", 2184f346005SAlim Akhtar DIV_CMU_FSYS1_SHARED0DIV4, 0, 4), 2194f346005SAlim Akhtar DIV(DOUT_CMU_FSYS1_SHARED0DIV8, "dout_cmu_fsys1_shared0div8", "cmu_fsys1_shared1div4_gate", 2204f346005SAlim Akhtar DIV_CMU_FSYS1_SHARED0DIV8, 0, 4), 2214f346005SAlim Akhtar DIV(DOUT_CMU_IMEM_ACLK, "dout_cmu_imem_aclk", "cmu_imem_aclk_gate", 2224f346005SAlim Akhtar DIV_CMU_IMEM_ACLK, 0, 4), 2234f346005SAlim Akhtar DIV(DOUT_CMU_IMEM_DMACLK, "dout_cmu_imem_dmaclk", "cmu_imem_dmaclk_gate", 2244f346005SAlim Akhtar DIV_CMU_IMEM_DMACLK, 0, 4), 2254f346005SAlim Akhtar DIV(DOUT_CMU_IMEM_TCUCLK, "dout_cmu_imem_tcuclk", "cmu_imem_tcuclk_gate", 2264f346005SAlim Akhtar DIV_CMU_IMEM_TCUCLK, 0, 4), 2274f346005SAlim Akhtar DIV(DOUT_CMU_PERIC_SHARED0DIV20, "dout_cmu_peric_shared0div20", 2284f346005SAlim Akhtar "cmu_peric_shared0dive4_gate", DIV_CMU_PERIC_SHARED0DIV20, 0, 4), 2294f346005SAlim Akhtar DIV(DOUT_CMU_PERIC_SHARED0DIV3_TBUCLK, "dout_cmu_peric_shared0div3_tbuclk", 2304f346005SAlim Akhtar "cmu_peric_shared0dive3_tbuclk_gate", DIV_CMU_PERIC_SHARED0DIV3_TBUCLK, 0, 4), 2314f346005SAlim Akhtar DIV(DOUT_CMU_PERIC_SHARED1DIV36, "dout_cmu_peric_shared1div36", 2324f346005SAlim Akhtar "cmu_peric_shared1dive4_gate", DIV_CMU_PERIC_SHARED1DIV36, 0, 4), 2334f346005SAlim Akhtar DIV(DOUT_CMU_PERIC_SHARED1DIV4_DMACLK, "dout_cmu_peric_shared1div4_dmaclk", 2344f346005SAlim Akhtar "cmu_peric_shared1div4_dmaclk_gate", DIV_CMU_PERIC_SHARED1DIV4_DMACLK, 0, 4), 2354f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared0_div2", "mout_cmu_pll_shared0_mux", 2364f346005SAlim Akhtar DIV_PLL_SHARED0_DIV2, 0, 4), 2374f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared0_div3", "mout_cmu_pll_shared0_mux", 2384f346005SAlim Akhtar DIV_PLL_SHARED0_DIV3, 0, 4), 2394f346005SAlim Akhtar DIV(DOUT_CMU_PLL_SHARED0_DIV4, "dout_cmu_pll_shared0_div4", "dout_cmu_pll_shared0_div2", 2404f346005SAlim Akhtar DIV_PLL_SHARED0_DIV4, 0, 4), 2414f346005SAlim Akhtar DIV(DOUT_CMU_PLL_SHARED0_DIV6, "dout_cmu_pll_shared0_div6", "dout_cmu_pll_shared0_div3", 2424f346005SAlim Akhtar DIV_PLL_SHARED0_DIV6, 0, 4), 2434f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared1_div3", "mout_cmu_pll_shared1_mux", 2444f346005SAlim Akhtar DIV_PLL_SHARED1_DIV3, 0, 4), 2454f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared1_div36", "dout_cmu_pll_shared1_div9", 2464f346005SAlim Akhtar DIV_PLL_SHARED1_DIV36, 0, 4), 2474f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared1_div4", "mout_cmu_pll_shared1_mux", 2484f346005SAlim Akhtar DIV_PLL_SHARED1_DIV4, 0, 4), 2494f346005SAlim Akhtar DIV(0, "dout_cmu_pll_shared1_div9", "dout_cmu_pll_shared1_div3", 2504f346005SAlim Akhtar DIV_PLL_SHARED1_DIV9, 0, 4), 2514f346005SAlim Akhtar }; 2524f346005SAlim Akhtar 2534f346005SAlim Akhtar static const struct samsung_gate_clock cmu_gate_clks[] __initconst = { 2544f346005SAlim Akhtar GATE(0, "cmu_cis0_clkgate", "mout_cmu_cis0_clkmux", GAT_CMU_CIS0_CLKGATE, 21, 2554f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2564f346005SAlim Akhtar GATE(0, "cmu_cis1_clkgate", "mout_cmu_cis1_clkmux", GAT_CMU_CIS1_CLKGATE, 21, 2574f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2584f346005SAlim Akhtar GATE(0, "cmu_cis2_clkgate", "mout_cmu_cis2_clkmux", GAT_CMU_CIS2_CLKGATE, 21, 2594f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2604f346005SAlim Akhtar GATE(CMU_CPUCL_SWITCH_GATE, "cmu_cpucl_switch_gate", "mout_cmu_cpucl_switchmux", 2614f346005SAlim Akhtar GAT_CMU_CPUCL_SWITCH_GATE, 21, CLK_IGNORE_UNUSED, 0), 2624f346005SAlim Akhtar GATE(GAT_CMU_FSYS0_SHARED0DIV4, "cmu_fsys0_shared0div4_gate", "dout_cmu_pll_shared0_div4", 2634f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED0DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2644f346005SAlim Akhtar GATE(0, "cmu_fsys0_shared1div4_clk", "dout_cmu_pll_shared1_div3", 2654f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED1DIV4_CLK, 21, CLK_IGNORE_UNUSED, 0), 2664f346005SAlim Akhtar GATE(0, "cmu_fsys0_shared1div4_gate", "dout_cmu_pll_shared1_div4", 2674f346005SAlim Akhtar GAT_CMU_FSYS0_SHARED1DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2684f346005SAlim Akhtar GATE(0, "cmu_fsys1_shared0div4_gate", "mout_cmu_fsys1_aclk_mux", 2694f346005SAlim Akhtar GAT_CMU_FSYS1_SHARED0DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2704f346005SAlim Akhtar GATE(0, "cmu_fsys1_shared1div4_gate", "dout_cmu_fsys1_shared0div4", 2714f346005SAlim Akhtar GAT_CMU_FSYS1_SHARED1DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2724f346005SAlim Akhtar GATE(0, "cmu_imem_aclk_gate", "dout_cmu_pll_shared1_div9", GAT_CMU_IMEM_ACLK_GATE, 21, 2734f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2744f346005SAlim Akhtar GATE(0, "cmu_imem_dmaclk_gate", "mout_cmu_pll_shared1_mux", GAT_CMU_IMEM_DMACLK_GATE, 21, 2754f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2764f346005SAlim Akhtar GATE(0, "cmu_imem_tcuclk_gate", "dout_cmu_pll_shared0_div3", GAT_CMU_IMEM_TCUCLK_GATE, 21, 2774f346005SAlim Akhtar CLK_IGNORE_UNUSED, 0), 2784f346005SAlim Akhtar GATE(0, "cmu_peric_shared0dive3_tbuclk_gate", "dout_cmu_pll_shared0_div3", 2794f346005SAlim Akhtar GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE, 21, CLK_IGNORE_UNUSED, 0), 2804f346005SAlim Akhtar GATE(0, "cmu_peric_shared0dive4_gate", "dout_cmu_pll_shared0_div4", 2814f346005SAlim Akhtar GAT_CMU_PERIC_SHARED0DIVE4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2824f346005SAlim Akhtar GATE(0, "cmu_peric_shared1div4_dmaclk_gate", "dout_cmu_pll_shared1_div4", 2834f346005SAlim Akhtar GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE, 21, CLK_IGNORE_UNUSED, 0), 2844f346005SAlim Akhtar GATE(0, "cmu_peric_shared1dive4_gate", "dout_cmu_pll_shared1_div36", 2854f346005SAlim Akhtar GAT_CMU_PERIC_SHARED1DIVE4_GATE, 21, CLK_IGNORE_UNUSED, 0), 2864f346005SAlim Akhtar GATE(0, "cmu_uid_cmu_cmu_cmu_ipclkport_pclk", "dout_cmu_cmu_aclk", 2874f346005SAlim Akhtar GAT_CMU_CMU_CMU_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 2884f346005SAlim Akhtar GATE(0, "cmu_uid_axi2apb_cmu_ipclkport_aclk", "dout_cmu_cmu_aclk", 2894f346005SAlim Akhtar GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 2904f346005SAlim Akhtar GATE(0, "cmu_uid_ns_brdg_cmu_ipclkport_clk__psoc_cmu__clk_cmu", "dout_cmu_cmu_aclk", 2914f346005SAlim Akhtar GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU, 21, CLK_IGNORE_UNUSED, 0), 2924f346005SAlim Akhtar GATE(0, "cmu_uid_sysreg_cmu_ipclkport_pclk", "dout_cmu_cmu_aclk", 2934f346005SAlim Akhtar GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 2944f346005SAlim Akhtar }; 2954f346005SAlim Akhtar 2964f346005SAlim Akhtar static const struct samsung_cmu_info cmu_cmu_info __initconst = { 2974f346005SAlim Akhtar .pll_clks = cmu_pll_clks, 2984f346005SAlim Akhtar .nr_pll_clks = ARRAY_SIZE(cmu_pll_clks), 2994f346005SAlim Akhtar .mux_clks = cmu_mux_clks, 3004f346005SAlim Akhtar .nr_mux_clks = ARRAY_SIZE(cmu_mux_clks), 3014f346005SAlim Akhtar .div_clks = cmu_div_clks, 3024f346005SAlim Akhtar .nr_div_clks = ARRAY_SIZE(cmu_div_clks), 3034f346005SAlim Akhtar .gate_clks = cmu_gate_clks, 3044f346005SAlim Akhtar .nr_gate_clks = ARRAY_SIZE(cmu_gate_clks), 3054f346005SAlim Akhtar .nr_clk_ids = CMU_NR_CLK, 3064f346005SAlim Akhtar .clk_regs = cmu_clk_regs, 3074f346005SAlim Akhtar .nr_clk_regs = ARRAY_SIZE(cmu_clk_regs), 3084f346005SAlim Akhtar }; 3094f346005SAlim Akhtar 3104f346005SAlim Akhtar static void __init fsd_clk_cmu_init(struct device_node *np) 3114f346005SAlim Akhtar { 3124f346005SAlim Akhtar samsung_cmu_register_one(np, &cmu_cmu_info); 3134f346005SAlim Akhtar } 3144f346005SAlim Akhtar 3154f346005SAlim Akhtar CLK_OF_DECLARE(fsd_clk_cmu, "tesla,fsd-clock-cmu", fsd_clk_cmu_init); 316e3f3dc38SAlim Akhtar 317e3f3dc38SAlim Akhtar /* Register Offset definitions for CMU_PERIC (0x14010000) */ 318e3f3dc38SAlim Akhtar #define PLL_CON0_PERIC_DMACLK_MUX 0x100 319e3f3dc38SAlim Akhtar #define PLL_CON0_PERIC_EQOS_BUSCLK_MUX 0x120 320e3f3dc38SAlim Akhtar #define PLL_CON0_PERIC_PCLK_MUX 0x140 321e3f3dc38SAlim Akhtar #define PLL_CON0_PERIC_TBUCLK_MUX 0x160 322e3f3dc38SAlim Akhtar #define PLL_CON0_SPI_CLK 0x180 323e3f3dc38SAlim Akhtar #define PLL_CON0_SPI_PCLK 0x1a0 324e3f3dc38SAlim Akhtar #define PLL_CON0_UART_CLK 0x1c0 325e3f3dc38SAlim Akhtar #define PLL_CON0_UART_PCLK 0x1e0 326e3f3dc38SAlim Akhtar #define MUX_PERIC_EQOS_PHYRXCLK 0x1000 327e3f3dc38SAlim Akhtar #define DIV_EQOS_BUSCLK 0x1800 328e3f3dc38SAlim Akhtar #define DIV_PERIC_MCAN_CLK 0x1804 329e3f3dc38SAlim Akhtar #define DIV_RGMII_CLK 0x1808 330e3f3dc38SAlim Akhtar #define DIV_RII_CLK 0x180c 331e3f3dc38SAlim Akhtar #define DIV_RMII_CLK 0x1810 332e3f3dc38SAlim Akhtar #define DIV_SPI_CLK 0x1814 333e3f3dc38SAlim Akhtar #define DIV_UART_CLK 0x1818 334e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I 0x2000 335e3f3dc38SAlim Akhtar #define GAT_GPIO_PERIC_IPCLKPORT_OSCCLK 0x2004 336e3f3dc38SAlim Akhtar #define GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK 0x2008 337e3f3dc38SAlim Akhtar #define GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK 0x200c 338e3f3dc38SAlim Akhtar #define GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK 0x2010 339e3f3dc38SAlim Akhtar #define GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK 0x2014 340e3f3dc38SAlim Akhtar #define GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM 0x2018 341e3f3dc38SAlim Akhtar #define GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS 0x201c 342e3f3dc38SAlim Akhtar #define GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM 0x2020 343e3f3dc38SAlim Akhtar #define GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS 0x2024 344e3f3dc38SAlim Akhtar #define GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK 0x2028 345e3f3dc38SAlim Akhtar #define GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK 0x202c 346e3f3dc38SAlim Akhtar #define GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK 0x2030 347e3f3dc38SAlim Akhtar #define GAT_BUS_D_PERIC_IPCLKPORT_DMACLK 0x2034 348e3f3dc38SAlim Akhtar #define GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK 0x2038 349e3f3dc38SAlim Akhtar #define GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK 0x203c 350e3f3dc38SAlim Akhtar #define GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK 0x2040 351e3f3dc38SAlim Akhtar #define GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK 0x2044 352e3f3dc38SAlim Akhtar #define GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK 0x2048 353e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_ACLK_I 0x204c 354e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I 0x2050 355e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_HCLK_I 0x2054 356e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I 0x2058 357e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I 0x205c 358e3f3dc38SAlim Akhtar #define GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I 0x2060 359e3f3dc38SAlim Akhtar #define GAT_GPIO_PERIC_IPCLKPORT_PCLK 0x2064 360e3f3dc38SAlim Akhtar #define GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D 0x2068 361e3f3dc38SAlim Akhtar #define GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P 0x206c 362e3f3dc38SAlim Akhtar #define GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0 0x2070 363e3f3dc38SAlim Akhtar #define GAT_PERIC_DMA0_IPCLKPORT_ACLK 0x2074 364e3f3dc38SAlim Akhtar #define GAT_PERIC_DMA1_IPCLKPORT_ACLK 0x2078 365e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C0_IPCLKPORT_I_PCLK 0x207c 366e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C1_IPCLKPORT_I_PCLK 0x2080 367e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C2_IPCLKPORT_I_PCLK 0x2084 368e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C3_IPCLKPORT_I_PCLK 0x2088 369e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C4_IPCLKPORT_I_PCLK 0x208c 370e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C5_IPCLKPORT_I_PCLK 0x2090 371e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C6_IPCLKPORT_I_PCLK 0x2094 372e3f3dc38SAlim Akhtar #define GAT_PERIC_I2C7_IPCLKPORT_I_PCLK 0x2098 373e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN0_IPCLKPORT_CCLK 0x209c 374e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN0_IPCLKPORT_PCLK 0x20a0 375e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN1_IPCLKPORT_CCLK 0x20a4 376e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN1_IPCLKPORT_PCLK 0x20a8 377e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN2_IPCLKPORT_CCLK 0x20ac 378e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN2_IPCLKPORT_PCLK 0x20b0 379e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN3_IPCLKPORT_CCLK 0x20b4 380e3f3dc38SAlim Akhtar #define GAT_PERIC_MCAN3_IPCLKPORT_PCLK 0x20b8 381e3f3dc38SAlim Akhtar #define GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0 0x20bc 382e3f3dc38SAlim Akhtar #define GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0 0x20c0 383e3f3dc38SAlim Akhtar #define GAT_PERIC_SMMU_IPCLKPORT_CCLK 0x20c4 384e3f3dc38SAlim Akhtar #define GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK 0x20c8 385e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI0_IPCLKPORT_I_PCLK 0x20cc 386e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI 0x20d0 387e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI1_IPCLKPORT_I_PCLK 0x20d4 388e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI 0x20d8 389e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI2_IPCLKPORT_I_PCLK 0x20dc 390e3f3dc38SAlim Akhtar #define GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI 0x20e0 391e3f3dc38SAlim Akhtar #define GAT_PERIC_TDM0_IPCLKPORT_HCLK_M 0x20e4 392e3f3dc38SAlim Akhtar #define GAT_PERIC_TDM0_IPCLKPORT_PCLK 0x20e8 393e3f3dc38SAlim Akhtar #define GAT_PERIC_TDM1_IPCLKPORT_HCLK_M 0x20ec 394e3f3dc38SAlim Akhtar #define GAT_PERIC_TDM1_IPCLKPORT_PCLK 0x20f0 395e3f3dc38SAlim Akhtar #define GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART 0x20f4 396e3f3dc38SAlim Akhtar #define GAT_PERIC_UART0_IPCLKPORT_PCLK 0x20f8 397e3f3dc38SAlim Akhtar #define GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART 0x20fc 398e3f3dc38SAlim Akhtar #define GAT_PERIC_UART1_IPCLKPORT_PCLK 0x2100 399e3f3dc38SAlim Akhtar #define GAT_SYSREG_PERI_IPCLKPORT_PCLK 0x2104 400e3f3dc38SAlim Akhtar 401e3f3dc38SAlim Akhtar static const unsigned long peric_clk_regs[] __initconst = { 402e3f3dc38SAlim Akhtar PLL_CON0_PERIC_DMACLK_MUX, 403e3f3dc38SAlim Akhtar PLL_CON0_PERIC_EQOS_BUSCLK_MUX, 404e3f3dc38SAlim Akhtar PLL_CON0_PERIC_PCLK_MUX, 405e3f3dc38SAlim Akhtar PLL_CON0_PERIC_TBUCLK_MUX, 406e3f3dc38SAlim Akhtar PLL_CON0_SPI_CLK, 407e3f3dc38SAlim Akhtar PLL_CON0_SPI_PCLK, 408e3f3dc38SAlim Akhtar PLL_CON0_UART_CLK, 409e3f3dc38SAlim Akhtar PLL_CON0_UART_PCLK, 410e3f3dc38SAlim Akhtar MUX_PERIC_EQOS_PHYRXCLK, 411e3f3dc38SAlim Akhtar DIV_EQOS_BUSCLK, 412e3f3dc38SAlim Akhtar DIV_PERIC_MCAN_CLK, 413e3f3dc38SAlim Akhtar DIV_RGMII_CLK, 414e3f3dc38SAlim Akhtar DIV_RII_CLK, 415e3f3dc38SAlim Akhtar DIV_RMII_CLK, 416e3f3dc38SAlim Akhtar DIV_SPI_CLK, 417e3f3dc38SAlim Akhtar DIV_UART_CLK, 418e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, 419e3f3dc38SAlim Akhtar GAT_GPIO_PERIC_IPCLKPORT_OSCCLK, 420e3f3dc38SAlim Akhtar GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK, 421e3f3dc38SAlim Akhtar GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK, 422e3f3dc38SAlim Akhtar GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK, 423e3f3dc38SAlim Akhtar GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK, 424e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM, 425e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS, 426e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM, 427e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS, 428e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK, 429e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK, 430e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK, 431e3f3dc38SAlim Akhtar GAT_BUS_D_PERIC_IPCLKPORT_DMACLK, 432e3f3dc38SAlim Akhtar GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK, 433e3f3dc38SAlim Akhtar GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK, 434e3f3dc38SAlim Akhtar GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK, 435e3f3dc38SAlim Akhtar GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK, 436e3f3dc38SAlim Akhtar GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK, 437e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_ACLK_I, 438e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I, 439e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_HCLK_I, 440e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, 441e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I, 442e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I, 443e3f3dc38SAlim Akhtar GAT_GPIO_PERIC_IPCLKPORT_PCLK, 444e3f3dc38SAlim Akhtar GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D, 445e3f3dc38SAlim Akhtar GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P, 446e3f3dc38SAlim Akhtar GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0, 447e3f3dc38SAlim Akhtar GAT_PERIC_DMA0_IPCLKPORT_ACLK, 448e3f3dc38SAlim Akhtar GAT_PERIC_DMA1_IPCLKPORT_ACLK, 449e3f3dc38SAlim Akhtar GAT_PERIC_I2C0_IPCLKPORT_I_PCLK, 450e3f3dc38SAlim Akhtar GAT_PERIC_I2C1_IPCLKPORT_I_PCLK, 451e3f3dc38SAlim Akhtar GAT_PERIC_I2C2_IPCLKPORT_I_PCLK, 452e3f3dc38SAlim Akhtar GAT_PERIC_I2C3_IPCLKPORT_I_PCLK, 453e3f3dc38SAlim Akhtar GAT_PERIC_I2C4_IPCLKPORT_I_PCLK, 454e3f3dc38SAlim Akhtar GAT_PERIC_I2C5_IPCLKPORT_I_PCLK, 455e3f3dc38SAlim Akhtar GAT_PERIC_I2C6_IPCLKPORT_I_PCLK, 456e3f3dc38SAlim Akhtar GAT_PERIC_I2C7_IPCLKPORT_I_PCLK, 457e3f3dc38SAlim Akhtar GAT_PERIC_MCAN0_IPCLKPORT_CCLK, 458e3f3dc38SAlim Akhtar GAT_PERIC_MCAN0_IPCLKPORT_PCLK, 459e3f3dc38SAlim Akhtar GAT_PERIC_MCAN1_IPCLKPORT_CCLK, 460e3f3dc38SAlim Akhtar GAT_PERIC_MCAN1_IPCLKPORT_PCLK, 461e3f3dc38SAlim Akhtar GAT_PERIC_MCAN2_IPCLKPORT_CCLK, 462e3f3dc38SAlim Akhtar GAT_PERIC_MCAN2_IPCLKPORT_PCLK, 463e3f3dc38SAlim Akhtar GAT_PERIC_MCAN3_IPCLKPORT_CCLK, 464e3f3dc38SAlim Akhtar GAT_PERIC_MCAN3_IPCLKPORT_PCLK, 465e3f3dc38SAlim Akhtar GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0, 466e3f3dc38SAlim Akhtar GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0, 467e3f3dc38SAlim Akhtar GAT_PERIC_SMMU_IPCLKPORT_CCLK, 468e3f3dc38SAlim Akhtar GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK, 469e3f3dc38SAlim Akhtar GAT_PERIC_SPI0_IPCLKPORT_I_PCLK, 470e3f3dc38SAlim Akhtar GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI, 471e3f3dc38SAlim Akhtar GAT_PERIC_SPI1_IPCLKPORT_I_PCLK, 472e3f3dc38SAlim Akhtar GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI, 473e3f3dc38SAlim Akhtar GAT_PERIC_SPI2_IPCLKPORT_I_PCLK, 474e3f3dc38SAlim Akhtar GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI, 475e3f3dc38SAlim Akhtar GAT_PERIC_TDM0_IPCLKPORT_HCLK_M, 476e3f3dc38SAlim Akhtar GAT_PERIC_TDM0_IPCLKPORT_PCLK, 477e3f3dc38SAlim Akhtar GAT_PERIC_TDM1_IPCLKPORT_HCLK_M, 478e3f3dc38SAlim Akhtar GAT_PERIC_TDM1_IPCLKPORT_PCLK, 479e3f3dc38SAlim Akhtar GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART, 480e3f3dc38SAlim Akhtar GAT_PERIC_UART0_IPCLKPORT_PCLK, 481e3f3dc38SAlim Akhtar GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART, 482e3f3dc38SAlim Akhtar GAT_PERIC_UART1_IPCLKPORT_PCLK, 483e3f3dc38SAlim Akhtar GAT_SYSREG_PERI_IPCLKPORT_PCLK, 484e3f3dc38SAlim Akhtar }; 485e3f3dc38SAlim Akhtar 486e3f3dc38SAlim Akhtar static const struct samsung_fixed_rate_clock peric_fixed_clks[] __initconst = { 487e3f3dc38SAlim Akhtar FRATE(PERIC_EQOS_PHYRXCLK, "eqos_phyrxclk", NULL, 0, 125000000), 488e3f3dc38SAlim Akhtar }; 489e3f3dc38SAlim Akhtar 490e3f3dc38SAlim Akhtar /* List of parent clocks for Muxes in CMU_PERIC */ 491e3f3dc38SAlim Akhtar PNAME(mout_peric_dmaclk_p) = { "fin_pll", "cmu_peric_shared1div4_dmaclk_gate" }; 492e3f3dc38SAlim Akhtar PNAME(mout_peric_eqos_busclk_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 493e3f3dc38SAlim Akhtar PNAME(mout_peric_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 494e3f3dc38SAlim Akhtar PNAME(mout_peric_tbuclk_p) = { "fin_pll", "dout_cmu_peric_shared0div3_tbuclk" }; 495e3f3dc38SAlim Akhtar PNAME(mout_peric_spi_clk_p) = { "fin_pll", "dout_cmu_peric_shared0div20" }; 496e3f3dc38SAlim Akhtar PNAME(mout_peric_spi_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 497e3f3dc38SAlim Akhtar PNAME(mout_peric_uart_clk_p) = { "fin_pll", "dout_cmu_peric_shared1div4_dmaclk" }; 498e3f3dc38SAlim Akhtar PNAME(mout_peric_uart_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 499e3f3dc38SAlim Akhtar PNAME(mout_peric_eqos_phyrxclk_p) = { "dout_peric_rgmii_clk", "eqos_phyrxclk" }; 500e3f3dc38SAlim Akhtar 501e3f3dc38SAlim Akhtar static const struct samsung_mux_clock peric_mux_clks[] __initconst = { 502e3f3dc38SAlim Akhtar MUX(0, "mout_peric_dmaclk", mout_peric_dmaclk_p, PLL_CON0_PERIC_DMACLK_MUX, 4, 1), 503e3f3dc38SAlim Akhtar MUX(0, "mout_peric_eqos_busclk", mout_peric_eqos_busclk_p, 504e3f3dc38SAlim Akhtar PLL_CON0_PERIC_EQOS_BUSCLK_MUX, 4, 1), 505e3f3dc38SAlim Akhtar MUX(0, "mout_peric_pclk", mout_peric_pclk_p, PLL_CON0_PERIC_PCLK_MUX, 4, 1), 506e3f3dc38SAlim Akhtar MUX(0, "mout_peric_tbuclk", mout_peric_tbuclk_p, PLL_CON0_PERIC_TBUCLK_MUX, 4, 1), 507e3f3dc38SAlim Akhtar MUX(0, "mout_peric_spi_clk", mout_peric_spi_clk_p, PLL_CON0_SPI_CLK, 4, 1), 508e3f3dc38SAlim Akhtar MUX(0, "mout_peric_spi_pclk", mout_peric_spi_pclk_p, PLL_CON0_SPI_PCLK, 4, 1), 509e3f3dc38SAlim Akhtar MUX(0, "mout_peric_uart_clk", mout_peric_uart_clk_p, PLL_CON0_UART_CLK, 4, 1), 510e3f3dc38SAlim Akhtar MUX(0, "mout_peric_uart_pclk", mout_peric_uart_pclk_p, PLL_CON0_UART_PCLK, 4, 1), 511e3f3dc38SAlim Akhtar MUX(PERIC_EQOS_PHYRXCLK_MUX, "mout_peric_eqos_phyrxclk", mout_peric_eqos_phyrxclk_p, 512e3f3dc38SAlim Akhtar MUX_PERIC_EQOS_PHYRXCLK, 0, 1), 513e3f3dc38SAlim Akhtar }; 514e3f3dc38SAlim Akhtar 515e3f3dc38SAlim Akhtar static const struct samsung_div_clock peric_div_clks[] __initconst = { 516e3f3dc38SAlim Akhtar DIV(0, "dout_peric_eqos_busclk", "mout_peric_eqos_busclk", DIV_EQOS_BUSCLK, 0, 4), 517e3f3dc38SAlim Akhtar DIV(0, "dout_peric_mcan_clk", "mout_peric_dmaclk", DIV_PERIC_MCAN_CLK, 0, 4), 518e3f3dc38SAlim Akhtar DIV(PERIC_DOUT_RGMII_CLK, "dout_peric_rgmii_clk", "mout_peric_eqos_busclk", 519e3f3dc38SAlim Akhtar DIV_RGMII_CLK, 0, 4), 520e3f3dc38SAlim Akhtar DIV(0, "dout_peric_rii_clk", "dout_peric_rmii_clk", DIV_RII_CLK, 0, 4), 521e3f3dc38SAlim Akhtar DIV(0, "dout_peric_rmii_clk", "dout_peric_rgmii_clk", DIV_RMII_CLK, 0, 4), 522e3f3dc38SAlim Akhtar DIV(0, "dout_peric_spi_clk", "mout_peric_spi_clk", DIV_SPI_CLK, 0, 6), 523e3f3dc38SAlim Akhtar DIV(0, "dout_peric_uart_clk", "mout_peric_uart_clk", DIV_UART_CLK, 0, 6), 524e3f3dc38SAlim Akhtar }; 525e3f3dc38SAlim Akhtar 526e3f3dc38SAlim Akhtar static const struct samsung_gate_clock peric_gate_clks[] __initconst = { 527e3f3dc38SAlim Akhtar GATE(PERIC_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, "peric_eqos_top_ipclkport_clk_ptp_ref_i", 528e3f3dc38SAlim Akhtar "fin_pll", GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, 21, CLK_IGNORE_UNUSED, 0), 529e3f3dc38SAlim Akhtar GATE(0, "peric_gpio_peric_ipclkport_oscclk", "fin_pll", GAT_GPIO_PERIC_IPCLKPORT_OSCCLK, 530e3f3dc38SAlim Akhtar 21, CLK_IGNORE_UNUSED, 0), 531e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_ADCIF, "peric_adc0_ipclkport_i_oscclk", "fin_pll", 532e3f3dc38SAlim Akhtar GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 533e3f3dc38SAlim Akhtar GATE(0, "peric_cmu_peric_ipclkport_pclk", "mout_peric_pclk", 534e3f3dc38SAlim Akhtar GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 535e3f3dc38SAlim Akhtar GATE(0, "peric_pwm0_ipclkport_i_oscclk", "fin_pll", GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK, 21, 536e3f3dc38SAlim Akhtar CLK_IGNORE_UNUSED, 0), 537e3f3dc38SAlim Akhtar GATE(0, "peric_pwm1_ipclkport_i_oscclk", "fin_pll", GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK, 21, 538e3f3dc38SAlim Akhtar CLK_IGNORE_UNUSED, 0), 539e3f3dc38SAlim Akhtar GATE(0, "peric_async_apb_dma0_ipclkport_pclkm", "mout_peric_dmaclk", 540e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 541e3f3dc38SAlim Akhtar GATE(0, "peric_async_apb_dma0_ipclkport_pclks", "mout_peric_pclk", 542e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 543e3f3dc38SAlim Akhtar GATE(0, "peric_async_apb_dma1_ipclkport_pclkm", "mout_peric_dmaclk", 544e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 545e3f3dc38SAlim Akhtar GATE(0, "peric_async_apb_dma1_ipclkport_pclks", "mout_peric_pclk", 546e3f3dc38SAlim Akhtar GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 547e3f3dc38SAlim Akhtar GATE(0, "peric_axi2apb_peric0_ipclkport_aclk", "mout_peric_pclk", 548e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 549e3f3dc38SAlim Akhtar GATE(0, "peric_axi2apb_peric1_ipclkport_aclk", "mout_peric_pclk", 550e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 551e3f3dc38SAlim Akhtar GATE(0, "peric_axi2apb_peric2_ipclkport_aclk", "mout_peric_pclk", 552e3f3dc38SAlim Akhtar GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 553e3f3dc38SAlim Akhtar GATE(0, "peric_bus_d_peric_ipclkport_dmaclk", "mout_peric_dmaclk", 554e3f3dc38SAlim Akhtar GAT_BUS_D_PERIC_IPCLKPORT_DMACLK, 21, CLK_IGNORE_UNUSED, 0), 555e3f3dc38SAlim Akhtar GATE(PERIC_BUS_D_PERIC_IPCLKPORT_EQOSCLK, "peric_bus_d_peric_ipclkport_eqosclk", 556e3f3dc38SAlim Akhtar "dout_peric_eqos_busclk", GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK, 21, CLK_IGNORE_UNUSED, 0), 557e3f3dc38SAlim Akhtar GATE(0, "peric_bus_d_peric_ipclkport_mainclk", "mout_peric_tbuclk", 558e3f3dc38SAlim Akhtar GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 559e3f3dc38SAlim Akhtar GATE(PERIC_BUS_P_PERIC_IPCLKPORT_EQOSCLK, "peric_bus_p_peric_ipclkport_eqosclk", 560e3f3dc38SAlim Akhtar "dout_peric_eqos_busclk", GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK, 21, CLK_IGNORE_UNUSED, 0), 561e3f3dc38SAlim Akhtar GATE(0, "peric_bus_p_peric_ipclkport_mainclk", "mout_peric_pclk", 562e3f3dc38SAlim Akhtar GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 563e3f3dc38SAlim Akhtar GATE(0, "peric_bus_p_peric_ipclkport_smmuclk", "mout_peric_tbuclk", 564e3f3dc38SAlim Akhtar GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK, 21, CLK_IGNORE_UNUSED, 0), 565e3f3dc38SAlim Akhtar GATE(PERIC_EQOS_TOP_IPCLKPORT_ACLK_I, "peric_eqos_top_ipclkport_aclk_i", 566e3f3dc38SAlim Akhtar "dout_peric_eqos_busclk", GAT_EQOS_TOP_IPCLKPORT_ACLK_I, 21, CLK_IGNORE_UNUSED, 0), 567e3f3dc38SAlim Akhtar GATE(PERIC_EQOS_TOP_IPCLKPORT_CLK_RX_I, "peric_eqos_top_ipclkport_clk_rx_i", 568e3f3dc38SAlim Akhtar "mout_peric_eqos_phyrxclk", GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I, 21, CLK_IGNORE_UNUSED, 0), 569e3f3dc38SAlim Akhtar GATE(PERIC_EQOS_TOP_IPCLKPORT_HCLK_I, "peric_eqos_top_ipclkport_hclk_i", 570e3f3dc38SAlim Akhtar "dout_peric_eqos_busclk", GAT_EQOS_TOP_IPCLKPORT_HCLK_I, 21, CLK_IGNORE_UNUSED, 0), 571e3f3dc38SAlim Akhtar GATE(PERIC_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, "peric_eqos_top_ipclkport_rgmii_clk_i", 572e3f3dc38SAlim Akhtar "dout_peric_rgmii_clk", GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 573e3f3dc38SAlim Akhtar GATE(0, "peric_eqos_top_ipclkport_rii_clk_i", "dout_peric_rii_clk", 574e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 575e3f3dc38SAlim Akhtar GATE(0, "peric_eqos_top_ipclkport_rmii_clk_i", "dout_peric_rmii_clk", 576e3f3dc38SAlim Akhtar GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 577e3f3dc38SAlim Akhtar GATE(0, "peric_gpio_peric_ipclkport_pclk", "mout_peric_pclk", 578e3f3dc38SAlim Akhtar GAT_GPIO_PERIC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 579e3f3dc38SAlim Akhtar GATE(0, "peric_ns_brdg_peric_ipclkport_clk__psoc_peric__clk_peric_d", "mout_peric_tbuclk", 580e3f3dc38SAlim Akhtar GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D, 21, CLK_IGNORE_UNUSED, 0), 581e3f3dc38SAlim Akhtar GATE(0, "peric_ns_brdg_peric_ipclkport_clk__psoc_peric__clk_peric_p", "mout_peric_pclk", 582e3f3dc38SAlim Akhtar GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P, 21, CLK_IGNORE_UNUSED, 0), 583e3f3dc38SAlim Akhtar GATE(0, "peric_adc0_ipclkport_pclk_s0", "mout_peric_pclk", 584e3f3dc38SAlim Akhtar GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 585e3f3dc38SAlim Akhtar GATE(PERIC_DMA0_IPCLKPORT_ACLK, "peric_dma0_ipclkport_aclk", "mout_peric_dmaclk", 586e3f3dc38SAlim Akhtar GAT_PERIC_DMA0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 587e3f3dc38SAlim Akhtar GATE(PERIC_DMA1_IPCLKPORT_ACLK, "peric_dma1_ipclkport_aclk", "mout_peric_dmaclk", 588e3f3dc38SAlim Akhtar GAT_PERIC_DMA1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 589e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C0, "peric_i2c0_ipclkport_i_pclk", "mout_peric_pclk", 590e3f3dc38SAlim Akhtar GAT_PERIC_I2C0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 591e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C1, "peric_i2c1_ipclkport_i_pclk", "mout_peric_pclk", 592e3f3dc38SAlim Akhtar GAT_PERIC_I2C1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 593e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C2, "peric_i2c2_ipclkport_i_pclk", "mout_peric_pclk", 594e3f3dc38SAlim Akhtar GAT_PERIC_I2C2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 595e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C3, "peric_i2c3_ipclkport_i_pclk", "mout_peric_pclk", 596e3f3dc38SAlim Akhtar GAT_PERIC_I2C3_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 597e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C4, "peric_i2c4_ipclkport_i_pclk", "mout_peric_pclk", 598e3f3dc38SAlim Akhtar GAT_PERIC_I2C4_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 599e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C5, "peric_i2c5_ipclkport_i_pclk", "mout_peric_pclk", 600e3f3dc38SAlim Akhtar GAT_PERIC_I2C5_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 601e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C6, "peric_i2c6_ipclkport_i_pclk", "mout_peric_pclk", 602e3f3dc38SAlim Akhtar GAT_PERIC_I2C6_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 603e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_HSI2C7, "peric_i2c7_ipclkport_i_pclk", "mout_peric_pclk", 604e3f3dc38SAlim Akhtar GAT_PERIC_I2C7_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 605e3f3dc38SAlim Akhtar GATE(PERIC_MCAN0_IPCLKPORT_CCLK, "peric_mcan0_ipclkport_cclk", "dout_peric_mcan_clk", 606e3f3dc38SAlim Akhtar GAT_PERIC_MCAN0_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 607e3f3dc38SAlim Akhtar GATE(PERIC_MCAN0_IPCLKPORT_PCLK, "peric_mcan0_ipclkport_pclk", "mout_peric_pclk", 608e3f3dc38SAlim Akhtar GAT_PERIC_MCAN0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 609e3f3dc38SAlim Akhtar GATE(PERIC_MCAN1_IPCLKPORT_CCLK, "peric_mcan1_ipclkport_cclk", "dout_peric_mcan_clk", 610e3f3dc38SAlim Akhtar GAT_PERIC_MCAN1_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 611e3f3dc38SAlim Akhtar GATE(PERIC_MCAN1_IPCLKPORT_PCLK, "peric_mcan1_ipclkport_pclk", "mout_peric_pclk", 612e3f3dc38SAlim Akhtar GAT_PERIC_MCAN1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 613e3f3dc38SAlim Akhtar GATE(PERIC_MCAN2_IPCLKPORT_CCLK, "peric_mcan2_ipclkport_cclk", "dout_peric_mcan_clk", 614e3f3dc38SAlim Akhtar GAT_PERIC_MCAN2_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 615e3f3dc38SAlim Akhtar GATE(PERIC_MCAN2_IPCLKPORT_PCLK, "peric_mcan2_ipclkport_pclk", "mout_peric_pclk", 616e3f3dc38SAlim Akhtar GAT_PERIC_MCAN2_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 617e3f3dc38SAlim Akhtar GATE(PERIC_MCAN3_IPCLKPORT_CCLK, "peric_mcan3_ipclkport_cclk", "dout_peric_mcan_clk", 618e3f3dc38SAlim Akhtar GAT_PERIC_MCAN3_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 619e3f3dc38SAlim Akhtar GATE(PERIC_MCAN3_IPCLKPORT_PCLK, "peric_mcan3_ipclkport_pclk", "mout_peric_pclk", 620e3f3dc38SAlim Akhtar GAT_PERIC_MCAN3_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 621e3f3dc38SAlim Akhtar GATE(PERIC_PWM0_IPCLKPORT_I_PCLK_S0, "peric_pwm0_ipclkport_i_pclk_s0", "mout_peric_pclk", 622e3f3dc38SAlim Akhtar GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 623e3f3dc38SAlim Akhtar GATE(PERIC_PWM1_IPCLKPORT_I_PCLK_S0, "peric_pwm1_ipclkport_i_pclk_s0", "mout_peric_pclk", 624e3f3dc38SAlim Akhtar GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 625e3f3dc38SAlim Akhtar GATE(0, "peric_smmu_ipclkport_cclk", "mout_peric_tbuclk", 626e3f3dc38SAlim Akhtar GAT_PERIC_SMMU_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 627e3f3dc38SAlim Akhtar GATE(0, "peric_smmu_ipclkport_peric_bclk", "mout_peric_tbuclk", 628e3f3dc38SAlim Akhtar GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK, 21, CLK_IGNORE_UNUSED, 0), 629e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_SPI0, "peric_spi0_ipclkport_i_pclk", "mout_peric_spi_pclk", 630e3f3dc38SAlim Akhtar GAT_PERIC_SPI0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 631e3f3dc38SAlim Akhtar GATE(PERIC_SCLK_SPI0, "peric_spi0_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 632e3f3dc38SAlim Akhtar GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 633e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_SPI1, "peric_spi1_ipclkport_i_pclk", "mout_peric_spi_pclk", 634e3f3dc38SAlim Akhtar GAT_PERIC_SPI1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 635e3f3dc38SAlim Akhtar GATE(PERIC_SCLK_SPI1, "peric_spi1_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 636e3f3dc38SAlim Akhtar GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 637e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_SPI2, "peric_spi2_ipclkport_i_pclk", "mout_peric_spi_pclk", 638e3f3dc38SAlim Akhtar GAT_PERIC_SPI2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 639e3f3dc38SAlim Akhtar GATE(PERIC_SCLK_SPI2, "peric_spi2_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 640e3f3dc38SAlim Akhtar GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 641e3f3dc38SAlim Akhtar GATE(PERIC_HCLK_TDM0, "peric_tdm0_ipclkport_hclk_m", "mout_peric_pclk", 642e3f3dc38SAlim Akhtar GAT_PERIC_TDM0_IPCLKPORT_HCLK_M, 21, CLK_IGNORE_UNUSED, 0), 643e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_TDM0, "peric_tdm0_ipclkport_pclk", "mout_peric_pclk", 644e3f3dc38SAlim Akhtar GAT_PERIC_TDM0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 645e3f3dc38SAlim Akhtar GATE(PERIC_HCLK_TDM1, "peric_tdm1_ipclkport_hclk_m", "mout_peric_pclk", 646e3f3dc38SAlim Akhtar GAT_PERIC_TDM1_IPCLKPORT_HCLK_M, 21, CLK_IGNORE_UNUSED, 0), 647e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_TDM1, "peric_tdm1_ipclkport_pclk", "mout_peric_pclk", 648e3f3dc38SAlim Akhtar GAT_PERIC_TDM1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 649e3f3dc38SAlim Akhtar GATE(PERIC_SCLK_UART0, "peric_uart0_ipclkport_i_sclk_uart", "dout_peric_uart_clk", 650e3f3dc38SAlim Akhtar GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART, 21, CLK_IGNORE_UNUSED, 0), 651e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_UART0, "peric_uart0_ipclkport_pclk", "mout_peric_uart_pclk", 652e3f3dc38SAlim Akhtar GAT_PERIC_UART0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 653e3f3dc38SAlim Akhtar GATE(PERIC_SCLK_UART1, "peric_uart1_ipclkport_i_sclk_uart", "dout_peric_uart_clk", 654e3f3dc38SAlim Akhtar GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART, 21, CLK_IGNORE_UNUSED, 0), 655e3f3dc38SAlim Akhtar GATE(PERIC_PCLK_UART1, "peric_uart1_ipclkport_pclk", "mout_peric_uart_pclk", 656e3f3dc38SAlim Akhtar GAT_PERIC_UART1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 657e3f3dc38SAlim Akhtar GATE(0, "peric_sysreg_peri_ipclkport_pclk", "mout_peric_pclk", 658e3f3dc38SAlim Akhtar GAT_SYSREG_PERI_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 659e3f3dc38SAlim Akhtar }; 660e3f3dc38SAlim Akhtar 661e3f3dc38SAlim Akhtar static const struct samsung_cmu_info peric_cmu_info __initconst = { 662e3f3dc38SAlim Akhtar .mux_clks = peric_mux_clks, 663e3f3dc38SAlim Akhtar .nr_mux_clks = ARRAY_SIZE(peric_mux_clks), 664e3f3dc38SAlim Akhtar .div_clks = peric_div_clks, 665e3f3dc38SAlim Akhtar .nr_div_clks = ARRAY_SIZE(peric_div_clks), 666e3f3dc38SAlim Akhtar .gate_clks = peric_gate_clks, 667e3f3dc38SAlim Akhtar .nr_gate_clks = ARRAY_SIZE(peric_gate_clks), 668e3f3dc38SAlim Akhtar .fixed_clks = peric_fixed_clks, 669e3f3dc38SAlim Akhtar .nr_fixed_clks = ARRAY_SIZE(peric_fixed_clks), 670e3f3dc38SAlim Akhtar .nr_clk_ids = PERIC_NR_CLK, 671e3f3dc38SAlim Akhtar .clk_regs = peric_clk_regs, 672e3f3dc38SAlim Akhtar .nr_clk_regs = ARRAY_SIZE(peric_clk_regs), 673e3f3dc38SAlim Akhtar .clk_name = "dout_cmu_pll_shared0_div4", 674e3f3dc38SAlim Akhtar }; 675e3f3dc38SAlim Akhtar 676a15e367bSAlim Akhtar /* Register Offset definitions for CMU_FSYS0 (0x15010000) */ 677a15e367bSAlim Akhtar #define PLL_CON0_CLKCMU_FSYS0_UNIPRO 0x100 678a15e367bSAlim Akhtar #define PLL_CON0_CLK_FSYS0_SLAVEBUSCLK 0x140 679a15e367bSAlim Akhtar #define PLL_CON0_EQOS_RGMII_125_MUX1 0x160 680a15e367bSAlim Akhtar #define DIV_CLK_UNIPRO 0x1800 681a15e367bSAlim Akhtar #define DIV_EQS_RGMII_CLK_125 0x1804 682a15e367bSAlim Akhtar #define DIV_PERIBUS_GRP 0x1808 683a15e367bSAlim Akhtar #define DIV_EQOS_RII_CLK2O5 0x180c 684a15e367bSAlim Akhtar #define DIV_EQOS_RMIICLK_25 0x1810 685a15e367bSAlim Akhtar #define DIV_PCIE_PHY_OSCCLK 0x1814 686a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I 0x2004 687a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I 0x2008 688a15e367bSAlim Akhtar #define GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK 0x200c 689a15e367bSAlim Akhtar #define GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK 0x2010 690a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO 0x2014 691a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK 0x2018 692a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC 0x201c 693a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24 0x2020 694a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26 0x2024 695a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24 0x2028 696a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26 0x202c 697a15e367bSAlim Akhtar #define GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK 0x2038 698a15e367bSAlim Akhtar #define GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK 0x203c 699a15e367bSAlim Akhtar #define GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK 0x2040 700a15e367bSAlim Akhtar #define GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK 0x2044 701a15e367bSAlim Akhtar #define GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK 0x2048 702a15e367bSAlim Akhtar #define GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK 0x204c 703a15e367bSAlim Akhtar #define GAT_FSYS0_CPE425_IPCLKPORT_ACLK 0x2050 704a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I 0x2054 705a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I 0x2058 706a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I 0x205c 707a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I 0x2060 708a15e367bSAlim Akhtar #define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I 0x2064 709a15e367bSAlim Akhtar #define GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK 0x2068 710a15e367bSAlim Akhtar #define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D 0x206c 711a15e367bSAlim Akhtar #define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1 0x2070 712a15e367bSAlim Akhtar #define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P 0x2074 713a15e367bSAlim Akhtar #define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S 0x2078 714a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK 0x207c 715a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL 0x2080 716a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0 0x2084 717a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC 0x2088 718a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK 0x208c 719a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC 0x2090 720a15e367bSAlim Akhtar #define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC 0x2094 721a15e367bSAlim Akhtar #define GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK 0x2098 722a15e367bSAlim Akhtar #define GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK 0x209c 723a15e367bSAlim Akhtar #define GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK 0x20a0 724a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS 0x20a4 725a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK 0x20a8 726a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO 0x20ac 727a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK 0x20b0 728a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS 0x20b4 729a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK 0x20b8 730a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO 0x20bc 731a15e367bSAlim Akhtar #define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK 0x20c0 732a15e367bSAlim Akhtar #define GAT_FSYS0_RII_CLK_DIVGATE 0x20d4 733a15e367bSAlim Akhtar 734a15e367bSAlim Akhtar static const unsigned long fsys0_clk_regs[] __initconst = { 735a15e367bSAlim Akhtar PLL_CON0_CLKCMU_FSYS0_UNIPRO, 736a15e367bSAlim Akhtar PLL_CON0_CLK_FSYS0_SLAVEBUSCLK, 737a15e367bSAlim Akhtar PLL_CON0_EQOS_RGMII_125_MUX1, 738a15e367bSAlim Akhtar DIV_CLK_UNIPRO, 739a15e367bSAlim Akhtar DIV_EQS_RGMII_CLK_125, 740a15e367bSAlim Akhtar DIV_PERIBUS_GRP, 741a15e367bSAlim Akhtar DIV_EQOS_RII_CLK2O5, 742a15e367bSAlim Akhtar DIV_EQOS_RMIICLK_25, 743a15e367bSAlim Akhtar DIV_PCIE_PHY_OSCCLK, 744a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, 745a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, 746a15e367bSAlim Akhtar GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK, 747a15e367bSAlim Akhtar GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK, 748a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO, 749a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK, 750a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC, 751a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 752a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 753a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 754a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 755a15e367bSAlim Akhtar GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK, 756a15e367bSAlim Akhtar GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK, 757a15e367bSAlim Akhtar GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK, 758a15e367bSAlim Akhtar GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK, 759a15e367bSAlim Akhtar GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK, 760a15e367bSAlim Akhtar GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK, 761a15e367bSAlim Akhtar GAT_FSYS0_CPE425_IPCLKPORT_ACLK, 762a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, 763a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, 764a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, 765a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I, 766a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I, 767a15e367bSAlim Akhtar GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK, 768a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D, 769a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1, 770a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P, 771a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S, 772a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK, 773a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL, 774a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0, 775a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC, 776a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK, 777a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC, 778a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC, 779a15e367bSAlim Akhtar GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK, 780a15e367bSAlim Akhtar GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK, 781a15e367bSAlim Akhtar GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK, 782a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS, 783a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK, 784a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO, 785a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK, 786a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS, 787a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK, 788a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO, 789a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK, 790a15e367bSAlim Akhtar GAT_FSYS0_RII_CLK_DIVGATE, 791a15e367bSAlim Akhtar }; 792a15e367bSAlim Akhtar 793a15e367bSAlim Akhtar static const struct samsung_fixed_rate_clock fsys0_fixed_clks[] __initconst = { 794a15e367bSAlim Akhtar FRATE(0, "pad_eqos0_phyrxclk", NULL, 0, 125000000), 795a15e367bSAlim Akhtar FRATE(0, "i_mphy_refclk_ixtal26", NULL, 0, 26000000), 796a15e367bSAlim Akhtar FRATE(0, "xtal_clk_pcie_phy", NULL, 0, 100000000), 797a15e367bSAlim Akhtar }; 798a15e367bSAlim Akhtar 799a15e367bSAlim Akhtar /* List of parent clocks for Muxes in CMU_FSYS0 */ 800a15e367bSAlim Akhtar PNAME(mout_fsys0_clkcmu_fsys0_unipro_p) = { "fin_pll", "dout_cmu_pll_shared0_div6" }; 801a15e367bSAlim Akhtar PNAME(mout_fsys0_clk_fsys0_slavebusclk_p) = { "fin_pll", "dout_cmu_fsys0_shared1div4" }; 802a15e367bSAlim Akhtar PNAME(mout_fsys0_eqos_rgmii_125_mux1_p) = { "fin_pll", "dout_cmu_fsys0_shared0div4" }; 803a15e367bSAlim Akhtar 804a15e367bSAlim Akhtar static const struct samsung_mux_clock fsys0_mux_clks[] __initconst = { 805a15e367bSAlim Akhtar MUX(0, "mout_fsys0_clkcmu_fsys0_unipro", mout_fsys0_clkcmu_fsys0_unipro_p, 806a15e367bSAlim Akhtar PLL_CON0_CLKCMU_FSYS0_UNIPRO, 4, 1), 807a15e367bSAlim Akhtar MUX(0, "mout_fsys0_clk_fsys0_slavebusclk", mout_fsys0_clk_fsys0_slavebusclk_p, 808a15e367bSAlim Akhtar PLL_CON0_CLK_FSYS0_SLAVEBUSCLK, 4, 1), 809a15e367bSAlim Akhtar MUX(0, "mout_fsys0_eqos_rgmii_125_mux1", mout_fsys0_eqos_rgmii_125_mux1_p, 810a15e367bSAlim Akhtar PLL_CON0_EQOS_RGMII_125_MUX1, 4, 1), 811a15e367bSAlim Akhtar }; 812a15e367bSAlim Akhtar 813a15e367bSAlim Akhtar static const struct samsung_div_clock fsys0_div_clks[] __initconst = { 814a15e367bSAlim Akhtar DIV(0, "dout_fsys0_clk_unipro", "mout_fsys0_clkcmu_fsys0_unipro", DIV_CLK_UNIPRO, 0, 4), 815a15e367bSAlim Akhtar DIV(0, "dout_fsys0_eqs_rgmii_clk_125", "mout_fsys0_eqos_rgmii_125_mux1", 816a15e367bSAlim Akhtar DIV_EQS_RGMII_CLK_125, 0, 4), 817a15e367bSAlim Akhtar DIV(FSYS0_DOUT_FSYS0_PERIBUS_GRP, "dout_fsys0_peribus_grp", 818a15e367bSAlim Akhtar "mout_fsys0_clk_fsys0_slavebusclk", DIV_PERIBUS_GRP, 0, 4), 819a15e367bSAlim Akhtar DIV(0, "dout_fsys0_eqos_rii_clk2o5", "fsys0_rii_clk_divgate", DIV_EQOS_RII_CLK2O5, 0, 4), 820a15e367bSAlim Akhtar DIV(0, "dout_fsys0_eqos_rmiiclk_25", "mout_fsys0_eqos_rgmii_125_mux1", 821a15e367bSAlim Akhtar DIV_EQOS_RMIICLK_25, 0, 5), 822a15e367bSAlim Akhtar DIV(0, "dout_fsys0_pcie_phy_oscclk", "mout_fsys0_eqos_rgmii_125_mux1", 823a15e367bSAlim Akhtar DIV_PCIE_PHY_OSCCLK, 0, 4), 824a15e367bSAlim Akhtar }; 825a15e367bSAlim Akhtar 826a15e367bSAlim Akhtar static const struct samsung_gate_clock fsys0_gate_clks[] __initconst = { 827a15e367bSAlim Akhtar GATE(FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, "fsys0_eqos_top0_ipclkport_clk_rx_i", 828a15e367bSAlim Akhtar "pad_eqos0_phyrxclk", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, 21, 829a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 830a15e367bSAlim Akhtar GATE(PCIE_SUBCTRL_INST0_AUX_CLK_SOC, 831a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_aux_clk_soc", "fin_pll", 832a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC, 21, 833a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 834a15e367bSAlim Akhtar GATE(0, "fsys0_fsys0_cmu_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 835a15e367bSAlim Akhtar GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 836a15e367bSAlim Akhtar GATE(0, 837a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_pll_refclk_from_xo", 838a15e367bSAlim Akhtar "xtal_clk_pcie_phy", 839a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO, 21, 840a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 841a15e367bSAlim Akhtar GATE(UFS0_MPHY_REFCLK_IXTAL24, "fsys0_ufs_top0_ipclkport_i_mphy_refclk_ixtal24", 842a15e367bSAlim Akhtar "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 21, 843a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 844a15e367bSAlim Akhtar GATE(UFS0_MPHY_REFCLK_IXTAL26, "fsys0_ufs_top0_ipclkport_i_mphy_refclk_ixtal26", 845a15e367bSAlim Akhtar "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 21, 846a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 847a15e367bSAlim Akhtar GATE(UFS1_MPHY_REFCLK_IXTAL24, "fsys0_ufs_top1_ipclkport_i_mphy_refclk_ixtal24", 848a15e367bSAlim Akhtar "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 21, 849a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 850a15e367bSAlim Akhtar GATE(UFS1_MPHY_REFCLK_IXTAL26, "fsys0_ufs_top1_ipclkport_i_mphy_refclk_ixtal26", 851a15e367bSAlim Akhtar "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 21, 852a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 853a15e367bSAlim Akhtar GATE(0, "fsys0_ahbbr_fsys0_ipclkport_hclk", "dout_fsys0_peribus_grp", 854a15e367bSAlim Akhtar GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK, 21, CLK_IGNORE_UNUSED, 0), 855a15e367bSAlim Akhtar GATE(0, "fsys0_axi2apb_fsys0_ipclkport_aclk", "dout_fsys0_peribus_grp", 856a15e367bSAlim Akhtar GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 857a15e367bSAlim Akhtar GATE(0, "fsys0_bus_d_fsys0_ipclkport_mainclk", "mout_fsys0_clk_fsys0_slavebusclk", 858a15e367bSAlim Akhtar GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 859a15e367bSAlim Akhtar GATE(0, "fsys0_bus_d_fsys0_ipclkport_periclk", "dout_fsys0_peribus_grp", 860a15e367bSAlim Akhtar GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK, 21, CLK_IGNORE_UNUSED, 0), 861a15e367bSAlim Akhtar GATE(0, "fsys0_bus_p_fsys0_ipclkport_mainclk", "dout_fsys0_peribus_grp", 862a15e367bSAlim Akhtar GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 863a15e367bSAlim Akhtar GATE(0, "fsys0_bus_p_fsys0_ipclkport_tcuclk", "mout_fsys0_eqos_rgmii_125_mux1", 864a15e367bSAlim Akhtar GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK, 21, CLK_IGNORE_UNUSED, 0), 865a15e367bSAlim Akhtar GATE(0, "fsys0_cpe425_ipclkport_aclk", "mout_fsys0_clk_fsys0_slavebusclk", 866a15e367bSAlim Akhtar GAT_FSYS0_CPE425_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 867a15e367bSAlim Akhtar GATE(FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, "fsys0_eqos_top0_ipclkport_aclk_i", 868a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, 21, 869a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 870a15e367bSAlim Akhtar GATE(FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, "fsys0_eqos_top0_ipclkport_hclk_i", 871a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, 21, 872a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 873a15e367bSAlim Akhtar GATE(FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, "fsys0_eqos_top0_ipclkport_rgmii_clk_i", 874a15e367bSAlim Akhtar "dout_fsys0_eqs_rgmii_clk_125", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, 21, 875a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 876a15e367bSAlim Akhtar GATE(0, "fsys0_eqos_top0_ipclkport_rii_clk_i", "dout_fsys0_eqos_rii_clk2o5", 877a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 878a15e367bSAlim Akhtar GATE(0, "fsys0_eqos_top0_ipclkport_rmii_clk_i", "dout_fsys0_eqos_rmiiclk_25", 879a15e367bSAlim Akhtar GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 880a15e367bSAlim Akhtar GATE(0, "fsys0_gpio_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 881a15e367bSAlim Akhtar GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 882a15e367bSAlim Akhtar GATE(0, "fsys0_gpio_fsys0_ipclkport_oscclk", "fin_pll", 883a15e367bSAlim Akhtar GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 884a15e367bSAlim Akhtar GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_d", 885a15e367bSAlim Akhtar "mout_fsys0_clk_fsys0_slavebusclk", 886a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D, 21, 887a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 888a15e367bSAlim Akhtar GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_d1", 889a15e367bSAlim Akhtar "mout_fsys0_eqos_rgmii_125_mux1", 890a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1, 21, 891a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 892a15e367bSAlim Akhtar GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_p", 893a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", 894a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P, 21, 895a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 896a15e367bSAlim Akhtar GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_s", 897a15e367bSAlim Akhtar "mout_fsys0_clk_fsys0_slavebusclk", 898a15e367bSAlim Akhtar GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S, 21, 899a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 900a15e367bSAlim Akhtar GATE(0, "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_i_apb_pclk", 901a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", 902a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK, 21, 903a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 904a15e367bSAlim Akhtar GATE(0, 905a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_pll_refclk_from_syspll", 906a15e367bSAlim Akhtar "dout_fsys0_pcie_phy_oscclk", 907a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL, 908a15e367bSAlim Akhtar 21, CLK_IGNORE_UNUSED, 0), 909a15e367bSAlim Akhtar GATE(0, "fsys0_pcie_top_ipclkport_pipe_pal_inst_0_i_apb_pclk_0", "dout_fsys0_peribus_grp", 910a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0, 21, CLK_IGNORE_UNUSED, 0), 911a15e367bSAlim Akhtar GATE(0, "fsys0_pcie_top_ipclkport_pipe_pal_inst_0_i_immortal_clk", "fin_pll", 912a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK, 21, CLK_IGNORE_UNUSED, 0), 913a15e367bSAlim Akhtar GATE(PCIE_SUBCTRL_INST0_DBI_ACLK_SOC, 914a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_dbi_aclk_soc", 915a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", 916a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC, 21, 917a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 918a15e367bSAlim Akhtar GATE(0, "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_i_driver_apb_clk", 919a15e367bSAlim Akhtar "dout_fsys0_peribus_grp", 920a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK, 21, 921a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 922a15e367bSAlim Akhtar GATE(PCIE_SUBCTRL_INST0_MSTR_ACLK_SOC, 923a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_mstr_aclk_soc", 924a15e367bSAlim Akhtar "mout_fsys0_clk_fsys0_slavebusclk", 925a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC, 21, 926a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 927a15e367bSAlim Akhtar GATE(PCIE_SUBCTRL_INST0_SLV_ACLK_SOC, 928a15e367bSAlim Akhtar "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_slv_aclk_soc", 929a15e367bSAlim Akhtar "mout_fsys0_clk_fsys0_slavebusclk", 930a15e367bSAlim Akhtar GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC, 21, 931a15e367bSAlim Akhtar CLK_IGNORE_UNUSED, 0), 932a15e367bSAlim Akhtar GATE(0, "fsys0_smmu_fsys0_ipclkport_cclk", "mout_fsys0_eqos_rgmii_125_mux1", 933a15e367bSAlim Akhtar GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 934a15e367bSAlim Akhtar GATE(0, "fsys0_smmu_fsys0_ipclkport_fsys0_bclk", "mout_fsys0_clk_fsys0_slavebusclk", 935a15e367bSAlim Akhtar GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK, 21, CLK_IGNORE_UNUSED, 0), 936a15e367bSAlim Akhtar GATE(0, "fsys0_sysreg_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 937a15e367bSAlim Akhtar GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 938a15e367bSAlim Akhtar GATE(UFS0_TOP0_HCLK_BUS, "fsys0_ufs_top0_ipclkport_hclk_bus", "dout_fsys0_peribus_grp", 939a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS, 21, CLK_IGNORE_UNUSED, 0), 940a15e367bSAlim Akhtar GATE(UFS0_TOP0_ACLK, "fsys0_ufs_top0_ipclkport_i_aclk", "dout_fsys0_peribus_grp", 941a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 942a15e367bSAlim Akhtar GATE(UFS0_TOP0_CLK_UNIPRO, "fsys0_ufs_top0_ipclkport_i_clk_unipro", "dout_fsys0_clk_unipro", 943a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO, 21, CLK_IGNORE_UNUSED, 0), 944a15e367bSAlim Akhtar GATE(UFS0_TOP0_FMP_CLK, "fsys0_ufs_top0_ipclkport_i_fmp_clk", "dout_fsys0_peribus_grp", 945a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK, 21, CLK_IGNORE_UNUSED, 0), 946a15e367bSAlim Akhtar GATE(UFS1_TOP1_HCLK_BUS, "fsys0_ufs_top1_ipclkport_hclk_bus", "dout_fsys0_peribus_grp", 947a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS, 21, CLK_IGNORE_UNUSED, 0), 948a15e367bSAlim Akhtar GATE(UFS1_TOP1_ACLK, "fsys0_ufs_top1_ipclkport_i_aclk", "dout_fsys0_peribus_grp", 949a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 950a15e367bSAlim Akhtar GATE(UFS1_TOP1_CLK_UNIPRO, "fsys0_ufs_top1_ipclkport_i_clk_unipro", "dout_fsys0_clk_unipro", 951a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO, 21, CLK_IGNORE_UNUSED, 0), 952a15e367bSAlim Akhtar GATE(UFS1_TOP1_FMP_CLK, "fsys0_ufs_top1_ipclkport_i_fmp_clk", "dout_fsys0_peribus_grp", 953a15e367bSAlim Akhtar GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK, 21, CLK_IGNORE_UNUSED, 0), 954a15e367bSAlim Akhtar GATE(0, "fsys0_rii_clk_divgate", "dout_fsys0_eqos_rmiiclk_25", GAT_FSYS0_RII_CLK_DIVGATE, 955a15e367bSAlim Akhtar 21, CLK_IGNORE_UNUSED, 0), 956a15e367bSAlim Akhtar GATE(FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, "fsys0_eqos_top0_ipclkport_clk_ptp_ref_i", 957a15e367bSAlim Akhtar "fin_pll", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, 21, CLK_IGNORE_UNUSED, 0), 958a15e367bSAlim Akhtar }; 959a15e367bSAlim Akhtar 960a15e367bSAlim Akhtar static const struct samsung_cmu_info fsys0_cmu_info __initconst = { 961a15e367bSAlim Akhtar .mux_clks = fsys0_mux_clks, 962a15e367bSAlim Akhtar .nr_mux_clks = ARRAY_SIZE(fsys0_mux_clks), 963a15e367bSAlim Akhtar .div_clks = fsys0_div_clks, 964a15e367bSAlim Akhtar .nr_div_clks = ARRAY_SIZE(fsys0_div_clks), 965a15e367bSAlim Akhtar .gate_clks = fsys0_gate_clks, 966a15e367bSAlim Akhtar .nr_gate_clks = ARRAY_SIZE(fsys0_gate_clks), 967a15e367bSAlim Akhtar .fixed_clks = fsys0_fixed_clks, 968a15e367bSAlim Akhtar .nr_fixed_clks = ARRAY_SIZE(fsys0_fixed_clks), 969a15e367bSAlim Akhtar .nr_clk_ids = FSYS0_NR_CLK, 970a15e367bSAlim Akhtar .clk_regs = fsys0_clk_regs, 971a15e367bSAlim Akhtar .nr_clk_regs = ARRAY_SIZE(fsys0_clk_regs), 972a15e367bSAlim Akhtar .clk_name = "dout_cmu_fsys0_shared1div4", 973a15e367bSAlim Akhtar }; 974a15e367bSAlim Akhtar 975bfbce52eSAlim Akhtar /* Register Offset definitions for CMU_FSYS1 (0x16810000) */ 976bfbce52eSAlim Akhtar #define PLL_CON0_ACLK_FSYS1_BUSP_MUX 0x100 977bfbce52eSAlim Akhtar #define PLL_CON0_PCLKL_FSYS1_BUSP_MUX 0x180 978bfbce52eSAlim Akhtar #define DIV_CLK_FSYS1_PHY0_OSCCLK 0x1800 979bfbce52eSAlim Akhtar #define DIV_CLK_FSYS1_PHY1_OSCCLK 0x1804 980bfbce52eSAlim Akhtar #define GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK 0x2000 981bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK 0x2004 982bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK 0x2008 983bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK 0x200c 984bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL 0x202c 985bfbce52eSAlim Akhtar #define GAT_FSYS1_PHY0_OSCCLLK 0x2034 986bfbce52eSAlim Akhtar #define GAT_FSYS1_PHY1_OSCCLK 0x2038 987bfbce52eSAlim Akhtar #define GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK 0x203c 988bfbce52eSAlim Akhtar #define GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK 0x2040 989bfbce52eSAlim Akhtar #define GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK 0x2048 990bfbce52eSAlim Akhtar #define GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK 0x204c 991bfbce52eSAlim Akhtar #define GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK 0x2054 992bfbce52eSAlim Akhtar #define GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0 0x205c 993bfbce52eSAlim Akhtar #define GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0 0x2064 994bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK 0x206c 995bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK 0x2070 996bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK 0x2074 997bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK 0x2078 998bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK 0x207c 999bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK 0x2080 1000bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK 0x2084 1001bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK 0x2088 1002bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK 0x208c 1003bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK 0x20a4 1004bfbce52eSAlim Akhtar #define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL 0x20a8 1005bfbce52eSAlim Akhtar #define GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK 0x20b4 1006bfbce52eSAlim Akhtar #define GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK 0x20b8 1007bfbce52eSAlim Akhtar 1008bfbce52eSAlim Akhtar static const unsigned long fsys1_clk_regs[] __initconst = { 1009bfbce52eSAlim Akhtar PLL_CON0_ACLK_FSYS1_BUSP_MUX, 1010bfbce52eSAlim Akhtar PLL_CON0_PCLKL_FSYS1_BUSP_MUX, 1011bfbce52eSAlim Akhtar DIV_CLK_FSYS1_PHY0_OSCCLK, 1012bfbce52eSAlim Akhtar DIV_CLK_FSYS1_PHY1_OSCCLK, 1013bfbce52eSAlim Akhtar GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK, 1014bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK, 1015bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK, 1016bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK, 1017bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL, 1018bfbce52eSAlim Akhtar GAT_FSYS1_PHY0_OSCCLLK, 1019bfbce52eSAlim Akhtar GAT_FSYS1_PHY1_OSCCLK, 1020bfbce52eSAlim Akhtar GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK, 1021bfbce52eSAlim Akhtar GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK, 1022bfbce52eSAlim Akhtar GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK, 1023bfbce52eSAlim Akhtar GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK, 1024bfbce52eSAlim Akhtar GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK, 1025bfbce52eSAlim Akhtar GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0, 1026bfbce52eSAlim Akhtar GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0, 1027bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK, 1028bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK, 1029bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK, 1030bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK, 1031bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK, 1032bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK, 1033bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK, 1034bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK, 1035bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK, 1036bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK, 1037bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL, 1038bfbce52eSAlim Akhtar GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK, 1039bfbce52eSAlim Akhtar GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK, 1040bfbce52eSAlim Akhtar }; 1041bfbce52eSAlim Akhtar 1042bfbce52eSAlim Akhtar static const struct samsung_fixed_rate_clock fsys1_fixed_clks[] __initconst = { 1043bfbce52eSAlim Akhtar FRATE(0, "clk_fsys1_phy0_ref", NULL, 0, 100000000), 1044bfbce52eSAlim Akhtar FRATE(0, "clk_fsys1_phy1_ref", NULL, 0, 100000000), 1045bfbce52eSAlim Akhtar }; 1046bfbce52eSAlim Akhtar 1047bfbce52eSAlim Akhtar /* List of parent clocks for Muxes in CMU_FSYS1 */ 1048bfbce52eSAlim Akhtar PNAME(mout_fsys1_pclkl_fsys1_busp_mux_p) = { "fin_pll", "dout_cmu_fsys1_shared0div8" }; 1049bfbce52eSAlim Akhtar PNAME(mout_fsys1_aclk_fsys1_busp_mux_p) = { "fin_pll", "dout_cmu_fsys1_shared0div4" }; 1050bfbce52eSAlim Akhtar 1051bfbce52eSAlim Akhtar static const struct samsung_mux_clock fsys1_mux_clks[] __initconst = { 1052bfbce52eSAlim Akhtar MUX(0, "mout_fsys1_pclkl_fsys1_busp_mux", mout_fsys1_pclkl_fsys1_busp_mux_p, 1053bfbce52eSAlim Akhtar PLL_CON0_PCLKL_FSYS1_BUSP_MUX, 4, 1), 1054bfbce52eSAlim Akhtar MUX(0, "mout_fsys1_aclk_fsys1_busp_mux", mout_fsys1_aclk_fsys1_busp_mux_p, 1055bfbce52eSAlim Akhtar PLL_CON0_ACLK_FSYS1_BUSP_MUX, 4, 1), 1056bfbce52eSAlim Akhtar }; 1057bfbce52eSAlim Akhtar 1058bfbce52eSAlim Akhtar static const struct samsung_div_clock fsys1_div_clks[] __initconst = { 1059bfbce52eSAlim Akhtar DIV(0, "dout_fsys1_clk_fsys1_phy0_oscclk", "fsys1_phy0_osccllk", 1060bfbce52eSAlim Akhtar DIV_CLK_FSYS1_PHY0_OSCCLK, 0, 4), 1061bfbce52eSAlim Akhtar DIV(0, "dout_fsys1_clk_fsys1_phy1_oscclk", "fsys1_phy1_oscclk", 1062bfbce52eSAlim Akhtar DIV_CLK_FSYS1_PHY1_OSCCLK, 0, 4), 1063bfbce52eSAlim Akhtar }; 1064bfbce52eSAlim Akhtar 1065bfbce52eSAlim Akhtar static const struct samsung_gate_clock fsys1_gate_clks[] __initconst = { 1066bfbce52eSAlim Akhtar GATE(0, "fsys1_cmu_fsys1_ipclkport_pclk", "mout_fsys1_pclkl_fsys1_busp_mux", 1067bfbce52eSAlim Akhtar GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1068bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_phy0_ipclkport_i_ref_xtal", "clk_fsys1_phy0_ref", 1069bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL, 21, CLK_IGNORE_UNUSED, 0), 1070bfbce52eSAlim Akhtar GATE(0, "fsys1_phy0_osccllk", "mout_fsys1_aclk_fsys1_busp_mux", 1071bfbce52eSAlim Akhtar GAT_FSYS1_PHY0_OSCCLLK, 21, CLK_IGNORE_UNUSED, 0), 1072bfbce52eSAlim Akhtar GATE(0, "fsys1_phy1_oscclk", "mout_fsys1_aclk_fsys1_busp_mux", 1073bfbce52eSAlim Akhtar GAT_FSYS1_PHY1_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 1074bfbce52eSAlim Akhtar GATE(0, "fsys1_axi2apb_fsys1_ipclkport_aclk", "mout_fsys1_pclkl_fsys1_busp_mux", 1075bfbce52eSAlim Akhtar GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1076bfbce52eSAlim Akhtar GATE(0, "fsys1_bus_d0_fsys1_ipclkport_mainclk", "mout_fsys1_aclk_fsys1_busp_mux", 1077bfbce52eSAlim Akhtar GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 1078bfbce52eSAlim Akhtar GATE(0, "fsys1_bus_s0_fsys1_ipclkport_m250clk", "mout_fsys1_pclkl_fsys1_busp_mux", 1079bfbce52eSAlim Akhtar GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK, 21, CLK_IGNORE_UNUSED, 0), 1080bfbce52eSAlim Akhtar GATE(0, "fsys1_bus_s0_fsys1_ipclkport_mainclk", "mout_fsys1_aclk_fsys1_busp_mux", 1081bfbce52eSAlim Akhtar GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 1082bfbce52eSAlim Akhtar GATE(0, "fsys1_cpe425_0_fsys1_ipclkport_aclk", "mout_fsys1_aclk_fsys1_busp_mux", 1083bfbce52eSAlim Akhtar GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1084bfbce52eSAlim Akhtar GATE(0, "fsys1_ns_brdg_fsys1_ipclkport_clk__psoc_fsys1__clk_fsys1_d0", 1085bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", 1086bfbce52eSAlim Akhtar GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0, 21, 1087bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1088bfbce52eSAlim Akhtar GATE(0, "fsys1_ns_brdg_fsys1_ipclkport_clk__psoc_fsys1__clk_fsys1_s0", 1089bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", 1090bfbce52eSAlim Akhtar GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0, 21, 1091bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1092bfbce52eSAlim Akhtar GATE(PCIE_LINK0_IPCLKPORT_DBI_ACLK, "fsys1_pcie_link0_ipclkport_dbi_aclk", 1093bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK, 21, 1094bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1095bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_link0_ipclkport_i_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 1096bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 1097bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_link0_ipclkport_i_soc_ref_clk", "fin_pll", 1098bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK, 21, CLK_IGNORE_UNUSED, 0), 1099bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_link0_ipclkport_i_driver_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 1100bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 1101bfbce52eSAlim Akhtar GATE(PCIE_LINK0_IPCLKPORT_MSTR_ACLK, "fsys1_pcie_link0_ipclkport_mstr_aclk", 1102bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK, 21, 1103bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1104bfbce52eSAlim Akhtar GATE(PCIE_LINK0_IPCLKPORT_SLV_ACLK, "fsys1_pcie_link0_ipclkport_slv_aclk", 1105bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK, 21, 1106bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1107bfbce52eSAlim Akhtar GATE(PCIE_LINK1_IPCLKPORT_DBI_ACLK, "fsys1_pcie_link1_ipclkport_dbi_aclk", 1108bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK, 21, 1109bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1110bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_link1_ipclkport_i_driver_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 1111bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 1112bfbce52eSAlim Akhtar GATE(PCIE_LINK1_IPCLKPORT_MSTR_ACLK, "fsys1_pcie_link1_ipclkport_mstr_aclk", 1113bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK, 21, 1114bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1115bfbce52eSAlim Akhtar GATE(PCIE_LINK1_IPCLKPORT_SLV_ACLK, "fsys1_pcie_link1_ipclkport_slv_aclk", 1116bfbce52eSAlim Akhtar "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK, 21, 1117bfbce52eSAlim Akhtar CLK_IGNORE_UNUSED, 0), 1118bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_phy0_ipclkport_i_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 1119bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 1120bfbce52eSAlim Akhtar GATE(PCIE_LINK0_IPCLKPORT_AUX_ACLK, "fsys1_pcie_link0_ipclkport_auxclk", "fin_pll", 1121bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK, 21, CLK_IGNORE_UNUSED, 0), 1122bfbce52eSAlim Akhtar GATE(PCIE_LINK1_IPCLKPORT_AUX_ACLK, "fsys1_pcie_link1_ipclkport_auxclk", "fin_pll", 1123bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK, 21, CLK_IGNORE_UNUSED, 0), 1124bfbce52eSAlim Akhtar GATE(0, "fsys1_pcie_phy0_ipclkport_i_ref_soc_pll", "dout_fsys1_clk_fsys1_phy0_oscclk", 1125bfbce52eSAlim Akhtar GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL, 21, CLK_IGNORE_UNUSED, 0), 1126bfbce52eSAlim Akhtar GATE(0, "fsys1_sysreg_fsys1_ipclkport_pclk", "mout_fsys1_pclkl_fsys1_busp_mux", 1127bfbce52eSAlim Akhtar GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1128bfbce52eSAlim Akhtar GATE(0, "fsys1_tbu0_fsys1_ipclkport_aclk", "mout_fsys1_aclk_fsys1_busp_mux", 1129bfbce52eSAlim Akhtar GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1130bfbce52eSAlim Akhtar }; 1131bfbce52eSAlim Akhtar 1132bfbce52eSAlim Akhtar static const struct samsung_cmu_info fsys1_cmu_info __initconst = { 1133bfbce52eSAlim Akhtar .mux_clks = fsys1_mux_clks, 1134bfbce52eSAlim Akhtar .nr_mux_clks = ARRAY_SIZE(fsys1_mux_clks), 1135bfbce52eSAlim Akhtar .div_clks = fsys1_div_clks, 1136bfbce52eSAlim Akhtar .nr_div_clks = ARRAY_SIZE(fsys1_div_clks), 1137bfbce52eSAlim Akhtar .gate_clks = fsys1_gate_clks, 1138bfbce52eSAlim Akhtar .nr_gate_clks = ARRAY_SIZE(fsys1_gate_clks), 1139bfbce52eSAlim Akhtar .fixed_clks = fsys1_fixed_clks, 1140bfbce52eSAlim Akhtar .nr_fixed_clks = ARRAY_SIZE(fsys1_fixed_clks), 1141bfbce52eSAlim Akhtar .nr_clk_ids = FSYS1_NR_CLK, 1142bfbce52eSAlim Akhtar .clk_regs = fsys1_clk_regs, 1143bfbce52eSAlim Akhtar .nr_clk_regs = ARRAY_SIZE(fsys1_clk_regs), 1144bfbce52eSAlim Akhtar .clk_name = "dout_cmu_fsys1_shared0div4", 1145bfbce52eSAlim Akhtar }; 1146bfbce52eSAlim Akhtar 1147*ca0fdfd1SAlim Akhtar /* Register Offset definitions for CMU_IMEM (0x10010000) */ 1148*ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_ACLK 0x100 1149*ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_INTMEMCLK 0x120 1150*ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_TCUCLK 0x140 1151*ca0fdfd1SAlim Akhtar #define DIV_OSCCLK_IMEM_TMUTSCLK 0x1800 1152*ca0fdfd1SAlim Akhtar #define GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK 0x2000 1153*ca0fdfd1SAlim Akhtar #define GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO 0x2004 1154*ca0fdfd1SAlim Akhtar #define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK 0x2008 1155*ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK 0x200c 1156*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK 0x2010 1157*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS 0x2014 1158*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK 0x2018 1159*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS 0x201c 1160*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK 0x2020 1161*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS 0x2024 1162*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK 0x2028 1163*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS 0x202c 1164*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK 0x2030 1165*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS 0x2034 1166*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT0_IPCLKPORT_CLK 0x2038 1167*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT1_IPCLKPORT_CLK 0x203c 1168*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT2_IPCLKPORT_CLK 0x2040 1169*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM 0x2044 1170*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM 0x2048 1171*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM 0x204c 1172*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS 0x2050 1173*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS 0x2054 1174*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS 0x2058 1175*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM 0x205c 1176*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS 0x2060 1177*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM 0x2064 1178*ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS 0x2068 1179*ca0fdfd1SAlim Akhtar #define GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK 0x206c 1180*ca0fdfd1SAlim Akhtar #define GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK 0x2070 1181*ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK 0x2074 1182*ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK 0x2078 1183*ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK 0x207c 1184*ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK 0x2080 1185*ca0fdfd1SAlim Akhtar #define GAT_IMEM_DMA0_IPCLKPORT_ACLK 0x2084 1186*ca0fdfd1SAlim Akhtar #define GAT_IMEM_DMA1_IPCLKPORT_ACLK 0x2088 1187*ca0fdfd1SAlim Akhtar #define GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK 0x208c 1188*ca0fdfd1SAlim Akhtar #define GAT_IMEM_GIC_IPCLKPORT_CLK 0x2090 1189*ca0fdfd1SAlim Akhtar #define GAT_IMEM_INTMEM_IPCLKPORT_ACLK 0x2094 1190*ca0fdfd1SAlim Akhtar #define GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK 0x2098 1191*ca0fdfd1SAlim Akhtar #define GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK 0x209c 1192*ca0fdfd1SAlim Akhtar #define GAT_IMEM_MCT_IPCLKPORT_PCLK 0x20a0 1193*ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D 0x20a4 1194*ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU 0x20a8 1195*ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P 0x20ac 1196*ca0fdfd1SAlim Akhtar #define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK 0x20b0 1197*ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK 0x20b4 1198*ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK 0x20b8 1199*ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK 0x20bc 1200*ca0fdfd1SAlim Akhtar #define GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK 0x20c0 1201*ca0fdfd1SAlim Akhtar #define GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK 0x20c4 1202*ca0fdfd1SAlim Akhtar #define GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK 0x20c8 1203*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK 0x20cc 1204*ca0fdfd1SAlim Akhtar #define GAT_IMEM_TCU_IPCLKPORT_ACLK 0x20d0 1205*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT0_IPCLKPORT_PCLK 0x20d4 1206*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT1_IPCLKPORT_PCLK 0x20d8 1207*ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT2_IPCLKPORT_PCLK 0x20dc 1208*ca0fdfd1SAlim Akhtar 1209*ca0fdfd1SAlim Akhtar static const unsigned long imem_clk_regs[] __initconst = { 1210*ca0fdfd1SAlim Akhtar PLL_CON0_CLK_IMEM_ACLK, 1211*ca0fdfd1SAlim Akhtar PLL_CON0_CLK_IMEM_INTMEMCLK, 1212*ca0fdfd1SAlim Akhtar PLL_CON0_CLK_IMEM_TCUCLK, 1213*ca0fdfd1SAlim Akhtar DIV_OSCCLK_IMEM_TMUTSCLK, 1214*ca0fdfd1SAlim Akhtar GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK, 1215*ca0fdfd1SAlim Akhtar GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO, 1216*ca0fdfd1SAlim Akhtar GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK, 1217*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK, 1218*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK, 1219*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, 1220*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK, 1221*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, 1222*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK, 1223*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, 1224*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK, 1225*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, 1226*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK, 1227*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, 1228*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT0_IPCLKPORT_CLK, 1229*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT1_IPCLKPORT_CLK, 1230*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT2_IPCLKPORT_CLK, 1231*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM, 1232*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM, 1233*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM, 1234*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS, 1235*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS, 1236*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS, 1237*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM, 1238*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS, 1239*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM, 1240*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS, 1241*ca0fdfd1SAlim Akhtar GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK, 1242*ca0fdfd1SAlim Akhtar GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK, 1243*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK, 1244*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK, 1245*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK, 1246*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK, 1247*ca0fdfd1SAlim Akhtar GAT_IMEM_DMA0_IPCLKPORT_ACLK, 1248*ca0fdfd1SAlim Akhtar GAT_IMEM_DMA1_IPCLKPORT_ACLK, 1249*ca0fdfd1SAlim Akhtar GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK, 1250*ca0fdfd1SAlim Akhtar GAT_IMEM_GIC_IPCLKPORT_CLK, 1251*ca0fdfd1SAlim Akhtar GAT_IMEM_INTMEM_IPCLKPORT_ACLK, 1252*ca0fdfd1SAlim Akhtar GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK, 1253*ca0fdfd1SAlim Akhtar GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK, 1254*ca0fdfd1SAlim Akhtar GAT_IMEM_MCT_IPCLKPORT_PCLK, 1255*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D, 1256*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU, 1257*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P, 1258*ca0fdfd1SAlim Akhtar GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK, 1259*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK, 1260*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK, 1261*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK, 1262*ca0fdfd1SAlim Akhtar GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK, 1263*ca0fdfd1SAlim Akhtar GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK, 1264*ca0fdfd1SAlim Akhtar GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK, 1265*ca0fdfd1SAlim Akhtar GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK, 1266*ca0fdfd1SAlim Akhtar GAT_IMEM_TCU_IPCLKPORT_ACLK, 1267*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT0_IPCLKPORT_PCLK, 1268*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT1_IPCLKPORT_PCLK, 1269*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT2_IPCLKPORT_PCLK, 1270*ca0fdfd1SAlim Akhtar }; 1271*ca0fdfd1SAlim Akhtar 1272*ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_tcuclk_p) = { "fin_pll", "dout_cmu_imem_tcuclk" }; 1273*ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_aclk_p) = { "fin_pll", "dout_cmu_imem_aclk" }; 1274*ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_intmemclk_p) = { "fin_pll", "dout_cmu_imem_dmaclk" }; 1275*ca0fdfd1SAlim Akhtar 1276*ca0fdfd1SAlim Akhtar static const struct samsung_mux_clock imem_mux_clks[] __initconst = { 1277*ca0fdfd1SAlim Akhtar MUX(0, "mout_imem_clk_imem_tcuclk", mout_imem_clk_imem_tcuclk_p, 1278*ca0fdfd1SAlim Akhtar PLL_CON0_CLK_IMEM_TCUCLK, 4, 1), 1279*ca0fdfd1SAlim Akhtar MUX(0, "mout_imem_clk_imem_aclk", mout_imem_clk_imem_aclk_p, PLL_CON0_CLK_IMEM_ACLK, 4, 1), 1280*ca0fdfd1SAlim Akhtar MUX(0, "mout_imem_clk_imem_intmemclk", mout_imem_clk_imem_intmemclk_p, 1281*ca0fdfd1SAlim Akhtar PLL_CON0_CLK_IMEM_INTMEMCLK, 4, 1), 1282*ca0fdfd1SAlim Akhtar }; 1283*ca0fdfd1SAlim Akhtar 1284*ca0fdfd1SAlim Akhtar static const struct samsung_div_clock imem_div_clks[] __initconst = { 1285*ca0fdfd1SAlim Akhtar DIV(0, "dout_imem_oscclk_imem_tmutsclk", "fin_pll", DIV_OSCCLK_IMEM_TMUTSCLK, 0, 4), 1286*ca0fdfd1SAlim Akhtar }; 1287*ca0fdfd1SAlim Akhtar 1288*ca0fdfd1SAlim Akhtar static const struct samsung_gate_clock imem_gate_clks[] __initconst = { 1289*ca0fdfd1SAlim Akhtar GATE(0, "imem_imem_cmu_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1290*ca0fdfd1SAlim Akhtar GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1291*ca0fdfd1SAlim Akhtar GATE(0, "imem_otp_con_top_ipclkport_i_oscclk", "fin_pll", 1292*ca0fdfd1SAlim Akhtar GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 1293*ca0fdfd1SAlim Akhtar GATE(0, "imem_tmu_top_ipclkport_i_clk", "fin_pll", 1294*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 1295*ca0fdfd1SAlim Akhtar GATE(0, "imem_tmu_gt_ipclkport_i_clk", "fin_pll", 1296*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 1297*ca0fdfd1SAlim Akhtar GATE(0, "imem_tmu_cpu0_ipclkport_i_clk", "fin_pll", 1298*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 1299*ca0fdfd1SAlim Akhtar GATE(0, "imem_tmu_gpu_ipclkport_i_clk", "fin_pll", 1300*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 1301*ca0fdfd1SAlim Akhtar GATE(0, "imem_mct_ipclkport_oscclk__alo", "fin_pll", 1302*ca0fdfd1SAlim Akhtar GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO, 21, CLK_IGNORE_UNUSED, 0), 1303*ca0fdfd1SAlim Akhtar GATE(0, "imem_wdt0_ipclkport_clk", "fin_pll", 1304*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT0_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1305*ca0fdfd1SAlim Akhtar GATE(0, "imem_wdt1_ipclkport_clk", "fin_pll", 1306*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT1_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1307*ca0fdfd1SAlim Akhtar GATE(0, "imem_wdt2_ipclkport_clk", "fin_pll", 1308*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT2_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1309*ca0fdfd1SAlim Akhtar GATE(IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu0_ipclkport_i_clk_ts", 1310*ca0fdfd1SAlim Akhtar "dout_imem_oscclk_imem_tmutsclk", 1311*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 1312*ca0fdfd1SAlim Akhtar GATE(IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu2_ipclkport_i_clk_ts", 1313*ca0fdfd1SAlim Akhtar "dout_imem_oscclk_imem_tmutsclk", 1314*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 1315*ca0fdfd1SAlim Akhtar GATE(IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, "imem_tmu_gpu_ipclkport_i_clk_ts", 1316*ca0fdfd1SAlim Akhtar "dout_imem_oscclk_imem_tmutsclk", 1317*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 1318*ca0fdfd1SAlim Akhtar GATE(IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, "imem_tmu_gt_ipclkport_i_clk_ts", 1319*ca0fdfd1SAlim Akhtar "dout_imem_oscclk_imem_tmutsclk", 1320*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 1321*ca0fdfd1SAlim Akhtar GATE(IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, "imem_tmu_top_ipclkport_i_clk_ts", 1322*ca0fdfd1SAlim Akhtar "dout_imem_oscclk_imem_tmutsclk", 1323*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 1324*ca0fdfd1SAlim Akhtar GATE(0, "imem_adm_axi4st_i0_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 1325*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 1326*ca0fdfd1SAlim Akhtar GATE(0, "imem_adm_axi4st_i1_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 1327*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 1328*ca0fdfd1SAlim Akhtar GATE(0, "imem_adm_axi4st_i2_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 1329*ca0fdfd1SAlim Akhtar GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 1330*ca0fdfd1SAlim Akhtar GATE(0, "imem_ads_axi4st_i0_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 1331*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 1332*ca0fdfd1SAlim Akhtar GATE(0, "imem_ads_axi4st_i1_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 1333*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 1334*ca0fdfd1SAlim Akhtar GATE(0, "imem_ads_axi4st_i2_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 1335*ca0fdfd1SAlim Akhtar GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 1336*ca0fdfd1SAlim Akhtar GATE(0, "imem_async_dma0_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk", 1337*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 1338*ca0fdfd1SAlim Akhtar GATE(0, "imem_async_dma0_ipclkport_pclks", "mout_imem_clk_imem_aclk", 1339*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 1340*ca0fdfd1SAlim Akhtar GATE(0, "imem_async_dma1_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk", 1341*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 1342*ca0fdfd1SAlim Akhtar GATE(0, "imem_async_dma1_ipclkport_pclks", "mout_imem_clk_imem_aclk", 1343*ca0fdfd1SAlim Akhtar GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 1344*ca0fdfd1SAlim Akhtar GATE(0, "imem_axi2apb_imemp0_ipclkport_aclk", "mout_imem_clk_imem_aclk", 1345*ca0fdfd1SAlim Akhtar GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1346*ca0fdfd1SAlim Akhtar GATE(0, "imem_axi2apb_imemp1_ipclkport_aclk", "mout_imem_clk_imem_aclk", 1347*ca0fdfd1SAlim Akhtar GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1348*ca0fdfd1SAlim Akhtar GATE(0, "imem_bus_d_imem_ipclkport_mainclk", "mout_imem_clk_imem_tcuclk", 1349*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 1350*ca0fdfd1SAlim Akhtar GATE(0, "imem_bus_p_imem_ipclkport_mainclk", "mout_imem_clk_imem_aclk", 1351*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 1352*ca0fdfd1SAlim Akhtar GATE(0, "imem_bus_p_imem_ipclkport_pericclk", "mout_imem_clk_imem_aclk", 1353*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK, 21, CLK_IGNORE_UNUSED, 0), 1354*ca0fdfd1SAlim Akhtar GATE(0, "imem_bus_p_imem_ipclkport_tcuclk", "mout_imem_clk_imem_tcuclk", 1355*ca0fdfd1SAlim Akhtar GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK, 21, CLK_IGNORE_UNUSED, 0), 1356*ca0fdfd1SAlim Akhtar GATE(IMEM_DMA0_IPCLKPORT_ACLK, "imem_dma0_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 1357*ca0fdfd1SAlim Akhtar GAT_IMEM_DMA0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0), 1358*ca0fdfd1SAlim Akhtar GATE(IMEM_DMA1_IPCLKPORT_ACLK, "imem_dma1_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 1359*ca0fdfd1SAlim Akhtar GAT_IMEM_DMA1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0), 1360*ca0fdfd1SAlim Akhtar GATE(0, "imem_gic500_input_sync_ipclkport_clk", "mout_imem_clk_imem_aclk", 1361*ca0fdfd1SAlim Akhtar GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1362*ca0fdfd1SAlim Akhtar GATE(0, "imem_gic_ipclkport_clk", "mout_imem_clk_imem_aclk", 1363*ca0fdfd1SAlim Akhtar GAT_IMEM_GIC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1364*ca0fdfd1SAlim Akhtar GATE(0, "imem_intmem_ipclkport_aclk", "mout_imem_clk_imem_intmemclk", 1365*ca0fdfd1SAlim Akhtar GAT_IMEM_INTMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1366*ca0fdfd1SAlim Akhtar GATE(0, "imem_mailbox_scs_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1367*ca0fdfd1SAlim Akhtar GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1368*ca0fdfd1SAlim Akhtar GATE(0, "imem_mailbox_sms_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1369*ca0fdfd1SAlim Akhtar GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1370*ca0fdfd1SAlim Akhtar GATE(IMEM_MCT_PCLK, "imem_mct_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1371*ca0fdfd1SAlim Akhtar GAT_IMEM_MCT_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1372*ca0fdfd1SAlim Akhtar GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_d", 1373*ca0fdfd1SAlim Akhtar "mout_imem_clk_imem_tcuclk", 1374*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D, 21, CLK_IGNORE_UNUSED, 0), 1375*ca0fdfd1SAlim Akhtar GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_tcu", 1376*ca0fdfd1SAlim Akhtar "mout_imem_clk_imem_tcuclk", 1377*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU, 21, 1378*ca0fdfd1SAlim Akhtar CLK_IGNORE_UNUSED, 0), 1379*ca0fdfd1SAlim Akhtar GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psoc_imem__clk_imem_p", "mout_imem_clk_imem_aclk", 1380*ca0fdfd1SAlim Akhtar GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P, 21, CLK_IGNORE_UNUSED, 0), 1381*ca0fdfd1SAlim Akhtar GATE(0, "imem_otp_con_top_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1382*ca0fdfd1SAlim Akhtar GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1383*ca0fdfd1SAlim Akhtar GATE(0, "imem_rstnsync_aclk_ipclkport_clk", "mout_imem_clk_imem_aclk", 1384*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1385*ca0fdfd1SAlim Akhtar GATE(0, "imem_rstnsync_oscclk_ipclkport_clk", "fin_pll", 1386*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1387*ca0fdfd1SAlim Akhtar GATE(0, "imem_rstnsync_intmemclk_ipclkport_clk", "mout_imem_clk_imem_intmemclk", 1388*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1389*ca0fdfd1SAlim Akhtar GATE(0, "imem_rstnsync_tcuclk_ipclkport_clk", "mout_imem_clk_imem_tcuclk", 1390*ca0fdfd1SAlim Akhtar GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 1391*ca0fdfd1SAlim Akhtar GATE(0, "imem_sfrif_tmu0_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1392*ca0fdfd1SAlim Akhtar GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1393*ca0fdfd1SAlim Akhtar GATE(0, "imem_sfrif_tmu1_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1394*ca0fdfd1SAlim Akhtar GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1395*ca0fdfd1SAlim Akhtar GATE(0, "imem_tmu_cpu2_ipclkport_i_clk", "fin_pll", 1396*ca0fdfd1SAlim Akhtar GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 1397*ca0fdfd1SAlim Akhtar GATE(0, "imem_sysreg_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1398*ca0fdfd1SAlim Akhtar GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1399*ca0fdfd1SAlim Akhtar GATE(0, "imem_tbu_imem_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 1400*ca0fdfd1SAlim Akhtar GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1401*ca0fdfd1SAlim Akhtar GATE(0, "imem_tcu_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 1402*ca0fdfd1SAlim Akhtar GAT_IMEM_TCU_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 1403*ca0fdfd1SAlim Akhtar GATE(IMEM_WDT0_IPCLKPORT_PCLK, "imem_wdt0_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1404*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1405*ca0fdfd1SAlim Akhtar GATE(IMEM_WDT1_IPCLKPORT_PCLK, "imem_wdt1_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1406*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1407*ca0fdfd1SAlim Akhtar GATE(IMEM_WDT2_IPCLKPORT_PCLK, "imem_wdt2_ipclkport_pclk", "mout_imem_clk_imem_aclk", 1408*ca0fdfd1SAlim Akhtar GAT_IMEM_WDT2_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 1409*ca0fdfd1SAlim Akhtar }; 1410*ca0fdfd1SAlim Akhtar 1411*ca0fdfd1SAlim Akhtar static const struct samsung_cmu_info imem_cmu_info __initconst = { 1412*ca0fdfd1SAlim Akhtar .mux_clks = imem_mux_clks, 1413*ca0fdfd1SAlim Akhtar .nr_mux_clks = ARRAY_SIZE(imem_mux_clks), 1414*ca0fdfd1SAlim Akhtar .div_clks = imem_div_clks, 1415*ca0fdfd1SAlim Akhtar .nr_div_clks = ARRAY_SIZE(imem_div_clks), 1416*ca0fdfd1SAlim Akhtar .gate_clks = imem_gate_clks, 1417*ca0fdfd1SAlim Akhtar .nr_gate_clks = ARRAY_SIZE(imem_gate_clks), 1418*ca0fdfd1SAlim Akhtar .nr_clk_ids = IMEM_NR_CLK, 1419*ca0fdfd1SAlim Akhtar .clk_regs = imem_clk_regs, 1420*ca0fdfd1SAlim Akhtar .nr_clk_regs = ARRAY_SIZE(imem_clk_regs), 1421*ca0fdfd1SAlim Akhtar }; 1422*ca0fdfd1SAlim Akhtar 1423*ca0fdfd1SAlim Akhtar static void __init fsd_clk_imem_init(struct device_node *np) 1424*ca0fdfd1SAlim Akhtar { 1425*ca0fdfd1SAlim Akhtar samsung_cmu_register_one(np, &imem_cmu_info); 1426*ca0fdfd1SAlim Akhtar } 1427*ca0fdfd1SAlim Akhtar 1428*ca0fdfd1SAlim Akhtar CLK_OF_DECLARE(fsd_clk_imem, "tesla,fsd-clock-imem", fsd_clk_imem_init); 1429*ca0fdfd1SAlim Akhtar 1430e3f3dc38SAlim Akhtar /** 1431e3f3dc38SAlim Akhtar * fsd_cmu_probe - Probe function for FSD platform clocks 1432e3f3dc38SAlim Akhtar * @pdev: Pointer to platform device 1433e3f3dc38SAlim Akhtar * 1434e3f3dc38SAlim Akhtar * Configure clock hierarchy for clock domains of FSD platform 1435e3f3dc38SAlim Akhtar */ 1436e3f3dc38SAlim Akhtar static int __init fsd_cmu_probe(struct platform_device *pdev) 1437e3f3dc38SAlim Akhtar { 1438e3f3dc38SAlim Akhtar const struct samsung_cmu_info *info; 1439e3f3dc38SAlim Akhtar struct device *dev = &pdev->dev; 1440e3f3dc38SAlim Akhtar 1441e3f3dc38SAlim Akhtar info = of_device_get_match_data(dev); 1442e3f3dc38SAlim Akhtar exynos_arm64_register_cmu(dev, dev->of_node, info); 1443e3f3dc38SAlim Akhtar 1444e3f3dc38SAlim Akhtar return 0; 1445e3f3dc38SAlim Akhtar } 1446e3f3dc38SAlim Akhtar 1447e3f3dc38SAlim Akhtar /* CMUs which belong to Power Domains and need runtime PM to be implemented */ 1448e3f3dc38SAlim Akhtar static const struct of_device_id fsd_cmu_of_match[] = { 1449e3f3dc38SAlim Akhtar { 1450e3f3dc38SAlim Akhtar .compatible = "tesla,fsd-clock-peric", 1451e3f3dc38SAlim Akhtar .data = &peric_cmu_info, 1452e3f3dc38SAlim Akhtar }, { 1453a15e367bSAlim Akhtar .compatible = "tesla,fsd-clock-fsys0", 1454a15e367bSAlim Akhtar .data = &fsys0_cmu_info, 1455a15e367bSAlim Akhtar }, { 1456bfbce52eSAlim Akhtar .compatible = "tesla,fsd-clock-fsys1", 1457bfbce52eSAlim Akhtar .data = &fsys1_cmu_info, 1458bfbce52eSAlim Akhtar }, { 1459e3f3dc38SAlim Akhtar }, 1460e3f3dc38SAlim Akhtar }; 1461e3f3dc38SAlim Akhtar 1462e3f3dc38SAlim Akhtar static struct platform_driver fsd_cmu_driver __refdata = { 1463e3f3dc38SAlim Akhtar .driver = { 1464e3f3dc38SAlim Akhtar .name = "fsd-cmu", 1465e3f3dc38SAlim Akhtar .of_match_table = fsd_cmu_of_match, 1466e3f3dc38SAlim Akhtar .suppress_bind_attrs = true, 1467e3f3dc38SAlim Akhtar }, 1468e3f3dc38SAlim Akhtar .probe = fsd_cmu_probe, 1469e3f3dc38SAlim Akhtar }; 1470e3f3dc38SAlim Akhtar 1471e3f3dc38SAlim Akhtar static int __init fsd_cmu_init(void) 1472e3f3dc38SAlim Akhtar { 1473e3f3dc38SAlim Akhtar return platform_driver_register(&fsd_cmu_driver); 1474e3f3dc38SAlim Akhtar } 1475e3f3dc38SAlim Akhtar core_initcall(fsd_cmu_init); 1476