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