xref: /linux/drivers/clk/samsung/clk-exynos7870.c (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
14149066aSKaustabh Chakraborty // SPDX-License-Identifier: GPL-2.0-only
24149066aSKaustabh Chakraborty /*
34149066aSKaustabh Chakraborty  * Copyright (C) 2015 Samsung Electronics Co., Ltd.
44149066aSKaustabh Chakraborty  * Author: Kaustabh Chakraborty <kauschluss@disroot.org>
54149066aSKaustabh Chakraborty  *
64149066aSKaustabh Chakraborty  * Common Clock Framework support for Exynos7870.
74149066aSKaustabh Chakraborty  */
84149066aSKaustabh Chakraborty 
94149066aSKaustabh Chakraborty #include <linux/clk-provider.h>
10*f32f5b0eSKrzysztof Kozlowski #include <linux/mod_devicetable.h>
114149066aSKaustabh Chakraborty #include <linux/of.h>
124149066aSKaustabh Chakraborty #include <linux/platform_device.h>
134149066aSKaustabh Chakraborty 
144149066aSKaustabh Chakraborty #include <dt-bindings/clock/samsung,exynos7870-cmu.h>
154149066aSKaustabh Chakraborty 
164149066aSKaustabh Chakraborty #include "clk.h"
174149066aSKaustabh Chakraborty #include "clk-exynos-arm64.h"
184149066aSKaustabh Chakraborty 
194149066aSKaustabh Chakraborty /*
204149066aSKaustabh Chakraborty  * Register offsets for CMU_MIF (0x10460000)
214149066aSKaustabh Chakraborty  */
224149066aSKaustabh Chakraborty #define PLL_LOCKTIME_MIF_MEM_PLL			0x0000
234149066aSKaustabh Chakraborty #define PLL_LOCKTIME_MIF_MEDIA_PLL			0x0020
244149066aSKaustabh Chakraborty #define PLL_LOCKTIME_MIF_BUS_PLL			0x0040
254149066aSKaustabh Chakraborty #define PLL_CON0_MIF_MEM_PLL				0x0100
264149066aSKaustabh Chakraborty #define PLL_CON0_MIF_MEDIA_PLL				0x0120
274149066aSKaustabh Chakraborty #define PLL_CON0_MIF_BUS_PLL				0x0140
284149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_MEM_PLL			0x0200
294149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_MEM_PLL_CON			0x0200
304149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_MEDIA_PLL			0x0204
314149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_MEDIA_PLL_CON		0x0204
324149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_BUS_PLL			0x0208
334149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_BUS_PLL_CON			0x0208
344149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_BUSD			0x0220
354149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_BUSD				0x0220
364149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_VRA			0x0264
374149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_VRA			0x0264
384149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_CAM			0x0268
394149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_CAM			0x0268
404149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_ISP			0x026c
414149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_ISP			0x026c
424149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_BUS		0x0270
434149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_DISPAUD_BUS			0x0270
444149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_VCLK	0x0274
454149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_VCLK		0x0274
464149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_ECLK	0x0278
474149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_ECLK		0x0278
484149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MSCL		0x027c
494149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_MFCMSCL_MSCL		0x027c
504149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MFC		0x0280
514149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_MFCMSCL_MFC			0x0280
524149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_FSYS_BUS		0x0284
534149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_FSYS_BUS			0x0284
544149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC0		0x0288
554149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_FSYS_MMC0			0x0288
564149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC1		0x028c
574149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_FSYS_MMC1			0x028c
584149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC2		0x0290
594149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_FSYS_MMC2			0x0290
604149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_FSYS_USB20DRD_REFCLK	0x029c
614149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_FSYS_USB20DRD_REFCLK	0x029c
624149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_BUS		0x02a0
634149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_BUS			0x02a0
644149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_UART1		0x02a4
654149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_UART1			0x02a4
664149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_UART2		0x02a8
674149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_UART2			0x02a8
684149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_UART0		0x02ac
694149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_UART0			0x02ac
704149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI2		0x02b0
714149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_SPI2			0x02b0
724149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI1		0x02b4
734149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_SPI1			0x02b4
744149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI0		0x02b8
754149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_SPI0			0x02b8
764149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI3		0x02bc
774149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_SPI3			0x02bc
784149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI4		0x02c0
794149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_PERI_SPI4			0x02c0
804149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR0		0x02c4
814149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_SENSOR0			0x02c4
824149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR1		0x02c8
834149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_SENSOR1			0x02c8
844149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR2		0x02cc
854149066aSKaustabh Chakraborty #define CLK_CON_MUX_MIF_CMU_ISP_SENSOR2			0x02cc
864149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_BUSD				0x0420
874149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_APB				0x0424
884149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_HSI2C				0x0430
894149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_G3D_SWITCH			0x0460
904149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_VRA			0x0464
914149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_CAM			0x0468
924149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_ISP			0x046c
934149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_DISPAUD_BUS			0x0470
944149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_VCLK		0x0474
954149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_ECLK		0x0478
964149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_MFCMSCL_MSCL		0x047c
974149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_MFCMSCL_MFC			0x0480
984149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_FSYS_BUS			0x0484
994149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_FSYS_MMC0			0x0488
1004149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_FSYS_MMC1			0x048c
1014149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_FSYS_MMC2			0x0490
1024149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_FSYS_USB20DRD_REFCLK	0x049c
1034149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_BUS			0x04a0
1044149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_UART1			0x04a4
1054149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_UART2			0x04a8
1064149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_UART0			0x04ac
1074149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_SPI2			0x04b0
1084149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_SPI1			0x04b4
1094149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_SPI0			0x04b8
1104149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_SPI3			0x04bc
1114149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_PERI_SPI4			0x04c0
1124149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_SENSOR0			0x04c4
1134149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_SENSOR1			0x04c8
1144149066aSKaustabh Chakraborty #define CLK_CON_DIV_MIF_CMU_ISP_SENSOR2			0x04cc
1154149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_WRAP_ADC_IF_OSC_SYS		0x080c
1164149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_AP_PCLKS			0x0828
1174149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_CP_PCLKS			0x0828
1184149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S0		0x0828
1194149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S1		0x0828
1204149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_AP_PCLKM			0x0840
1214149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_CP_PCLKM			0x0840
1224149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_IPCLK			0x0840
1234149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_HSI2C_ITCLK			0x0840
1244149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CP_PCLK_HSI2C			0x0840
1254149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_0		0x0840
1264149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_1		0x0840
1274149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_G3D_SWITCH			0x0860
1284149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_VRA			0x0864
1294149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_CAM			0x0868
1304149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_ISP			0x086c
1314149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_DISPAUD_BUS			0x0870
1324149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_VCLK		0x0874
1334149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_ECLK		0x0878
1344149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_MFCMSCL_MSCL		0x087c
1354149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_MFCMSCL_MFC			0x0880
1364149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_FSYS_BUS			0x0884
1374149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_FSYS_MMC0			0x0888
1384149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_FSYS_MMC1			0x088c
1394149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_FSYS_MMC2			0x0890
1404149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_FSYS_USB20DRD_REFCLK	0x089c
1414149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_BUS			0x08a0
1424149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_UART1			0x08a4
1434149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_UART2			0x08a8
1444149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_UART0			0x08ac
1454149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_SPI2			0x08b0
1464149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_SPI1			0x08b4
1474149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_SPI0			0x08b8
1484149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_SPI3			0x08bc
1494149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_PERI_SPI4			0x08c0
1504149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_SENSOR0			0x08c4
1514149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_SENSOR1			0x08c8
1524149066aSKaustabh Chakraborty #define CLK_CON_GAT_MIF_CMU_ISP_SENSOR2			0x08cc
1534149066aSKaustabh Chakraborty 
1544149066aSKaustabh Chakraborty static const unsigned long mif_clk_regs[] __initconst = {
1554149066aSKaustabh Chakraborty 	PLL_LOCKTIME_MIF_MEM_PLL,
1564149066aSKaustabh Chakraborty 	PLL_LOCKTIME_MIF_MEDIA_PLL,
1574149066aSKaustabh Chakraborty 	PLL_LOCKTIME_MIF_BUS_PLL,
1584149066aSKaustabh Chakraborty 	PLL_CON0_MIF_MEM_PLL,
1594149066aSKaustabh Chakraborty 	PLL_CON0_MIF_MEDIA_PLL,
1604149066aSKaustabh Chakraborty 	PLL_CON0_MIF_BUS_PLL,
1614149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_MEM_PLL,
1624149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_MEM_PLL_CON,
1634149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_MEDIA_PLL,
1644149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_MEDIA_PLL_CON,
1654149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_BUS_PLL,
1664149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_BUS_PLL_CON,
1674149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_BUSD,
1684149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_BUSD,
1694149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_VRA,
1704149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_VRA,
1714149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_CAM,
1724149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_CAM,
1734149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_ISP,
1744149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_ISP,
1754149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_BUS,
1764149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_DISPAUD_BUS,
1774149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_VCLK,
1784149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_VCLK,
1794149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_ECLK,
1804149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_ECLK,
1814149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MSCL,
1824149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_MFCMSCL_MSCL,
1834149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MFC,
1844149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_MFCMSCL_MFC,
1854149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_FSYS_BUS,
1864149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_FSYS_BUS,
1874149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC0,
1884149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_FSYS_MMC0,
1894149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC1,
1904149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_FSYS_MMC1,
1914149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC2,
1924149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_FSYS_MMC2,
1934149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_FSYS_USB20DRD_REFCLK,
1944149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_FSYS_USB20DRD_REFCLK,
1954149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_BUS,
1964149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_BUS,
1974149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_UART1,
1984149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_UART1,
1994149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_UART2,
2004149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_UART2,
2014149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_UART0,
2024149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_UART0,
2034149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI2,
2044149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_SPI2,
2054149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI1,
2064149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_SPI1,
2074149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI0,
2084149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_SPI0,
2094149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI3,
2104149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_SPI3,
2114149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI4,
2124149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_PERI_SPI4,
2134149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR0,
2144149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_SENSOR0,
2154149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR1,
2164149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_SENSOR1,
2174149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR2,
2184149066aSKaustabh Chakraborty 	CLK_CON_MUX_MIF_CMU_ISP_SENSOR2,
2194149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_BUSD,
2204149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_APB,
2214149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_HSI2C,
2224149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_G3D_SWITCH,
2234149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_VRA,
2244149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_CAM,
2254149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_ISP,
2264149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_DISPAUD_BUS,
2274149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_VCLK,
2284149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_ECLK,
2294149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_MFCMSCL_MSCL,
2304149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_MFCMSCL_MFC,
2314149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_FSYS_BUS,
2324149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_FSYS_MMC0,
2334149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_FSYS_MMC1,
2344149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_FSYS_MMC2,
2354149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_FSYS_USB20DRD_REFCLK,
2364149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_BUS,
2374149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_UART1,
2384149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_UART2,
2394149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_UART0,
2404149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_SPI2,
2414149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_SPI1,
2424149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_SPI0,
2434149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_SPI3,
2444149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_PERI_SPI4,
2454149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_SENSOR0,
2464149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_SENSOR1,
2474149066aSKaustabh Chakraborty 	CLK_CON_DIV_MIF_CMU_ISP_SENSOR2,
2484149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_WRAP_ADC_IF_OSC_SYS,
2494149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_AP_PCLKS,
2504149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_CP_PCLKS,
2514149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S0,
2524149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S1,
2534149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_AP_PCLKM,
2544149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_CP_PCLKM,
2554149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_IPCLK,
2564149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_HSI2C_ITCLK,
2574149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CP_PCLK_HSI2C,
2584149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_0,
2594149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_1,
2604149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_G3D_SWITCH,
2614149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_VRA,
2624149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_CAM,
2634149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_ISP,
2644149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_DISPAUD_BUS,
2654149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_VCLK,
2664149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_ECLK,
2674149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_MFCMSCL_MSCL,
2684149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_MFCMSCL_MFC,
2694149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_FSYS_BUS,
2704149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_FSYS_MMC0,
2714149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_FSYS_MMC1,
2724149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_FSYS_MMC2,
2734149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_FSYS_USB20DRD_REFCLK,
2744149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_BUS,
2754149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_UART1,
2764149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_UART2,
2774149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_UART0,
2784149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_SPI2,
2794149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_SPI1,
2804149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_SPI0,
2814149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_SPI3,
2824149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_PERI_SPI4,
2834149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_SENSOR0,
2844149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_SENSOR1,
2854149066aSKaustabh Chakraborty 	CLK_CON_GAT_MIF_CMU_ISP_SENSOR2,
2864149066aSKaustabh Chakraborty };
2874149066aSKaustabh Chakraborty 
2884149066aSKaustabh Chakraborty static const struct samsung_fixed_factor_clock mif_fixed_factor_clks[] __initconst = {
2894149066aSKaustabh Chakraborty 	FFACTOR(0, "ffac_mif_mux_bus_pll_div2", "gout_mif_mux_bus_pll_con", 1, 2,
2904149066aSKaustabh Chakraborty 		0),
2914149066aSKaustabh Chakraborty 	FFACTOR(0, "ffac_mif_mux_media_pll_div2", "gout_mif_mux_media_pll_con",
2924149066aSKaustabh Chakraborty 		1, 2, 0),
2934149066aSKaustabh Chakraborty 	FFACTOR(0, "ffac_mif_mux_mem_pll_div2", "gout_mif_mux_mem_pll_con", 1, 2,
2944149066aSKaustabh Chakraborty 		0),
2954149066aSKaustabh Chakraborty };
2964149066aSKaustabh Chakraborty 
2974149066aSKaustabh Chakraborty static const struct samsung_pll_clock mif_pll_clks[] __initconst = {
2984149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_MIF_BUS_PLL, "fout_mif_bus_pll", "oscclk",
2994149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_MIF_BUS_PLL, PLL_CON0_MIF_BUS_PLL, NULL),
3004149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_MIF_MEDIA_PLL, "fout_mif_media_pll", "oscclk",
3014149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_MIF_MEDIA_PLL, PLL_CON0_MIF_MEDIA_PLL, NULL),
3024149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_MIF_MEM_PLL, "fout_mif_mem_pll", "oscclk",
3034149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_MIF_MEM_PLL, PLL_CON0_MIF_MEM_PLL, NULL),
3044149066aSKaustabh Chakraborty };
3054149066aSKaustabh Chakraborty 
3064149066aSKaustabh Chakraborty /* List of parent clocks for muxes in CMU_MIF */
3074149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_dispaud_bus_p)		= { "ffac_mif_mux_bus_pll_div2",
3084149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3094149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_dispaud_decon_eclk_p)	= { "ffac_mif_mux_bus_pll_div2",
3104149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3114149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_dispaud_decon_vclk_p)	= { "ffac_mif_mux_bus_pll_div2",
3124149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3134149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_fsys_bus_p)			= { "ffac_mif_mux_bus_pll_div2",
3144149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3154149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_fsys_mmc0_p)			= { "ffac_mif_mux_bus_pll_div2",
3164149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3174149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_fsys_mmc1_p)			= { "ffac_mif_mux_bus_pll_div2",
3184149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3194149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_fsys_mmc2_p)			= { "ffac_mif_mux_bus_pll_div2",
3204149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3214149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_fsys_usb20drd_refclk_p)	= { "ffac_mif_mux_bus_pll_div2",
3224149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3234149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_cam_p)			= { "ffac_mif_mux_bus_pll_div2",
3244149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3254149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_isp_p)			= { "ffac_mif_mux_bus_pll_div2",
3264149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3274149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_sensor0_p)		= { "ffac_mif_mux_bus_pll_div2",
3284149066aSKaustabh Chakraborty 						    "oscclk" };
3294149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_sensor1_p)		= { "ffac_mif_mux_bus_pll_div2",
3304149066aSKaustabh Chakraborty 						    "oscclk" };
3314149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_sensor2_p)		= { "ffac_mif_mux_bus_pll_div2",
3324149066aSKaustabh Chakraborty 						    "oscclk" };
3334149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_isp_vra_p)			= { "ffac_mif_mux_bus_pll_div2",
3344149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2",
3354149066aSKaustabh Chakraborty 						    "gout_mif_mux_bus_pll_con" };
3364149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_mfcmscl_mfc_p)		= { "ffac_mif_mux_bus_pll_div2",
3374149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2",
3384149066aSKaustabh Chakraborty 						    "gout_mif_mux_bus_pll_con" };
3394149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_mfcmscl_mscl_p)		= { "ffac_mif_mux_bus_pll_div2",
3404149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2",
3414149066aSKaustabh Chakraborty 						    "gout_mif_mux_bus_pll_con" };
3424149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_bus_p)			= { "ffac_mif_mux_bus_pll_div2",
3434149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3444149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_spi0_p)			= { "ffac_mif_mux_bus_pll_div2",
3454149066aSKaustabh Chakraborty 						    "oscclk" };
3464149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_spi2_p)			= { "ffac_mif_mux_bus_pll_div2",
3474149066aSKaustabh Chakraborty 						    "oscclk" };
3484149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_spi1_p)			= { "ffac_mif_mux_bus_pll_div2",
3494149066aSKaustabh Chakraborty 						    "oscclk" };
3504149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_spi4_p)			= { "ffac_mif_mux_bus_pll_div2",
3514149066aSKaustabh Chakraborty 						    "oscclk" };
3524149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_spi3_p)			= { "ffac_mif_mux_bus_pll_div2",
3534149066aSKaustabh Chakraborty 						    "oscclk" };
3544149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_uart1_p)		= { "ffac_mif_mux_bus_pll_div2",
3554149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3564149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_uart2_p)		= { "ffac_mif_mux_bus_pll_div2",
3574149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3584149066aSKaustabh Chakraborty PNAME(mout_mif_cmu_peri_uart0_p)		= { "ffac_mif_mux_bus_pll_div2",
3594149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2" };
3604149066aSKaustabh Chakraborty PNAME(mout_mif_busd_p)				= { "ffac_mif_mux_bus_pll_div2",
3614149066aSKaustabh Chakraborty 						    "ffac_mif_mux_media_pll_div2",
3624149066aSKaustabh Chakraborty 						    "ffac_mif_mux_mem_pll_div2" };
3634149066aSKaustabh Chakraborty 
3644149066aSKaustabh Chakraborty static const struct samsung_mux_clock mif_mux_clks[] __initconst = {
3654149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_DISPAUD_BUS, "mout_mif_cmu_dispaud_bus",
3664149066aSKaustabh Chakraborty 	    mout_mif_cmu_dispaud_bus_p, CLK_CON_MUX_MIF_CMU_DISPAUD_BUS, 12, 1),
3674149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_DISPAUD_DECON_ECLK,
3684149066aSKaustabh Chakraborty 	    "mout_mif_cmu_dispaud_decon_eclk",
3694149066aSKaustabh Chakraborty 	    mout_mif_cmu_dispaud_decon_eclk_p,
3704149066aSKaustabh Chakraborty 	    CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_ECLK, 12, 1),
3714149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_DISPAUD_DECON_VCLK,
3724149066aSKaustabh Chakraborty 	    "mout_mif_cmu_dispaud_decon_vclk",
3734149066aSKaustabh Chakraborty 	    mout_mif_cmu_dispaud_decon_vclk_p,
3744149066aSKaustabh Chakraborty 	    CLK_CON_MUX_MIF_CMU_DISPAUD_DECON_VCLK, 12, 1),
3754149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_FSYS_BUS, "mout_mif_cmu_fsys_bus",
3764149066aSKaustabh Chakraborty 	    mout_mif_cmu_fsys_bus_p, CLK_CON_MUX_MIF_CMU_FSYS_BUS, 12, 1),
3774149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_FSYS_MMC0, "mout_mif_cmu_fsys_mmc0",
3784149066aSKaustabh Chakraborty 	    mout_mif_cmu_fsys_mmc0_p, CLK_CON_MUX_MIF_CMU_FSYS_MMC0, 12, 1),
3794149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_FSYS_MMC1, "mout_mif_cmu_fsys_mmc1",
3804149066aSKaustabh Chakraborty 	    mout_mif_cmu_fsys_mmc1_p, CLK_CON_MUX_MIF_CMU_FSYS_MMC1, 12, 1),
3814149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_FSYS_MMC2, "mout_mif_cmu_fsys_mmc2",
3824149066aSKaustabh Chakraborty 	    mout_mif_cmu_fsys_mmc2_p, CLK_CON_MUX_MIF_CMU_FSYS_MMC2, 12, 1),
3834149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_FSYS_USB20DRD_REFCLK,
3844149066aSKaustabh Chakraborty 	    "mout_mif_cmu_fsys_usb20drd_refclk",
3854149066aSKaustabh Chakraborty 	    mout_mif_cmu_fsys_usb20drd_refclk_p,
3864149066aSKaustabh Chakraborty 	    CLK_CON_MUX_MIF_CMU_FSYS_USB20DRD_REFCLK, 12, 1),
3874149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_CAM, "mout_mif_cmu_isp_cam",
3884149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_cam_p, CLK_CON_MUX_MIF_CMU_ISP_CAM, 12, 1),
3894149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_ISP, "mout_mif_cmu_isp_isp",
3904149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_isp_p, CLK_CON_MUX_MIF_CMU_ISP_ISP, 12, 1),
3914149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_SENSOR0, "mout_mif_cmu_isp_sensor0",
3924149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_sensor0_p, CLK_CON_MUX_MIF_CMU_ISP_SENSOR0, 12, 1),
3934149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_SENSOR1, "mout_mif_cmu_isp_sensor1",
3944149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_sensor1_p, CLK_CON_MUX_MIF_CMU_ISP_SENSOR1, 12, 1),
3954149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_SENSOR2, "mout_mif_cmu_isp_sensor2",
3964149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_sensor2_p, CLK_CON_MUX_MIF_CMU_ISP_SENSOR2, 12, 1),
3974149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_ISP_VRA, "mout_mif_cmu_isp_vra",
3984149066aSKaustabh Chakraborty 	    mout_mif_cmu_isp_vra_p, CLK_CON_MUX_MIF_CMU_ISP_VRA, 12, 2),
3994149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_MFCMSCL_MFC, "mout_mif_cmu_mfcmscl_mfc",
4004149066aSKaustabh Chakraborty 	    mout_mif_cmu_mfcmscl_mfc_p, CLK_CON_MUX_MIF_CMU_MFCMSCL_MFC, 12, 2),
4014149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_MFCMSCL_MSCL, "mout_mif_cmu_mfcmscl_mscl",
4024149066aSKaustabh Chakraborty 	    mout_mif_cmu_mfcmscl_mscl_p, CLK_CON_MUX_MIF_CMU_MFCMSCL_MSCL, 12,
4034149066aSKaustabh Chakraborty 	    2),
4044149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_BUS, "mout_mif_cmu_peri_bus",
4054149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_bus_p, CLK_CON_MUX_MIF_CMU_PERI_BUS, 12, 1),
4064149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_SPI0, "mout_mif_cmu_peri_spi0",
4074149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_spi0_p, CLK_CON_MUX_MIF_CMU_PERI_SPI0, 12, 1),
4084149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_SPI2, "mout_mif_cmu_peri_spi2",
4094149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_spi2_p, CLK_CON_MUX_MIF_CMU_PERI_SPI2, 12, 1),
4104149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_SPI1, "mout_mif_cmu_peri_spi1",
4114149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_spi1_p, CLK_CON_MUX_MIF_CMU_PERI_SPI1, 12, 1),
4124149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_SPI4, "mout_mif_cmu_peri_spi4",
4134149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_spi4_p, CLK_CON_MUX_MIF_CMU_PERI_SPI4, 12, 1),
4144149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_SPI3, "mout_mif_cmu_peri_spi3",
4154149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_spi3_p, CLK_CON_MUX_MIF_CMU_PERI_SPI3, 12, 1),
4164149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_UART1, "mout_mif_cmu_peri_uart1",
4174149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_uart1_p, CLK_CON_MUX_MIF_CMU_PERI_UART1, 12, 1),
4184149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_UART2, "mout_mif_cmu_peri_uart2",
4194149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_uart2_p, CLK_CON_MUX_MIF_CMU_PERI_UART2, 12, 1),
4204149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_CMU_PERI_UART0, "mout_mif_cmu_peri_uart0",
4214149066aSKaustabh Chakraborty 	    mout_mif_cmu_peri_uart0_p, CLK_CON_MUX_MIF_CMU_PERI_UART0, 12, 1),
4224149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MIF_BUSD, "mout_mif_busd", mout_mif_busd_p,
4234149066aSKaustabh Chakraborty 	    CLK_CON_MUX_MIF_BUSD, 12, 2),
4244149066aSKaustabh Chakraborty };
4254149066aSKaustabh Chakraborty 
4264149066aSKaustabh Chakraborty static const struct samsung_div_clock mif_div_clks[] __initconst = {
4274149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_DISPAUD_BUS, "dout_mif_cmu_dispaud_bus",
4284149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_dispaud_bus", CLK_CON_DIV_MIF_CMU_DISPAUD_BUS, 0,
4294149066aSKaustabh Chakraborty 	    4),
4304149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_DISPAUD_DECON_ECLK,
4314149066aSKaustabh Chakraborty 	    "dout_mif_cmu_dispaud_decon_eclk",
4324149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_dispaud_decon_eclk",
4334149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_ECLK, 0, 4),
4344149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_DISPAUD_DECON_VCLK,
4354149066aSKaustabh Chakraborty 	    "dout_mif_cmu_dispaud_decon_vclk",
4364149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_dispaud_decon_vclk",
4374149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_CMU_DISPAUD_DECON_VCLK, 0, 4),
4384149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_FSYS_BUS, "dout_mif_cmu_fsys_bus",
4394149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_fsys_bus", CLK_CON_DIV_MIF_CMU_FSYS_BUS, 0, 4),
4404149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_FSYS_MMC0, "dout_mif_cmu_fsys_mmc0",
4414149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_fsys_mmc0", CLK_CON_DIV_MIF_CMU_FSYS_MMC0, 0, 10),
4424149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_FSYS_MMC1, "dout_mif_cmu_fsys_mmc1",
4434149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_fsys_mmc1", CLK_CON_DIV_MIF_CMU_FSYS_MMC1, 0, 10),
4444149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_FSYS_MMC2, "dout_mif_cmu_fsys_mmc2",
4454149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_fsys_mmc2", CLK_CON_DIV_MIF_CMU_FSYS_MMC2, 0, 10),
4464149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_FSYS_USB20DRD_REFCLK,
4474149066aSKaustabh Chakraborty 	    "dout_mif_cmu_fsys_usb20drd_refclk",
4484149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_fsys_usb20drd_refclk",
4494149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_CMU_FSYS_USB20DRD_REFCLK, 0, 4),
4504149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_G3D_SWITCH, "dout_mif_cmu_g3d_switch",
4514149066aSKaustabh Chakraborty 	    "ffac_mif_mux_bus_pll_div2", CLK_CON_DIV_MIF_CMU_G3D_SWITCH, 0, 2),
4524149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_CAM, "dout_mif_cmu_isp_cam",
4534149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_cam", CLK_CON_DIV_MIF_CMU_ISP_CAM, 0, 4),
4544149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_ISP, "dout_mif_cmu_isp_isp",
4554149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_isp", CLK_CON_DIV_MIF_CMU_ISP_ISP, 0, 4),
4564149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_SENSOR0, "dout_mif_cmu_isp_sensor0",
4574149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_sensor0", CLK_CON_DIV_MIF_CMU_ISP_SENSOR0, 0,
4584149066aSKaustabh Chakraborty 	    6),
4594149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_SENSOR1, "dout_mif_cmu_isp_sensor1",
4604149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_sensor1", CLK_CON_DIV_MIF_CMU_ISP_SENSOR1, 0,
4614149066aSKaustabh Chakraborty 	    6),
4624149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_SENSOR2, "dout_mif_cmu_isp_sensor2",
4634149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_sensor2", CLK_CON_DIV_MIF_CMU_ISP_SENSOR2, 0,
4644149066aSKaustabh Chakraborty 	    6),
4654149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_ISP_VRA, "dout_mif_cmu_isp_vra",
4664149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_isp_vra", CLK_CON_DIV_MIF_CMU_ISP_VRA, 0, 4),
4674149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_MFCMSCL_MFC, "dout_mif_cmu_mfcmscl_mfc",
4684149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_mfcmscl_mfc", CLK_CON_DIV_MIF_CMU_MFCMSCL_MFC, 0,
4694149066aSKaustabh Chakraborty 	    4),
4704149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_MFCMSCL_MSCL, "dout_mif_cmu_mfcmscl_mscl",
4714149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_mfcmscl_mscl", CLK_CON_DIV_MIF_CMU_MFCMSCL_MSCL,
4724149066aSKaustabh Chakraborty 	    0, 4),
4734149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_BUS, "dout_mif_cmu_peri_bus",
4744149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_bus", CLK_CON_DIV_MIF_CMU_PERI_BUS, 0, 4),
4754149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_SPI0, "dout_mif_cmu_peri_spi0",
4764149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_spi0", CLK_CON_DIV_MIF_CMU_PERI_SPI0, 0, 6),
4774149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_SPI2, "dout_mif_cmu_peri_spi2",
4784149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_spi2", CLK_CON_DIV_MIF_CMU_PERI_SPI2, 0, 6),
4794149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_SPI1, "dout_mif_cmu_peri_spi1",
4804149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_spi1", CLK_CON_DIV_MIF_CMU_PERI_SPI1, 0, 6),
4814149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_SPI4, "dout_mif_cmu_peri_spi4",
4824149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_spi4", CLK_CON_DIV_MIF_CMU_PERI_SPI4, 0, 6),
4834149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_SPI3, "dout_mif_cmu_peri_spi3",
4844149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_spi3", CLK_CON_DIV_MIF_CMU_PERI_SPI3, 0, 6),
4854149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_UART1, "dout_mif_cmu_peri_uart1",
4864149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_uart1", CLK_CON_DIV_MIF_CMU_PERI_UART1, 0, 4),
4874149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_UART2, "dout_mif_cmu_peri_uart2",
4884149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_uart2", CLK_CON_DIV_MIF_CMU_PERI_UART2, 0, 4),
4894149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_CMU_PERI_UART0, "dout_mif_cmu_peri_uart0",
4904149066aSKaustabh Chakraborty 	    "gout_mif_mux_cmu_peri_uart0", CLK_CON_DIV_MIF_CMU_PERI_UART0, 0, 4),
4914149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_APB, "dout_mif_apb", "dout_mif_busd",
4924149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_APB, 0, 2),
4934149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_BUSD, "dout_mif_busd", "gout_mif_mux_busd",
4944149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_BUSD, 0, 4),
4954149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MIF_HSI2C, "dout_mif_hsi2c", "ffac_mif_mux_media_pll_div2",
4964149066aSKaustabh Chakraborty 	    CLK_CON_DIV_MIF_HSI2C, 0, 4),
4974149066aSKaustabh Chakraborty };
4984149066aSKaustabh Chakraborty 
4994149066aSKaustabh Chakraborty static const struct samsung_gate_clock mif_gate_clks[] __initconst = {
5004149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_DISPAUD_BUS, "gout_mif_cmu_dispaud_bus",
5014149066aSKaustabh Chakraborty 	     "dout_mif_cmu_dispaud_bus", CLK_CON_GAT_MIF_CMU_DISPAUD_BUS, 0,
5024149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5034149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_DISPAUD_DECON_ECLK,
5044149066aSKaustabh Chakraborty 	     "gout_mif_cmu_dispaud_decon_eclk",
5054149066aSKaustabh Chakraborty 	     "dout_mif_cmu_dispaud_decon_eclk",
5064149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_ECLK, 0, CLK_SET_RATE_PARENT, 0),
5074149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_DISPAUD_DECON_VCLK,
5084149066aSKaustabh Chakraborty 	     "gout_mif_cmu_dispaud_decon_vclk",
5094149066aSKaustabh Chakraborty 	     "dout_mif_cmu_dispaud_decon_vclk",
5104149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_CMU_DISPAUD_DECON_VCLK, 0, CLK_SET_RATE_PARENT, 0),
5114149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_FSYS_BUS, "gout_mif_cmu_fsys_bus",
5124149066aSKaustabh Chakraborty 	     "dout_mif_cmu_fsys_bus", CLK_CON_GAT_MIF_CMU_FSYS_BUS, 0,
5134149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5144149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_FSYS_MMC0, "gout_mif_cmu_fsys_mmc0",
5154149066aSKaustabh Chakraborty 	     "dout_mif_cmu_fsys_mmc0", CLK_CON_GAT_MIF_CMU_FSYS_MMC0, 0,
5164149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5174149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_FSYS_MMC1, "gout_mif_cmu_fsys_mmc1",
5184149066aSKaustabh Chakraborty 	     "dout_mif_cmu_fsys_mmc1", CLK_CON_GAT_MIF_CMU_FSYS_MMC1, 0,
5194149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5204149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_FSYS_MMC2, "gout_mif_cmu_fsys_mmc2",
5214149066aSKaustabh Chakraborty 	     "dout_mif_cmu_fsys_mmc2", CLK_CON_GAT_MIF_CMU_FSYS_MMC2, 0,
5224149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5234149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_FSYS_USB20DRD_REFCLK,
5244149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_usb20drd_refclk",
5254149066aSKaustabh Chakraborty 	     "dout_mif_cmu_fsys_usb20drd_refclk",
5264149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_CMU_FSYS_USB20DRD_REFCLK, 0, CLK_SET_RATE_PARENT,
5274149066aSKaustabh Chakraborty 	     0),
5284149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_G3D_SWITCH, "gout_mif_cmu_g3d_switch",
5294149066aSKaustabh Chakraborty 	     "dout_mif_cmu_g3d_switch", CLK_CON_GAT_MIF_CMU_G3D_SWITCH, 0,
5304149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5314149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_CAM, "gout_mif_cmu_isp_cam",
5324149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_cam", CLK_CON_GAT_MIF_CMU_ISP_CAM, 0,
5334149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5344149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_ISP, "gout_mif_cmu_isp_isp",
5354149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_isp", CLK_CON_GAT_MIF_CMU_ISP_ISP, 0,
5364149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5374149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_SENSOR0, "gout_mif_cmu_isp_sensor0",
5384149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_sensor0", CLK_CON_GAT_MIF_CMU_ISP_SENSOR0, 0,
5394149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5404149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_SENSOR1, "gout_mif_cmu_isp_sensor1",
5414149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_sensor1", CLK_CON_GAT_MIF_CMU_ISP_SENSOR1, 0,
5424149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5434149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_SENSOR2, "gout_mif_cmu_isp_sensor2",
5444149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_sensor2", CLK_CON_GAT_MIF_CMU_ISP_SENSOR2, 0,
5454149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5464149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_ISP_VRA, "gout_mif_cmu_isp_vra",
5474149066aSKaustabh Chakraborty 	     "dout_mif_cmu_isp_vra", CLK_CON_GAT_MIF_CMU_ISP_VRA, 0,
5484149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5494149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_MFCMSCL_MFC, "gout_mif_cmu_mfcmscl_mfc",
5504149066aSKaustabh Chakraborty 	     "dout_mif_cmu_mfcmscl_mfc", CLK_CON_GAT_MIF_CMU_MFCMSCL_MFC, 0,
5514149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5524149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_MFCMSCL_MSCL, "gout_mif_cmu_mfcmscl_mscl",
5534149066aSKaustabh Chakraborty 	     "dout_mif_cmu_mfcmscl_mscl", CLK_CON_GAT_MIF_CMU_MFCMSCL_MSCL, 0,
5544149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5554149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_BUS, "gout_mif_cmu_peri_bus",
5564149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_bus", CLK_CON_GAT_MIF_CMU_PERI_BUS, 0,
5574149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5584149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_SPI0, "gout_mif_cmu_peri_spi0",
5594149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_spi0", CLK_CON_GAT_MIF_CMU_PERI_SPI0, 0,
5604149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5614149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_SPI2, "gout_mif_cmu_peri_spi2",
5624149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_spi2", CLK_CON_GAT_MIF_CMU_PERI_SPI2, 0,
5634149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5644149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_SPI1, "gout_mif_cmu_peri_spi1",
5654149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_spi1", CLK_CON_GAT_MIF_CMU_PERI_SPI1, 0,
5664149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5674149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_SPI4, "gout_mif_cmu_peri_spi4",
5684149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_spi4", CLK_CON_GAT_MIF_CMU_PERI_SPI4, 0,
5694149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5704149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_SPI3, "gout_mif_cmu_peri_spi3",
5714149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_spi3", CLK_CON_GAT_MIF_CMU_PERI_SPI3, 0,
5724149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5734149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_UART1, "gout_mif_cmu_peri_uart1",
5744149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_uart1", CLK_CON_GAT_MIF_CMU_PERI_UART1, 0,
5754149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5764149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_UART2, "gout_mif_cmu_peri_uart2",
5774149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_uart2", CLK_CON_GAT_MIF_CMU_PERI_UART2, 0,
5784149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5794149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CMU_PERI_UART0, "gout_mif_cmu_peri_uart0",
5804149066aSKaustabh Chakraborty 	     "dout_mif_cmu_peri_uart0", CLK_CON_GAT_MIF_CMU_PERI_UART0, 0,
5814149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5824149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_AP_PCLKM, "gout_mif_hsi2c_ap_pclkm",
5834149066aSKaustabh Chakraborty 	     "dout_mif_hsi2c", CLK_CON_GAT_MIF_HSI2C_AP_PCLKM, 0,
5844149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
5854149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_AP_PCLKS, "gout_mif_hsi2c_ap_pclks",
5864149066aSKaustabh Chakraborty 	     "dout_mif_apb", CLK_CON_GAT_MIF_HSI2C_AP_PCLKS, 14, CLK_IS_CRITICAL
5874149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
5884149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_CP_PCLKM, "gout_mif_hsi2c_cp_pclkm",
5894149066aSKaustabh Chakraborty 	     "dout_mif_hsi2c", CLK_CON_GAT_MIF_HSI2C_CP_PCLKM, 1,
5904149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
5914149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_CP_PCLKS, "gout_mif_hsi2c_cp_pclks",
5924149066aSKaustabh Chakraborty 	     "dout_mif_apb", CLK_CON_GAT_MIF_HSI2C_CP_PCLKS, 15, CLK_IS_CRITICAL
5934149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
5944149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_IPCLK, "gout_mif_hsi2c_ipclk", "dout_mif_hsi2c",
5954149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_HSI2C_IPCLK, 2, CLK_IS_CRITICAL |
5964149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
5974149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_HSI2C_ITCLK, "gout_mif_hsi2c_itclk", "dout_mif_hsi2c",
5984149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_HSI2C_ITCLK, 3, CLK_IS_CRITICAL |
5994149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
6004149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CP_PCLK_HSI2C, "gout_mif_cp_pclk_hsi2c",
6014149066aSKaustabh Chakraborty 	     "dout_mif_hsi2c", CLK_CON_GAT_MIF_CP_PCLK_HSI2C, 6, CLK_IS_CRITICAL
6024149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
6034149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CP_PCLK_HSI2C_BAT_0, "gout_mif_cp_pclk_hsi2c_bat_0",
6044149066aSKaustabh Chakraborty 	     "dout_mif_hsi2c", CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_0, 4,
6054149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6064149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_CP_PCLK_HSI2C_BAT_1, "gout_mif_cp_pclk_hsi2c_bat_1",
6074149066aSKaustabh Chakraborty 	     "dout_mif_hsi2c", CLK_CON_GAT_MIF_CP_PCLK_HSI2C_BAT_1, 5,
6084149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6094149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_WRAP_ADC_IF_OSC_SYS, "gout_mif_wrap_adc_if_osc_sys",
6104149066aSKaustabh Chakraborty 	     "oscclk", CLK_CON_GAT_MIF_WRAP_ADC_IF_OSC_SYS, 3,
6114149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
6124149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_WRAP_ADC_IF_PCLK_S0, "gout_mif_wrap_adc_if_pclk_s0",
6134149066aSKaustabh Chakraborty 	     "dout_mif_apb", CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S0, 20,
6144149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6154149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_WRAP_ADC_IF_PCLK_S1, "gout_mif_wrap_adc_if_pclk_s1",
6164149066aSKaustabh Chakraborty 	     "dout_mif_apb", CLK_CON_GAT_MIF_WRAP_ADC_IF_PCLK_S1, 21,
6174149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6184149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_BUS_PLL, "gout_mif_mux_bus_pll",
6194149066aSKaustabh Chakraborty 	     "gout_mif_mux_bus_pll_con", CLK_CON_GAT_MIF_MUX_BUS_PLL, 21,
6204149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6214149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_BUS_PLL_CON, "gout_mif_mux_bus_pll_con",
6224149066aSKaustabh Chakraborty 	     "fout_mif_bus_pll", CLK_CON_GAT_MIF_MUX_BUS_PLL_CON, 12,
6234149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6244149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_DISPAUD_BUS, "gout_mif_mux_cmu_dispaud_bus",
6254149066aSKaustabh Chakraborty 	     "mout_mif_cmu_dispaud_bus", CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_BUS,
6264149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6274149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_DISPAUD_DECON_ECLK,
6284149066aSKaustabh Chakraborty 	     "gout_mif_mux_cmu_dispaud_decon_eclk",
6294149066aSKaustabh Chakraborty 	     "mout_mif_cmu_dispaud_decon_eclk",
6304149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_ECLK, 21, CLK_IS_CRITICAL |
6314149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
6324149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_DISPAUD_DECON_VCLK,
6334149066aSKaustabh Chakraborty 	     "gout_mif_mux_cmu_dispaud_decon_vclk",
6344149066aSKaustabh Chakraborty 	     "mout_mif_cmu_dispaud_decon_vclk",
6354149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_MUX_CMU_DISPAUD_DECON_VCLK, 21, CLK_IS_CRITICAL |
6364149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
6374149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_FSYS_BUS, "gout_mif_mux_cmu_fsys_bus",
6384149066aSKaustabh Chakraborty 	     "mout_mif_cmu_fsys_bus", CLK_CON_GAT_MIF_MUX_CMU_FSYS_BUS, 21,
6394149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6404149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_FSYS_MMC0, "gout_mif_mux_cmu_fsys_mmc0",
6414149066aSKaustabh Chakraborty 	     "mout_mif_cmu_fsys_mmc0", CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC0, 21,
6424149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6434149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_FSYS_MMC1, "gout_mif_mux_cmu_fsys_mmc1",
6444149066aSKaustabh Chakraborty 	     "mout_mif_cmu_fsys_mmc1", CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC1, 21,
6454149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6464149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_FSYS_MMC2, "gout_mif_mux_cmu_fsys_mmc2",
6474149066aSKaustabh Chakraborty 	     "mout_mif_cmu_fsys_mmc2", CLK_CON_GAT_MIF_MUX_CMU_FSYS_MMC2, 21,
6484149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6494149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_FSYS_USB20DRD_REFCLK,
6504149066aSKaustabh Chakraborty 	     "gout_mif_mux_cmu_fsys_usb20drd_refclk",
6514149066aSKaustabh Chakraborty 	     "mout_mif_cmu_fsys_usb20drd_refclk",
6524149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_MUX_CMU_FSYS_USB20DRD_REFCLK, 21, CLK_IS_CRITICAL |
6534149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
6544149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_CAM, "gout_mif_mux_cmu_isp_cam",
6554149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_cam", CLK_CON_GAT_MIF_MUX_CMU_ISP_CAM, 21,
6564149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6574149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_ISP, "gout_mif_mux_cmu_isp_isp",
6584149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_isp", CLK_CON_GAT_MIF_MUX_CMU_ISP_ISP, 21,
6594149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6604149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR0, "gout_mif_mux_cmu_isp_sensor0",
6614149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_sensor0", CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR0,
6624149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6634149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR1, "gout_mif_mux_cmu_isp_sensor1",
6644149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_sensor1", CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR1,
6654149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6664149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR2, "gout_mif_mux_cmu_isp_sensor2",
6674149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_sensor2", CLK_CON_GAT_MIF_MUX_CMU_ISP_SENSOR2,
6684149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6694149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_ISP_VRA, "gout_mif_mux_cmu_isp_vra",
6704149066aSKaustabh Chakraborty 	     "mout_mif_cmu_isp_vra", CLK_CON_GAT_MIF_MUX_CMU_ISP_VRA, 21,
6714149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6724149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_MFCMSCL_MFC, "gout_mif_mux_cmu_mfcmscl_mfc",
6734149066aSKaustabh Chakraborty 	     "mout_mif_cmu_mfcmscl_mfc", CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MFC,
6744149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6754149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_MFCMSCL_MSCL, "gout_mif_mux_cmu_mfcmscl_mscl",
6764149066aSKaustabh Chakraborty 	     "mout_mif_cmu_mfcmscl_mscl", CLK_CON_GAT_MIF_MUX_CMU_MFCMSCL_MSCL,
6774149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6784149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_BUS, "gout_mif_mux_cmu_peri_bus",
6794149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_bus", CLK_CON_GAT_MIF_MUX_CMU_PERI_BUS, 21,
6804149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6814149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_SPI0, "gout_mif_mux_cmu_peri_spi0",
6824149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_spi0", CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI0, 21,
6834149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6844149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_SPI2, "gout_mif_mux_cmu_peri_spi2",
6854149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_spi2", CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI2, 21,
6864149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6874149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_SPI1, "gout_mif_mux_cmu_peri_spi1",
6884149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_spi1", CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI1, 21,
6894149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6904149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_SPI4, "gout_mif_mux_cmu_peri_spi4",
6914149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_spi4", CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI4, 21,
6924149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6934149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_SPI3, "gout_mif_mux_cmu_peri_spi3",
6944149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_spi3", CLK_CON_GAT_MIF_MUX_CMU_PERI_SPI3, 21,
6954149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6964149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_UART1, "gout_mif_mux_cmu_peri_uart1",
6974149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_uart1", CLK_CON_GAT_MIF_MUX_CMU_PERI_UART1, 21,
6984149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
6994149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_UART2, "gout_mif_mux_cmu_peri_uart2",
7004149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_uart2", CLK_CON_GAT_MIF_MUX_CMU_PERI_UART2, 21,
7014149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7024149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_CMU_PERI_UART0, "gout_mif_mux_cmu_peri_uart0",
7034149066aSKaustabh Chakraborty 	     "mout_mif_cmu_peri_uart0", CLK_CON_GAT_MIF_MUX_CMU_PERI_UART0, 21,
7044149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7054149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_BUSD, "gout_mif_mux_busd", "mout_mif_busd",
7064149066aSKaustabh Chakraborty 	     CLK_CON_GAT_MIF_MUX_BUSD, 21, CLK_IS_CRITICAL |
7074149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
7084149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_MEDIA_PLL, "gout_mif_mux_media_pll",
7094149066aSKaustabh Chakraborty 	     "gout_mif_mux_media_pll_con", CLK_CON_GAT_MIF_MUX_MEDIA_PLL, 21,
7104149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7114149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_MEDIA_PLL_CON, "gout_mif_mux_media_pll_con",
7124149066aSKaustabh Chakraborty 	     "fout_mif_media_pll", CLK_CON_GAT_MIF_MUX_MEDIA_PLL_CON, 12,
7134149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7144149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_MEM_PLL, "gout_mif_mux_mem_pll",
7154149066aSKaustabh Chakraborty 	     "gout_mif_mux_mem_pll_con", CLK_CON_GAT_MIF_MUX_MEM_PLL, 21,
7164149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7174149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MIF_MUX_MEM_PLL_CON, "gout_mif_mux_mem_pll_con",
7184149066aSKaustabh Chakraborty 	     "fout_mif_mem_pll", CLK_CON_GAT_MIF_MUX_MEM_PLL_CON, 12,
7194149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
7204149066aSKaustabh Chakraborty };
7214149066aSKaustabh Chakraborty 
7224149066aSKaustabh Chakraborty static const struct samsung_cmu_info mif_cmu_info __initconst = {
7234149066aSKaustabh Chakraborty 	.fixed_factor_clks	= mif_fixed_factor_clks,
7244149066aSKaustabh Chakraborty 	.nr_fixed_factor_clks	= ARRAY_SIZE(mif_fixed_factor_clks),
7254149066aSKaustabh Chakraborty 	.pll_clks		= mif_pll_clks,
7264149066aSKaustabh Chakraborty 	.nr_pll_clks		= ARRAY_SIZE(mif_pll_clks),
7274149066aSKaustabh Chakraborty 	.mux_clks		= mif_mux_clks,
7284149066aSKaustabh Chakraborty 	.nr_mux_clks		= ARRAY_SIZE(mif_mux_clks),
7294149066aSKaustabh Chakraborty 	.div_clks		= mif_div_clks,
7304149066aSKaustabh Chakraborty 	.nr_div_clks		= ARRAY_SIZE(mif_div_clks),
7314149066aSKaustabh Chakraborty 	.gate_clks		= mif_gate_clks,
7324149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(mif_gate_clks),
7334149066aSKaustabh Chakraborty 	.clk_regs		= mif_clk_regs,
7344149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(mif_clk_regs),
7354149066aSKaustabh Chakraborty 	.nr_clk_ids		= MIF_NR_CLK,
7364149066aSKaustabh Chakraborty };
7374149066aSKaustabh Chakraborty 
7384149066aSKaustabh Chakraborty /*
7394149066aSKaustabh Chakraborty  * Register offsets for CMU_DISPAUD (0x148d0000)
7404149066aSKaustabh Chakraborty  */
7414149066aSKaustabh Chakraborty #define PLL_LOCKTIME_DISPAUD_PLL				0x0000
7424149066aSKaustabh Chakraborty #define PLL_LOCKTIME_DISPAUD_AUD_PLL				0x00c0
7434149066aSKaustabh Chakraborty #define PLL_CON0_DISPAUD_PLL					0x0100
7444149066aSKaustabh Chakraborty #define PLL_CON0_DISPAUD_AUD_PLL				0x01c0
7454149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_PLL				0x0200
7464149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_PLL_CON				0x0200
7474149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_AUD_PLL				0x0204
7484149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_AUD_PLL_CON			0x0204
7494149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_BUS_USER			0x0210
7504149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_BUS_USER				0x0210
7514149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK_USER			0x0214
7524149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_DECON_VCLK_USER			0x0214
7534149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK_USER			0x0218
7544149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_DECON_ECLK_USER			0x0218
7554149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK			0x021c
7564149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_DECON_VCLK				0x021c
7574149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK			0x0220
7584149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_DECON_ECLK				0x0220
7594149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER	0x0224
7604149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER_CON	0x0224
7614149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER		0x0228
7624149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER_CON	0x0228
7634149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MUX_MI2S				0x022c
7644149066aSKaustabh Chakraborty #define CLK_CON_MUX_DISPAUD_MI2S				0x022c
7654149066aSKaustabh Chakraborty #define CLK_CON_DIV_DISPAUD_APB					0x0400
7664149066aSKaustabh Chakraborty #define CLK_CON_DIV_DISPAUD_DECON_VCLK				0x0404
7674149066aSKaustabh Chakraborty #define CLK_CON_DIV_DISPAUD_DECON_ECLK				0x0408
7684149066aSKaustabh Chakraborty #define CLK_CON_DIV_DISPAUD_MI2S				0x040c
7694149066aSKaustabh Chakraborty #define CLK_CON_DIV_DISPAUD_MIXER				0x0410
7704149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_BUS					0x0810
7714149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_BUS_DISP				0x0810
7724149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_BUS_PPMU				0x0810
7734149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_APB_AUD				0x0814
7744149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_APB_AUD_AMP				0x0814
7754149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_APB_DISP				0x0814
7764149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_DECON_VCLK				0x081c
7774149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_DECON_ECLK				0x0820
7784149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MI2S_AMP_I2SCODCLKI			0x082c
7794149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MI2S_AUD_I2SCODCLKI			0x082c
7804149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_MIXER_AUD_SYSCLK			0x0830
7814149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_CON_EXT2AUD_BCK_GPIO_I2S		0x0834
7824149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_BT_IN		0x0838
7834149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_CON_CP2AUD_BCK			0x083c
7844149066aSKaustabh Chakraborty #define CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_FM_IN		0x0840
7854149066aSKaustabh Chakraborty 
7864149066aSKaustabh Chakraborty static const unsigned long dispaud_clk_regs[] __initconst = {
7874149066aSKaustabh Chakraborty 	PLL_LOCKTIME_DISPAUD_PLL,
7884149066aSKaustabh Chakraborty 	PLL_LOCKTIME_DISPAUD_AUD_PLL,
7894149066aSKaustabh Chakraborty 	PLL_CON0_DISPAUD_PLL,
7904149066aSKaustabh Chakraborty 	PLL_CON0_DISPAUD_AUD_PLL,
7914149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_PLL,
7924149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_PLL_CON,
7934149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_AUD_PLL,
7944149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_AUD_PLL_CON,
7954149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_BUS_USER,
7964149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_BUS_USER,
7974149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK_USER,
7984149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_DECON_VCLK_USER,
7994149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK_USER,
8004149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_DECON_ECLK_USER,
8014149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK,
8024149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_DECON_VCLK,
8034149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK,
8044149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_DECON_ECLK,
8054149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER,
8064149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER_CON,
8074149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER,
8084149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER_CON,
8094149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MUX_MI2S,
8104149066aSKaustabh Chakraborty 	CLK_CON_MUX_DISPAUD_MI2S,
8114149066aSKaustabh Chakraborty 	CLK_CON_DIV_DISPAUD_APB,
8124149066aSKaustabh Chakraborty 	CLK_CON_DIV_DISPAUD_DECON_VCLK,
8134149066aSKaustabh Chakraborty 	CLK_CON_DIV_DISPAUD_DECON_ECLK,
8144149066aSKaustabh Chakraborty 	CLK_CON_DIV_DISPAUD_MI2S,
8154149066aSKaustabh Chakraborty 	CLK_CON_DIV_DISPAUD_MIXER,
8164149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_BUS,
8174149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_BUS_DISP,
8184149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_BUS_PPMU,
8194149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_APB_AUD,
8204149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_APB_AUD_AMP,
8214149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_APB_DISP,
8224149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_DECON_VCLK,
8234149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_DECON_ECLK,
8244149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MI2S_AMP_I2SCODCLKI,
8254149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MI2S_AUD_I2SCODCLKI,
8264149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_MIXER_AUD_SYSCLK,
8274149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_CON_EXT2AUD_BCK_GPIO_I2S,
8284149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_BT_IN,
8294149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_CON_CP2AUD_BCK,
8304149066aSKaustabh Chakraborty 	CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_FM_IN,
8314149066aSKaustabh Chakraborty };
8324149066aSKaustabh Chakraborty 
8334149066aSKaustabh Chakraborty static const struct samsung_fixed_rate_clock dispaud_fixed_clks[] __initconst = {
8344149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_audiocdclk0", NULL, 0, 100000000),
8354149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mixer_bclk_bt", NULL, 0, 12500000),
8364149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mixer_bclk_cp", NULL, 0, 12500000),
8374149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mixer_bclk_fm", NULL, 0, 12500000),
8384149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mixer_sclk_ap", NULL, 0, 12500000),
8394149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mipiphy_rxclkesc0", NULL, 0, 188000000),
8404149066aSKaustabh Chakraborty 	FRATE(0, "frat_dispaud_mipiphy_txbyteclkhs", NULL, 0, 188000000),
8414149066aSKaustabh Chakraborty };
8424149066aSKaustabh Chakraborty 
8434149066aSKaustabh Chakraborty static const struct samsung_pll_clock dispaud_pll_clks[] __initconst = {
8444149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_DISPAUD_AUD_PLL, "fout_dispaud_aud_pll",
8454149066aSKaustabh Chakraborty 	    "oscclk", PLL_LOCKTIME_DISPAUD_AUD_PLL, PLL_CON0_DISPAUD_AUD_PLL,
8464149066aSKaustabh Chakraborty 	    NULL),
8474149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_DISPAUD_PLL, "fout_dispaud_pll", "oscclk",
8484149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_DISPAUD_PLL, PLL_CON0_DISPAUD_PLL, NULL),
8494149066aSKaustabh Chakraborty };
8504149066aSKaustabh Chakraborty 
8514149066aSKaustabh Chakraborty /* List of parent clocks for muxes in CMU_DISPAUD */
8524149066aSKaustabh Chakraborty PNAME(mout_dispaud_bus_user_p)		= { "oscclk", "gout_mif_cmu_dispaud_bus" };
8534149066aSKaustabh Chakraborty PNAME(mout_dispaud_decon_eclk_user_p)	= { "oscclk",
8544149066aSKaustabh Chakraborty 					    "gout_mif_cmu_dispaud_decon_eclk" };
8554149066aSKaustabh Chakraborty PNAME(mout_dispaud_decon_vclk_user_p)	= { "oscclk",
8564149066aSKaustabh Chakraborty 					    "gout_mif_cmu_dispaud_decon_vclk" };
8574149066aSKaustabh Chakraborty PNAME(mout_dispaud_decon_eclk_p)	= { "gout_dispaud_mux_decon_eclk_user",
8584149066aSKaustabh Chakraborty 					    "gout_dispaud_mux_pll_con" };
8594149066aSKaustabh Chakraborty PNAME(mout_dispaud_decon_vclk_p)	= { "gout_dispaud_mux_decon_vclk_user",
8604149066aSKaustabh Chakraborty 					    "gout_dispaud_mux_pll_con" };
8614149066aSKaustabh Chakraborty PNAME(mout_dispaud_mi2s_p)		= { "gout_dispaud_mux_aud_pll_con",
8624149066aSKaustabh Chakraborty 					    "frat_dispaud_audiocdclk0" };
8634149066aSKaustabh Chakraborty 
8644149066aSKaustabh Chakraborty static const struct samsung_mux_clock dispaud_mux_clks[] __initconst = {
8654149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_BUS_USER, "mout_dispaud_bus_user",
8664149066aSKaustabh Chakraborty 	    mout_dispaud_bus_user_p, CLK_CON_MUX_DISPAUD_BUS_USER, 12, 1),
8674149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_DECON_ECLK_USER, "mout_dispaud_decon_eclk_user",
8684149066aSKaustabh Chakraborty 	    mout_dispaud_decon_eclk_user_p, CLK_CON_MUX_DISPAUD_DECON_ECLK_USER,
8694149066aSKaustabh Chakraborty 	    12, 1),
8704149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_DECON_VCLK_USER, "mout_dispaud_decon_vclk_user",
8714149066aSKaustabh Chakraborty 	    mout_dispaud_decon_vclk_user_p, CLK_CON_MUX_DISPAUD_DECON_VCLK_USER,
8724149066aSKaustabh Chakraborty 	    12, 1),
8734149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_DECON_ECLK, "mout_dispaud_decon_eclk",
8744149066aSKaustabh Chakraborty 	    mout_dispaud_decon_eclk_p, CLK_CON_MUX_DISPAUD_DECON_ECLK, 12, 1),
8754149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_DECON_VCLK, "mout_dispaud_decon_vclk",
8764149066aSKaustabh Chakraborty 	    mout_dispaud_decon_vclk_p, CLK_CON_MUX_DISPAUD_DECON_VCLK, 12, 1),
8774149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_DISPAUD_MI2S, "mout_dispaud_mi2s", mout_dispaud_mi2s_p,
8784149066aSKaustabh Chakraborty 	    CLK_CON_MUX_DISPAUD_MI2S, 12, 1),
8794149066aSKaustabh Chakraborty };
8804149066aSKaustabh Chakraborty 
8814149066aSKaustabh Chakraborty static const struct samsung_div_clock dispaud_div_clks[] __initconst = {
8824149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_DISPAUD_APB, "dout_dispaud_apb",
8834149066aSKaustabh Chakraborty 	    "gout_dispaud_mux_bus_user", CLK_CON_DIV_DISPAUD_APB, 0, 2),
8844149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_DISPAUD_DECON_ECLK, "dout_dispaud_decon_eclk",
8854149066aSKaustabh Chakraborty 	    "gout_dispaud_mux_decon_eclk", CLK_CON_DIV_DISPAUD_DECON_ECLK, 0, 3),
8864149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_DISPAUD_DECON_VCLK, "dout_dispaud_decon_vclk",
8874149066aSKaustabh Chakraborty 	    "gout_dispaud_mux_decon_vclk", CLK_CON_DIV_DISPAUD_DECON_VCLK, 0, 3),
8884149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_DISPAUD_MI2S, "dout_dispaud_mi2s", "gout_dispaud_mux_mi2s",
8894149066aSKaustabh Chakraborty 	    CLK_CON_DIV_DISPAUD_MI2S, 0, 4),
8904149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_DISPAUD_MIXER, "dout_dispaud_mixer",
8914149066aSKaustabh Chakraborty 	    "gout_dispaud_mux_aud_pll_con", CLK_CON_DIV_DISPAUD_MIXER, 0, 4),
8924149066aSKaustabh Chakraborty };
8934149066aSKaustabh Chakraborty 
8944149066aSKaustabh Chakraborty static const struct samsung_gate_clock dispaud_gate_clks[] __initconst = {
8954149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_BUS, "gout_dispaud_bus",
8964149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_bus_user", CLK_CON_GAT_DISPAUD_BUS, 0,
8974149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
8984149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_BUS_DISP, "gout_dispaud_bus_disp",
8994149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_bus_user", CLK_CON_GAT_DISPAUD_BUS_DISP, 2,
9004149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9014149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_BUS_PPMU, "gout_dispaud_bus_ppmu",
9024149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_bus_user", CLK_CON_GAT_DISPAUD_BUS_PPMU, 3,
9034149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9044149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_APB_AUD, "gout_dispaud_apb_aud",
9054149066aSKaustabh Chakraborty 	     "dout_dispaud_apb", CLK_CON_GAT_DISPAUD_APB_AUD, 2,
9064149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9074149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_APB_AUD_AMP, "gout_dispaud_apb_aud_amp",
9084149066aSKaustabh Chakraborty 	     "dout_dispaud_apb", CLK_CON_GAT_DISPAUD_APB_AUD_AMP, 3,
9094149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9104149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_APB_DISP, "gout_dispaud_apb_disp",
9114149066aSKaustabh Chakraborty 	     "dout_dispaud_apb", CLK_CON_GAT_DISPAUD_APB_DISP, 1,
9124149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9134149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_CON_AUD_I2S_BCLK_BT_IN,
9144149066aSKaustabh Chakraborty 	     "gout_dispaud_con_aud_i2s_bclk_bt_in",
9154149066aSKaustabh Chakraborty 	     "frat_dispaud_mixer_bclk_bt",
9164149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_BT_IN, 0, CLK_SET_RATE_PARENT,
9174149066aSKaustabh Chakraborty 	     0),
9184149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_CON_AUD_I2S_BCLK_FM_IN,
9194149066aSKaustabh Chakraborty 	     "gout_dispaud_con_aud_i2s_bclk_fm_in",
9204149066aSKaustabh Chakraborty 	     "frat_dispaud_mixer_bclk_fm",
9214149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_CON_AUD_I2S_BCLK_FM_IN, 0, CLK_SET_RATE_PARENT,
9224149066aSKaustabh Chakraborty 	     0),
9234149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_CON_CP2AUD_BCK, "gout_dispaud_con_cp2aud_bck",
9244149066aSKaustabh Chakraborty 	     "frat_dispaud_mixer_bclk_cp", CLK_CON_GAT_DISPAUD_CON_CP2AUD_BCK,
9254149066aSKaustabh Chakraborty 	     0, CLK_SET_RATE_PARENT, 0),
9264149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_CON_EXT2AUD_BCK_GPIO_I2S,
9274149066aSKaustabh Chakraborty 	     "gout_dispaud_con_ext2aud_bck_gpio_i2s",
9284149066aSKaustabh Chakraborty 	     "frat_dispaud_mixer_sclk_ap",
9294149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_CON_EXT2AUD_BCK_GPIO_I2S, 0,
9304149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9314149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_DECON_ECLK, "gout_dispaud_decon_eclk",
9324149066aSKaustabh Chakraborty 	     "dout_dispaud_decon_eclk", CLK_CON_GAT_DISPAUD_DECON_ECLK, 0,
9334149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9344149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_DECON_VCLK, "gout_dispaud_decon_vclk",
9354149066aSKaustabh Chakraborty 	     "dout_dispaud_decon_vclk", CLK_CON_GAT_DISPAUD_DECON_VCLK, 0,
9364149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9374149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MI2S_AMP_I2SCODCLKI,
9384149066aSKaustabh Chakraborty 	     "gout_dispaud_mi2s_amp_i2scodclki", "dout_dispaud_mi2s",
9394149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MI2S_AMP_I2SCODCLKI, 1, CLK_SET_RATE_PARENT, 0),
9404149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MI2S_AUD_I2SCODCLKI,
9414149066aSKaustabh Chakraborty 	     "gout_dispaud_mi2s_aud_i2scodclki", "dout_dispaud_mi2s",
9424149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MI2S_AUD_I2SCODCLKI, 0, CLK_SET_RATE_PARENT, 0),
9434149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MIXER_AUD_SYSCLK, "gout_dispaud_mixer_aud_sysclk",
9444149066aSKaustabh Chakraborty 	     "dout_dispaud_mixer", CLK_CON_GAT_DISPAUD_MIXER_AUD_SYSCLK, 0,
9454149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9464149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_AUD_PLL, "gout_dispaud_mux_aud_pll",
9474149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_aud_pll_con", CLK_CON_GAT_DISPAUD_MUX_AUD_PLL,
9484149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9494149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_AUD_PLL_CON, "gout_dispaud_mux_aud_pll_con",
9504149066aSKaustabh Chakraborty 	     "fout_dispaud_aud_pll", CLK_CON_GAT_DISPAUD_MUX_AUD_PLL_CON, 12,
9514149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9524149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_BUS_USER, "gout_dispaud_mux_bus_user",
9534149066aSKaustabh Chakraborty 	     "mout_dispaud_bus_user", CLK_CON_GAT_DISPAUD_MUX_BUS_USER, 21,
9544149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9554149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_DECON_ECLK_USER,
9564149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_decon_eclk_user", "mout_dispaud_decon_eclk_user",
9574149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK_USER, 21, CLK_IS_CRITICAL |
9584149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9594149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_DECON_VCLK_USER,
9604149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_decon_vclk_user", "mout_dispaud_decon_vclk_user",
9614149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK_USER, 21, CLK_IS_CRITICAL |
9624149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
9634149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER,
9644149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_rxclkesc0_user",
9654149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_rxclkesc0_user_con",
9664149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER, 21, CLK_IS_CRITICAL
9674149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
9684149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER_CON,
9694149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_rxclkesc0_user_con",
9704149066aSKaustabh Chakraborty 	     "frat_dispaud_mipiphy_rxclkesc0",
9714149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER_CON, 12,
9724149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9734149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER,
9744149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_txbyteclkhs_user",
9754149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_txbyteclkhs_user_con",
9764149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER, 21,
9774149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9784149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER_CON,
9794149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_mipiphy_txbyteclkhs_user_con",
9804149066aSKaustabh Chakraborty 	     "frat_dispaud_mipiphy_txbyteclkhs",
9814149066aSKaustabh Chakraborty 	     CLK_CON_GAT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER_CON, 12,
9824149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9834149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_DECON_ECLK, "gout_dispaud_mux_decon_eclk",
9844149066aSKaustabh Chakraborty 	     "mout_dispaud_decon_eclk", CLK_CON_GAT_DISPAUD_MUX_DECON_ECLK, 21,
9854149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9864149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_DECON_VCLK, "gout_dispaud_mux_decon_vclk",
9874149066aSKaustabh Chakraborty 	     "mout_dispaud_decon_vclk", CLK_CON_GAT_DISPAUD_MUX_DECON_VCLK, 21,
9884149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9894149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_MI2S, "gout_dispaud_mux_mi2s",
9904149066aSKaustabh Chakraborty 	     "mout_dispaud_mi2s", CLK_CON_GAT_DISPAUD_MUX_MI2S, 21,
9914149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9924149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_PLL, "gout_dispaud_mux_pll",
9934149066aSKaustabh Chakraborty 	     "gout_dispaud_mux_pll_con", CLK_CON_GAT_DISPAUD_MUX_PLL, 21,
9944149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9954149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_DISPAUD_MUX_PLL_CON, "gout_dispaud_mux_pll_con",
9964149066aSKaustabh Chakraborty 	     "fout_dispaud_pll", CLK_CON_GAT_DISPAUD_MUX_PLL_CON, 12,
9974149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
9984149066aSKaustabh Chakraborty };
9994149066aSKaustabh Chakraborty 
10004149066aSKaustabh Chakraborty static const struct samsung_cmu_info dispaud_cmu_info __initconst = {
10014149066aSKaustabh Chakraborty 	.fixed_clks	= dispaud_fixed_clks,
10024149066aSKaustabh Chakraborty 	.nr_fixed_clks	= ARRAY_SIZE(dispaud_fixed_clks),
10034149066aSKaustabh Chakraborty 	.pll_clks		= dispaud_pll_clks,
10044149066aSKaustabh Chakraborty 	.nr_pll_clks		= ARRAY_SIZE(dispaud_pll_clks),
10054149066aSKaustabh Chakraborty 	.mux_clks		= dispaud_mux_clks,
10064149066aSKaustabh Chakraborty 	.nr_mux_clks		= ARRAY_SIZE(dispaud_mux_clks),
10074149066aSKaustabh Chakraborty 	.div_clks		= dispaud_div_clks,
10084149066aSKaustabh Chakraborty 	.nr_div_clks		= ARRAY_SIZE(dispaud_div_clks),
10094149066aSKaustabh Chakraborty 	.gate_clks		= dispaud_gate_clks,
10104149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(dispaud_gate_clks),
10114149066aSKaustabh Chakraborty 	.clk_regs		= dispaud_clk_regs,
10124149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(dispaud_clk_regs),
10134149066aSKaustabh Chakraborty 	.nr_clk_ids		= DISPAUD_NR_CLK,
10144149066aSKaustabh Chakraborty };
10154149066aSKaustabh Chakraborty 
10164149066aSKaustabh Chakraborty /*
10174149066aSKaustabh Chakraborty  * Register offsets for CMU_FSYS (0x13730000)
10184149066aSKaustabh Chakraborty  */
10194149066aSKaustabh Chakraborty #define PLL_LOCKTIME_FSYS_USB_PLL			0x0000
10204149066aSKaustabh Chakraborty #define PLL_CON0_FSYS_USB_PLL				0x0100
10214149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MUX_USB_PLL			0x0200
10224149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MUX_USB_PLL_CON		0x0200
10234149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER	0x0230
10244149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER_CON	0x0230
10254149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_BUSP3_HCLK			0x0804
10264149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MMC0_ACLK			0x0804
10274149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MMC1_ACLK			0x0804
10284149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_MMC2_ACLK			0x0804
10294149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_PDMA0_ACLK_PDMA0		0x0804
10304149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_PPMU_ACLK			0x0804
10314149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_PPMU_PCLK			0x0804
10324149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_SROMC_HCLK			0x0804
10334149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_UPSIZER_BUS1_ACLK		0x0804
10344149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_USB20DRD_ACLK_HSDRD		0x0804
10354149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_USB20DRD_HCLK_USB20_CTRL	0x0804
10364149066aSKaustabh Chakraborty #define CLK_CON_GAT_FSYS_USB20DRD_HSDRD_REF_CLK		0x0828
10374149066aSKaustabh Chakraborty 
10384149066aSKaustabh Chakraborty static const unsigned long fsys_clk_regs[] __initconst = {
10394149066aSKaustabh Chakraborty 	PLL_LOCKTIME_FSYS_USB_PLL,
10404149066aSKaustabh Chakraborty 	PLL_CON0_FSYS_USB_PLL,
10414149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MUX_USB_PLL,
10424149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MUX_USB_PLL_CON,
10434149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER,
10444149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER_CON,
10454149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_BUSP3_HCLK,
10464149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MMC0_ACLK,
10474149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MMC1_ACLK,
10484149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_MMC2_ACLK,
10494149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_PDMA0_ACLK_PDMA0,
10504149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_PPMU_ACLK,
10514149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_PPMU_PCLK,
10524149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_SROMC_HCLK,
10534149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_UPSIZER_BUS1_ACLK,
10544149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_USB20DRD_ACLK_HSDRD,
10554149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_USB20DRD_HCLK_USB20_CTRL,
10564149066aSKaustabh Chakraborty 	CLK_CON_GAT_FSYS_USB20DRD_HSDRD_REF_CLK,
10574149066aSKaustabh Chakraborty };
10584149066aSKaustabh Chakraborty 
10594149066aSKaustabh Chakraborty static const struct samsung_fixed_rate_clock fsys_fixed_clks[] __initconst = {
10604149066aSKaustabh Chakraborty 	FRATE(0, "frat_fsys_usb20drd_phyclock", NULL, 0, 60000000),
10614149066aSKaustabh Chakraborty };
10624149066aSKaustabh Chakraborty 
10634149066aSKaustabh Chakraborty static const struct samsung_pll_clock fsys_pll_clks[] __initconst = {
10644149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_FSYS_USB_PLL, "fout_fsys_usb_pll", "oscclk",
10654149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_FSYS_USB_PLL, PLL_CON0_FSYS_USB_PLL, NULL),
10664149066aSKaustabh Chakraborty };
10674149066aSKaustabh Chakraborty 
10684149066aSKaustabh Chakraborty static const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
10694149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_BUSP3_HCLK, "gout_fsys_busp3_hclk",
10704149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_bus", CLK_CON_GAT_FSYS_BUSP3_HCLK, 2,
10714149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10724149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MMC0_ACLK, "gout_fsys_mmc0_aclk",
10734149066aSKaustabh Chakraborty 	     "gout_fsys_busp3_hclk", CLK_CON_GAT_FSYS_MMC0_ACLK, 8,
10744149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10754149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MMC1_ACLK, "gout_fsys_mmc1_aclk",
10764149066aSKaustabh Chakraborty 	     "gout_fsys_busp3_hclk", CLK_CON_GAT_FSYS_MMC1_ACLK, 9,
10774149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10784149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MMC2_ACLK, "gout_fsys_mmc2_aclk",
10794149066aSKaustabh Chakraborty 	     "gout_fsys_busp3_hclk", CLK_CON_GAT_FSYS_MMC2_ACLK, 10,
10804149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10814149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_PDMA0_ACLK_PDMA0, "gout_fsys_pdma0_aclk_pdma0",
10824149066aSKaustabh Chakraborty 	     "gout_fsys_upsizer_bus1_aclk", CLK_CON_GAT_FSYS_PDMA0_ACLK_PDMA0,
10834149066aSKaustabh Chakraborty 	     7, CLK_SET_RATE_PARENT, 0),
10844149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_PPMU_ACLK, "gout_fsys_ppmu_aclk",
10854149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_bus", CLK_CON_GAT_FSYS_PPMU_ACLK, 17,
10864149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
10874149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_PPMU_PCLK, "gout_fsys_ppmu_pclk",
10884149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_bus", CLK_CON_GAT_FSYS_PPMU_PCLK, 18,
10894149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
10904149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_SROMC_HCLK, "gout_fsys_sromc_hclk",
10914149066aSKaustabh Chakraborty 	     "gout_fsys_busp3_hclk", CLK_CON_GAT_FSYS_SROMC_HCLK, 6,
10924149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10934149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_UPSIZER_BUS1_ACLK, "gout_fsys_upsizer_bus1_aclk",
10944149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_bus", CLK_CON_GAT_FSYS_UPSIZER_BUS1_ACLK, 12,
10954149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
10964149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_USB20DRD_ACLK_HSDRD, "gout_fsys_usb20drd_aclk_hsdrd",
10974149066aSKaustabh Chakraborty 	     "gout_fsys_busp3_hclk", CLK_CON_GAT_FSYS_USB20DRD_ACLK_HSDRD, 20,
10984149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
10994149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_USB20DRD_HCLK_USB20_CTRL,
11004149066aSKaustabh Chakraborty 	     "gout_fsys_usb20drd_hclk_usb20_ctrl", "gout_fsys_busp3_hclk",
11014149066aSKaustabh Chakraborty 	     CLK_CON_GAT_FSYS_USB20DRD_HCLK_USB20_CTRL, 21, CLK_IS_CRITICAL |
11024149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
11034149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_USB20DRD_HSDRD_REF_CLK,
11044149066aSKaustabh Chakraborty 	     "gout_fsys_usb20drd_hsdrd_ref_clk",
11054149066aSKaustabh Chakraborty 	     "gout_mif_cmu_fsys_usb20drd_refclk",
11064149066aSKaustabh Chakraborty 	     CLK_CON_GAT_FSYS_USB20DRD_HSDRD_REF_CLK, 0, CLK_SET_RATE_PARENT, 0),
11074149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MUX_USB20DRD_PHYCLOCK_USER,
11084149066aSKaustabh Chakraborty 	     "gout_fsys_mux_usb20drd_phyclock_user",
11094149066aSKaustabh Chakraborty 	     "gout_fsys_mux_usb20drd_phyclock_user_con",
11104149066aSKaustabh Chakraborty 	     CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER, 21, CLK_IS_CRITICAL |
11114149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
11124149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MUX_USB20DRD_PHYCLOCK_USER_CON,
11134149066aSKaustabh Chakraborty 	     "gout_fsys_mux_usb20drd_phyclock_user_con",
11144149066aSKaustabh Chakraborty 	     "frat_fsys_usb20drd_phyclock",
11154149066aSKaustabh Chakraborty 	     CLK_CON_GAT_FSYS_MUX_USB20DRD_PHYCLOCK_USER_CON, 12,
11164149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
11174149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MUX_USB_PLL, "gout_fsys_mux_usb_pll",
11184149066aSKaustabh Chakraborty 	     "gout_fsys_mux_usb_pll_con", CLK_CON_GAT_FSYS_MUX_USB_PLL, 21,
11194149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
11204149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_FSYS_MUX_USB_PLL_CON, "gout_fsys_mux_usb_pll_con",
11214149066aSKaustabh Chakraborty 	     "fout_fsys_usb_pll", CLK_CON_GAT_FSYS_MUX_USB_PLL_CON, 12,
11224149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
11234149066aSKaustabh Chakraborty };
11244149066aSKaustabh Chakraborty 
11254149066aSKaustabh Chakraborty static const struct samsung_cmu_info fsys_cmu_info __initconst = {
11264149066aSKaustabh Chakraborty 	.fixed_clks	= fsys_fixed_clks,
11274149066aSKaustabh Chakraborty 	.nr_fixed_clks	= ARRAY_SIZE(fsys_fixed_clks),
11284149066aSKaustabh Chakraborty 	.pll_clks		= fsys_pll_clks,
11294149066aSKaustabh Chakraborty 	.nr_pll_clks		= ARRAY_SIZE(fsys_pll_clks),
11304149066aSKaustabh Chakraborty 	.gate_clks		= fsys_gate_clks,
11314149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(fsys_gate_clks),
11324149066aSKaustabh Chakraborty 	.clk_regs		= fsys_clk_regs,
11334149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(fsys_clk_regs),
11344149066aSKaustabh Chakraborty 	.nr_clk_ids		= FSYS_NR_CLK,
11354149066aSKaustabh Chakraborty };
11364149066aSKaustabh Chakraborty 
11374149066aSKaustabh Chakraborty /*
11384149066aSKaustabh Chakraborty  * Register offsets for CMU_G3D (0x11460000)
11394149066aSKaustabh Chakraborty  */
11404149066aSKaustabh Chakraborty #define PLL_LOCKTIME_G3D_PLL		0x0000
11414149066aSKaustabh Chakraborty #define PLL_CON0_G3D_PLL		0x0100
11424149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_MUX_PLL		0x0200
11434149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_MUX_PLL_CON	0x0200
11444149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_MUX_SWITCH_USER	0x0204
11454149066aSKaustabh Chakraborty #define CLK_CON_MUX_G3D_SWITCH_USER	0x0204
11464149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_MUX		0x0208
11474149066aSKaustabh Chakraborty #define CLK_CON_MUX_G3D			0x0208
11484149066aSKaustabh Chakraborty #define CLK_CON_DIV_G3D_BUS		0x0400
11494149066aSKaustabh Chakraborty #define CLK_CON_DIV_G3D_APB		0x0404
11504149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_ASYNCS_D0_CLK	0x0804
11514149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_ASYNC_PCLKM	0x0804
11524149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_CLK		0x0804
11534149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_PPMU_ACLK	0x0804
11544149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_QE_ACLK		0x0804
11554149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_PPMU_PCLK	0x0808
11564149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_QE_PCLK		0x0808
11574149066aSKaustabh Chakraborty #define CLK_CON_GAT_G3D_SYSREG_PCLK	0x0808
11584149066aSKaustabh Chakraborty 
11594149066aSKaustabh Chakraborty static const unsigned long g3d_clk_regs[] __initconst = {
11604149066aSKaustabh Chakraborty 	PLL_LOCKTIME_G3D_PLL,
11614149066aSKaustabh Chakraborty 	PLL_CON0_G3D_PLL,
11624149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_MUX_PLL,
11634149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_MUX_PLL_CON,
11644149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_MUX_SWITCH_USER,
11654149066aSKaustabh Chakraborty 	CLK_CON_MUX_G3D_SWITCH_USER,
11664149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_MUX,
11674149066aSKaustabh Chakraborty 	CLK_CON_MUX_G3D,
11684149066aSKaustabh Chakraborty 	CLK_CON_DIV_G3D_BUS,
11694149066aSKaustabh Chakraborty 	CLK_CON_DIV_G3D_APB,
11704149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_ASYNCS_D0_CLK,
11714149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_ASYNC_PCLKM,
11724149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_CLK,
11734149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_PPMU_ACLK,
11744149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_QE_ACLK,
11754149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_PPMU_PCLK,
11764149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_QE_PCLK,
11774149066aSKaustabh Chakraborty 	CLK_CON_GAT_G3D_SYSREG_PCLK,
11784149066aSKaustabh Chakraborty };
11794149066aSKaustabh Chakraborty 
11804149066aSKaustabh Chakraborty static const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
11814149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_G3D_PLL, "fout_g3d_pll", "oscclk",
11824149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_G3D_PLL, PLL_CON0_G3D_PLL, NULL),
11834149066aSKaustabh Chakraborty };
11844149066aSKaustabh Chakraborty 
11854149066aSKaustabh Chakraborty /* List of parent clocks for muxes in CMU_G3D */
11864149066aSKaustabh Chakraborty PNAME(mout_g3d_switch_user_p)	= { "oscclk", "gout_mif_cmu_g3d_switch" };
11874149066aSKaustabh Chakraborty PNAME(mout_g3d_p)		= { "gout_g3d_mux_pll_con",
11884149066aSKaustabh Chakraborty 				    "gout_g3d_mux_switch_user" };
11894149066aSKaustabh Chakraborty 
11904149066aSKaustabh Chakraborty static const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
11914149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_G3D_SWITCH_USER, "mout_g3d_switch_user",
11924149066aSKaustabh Chakraborty 	    mout_g3d_switch_user_p, CLK_CON_MUX_G3D_SWITCH_USER, 12, 1),
11934149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_G3D, "mout_g3d", mout_g3d_p, CLK_CON_MUX_G3D, 12, 1),
11944149066aSKaustabh Chakraborty };
11954149066aSKaustabh Chakraborty 
11964149066aSKaustabh Chakraborty static const struct samsung_div_clock g3d_div_clks[] __initconst = {
11974149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_G3D_APB, "dout_g3d_apb", "dout_g3d_bus",
11984149066aSKaustabh Chakraborty 	    CLK_CON_DIV_G3D_APB, 0, 3),
11994149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_G3D_BUS, "dout_g3d_bus", "gout_g3d_mux",
12004149066aSKaustabh Chakraborty 	    CLK_CON_DIV_G3D_BUS, 0, 3),
12014149066aSKaustabh Chakraborty };
12024149066aSKaustabh Chakraborty 
12034149066aSKaustabh Chakraborty static const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
12044149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_ASYNCS_D0_CLK, "gout_g3d_asyncs_d0_clk",
12054149066aSKaustabh Chakraborty 	     "dout_g3d_bus", CLK_CON_GAT_G3D_ASYNCS_D0_CLK, 1, CLK_IS_CRITICAL |
12064149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
12074149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_ASYNC_PCLKM, "gout_g3d_async_pclkm", "dout_g3d_bus",
12084149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_ASYNC_PCLKM, 0, CLK_IS_CRITICAL |
12094149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
12104149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_CLK, "gout_g3d_clk", "dout_g3d_bus",
12114149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_CLK, 6, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
12124149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_PPMU_ACLK, "gout_g3d_ppmu_aclk", "dout_g3d_bus",
12134149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_PPMU_ACLK, 7, CLK_IS_CRITICAL |
12144149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
12154149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_PPMU_PCLK, "gout_g3d_ppmu_pclk", "dout_g3d_apb",
12164149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_PPMU_PCLK, 4, CLK_IS_CRITICAL |
12174149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
12184149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_QE_ACLK, "gout_g3d_qe_aclk", "dout_g3d_bus",
12194149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_QE_ACLK, 8, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
12204149066aSKaustabh Chakraborty 	     0),
12214149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_QE_PCLK, "gout_g3d_qe_pclk", "dout_g3d_apb",
12224149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_QE_PCLK, 5, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
12234149066aSKaustabh Chakraborty 	     0),
12244149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_SYSREG_PCLK, "gout_g3d_sysreg_pclk", "dout_g3d_apb",
12254149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_SYSREG_PCLK, 6, CLK_SET_RATE_PARENT, 0),
12264149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_MUX_SWITCH_USER, "gout_g3d_mux_switch_user",
12274149066aSKaustabh Chakraborty 	     "mout_g3d_switch_user", CLK_CON_GAT_G3D_MUX_SWITCH_USER, 21,
12284149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
12294149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_MUX, "gout_g3d_mux", "mout_g3d", CLK_CON_GAT_G3D_MUX,
12304149066aSKaustabh Chakraborty 	     21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
12314149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_MUX_PLL, "gout_g3d_mux_pll", "gout_g3d_mux_pll_con",
12324149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_MUX_PLL, 21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
12334149066aSKaustabh Chakraborty 	     0),
12344149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_G3D_MUX_PLL_CON, "gout_g3d_mux_pll_con", "fout_g3d_pll",
12354149066aSKaustabh Chakraborty 	     CLK_CON_GAT_G3D_MUX_PLL_CON, 12, CLK_IS_CRITICAL |
12364149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
12374149066aSKaustabh Chakraborty };
12384149066aSKaustabh Chakraborty 
12394149066aSKaustabh Chakraborty static const struct samsung_cmu_info g3d_cmu_info __initconst = {
12404149066aSKaustabh Chakraborty 	.pll_clks		= g3d_pll_clks,
12414149066aSKaustabh Chakraborty 	.nr_pll_clks		= ARRAY_SIZE(g3d_pll_clks),
12424149066aSKaustabh Chakraborty 	.mux_clks		= g3d_mux_clks,
12434149066aSKaustabh Chakraborty 	.nr_mux_clks		= ARRAY_SIZE(g3d_mux_clks),
12444149066aSKaustabh Chakraborty 	.div_clks		= g3d_div_clks,
12454149066aSKaustabh Chakraborty 	.nr_div_clks		= ARRAY_SIZE(g3d_div_clks),
12464149066aSKaustabh Chakraborty 	.gate_clks		= g3d_gate_clks,
12474149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(g3d_gate_clks),
12484149066aSKaustabh Chakraborty 	.clk_regs		= g3d_clk_regs,
12494149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(g3d_clk_regs),
12504149066aSKaustabh Chakraborty 	.nr_clk_ids		= G3D_NR_CLK,
12514149066aSKaustabh Chakraborty };
12524149066aSKaustabh Chakraborty 
12534149066aSKaustabh Chakraborty /*
12544149066aSKaustabh Chakraborty  * Register offsets for CMU_ISP (0x144d0000)
12554149066aSKaustabh Chakraborty  */
12564149066aSKaustabh Chakraborty #define PLL_LOCKTIME_ISP_PLL					0x0000
12574149066aSKaustabh Chakraborty #define PLL_CON0_ISP_PLL					0x0100
12584149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_PLL					0x0200
12594149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_PLL_CON				0x0200
12604149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_VRA_USER				0x0210
12614149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_VRA_USER				0x0210
12624149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_CAM_USER				0x0214
12634149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_CAM_USER				0x0214
12644149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_USER				0x0218
12654149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_USER					0x0218
12664149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_VRA					0x0220
12674149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_VRA					0x0220
12684149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_CAM					0x0224
12694149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_CAM					0x0224
12704149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_ISP					0x0228
12714149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_ISP					0x0228
12724149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_ISPD				0x022c
12734149066aSKaustabh Chakraborty #define CLK_CON_MUX_ISP_ISPD					0x022c
12744149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER		0x0230
12754149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER_CON	0x0230
12764149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER		0x0234
12774149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER_CON	0x0234
12784149066aSKaustabh Chakraborty #define CLK_CON_DIV_ISP_APB					0x0400
12794149066aSKaustabh Chakraborty #define CLK_CON_DIV_ISP_CAM_HALF				0x0404
12804149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_VRA					0x0810
12814149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_ISPD					0x0818
12824149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_ISPD_PPMU				0x0818
12834149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_CAM					0x081c
12844149066aSKaustabh Chakraborty #define CLK_CON_GAT_ISP_CAM_HALF				0x0820
12854149066aSKaustabh Chakraborty 
12864149066aSKaustabh Chakraborty static const unsigned long isp_clk_regs[] __initconst = {
12874149066aSKaustabh Chakraborty 	PLL_LOCKTIME_ISP_PLL,
12884149066aSKaustabh Chakraborty 	PLL_CON0_ISP_PLL,
12894149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_PLL,
12904149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_PLL_CON,
12914149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_VRA_USER,
12924149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_VRA_USER,
12934149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_CAM_USER,
12944149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_CAM_USER,
12954149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_USER,
12964149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_USER,
12974149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_VRA,
12984149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_VRA,
12994149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_CAM,
13004149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_CAM,
13014149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_ISP,
13024149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_ISP,
13034149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_ISPD,
13044149066aSKaustabh Chakraborty 	CLK_CON_MUX_ISP_ISPD,
13054149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER,
13064149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER_CON,
13074149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER,
13084149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER_CON,
13094149066aSKaustabh Chakraborty 	CLK_CON_DIV_ISP_APB,
13104149066aSKaustabh Chakraborty 	CLK_CON_DIV_ISP_CAM_HALF,
13114149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_VRA,
13124149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_ISPD,
13134149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_ISPD_PPMU,
13144149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_CAM,
13154149066aSKaustabh Chakraborty 	CLK_CON_GAT_ISP_CAM_HALF,
13164149066aSKaustabh Chakraborty };
13174149066aSKaustabh Chakraborty 
13184149066aSKaustabh Chakraborty static const struct samsung_fixed_rate_clock isp_fixed_clks[] __initconst = {
13194149066aSKaustabh Chakraborty 	FRATE(0, "frat_isp_rxbyteclkhs0_sensor0", NULL, 0, 188000000),
13204149066aSKaustabh Chakraborty 	FRATE(0, "frat_isp_rxbyteclkhs0_sensor1", NULL, 0, 188000000),
13214149066aSKaustabh Chakraborty };
13224149066aSKaustabh Chakraborty 
13234149066aSKaustabh Chakraborty static const struct samsung_pll_clock isp_pll_clks[] __initconst = {
13244149066aSKaustabh Chakraborty 	PLL(pll_1417x, CLK_FOUT_ISP_PLL, "fout_isp_pll", "oscclk",
13254149066aSKaustabh Chakraborty 	    PLL_LOCKTIME_ISP_PLL, PLL_CON0_ISP_PLL, NULL),
13264149066aSKaustabh Chakraborty };
13274149066aSKaustabh Chakraborty 
13284149066aSKaustabh Chakraborty /* List of parent clocks for muxes in CMU_ISP */
13294149066aSKaustabh Chakraborty PNAME(mout_isp_cam_user_p)	= { "oscclk", "gout_mif_cmu_isp_cam" };
13304149066aSKaustabh Chakraborty PNAME(mout_isp_user_p)		= { "oscclk", "gout_mif_cmu_isp_isp" };
13314149066aSKaustabh Chakraborty PNAME(mout_isp_vra_user_p)	= { "oscclk", "gout_mif_cmu_isp_vra" };
13324149066aSKaustabh Chakraborty PNAME(mout_isp_cam_p)		= { "gout_isp_mux_cam_user",
13334149066aSKaustabh Chakraborty 				    "gout_isp_mux_pll_con" };
13344149066aSKaustabh Chakraborty PNAME(mout_isp_isp_p)		= { "gout_isp_mux_user", "gout_isp_mux_pll_con" };
13354149066aSKaustabh Chakraborty PNAME(mout_isp_ispd_p)		= { "gout_isp_mux_vra", "gout_isp_mux_cam" };
13364149066aSKaustabh Chakraborty PNAME(mout_isp_vra_p)		= { "gout_isp_mux_vra_user",
13374149066aSKaustabh Chakraborty 				    "gout_isp_mux_pll_con" };
13384149066aSKaustabh Chakraborty 
13394149066aSKaustabh Chakraborty static const struct samsung_mux_clock isp_mux_clks[] __initconst = {
13404149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_CAM_USER, "mout_isp_cam_user", mout_isp_cam_user_p,
13414149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_CAM_USER, 12, 1),
13424149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_USER, "mout_isp_user", mout_isp_user_p,
13434149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_USER, 12, 1),
13444149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_VRA_USER, "mout_isp_vra_user", mout_isp_vra_user_p,
13454149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_VRA_USER, 12, 1),
13464149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_CAM, "mout_isp_cam", mout_isp_cam_p,
13474149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_CAM, 12, 1),
13484149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_ISP, "mout_isp_isp", mout_isp_isp_p,
13494149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_ISP, 12, 1),
13504149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_ISPD, "mout_isp_ispd", mout_isp_ispd_p,
13514149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_ISPD, 12, 1),
13524149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_ISP_VRA, "mout_isp_vra", mout_isp_vra_p,
13534149066aSKaustabh Chakraborty 	    CLK_CON_MUX_ISP_VRA, 12, 1),
13544149066aSKaustabh Chakraborty };
13554149066aSKaustabh Chakraborty 
13564149066aSKaustabh Chakraborty static const struct samsung_div_clock isp_div_clks[] __initconst = {
13574149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_ISP_APB, "dout_isp_apb", "gout_isp_mux_vra",
13584149066aSKaustabh Chakraborty 	    CLK_CON_DIV_ISP_APB, 0, 2),
13594149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_ISP_CAM_HALF, "dout_isp_cam_half", "gout_isp_mux_cam",
13604149066aSKaustabh Chakraborty 	    CLK_CON_DIV_ISP_CAM_HALF, 0, 2),
13614149066aSKaustabh Chakraborty };
13624149066aSKaustabh Chakraborty 
13634149066aSKaustabh Chakraborty static const struct samsung_gate_clock isp_gate_clks[] __initconst = {
13644149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_CAM, "gout_isp_cam", "gout_isp_mux_cam",
13654149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_CAM, 0, CLK_SET_RATE_PARENT, 0),
13664149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_CAM_HALF, "gout_isp_cam_half", "dout_isp_cam_half",
13674149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_CAM_HALF, 0, CLK_SET_RATE_PARENT, 0),
13684149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_ISPD, "gout_isp_ispd", "gout_isp_mux_ispd",
13694149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_ISPD, 0, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
13704149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_ISPD_PPMU, "gout_isp_ispd_ppmu", "gout_isp_mux_ispd",
13714149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_ISPD_PPMU, 1, CLK_IS_CRITICAL |
13724149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
13734149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_VRA, "gout_isp_vra", "gout_isp_mux_vra",
13744149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_VRA, 0, CLK_SET_RATE_PARENT, 0),
13754149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_CAM_USER, "gout_isp_mux_cam_user",
13764149066aSKaustabh Chakraborty 	     "mout_isp_cam_user", CLK_CON_GAT_ISP_MUX_CAM_USER, 21,
13774149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
13784149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_USER, "gout_isp_mux_user", "mout_isp_user",
13794149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_USER, 21, CLK_IS_CRITICAL |
13804149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
13814149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_VRA_USER, "gout_isp_mux_vra_user",
13824149066aSKaustabh Chakraborty 	     "mout_isp_vra_user", CLK_CON_GAT_ISP_MUX_VRA_USER, 21,
13834149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
13844149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER,
13854149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor1_user",
13864149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor1_user_con",
13874149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER, 21, CLK_IS_CRITICAL
13884149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
13894149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER_CON,
13904149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor1_user_con",
13914149066aSKaustabh Chakraborty 	     "frat_isp_rxbyteclkhs0_sensor1",
13924149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER_CON, 12,
13934149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
13944149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER,
13954149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor0_user",
13964149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor0_user_con",
13974149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER, 21, CLK_IS_CRITICAL
13984149066aSKaustabh Chakraborty 	     | CLK_SET_RATE_PARENT, 0),
13994149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER_CON,
14004149066aSKaustabh Chakraborty 	     "gout_isp_mux_rxbyteclkhs0_sensor0_user_con",
14014149066aSKaustabh Chakraborty 	     "frat_isp_rxbyteclkhs0_sensor0",
14024149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER_CON, 12,
14034149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
14044149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_CAM, "gout_isp_mux_cam", "mout_isp_cam",
14054149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_CAM, 21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
14064149066aSKaustabh Chakraborty 	     0),
14074149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_ISP, "gout_isp_mux_isp", "mout_isp_isp",
14084149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_ISP, 21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
14094149066aSKaustabh Chakraborty 	     0),
14104149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_ISPD, "gout_isp_mux_ispd", "mout_isp_ispd",
14114149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_ISPD, 21, CLK_IS_CRITICAL |
14124149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
14134149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_VRA, "gout_isp_mux_vra", "mout_isp_vra",
14144149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_VRA, 21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
14154149066aSKaustabh Chakraborty 	     0),
14164149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_PLL, "gout_isp_mux_pll", "gout_isp_mux_pll_con",
14174149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_PLL, 21, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
14184149066aSKaustabh Chakraborty 	     0),
14194149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_ISP_MUX_PLL_CON, "gout_isp_mux_pll_con", "fout_isp_pll",
14204149066aSKaustabh Chakraborty 	     CLK_CON_GAT_ISP_MUX_PLL_CON, 12, CLK_IS_CRITICAL |
14214149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
14224149066aSKaustabh Chakraborty };
14234149066aSKaustabh Chakraborty 
14244149066aSKaustabh Chakraborty static const struct samsung_cmu_info isp_cmu_info __initconst = {
14254149066aSKaustabh Chakraborty 	.fixed_clks	= isp_fixed_clks,
14264149066aSKaustabh Chakraborty 	.nr_fixed_clks	= ARRAY_SIZE(isp_fixed_clks),
14274149066aSKaustabh Chakraborty 	.pll_clks		= isp_pll_clks,
14284149066aSKaustabh Chakraborty 	.nr_pll_clks		= ARRAY_SIZE(isp_pll_clks),
14294149066aSKaustabh Chakraborty 	.mux_clks		= isp_mux_clks,
14304149066aSKaustabh Chakraborty 	.nr_mux_clks		= ARRAY_SIZE(isp_mux_clks),
14314149066aSKaustabh Chakraborty 	.div_clks		= isp_div_clks,
14324149066aSKaustabh Chakraborty 	.nr_div_clks		= ARRAY_SIZE(isp_div_clks),
14334149066aSKaustabh Chakraborty 	.gate_clks		= isp_gate_clks,
14344149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(isp_gate_clks),
14354149066aSKaustabh Chakraborty 	.clk_regs		= isp_clk_regs,
14364149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(isp_clk_regs),
14374149066aSKaustabh Chakraborty 	.nr_clk_ids		= ISP_NR_CLK,
14384149066aSKaustabh Chakraborty };
14394149066aSKaustabh Chakraborty 
14404149066aSKaustabh Chakraborty /*
14414149066aSKaustabh Chakraborty  * Register offsets for CMU_MFCMSCL (0x12cb0000)
14424149066aSKaustabh Chakraborty  */
14434149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MUX_MSCL_USER	0x0200
14444149066aSKaustabh Chakraborty #define CLK_CON_MUX_MFCMSCL_MSCL_USER		0x0200
14454149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MUX_MFC_USER	0x0204
14464149066aSKaustabh Chakraborty #define CLK_CON_MUX_MFCMSCL_MFC_USER		0x0204
14474149066aSKaustabh Chakraborty #define CLK_CON_DIV_MFCMSCL_APB			0x0400
14484149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL		0x0804
14494149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL_BI		0x0804
14504149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL_D		0x0804
14514149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL_JPEG		0x0804
14524149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL_POLY		0x0804
14534149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MSCL_PPMU		0x0804
14544149066aSKaustabh Chakraborty #define CLK_CON_GAT_MFCMSCL_MFC			0x0808
14554149066aSKaustabh Chakraborty 
14564149066aSKaustabh Chakraborty static const unsigned long mfcmscl_clk_regs[] __initconst = {
14574149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MUX_MSCL_USER,
14584149066aSKaustabh Chakraborty 	CLK_CON_MUX_MFCMSCL_MSCL_USER,
14594149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MUX_MFC_USER,
14604149066aSKaustabh Chakraborty 	CLK_CON_MUX_MFCMSCL_MFC_USER,
14614149066aSKaustabh Chakraborty 	CLK_CON_DIV_MFCMSCL_APB,
14624149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL,
14634149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL_BI,
14644149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL_D,
14654149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL_JPEG,
14664149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL_POLY,
14674149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MSCL_PPMU,
14684149066aSKaustabh Chakraborty 	CLK_CON_GAT_MFCMSCL_MFC,
14694149066aSKaustabh Chakraborty };
14704149066aSKaustabh Chakraborty 
14714149066aSKaustabh Chakraborty /* List of parent clocks for muxes in CMU_MFCMSCL */
14724149066aSKaustabh Chakraborty PNAME(mout_mfcmscl_mfc_user_p)	= { "oscclk", "gout_mif_cmu_mfcmscl_mfc" };
14734149066aSKaustabh Chakraborty PNAME(mout_mfcmscl_mscl_user_p)	= { "oscclk", "gout_mif_cmu_mfcmscl_mscl" };
14744149066aSKaustabh Chakraborty 
14754149066aSKaustabh Chakraborty static const struct samsung_mux_clock mfcmscl_mux_clks[] __initconst = {
14764149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MFCMSCL_MFC_USER, "mout_mfcmscl_mfc_user",
14774149066aSKaustabh Chakraborty 	    mout_mfcmscl_mfc_user_p, CLK_CON_MUX_MFCMSCL_MFC_USER, 12, 1),
14784149066aSKaustabh Chakraborty 	MUX(CLK_MOUT_MFCMSCL_MSCL_USER, "mout_mfcmscl_mscl_user",
14794149066aSKaustabh Chakraborty 	    mout_mfcmscl_mscl_user_p, CLK_CON_MUX_MFCMSCL_MSCL_USER, 12, 1),
14804149066aSKaustabh Chakraborty };
14814149066aSKaustabh Chakraborty 
14824149066aSKaustabh Chakraborty static const struct samsung_div_clock mfcmscl_div_clks[] __initconst = {
14834149066aSKaustabh Chakraborty 	DIV(CLK_DOUT_MFCMSCL_APB, "dout_mfcmscl_apb",
14844149066aSKaustabh Chakraborty 	    "gout_mfcmscl_mux_mscl_user", CLK_CON_DIV_MFCMSCL_APB, 0, 2),
14854149066aSKaustabh Chakraborty };
14864149066aSKaustabh Chakraborty 
14874149066aSKaustabh Chakraborty static const struct samsung_gate_clock mfcmscl_gate_clks[] __initconst = {
14884149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MFC, "gout_mfcmscl_mfc",
14894149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mux_mfc_user", CLK_CON_GAT_MFCMSCL_MFC, 0,
14904149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
14914149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL, "gout_mfcmscl_mscl",
14924149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mux_mscl_user", CLK_CON_GAT_MFCMSCL_MSCL, 0,
14934149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
14944149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL_BI, "gout_mfcmscl_mscl_bi",
14954149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mscl_d", CLK_CON_GAT_MFCMSCL_MSCL_BI, 4,
14964149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
14974149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL_D, "gout_mfcmscl_mscl_d",
14984149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mux_mscl_user", CLK_CON_GAT_MFCMSCL_MSCL_D, 1,
14994149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
15004149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL_JPEG, "gout_mfcmscl_mscl_jpeg",
15014149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mscl_d", CLK_CON_GAT_MFCMSCL_MSCL_JPEG, 2,
15024149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
15034149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL_POLY, "gout_mfcmscl_mscl_poly",
15044149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mscl_d", CLK_CON_GAT_MFCMSCL_MSCL_POLY, 3,
15054149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
15064149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MSCL_PPMU, "gout_mfcmscl_mscl_ppmu",
15074149066aSKaustabh Chakraborty 	     "gout_mfcmscl_mux_mscl_user", CLK_CON_GAT_MFCMSCL_MSCL_PPMU, 5,
15084149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
15094149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MUX_MFC_USER, "gout_mfcmscl_mux_mfc_user",
15104149066aSKaustabh Chakraborty 	     "mout_mfcmscl_mfc_user", CLK_CON_GAT_MFCMSCL_MUX_MFC_USER, 21,
15114149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
15124149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_MFCMSCL_MUX_MSCL_USER, "gout_mfcmscl_mux_mscl_user",
15134149066aSKaustabh Chakraborty 	     "mout_mfcmscl_mscl_user", CLK_CON_GAT_MFCMSCL_MUX_MSCL_USER, 21,
15144149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
15154149066aSKaustabh Chakraborty };
15164149066aSKaustabh Chakraborty 
15174149066aSKaustabh Chakraborty static const struct samsung_cmu_info mfcmscl_cmu_info __initconst = {
15184149066aSKaustabh Chakraborty 	.mux_clks		= mfcmscl_mux_clks,
15194149066aSKaustabh Chakraborty 	.nr_mux_clks		= ARRAY_SIZE(mfcmscl_mux_clks),
15204149066aSKaustabh Chakraborty 	.div_clks		= mfcmscl_div_clks,
15214149066aSKaustabh Chakraborty 	.nr_div_clks		= ARRAY_SIZE(mfcmscl_div_clks),
15224149066aSKaustabh Chakraborty 	.gate_clks		= mfcmscl_gate_clks,
15234149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(mfcmscl_gate_clks),
15244149066aSKaustabh Chakraborty 	.clk_regs		= mfcmscl_clk_regs,
15254149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(mfcmscl_clk_regs),
15264149066aSKaustabh Chakraborty 	.nr_clk_ids		= MFCMSCL_NR_CLK,
15274149066aSKaustabh Chakraborty };
15284149066aSKaustabh Chakraborty 
15294149066aSKaustabh Chakraborty /*
15304149066aSKaustabh Chakraborty  * Register offsets for CMU_PERI (0x101f0000)
15314149066aSKaustabh Chakraborty  */
15324149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_PWM_MOTOR_OSCCLK	0x0800
15334149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_TMU_CPUCL0_CLK		0x0800
15344149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_TMU_CPUCL1_CLK		0x0800
15354149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_TMU_CLK		0x0800
15364149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_BUSP1_PERIC0_HCLK	0x0810
15374149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_GPIO2_PCLK		0x0810
15384149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_GPIO5_PCLK		0x0810
15394149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_GPIO6_PCLK		0x0810
15404149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_GPIO7_PCLK		0x0810
15414149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C4_IPCLK		0x0810
15424149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C6_IPCLK		0x0810
15434149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C3_IPCLK		0x0810
15444149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C5_IPCLK		0x0810
15454149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C2_IPCLK		0x0810
15464149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_HSI2C1_IPCLK		0x0810
15474149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C0_PCLK		0x0810
15484149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C4_PCLK		0x0810
15494149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C5_PCLK		0x0810
15504149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C6_PCLK		0x0810
15514149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C7_PCLK		0x0810
15524149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C8_PCLK		0x0810
15534149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C3_PCLK		0x0810
15544149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C2_PCLK		0x0810
15554149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_I2C1_PCLK		0x0810
15564149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_MCT_PCLK		0x0810
15574149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_PWM_MOTOR_PCLK_S0	0x0810
15584149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL0_PCLK	0x0814
15594149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL1_PCLK	0x0814
15604149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SFRIF_TMU_PCLK		0x0814
15614149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI0_PCLK		0x0814
15624149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI2_PCLK		0x0814
15634149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI1_PCLK		0x0814
15644149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI4_PCLK		0x0814
15654149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI3_PCLK		0x0814
15664149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART1_PCLK		0x0814
15674149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART2_PCLK		0x0814
15684149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART0_PCLK		0x0814
15694149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_WDT_CPUCL0_PCLK	0x0814
15704149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_WDT_CPUCL1_PCLK	0x0814
15714149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART1_EXT_UCLK		0x0830
15724149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART2_EXT_UCLK		0x0834
15734149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_UART0_EXT_UCLK		0x0838
15744149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI2_SPI_EXT_CLK	0x083c
15754149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI1_SPI_EXT_CLK	0x0840
15764149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI0_SPI_EXT_CLK	0x0844
15774149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI3_SPI_EXT_CLK	0x0848
15784149066aSKaustabh Chakraborty #define CLK_CON_GAT_PERI_SPI4_SPI_EXT_CLK	0x084c
15794149066aSKaustabh Chakraborty 
15804149066aSKaustabh Chakraborty static const unsigned long peri_clk_regs[] __initconst = {
15814149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_PWM_MOTOR_OSCCLK,
15824149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_TMU_CPUCL0_CLK,
15834149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_TMU_CPUCL1_CLK,
15844149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_TMU_CLK,
15854149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_BUSP1_PERIC0_HCLK,
15864149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_GPIO2_PCLK,
15874149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_GPIO5_PCLK,
15884149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_GPIO6_PCLK,
15894149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_GPIO7_PCLK,
15904149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C4_IPCLK,
15914149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C6_IPCLK,
15924149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C3_IPCLK,
15934149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C5_IPCLK,
15944149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C2_IPCLK,
15954149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_HSI2C1_IPCLK,
15964149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C0_PCLK,
15974149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C4_PCLK,
15984149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C5_PCLK,
15994149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C6_PCLK,
16004149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C7_PCLK,
16014149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C8_PCLK,
16024149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C3_PCLK,
16034149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C2_PCLK,
16044149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_I2C1_PCLK,
16054149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_MCT_PCLK,
16064149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_PWM_MOTOR_PCLK_S0,
16074149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL0_PCLK,
16084149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL1_PCLK,
16094149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SFRIF_TMU_PCLK,
16104149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI0_PCLK,
16114149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI2_PCLK,
16124149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI1_PCLK,
16134149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI4_PCLK,
16144149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI3_PCLK,
16154149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART1_PCLK,
16164149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART2_PCLK,
16174149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART0_PCLK,
16184149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_WDT_CPUCL0_PCLK,
16194149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_WDT_CPUCL1_PCLK,
16204149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART1_EXT_UCLK,
16214149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART2_EXT_UCLK,
16224149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_UART0_EXT_UCLK,
16234149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI2_SPI_EXT_CLK,
16244149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI1_SPI_EXT_CLK,
16254149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI0_SPI_EXT_CLK,
16264149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI3_SPI_EXT_CLK,
16274149066aSKaustabh Chakraborty 	CLK_CON_GAT_PERI_SPI4_SPI_EXT_CLK,
16284149066aSKaustabh Chakraborty };
16294149066aSKaustabh Chakraborty 
16304149066aSKaustabh Chakraborty static const struct samsung_gate_clock peri_gate_clks[] __initconst = {
16314149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_BUSP1_PERIC0_HCLK, "gout_peri_busp1_peric0_hclk",
16324149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_BUSP1_PERIC0_HCLK, 3,
16334149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16344149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_GPIO2_PCLK, "gout_peri_gpio2_pclk",
16354149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_GPIO2_PCLK, 7,
16364149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
16374149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_GPIO5_PCLK, "gout_peri_gpio5_pclk",
16384149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_GPIO5_PCLK, 8,
16394149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
16404149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_GPIO6_PCLK, "gout_peri_gpio6_pclk",
16414149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_GPIO6_PCLK, 9,
16424149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
16434149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_GPIO7_PCLK, "gout_peri_gpio7_pclk",
16444149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_GPIO7_PCLK, 10,
16454149066aSKaustabh Chakraborty 	     CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
16464149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C4_IPCLK, "gout_peri_hsi2c4_ipclk",
16474149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_HSI2C4_IPCLK, 14,
16484149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16494149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C6_IPCLK, "gout_peri_hsi2c6_ipclk",
16504149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_HSI2C6_IPCLK, 16,
16514149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16524149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C3_IPCLK, "gout_peri_hsi2c3_ipclk",
16534149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_HSI2C3_IPCLK, 13,
16544149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16554149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C5_IPCLK, "gout_peri_hsi2c5_ipclk",
16564149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_HSI2C5_IPCLK, 15,
16574149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16584149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C2_IPCLK, "gout_peri_hsi2c2_ipclk",
16594149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_HSI2C2_IPCLK, 12,
16604149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16614149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_HSI2C1_IPCLK, "gout_peri_hsi2c1_ipclk",
16624149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_HSI2C1_IPCLK, 11,
16634149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16644149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C0_PCLK, "gout_peri_i2c0_pclk",
16654149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C0_PCLK, 21,
16664149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16674149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C4_PCLK, "gout_peri_i2c4_pclk",
16684149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C4_PCLK, 17,
16694149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16704149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C5_PCLK, "gout_peri_i2c5_pclk",
16714149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C5_PCLK, 18,
16724149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16734149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C6_PCLK, "gout_peri_i2c6_pclk",
16744149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C6_PCLK, 19,
16754149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16764149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C7_PCLK, "gout_peri_i2c7_pclk",
16774149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C7_PCLK, 24,
16784149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16794149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C8_PCLK, "gout_peri_i2c8_pclk",
16804149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C8_PCLK, 25,
16814149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16824149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C3_PCLK, "gout_peri_i2c3_pclk",
16834149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C3_PCLK, 20,
16844149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16854149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C2_PCLK, "gout_peri_i2c2_pclk",
16864149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C2_PCLK, 22,
16874149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16884149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_I2C1_PCLK, "gout_peri_i2c1_pclk",
16894149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_I2C1_PCLK, 23,
16904149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16914149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_MCT_PCLK, "gout_peri_mct_pclk",
16924149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_MCT_PCLK, 26,
16934149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16944149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_PWM_MOTOR_OSCCLK, "gout_peri_pwm_motor_oscclk",
16954149066aSKaustabh Chakraborty 	     "oscclk", CLK_CON_GAT_PERI_PWM_MOTOR_OSCCLK, 2,
16964149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
16974149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_PWM_MOTOR_PCLK_S0, "gout_peri_pwm_motor_pclk_s0",
16984149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_PWM_MOTOR_PCLK_S0, 29,
16994149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17004149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SFRIF_TMU_CPUCL0_PCLK,
17014149066aSKaustabh Chakraborty 	     "gout_peri_sfrif_tmu_cpucl0_pclk", "gout_mif_cmu_peri_bus",
17024149066aSKaustabh Chakraborty 	     CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL0_PCLK, 1, CLK_SET_RATE_PARENT, 0),
17034149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SFRIF_TMU_CPUCL1_PCLK,
17044149066aSKaustabh Chakraborty 	     "gout_peri_sfrif_tmu_cpucl1_pclk", "gout_mif_cmu_peri_bus",
17054149066aSKaustabh Chakraborty 	     CLK_CON_GAT_PERI_SFRIF_TMU_CPUCL1_PCLK, 2, CLK_SET_RATE_PARENT, 0),
17064149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SFRIF_TMU_PCLK, "gout_peri_sfrif_tmu_pclk",
17074149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SFRIF_TMU_PCLK, 3,
17084149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17094149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI0_PCLK, "gout_peri_spi0_pclk",
17104149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SPI0_PCLK, 6,
17114149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17124149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI0_SPI_EXT_CLK, "gout_peri_spi0_spi_ext_clk",
17134149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_spi0", CLK_CON_GAT_PERI_SPI0_SPI_EXT_CLK, 0,
17144149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17154149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI2_PCLK, "gout_peri_spi2_pclk",
17164149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SPI2_PCLK, 4,
17174149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17184149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI2_SPI_EXT_CLK, "gout_peri_spi2_spi_ext_clk",
17194149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_spi2", CLK_CON_GAT_PERI_SPI2_SPI_EXT_CLK, 0,
17204149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17214149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI1_PCLK, "gout_peri_spi1_pclk",
17224149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SPI1_PCLK, 5,
17234149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17244149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI1_SPI_EXT_CLK, "gout_peri_spi1_spi_ext_clk",
17254149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_spi1", CLK_CON_GAT_PERI_SPI1_SPI_EXT_CLK, 0,
17264149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17274149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI4_PCLK, "gout_peri_spi4_pclk",
17284149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SPI4_PCLK, 8,
17294149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17304149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI4_SPI_EXT_CLK, "gout_peri_spi4_spi_ext_clk",
17314149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_spi4", CLK_CON_GAT_PERI_SPI4_SPI_EXT_CLK, 0,
17324149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17334149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI3_PCLK, "gout_peri_spi3_pclk",
17344149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_SPI3_PCLK, 7,
17354149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17364149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_SPI3_SPI_EXT_CLK, "gout_peri_spi3_spi_ext_clk",
17374149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_spi3", CLK_CON_GAT_PERI_SPI3_SPI_EXT_CLK, 0,
17384149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17394149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_TMU_CPUCL0_CLK, "gout_peri_tmu_cpucl0_clk", "oscclk",
17404149066aSKaustabh Chakraborty 	     CLK_CON_GAT_PERI_TMU_CPUCL0_CLK, 4, CLK_SET_RATE_PARENT, 0),
17414149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_TMU_CPUCL1_CLK, "gout_peri_tmu_cpucl1_clk", "oscclk",
17424149066aSKaustabh Chakraborty 	     CLK_CON_GAT_PERI_TMU_CPUCL1_CLK, 5, CLK_SET_RATE_PARENT, 0),
17434149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_TMU_CLK, "gout_peri_tmu_clk", "oscclk",
17444149066aSKaustabh Chakraborty 	     CLK_CON_GAT_PERI_TMU_CLK, 6, CLK_SET_RATE_PARENT, 0),
17454149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART1_EXT_UCLK, "gout_peri_uart1_ext_uclk",
17464149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_uart1", CLK_CON_GAT_PERI_UART1_EXT_UCLK, 0,
17474149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17484149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART1_PCLK, "gout_peri_uart1_pclk",
17494149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_UART1_PCLK, 11,
17504149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17514149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART2_EXT_UCLK, "gout_peri_uart2_ext_uclk",
17524149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_uart2", CLK_CON_GAT_PERI_UART2_EXT_UCLK, 0,
17534149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17544149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART2_PCLK, "gout_peri_uart2_pclk",
17554149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_UART2_PCLK, 12,
17564149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17574149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART0_EXT_UCLK, "gout_peri_uart0_ext_uclk",
17584149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_uart0", CLK_CON_GAT_PERI_UART0_EXT_UCLK, 0,
17594149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17604149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_UART0_PCLK, "gout_peri_uart0_pclk",
17614149066aSKaustabh Chakraborty 	     "gout_peri_busp1_peric0_hclk", CLK_CON_GAT_PERI_UART0_PCLK, 10,
17624149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17634149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_WDT_CPUCL0_PCLK, "gout_peri_wdt_cpucl0_pclk",
17644149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_WDT_CPUCL0_PCLK, 13,
17654149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17664149066aSKaustabh Chakraborty 	GATE(CLK_GOUT_PERI_WDT_CPUCL1_PCLK, "gout_peri_wdt_cpucl1_pclk",
17674149066aSKaustabh Chakraborty 	     "gout_mif_cmu_peri_bus", CLK_CON_GAT_PERI_WDT_CPUCL1_PCLK, 14,
17684149066aSKaustabh Chakraborty 	     CLK_SET_RATE_PARENT, 0),
17694149066aSKaustabh Chakraborty };
17704149066aSKaustabh Chakraborty 
17714149066aSKaustabh Chakraborty static const struct samsung_cmu_info peri_cmu_info __initconst = {
17724149066aSKaustabh Chakraborty 	.gate_clks		= peri_gate_clks,
17734149066aSKaustabh Chakraborty 	.nr_gate_clks		= ARRAY_SIZE(peri_gate_clks),
17744149066aSKaustabh Chakraborty 	.clk_regs		= peri_clk_regs,
17754149066aSKaustabh Chakraborty 	.nr_clk_regs		= ARRAY_SIZE(peri_clk_regs),
17764149066aSKaustabh Chakraborty 	.nr_clk_ids		= PERI_NR_CLK,
17774149066aSKaustabh Chakraborty };
17784149066aSKaustabh Chakraborty 
17794149066aSKaustabh Chakraborty static int __init exynos7870_cmu_probe(struct platform_device *pdev)
17804149066aSKaustabh Chakraborty {
17814149066aSKaustabh Chakraborty 	const struct samsung_cmu_info *info;
17824149066aSKaustabh Chakraborty 	struct device *dev = &pdev->dev;
17834149066aSKaustabh Chakraborty 
17844149066aSKaustabh Chakraborty 	info = of_device_get_match_data(dev);
17854149066aSKaustabh Chakraborty 	exynos_arm64_register_cmu(dev, dev->of_node, info);
17864149066aSKaustabh Chakraborty 
17874149066aSKaustabh Chakraborty 	return 0;
17884149066aSKaustabh Chakraborty }
17894149066aSKaustabh Chakraborty 
17904149066aSKaustabh Chakraborty static const struct of_device_id exynos7870_cmu_of_match[] = {
17914149066aSKaustabh Chakraborty 	{
17924149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-mif",
17934149066aSKaustabh Chakraborty 		.data = &mif_cmu_info,
17944149066aSKaustabh Chakraborty 	}, {
17954149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-dispaud",
17964149066aSKaustabh Chakraborty 		.data = &dispaud_cmu_info,
17974149066aSKaustabh Chakraborty 	}, {
17984149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-fsys",
17994149066aSKaustabh Chakraborty 		.data = &fsys_cmu_info,
18004149066aSKaustabh Chakraborty 	}, {
18014149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-g3d",
18024149066aSKaustabh Chakraborty 		.data = &g3d_cmu_info,
18034149066aSKaustabh Chakraborty 	}, {
18044149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-isp",
18054149066aSKaustabh Chakraborty 		.data = &isp_cmu_info,
18064149066aSKaustabh Chakraborty 	}, {
18074149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-mfcmscl",
18084149066aSKaustabh Chakraborty 		.data = &mfcmscl_cmu_info,
18094149066aSKaustabh Chakraborty 	}, {
18104149066aSKaustabh Chakraborty 		.compatible = "samsung,exynos7870-cmu-peri",
18114149066aSKaustabh Chakraborty 		.data = &peri_cmu_info,
18124149066aSKaustabh Chakraborty 	}, {
18134149066aSKaustabh Chakraborty 	},
18144149066aSKaustabh Chakraborty };
18154149066aSKaustabh Chakraborty 
18164149066aSKaustabh Chakraborty static struct platform_driver exynos7870_cmu_driver __refdata = {
18174149066aSKaustabh Chakraborty 	.driver = {
18184149066aSKaustabh Chakraborty 		.name = "exynos7870-cmu",
18194149066aSKaustabh Chakraborty 		.of_match_table = exynos7870_cmu_of_match,
18204149066aSKaustabh Chakraborty 		.suppress_bind_attrs = true,
18214149066aSKaustabh Chakraborty 	},
18224149066aSKaustabh Chakraborty 	.probe = exynos7870_cmu_probe,
18234149066aSKaustabh Chakraborty };
18244149066aSKaustabh Chakraborty 
18254149066aSKaustabh Chakraborty static int __init exynos7870_cmu_init(void)
18264149066aSKaustabh Chakraborty {
18274149066aSKaustabh Chakraborty 	return platform_driver_register(&exynos7870_cmu_driver);
18284149066aSKaustabh Chakraborty }
18294149066aSKaustabh Chakraborty core_initcall(exynos7870_cmu_init);
1830