xref: /openbmc/linux/drivers/clk/samsung/clk-fsd.c (revision 75c50afaa0d9a3e8f96940451bed6d0ccc6a0a03)
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 
1147ca0fdfd1SAlim Akhtar /* Register Offset definitions for CMU_IMEM (0x10010000) */
1148ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_ACLK				0x100
1149ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_INTMEMCLK			0x120
1150ca0fdfd1SAlim Akhtar #define PLL_CON0_CLK_IMEM_TCUCLK			0x140
1151ca0fdfd1SAlim Akhtar #define DIV_OSCCLK_IMEM_TMUTSCLK			0x1800
1152ca0fdfd1SAlim Akhtar #define GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK		0x2000
1153ca0fdfd1SAlim Akhtar #define GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO		0x2004
1154ca0fdfd1SAlim Akhtar #define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK		0x2008
1155ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK		0x200c
1156ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK		0x2010
1157ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS		0x2014
1158ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK		0x2018
1159ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS		0x201c
1160ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK		0x2020
1161ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS		0x2024
1162ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK			0x2028
1163ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS		0x202c
1164ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK		0x2030
1165ca0fdfd1SAlim Akhtar #define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS		0x2034
1166ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT0_IPCLKPORT_CLK			0x2038
1167ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT1_IPCLKPORT_CLK			0x203c
1168ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT2_IPCLKPORT_CLK			0x2040
1169ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM	0x2044
1170ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM	0x2048
1171ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM	0x204c
1172ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS	0x2050
1173ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS	0x2054
1174ca0fdfd1SAlim Akhtar #define GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS	0x2058
1175ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM		0x205c
1176ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS		0x2060
1177ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM		0x2064
1178ca0fdfd1SAlim Akhtar #define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS		0x2068
1179ca0fdfd1SAlim Akhtar #define GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK		0x206c
1180ca0fdfd1SAlim Akhtar #define GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK		0x2070
1181ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK		0x2074
1182ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK		0x2078
1183ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK		0x207c
1184ca0fdfd1SAlim Akhtar #define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK		0x2080
1185ca0fdfd1SAlim Akhtar #define GAT_IMEM_DMA0_IPCLKPORT_ACLK			0x2084
1186ca0fdfd1SAlim Akhtar #define GAT_IMEM_DMA1_IPCLKPORT_ACLK			0x2088
1187ca0fdfd1SAlim Akhtar #define GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK	0x208c
1188ca0fdfd1SAlim Akhtar #define GAT_IMEM_GIC_IPCLKPORT_CLK			0x2090
1189ca0fdfd1SAlim Akhtar #define GAT_IMEM_INTMEM_IPCLKPORT_ACLK			0x2094
1190ca0fdfd1SAlim Akhtar #define GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK	0x2098
1191ca0fdfd1SAlim Akhtar #define GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK	0x209c
1192ca0fdfd1SAlim Akhtar #define GAT_IMEM_MCT_IPCLKPORT_PCLK			0x20a0
1193ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D	0x20a4
1194ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU	0x20a8
1195ca0fdfd1SAlim Akhtar #define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P	0x20ac
1196ca0fdfd1SAlim Akhtar #define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK		0x20b0
1197ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK		0x20b4
1198ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK	0x20b8
1199ca0fdfd1SAlim Akhtar #define GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK		0x20bc
1200ca0fdfd1SAlim Akhtar #define GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK		0x20c0
1201ca0fdfd1SAlim Akhtar #define GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK		0x20c4
1202ca0fdfd1SAlim Akhtar #define GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK		0x20c8
1203ca0fdfd1SAlim Akhtar #define GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK		0x20cc
1204ca0fdfd1SAlim Akhtar #define GAT_IMEM_TCU_IPCLKPORT_ACLK			0x20d0
1205ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT0_IPCLKPORT_PCLK			0x20d4
1206ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT1_IPCLKPORT_PCLK			0x20d8
1207ca0fdfd1SAlim Akhtar #define GAT_IMEM_WDT2_IPCLKPORT_PCLK			0x20dc
1208ca0fdfd1SAlim Akhtar 
1209ca0fdfd1SAlim Akhtar static const unsigned long imem_clk_regs[] __initconst = {
1210ca0fdfd1SAlim Akhtar 	PLL_CON0_CLK_IMEM_ACLK,
1211ca0fdfd1SAlim Akhtar 	PLL_CON0_CLK_IMEM_INTMEMCLK,
1212ca0fdfd1SAlim Akhtar 	PLL_CON0_CLK_IMEM_TCUCLK,
1213ca0fdfd1SAlim Akhtar 	DIV_OSCCLK_IMEM_TMUTSCLK,
1214ca0fdfd1SAlim Akhtar 	GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK,
1215ca0fdfd1SAlim Akhtar 	GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO,
1216ca0fdfd1SAlim Akhtar 	GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK,
1217ca0fdfd1SAlim Akhtar 	GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK,
1218ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK,
1219ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS,
1220ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK,
1221ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS,
1222ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK,
1223ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS,
1224ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK,
1225ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS,
1226ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK,
1227ca0fdfd1SAlim Akhtar 	GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS,
1228ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT0_IPCLKPORT_CLK,
1229ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT1_IPCLKPORT_CLK,
1230ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT2_IPCLKPORT_CLK,
1231ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM,
1232ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM,
1233ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM,
1234ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS,
1235ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS,
1236ca0fdfd1SAlim Akhtar 	GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS,
1237ca0fdfd1SAlim Akhtar 	GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM,
1238ca0fdfd1SAlim Akhtar 	GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS,
1239ca0fdfd1SAlim Akhtar 	GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM,
1240ca0fdfd1SAlim Akhtar 	GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS,
1241ca0fdfd1SAlim Akhtar 	GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK,
1242ca0fdfd1SAlim Akhtar 	GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK,
1243ca0fdfd1SAlim Akhtar 	GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK,
1244ca0fdfd1SAlim Akhtar 	GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK,
1245ca0fdfd1SAlim Akhtar 	GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK,
1246ca0fdfd1SAlim Akhtar 	GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK,
1247ca0fdfd1SAlim Akhtar 	GAT_IMEM_DMA0_IPCLKPORT_ACLK,
1248ca0fdfd1SAlim Akhtar 	GAT_IMEM_DMA1_IPCLKPORT_ACLK,
1249ca0fdfd1SAlim Akhtar 	GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK,
1250ca0fdfd1SAlim Akhtar 	GAT_IMEM_GIC_IPCLKPORT_CLK,
1251ca0fdfd1SAlim Akhtar 	GAT_IMEM_INTMEM_IPCLKPORT_ACLK,
1252ca0fdfd1SAlim Akhtar 	GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK,
1253ca0fdfd1SAlim Akhtar 	GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK,
1254ca0fdfd1SAlim Akhtar 	GAT_IMEM_MCT_IPCLKPORT_PCLK,
1255ca0fdfd1SAlim Akhtar 	GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D,
1256ca0fdfd1SAlim Akhtar 	GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU,
1257ca0fdfd1SAlim Akhtar 	GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P,
1258ca0fdfd1SAlim Akhtar 	GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK,
1259ca0fdfd1SAlim Akhtar 	GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK,
1260ca0fdfd1SAlim Akhtar 	GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK,
1261ca0fdfd1SAlim Akhtar 	GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK,
1262ca0fdfd1SAlim Akhtar 	GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK,
1263ca0fdfd1SAlim Akhtar 	GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK,
1264ca0fdfd1SAlim Akhtar 	GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK,
1265ca0fdfd1SAlim Akhtar 	GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK,
1266ca0fdfd1SAlim Akhtar 	GAT_IMEM_TCU_IPCLKPORT_ACLK,
1267ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT0_IPCLKPORT_PCLK,
1268ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT1_IPCLKPORT_PCLK,
1269ca0fdfd1SAlim Akhtar 	GAT_IMEM_WDT2_IPCLKPORT_PCLK,
1270ca0fdfd1SAlim Akhtar };
1271ca0fdfd1SAlim Akhtar 
1272ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_tcuclk_p) = { "fin_pll", "dout_cmu_imem_tcuclk" };
1273ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_aclk_p) = { "fin_pll", "dout_cmu_imem_aclk" };
1274ca0fdfd1SAlim Akhtar PNAME(mout_imem_clk_imem_intmemclk_p) = { "fin_pll", "dout_cmu_imem_dmaclk" };
1275ca0fdfd1SAlim Akhtar 
1276ca0fdfd1SAlim Akhtar static const struct samsung_mux_clock imem_mux_clks[] __initconst = {
1277ca0fdfd1SAlim Akhtar 	MUX(0, "mout_imem_clk_imem_tcuclk", mout_imem_clk_imem_tcuclk_p,
1278ca0fdfd1SAlim Akhtar 	    PLL_CON0_CLK_IMEM_TCUCLK, 4, 1),
1279ca0fdfd1SAlim Akhtar 	MUX(0, "mout_imem_clk_imem_aclk", mout_imem_clk_imem_aclk_p, PLL_CON0_CLK_IMEM_ACLK, 4, 1),
1280ca0fdfd1SAlim Akhtar 	MUX(0, "mout_imem_clk_imem_intmemclk", mout_imem_clk_imem_intmemclk_p,
1281ca0fdfd1SAlim Akhtar 	    PLL_CON0_CLK_IMEM_INTMEMCLK, 4, 1),
1282ca0fdfd1SAlim Akhtar };
1283ca0fdfd1SAlim Akhtar 
1284ca0fdfd1SAlim Akhtar static const struct samsung_div_clock imem_div_clks[] __initconst = {
1285ca0fdfd1SAlim Akhtar 	DIV(0, "dout_imem_oscclk_imem_tmutsclk", "fin_pll", DIV_OSCCLK_IMEM_TMUTSCLK, 0, 4),
1286ca0fdfd1SAlim Akhtar };
1287ca0fdfd1SAlim Akhtar 
1288ca0fdfd1SAlim Akhtar static const struct samsung_gate_clock imem_gate_clks[] __initconst = {
1289ca0fdfd1SAlim Akhtar 	GATE(0, "imem_imem_cmu_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1290ca0fdfd1SAlim Akhtar 	     GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1291ca0fdfd1SAlim Akhtar 	GATE(0, "imem_otp_con_top_ipclkport_i_oscclk", "fin_pll",
1292ca0fdfd1SAlim Akhtar 	     GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK, 21, CLK_IGNORE_UNUSED, 0),
1293ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tmu_top_ipclkport_i_clk", "fin_pll",
1294ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0),
1295ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tmu_gt_ipclkport_i_clk", "fin_pll",
1296ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0),
1297ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tmu_cpu0_ipclkport_i_clk", "fin_pll",
1298ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0),
1299ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tmu_gpu_ipclkport_i_clk", "fin_pll",
1300ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0),
1301ca0fdfd1SAlim Akhtar 	GATE(0, "imem_mct_ipclkport_oscclk__alo", "fin_pll",
1302ca0fdfd1SAlim Akhtar 	     GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO, 21, CLK_IGNORE_UNUSED, 0),
1303ca0fdfd1SAlim Akhtar 	GATE(0, "imem_wdt0_ipclkport_clk", "fin_pll",
1304ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT0_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1305ca0fdfd1SAlim Akhtar 	GATE(0, "imem_wdt1_ipclkport_clk", "fin_pll",
1306ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT1_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1307ca0fdfd1SAlim Akhtar 	GATE(0, "imem_wdt2_ipclkport_clk", "fin_pll",
1308ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT2_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1309ca0fdfd1SAlim Akhtar 	GATE(IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu0_ipclkport_i_clk_ts",
1310ca0fdfd1SAlim Akhtar 	     "dout_imem_oscclk_imem_tmutsclk",
1311ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0),
1312ca0fdfd1SAlim Akhtar 	GATE(IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu2_ipclkport_i_clk_ts",
1313ca0fdfd1SAlim Akhtar 	     "dout_imem_oscclk_imem_tmutsclk",
1314ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0),
1315ca0fdfd1SAlim Akhtar 	GATE(IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, "imem_tmu_gpu_ipclkport_i_clk_ts",
1316ca0fdfd1SAlim Akhtar 	     "dout_imem_oscclk_imem_tmutsclk",
1317ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0),
1318ca0fdfd1SAlim Akhtar 	GATE(IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, "imem_tmu_gt_ipclkport_i_clk_ts",
1319ca0fdfd1SAlim Akhtar 	     "dout_imem_oscclk_imem_tmutsclk",
1320ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0),
1321ca0fdfd1SAlim Akhtar 	GATE(IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, "imem_tmu_top_ipclkport_i_clk_ts",
1322ca0fdfd1SAlim Akhtar 	     "dout_imem_oscclk_imem_tmutsclk",
1323ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0),
1324ca0fdfd1SAlim Akhtar 	GATE(0, "imem_adm_axi4st_i0_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk",
1325ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0),
1326ca0fdfd1SAlim Akhtar 	GATE(0, "imem_adm_axi4st_i1_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk",
1327ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0),
1328ca0fdfd1SAlim Akhtar 	GATE(0, "imem_adm_axi4st_i2_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk",
1329ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0),
1330ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ads_axi4st_i0_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk",
1331ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0),
1332ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ads_axi4st_i1_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk",
1333ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0),
1334ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ads_axi4st_i2_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk",
1335ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0),
1336ca0fdfd1SAlim Akhtar 	GATE(0, "imem_async_dma0_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk",
1337ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0),
1338ca0fdfd1SAlim Akhtar 	GATE(0, "imem_async_dma0_ipclkport_pclks", "mout_imem_clk_imem_aclk",
1339ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0),
1340ca0fdfd1SAlim Akhtar 	GATE(0, "imem_async_dma1_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk",
1341ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0),
1342ca0fdfd1SAlim Akhtar 	GATE(0, "imem_async_dma1_ipclkport_pclks", "mout_imem_clk_imem_aclk",
1343ca0fdfd1SAlim Akhtar 	     GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0),
1344ca0fdfd1SAlim Akhtar 	GATE(0, "imem_axi2apb_imemp0_ipclkport_aclk", "mout_imem_clk_imem_aclk",
1345ca0fdfd1SAlim Akhtar 	     GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1346ca0fdfd1SAlim Akhtar 	GATE(0, "imem_axi2apb_imemp1_ipclkport_aclk", "mout_imem_clk_imem_aclk",
1347ca0fdfd1SAlim Akhtar 	     GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1348ca0fdfd1SAlim Akhtar 	GATE(0, "imem_bus_d_imem_ipclkport_mainclk", "mout_imem_clk_imem_tcuclk",
1349ca0fdfd1SAlim Akhtar 	     GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0),
1350ca0fdfd1SAlim Akhtar 	GATE(0, "imem_bus_p_imem_ipclkport_mainclk", "mout_imem_clk_imem_aclk",
1351ca0fdfd1SAlim Akhtar 	     GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0),
1352ca0fdfd1SAlim Akhtar 	GATE(0, "imem_bus_p_imem_ipclkport_pericclk", "mout_imem_clk_imem_aclk",
1353ca0fdfd1SAlim Akhtar 	     GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK, 21, CLK_IGNORE_UNUSED, 0),
1354ca0fdfd1SAlim Akhtar 	GATE(0, "imem_bus_p_imem_ipclkport_tcuclk", "mout_imem_clk_imem_tcuclk",
1355ca0fdfd1SAlim Akhtar 	     GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK, 21, CLK_IGNORE_UNUSED, 0),
1356ca0fdfd1SAlim Akhtar 	GATE(IMEM_DMA0_IPCLKPORT_ACLK, "imem_dma0_ipclkport_aclk", "mout_imem_clk_imem_tcuclk",
1357ca0fdfd1SAlim Akhtar 	     GAT_IMEM_DMA0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0),
1358ca0fdfd1SAlim Akhtar 	GATE(IMEM_DMA1_IPCLKPORT_ACLK, "imem_dma1_ipclkport_aclk", "mout_imem_clk_imem_tcuclk",
1359ca0fdfd1SAlim Akhtar 	     GAT_IMEM_DMA1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0),
1360ca0fdfd1SAlim Akhtar 	GATE(0, "imem_gic500_input_sync_ipclkport_clk", "mout_imem_clk_imem_aclk",
1361ca0fdfd1SAlim Akhtar 	     GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1362ca0fdfd1SAlim Akhtar 	GATE(0, "imem_gic_ipclkport_clk", "mout_imem_clk_imem_aclk",
1363ca0fdfd1SAlim Akhtar 	     GAT_IMEM_GIC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1364ca0fdfd1SAlim Akhtar 	GATE(0, "imem_intmem_ipclkport_aclk", "mout_imem_clk_imem_intmemclk",
1365ca0fdfd1SAlim Akhtar 	     GAT_IMEM_INTMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1366ca0fdfd1SAlim Akhtar 	GATE(0, "imem_mailbox_scs_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1367ca0fdfd1SAlim Akhtar 	     GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1368ca0fdfd1SAlim Akhtar 	GATE(0, "imem_mailbox_sms_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1369ca0fdfd1SAlim Akhtar 	     GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1370ca0fdfd1SAlim Akhtar 	GATE(IMEM_MCT_PCLK, "imem_mct_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1371ca0fdfd1SAlim Akhtar 	     GAT_IMEM_MCT_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1372ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_d",
1373ca0fdfd1SAlim Akhtar 	     "mout_imem_clk_imem_tcuclk",
1374ca0fdfd1SAlim Akhtar 	     GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D, 21, CLK_IGNORE_UNUSED, 0),
1375ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_tcu",
1376ca0fdfd1SAlim Akhtar 	     "mout_imem_clk_imem_tcuclk",
1377ca0fdfd1SAlim Akhtar 	     GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU, 21,
1378ca0fdfd1SAlim Akhtar 	     CLK_IGNORE_UNUSED, 0),
1379ca0fdfd1SAlim Akhtar 	GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psoc_imem__clk_imem_p", "mout_imem_clk_imem_aclk",
1380ca0fdfd1SAlim Akhtar 	     GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P, 21, CLK_IGNORE_UNUSED, 0),
1381ca0fdfd1SAlim Akhtar 	GATE(0, "imem_otp_con_top_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1382ca0fdfd1SAlim Akhtar 	     GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1383ca0fdfd1SAlim Akhtar 	GATE(0, "imem_rstnsync_aclk_ipclkport_clk", "mout_imem_clk_imem_aclk",
1384ca0fdfd1SAlim Akhtar 	     GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1385ca0fdfd1SAlim Akhtar 	GATE(0, "imem_rstnsync_oscclk_ipclkport_clk", "fin_pll",
1386ca0fdfd1SAlim Akhtar 	     GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1387ca0fdfd1SAlim Akhtar 	GATE(0, "imem_rstnsync_intmemclk_ipclkport_clk", "mout_imem_clk_imem_intmemclk",
1388ca0fdfd1SAlim Akhtar 	     GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1389ca0fdfd1SAlim Akhtar 	GATE(0, "imem_rstnsync_tcuclk_ipclkport_clk", "mout_imem_clk_imem_tcuclk",
1390ca0fdfd1SAlim Akhtar 	     GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1391ca0fdfd1SAlim Akhtar 	GATE(0, "imem_sfrif_tmu0_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1392ca0fdfd1SAlim Akhtar 	     GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1393ca0fdfd1SAlim Akhtar 	GATE(0, "imem_sfrif_tmu1_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1394ca0fdfd1SAlim Akhtar 	     GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1395ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tmu_cpu2_ipclkport_i_clk", "fin_pll",
1396ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0),
1397ca0fdfd1SAlim Akhtar 	GATE(0, "imem_sysreg_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1398ca0fdfd1SAlim Akhtar 	     GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1399ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tbu_imem_ipclkport_aclk", "mout_imem_clk_imem_tcuclk",
1400ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1401ca0fdfd1SAlim Akhtar 	GATE(0, "imem_tcu_ipclkport_aclk", "mout_imem_clk_imem_tcuclk",
1402ca0fdfd1SAlim Akhtar 	     GAT_IMEM_TCU_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1403ca0fdfd1SAlim Akhtar 	GATE(IMEM_WDT0_IPCLKPORT_PCLK, "imem_wdt0_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1404ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1405ca0fdfd1SAlim Akhtar 	GATE(IMEM_WDT1_IPCLKPORT_PCLK, "imem_wdt1_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1406ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1407ca0fdfd1SAlim Akhtar 	GATE(IMEM_WDT2_IPCLKPORT_PCLK, "imem_wdt2_ipclkport_pclk", "mout_imem_clk_imem_aclk",
1408ca0fdfd1SAlim Akhtar 	     GAT_IMEM_WDT2_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1409ca0fdfd1SAlim Akhtar };
1410ca0fdfd1SAlim Akhtar 
1411ca0fdfd1SAlim Akhtar static const struct samsung_cmu_info imem_cmu_info __initconst = {
1412ca0fdfd1SAlim Akhtar 	.mux_clks		= imem_mux_clks,
1413ca0fdfd1SAlim Akhtar 	.nr_mux_clks		= ARRAY_SIZE(imem_mux_clks),
1414ca0fdfd1SAlim Akhtar 	.div_clks		= imem_div_clks,
1415ca0fdfd1SAlim Akhtar 	.nr_div_clks		= ARRAY_SIZE(imem_div_clks),
1416ca0fdfd1SAlim Akhtar 	.gate_clks		= imem_gate_clks,
1417ca0fdfd1SAlim Akhtar 	.nr_gate_clks		= ARRAY_SIZE(imem_gate_clks),
1418ca0fdfd1SAlim Akhtar 	.nr_clk_ids		= IMEM_NR_CLK,
1419ca0fdfd1SAlim Akhtar 	.clk_regs		= imem_clk_regs,
1420ca0fdfd1SAlim Akhtar 	.nr_clk_regs		= ARRAY_SIZE(imem_clk_regs),
1421ca0fdfd1SAlim Akhtar };
1422ca0fdfd1SAlim Akhtar 
1423ca0fdfd1SAlim Akhtar static void __init fsd_clk_imem_init(struct device_node *np)
1424ca0fdfd1SAlim Akhtar {
1425ca0fdfd1SAlim Akhtar 	samsung_cmu_register_one(np, &imem_cmu_info);
1426ca0fdfd1SAlim Akhtar }
1427ca0fdfd1SAlim Akhtar 
1428ca0fdfd1SAlim Akhtar CLK_OF_DECLARE(fsd_clk_imem, "tesla,fsd-clock-imem", fsd_clk_imem_init);
1429ca0fdfd1SAlim Akhtar 
1430*75c50afaSAlim Akhtar /* Register Offset definitions for CMU_MFC (0x12810000) */
1431*75c50afaSAlim Akhtar #define PLL_LOCKTIME_PLL_MFC					0x0
1432*75c50afaSAlim Akhtar #define PLL_CON0_PLL_MFC					0x100
1433*75c50afaSAlim Akhtar #define MUX_MFC_BUSD						0x1000
1434*75c50afaSAlim Akhtar #define MUX_MFC_BUSP						0x1008
1435*75c50afaSAlim Akhtar #define DIV_MFC_BUSD_DIV4					0x1800
1436*75c50afaSAlim Akhtar #define GAT_MFC_CMU_MFC_IPCLKPORT_PCLK				0x2000
1437*75c50afaSAlim Akhtar #define GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM			0x2004
1438*75c50afaSAlim Akhtar #define GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS			0x2008
1439*75c50afaSAlim Akhtar #define GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK			0x200c
1440*75c50afaSAlim Akhtar #define GAT_MFC_MFC_IPCLKPORT_ACLK				0x2010
1441*75c50afaSAlim Akhtar #define GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D	0x2018
1442*75c50afaSAlim Akhtar #define GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P	0x201c
1443*75c50afaSAlim Akhtar #define GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK			0x2028
1444*75c50afaSAlim Akhtar #define GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK			0x202c
1445*75c50afaSAlim Akhtar #define GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK			0x2030
1446*75c50afaSAlim Akhtar #define GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK			0x2034
1447*75c50afaSAlim Akhtar #define GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK			0x2038
1448*75c50afaSAlim Akhtar #define GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK				0x203c
1449*75c50afaSAlim Akhtar #define GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK				0x2040
1450*75c50afaSAlim Akhtar #define GAT_MFC_BUSD_DIV4_GATE					0x2044
1451*75c50afaSAlim Akhtar #define GAT_MFC_BUSD_GATE					0x2048
1452*75c50afaSAlim Akhtar 
1453*75c50afaSAlim Akhtar static const unsigned long mfc_clk_regs[] __initconst = {
1454*75c50afaSAlim Akhtar 	PLL_LOCKTIME_PLL_MFC,
1455*75c50afaSAlim Akhtar 	PLL_CON0_PLL_MFC,
1456*75c50afaSAlim Akhtar 	MUX_MFC_BUSD,
1457*75c50afaSAlim Akhtar 	MUX_MFC_BUSP,
1458*75c50afaSAlim Akhtar 	DIV_MFC_BUSD_DIV4,
1459*75c50afaSAlim Akhtar 	GAT_MFC_CMU_MFC_IPCLKPORT_PCLK,
1460*75c50afaSAlim Akhtar 	GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM,
1461*75c50afaSAlim Akhtar 	GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS,
1462*75c50afaSAlim Akhtar 	GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK,
1463*75c50afaSAlim Akhtar 	GAT_MFC_MFC_IPCLKPORT_ACLK,
1464*75c50afaSAlim Akhtar 	GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D,
1465*75c50afaSAlim Akhtar 	GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P,
1466*75c50afaSAlim Akhtar 	GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK,
1467*75c50afaSAlim Akhtar 	GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK,
1468*75c50afaSAlim Akhtar 	GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK,
1469*75c50afaSAlim Akhtar 	GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK,
1470*75c50afaSAlim Akhtar 	GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK,
1471*75c50afaSAlim Akhtar 	GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK,
1472*75c50afaSAlim Akhtar 	GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK,
1473*75c50afaSAlim Akhtar 	GAT_MFC_BUSD_DIV4_GATE,
1474*75c50afaSAlim Akhtar 	GAT_MFC_BUSD_GATE,
1475*75c50afaSAlim Akhtar };
1476*75c50afaSAlim Akhtar 
1477*75c50afaSAlim Akhtar static const struct samsung_pll_rate_table pll_mfc_rate_table[] __initconst = {
1478*75c50afaSAlim Akhtar 	PLL_35XX_RATE(24 * MHZ, 666000000U, 111, 4, 0),
1479*75c50afaSAlim Akhtar };
1480*75c50afaSAlim Akhtar 
1481*75c50afaSAlim Akhtar static const struct samsung_pll_clock mfc_pll_clks[] __initconst = {
1482*75c50afaSAlim Akhtar 	PLL(pll_142xx, 0, "fout_pll_mfc", "fin_pll",
1483*75c50afaSAlim Akhtar 	    PLL_LOCKTIME_PLL_MFC, PLL_CON0_PLL_MFC, pll_mfc_rate_table),
1484*75c50afaSAlim Akhtar };
1485*75c50afaSAlim Akhtar 
1486*75c50afaSAlim Akhtar PNAME(mout_mfc_pll_p) = { "fin_pll", "fout_pll_mfc" };
1487*75c50afaSAlim Akhtar PNAME(mout_mfc_busp_p) = { "fin_pll", "dout_mfc_busd_div4" };
1488*75c50afaSAlim Akhtar PNAME(mout_mfc_busd_p) = { "fin_pll", "mfc_busd_gate" };
1489*75c50afaSAlim Akhtar 
1490*75c50afaSAlim Akhtar static const struct samsung_mux_clock mfc_mux_clks[] __initconst = {
1491*75c50afaSAlim Akhtar 	MUX(0, "mout_mfc_pll", mout_mfc_pll_p, PLL_CON0_PLL_MFC, 4, 1),
1492*75c50afaSAlim Akhtar 	MUX(0, "mout_mfc_busp", mout_mfc_busp_p, MUX_MFC_BUSP, 0, 1),
1493*75c50afaSAlim Akhtar 	MUX(0, "mout_mfc_busd", mout_mfc_busd_p, MUX_MFC_BUSD, 0, 1),
1494*75c50afaSAlim Akhtar };
1495*75c50afaSAlim Akhtar 
1496*75c50afaSAlim Akhtar static const struct samsung_div_clock mfc_div_clks[] __initconst = {
1497*75c50afaSAlim Akhtar 	DIV(0, "dout_mfc_busd_div4", "mfc_busd_div4_gate", DIV_MFC_BUSD_DIV4, 0, 4),
1498*75c50afaSAlim Akhtar };
1499*75c50afaSAlim Akhtar 
1500*75c50afaSAlim Akhtar static const struct samsung_gate_clock mfc_gate_clks[] __initconst = {
1501*75c50afaSAlim Akhtar 	GATE(0, "mfc_cmu_mfc_ipclkport_pclk", "mout_mfc_busp",
1502*75c50afaSAlim Akhtar 	     GAT_MFC_CMU_MFC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1503*75c50afaSAlim Akhtar 	GATE(0, "mfc_as_p_mfc_ipclkport_pclkm", "mout_mfc_busd",
1504*75c50afaSAlim Akhtar 	     GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0),
1505*75c50afaSAlim Akhtar 	GATE(0, "mfc_as_p_mfc_ipclkport_pclks", "mout_mfc_busp",
1506*75c50afaSAlim Akhtar 	     GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0),
1507*75c50afaSAlim Akhtar 	GATE(0, "mfc_axi2apb_mfc_ipclkport_aclk", "mout_mfc_busp",
1508*75c50afaSAlim Akhtar 	     GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1509*75c50afaSAlim Akhtar 	GATE(MFC_MFC_IPCLKPORT_ACLK, "mfc_mfc_ipclkport_aclk", "mout_mfc_busd",
1510*75c50afaSAlim Akhtar 	     GAT_MFC_MFC_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1511*75c50afaSAlim Akhtar 	GATE(0, "mfc_ns_brdg_mfc_ipclkport_clk__pmfc__clk_mfc_d", "mout_mfc_busd",
1512*75c50afaSAlim Akhtar 	     GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D, 21, CLK_IGNORE_UNUSED, 0),
1513*75c50afaSAlim Akhtar 	GATE(0, "mfc_ns_brdg_mfc_ipclkport_clk__pmfc__clk_mfc_p", "mout_mfc_busp",
1514*75c50afaSAlim Akhtar 	     GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P, 21, CLK_IGNORE_UNUSED, 0),
1515*75c50afaSAlim Akhtar 	GATE(0, "mfc_ppmu_mfcd0_ipclkport_aclk", "mout_mfc_busd",
1516*75c50afaSAlim Akhtar 	     GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1517*75c50afaSAlim Akhtar 	GATE(0, "mfc_ppmu_mfcd0_ipclkport_pclk", "mout_mfc_busp",
1518*75c50afaSAlim Akhtar 	     GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1519*75c50afaSAlim Akhtar 	GATE(0, "mfc_ppmu_mfcd1_ipclkport_aclk", "mout_mfc_busd",
1520*75c50afaSAlim Akhtar 	     GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0),
1521*75c50afaSAlim Akhtar 	GATE(0, "mfc_ppmu_mfcd1_ipclkport_pclk", "mout_mfc_busp",
1522*75c50afaSAlim Akhtar 	     GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1523*75c50afaSAlim Akhtar 	GATE(0, "mfc_sysreg_mfc_ipclkport_pclk", "mout_mfc_busp",
1524*75c50afaSAlim Akhtar 	     GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1525*75c50afaSAlim Akhtar 	GATE(0, "mfc_tbu_mfcd0_ipclkport_clk", "mout_mfc_busd",
1526*75c50afaSAlim Akhtar 	     GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1527*75c50afaSAlim Akhtar 	GATE(0, "mfc_tbu_mfcd1_ipclkport_clk", "mout_mfc_busd",
1528*75c50afaSAlim Akhtar 	     GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0),
1529*75c50afaSAlim Akhtar 	GATE(0, "mfc_busd_div4_gate", "mout_mfc_pll",
1530*75c50afaSAlim Akhtar 	     GAT_MFC_BUSD_DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0),
1531*75c50afaSAlim Akhtar 	GATE(0, "mfc_busd_gate", "mout_mfc_pll", GAT_MFC_BUSD_GATE, 21, CLK_IS_CRITICAL, 0),
1532*75c50afaSAlim Akhtar };
1533*75c50afaSAlim Akhtar 
1534*75c50afaSAlim Akhtar static const struct samsung_cmu_info mfc_cmu_info __initconst = {
1535*75c50afaSAlim Akhtar 	.pll_clks		= mfc_pll_clks,
1536*75c50afaSAlim Akhtar 	.nr_pll_clks		= ARRAY_SIZE(mfc_pll_clks),
1537*75c50afaSAlim Akhtar 	.mux_clks		= mfc_mux_clks,
1538*75c50afaSAlim Akhtar 	.nr_mux_clks		= ARRAY_SIZE(mfc_mux_clks),
1539*75c50afaSAlim Akhtar 	.div_clks		= mfc_div_clks,
1540*75c50afaSAlim Akhtar 	.nr_div_clks		= ARRAY_SIZE(mfc_div_clks),
1541*75c50afaSAlim Akhtar 	.gate_clks		= mfc_gate_clks,
1542*75c50afaSAlim Akhtar 	.nr_gate_clks		= ARRAY_SIZE(mfc_gate_clks),
1543*75c50afaSAlim Akhtar 	.nr_clk_ids		= MFC_NR_CLK,
1544*75c50afaSAlim Akhtar 	.clk_regs		= mfc_clk_regs,
1545*75c50afaSAlim Akhtar 	.nr_clk_regs		= ARRAY_SIZE(mfc_clk_regs),
1546*75c50afaSAlim Akhtar };
1547*75c50afaSAlim Akhtar 
1548e3f3dc38SAlim Akhtar /**
1549e3f3dc38SAlim Akhtar  * fsd_cmu_probe - Probe function for FSD platform clocks
1550e3f3dc38SAlim Akhtar  * @pdev: Pointer to platform device
1551e3f3dc38SAlim Akhtar  *
1552e3f3dc38SAlim Akhtar  * Configure clock hierarchy for clock domains of FSD platform
1553e3f3dc38SAlim Akhtar  */
1554e3f3dc38SAlim Akhtar static int __init fsd_cmu_probe(struct platform_device *pdev)
1555e3f3dc38SAlim Akhtar {
1556e3f3dc38SAlim Akhtar 	const struct samsung_cmu_info *info;
1557e3f3dc38SAlim Akhtar 	struct device *dev = &pdev->dev;
1558e3f3dc38SAlim Akhtar 
1559e3f3dc38SAlim Akhtar 	info = of_device_get_match_data(dev);
1560e3f3dc38SAlim Akhtar 	exynos_arm64_register_cmu(dev, dev->of_node, info);
1561e3f3dc38SAlim Akhtar 
1562e3f3dc38SAlim Akhtar 	return 0;
1563e3f3dc38SAlim Akhtar }
1564e3f3dc38SAlim Akhtar 
1565e3f3dc38SAlim Akhtar /* CMUs which belong to Power Domains and need runtime PM to be implemented */
1566e3f3dc38SAlim Akhtar static const struct of_device_id fsd_cmu_of_match[] = {
1567e3f3dc38SAlim Akhtar 	{
1568e3f3dc38SAlim Akhtar 		.compatible = "tesla,fsd-clock-peric",
1569e3f3dc38SAlim Akhtar 		.data = &peric_cmu_info,
1570e3f3dc38SAlim Akhtar 	}, {
1571a15e367bSAlim Akhtar 		.compatible = "tesla,fsd-clock-fsys0",
1572a15e367bSAlim Akhtar 		.data = &fsys0_cmu_info,
1573a15e367bSAlim Akhtar 	}, {
1574bfbce52eSAlim Akhtar 		.compatible = "tesla,fsd-clock-fsys1",
1575bfbce52eSAlim Akhtar 		.data = &fsys1_cmu_info,
1576bfbce52eSAlim Akhtar 	}, {
1577*75c50afaSAlim Akhtar 		.compatible = "tesla,fsd-clock-mfc",
1578*75c50afaSAlim Akhtar 		.data = &mfc_cmu_info,
1579*75c50afaSAlim Akhtar 	}, {
1580e3f3dc38SAlim Akhtar 	},
1581e3f3dc38SAlim Akhtar };
1582e3f3dc38SAlim Akhtar 
1583e3f3dc38SAlim Akhtar static struct platform_driver fsd_cmu_driver __refdata = {
1584e3f3dc38SAlim Akhtar 	.driver	= {
1585e3f3dc38SAlim Akhtar 		.name = "fsd-cmu",
1586e3f3dc38SAlim Akhtar 		.of_match_table = fsd_cmu_of_match,
1587e3f3dc38SAlim Akhtar 		.suppress_bind_attrs = true,
1588e3f3dc38SAlim Akhtar 	},
1589e3f3dc38SAlim Akhtar 	.probe = fsd_cmu_probe,
1590e3f3dc38SAlim Akhtar };
1591e3f3dc38SAlim Akhtar 
1592e3f3dc38SAlim Akhtar static int __init fsd_cmu_init(void)
1593e3f3dc38SAlim Akhtar {
1594e3f3dc38SAlim Akhtar 	return platform_driver_register(&fsd_cmu_driver);
1595e3f3dc38SAlim Akhtar }
1596e3f3dc38SAlim Akhtar core_initcall(fsd_cmu_init);
1597