Re: [PATCH v3 4/5] clk: samsung: Introduce Exynos9610 clock controller driver

Peter Griffin <[email protected]> Thu, 23 Jul 2026 12:52:46 +0100
Newsgroups org.kernel.vger.linux-samsung-soc,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <CADrjBPoHi4UKgfKXDPHQGbMzDm2iuaV=4mjsP=c+Eh5Lb1R6_w@mail.gmail.com>
Hi Alexandru,

On Wed, 22 Jul 2026 at 21:44, Alexandru Chimac <[email protected]> wrote:
>
> The current implementation contains support for:
> - CMU_TOP, which generates clocks for other blocks
> - CMU_APM, which generates clocks for APM and CMU_CMGP
> - CMU_CAM
> - CMU_CMGP
> - CMU_CORE
> - CMU_CPUCL0, which generates clocks for the little cluster
> - CMU_DISPAUD, which generates clocks for display and ABOX
> - CMU_FSYS, which generates clocks for MMC/UFS
> - CMU_G2D
> - CMU_G3D, which generates clocks for GPU
> - CMU_PERI, which generates clocks for peripherals
> - CMU_USB, which generates clocks for USB

That's an impressive amount of CMU's implemented! It's nice to see
you've enabled auto_clock_gate as well. I think it's worth mentioning
in the commit message that the CMUs have automatic clock gating
enabled.

Sashiko has some review comments on this patch (see
https://sashiko.dev/#/patchset/20260722-exynos9610-clocks-v3-0-c672a2a30889%40chimac.ro).
Regarding potential orphaned clocks and checking the clock tree
generally, could you provide the output somewhere of

/sys/kernel/debug/clk/clk_summary
and
/sys/kernel/debug/clk/clk_orphan_summary

> Based on drivers/soc/samsung/cal-if/exynos9610 from
> https://gitlab.com/Linaro/96boards/e850-96/kernel, revision 3c200119457e.

Thanks for the link, regards,

Peter

>
> Signed-off-by: Alexandru Chimac <[email protected]>
> ---
>  drivers/clk/samsung/Makefile         |    1 +
>  drivers/clk/samsung/clk-exynos9610.c | 3715 ++++++++++++++++++++++++++++++++++
>  2 files changed, 3716 insertions(+)
>
> diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile
> index b3c4ef4e0dbf..8c490816f4da 100644
> --- a/drivers/clk/samsung/Makefile
> +++ b/drivers/clk/samsung/Makefile
> @@ -25,6 +25,7 @@ obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos7870.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos7885.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos850.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos8895.o
> +obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos9610.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos990.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynosautov9.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynosautov920.o
> diff --git a/drivers/clk/samsung/clk-exynos9610.c b/drivers/clk/samsung/clk-exynos9610.c
> new file mode 100644
> index 000000000000..7e7284541bb4
> --- /dev/null
> +++ b/drivers/clk/samsung/clk-exynos9610.c
> @@ -0,0 +1,3715 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Common Clock Framework driver for Exynos9610
> + *
> + * Copyright (c) 2026, Alexandru Chimac <[email protected]>
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/clk-provider.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +
> +#include <dt-bindings/clock/samsung,exynos9610-cmu.h>
> +
> +#include "clk.h"
> +#include "clk-exynos-arm64.h"
> +#include "clk-pll.h"
> +
> +#define CLKS_NR_TOP    (CLK_GOUT_CMU_VIPX2_BUS + 1)
> +#define CLKS_NR_APM    (CLK_GOUT_APM_XIU_DP_ACLK + 1)
> +#define CLKS_NR_CAM    (CLK_GOUT_CAM_SYSREG_PCLK + 1)
> +#define CLKS_NR_CMGP   (CLK_GOUT_CMGP_USI_CMGP04_PCLK + 1)
> +#define CLKS_NR_CORE   (CLK_GOUT_CORE_XIU_D_ACLK + 1)
> +#define CLKS_NR_CPUCL0 (CLK_GOUT_CPUCL0_SYSREG_PCLK + 1)
> +#define CLKS_NR_DISPAUD        (CLK_GOUT_DISPAUD_WDT_AUD_PCLK + 1)
> +#define CLKS_NR_FSYS   (CLK_GOUT_FSYS_XIU_D_ACLK + 1)
> +#define CLKS_NR_G2D    (CLK_GOUT_G2D_XIU_D_MSCL_ACLK + 1)
> +#define CLKS_NR_G3D    (CLK_GOUT_G3D_SYSREG_PCLK + 1)
> +#define CLKS_NR_PERI   (CLK_GOUT_PERI_WDT_CLUSTER1_PCLK + 1)
> +#define CLKS_NR_USB    (CLK_GOUT_USB_US_D_ACLK + 1)
> +
> +#define EXYNOS9610_GATE_DBG_OFFSET    0x4000
> +#define EXYNOS9610_ALT_DRCG_EN_OFFSET 0x1000
> +#define EXYNOS9610_DRCG_EN_OFFSET     0x104
> +#define EXYNOS9610_MEMCLK_OFFSET      0x108
> +
> +/* TOP (0x12100000) */
> +#define PLL_LOCKTIME_PLL_MMC                           0x0000
> +#define PLL_LOCKTIME_PLL_SHARED0                       0x0004
> +#define PLL_LOCKTIME_PLL_SHARED1                       0x0008
> +#define PLL_CON0_PLL_MMC                               0x0100
> +#define PLL_CON3_PLL_MMC                               0x010c
> +#define PLL_CON0_PLL_SHARED0                           0x0120
> +#define PLL_CON0_PLL_SHARED1                           0x0140
> +#define CMU_CMU_TOP_CONTROLLER_OPTION                  0x0800
> +#define CLK_CON_MUX_MUX_CLKCMU_APM_BUS                 0x1000
> +#define CLK_CON_MUX_MUX_CLKCMU_CAM_BUS                 0x1004
> +#define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0                        0x1008
> +#define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1                        0x100c
> +#define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2                        0x1010
> +#define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3                        0x1014
> +#define CLK_CON_MUX_MUX_CLKCMU_CORE_BUS                        0x1018
> +#define CLK_CON_MUX_MUX_CLKCMU_CORE_CCI                        0x101c
> +#define CLK_CON_MUX_MUX_CLKCMU_CORE_G3D                        0x1020
> +#define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG              0x1024
> +#define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH           0x1028
> +#define CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH           0x102c
> +#define CLK_CON_MUX_MUX_CLKCMU_DISPAUD_AUD             0x1030
> +#define CLK_CON_MUX_MUX_CLKCMU_DISPAUD_CPU             0x1034
> +#define CLK_CON_MUX_MUX_CLKCMU_DISPAUD_DISP            0x1038
> +#define CLK_CON_MUX_MUX_CLKCMU_FSYS_BUS                        0x103c
> +#define CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_CARD           0x1040
> +#define CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_EMBD           0x1044
> +#define CLK_CON_MUX_MUX_CLKCMU_FSYS_UFS_EMBD           0x1048
> +#define CLK_CON_MUX_MUX_CLKCMU_G2D_G2D                 0x104c
> +#define CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL                        0x1050
> +#define CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH              0x1054
> +#define CLK_CON_MUX_MUX_CLKCMU_HPM                     0x1058
> +#define CLK_CON_MUX_MUX_CLKCMU_ISP_BUS                 0x105c
> +#define CLK_CON_MUX_MUX_CLKCMU_ISP_GDC                 0x1060
> +#define CLK_CON_MUX_MUX_CLKCMU_ISP_VRA                 0x1064
> +#define CLK_CON_MUX_MUX_CLKCMU_MFC_MFC                 0x1068
> +#define CLK_CON_MUX_MUX_CLKCMU_MFC_WFD                 0x106c
> +#define CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP                        0x1070
> +#define CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH              0x1074
> +#define CLK_CON_MUX_MUX_CLKCMU_PERI_BUS                        0x1078
> +#define CLK_CON_MUX_MUX_CLKCMU_PERI_IP                 0x107c
> +#define CLK_CON_MUX_MUX_CLKCMU_PERI_UART               0x1080
> +#define CLK_CON_MUX_MUX_CLKCMU_USB_BUS                 0x1084
> +#define CLK_CON_MUX_MUX_CLKCMU_USB_DPGTC               0x1088
> +#define CLK_CON_MUX_MUX_CLKCMU_USB_USB30DRD            0x108c
> +#define CLK_CON_MUX_MUX_CLKCMU_VIPX1_BUS               0x1090
> +#define CLK_CON_MUX_MUX_CLKCMU_VIPX2_BUS               0x1094
> +#define CLK_CON_MUX_MUX_CLK_CMU_CMUREF                 0x1098
> +#define CLK_CON_MUX_MUX_CMU_CMUREF                     0x109c
> +#define CLK_CON_DIV_AP2CP_SHARED0_PLL_CLK              0x1800
> +#define CLK_CON_DIV_AP2CP_SHARED1_PLL_CLK              0x1804
> +#define CLK_CON_DIV_CLKCMU_APM_BUS                     0x1808
> +#define CLK_CON_DIV_CLKCMU_CAM_BUS                     0x180c
> +#define CLK_CON_DIV_CLKCMU_CIS_CLK0                    0x1810
> +#define CLK_CON_DIV_CLKCMU_CIS_CLK1                    0x1814
> +#define CLK_CON_DIV_CLKCMU_CIS_CLK2                    0x1818
> +#define CLK_CON_DIV_CLKCMU_CIS_CLK3                    0x181c
> +#define CLK_CON_DIV_CLKCMU_CORE_BUS                    0x1820
> +#define CLK_CON_DIV_CLKCMU_CORE_CCI                    0x1824
> +#define CLK_CON_DIV_CLKCMU_CORE_G3D                    0x1828
> +#define CLK_CON_DIV_CLKCMU_CPUCL0_DBG                  0x182c
> +#define CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH               0x1830
> +#define CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH               0x1834
> +#define CLK_CON_DIV_CLKCMU_DISPAUD_AUD                 0x1838
> +#define CLK_CON_DIV_CLKCMU_DISPAUD_CPU                 0x183c
> +#define CLK_CON_DIV_CLKCMU_DISPAUD_DISP                        0x1840
> +#define CLK_CON_DIV_CLKCMU_FSYS_BUS                    0x1844
> +#define CLK_CON_DIV_CLKCMU_FSYS_MMC_CARD               0x1848
> +#define CLK_CON_DIV_CLKCMU_FSYS_MMC_EMBD               0x184c
> +#define CLK_CON_DIV_CLKCMU_FSYS_UFS_EMBD               0x1850
> +#define CLK_CON_DIV_CLKCMU_G2D_G2D                     0x1854
> +#define CLK_CON_DIV_CLKCMU_G2D_MSCL                    0x1858
> +#define CLK_CON_DIV_CLKCMU_G3D_SWITCH                  0x185c
> +#define CLK_CON_DIV_CLKCMU_HPM                         0x1860
> +#define CLK_CON_DIV_CLKCMU_ISP_BUS                     0x1864
> +#define CLK_CON_DIV_CLKCMU_ISP_GDC                     0x1868
> +#define CLK_CON_DIV_CLKCMU_ISP_VRA                     0x186c
> +#define CLK_CON_DIV_CLKCMU_MFC_MFC                     0x1870
> +#define CLK_CON_DIV_CLKCMU_MFC_WFD                     0x1874
> +#define CLK_CON_DIV_CLKCMU_MIF_BUSP                    0x1878
> +#define CLK_CON_DIV_CLKCMU_OTP                         0x187c
> +#define CLK_CON_DIV_CLKCMU_PERI_BUS                    0x1880
> +#define CLK_CON_DIV_CLKCMU_PERI_IP                     0x1884
> +#define CLK_CON_DIV_CLKCMU_PERI_UART                   0x1888
> +#define CLK_CON_DIV_CLKCMU_USB_BUS                     0x188c
> +#define CLK_CON_DIV_CLKCMU_USB_DPGTC                   0x1890
> +#define CLK_CON_DIV_CLKCMU_USB_USB30DRD                        0x1894
> +#define CLK_CON_DIV_CLKCMU_VIPX1_BUS                   0x1898
> +#define CLK_CON_DIV_CLKCMU_VIPX2_BUS                   0x189c
> +#define CLK_CON_DIV_DIV_CLK_CMU_CMUREF                 0x18a0
> +#define CLK_CON_DIV_PLL_MMC_DIV2                       0x18a4
> +#define CLK_CON_DIV_PLL_SHARED0_DIV2                   0x18a8
> +#define CLK_CON_DIV_PLL_SHARED0_DIV3                   0x18ac
> +#define CLK_CON_DIV_PLL_SHARED0_DIV4                   0x18b0
> +#define CLK_CON_DIV_PLL_SHARED1_DIV2                   0x18b4
> +#define CLK_CON_DIV_PLL_SHARED1_DIV3                   0x18b8
> +#define CLK_CON_DIV_PLL_SHARED1_DIV4                   0x18bc
> +#define CLK_CON_GAT_CLKCMU_MIF_SWITCH                  0x2000
> +#define CLK_CON_GAT_CLK_CMU_OTP_CLK                    0x2004
> +#define CLK_CON_GAT_GATE_CLKCMU_APM_BUS                        0x2008
> +#define CLK_CON_GAT_GATE_CLKCMU_CAM_BUS                        0x200c
> +#define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0               0x2010
> +#define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1               0x2014
> +#define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2               0x2018
> +#define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3               0x201c
> +#define CLK_CON_GAT_GATE_CLKCMU_CORE_BUS               0x2020
> +#define CLK_CON_GAT_GATE_CLKCMU_CORE_CCI               0x2024
> +#define CLK_CON_GAT_GATE_CLKCMU_CORE_G3D               0x2028
> +#define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG             0x202c
> +#define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH          0x2030
> +#define CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH          0x2034
> +#define CLK_CON_GAT_GATE_CLKCMU_DISPAUD_AUD            0x2038
> +#define CLK_CON_GAT_GATE_CLKCMU_DISPAUD_CPU            0x203c
> +#define CLK_CON_GAT_GATE_CLKCMU_DISPAUD_DISP           0x2040
> +#define CLK_CON_GAT_GATE_CLKCMU_FSYS_BUS               0x2044
> +#define CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_CARD          0x2048
> +#define CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_EMBD          0x204c
> +#define CLK_CON_GAT_GATE_CLKCMU_FSYS_UFS_EMBD          0x2050
> +#define CLK_CON_GAT_GATE_CLKCMU_G2D_G2D                        0x2054
> +#define CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL               0x2058
> +#define CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH             0x205c
> +#define CLK_CON_GAT_GATE_CLKCMU_HPM                    0x2060
> +#define CLK_CON_GAT_GATE_CLKCMU_ISP_BUS                        0x2064
> +#define CLK_CON_GAT_GATE_CLKCMU_ISP_GDC                        0x2068
> +#define CLK_CON_GAT_GATE_CLKCMU_ISP_VRA                        0x206c
> +#define CLK_CON_GAT_GATE_CLKCMU_MFC_MFC                        0x2070
> +#define CLK_CON_GAT_GATE_CLKCMU_MFC_WFD                        0x2074
> +#define CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP               0x2078
> +#define CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED0          0x207c
> +#define CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED1          0x2080
> +#define CLK_CON_GAT_GATE_CLKCMU_PERI_BUS               0x2084
> +#define CLK_CON_GAT_GATE_CLKCMU_PERI_IP                        0x2088
> +#define CLK_CON_GAT_GATE_CLKCMU_PERI_UART              0x208c
> +#define CLK_CON_GAT_GATE_CLKCMU_USB_BUS                        0x2090
> +#define CLK_CON_GAT_GATE_CLKCMU_USB_DPGTC              0x2094
> +#define CLK_CON_GAT_GATE_CLKCMU_USB_USB30DRD           0x2098
> +#define CLK_CON_GAT_GATE_CLKCMU_VIPX1_BUS              0x209c
> +#define CLK_CON_GAT_GATE_CLKCMU_VIPX2_BUS              0x20a0
> +
> +static const unsigned long top_clk_regs[] __initconst = {
> +       PLL_LOCKTIME_PLL_MMC,
> +       PLL_LOCKTIME_PLL_SHARED0,
> +       PLL_LOCKTIME_PLL_SHARED1,
> +       PLL_CON0_PLL_MMC,
> +       PLL_CON3_PLL_MMC,
> +       PLL_CON0_PLL_SHARED0,
> +       PLL_CON0_PLL_SHARED1,
> +       CMU_CMU_TOP_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLKCMU_APM_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_CAM_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0,
> +       CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1,
> +       CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2,
> +       CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3,
> +       CLK_CON_MUX_MUX_CLKCMU_CORE_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_CORE_CCI,
> +       CLK_CON_MUX_MUX_CLKCMU_CORE_G3D,
> +       CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG,
> +       CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH,
> +       CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH,
> +       CLK_CON_MUX_MUX_CLKCMU_DISPAUD_AUD,
> +       CLK_CON_MUX_MUX_CLKCMU_DISPAUD_CPU,
> +       CLK_CON_MUX_MUX_CLKCMU_DISPAUD_DISP,
> +       CLK_CON_MUX_MUX_CLKCMU_FSYS_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_CARD,
> +       CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_EMBD,
> +       CLK_CON_MUX_MUX_CLKCMU_FSYS_UFS_EMBD,
> +       CLK_CON_MUX_MUX_CLKCMU_G2D_G2D,
> +       CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL,
> +       CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH,
> +       CLK_CON_MUX_MUX_CLKCMU_HPM,
> +       CLK_CON_MUX_MUX_CLKCMU_ISP_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_ISP_GDC,
> +       CLK_CON_MUX_MUX_CLKCMU_ISP_VRA,
> +       CLK_CON_MUX_MUX_CLKCMU_MFC_MFC,
> +       CLK_CON_MUX_MUX_CLKCMU_MFC_WFD,
> +       CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP,
> +       CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH,
> +       CLK_CON_MUX_MUX_CLKCMU_PERI_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_PERI_IP,
> +       CLK_CON_MUX_MUX_CLKCMU_PERI_UART,
> +       CLK_CON_MUX_MUX_CLKCMU_USB_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_USB_DPGTC,
> +       CLK_CON_MUX_MUX_CLKCMU_USB_USB30DRD,
> +       CLK_CON_MUX_MUX_CLKCMU_VIPX1_BUS,
> +       CLK_CON_MUX_MUX_CLKCMU_VIPX2_BUS,
> +       CLK_CON_MUX_MUX_CLK_CMU_CMUREF,
> +       CLK_CON_MUX_MUX_CMU_CMUREF,
> +       CLK_CON_DIV_AP2CP_SHARED0_PLL_CLK,
> +       CLK_CON_DIV_AP2CP_SHARED1_PLL_CLK,
> +       CLK_CON_DIV_CLKCMU_APM_BUS,
> +       CLK_CON_DIV_CLKCMU_CAM_BUS,
> +       CLK_CON_DIV_CLKCMU_CIS_CLK0,
> +       CLK_CON_DIV_CLKCMU_CIS_CLK1,
> +       CLK_CON_DIV_CLKCMU_CIS_CLK2,
> +       CLK_CON_DIV_CLKCMU_CIS_CLK3,
> +       CLK_CON_DIV_CLKCMU_CORE_BUS,
> +       CLK_CON_DIV_CLKCMU_CORE_CCI,
> +       CLK_CON_DIV_CLKCMU_CORE_G3D,
> +       CLK_CON_DIV_CLKCMU_CPUCL0_DBG,
> +       CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH,
> +       CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH,
> +       CLK_CON_DIV_CLKCMU_DISPAUD_AUD,
> +       CLK_CON_DIV_CLKCMU_DISPAUD_CPU,
> +       CLK_CON_DIV_CLKCMU_DISPAUD_DISP,
> +       CLK_CON_DIV_CLKCMU_FSYS_BUS,
> +       CLK_CON_DIV_CLKCMU_FSYS_MMC_CARD,
> +       CLK_CON_DIV_CLKCMU_FSYS_MMC_EMBD,
> +       CLK_CON_DIV_CLKCMU_FSYS_UFS_EMBD,
> +       CLK_CON_DIV_CLKCMU_G2D_G2D,
> +       CLK_CON_DIV_CLKCMU_G2D_MSCL,
> +       CLK_CON_DIV_CLKCMU_G3D_SWITCH,
> +       CLK_CON_DIV_CLKCMU_HPM,
> +       CLK_CON_DIV_CLKCMU_ISP_BUS,
> +       CLK_CON_DIV_CLKCMU_ISP_GDC,
> +       CLK_CON_DIV_CLKCMU_ISP_VRA,
> +       CLK_CON_DIV_CLKCMU_MFC_MFC,
> +       CLK_CON_DIV_CLKCMU_MFC_WFD,
> +       CLK_CON_DIV_CLKCMU_MIF_BUSP,
> +       CLK_CON_DIV_CLKCMU_OTP,
> +       CLK_CON_DIV_CLKCMU_PERI_BUS,
> +       CLK_CON_DIV_CLKCMU_PERI_IP,
> +       CLK_CON_DIV_CLKCMU_PERI_UART,
> +       CLK_CON_DIV_CLKCMU_USB_BUS,
> +       CLK_CON_DIV_CLKCMU_USB_DPGTC,
> +       CLK_CON_DIV_CLKCMU_USB_USB30DRD,
> +       CLK_CON_DIV_CLKCMU_VIPX1_BUS,
> +       CLK_CON_DIV_CLKCMU_VIPX2_BUS,
> +       CLK_CON_DIV_DIV_CLK_CMU_CMUREF,
> +       CLK_CON_DIV_PLL_MMC_DIV2,
> +       CLK_CON_DIV_PLL_SHARED0_DIV2,
> +       CLK_CON_DIV_PLL_SHARED0_DIV3,
> +       CLK_CON_DIV_PLL_SHARED0_DIV4,
> +       CLK_CON_DIV_PLL_SHARED1_DIV2,
> +       CLK_CON_DIV_PLL_SHARED1_DIV3,
> +       CLK_CON_DIV_PLL_SHARED1_DIV4,
> +       CLK_CON_GAT_CLKCMU_MIF_SWITCH,
> +       CLK_CON_GAT_CLK_CMU_OTP_CLK,
> +       CLK_CON_GAT_GATE_CLKCMU_APM_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_CAM_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0,
> +       CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1,
> +       CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2,
> +       CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3,
> +       CLK_CON_GAT_GATE_CLKCMU_CORE_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_CORE_CCI,
> +       CLK_CON_GAT_GATE_CLKCMU_CORE_G3D,
> +       CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG,
> +       CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH,
> +       CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH,
> +       CLK_CON_GAT_GATE_CLKCMU_DISPAUD_AUD,
> +       CLK_CON_GAT_GATE_CLKCMU_DISPAUD_CPU,
> +       CLK_CON_GAT_GATE_CLKCMU_DISPAUD_DISP,
> +       CLK_CON_GAT_GATE_CLKCMU_FSYS_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_CARD,
> +       CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_EMBD,
> +       CLK_CON_GAT_GATE_CLKCMU_FSYS_UFS_EMBD,
> +       CLK_CON_GAT_GATE_CLKCMU_G2D_G2D,
> +       CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL,
> +       CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH,
> +       CLK_CON_GAT_GATE_CLKCMU_HPM,
> +       CLK_CON_GAT_GATE_CLKCMU_ISP_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_ISP_GDC,
> +       CLK_CON_GAT_GATE_CLKCMU_ISP_VRA,
> +       CLK_CON_GAT_GATE_CLKCMU_MFC_MFC,
> +       CLK_CON_GAT_GATE_CLKCMU_MFC_WFD,
> +       CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP,
> +       CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED0,
> +       CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED1,
> +       CLK_CON_GAT_GATE_CLKCMU_PERI_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_PERI_IP,
> +       CLK_CON_GAT_GATE_CLKCMU_PERI_UART,
> +       CLK_CON_GAT_GATE_CLKCMU_USB_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_USB_DPGTC,
> +       CLK_CON_GAT_GATE_CLKCMU_USB_USB30DRD,
> +       CLK_CON_GAT_GATE_CLKCMU_VIPX1_BUS,
> +       CLK_CON_GAT_GATE_CLKCMU_VIPX2_BUS,
> +};
> +
> +static const struct samsung_pll_rate_table pll_shared0_rate_table[] __initconst = {
> +       PLL_35XX_RATE(26 * MHZ, 1599000000U, 246, 4, 0),
> +};
> +
> +static const struct samsung_pll_rate_table pll_shared1_rate_table[] __initconst = {
> +       PLL_35XX_RATE(26 * MHZ, 1332500000U, 205, 4, 0),
> +};
> +
> +static const struct samsung_pll_rate_table pll_mmc_rate_table[] __initconst = {
> +       PLL_36XX_RATE(26 * MHZ, 799999877, 31, 1, 0, -15124),
> +};
> +
> +static const struct samsung_pll_clock top_pll_clks[] __initconst = {
> +       PLL(pll_1051x, CLK_FOUT_SHARED0_PLL, "fout_shared0_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_SHARED0, PLL_CON0_PLL_SHARED0, pll_shared0_rate_table),
> +       PLL(pll_1051x, CLK_FOUT_SHARED1_PLL, "fout_shared1_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_SHARED1, PLL_CON0_PLL_SHARED1, pll_shared1_rate_table),
> +       PLL(pll_1061x, CLK_FOUT_MMC_PLL, "fout_mmc_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_MMC, PLL_CON0_PLL_MMC, pll_mmc_rate_table),
> +};
> +
> +static const struct samsung_fixed_rate_clock top_fixed_clks[] __initconst = {
> +       /* OSCCLK for CMGP */
> +       FRATE(0, "oscclk_rco_cmgp", NULL, 0, 30000000),
> +       /* input clock for I2S/PCM */
> +       FRATE(0, "ioclk_audiocdclk0", NULL, 0, 10000000),
> +       FRATE(0, "ioclk_audiocdclk1", NULL, 0, 100000000),
> +       /* for USB audio? */
> +       FRATE(0, "tick_usb", NULL, 0, 60000000),
> +};
> +
> +/* Parent clock list for TOP muxes */
> +PNAME(mout_pll_shared0_p)      = { "oscclk", "fout_shared0_pll" };
> +PNAME(mout_pll_shared1_p)      = { "oscclk", "fout_shared1_pll" };
> +PNAME(mout_pll_mmc_p)          = { "oscclk", "fout_mmc_pll" };
> +PNAME(mout_cmu_apm_bus_p)      = { "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_cam_bus_p)      = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_cis_clk_p)      = { "oscclk",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_core_bus_p)     = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_mmc_div2" };
> +PNAME(mout_cmu_core_cci_p)     = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_mmc_div2" };
> +PNAME(mout_cmu_core_g3d_p)     = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_mmc_div2" };
> +PNAME(mout_cmu_cpucl0_dbg_p)   = { "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_cpucl0_switch_p)        = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3" };
> +PNAME(mout_cmu_cpucl1_switch_p)        = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3" };
> +PNAME(mout_cmu_dispaud_aud_p)  = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_dispaud_cpu_p)  = { "fout_shared1_pll",
> +                                   "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "fout_mmc_pll",
> +                                   "oscclk", "oscclk" };
> +PNAME(mout_cmu_dispaud_disp_p) = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_fsys_bus_p)     = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2" };
> +PNAME(mout_cmu_fsys_mmc_card_p)        = { "oscclk",
> +                                   "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "fout_mmc_pll",
> +                                   "oscclk", "oscclk" };
> +PNAME(mout_cmu_fsys_mmc_embd_p)        = { "oscclk",
> +                                   "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "fout_mmc_pll",
> +                                   "oscclk", "oscclk" };
> +PNAME(mout_cmu_fsys_ufs_embd_p) = { "oscclk",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "oscclk" };
> +PNAME(mout_cmu_g2d_g2d_p)      = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_g2d_mscl_p)     = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_g3d_switch_p)   = { "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3" };
> +PNAME(mout_cmu_hpm_p)          = { "oscclk",
> +                                   "dout_cmu_shared0_div2",
> +                                   "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_mmc_div2",
> +                                   "oscclk", "oscclk", "oscclk" };
> +PNAME(mout_cmu_isp_bus_p)      = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_isp_gdc_p)      = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_isp_vra_p)      = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_mfc_mfc_p)      = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_mfc_wfd_p)      = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_mif_busp_p)     = { "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "dout_cmu_mmc_div2",
> +                                   "oscclk" };
> +PNAME(mout_cmu_mif_switch_p)   = { "fout_shared0_pll",
> +                                   "fout_shared1_pll",
> +                                   "dout_cmu_shared0_div2",
> +                                   "fout_mmc_pll",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_peri_bus_p)     = { "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_peri_ip_p)      = { "oscclk",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "oscclk" };
> +PNAME(mout_cmu_peri_uart_p)    = { "oscclk",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "oscclk" };
> +PNAME(mout_cmu_usb_bus_p)      = { "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_usb_dpgtc_p)    = { "oscclk",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "oscclk" };
> +PNAME(mout_cmu_usb_usb30drd_p) = { "oscclk",
> +                                   "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4",
> +                                   "oscclk" };
> +PNAME(mout_cmu_vipx1_bus_p)    = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_cmu_vipx2_bus_p)    = { "dout_cmu_shared1_div2",
> +                                   "dout_cmu_shared0_div3",
> +                                   "dout_cmu_shared1_div3",
> +                                   "dout_cmu_shared0_div4" };
> +PNAME(mout_clk_cmu_cmuref_p)   = { "dout_cmu_shared0_div4",
> +                                   "dout_cmu_shared1_div4" };
> +PNAME(mout_cmu_cmuref_p)       = { "oscclk",
> +                                   "dout_clk_cmu_cmuref" };
> +
> +/*
> + * Register name to clock name mangling strategy used in this file
> + *
> + * Replace PLL_CON{0,3}_PLL       with CLK_MOUT_PLL and mout_pll
> + * Replace CLK_CON_MUX_MUX_CLKCMU  with CLK_MOUT_CMU and mout_cmu
> + * Replace CLK_CON_DIV_CLKCMU      with CLK_DOUT_CMU_CMU and dout_cmu_cmu
> + * Replace CLK_CON_DIV_DIV_CLKCMU  with CLK_DOUT_CMU_CMU and dout_cmu_cmu
> + * Replace CLK_CON_DIV_PLL_CLKCMU  with CLK_DOUT_CMU_CMU and dout_cmu_cmu
> + * Replace CLK_CON_GAT_CLKCMU      with CLK_GOUT_CMU and gout_cmu
> + * Replace CLK_CON_GAT_GATE_CLKCMU with CLK_GOUT_CMU and gout_cmu
> + *
> + * For gates remove _UID _BLK _IPCLKPORT, _I and _RSTNSYNC
> + */
> +
> +static const struct samsung_mux_clock top_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_SHARED0, "mout_pll_shared0", mout_pll_shared0_p,
> +           PLL_CON0_PLL_SHARED0, 4, 1),
> +       MUX(CLK_MOUT_PLL_SHARED1, "mout_pll_shared1", mout_pll_shared1_p,
> +           PLL_CON0_PLL_SHARED1, 4, 1),
> +       MUX(CLK_MOUT_PLL_MMC, "mout_pll_mmc", mout_pll_mmc_p,
> +           PLL_CON0_PLL_MMC, 4, 1),
> +
> +       MUX(CLK_MOUT_CMU_APM_BUS, "mout_cmu_apm_bus", mout_cmu_apm_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_APM_BUS, 0, 1),
> +       MUX(CLK_MOUT_CMU_CAM_BUS, "mout_cmu_cam_bus", mout_cmu_cam_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CAM_BUS, 0, 2),
> +       MUX(CLK_MOUT_CMU_CIS_CLK0, "mout_cmu_cis_clk0", mout_cmu_cis_clk_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0, 0, 1),
> +       MUX(CLK_MOUT_CMU_CIS_CLK1, "mout_cmu_cis_clk1", mout_cmu_cis_clk_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1, 0, 1),
> +       MUX(CLK_MOUT_CMU_CIS_CLK2, "mout_cmu_cis_clk2", mout_cmu_cis_clk_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2, 0, 1),
> +       MUX(CLK_MOUT_CMU_CIS_CLK3, "mout_cmu_cis_clk3", mout_cmu_cis_clk_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3, 0, 1),
> +       MUX(CLK_MOUT_CMU_CORE_BUS, "mout_cmu_core_bus", mout_cmu_core_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CORE_BUS, 0, 2),
> +       MUX(CLK_MOUT_CMU_CORE_CCI, "mout_cmu_core_cci", mout_cmu_core_cci_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CORE_CCI, 0, 2),
> +       MUX(CLK_MOUT_CMU_CORE_G3D, "mout_cmu_core_g3d", mout_cmu_core_g3d_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CORE_G3D, 0, 2),
> +       MUX(CLK_MOUT_CMU_CPUCL0_DBG, "mout_cmu_cpucl0_dbg", mout_cmu_cpucl0_dbg_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG, 0, 1),
> +       MUX(CLK_MOUT_CMU_CPUCL0_SWITCH, "mout_cmu_cpucl0_switch", mout_cmu_cpucl0_switch_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH, 0, 2),
> +       MUX(CLK_MOUT_CMU_CPUCL1_SWITCH, "mout_cmu_cpucl1_switch", mout_cmu_cpucl1_switch_p,
> +           CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH, 0, 2),
> +       MUX(CLK_MOUT_CMU_DISPAUD_AUD, "mout_cmu_dispaud_aud", mout_cmu_dispaud_aud_p,
> +           CLK_CON_MUX_MUX_CLKCMU_DISPAUD_AUD, 0, 2),
> +       MUX(CLK_MOUT_CMU_DISPAUD_CPU, "mout_cmu_dispaud_cpu", mout_cmu_dispaud_cpu_p,
> +           CLK_CON_MUX_MUX_CLKCMU_DISPAUD_CPU, 0, 3),
> +       MUX(CLK_MOUT_CMU_DISPAUD_DISP, "mout_cmu_dispaud_disp", mout_cmu_dispaud_disp_p,
> +           CLK_CON_MUX_MUX_CLKCMU_DISPAUD_DISP, 0, 2),
> +       MUX(CLK_MOUT_CMU_FSYS_BUS, "mout_cmu_fsys_bus", mout_cmu_fsys_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_FSYS_BUS, 0, 1),
> +       MUX(CLK_MOUT_CMU_FSYS_MMC_CARD, "mout_cmu_fsys_mmc_card", mout_cmu_fsys_mmc_card_p,
> +           CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_CARD, 0, 3),
> +       MUX(CLK_MOUT_CMU_FSYS_MMC_EMBD, "mout_cmu_fsys_mmc_embd", mout_cmu_fsys_mmc_embd_p,
> +           CLK_CON_MUX_MUX_CLKCMU_FSYS_MMC_EMBD, 0, 3),
> +       MUX(CLK_MOUT_CMU_FSYS_UFS_EMBD, "mout_cmu_fsys_ufs_embd", mout_cmu_fsys_ufs_embd_p,
> +           CLK_CON_MUX_MUX_CLKCMU_FSYS_UFS_EMBD, 0, 2),
> +       MUX(CLK_MOUT_CMU_G2D_G2D, "mout_cmu_g2d_g2d", mout_cmu_g2d_g2d_p,
> +           CLK_CON_MUX_MUX_CLKCMU_G2D_G2D, 0, 2),
> +       MUX(CLK_MOUT_CMU_G2D_MSCL, "mout_cmu_g2d_mscl", mout_cmu_g2d_mscl_p,
> +           CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL, 0, 2),
> +       MUX(CLK_MOUT_CMU_G3D_SWITCH, "mout_cmu_g3d_SWITCH", mout_cmu_g3d_switch_p,
> +           CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH, 0, 2),
> +       MUX(CLK_MOUT_CMU_HPM, "mout_cmu_hpm", mout_cmu_hpm_p,
> +           CLK_CON_MUX_MUX_CLKCMU_HPM, 0, 3),
> +       MUX(CLK_MOUT_CMU_ISP_BUS, "mout_cmu_isp_bus", mout_cmu_isp_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_ISP_BUS, 0, 2),
> +       MUX(CLK_MOUT_CMU_ISP_GDC, "mout_cmu_isp_gdc", mout_cmu_isp_gdc_p,
> +           CLK_CON_MUX_MUX_CLKCMU_ISP_GDC, 0, 2),
> +       MUX(CLK_MOUT_CMU_ISP_VRA, "mout_cmu_isp_vra", mout_cmu_isp_vra_p,
> +           CLK_CON_MUX_MUX_CLKCMU_ISP_VRA, 0, 2),
> +       MUX(CLK_MOUT_CMU_MFC_MFC, "mout_cmu_mfc_mfc", mout_cmu_mfc_mfc_p,
> +           CLK_CON_MUX_MUX_CLKCMU_MFC_MFC, 0, 2),
> +       MUX(CLK_MOUT_CMU_MFC_WFD, "mout_cmu_mfc_wfd", mout_cmu_mfc_wfd_p,
> +           CLK_CON_MUX_MUX_CLKCMU_MFC_WFD, 0, 2),
> +       MUX(CLK_MOUT_CMU_MIF_BUSP, "mout_cmu_mif_busp", mout_cmu_mif_busp_p,
> +           CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP, 0, 2),
> +       MUX(CLK_MOUT_CMU_MIF_SWITCH, "mout_cmu_mif_switch", mout_cmu_mif_switch_p,
> +           CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH, 0, 3),
> +       MUX(CLK_MOUT_CMU_PERI_BUS, "mout_cmu_peri_bus", mout_cmu_peri_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_PERI_BUS, 0, 1),
> +       MUX(CLK_MOUT_CMU_PERI_IP, "mout_cmu_peri_ip", mout_cmu_peri_ip_p,
> +           CLK_CON_MUX_MUX_CLKCMU_PERI_IP, 0, 2),
> +       MUX(CLK_MOUT_CMU_PERI_UART, "mout_cmu_peri_uart", mout_cmu_peri_uart_p,
> +           CLK_CON_MUX_MUX_CLKCMU_PERI_UART, 0, 2),
> +       MUX(CLK_MOUT_CMU_USB_BUS, "mout_cmu_usb_bus", mout_cmu_usb_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_USB_BUS, 0, 2),
> +       MUX(CLK_MOUT_CMU_USB_DPGTC, "mout_cmu_usb_dpgtc", mout_cmu_usb_dpgtc_p,
> +           CLK_CON_MUX_MUX_CLKCMU_USB_DPGTC, 0, 2),
> +       MUX(CLK_MOUT_CMU_USB_USB30DRD, "mout_cmu_usb_usb30drd", mout_cmu_usb_usb30drd_p,
> +           CLK_CON_MUX_MUX_CLKCMU_USB_USB30DRD, 0, 2),
> +       MUX(CLK_MOUT_CMU_VIPX1_BUS, "mout_cmu_vipx1_bus", mout_cmu_vipx1_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_VIPX1_BUS, 0, 2),
> +       MUX(CLK_MOUT_CMU_VIPX2_BUS, "mout_cmu_vipx2_bus", mout_cmu_vipx2_bus_p,
> +           CLK_CON_MUX_MUX_CLKCMU_VIPX2_BUS, 0, 2),
> +       MUX(CLK_MOUT_CLK_CMU_CMUREF, "mout_clk_cmu_cmuref", mout_clk_cmu_cmuref_p,
> +           CLK_CON_MUX_MUX_CLK_CMU_CMUREF, 0, 1),
> +       MUX(CLK_MOUT_CMU_CMUREF, "mout_cmu_cmuref", mout_cmu_cmuref_p,
> +           CLK_CON_MUX_MUX_CMU_CMUREF, 0, 1),
> +};
> +
> +static const struct samsung_div_clock top_div_clks[] __initconst = {
> +       /* shared0 */
> +       DIV(CLK_DOUT_CMU_SHARED0_DIV2, "dout_cmu_shared0_div2", "mout_pll_shared0",
> +           CLK_CON_DIV_PLL_SHARED0_DIV2, 0, 1),
> +       DIV(CLK_DOUT_CMU_SHARED0_DIV3, "dout_cmu_shared0_div3", "mout_pll_shared0",
> +           CLK_CON_DIV_PLL_SHARED0_DIV3, 0, 2),
> +       DIV(CLK_DOUT_CMU_SHARED0_DIV4, "dout_cmu_shared0_div4", "dout_cmu_shared0_div2",
> +           CLK_CON_DIV_PLL_SHARED0_DIV4, 0, 1),
> +
> +       /* shared1 */
> +       DIV(CLK_DOUT_CMU_SHARED1_DIV2, "dout_cmu_shared1_div2", "mout_pll_shared1",
> +           CLK_CON_DIV_PLL_SHARED1_DIV2, 0, 1),
> +       DIV(CLK_DOUT_CMU_SHARED1_DIV3, "dout_cmu_shared1_div3", "mout_pll_shared1",
> +           CLK_CON_DIV_PLL_SHARED1_DIV3, 0, 2),
> +       DIV(CLK_DOUT_CMU_SHARED1_DIV4, "dout_cmu_shared1_div4", "dout_cmu_shared1_div2",
> +           CLK_CON_DIV_PLL_SHARED1_DIV4, 0, 1),
> +
> +       /* mmc */
> +       DIV(CLK_DOUT_CMU_MMC_DIV2, "dout_cmu_mmc_div2", "mout_pll_mmc",
> +           CLK_CON_DIV_PLL_MMC_DIV2, 0, 1),
> +
> +       DIV(CLK_DOUT_AP2CP_SHARED0_PLL_CLK, "dout_ap2cp_shared0_pll_clk",
> +           "gout_cmu_modem_shared0", CLK_CON_DIV_AP2CP_SHARED0_PLL_CLK,
> +           0, 4),
> +       DIV(CLK_DOUT_AP2CP_SHARED1_PLL_CLK, "dout_ap2cp_shared1_pll_clk",
> +           "gout_cmu_modem_shared1", CLK_CON_DIV_AP2CP_SHARED1_PLL_CLK,
> +           0, 4),
> +       DIV(CLK_DOUT_CMU_APM_BUS, "dout_cmu_apm_bus", "gout_cmu_apm_bus",
> +           CLK_CON_DIV_CLKCMU_APM_BUS, 0, 3),
> +       DIV(CLK_DOUT_CMU_CAM_BUS, "dout_cmu_cam_bus", "gout_cmu_cam_bus",
> +           CLK_CON_DIV_CLKCMU_CAM_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_CIS_CLK0, "dout_cmu_cis_clk0", "gout_cmu_cis_clk0",
> +           CLK_CON_DIV_CLKCMU_CIS_CLK0, 0, 5),
> +       DIV(CLK_DOUT_CMU_CIS_CLK1, "dout_cmu_cis_clk1", "gout_cmu_cis_clk1",
> +           CLK_CON_DIV_CLKCMU_CIS_CLK1, 0, 5),
> +       DIV(CLK_DOUT_CMU_CIS_CLK2, "dout_cmu_cis_clk2", "gout_cmu_cis_clk2",
> +           CLK_CON_DIV_CLKCMU_CIS_CLK2, 0, 5),
> +       DIV(CLK_DOUT_CMU_CIS_CLK3, "dout_cmu_cis_clk3", "gout_cmu_cis_clk3",
> +           CLK_CON_DIV_CLKCMU_CIS_CLK3, 0, 5),
> +       DIV(CLK_DOUT_CMU_CORE_BUS, "dout_cmu_core_bus", "gout_cmu_core_bus",
> +           CLK_CON_DIV_CLKCMU_CORE_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_CORE_CCI, "dout_cmu_core_cci", "gout_cmu_core_cci",
> +           CLK_CON_DIV_CLKCMU_CORE_CCI, 0, 4),
> +       DIV(CLK_DOUT_CMU_CORE_G3D, "dout_cmu_core_g3d", "gout_cmu_core_g3d",
> +           CLK_CON_DIV_CLKCMU_CORE_G3D, 0, 4),
> +       DIV(CLK_DOUT_CMU_CPUCL0_DBG, "dout_cmu_cpucl0_dbg", "gout_cmu_cpucl0_dbg",
> +           CLK_CON_DIV_CLKCMU_CPUCL0_DBG, 0, 3),
> +       DIV(CLK_DOUT_CMU_CPUCL0_SWITCH, "dout_cmu_cpucl0_switch", "gout_cmu_cpucl0_switch",
> +           CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH, 0, 3),
> +       DIV(CLK_DOUT_CMU_CPUCL1_SWITCH, "dout_cmu_cpucl1_switch", "gout_cmu_cpucl1_switch",
> +           CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH, 0, 3),
> +       DIV(CLK_DOUT_CMU_DISPAUD_AUD, "dout_cmu_dispaud_aud", "gout_cmu_dispaud_aud",
> +           CLK_CON_DIV_CLKCMU_DISPAUD_AUD, 0, 4),
> +       DIV(CLK_DOUT_CMU_DISPAUD_CPU, "dout_cmu_dispaud_cpu", "gout_cmu_dispaud_cpu",
> +           CLK_CON_DIV_CLKCMU_DISPAUD_CPU, 0, 4),
> +       DIV(CLK_DOUT_CMU_DISPAUD_DISP, "dout_cmu_dispaud_disp", "gout_cmu_dispaud_disp",
> +           CLK_CON_DIV_CLKCMU_DISPAUD_DISP, 0, 4),
> +       DIV(CLK_DOUT_CMU_FSYS_BUS, "dout_cmu_fsys_bus", "gout_cmu_fsys_bus",
> +           CLK_CON_DIV_CLKCMU_FSYS_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_FSYS_MMC_CARD, "dout_cmu_fsys_mmc_card", "gout_cmu_fsys_mmc_card",
> +           CLK_CON_DIV_CLKCMU_FSYS_MMC_CARD, 0, 9),
> +       DIV(CLK_DOUT_CMU_FSYS_MMC_EMBD, "dout_cmu_fsys_mmc_embd", "gout_cmu_fsys_mmc_embd",
> +           CLK_CON_DIV_CLKCMU_FSYS_MMC_EMBD, 0, 9),
> +       DIV(CLK_DOUT_CMU_G2D_G2D, "dout_cmu_g2d_g2d", "gout_cmu_g2d_g2d",
> +           CLK_CON_DIV_CLKCMU_G2D_G2D, 0, 4),
> +       DIV(CLK_DOUT_CMU_G2D_MSCL, "dout_cmu_g2d_mscl", "gout_cmu_g2d_mscl",
> +           CLK_CON_DIV_CLKCMU_G2D_MSCL, 0, 4),
> +       DIV(CLK_DOUT_CMU_G3D_SWITCH, "dout_cmu_g3d_switch", "gout_cmu_g3d_switch",
> +           CLK_CON_DIV_CLKCMU_G3D_SWITCH, 0, 3),
> +       DIV(CLK_DOUT_CMU_HPM, "dout_cmu_hpm", "gout_cmu_hpm",
> +           CLK_CON_DIV_CLKCMU_HPM, 0, 2),
> +       DIV(CLK_DOUT_CMU_ISP_BUS, "dout_cmu_isp_bus", "gout_cmu_isp_bus",
> +           CLK_CON_DIV_CLKCMU_ISP_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_ISP_GDC, "dout_cmu_isp_gdc", "gout_cmu_isp_gdc",
> +           CLK_CON_DIV_CLKCMU_ISP_GDC, 0, 4),
> +       DIV(CLK_DOUT_CMU_ISP_VRA, "dout_cmu_isp_vra", "gout_cmu_isp_vra",
> +           CLK_CON_DIV_CLKCMU_ISP_VRA, 0, 4),
> +       DIV(CLK_DOUT_CMU_MFD_MFC, "dout_cmu_mfc_mfc", "gout_cmu_mfc_mfc",
> +           CLK_CON_DIV_CLKCMU_MFC_MFC, 0, 4),
> +       DIV(CLK_DOUT_CMU_MFD_WFD, "dout_cmu_mfc_wfd", "gout_cmu_mfc_wfd",
> +           CLK_CON_DIV_CLKCMU_MFC_WFD, 0, 4),
> +       DIV(CLK_DOUT_CMU_MIF_BUSP, "dout_cmu_mif_busp", "gout_cmu_mif_busp",
> +           CLK_CON_DIV_CLKCMU_MIF_BUSP, 0, 3),
> +       DIV(CLK_DOUT_CMU_PERI_BUS, "dout_cmu_peri_bus", "gout_cmu_peri_bus",
> +           CLK_CON_DIV_CLKCMU_PERI_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_PERI_IP, "dout_cmu_peri_ip", "gout_cmu_peri_ip",
> +           CLK_CON_DIV_CLKCMU_PERI_IP, 0, 4),
> +       DIV(CLK_DOUT_CMU_PERI_UART, "dout_cmu_peri_uart", "gout_cmu_peri_uart",
> +           CLK_CON_DIV_CLKCMU_PERI_UART, 0, 4),
> +       DIV(CLK_DOUT_CMU_USB_BUS, "dout_cmu_usb_bus", "gout_cmu_usb_bus",
> +           CLK_CON_DIV_CLKCMU_USB_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_USB_DPGTC, "dout_cmu_usb_dpgtc", "gout_cmu_usb_dpgtc",
> +           CLK_CON_DIV_CLKCMU_USB_DPGTC, 0, 4),
> +       DIV(CLK_DOUT_CMU_USB_USB30DRD, "dout_cmu_usb_usb30drd", "gout_cmu_usb_usb30drd",
> +           CLK_CON_DIV_CLKCMU_USB_USB30DRD, 0, 4),
> +       DIV(CLK_DOUT_CMU_VIPX1_BUS, "dout_cmu_vipx1_bus", "gout_cmu_vipx1_bus",
> +           CLK_CON_DIV_CLKCMU_VIPX1_BUS, 0, 4),
> +       DIV(CLK_DOUT_CMU_VIPX2_BUS, "dout_cmu_vipx2_bus", "gout_cmu_vipx2_bus",
> +           CLK_CON_DIV_CLKCMU_VIPX2_BUS, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMU_CMUREF, "dout_clk_cmu_cmuref", "mout_clk_cmu_cmuref",
> +           CLK_CON_DIV_DIV_CLK_CMU_CMUREF, 0, 2),
> +};
> +
> +static const struct samsung_fixed_factor_clock top_ffactor_clks[] __initconst = {
> +       FFACTOR(CLK_DOUT_CMU_OTP, "dout_cmu_otp", "oscclk", 1, 7, 0),
> +};
> +
> +static const struct samsung_gate_clock top_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CMU_MIF_SWITCH, "gout_cmu_mif_switch",
> +            "mout_cmu_mif_switch", CLK_CON_GAT_CLKCMU_MIF_SWITCH,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_CMU_OTP_CLK, "gout_clk_cmu_otp_clk", "dout_cmu_otp",
> +            CLK_CON_GAT_CLK_CMU_OTP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_APM_BUS, "gout_cmu_apm_bus", "mout_cmu_apm_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_APM_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CAM_BUS, "gout_cmu_cam_bus", "mout_cmu_cam_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_CAM_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CIS_CLK0, "gout_cmu_cis_clk0", "mout_cmu_cis_clk0",
> +            CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CIS_CLK1, "gout_cmu_cis_clk1", "mout_cmu_cis_clk1",
> +            CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CIS_CLK2, "gout_cmu_cis_clk2", "mout_cmu_cis_clk2",
> +            CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CIS_CLK3, "gout_cmu_cis_clk3", "mout_cmu_cis_clk3",
> +            CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CORE_BUS, "gout_cmu_core_bus", "mout_cmu_core_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_CORE_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CORE_CCI, "gout_cmu_core_cci", "mout_cmu_core_cci",
> +            CLK_CON_GAT_GATE_CLKCMU_CORE_CCI, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CORE_G3D, "gout_cmu_core_g3d", "mout_cmu_core_g3d",
> +            CLK_CON_GAT_GATE_CLKCMU_CORE_G3D, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CPUCL0_DBG, "gout_cmu_cpucl0_dbg", "mout_cmu_cpucl0_dbg",
> +            CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CPUCL0_SWITCH, "gout_cmu_cpucl0_switch", "mout_cmu_cpucl0_switch",
> +            CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_CPUCL1_SWITCH, "gout_cmu_cpucl1_switch", "mout_cmu_cpucl1_switch",
> +            CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_DISPAUD_AUD, "gout_cmu_dispaud_aud", "mout_cmu_dispaud_aud",
> +            CLK_CON_GAT_GATE_CLKCMU_DISPAUD_AUD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_DISPAUD_CPU, "gout_cmu_dispaud_cpu", "mout_cmu_dispaud_cpu",
> +            CLK_CON_GAT_GATE_CLKCMU_DISPAUD_CPU, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_DISPAUD_DISP, "gout_cmu_dispaud_disp", "mout_cmu_dispaud_disp",
> +            CLK_CON_GAT_GATE_CLKCMU_DISPAUD_DISP, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_FSYS_BUS, "gout_cmu_fsys_bus", "mout_cmu_fsys_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_FSYS_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_FSYS_MMC_CARD, "gout_cmu_fsys_mmc_card", "mout_cmu_fsys_mmc_card",
> +            CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_CARD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_FSYS_MMC_EMBD, "gout_cmu_fsys_mmc_embd", "mout_cmu_fsys_mmc_embd",
> +            CLK_CON_GAT_GATE_CLKCMU_FSYS_MMC_EMBD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_FSYS_UFS_EMBD, "gout_cmu_fsys_ufs_embd", "mout_cmu_fsys_ufs_embd",
> +            CLK_CON_GAT_GATE_CLKCMU_FSYS_UFS_EMBD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_G2D_G2D, "gout_cmu_g2d_g2d", "mout_cmu_g2d_g2d",
> +            CLK_CON_GAT_GATE_CLKCMU_G2D_G2D, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_G2D_MSCL, "gout_cmu_g2d_mscl", "mout_cmu_g2d_mscl",
> +            CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_G3D_SWITCH, "gout_cmu_g3d_switch", "mout_cmu_g3d_switch",
> +            CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_HPM, "gout_cmu_hpm", "mout_cmu_hpm",
> +            CLK_CON_GAT_GATE_CLKCMU_HPM, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_ISP_BUS, "gout_cmu_isp_bus", "mout_cmu_isp_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_ISP_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_ISP_GDC, "gout_cmu_isp_gdc", "mout_cmu_isp_gdc",
> +            CLK_CON_GAT_GATE_CLKCMU_ISP_GDC, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_ISP_VRA, "gout_cmu_isp_vra", "mout_cmu_isp_vra",
> +            CLK_CON_GAT_GATE_CLKCMU_ISP_VRA, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_MFC_MFC, "gout_cmu_mfc_mfc", "mout_cmu_mfc_mfc",
> +            CLK_CON_GAT_GATE_CLKCMU_MFC_MFC, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_MFC_WFD, "gout_cmu_mfc_wfd", "mout_cmu_mfc_wfd",
> +            CLK_CON_GAT_GATE_CLKCMU_MFC_WFD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_MIF_BUSP, "gout_cmu_mif_busp", "mout_cmu_mif_busp",
> +            CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_MODEM_SHARED0, "gout_cmu_modem_shared0", "dout_cmu_shared0_div2",
> +            CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED0, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_MODEM_SHARED1, "gout_cmu_modem_shared1", "dout_cmu_shared1_div2",
> +            CLK_CON_GAT_GATE_CLKCMU_MODEM_SHARED1, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_PERI_BUS, "gout_cmu_peri_bus", "mout_cmu_peri_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_PERI_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_PERI_IP, "gout_cmu_peri_ip", "mout_cmu_peri_ip",
> +            CLK_CON_GAT_GATE_CLKCMU_PERI_IP, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_PERI_UART, "gout_cmu_peri_uart", "mout_cmu_peri_uart",
> +            CLK_CON_GAT_GATE_CLKCMU_PERI_UART, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_USB_BUS, "gout_cmu_usb_bus", "mout_cmu_usb_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_USB_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_USB_DPGTC, "gout_cmu_usb_dpgtc", "mout_cmu_usb_dpgtc",
> +            CLK_CON_GAT_GATE_CLKCMU_USB_DPGTC, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_USB_USB30DRD, "gout_cmu_usb_usb30drd", "mout_cmu_usb_usb30drd",
> +            CLK_CON_GAT_GATE_CLKCMU_USB_USB30DRD, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_VIPX1_BUS, "gout_cmu_vipx1_bus", "mout_cmu_vipx1_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_VIPX1_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CMU_VIPX2_BUS, "gout_cmu_vipx2_bus", "mout_cmu_vipx2_bus",
> +            CLK_CON_GAT_GATE_CLKCMU_VIPX2_BUS, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info top_cmu_info __initconst = {
> +       .pll_clks               = top_pll_clks,
> +       .nr_pll_clks            = ARRAY_SIZE(top_pll_clks),
> +       .mux_clks               = top_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(top_mux_clks),
> +       .div_clks               = top_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(top_div_clks),
> +       .fixed_factor_clks      = top_ffactor_clks,
> +       .nr_fixed_factor_clks   = ARRAY_SIZE(top_ffactor_clks),
> +       .gate_clks              = top_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(top_gate_clks),
> +       .fixed_clks             = top_fixed_clks,
> +       .nr_fixed_clks          = ARRAY_SIZE(top_fixed_clks),
> +       .nr_clk_ids             = CLKS_NR_TOP,
> +       .clk_regs               = top_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(top_clk_regs),
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_TOP_CONTROLLER_OPTION,
> +};
> +
> +static void __init exynos9610_cmu_top_init(struct device_node *np)
> +{
> +       exynos_arm64_register_cmu(NULL, np, &top_cmu_info);
> +}
> +
> +/* Register CMU_TOP early, as it's a dependency for other early domains */
> +CLK_OF_DECLARE(exynos9610_cmu_top, "samsung,exynos9610-cmu-top",
> +              exynos9610_cmu_top_init);
> +
> +static const unsigned long drcg_memclk_sysreg[] __initconst = {
> +       EXYNOS9610_DRCG_EN_OFFSET,
> +       EXYNOS9610_MEMCLK_OFFSET,
> +};
> +
> +static const unsigned long drcg_alt_memclk_sysreg[] __initconst = {
> +       EXYNOS9610_MEMCLK_OFFSET,
> +       EXYNOS9610_ALT_DRCG_EN_OFFSET,
> +};
> +
> +/* CMU_CPUCL0 */
> +#define PLL_LOCKTIME_PLL_CPUCL0                                        0x0000
> +#define PLL_CON0_MUX_CLKCMU_CPUCL0_DBG_USER                    0x0100
> +#define PLL_CON2_MUX_CLKCMU_CPUCL0_DBG_USER                    0x0108
> +#define PLL_CON0_MUX_CLKCMU_CPUCL0_SWITCH_USER                 0x0120
> +#define PLL_CON2_MUX_CLKCMU_CPUCL0_SWITCH_USER                 0x0128
> +#define PLL_CON0_PLL_CPUCL0                                    0x0140
> +#define CMU_CMU_CPUCL0_CONTROLLER_OPTION                       0x0800
> +#define CMU_EMBEDDED_CMU_CPUCL0_CONTROLLER_OPTION              0x0804
> +#define CLK_CON_MUX_MUX_CLK_CPUCL0_PLL                         0x1000
> +#define CLK_CON_DIV_DIV_CLK_CLUSTER0_ACLK                      0x1800
> +#define CLK_CON_DIV_DIV_CLK_CLUSTER0_CNTCLK                    0x1804
> +#define CLK_CON_DIV_DIV_CLK_CLUSTER0_PCLKDBG                   0x1808
> +#define CLK_CON_DIV_DIV_CLK_CPUCL0_CMUREF                      0x180c
> +#define CLK_CON_DIV_DIV_CLK_CPUCL0_CPU                         0x1810
> +#define CLK_CON_DIV_DIV_CLK_CPUCL0_PCLK                                0x1814
> +#define CLK_CON_GAT_CLK_CPUCL0_CMU_PCLK                                0x2000
> +#define CLK_CON_GAT_CLK_CPUCL0_HPM_TARGETCLK_C                 0x2004
> +#define CLK_CON_GAT_CLK_CPUCL0_OSCCLK_CLK                      0x2008
> +#define CLK_CON_GAT_GATE_CLK_CLUSTER0_CPU                      0x2010
> +#define CLK_CON_GAT_GOUT_CPUCL0_ADM_APB_G_CSSYS_CORE_PCLKM     0x2014
> +#define CLK_CON_GAT_GOUT_CPUCL0_ADS_AHB_G_CSSYS_FSYS_HCLKS     0x2018
> +#define CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_CSSYS_CPUCL1_PCLKS   0x201c
> +#define CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_P8Q_PCLKS            0x2020
> +#define CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL0_PCLKM  0x2024
> +#define CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL1_PCLKM  0x2028
> +#define CLK_CON_GAT_GOUT_CPUCL0_BUSIF_HPMCPUCL0_PCLK           0x202c
> +#define CLK_CON_GAT_GOUT_CPUCL0_CSSYS_DBG_PCLKDBG              0x2030
> +#define CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL0_PCLK            0x2034
> +#define CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL1_PCLK            0x2038
> +#define CLK_CON_GAT_GOUT_CPUCL0_LHM_AXI_P_CPUCL0_CLK           0x203c
> +#define CLK_CON_GAT_GOUT_CPUCL0_LHS_AXI_D_CSSYS_CLK            0x2040
> +#define CLK_CON_GAT_GOUT_CPUCL0_DBG_CLK                                0x2044
> +#define CLK_CON_GAT_GOUT_CPUCL0_PCLK_CLK                       0x2048
> +#define CLK_CON_GAT_GOUT_CPUCL0_SECJTAG_CLK                    0x204c
> +#define CLK_CON_GAT_GOUT_CPUCL0_SYSREG_PCLK                    0x2050
> +
> +static const unsigned long cpucl0_clk_regs[] __initconst = {
> +       PLL_LOCKTIME_PLL_CPUCL0,
> +       PLL_CON0_MUX_CLKCMU_CPUCL0_DBG_USER,
> +       PLL_CON2_MUX_CLKCMU_CPUCL0_DBG_USER,
> +       PLL_CON0_MUX_CLKCMU_CPUCL0_SWITCH_USER,
> +       PLL_CON2_MUX_CLKCMU_CPUCL0_SWITCH_USER,
> +       PLL_CON0_PLL_CPUCL0,
> +       CMU_CMU_CPUCL0_CONTROLLER_OPTION,
> +       CMU_EMBEDDED_CMU_CPUCL0_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLK_CPUCL0_PLL,
> +       CLK_CON_DIV_DIV_CLK_CLUSTER0_ACLK,
> +       CLK_CON_DIV_DIV_CLK_CLUSTER0_CNTCLK,
> +       CLK_CON_DIV_DIV_CLK_CLUSTER0_PCLKDBG,
> +       CLK_CON_DIV_DIV_CLK_CPUCL0_CMUREF,
> +       CLK_CON_DIV_DIV_CLK_CPUCL0_CPU,
> +       CLK_CON_DIV_DIV_CLK_CPUCL0_PCLK,
> +       CLK_CON_GAT_CLK_CPUCL0_CMU_PCLK,
> +       CLK_CON_GAT_CLK_CPUCL0_HPM_TARGETCLK_C,
> +       CLK_CON_GAT_CLK_CPUCL0_OSCCLK_CLK,
> +       CLK_CON_GAT_GATE_CLK_CLUSTER0_CPU,
> +       CLK_CON_GAT_GOUT_CPUCL0_ADM_APB_G_CSSYS_CORE_PCLKM,
> +       CLK_CON_GAT_GOUT_CPUCL0_ADS_AHB_G_CSSYS_FSYS_HCLKS,
> +       CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_CSSYS_CPUCL1_PCLKS,
> +       CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_P8Q_PCLKS,
> +       CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL0_PCLKM,
> +       CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL1_PCLKM,
> +       CLK_CON_GAT_GOUT_CPUCL0_BUSIF_HPMCPUCL0_PCLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_CSSYS_DBG_PCLKDBG,
> +       CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL0_PCLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL1_PCLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_LHM_AXI_P_CPUCL0_CLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_LHS_AXI_D_CSSYS_CLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_DBG_CLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_PCLK_CLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_SECJTAG_CLK,
> +       CLK_CON_GAT_GOUT_CPUCL0_SYSREG_PCLK,
> +};
> +
> +static const struct samsung_pll_rate_table pll_cpucl0_rate_table[] __initconst = {
> +       PLL_35XX_RATE(26 * MHZ, 1049750000U, 323, 4, 1),
> +       PLL_35XX_RATE(26 * MHZ, 1449500000U, 223, 4, 0),
> +       PLL_35XX_RATE(26 * MHZ, 1850333333U, 427, 6, 0),
> +       PLL_35XX_RATE(26 * MHZ, 300083333U, 277, 6, 2),
> +       PLL_35XX_RATE(26 * MHZ, 600166666U, 277, 6, 1),
> +};
> +
> +static const struct samsung_pll_clock cpucl0_pll_clks[] __initconst = {
> +       PLL(pll_1051x, CLK_FOUT_CPUCL0_PLL, "fout_cpucl0_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_CPUCL0, PLL_CON0_PLL_CPUCL0, pll_cpucl0_rate_table),
> +};
> +
> +PNAME(mout_pll_cpucl0_dbg_user_p)      = { "oscclk",
> +                                           "dout_cmu_cpucl0_dbg" };
> +PNAME(mout_pll_cpucl0_switch_user_p)   = { "oscclk",
> +                                           "dout_cmu_cpucl0_switch" };
> +PNAME(mout_clk_cpucl0_pll_p)           = { "fout_cpucl0_pll",
> +                                           "mout_pll_cpucl0_switch_user" };
> +
> +static const struct samsung_mux_clock cpucl0_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_CPUCL0_DBG_USER, "mout_pll_cpucl0_dbg_user", mout_pll_cpucl0_dbg_user_p,
> +           PLL_CON0_MUX_CLKCMU_CPUCL0_DBG_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_CPUCL0_SWITCH_USER, "mout_pll_cpucl0_switch_user",
> +           mout_pll_cpucl0_switch_user_p, PLL_CON0_MUX_CLKCMU_CPUCL0_SWITCH_USER, 4, 1),
> +       MUX(CLK_MOUT_CLK_CPUCL0_PLL, "mout_clk_cpucl0_pll", mout_clk_cpucl0_pll_p,
> +           CLK_CON_MUX_MUX_CLK_CPUCL0_PLL, 0, 1),
> +};
> +
> +static const struct samsung_div_clock cpucl0_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_CLUSTER0_ACLK, "dout_clk_cluster0_aclk", "gout_clk_cluster0_cpu",
> +           CLK_CON_DIV_DIV_CLK_CLUSTER0_ACLK, 0, 4),
> +       DIV(CLK_DOUT_CLK_CLUSTER0_CNTCLK, "dout_clk_cluster0_cntclk", "gout_clk_cluster0_cpu",
> +           CLK_CON_DIV_DIV_CLK_CLUSTER0_CNTCLK, 0, 4),
> +       DIV(CLK_DOUT_CLK_CLUSTER0_PCLKDBG, "dout_clk_cluster0_pclkdbg", "gout_clk_cluster0_cpu",
> +           CLK_CON_DIV_DIV_CLK_CLUSTER0_PCLKDBG, 0, 4),
> +       DIV(CLK_DOUT_CLK_CPUCL0_CMUREF, "dout_clk_cpucl0_cmuref", "dout_clk_cpucl0_cpu",
> +           CLK_CON_DIV_DIV_CLK_CPUCL0_CMUREF, 0, 3),
> +       DIV(CLK_DOUT_CLK_CPUCL0_CPU, "dout_clk_cpucl0_cpu", "mout_clk_cpucl0_pll",
> +           CLK_CON_DIV_DIV_CLK_CPUCL0_CPU, 0, 0),
> +       DIV(CLK_DOUT_CLK_CPUCL0_PCLK, "dout_clk_cpucl0_pclk", "dout_clk_cpucl0_cpu",
> +           CLK_CON_DIV_DIV_CLK_CPUCL0_PCLK, 0, 4),
> +};
> +
> +static const struct samsung_gate_clock cpucl0_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_CPUCL0_CMU_PCLK, "gout_clk_cpucl0_cmu_pclk",
> +            "dout_clk_cpucl0_pclk", CLK_CON_GAT_CLK_CPUCL0_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_CPUCL0_HPM_TARGETCLK_C, "gout_clk_cpucl0_hpm_targetclk_c",
> +            "dout_cmu_hpm", CLK_CON_GAT_CLK_CPUCL0_HPM_TARGETCLK_C, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_CPUCL0_OSCCLK_CLK, "gout_clk_cpucl0_oscclk_clk",
> +            "oscclk", CLK_CON_GAT_CLK_CPUCL0_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_CLUSTER0_CPU, "gout_clk_cluster0_cpu",
> +            "dout_clk_cpucl0_cpu", CLK_CON_GAT_GATE_CLK_CLUSTER0_CPU, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_ADM_APB_G_CSSYS_CORE_PCLKM, "gout_cpucl0_adm_apb_g_cssys_core_pclkm",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_ADM_APB_G_CSSYS_CORE_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_ADS_AHB_G_CSSYS_FSYS_HCLKS, "gout_cpucl0_ads_ahb_g_cssys_fsys_hclks",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_ADS_AHB_G_CSSYS_FSYS_HCLKS,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_ADS_APB_G_CSSYS_CPUCL1_PCLKS,
> +            "gout_cpucl0_ads_apb_g_cssys_cpucl1_pclks", "mout_pll_cpucl0_dbg_user",
> +            CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_CSSYS_CPUCL1_PCLKS, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_ADS_APB_G_P8Q_PCLKS, "gout_cpucl0_ads_apb_g_p8q_pclks",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_ADS_APB_G_P8Q_PCLKS,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL0_PCLKM,
> +            "gout_cpucl0_ad_apb_p_dump_pc_cpucl0_pclkm", "mout_pll_cpucl0_dbg_user",
> +            CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL0_PCLKM, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL1_PCLKM,
> +            "gout_cpucl0_ad_apb_p_dump_pc_cpucl1_pclkm", "mout_pll_cpucl0_dbg_user",
> +            CLK_CON_GAT_GOUT_CPUCL0_AD_APB_P_DUMP_PC_CPUCL1_PCLKM, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_BUSIF_HPMCPUCL0_PCLK, "gout_cpucl0_busif_hpmcpucl0_pclk",
> +            "dout_clk_cpucl0_pclk", CLK_CON_GAT_GOUT_CPUCL0_BUSIF_HPMCPUCL0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_CSSYS_DBG_PCLKDBG, "gout_cpucl0_cssys_dbg_pclkdbg",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_CSSYS_DBG_PCLKDBG,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_DUMP_PC_CPUCL0_PCLK, "gout_cpucl0_dump_pc_cpucl0_pclk",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_DUMP_PC_CPUCL1_PCLK, "gout_cpucl0_dump_pc_cpucl1_pclk",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_DUMP_PC_CPUCL1_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_LHM_AXI_P_CPUCL0_CLK, "gout_cpucl0_lhm_axi_p_cpucl0_clk",
> +            "dout_clk_cpucl0_pclk", CLK_CON_GAT_GOUT_CPUCL0_LHM_AXI_P_CPUCL0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_LHS_AXI_D_CSSYS_CLK, "gout_cpucl0_lhs_axi_d_cssys_clk",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_LHS_AXI_D_CSSYS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_DBG_CLK, "gout_cpucl0_dbg_clk",
> +            "mout_pll_cpucl0_dbg_user", CLK_CON_GAT_GOUT_CPUCL0_DBG_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_PCLK_CLK, "gout_cpucl0_pclk_clk",
> +            "dout_clk_cpucl0_pclk", CLK_CON_GAT_GOUT_CPUCL0_PCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_SECJTAG_CLK, "gout_cpucl0_secjtag_clk", "mout_pll_cpucl0_dbg_user",
> +            CLK_CON_GAT_GOUT_CPUCL0_SECJTAG_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CPUCL0_SYSREG_PCLK, "gout_cpucl0_sysreg_pclk",
> +            "dout_clk_cpucl0_pclk", CLK_CON_GAT_GOUT_CPUCL0_SYSREG_PCLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info cpucl0_cmu_info __initconst = {
> +       .pll_clks               = cpucl0_pll_clks,
> +       .nr_pll_clks            = ARRAY_SIZE(cpucl0_pll_clks),
> +       .mux_clks               = cpucl0_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(cpucl0_mux_clks),
> +       .div_clks               = cpucl0_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(cpucl0_div_clks),
> +       .gate_clks              = cpucl0_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(cpucl0_gate_clks),
> +       .nr_clk_ids             = CLKS_NR_CPUCL0,
> +       .clk_regs               = cpucl0_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(cpucl0_clk_regs),
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_CPUCL0_CONTROLLER_OPTION,
> +};
> +
> +static void __init exynos9610_cmu_cpucl0_init(struct device_node *np)
> +{
> +       exynos_arm64_register_cmu(NULL, np, &cpucl0_cmu_info);
> +}
> +
> +CLK_OF_DECLARE(exynos9610_cmu_cpucl0, "samsung,exynos9610-cmu-cpucl0",
> +              exynos9610_cmu_cpucl0_init);
> +
> +/* CMU_PERI */
> +#define PLL_CON0_MUX_CLKCMU_PERI_BUS_USER                      0x0100
> +#define PLL_CON2_MUX_CLKCMU_PERI_BUS_USER                      0x0108
> +#define PLL_CON0_MUX_CLKCMU_PERI_IP_USER                       0x0120
> +#define PLL_CON2_MUX_CLKCMU_PERI_IP_USER                       0x0128
> +#define PLL_CON0_MUX_CLKCMU_PERI_UART_USER                     0x0140
> +#define PLL_CON2_MUX_CLKCMU_PERI_UART_USER                     0x0148
> +#define CMU_CMU_PERI_CONTROLLER_OPTION                         0x0800
> +#define CLK_CON_DIV_DIV_CLK_PERI_I2C                           0x1800
> +#define CLK_CON_DIV_DIV_CLK_PERI_SPI0                          0x1804
> +#define CLK_CON_DIV_DIV_CLK_PERI_SPI1                          0x1808
> +#define CLK_CON_DIV_DIV_CLK_PERI_SPI2                          0x180c
> +#define CLK_CON_DIV_DIV_CLK_PERI_USI_I2C                       0x1814
> +#define CLK_CON_DIV_DIV_CLK_PERI_USI_USI                       0x1818
> +#define CLK_CON_GAT_CLK_PERI_CMU_PCLK                          0x2000
> +#define CLK_CON_GAT_CLK_PERI_OSCCLK_CLK                                0x2004
> +#define CLK_CON_GAT_GATE_CLK_PERI_I2C                          0x2008
> +#define CLK_CON_GAT_GATE_CLK_PERI_SPI0                         0x200c
> +#define CLK_CON_GAT_GATE_CLK_PERI_SPI1                         0x2010
> +#define CLK_CON_GAT_GATE_CLK_PERI_SPI2                         0x2014
> +#define CLK_CON_GAT_GATE_CLK_PERI_USI_I2C                      0x2018
> +#define CLK_CON_GAT_GATE_CLK_PERI_USI_USI                      0x201c
> +#define CLK_CON_GAT_GOUT_PERI_AXI2AHB_MSD32_ACLK               0x2020
> +#define CLK_CON_GAT_GOUT_PERI_BUSIF_TMU_PCLK                   0x2024
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_0_IPCLK                   0x2028
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_0_PCLK                    0x202c
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_1_IPCLK                   0x2030
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_1_PCLK                    0x2034
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_2_IPCLK                   0x2038
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_2_PCLK                    0x203c
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_3_IPCLK                   0x2040
> +#define CLK_CON_GAT_GOUT_PERI_CAMI2C_3_PCLK                    0x2044
> +#define CLK_CON_GAT_GOUT_PERI_I2C_0_PCLK                       0x204c
> +#define CLK_CON_GAT_GOUT_PERI_I2C_1_PCLK                       0x2050
> +#define CLK_CON_GAT_GOUT_PERI_I2C_2_PCLK                       0x2054
> +#define CLK_CON_GAT_GOUT_PERI_I2C_3_PCLK                       0x2058
> +#define CLK_CON_GAT_GOUT_PERI_I2C_4_PCLK                       0x205c
> +#define CLK_CON_GAT_GOUT_PERI_I2C_5_PCLK                       0x2060
> +#define CLK_CON_GAT_GOUT_PERI_I2C_6_PCLK                       0x2064
> +#define CLK_CON_GAT_GOUT_PERI_GPIO_PCLK                                0x2048
> +#define CLK_CON_GAT_GOUT_PERI_LHM_AXI_P_CLK                    0x2068
> +#define CLK_CON_GAT_GOUT_PERI_MCT_PCLK                         0x206c
> +#define CLK_CON_GAT_GOUT_PERI_OTP_CON_TOP_PCLK                 0x2070
> +#define CLK_CON_GAT_GOUT_PERI_PWM_MOTOR_PCLK_S0                        0x2074
> +#define CLK_CON_GAT_GOUT_PERI_BUS_CLK                          0x2078
> +#define CLK_CON_GAT_GOUT_PERI_I2C_CLK                          0x207c
> +#define CLK_CON_GAT_GOUT_PERI_SPI_0_CLK                                0x2080
> +#define CLK_CON_GAT_GOUT_PERI_SPI_1_CLK                                0x2084
> +#define CLK_CON_GAT_GOUT_PERI_SPI_2_CLK                                0x2088
> +#define CLK_CON_GAT_GOUT_PERI_UART_CLK                         0x208c
> +#define CLK_CON_GAT_GOUT_PERI_USI00_I2C_CLK                    0x2090
> +#define CLK_CON_GAT_GOUT_PERI_USI00_USI_CLK                    0x2094
> +#define CLK_CON_GAT_GOUT_PERI_SPI_0_IPCLK                      0x2098
> +#define CLK_CON_GAT_GOUT_PERI_SPI_0_PCLK                       0x209c
> +#define CLK_CON_GAT_GOUT_PERI_SPI_1_IPCLK                      0x20a0
> +#define CLK_CON_GAT_GOUT_PERI_SPI_1_PCLK                       0x20a4
> +#define CLK_CON_GAT_GOUT_PERI_SPI_2_IPCLK                      0x20a8
> +#define CLK_CON_GAT_GOUT_PERI_SPI_2_PCLK                       0x20ac
> +#define CLK_CON_GAT_GOUT_PERI_SYSREG_PCLK                      0x20b0
> +#define CLK_CON_GAT_GOUT_PERI_UART_IPCLK                       0x20b4
> +#define CLK_CON_GAT_GOUT_PERI_UART_PCLK                                0x20b8
> +#define CLK_CON_GAT_GOUT_PERI_USI00_I2C_IPCLK                  0x20bc
> +#define CLK_CON_GAT_GOUT_PERI_USI00_I2C_PCLK                   0x20c0
> +#define CLK_CON_GAT_GOUT_PERI_USI00_USI_IPCLK                  0x20c4
> +#define CLK_CON_GAT_GOUT_PERI_USI00_USI_PCLK                   0x20c8
> +#define CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER0_PCLK                        0x20cc
> +#define CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER1_PCLK                        0x20d0
> +
> +static const unsigned long peri_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_PERI_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_PERI_BUS_USER,
> +       PLL_CON0_MUX_CLKCMU_PERI_IP_USER,
> +       PLL_CON2_MUX_CLKCMU_PERI_IP_USER,
> +       PLL_CON0_MUX_CLKCMU_PERI_UART_USER,
> +       PLL_CON2_MUX_CLKCMU_PERI_UART_USER,
> +       CMU_CMU_PERI_CONTROLLER_OPTION,
> +       CLK_CON_DIV_DIV_CLK_PERI_I2C,
> +       CLK_CON_DIV_DIV_CLK_PERI_SPI0,
> +       CLK_CON_DIV_DIV_CLK_PERI_SPI1,
> +       CLK_CON_DIV_DIV_CLK_PERI_SPI2,
> +       CLK_CON_DIV_DIV_CLK_PERI_USI_I2C,
> +       CLK_CON_DIV_DIV_CLK_PERI_USI_USI,
> +       CLK_CON_GAT_CLK_PERI_CMU_PCLK,
> +       CLK_CON_GAT_CLK_PERI_OSCCLK_CLK,
> +       CLK_CON_GAT_GATE_CLK_PERI_I2C,
> +       CLK_CON_GAT_GATE_CLK_PERI_SPI0,
> +       CLK_CON_GAT_GATE_CLK_PERI_SPI1,
> +       CLK_CON_GAT_GATE_CLK_PERI_SPI2,
> +       CLK_CON_GAT_GATE_CLK_PERI_USI_I2C,
> +       CLK_CON_GAT_GATE_CLK_PERI_USI_USI,
> +       CLK_CON_GAT_GOUT_PERI_AXI2AHB_MSD32_ACLK,
> +       CLK_CON_GAT_GOUT_PERI_BUSIF_TMU_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_0_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_0_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_1_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_1_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_2_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_2_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_3_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_CAMI2C_3_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_0_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_1_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_2_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_3_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_4_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_5_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_6_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_GPIO_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_PERI_MCT_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_OTP_CON_TOP_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_PWM_MOTOR_PCLK_S0,
> +       CLK_CON_GAT_GOUT_PERI_BUS_CLK,
> +       CLK_CON_GAT_GOUT_PERI_I2C_CLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_0_CLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_1_CLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_2_CLK,
> +       CLK_CON_GAT_GOUT_PERI_UART_CLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_I2C_CLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_USI_CLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_0_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_0_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_1_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_1_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_2_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_SPI_2_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_UART_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_UART_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_I2C_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_I2C_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_USI_IPCLK,
> +       CLK_CON_GAT_GOUT_PERI_USI00_USI_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER0_PCLK,
> +       CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER1_PCLK,
> +};
> +
> +PNAME(mout_pll_peri_bus_user_p)                = { "oscclk", "dout_cmu_peri_bus" };
> +PNAME(mout_pll_peri_ip_user_p)         = { "oscclk", "dout_cmu_peri_ip" };
> +PNAME(mout_pll_peri_uart_user_p)       = { "oscclk", "dout_cmu_peri_uart" };
> +
> +static const struct samsung_mux_clock peri_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_PERI_BUS_USER, "mout_pll_peri_bus_user", mout_pll_peri_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_PERI_BUS_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_PERI_IP_USER, "mout_pll_peri_ip_user", mout_pll_peri_ip_user_p,
> +           PLL_CON0_MUX_CLKCMU_PERI_IP_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_PERI_UART_USER, "mout_pll_peri_uart_user", mout_pll_peri_uart_user_p,
> +           PLL_CON0_MUX_CLKCMU_PERI_UART_USER, 4, 1),
> +};
> +
> +static const struct samsung_div_clock peri_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_PERI_I2C, "dout_clk_peri_i2c", "gout_clk_peri_i2c",
> +           CLK_CON_DIV_DIV_CLK_PERI_I2C, 0, 8),
> +       DIV(CLK_DOUT_CLK_PERI_SPI0, "dout_clk_peri_spi0", "gout_clk_peri_spi0",
> +           CLK_CON_DIV_DIV_CLK_PERI_SPI0, 0, 8),
> +       DIV(CLK_DOUT_CLK_PERI_SPI1, "dout_clk_peri_spi1", "gout_clk_peri_spi1",
> +           CLK_CON_DIV_DIV_CLK_PERI_SPI1, 0, 8),
> +       DIV(CLK_DOUT_CLK_PERI_SPI2, "dout_clk_peri_spi2", "gout_clk_peri_spi2",
> +           CLK_CON_DIV_DIV_CLK_PERI_SPI2, 0, 8),
> +       DIV(CLK_DOUT_CLK_PERI_USI_I2C, "dout_clk_peri_usi_i2c", "gout_clk_peri_usi_i2c",
> +           CLK_CON_DIV_DIV_CLK_PERI_USI_I2C, 0, 4),
> +       DIV(CLK_DOUT_CLK_PERI_USI_USI, "dout_clk_peri_usi_usi", "gout_clk_peri_usi_usi",
> +           CLK_CON_DIV_DIV_CLK_PERI_USI_USI, 0, 8),
> +};
> +
> +static const struct samsung_gate_clock peri_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_PERI_I2C, "gout_clk_peri_i2c", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_I2C, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_PERI_SPI0, "gout_clk_peri_spi0", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_SPI0, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_PERI_SPI1, "gout_clk_peri_spi1", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_SPI1, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_PERI_SPI2, "gout_clk_peri_spi2", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_SPI2, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_PERI_USI_I2C, "gout_clk_peri_usi_i2c", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_USI_I2C, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_PERI_USI_USI, "gout_clk_peri_usi_usi", "mout_pll_peri_ip_user",
> +            CLK_CON_GAT_GATE_CLK_PERI_USI_USI, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_AXI2AHB_MSD32_ACLK, "gout_peri_axi2ahb_msd32_aclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_AXI2AHB_MSD32_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_BUSIF_TMU_PCLK, "gout_peri_busif_tmu_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_BUSIF_TMU_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_0_IPCLK, "gout_peri_cami2c_0_ipclk",
> +            "dout_clk_peri_i2c", CLK_CON_GAT_GOUT_PERI_CAMI2C_0_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_0_PCLK, "gout_peri_cami2c_0_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_CAMI2C_0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_1_IPCLK, "gout_peri_cami2c_1_ipclk",
> +            "dout_clk_peri_i2c", CLK_CON_GAT_GOUT_PERI_CAMI2C_1_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_1_PCLK, "gout_peri_cami2c_1_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_CAMI2C_1_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_2_IPCLK, "gout_peri_cami2c_2_ipclk",
> +            "dout_clk_peri_i2c", CLK_CON_GAT_GOUT_PERI_CAMI2C_2_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_2_PCLK, "gout_peri_cami2c_2_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_CAMI2C_2_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_3_IPCLK, "gout_peri_cami2c_3_ipclk",
> +            "dout_clk_peri_i2c", CLK_CON_GAT_GOUT_PERI_CAMI2C_3_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_CAMI2C_3_PCLK, "gout_peri_cami2c_3_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_CAMI2C_3_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_0_PCLK, "gout_peri_i2c_0_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_0_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_1_PCLK, "gout_peri_i2c_1_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_1_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_2_PCLK, "gout_peri_i2c_2_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_2_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_3_PCLK, "gout_peri_i2c_3_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_3_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_4_PCLK, "gout_peri_i2c_4_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_4_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_5_PCLK, "gout_peri_i2c_5_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_5_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_6_PCLK, "gout_peri_i2c_6_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_I2C_6_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_GPIO_PCLK, "gout_peri_gpio_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_GPIO_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_LHM_AXI_P_CLK, "gout_peri_lhm_axi_p_clk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_LHM_AXI_P_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_MCT_PCLK, "gout_peri_mct_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_MCT_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_OTP_CON_TOP_PCLK, "gout_peri_otp_con_top_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_OTP_CON_TOP_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_PWM_MOTOR_PCLK_S0, "gout_peri_pwm_motor_pclk_s0",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_PWM_MOTOR_PCLK_S0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_BUS_CLK, "gout_peri_bus_clk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_BUS_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_I2C_CLK, "gout_peri_i2c_clk", "dout_clk_peri_i2c",
> +            CLK_CON_GAT_GOUT_PERI_I2C_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_0_CLK, "gout_peri_spi_0_clk", "dout_clk_peri_spi0",
> +            CLK_CON_GAT_GOUT_PERI_SPI_0_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_1_CLK, "gout_peri_spi_1_clk", "dout_clk_peri_spi1",
> +            CLK_CON_GAT_GOUT_PERI_SPI_1_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_2_CLK, "gout_peri_spi_2_clk", "dout_clk_peri_spi2",
> +            CLK_CON_GAT_GOUT_PERI_SPI_2_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_UART_CLK, "gout_peri_uart_clk", "mout_pll_peri_uart_user",
> +            CLK_CON_GAT_GOUT_PERI_UART_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_I2C_CLK, "gout_peri_usi00_i2c_clk",
> +            "dout_clk_peri_usi_i2c", CLK_CON_GAT_GOUT_PERI_USI00_I2C_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_USI_CLK, "gout_peri_usi00_usi_clk",
> +            "dout_clk_peri_usi_usi", CLK_CON_GAT_GOUT_PERI_USI00_USI_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_0_PCLK, "gout_peri_spi_0_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_SPI_0_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_0_IPCLK, "gout_peri_spi_0_ipclk", "dout_clk_peri_spi0",
> +            CLK_CON_GAT_GOUT_PERI_SPI_0_IPCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_1_PCLK, "gout_peri_spi_1_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_SPI_1_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_1_IPCLK, "gout_peri_spi_1_ipclk", "dout_clk_peri_spi1",
> +            CLK_CON_GAT_GOUT_PERI_SPI_1_IPCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_2_PCLK, "gout_peri_spi_2_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_SPI_2_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SPI_2_IPCLK, "gout_peri_spi_2_ipclk", "dout_clk_peri_spi2",
> +            CLK_CON_GAT_GOUT_PERI_SPI_2_IPCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_SYSREG_PCLK, "gout_peri_sysreg_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_UART_IPCLK, "gout_peri_uart_ipclk", "mout_pll_peri_uart_user",
> +            CLK_CON_GAT_GOUT_PERI_UART_IPCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_UART_PCLK, "gout_peri_uart_pclk", "mout_pll_peri_bus_user",
> +            CLK_CON_GAT_GOUT_PERI_UART_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_I2C_IPCLK, "gout_peri_usi00_i2c_ipclk",
> +            "dout_clk_peri_usi_i2c", CLK_CON_GAT_GOUT_PERI_USI00_I2C_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_I2C_PCLK, "gout_peri_usi00_i2c_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_USI00_I2C_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_USI_IPCLK, "gout_peri_usi00_usi_ipclk",
> +            "dout_clk_peri_usi_usi", CLK_CON_GAT_GOUT_PERI_USI00_USI_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_USI00_USI_PCLK, "gout_peri_usi00_usi_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_USI00_USI_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_WDT_CLUSTER0_PCLK, "gout_peri_wdt_cluster0_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_PERI_WDT_CLUSTER1_PCLK, "gout_peri_wdt_cluster1_pclk",
> +            "mout_pll_peri_bus_user", CLK_CON_GAT_GOUT_PERI_WDT_CLUSTER1_PCLK,
> +            21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info peri_cmu_info __initconst = {
> +       .mux_clks               = peri_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(peri_mux_clks),
> +       .div_clks               = peri_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(peri_div_clks),
> +       .gate_clks              = peri_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(peri_gate_clks),
> +       .clk_regs               = peri_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(peri_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_PERI,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_PERI_CONTROLLER_OPTION,
> +};
> +
> +static void __init exynos9610_cmu_peri_init(struct device_node *np)
> +{
> +       exynos_arm64_register_cmu(NULL, np, &peri_cmu_info);
> +}
> +
> +CLK_OF_DECLARE(exynos9610_cmu_peri, "samsung,exynos9610-cmu-peri",
> +              exynos9610_cmu_peri_init);
> +
> +/* CMU_APM */
> +#define PLL_CON0_MUX_CLKCMU_APM_BUS_USER               0x0100
> +#define PLL_CON2_MUX_CLKCMU_APM_BUS_USER               0x0108
> +#define PLL_CON0_MUX_DLL_USER                          0x0120
> +#define PLL_CON2_MUX_DLL_USER                          0x0128
> +#define CMU_CMU_APM_CONTROLLER_OPTION                  0x0800
> +#define CLK_CON_MUX_CLKCMU_SHUB_BUS                    0x1000
> +#define CLK_CON_MUX_CLK_APM_BUS                                0x1004
> +#define CLK_CON_DIV_CLKCMU_SHUB_BUS                    0x1800
> +#define CLK_CON_DIV_CLK_APM_BUS                                0x1804
> +#define CLK_CON_GAT_CLKCMU_CMGP_BUS                    0x2000
> +#define CLK_CON_GAT_CLK_APM_CMU_PCLK                   0x2004
> +#define CLK_CON_GAT_CLK_APM_OSCCLK_CLK                 0x2008
> +#define CLK_CON_GAT_CLK_APM_OSCCLK_RCO_CLK             0x200c
> +#define CLK_CON_GAT_GATE_CLKCMU_SHUB_BUS               0x2010
> +#define CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK     0x2014
> +#define CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK      0x2018
> +#define CLK_CON_GAT_GOUT_APM_APBIF_RTC_ALIVE_PCLK      0x201c
> +#define CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_ALIVE_PCLK  0x2020
> +#define CLK_CON_GAT_GOUT_APM_GREBEINTEGRATION_HCLK     0x2024
> +#define CLK_CON_GAT_GOUT_APM_INTMEM_ACLK               0x2028
> +#define CLK_CON_GAT_GOUT_APM_INTMEM_PCLK               0x202c
> +#define CLK_CON_GAT_GOUT_APM_LHM_AXI_P_GNSS_CLK                0x2030
> +#define CLK_CON_GAT_GOUT_APM_LHM_AXI_P_CLK             0x2034
> +#define CLK_CON_GAT_GOUT_APM_LHM_AXI_P_MODEM_CLK       0x2038
> +#define CLK_CON_GAT_GOUT_APM_LHM_AXI_P_SHUB_CLK                0x203c
> +#define CLK_CON_GAT_GOUT_APM_LHM_AXI_P_WLBT_CLK                0x2040
> +#define CLK_CON_GAT_GOUT_APM_LHS_AXI_D_CLK             0x2044
> +#define CLK_CON_GAT_GOUT_APM_LHS_AXI_LP_SHUB_CLK       0x2048
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_PCLK                0x204c
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_S_PCLK      0x2050
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_AP2GNSS_PCLK      0x2054
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_AP2SHUB_PCLK      0x2058
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_AP2WLBT_PCLK      0x205c
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_APM2AP_PCLK       0x2060
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_APM2CP_PCLK       0x2064
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_APM2GNSS_PCLK     0x2068
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_APM2SHUB_PCLK     0x206c
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_APM2WLBT_PCLK     0x2070
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_CP2GNSS_PCLK      0x2074
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_CP2SHUB_PCLK      0x2078
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_CP2WLBT_PCLK      0x207c
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2GNSS_PCLK    0x2080
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2WLBT_PCLK    0x2084
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2ABOX_PCLK    0x2088
> +#define CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2GNSS_PCLK    0x208c
> +#define CLK_CON_GAT_GOUT_APM_PEM_CLK                   0x2090
> +#define CLK_CON_GAT_GOUT_APM_PGEN_LITE_CLK             0x2094
> +#define CLK_CON_GAT_GOUT_APM_PMU_INTR_GEN_PCLK         0x2098
> +#define CLK_CON_GAT_GOUT_APM_BUS_CLK                   0x209c
> +#define CLK_CON_GAT_GOUT_APM_GREBE_CLK                 0x20a0
> +#define CLK_CON_GAT_GOUT_APM_SPEEDY_PCLK               0x20a4
> +#define CLK_CON_GAT_GOUT_APM_SYSREG_PCLK               0x20a8
> +#define CLK_CON_GAT_GOUT_APM_WDT_PCLK                  0x20ac
> +#define CLK_CON_GAT_GOUT_APM_XIU_DP_ACLK               0x20b0
> +
> +static const unsigned long apm_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_APM_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_APM_BUS_USER,
> +       PLL_CON0_MUX_DLL_USER,
> +       PLL_CON2_MUX_DLL_USER,
> +       CMU_CMU_APM_CONTROLLER_OPTION,
> +       CLK_CON_MUX_CLKCMU_SHUB_BUS,
> +       CLK_CON_MUX_CLK_APM_BUS,
> +       CLK_CON_DIV_CLKCMU_SHUB_BUS,
> +       CLK_CON_DIV_CLK_APM_BUS,
> +       CLK_CON_GAT_CLKCMU_CMGP_BUS,
> +       CLK_CON_GAT_CLK_APM_CMU_PCLK,
> +       CLK_CON_GAT_CLK_APM_OSCCLK_CLK,
> +       CLK_CON_GAT_CLK_APM_OSCCLK_RCO_CLK,
> +       CLK_CON_GAT_GATE_CLKCMU_SHUB_BUS,
> +       CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK,
> +       CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK,
> +       CLK_CON_GAT_GOUT_APM_APBIF_RTC_ALIVE_PCLK,
> +       CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_ALIVE_PCLK,
> +       CLK_CON_GAT_GOUT_APM_GREBEINTEGRATION_HCLK,
> +       CLK_CON_GAT_GOUT_APM_INTMEM_ACLK,
> +       CLK_CON_GAT_GOUT_APM_INTMEM_PCLK,
> +       CLK_CON_GAT_GOUT_APM_LHM_AXI_P_GNSS_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHM_AXI_P_MODEM_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHM_AXI_P_SHUB_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHM_AXI_P_WLBT_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHS_AXI_D_CLK,
> +       CLK_CON_GAT_GOUT_APM_LHS_AXI_LP_SHUB_CLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_S_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_AP2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_AP2SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_AP2WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_APM2AP_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_APM2CP_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_APM2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_APM2SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_APM2WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_CP2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_CP2SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_CP2WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2ABOX_PCLK,
> +       CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_APM_PEM_CLK,
> +       CLK_CON_GAT_GOUT_APM_PGEN_LITE_CLK,
> +       CLK_CON_GAT_GOUT_APM_PMU_INTR_GEN_PCLK,
> +       CLK_CON_GAT_GOUT_APM_BUS_CLK,
> +       CLK_CON_GAT_GOUT_APM_GREBE_CLK,
> +       CLK_CON_GAT_GOUT_APM_SPEEDY_PCLK,
> +       CLK_CON_GAT_GOUT_APM_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_APM_WDT_PCLK,
> +       CLK_CON_GAT_GOUT_APM_XIU_DP_ACLK,
> +};
> +
> +PNAME(mout_pll_apm_bus_user_p)         = { "oscclk", "dout_cmu_apm_bus" };
> +PNAME(mout_pll_dll_user_p)             = { "oscclk", "dll_dco" };
> +PNAME(mout_cmu_shub_bus_p)             = { "oscclk", "mout_pll_dll_user" };
> +PNAME(mout_clk_apm_bus_p)              = { "mout_pll_apm_bus_user", "dll_dco" };
> +
> +static const struct samsung_mux_clock apm_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_APM_BUS_USER, "mout_pll_apm_bus_user", mout_pll_apm_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_APM_BUS_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_DLL_USER, "mout_pll_dll_user", mout_pll_dll_user_p,
> +           PLL_CON0_MUX_DLL_USER, 4, 1),
> +       MUX(CLK_MOUT_CMU_SHUB_BUS, "mout_cmu_shub_bus", mout_cmu_shub_bus_p,
> +           CLK_CON_MUX_CLKCMU_SHUB_BUS, 0, 1),
> +       MUX(CLK_MOUT_CLK_APM_BUS, "mout_clk_apm_bus", mout_clk_apm_bus_p,
> +           CLK_CON_MUX_CLK_APM_BUS, 0, 1),
> +};
> +
> +static const struct samsung_div_clock apm_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CMU_SHUB_BUS, "dout_cmu_shub_bus", "gout_cmu_shub_bus",
> +           CLK_CON_DIV_CLKCMU_SHUB_BUS, 0, 3),
> +       DIV(CLK_DOUT_CLK_APM_BUS, "dout_clk_apm_bus", "mout_clk_apm_bus",
> +           CLK_CON_DIV_CLK_APM_BUS, 0, 3),
> +};
> +
> +static const struct samsung_gate_clock apm_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CMU_CMGP_BUS, "gout_cmu_cmgp_bus", "dout_clk_apm_bus",
> +            CLK_CON_GAT_CLKCMU_CMGP_BUS, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_APM_CMU_PCLK, "gout_clk_apm_cmu_pclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_CLK_APM_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_APM_OSCCLK_CLK, "gat_clk_apm_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_APM_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_APM_OSCCLK_RCO_CLK, "gat_clk_apm_oscclk_rco_clk", "oscclk",
> +            CLK_CON_GAT_CLK_APM_OSCCLK_RCO_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_APBIF_GPIO_ALIVE_PCLK, "gout_apm_apbif_gpio_alive_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_APBIF_PMU_ALIVE_PCLK, "gout_apm_apbif_pmu_alive_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_APBIF_RTC_ALIVE_PCLK, "gout_apm_apbif_rtc_alive_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_APBIF_RTC_ALIVE_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_APBIF_TOP_RTC_ALIVE_PCLK, "gout_apm_apbif_top_rtc_alive_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_ALIVE_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_GREBEINTEGRATION_HCLK, "gout_apm_grebeintegration_hclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_GREBEINTEGRATION_HCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_INTMEM_ACLK, "gout_apm_intmem_aclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_INTMEM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_INTMEM_PCLK, "gout_apm_intmem_pclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_INTMEM_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHM_AXI_P_GNSS_CLK, "gout_apm_lhm_axi_p_gnss_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHM_AXI_P_GNSS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHM_AXI_P_CLK, "gout_apm_lhm_axi_p_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHM_AXI_P_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHM_AXI_P_MODEM_CLK, "gout_apm_lhm_axi_p_modem_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHM_AXI_P_MODEM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHM_AXI_P_SHUB_CLK, "gout_apm_lhm_axi_p_shub_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHM_AXI_P_SHUB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHM_AXI_P_WLBT_CLK, "gout_apm_lhm_axi_p_wlbt_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHM_AXI_P_WLBT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHS_AXI_D_CLK, "gout_apm_lhs_axi_d_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHS_AXI_D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_LHS_AXI_LP_SHUB_CLK, "gout_apm_lhs_axi_lp_shub_clk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_LHS_AXI_LP_SHUB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_AP2CP_PCLK, "gout_apm_mailbox_ap2cp_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_AP2CP_S_PCLK, "gout_apm_mailbox_ap2cp_s_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_AP2CP_S_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_AP2GNSS_PCLK, "gout_apm_mailbox_ap2gnss_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_AP2GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_AP2SHUB_PCLK, "gout_apm_mailbox_ap2shub_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_AP2SHUB_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_AP2WLBT_PCLK, "gout_apm_mailbox_ap2wlbt_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_AP2WLBT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_APM2AP_PCLK, "gout_apm_mailbox_apm2ap_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_APM2AP_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_APM2CP_PCLK, "gout_apm_mailbox_apm2cp_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_APM2CP_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_APM2GNSS_PCLK, "gout_apm_mailbox_apm2gnss_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_APM2GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_APM2SHUB_PCLK, "gout_apm_mailbox_apm2shub_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_APM2SHUB_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_APM2WLBT_PCLK, "gout_apm_mailbox_apm2wlbt_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_APM2WLBT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_CP2GNSS_PCLK, "gout_apm_mailbox_cp2gnss_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_CP2GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_CP2SHUB_PCLK, "gout_apm_mailbox_cp2shub_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_CP2SHUB_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_CP2WLBT_PCLK, "gout_apm_mailbox_cp2wlbt_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_CP2WLBT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_SHUB2GNSS_PCLK, "gout_apm_mailbox_shub2gnss_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_SHUB2WLBT_PCLK, "gout_apm_mailbox_shub2wlbt_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_SHUB2WLBT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_WLBT2ABOX_PCLK, "gout_apm_mailbox_wlbt2abox_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2ABOX_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_MAILBOX_WLBT2GNSS_PCLK, "gout_apm_mailbox_wlbt2gnss_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_MAILBOX_WLBT2GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_APM_PEM_CLK, "gout_apm_pem_clk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_PEM_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_PGEN_LITE_CLK, "gout_apm_pgen_lite_clk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_PGEN_LITE_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_PMU_INTR_GEN_PCLK, "gout_apm_pmu_intr_gen_pclk",
> +            "dout_clk_apm_bus", CLK_CON_GAT_GOUT_APM_PMU_INTR_GEN_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_BUS_CLK, "gout_apm_bus_clk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_BUS_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_GREBE_CLK, "gout_apm_grebe_clk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_GREBE_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_SPEEDY_PCLK, "gout_apm_speedy_pclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_SPEEDY_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_SYSREG_PCLK, "gout_apm_sysreg_pclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_WDT_PCLK, "gout_apm_wdt_pclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_WDT_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_APM_XIU_DP_ACLK, "gout_apm_xiu_dp_aclk", "dout_clk_apm_bus",
> +            CLK_CON_GAT_GOUT_APM_XIU_DP_ACLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info apm_cmu_info __initconst = {
> +       .mux_clks               = apm_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(apm_mux_clks),
> +       .div_clks               = apm_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(apm_div_clks),
> +       .gate_clks              = apm_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(apm_gate_clks),
> +       .clk_regs               = apm_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(apm_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_APM,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_APM_CONTROLLER_OPTION,
> +};
> +
> +static void __init exynos9610_cmu_apm_init(struct device_node *np)
> +{
> +       exynos_arm64_register_cmu(NULL, np, &apm_cmu_info);
> +}
> +
> +/* Register APM early, as it's a dependency of CMU_CMGP */
> +CLK_OF_DECLARE(exynos9610_cmu_apm, "samsung,exynos9610-cmu-apm",
> +              exynos9610_cmu_apm_init);
> +
> +/* CMU_CAM */
> +#define PLL_CON0_MUX_CLKCMU_CAM_BUS_USER                       0x0100
> +#define PLL_CON2_MUX_CLKCMU_CAM_BUS_USER                       0x0108
> +#define CMU_CMU_CAM_CONTROLLER_OPTION                          0x0800
> +#define CLK_CON_DIV_DIV_CLK_CAM_BUSP                           0x1800
> +#define CLK_CON_GAT_CLK_CAM_CMU_PCLK                           0x2000
> +#define CLK_CON_GAT_CLK_CAM_OSCCLK_CLK                         0x2004
> +#define CLK_CON_GAT_GOUT_CAM_BUSD                              0x2008
> +#define CLK_CON_GAT_GOUT_CAM_BTM_ACLK                          0x200c
> +#define CLK_CON_GAT_GOUT_CAM_BTM_PCLK                          0x2010
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_3AA                 0x2014
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS0               0x2018
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS1               0x201c
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS2               0x2020
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS3               0x2024
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_DMA                 0x2028
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS0          0x202c
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS1          0x2030
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS2          0x2034
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS3          0x2038
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PAFSTAT_CORE                0x203c
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PPMU_CAM            0x2040
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_RDMA                        0x2044
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_SMMU_CAM            0x2048
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_XIU_D_CAM           0x204c
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM0      0x2050
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM1      0x2054
> +#define CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PPMU_CAM            0x2058
> +#define CLK_CON_GAT_GOUT_CAM_LHM_AXI_P_CLK                     0x205c
> +#define CLK_CON_GAT_GOUT_CAM_LHS_ACEL_D_CLK                    0x2060
> +#define CLK_CON_GAT_GOUT_CAM_LHS_ATB_CAMISP_CLK                        0x2064
> +#define CLK_CON_GAT_GOUT_CAM_BUSD_CLK                          0x2068
> +#define CLK_CON_GAT_GOUT_CAM_BUSP_CLK                          0x206c
> +#define CLK_CON_GAT_GOUT_CAM_SYSREG_PCLK                       0x2070
> +
> +static const unsigned long cam_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_CAM_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_CAM_BUS_USER,
> +       CMU_CMU_CAM_CONTROLLER_OPTION,
> +       CLK_CON_DIV_DIV_CLK_CAM_BUSP,
> +       CLK_CON_GAT_CLK_CAM_CMU_PCLK,
> +       CLK_CON_GAT_CLK_CAM_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_CAM_BUSD,
> +       CLK_CON_GAT_GOUT_CAM_BTM_ACLK,
> +       CLK_CON_GAT_GOUT_CAM_BTM_PCLK,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_3AA,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS0,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS1,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS2,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS3,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_DMA,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS0,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS1,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS2,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS3,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PAFSTAT_CORE,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PPMU_CAM,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_RDMA,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_SMMU_CAM,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_XIU_D_CAM,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM0,
> +       CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PPMU_CAM,
> +       CLK_CON_GAT_GOUT_CAM_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_CAM_LHS_ATB_CAMISP_CLK,
> +       CLK_CON_GAT_GOUT_CAM_BUSD_CLK,
> +       CLK_CON_GAT_GOUT_CAM_BUSP_CLK,
> +       CLK_CON_GAT_GOUT_CAM_SYSREG_PCLK,
> +};
> +
> +PNAME(mout_pll_cam_bus_user_p) = { "oscclk", "dout_cmu_cam_bus" };
> +
> +static const struct samsung_mux_clock cam_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_CAM_BUS_USER, "mout_pll_cam_bus_user", mout_pll_cam_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_CAM_BUS_USER, 4, 1),
> +};
> +
> +static const struct samsung_div_clock cam_div_clks[] __initconst = {
> +       DIV(CLK_DIV_CLK_CAM_BUSP, "dout_clk_cam_busp", "mout_pll_cam_bus_user",
> +           CLK_CON_DIV_DIV_CLK_CAM_BUSP, 0, 2),
> +};
> +
> +static const struct samsung_gate_clock cam_gate_clks[] __initconst = {
> +       GATE(CLK_GAT_CLK_CAM_CMU_PCLK, "gat_clk_cam_cmu_pclk", "dout_clk_cam_busp",
> +            CLK_CON_GAT_CLK_CAM_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GAT_CLK_CAM_OSCCLK_CLK, "gat_clk_cam_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_CAM_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_BUSD, "gout_cam_busd", "mout_pll_cam_bus_user",
> +            CLK_CON_GAT_GOUT_CAM_BUSD, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_BTM_ACLK, "gout_cam_btm_aclk", "mout_pll_cam_bus_user",
> +            CLK_CON_GAT_GOUT_CAM_BTM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_BTM_PCLK, "gout_cam_btm_pclk", "dout_clk_cam_busp",
> +            CLK_CON_GAT_GOUT_CAM_BTM_PCLK, 21, 0, 0),
> +
> +       GATE(CLK_GOUT_CAM_LHS_ATB_CAMISP_CLK, "gout_cam_lhs_atb_camisp_clk",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_LHS_ATB_CAMISP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_3AA, "gout_cam_is6p10p0_aclk_3aa",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_3AA,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_CSIS0, "gout_cam_is6p10p0_aclk_csis0",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_CSIS1, "gout_cam_is6p10p0_aclk_csis1",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_CSIS2, "gout_cam_is6p10p0_aclk_csis2",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS2,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_CSIS3, "gout_cam_is6p10p0_aclk_csis3",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_CSIS3,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_RDMA, "gout_cam_is6p10p0_aclk_rdma",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_RDMA,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS0, "gout_cam_is6p10p0_aclk_glue_csis0",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS1, "gout_cam_is6p10p0_aclk_glue_csis1",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS2, "gout_cam_is6p10p0_aclk_glue_csis2",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS2,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS3, "gout_cam_is6p10p0_aclk_glue_csis3",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_GLUE_CSIS3,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_PAFSTAT_CORE, "gout_cam_is6p10p0_aclk_pafstat_core",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PAFSTAT_CORE,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_PPMU_CAM, "gout_cam_is6p10p0_aclk_ppmu_cam",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_PPMU_CAM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_DMA, "gout_cam_is6p10p0_aclk_dma",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_DMA,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_SMMU_CAM, "gout_cam_is6p10p0_aclk_smmu_cam",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_SMMU_CAM,
> +            21, CLK_IGNORE_UNUSED, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_ACLK_XIU_D_CAM, "gout_cam_is6p10p0_aclk_xiu_d_cam",
> +            "mout_pll_cam_bus_user", CLK_CON_GAT_GOUT_CAM_IS6P10P0_ACLK_XIU_D_CAM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM0, "gout_cam_is6p10p0_pclk_pgen_lite_cam0",
> +            "dout_clk_cam_busp", CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM1, "gout_cam_is6p10p0_pclk_pgen_lite_cam1",
> +            "dout_clk_cam_busp", CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PGEN_LITE_CAM1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_IS6P10P0_PCLK_PPMU_CAM, "gout_cam_is6p10p0_pclk_ppmu_cam",
> +            "dout_clk_cam_busp", CLK_CON_GAT_GOUT_CAM_IS6P10P0_PCLK_PPMU_CAM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CAM_LHM_AXI_P_CLK, "gout_cam_lhm_axi_p_clk", "dout_clk_cam_busp",
> +            CLK_CON_GAT_GOUT_CAM_LHM_AXI_P_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_LHS_ACEL_D_CLK, "gout_cam_lhs_acel_d_clk", "mout_pll_cam_bus_user",
> +            CLK_CON_GAT_GOUT_CAM_LHS_ACEL_D_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_BUSD_CLK, "gout_cam_busd_clk", "mout_pll_cam_bus_user",
> +            CLK_CON_GAT_GOUT_CAM_BUSD_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_BUSP_CLK, "gout_cam_busp_clk", "dout_clk_cam_busp",
> +            CLK_CON_GAT_GOUT_CAM_BUSP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CAM_SYSREG_PCLK, "gout_cam_sysreg_pclk", "dout_clk_cam_busp",
> +            CLK_CON_GAT_GOUT_CAM_SYSREG_PCLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info cam_cmu_info __initconst = {
> +       .mux_clks               = cam_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(cam_mux_clks),
> +       .div_clks               = cam_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(cam_div_clks),
> +       .gate_clks              = cam_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(cam_gate_clks),
> +       .clk_regs               = cam_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(cam_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_CAM,
> +       .sysreg_clk_regs        = drcg_alt_memclk_sysreg,
> +       .nr_sysreg_clk_regs     = ARRAY_SIZE(drcg_alt_memclk_sysreg),
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .drcg_offset            = EXYNOS9610_ALT_DRCG_EN_OFFSET,
> +       .memclk_offset          = EXYNOS9610_MEMCLK_OFFSET,
> +       .option_offset          = CMU_CMU_CAM_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_CMGP */
> +#define CMU_CMU_CMGP_CONTROLLER_OPTION                 0x0800
> +#define CLK_CON_MUX_MUX_CLK_CMGP_ADC                   0x1000
> +#define CLK_CON_MUX_MUX_CLK_CMGP_I2C                   0x1004
> +#define CLK_CON_MUX_MUX_CLK_CMGP_USI00                 0x1008
> +#define CLK_CON_MUX_MUX_CLK_CMGP_USI01                 0x100c
> +#define CLK_CON_MUX_MUX_CLK_CMGP_USI02                 0x1010
> +#define CLK_CON_MUX_MUX_CLK_CMGP_USI03                 0x1014
> +#define CLK_CON_MUX_MUX_CLK_CMGP_USI04                 0x1018
> +#define CLK_CON_DIV_DIV_CLK_CMGP_ADC                   0x1800
> +#define CLK_CON_DIV_DIV_CLK_CMGP_I2C                   0x1804
> +#define CLK_CON_DIV_DIV_CLK_CMGP_USI00                 0x1808
> +#define CLK_CON_DIV_DIV_CLK_CMGP_USI01                 0x180c
> +#define CLK_CON_DIV_DIV_CLK_CMGP_USI02                 0x1810
> +#define CLK_CON_DIV_DIV_CLK_CMGP_USI03                 0x1814
> +#define CLK_CON_DIV_DIV_CLK_CMGP_USI04                 0x1818
> +#define CLK_CON_GAT_CMGP_CMU_PCLK                      0x2004
> +#define CLK_CON_GAT_CLK_CMGP_OSCCLK_RCO_CLK            0x2008
> +#define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0              0x200c
> +#define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1              0x2010
> +#define CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK                        0x2014
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_IPCLK         0x2018
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_PCLK          0x201c
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_IPCLK         0x2020
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_PCLK          0x2024
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_IPCLK         0x2028
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_PCLK          0x202c
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_IPCLK         0x2030
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_PCLK          0x2034
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_IPCLK         0x2038
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_PCLK          0x203c
> +#define CLK_CON_GAT_GOUT_CMGP_BUS_CLK                  0x2040
> +#define CLK_CON_GAT_GOUT_CMGP_I2C_CLK                  0x2044
> +#define CLK_CON_GAT_GOUT_CMGP_USI00_CLK                        0x2048
> +#define CLK_CON_GAT_GOUT_CMGP_USI01_CLK                        0x204c
> +#define CLK_CON_GAT_GOUT_CMGP_USI02_CLK                        0x2050
> +#define CLK_CON_GAT_GOUT_CMGP_USI03_CLK                        0x2054
> +#define CLK_CON_GAT_GOUT_CMGP_USI04_CLK                        0x2058
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2CP_PCLK      0x205c
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2GNSS_PCLK    0x2060
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_AP_PCLK  0x2064
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_SHUB_PCLK        0x2068
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2SHUB_PCLK    0x206c
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2WLBT_PCLK    0x2070
> +#define CLK_CON_GAT_GOUT_CMGP_SYSREG_PCLK              0x2074
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_IPCLK         0x2078
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_PCLK          0x207c
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_IPCLK         0x2080
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_PCLK          0x2084
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_IPCLK         0x2088
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_PCLK          0x208c
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_IPCLK         0x2090
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_PCLK          0x2094
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_IPCLK         0x2098
> +#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_PCLK          0x209c
> +
> +static const unsigned long cmgp_clk_regs[] __initconst = {
> +       CMU_CMU_CMGP_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLK_CMGP_ADC,
> +       CLK_CON_MUX_MUX_CLK_CMGP_I2C,
> +       CLK_CON_MUX_MUX_CLK_CMGP_USI00,
> +       CLK_CON_MUX_MUX_CLK_CMGP_USI01,
> +       CLK_CON_MUX_MUX_CLK_CMGP_USI02,
> +       CLK_CON_MUX_MUX_CLK_CMGP_USI03,
> +       CLK_CON_MUX_MUX_CLK_CMGP_USI04,
> +       CLK_CON_DIV_DIV_CLK_CMGP_ADC,
> +       CLK_CON_DIV_DIV_CLK_CMGP_I2C,
> +       CLK_CON_DIV_DIV_CLK_CMGP_USI00,
> +       CLK_CON_DIV_DIV_CLK_CMGP_USI01,
> +       CLK_CON_DIV_DIV_CLK_CMGP_USI02,
> +       CLK_CON_DIV_DIV_CLK_CMGP_USI03,
> +       CLK_CON_DIV_DIV_CLK_CMGP_USI04,
> +       CLK_CON_GAT_CMGP_CMU_PCLK,
> +       CLK_CON_GAT_CLK_CMGP_OSCCLK_RCO_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0,
> +       CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1,
> +       CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_BUS_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_I2C_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI00_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI01_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI02_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI03_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI04_CLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2CP_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_AP_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_PCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_IPCLK,
> +       CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_PCLK,
> +};
> +
> +PNAME(mout_clk_cmgp_adc_p)     = { "oscclk", "dout_clk_cmgp_adc" };
> +PNAME(mout_clk_cmgp_bus_user_p)        = { "oscclk_rco",
> +                                   "gout_cmu_cmgp_bus" };
> +
> +static const struct samsung_mux_clock cmgp_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_CLK_CMGP_ADC, "mout_clk_cmgp_adc", mout_clk_cmgp_adc_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_ADC, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_I2C, "mout_clk_cmgp_i2c", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_I2C, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_USI00, "mout_clk_cmgp_usi00", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_USI00, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_USI01, "mout_clk_cmgp_usi01", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_USI01, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_USI02, "mout_clk_cmgp_usi02", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_USI02, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_USI03, "mout_clk_cmgp_usi03", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_USI03, 0, 1),
> +       MUX(CLK_MOUT_CLK_CMGP_USI04, "mout_clk_cmgp_usi04", mout_clk_cmgp_bus_user_p,
> +           CLK_CON_MUX_MUX_CLK_CMGP_USI04, 0, 1),
> +};
> +
> +static const struct samsung_div_clock cmgp_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_CMGP_ADC, "dout_clk_cmgp_adc", "gout_cmu_cmgp_bus",
> +           CLK_CON_DIV_DIV_CLK_CMGP_ADC, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_I2C, "dout_clk_cmgp_i2c", "mout_clk_cmgp_i2c",
> +           CLK_CON_DIV_DIV_CLK_CMGP_I2C, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_USI00, "dout_clk_cmgp_usi00", "mout_clk_cmgp_usi00",
> +           CLK_CON_DIV_DIV_CLK_CMGP_USI00, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_USI01, "dout_clk_cmgp_usi01", "mout_clk_cmgp_usi01",
> +           CLK_CON_DIV_DIV_CLK_CMGP_USI01, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_USI02, "dout_clk_cmgp_usi02", "mout_clk_cmgp_usi02",
> +           CLK_CON_DIV_DIV_CLK_CMGP_USI02, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_USI03, "dout_clk_cmgp_usi03", "mout_clk_cmgp_usi03",
> +           CLK_CON_DIV_DIV_CLK_CMGP_USI03, 0, 4),
> +       DIV(CLK_DOUT_CLK_CMGP_USI04, "dout_clk_cmgp_usi04", "mout_clk_cmgp_usi04",
> +           CLK_CON_DIV_DIV_CLK_CMGP_USI04, 0, 4),
> +};
> +
> +static const struct samsung_gate_clock cmgp_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CMGP_CMU_PCLK, "gout_cmgp_cmu_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_CMGP_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_CMGP_OSCCLK_RCO_CLK, "gout_clk_cmgp_oscclk_rco_clk",
> +            "oscclk_rco", CLK_CON_GAT_CLK_CMGP_OSCCLK_RCO_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_ADC_PCLK_S0, "gout_clk_cmgp_adc_pclk_s0",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_ADC_PCLK_S1, "gout_clk_cmgp_adc_pclk_s1",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_GPIO_PCLK, "gout_clk_cmgp_gpio_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP00_IPCLK, "gout_clk_cmgp_i2c_cmgp00_ipclk",
> +            "mout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP00_PCLK, "gout_clk_cmgp_i2c_cmgp00_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP00_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP01_IPCLK, "gout_clk_cmgp_i2c_cmgp01_ipclk",
> +            "mout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP01_PCLK, "gout_clk_cmgp_i2c_cmgp01_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP01_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP02_IPCLK, "gout_clk_cmgp_i2c_cmgp02_ipclk",
> +            "mout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP02_PCLK, "gout_clk_cmgp_i2c_cmgp02_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP02_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP03_IPCLK, "gout_clk_cmgp_i2c_cmgp03_ipclk",
> +            "mout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP03_PCLK, "gout_clk_cmgp_i2c_cmgp03_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP03_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP04_IPCLK, "gout_clk_cmgp_i2c_cmgp04_ipclk",
> +            "mout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CMGP04_PCLK, "gout_clk_cmgp_i2c_cmgp04_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_I2C_CMGP04_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_BUS_CLK, "gout_cmgp_bus_clk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_BUS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_I2C_CLK, "gout_cmgp_i2c_clk",
> +            "dout_clk_cmgp_i2c", CLK_CON_GAT_GOUT_CMGP_I2C_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI00_CLK, "gout_cmgp_usi00_clk",
> +            "mout_clk_cmgp_usi00", CLK_CON_GAT_GOUT_CMGP_USI00_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI01_CLK, "gout_cmgp_usi01_clk",
> +            "mout_clk_cmgp_usi01", CLK_CON_GAT_GOUT_CMGP_USI01_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI02_CLK, "gout_cmgp_usi02_clk",
> +            "mout_clk_cmgp_usi02", CLK_CON_GAT_GOUT_CMGP_USI02_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI03_CLK, "gout_cmgp_usi03_clk",
> +            "mout_clk_cmgp_usi03", CLK_CON_GAT_GOUT_CMGP_USI03_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI04_CLK, "gout_cmgp_usi04_clk",
> +            "mout_clk_cmgp_usi04", CLK_CON_GAT_GOUT_CMGP_USI04_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2CP_PCLK,
> +            "gout_cmgp_sysreg_cmgp2cp_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2CP_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2GNSS_PCLK,
> +            "gout_cmgp_sysreg_cmgp2gnss_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2GNSS_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2PMU_AP_PCLK,
> +            "gout_cmgp_sysreg_cmgp2pmu_ap_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_AP_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2PMU_SHUB_PCLK,
> +            "gout_cmgp_sysreg_cmgp2pmu_shub_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2PMU_SHUB_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2SHUB_PCLK,
> +            "gout_cmgp_sysreg_cmgp2shub_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2SHUB_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_CMGP2WLBT_PCLK,
> +            "gout_cmgp_sysreg_cmgp2wlbt_pclk", "gout_cmu_cmgp_bus",
> +            CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP2WLBT_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_SYSREG_PCLK, "gout_cmgp_sysreg_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_SYSREG_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP00_IPCLK, "gout_clk_cmgp_usi_cmgp00_ipclk",
> +            "mout_clk_cmgp_usi00", CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP00_PCLK, "gout_clk_cmgp_usi_cmgp00_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP00_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP01_IPCLK, "gout_clk_cmgp_usi_cmgp01_ipclk",
> +            "mout_clk_cmgp_usi01", CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP01_PCLK, "gout_clk_cmgp_usi_cmgp01_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP01_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP02_IPCLK, "gout_clk_cmgp_usi_cmgp02_ipclk",
> +            "mout_clk_cmgp_usi02", CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP02_PCLK, "gout_clk_cmgp_usi_cmgp02_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP02_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP03_IPCLK, "gout_clk_cmgp_usi_cmgp03_ipclk",
> +            "mout_clk_cmgp_usi03", CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP03_PCLK, "gout_clk_cmgp_usi_cmgp03_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP03_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP04_IPCLK, "gout_clk_cmgp_usi_cmgp04_ipclk",
> +            "mout_clk_cmgp_usi04", CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_IPCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CMGP_USI_CMGP04_PCLK, "gout_clk_cmgp_usi_cmgp04_pclk",
> +            "gout_cmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP04_IPCLK,
> +            21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info cmgp_cmu_info __initconst = {
> +       .mux_clks               = cmgp_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(cmgp_mux_clks),
> +       .div_clks               = cmgp_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(cmgp_div_clks),
> +       .gate_clks              = cmgp_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(cmgp_gate_clks),
> +       .clk_regs               = cmgp_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(cmgp_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_CMGP,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_CMGP_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_CORE */
> +#define PLL_CON0_MUX_CLKCMU_CORE_BUS_USER                      0x0100
> +#define PLL_CON2_MUX_CLKCMU_CORE_BUS_USER                      0x0108
> +#define PLL_CON0_MUX_CLKCMU_CORE_CCI_USER                      0x0120
> +#define PLL_CON2_MUX_CLKCMU_CORE_CCI_USER                      0x0128
> +#define PLL_CON0_MUX_CLKCMU_CORE_G3D_USER                      0x0140
> +#define PLL_CON2_MUX_CLKCMU_CORE_G3D_USER                      0x0148
> +#define CMU_CMU_CORE_CONTROLLER_OPTION                         0x0800
> +#define CLK_CON_MUX_MUX_CLK_CORE_GIC                           0x1000
> +#define CLK_CON_DIV_DIV_CLK_CORE_BUSP                          0x1800
> +#define CLK_CON_GAT_CLK_CORE_CMU_PCLK                          0x2000
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_CCI_550_PCLKM             0x2004
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_DIT_PCLKM                 0x2008
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_PDMA0_PCLKM               0x200c
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_PGEN_PDMA_PCLKM           0x2010
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM0_PCLKM           0x2014
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM1_PCLKM           0x2018
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_PERI_PCLKM           0x201c
> +#define CLK_CON_GAT_GOUT_CORE_AD_APB_SPDMA_PCLKM               0x2020
> +#define CLK_CON_GAT_GOUT_CORE_AD_AXI_GIC_ACLKM                 0x2024
> +#define CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC0_PCLK            0x2028
> +#define CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC1_PCLK            0x202c
> +#define CLK_CON_GAT_GOUT_CORE_AXI_US_A40_64TO128_DIT_ACLK      0x2030
> +#define CLK_CON_GAT_GOUT_CORE_BAAW_P_GNSS_PCLK                 0x2034
> +#define CLK_CON_GAT_GOUT_CORE_BAAW_P_MODEM_PCLK                        0x2038
> +#define CLK_CON_GAT_GOUT_CORE_BAAW_P_SHUB_PCLK                 0x203c
> +#define CLK_CON_GAT_GOUT_CORE_BAAW_P_WLBT_PCLK                 0x2040
> +#define CLK_CON_GAT_GOUT_CORE_CCI_550_ACLK                     0x2044
> +#define CLK_CON_GAT_GOUT_CORE_DIT_ICLKL2A                      0x2048
> +#define CLK_CON_GAT_GOUT_CORE_GIC400_AIHWACG_CLK               0x204c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_ISP_CLK              0x2050
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_MFC_CLK              0x2054
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_ISP_CLK              0x2058
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_MFC_CLK              0x205c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_CAM_CLK               0x2060
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_DPU_CLK               0x2064
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_FSYS_CLK              0x2068
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_G2D_CLK               0x206c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_USB_CLK               0x2070
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX1_CLK             0x2074
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX2_CLK             0x2078
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL0_CLK             0x207c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL1_CLK             0x2080
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D0_MODEM_CLK             0x2084
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D1_MODEM_CLK             0x2088
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_ABOX_CLK               0x208c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_APM_CLK                        0x2090
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_CSSYS_CLK              0x2094
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_G3D_CLK                        0x2098
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_GNSS_CLK               0x209c
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_SHUB_CLK               0x20a0
> +#define CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_WLBT_CLK               0x20a4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CPU_CLK           0x20a8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CP_CLK            0x20ac
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_NRT_CLK           0x20b0
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_RT_CLK            0x20b4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CPU_CLK           0x20b8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CP_CLK            0x20bc
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_NRT_CLK           0x20c0
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_RT_CLK            0x20c4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_APM_CLK                        0x20c8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CAM_CLK                        0x20cc
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL0_CLK             0x20d0
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL1_CLK             0x20d4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_DISPAUD_CLK            0x20d8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_FSYS_CLK               0x20dc
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G2D_CLK                        0x20e0
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G3D_CLK                        0x20e4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_GNSS_CLK               0x20e8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_ISP_CLK                        0x20ec
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MFC_CLK                        0x20f0
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF0_CLK               0x20f4
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF1_CLK               0x20f8
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MODEM_CLK              0x20fc
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_PERI_CLK               0x2100
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_SHUB_CLK               0x2104
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_USB_CLK                        0x2108
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX1_CLK              0x210c
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX2_CLK              0x2110
> +#define CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_WLBT_CLK               0x2114
> +#define CLK_CON_GAT_GOUT_CORE_PDMA_CORE_ACLK_PDMA0             0x2118
> +#define CLK_CON_GAT_GOUT_CORE_PGEN_LITE_SIREX_CLK              0x211c
> +#define CLK_CON_GAT_GOUT_CORE_PGEN_PDMA_CLK                    0x2120
> +#define CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_ACLK                   0x2124
> +#define CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_PCLK                   0x2128
> +#define CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM0_CLK               0x212c
> +#define CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM1_CLK               0x2130
> +#define CLK_CON_GAT_GOUT_CORE_PPFW_CORE_PERI_CLK               0x2134
> +#define CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_ACLK             0x2138
> +#define CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_PCLK             0x213c
> +#define CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_ACLK             0x2140
> +#define CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_PCLK             0x2144
> +#define CLK_CON_GAT_GOUT_CORE_BUSD_CLK                         0x2148
> +#define CLK_CON_GAT_GOUT_CORE_BUSP_G3D_OCC_CLK                 0x214c
> +#define CLK_CON_GAT_GOUT_CORE_BUSP_CLK                         0x2150
> +#define CLK_CON_GAT_GOUT_CORE_BUSP_OCC_CLK                     0x2154
> +#define CLK_CON_GAT_GOUT_CORE_CCI_CLK                          0x2158
> +#define CLK_CON_GAT_GOUT_CORE_CCI_OCC_CLK                      0x215c
> +#define CLK_CON_GAT_GOUT_CORE_G3D_CLK                          0x2160
> +#define CLK_CON_GAT_GOUT_CORE_G3D_OCC_CLK                      0x2164
> +#define CLK_CON_GAT_GOUT_CORE_GIC_CLK                          0x2168
> +#define CLK_CON_GAT_GOUT_CORE_OSCCLK_CLK                       0x216c
> +#define CLK_CON_GAT_GOUT_CORE_SFR_APBIF_CMU_TOPC_PCLK          0x2170
> +#define CLK_CON_GAT_GOUT_CORE_SIREX_ACLK                       0x2174
> +#define CLK_CON_GAT_GOUT_CORE_SIREX_PCLK                       0x2178
> +#define CLK_CON_GAT_GOUT_CORE_SPDMA_CORE_ACLK_PDMA1            0x217c
> +#define CLK_CON_GAT_GOUT_CORE_SYSREG_PCLK                      0x2180
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_ACLK                      0x2184
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_CCLK                      0x2188
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_GCLK                      0x218c
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_PCLK                      0x2190
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_ACLK                  0x2194
> +#define CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_PCLK                  0x2198
> +#define CLK_CON_GAT_GOUT_CORE_TREX_P_ACLK_P_CORE               0x219c
> +#define CLK_CON_GAT_GOUT_CORE_TREX_P_CCLK_P_CORE               0x21a0
> +#define CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK                      0x21a4
> +#define CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK_P_CORE               0x21a8
> +#define CLK_CON_GAT_GOUT_CORE_XIU_D_ACLK                       0x21ac
> +
> +static const unsigned long core_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_CORE_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_CORE_BUS_USER,
> +       PLL_CON0_MUX_CLKCMU_CORE_CCI_USER,
> +       PLL_CON2_MUX_CLKCMU_CORE_CCI_USER,
> +       PLL_CON0_MUX_CLKCMU_CORE_G3D_USER,
> +       PLL_CON2_MUX_CLKCMU_CORE_G3D_USER,
> +       CMU_CMU_CORE_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLK_CORE_GIC,
> +       CLK_CON_DIV_DIV_CLK_CORE_BUSP,
> +       CLK_CON_GAT_CLK_CORE_CMU_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_CCI_550_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_DIT_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_PDMA0_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_PGEN_PDMA_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM0_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM1_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_PERI_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_APB_SPDMA_PCLKM,
> +       CLK_CON_GAT_GOUT_CORE_AD_AXI_GIC_ACLKM,
> +       CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC0_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC1_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_AXI_US_A40_64TO128_DIT_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_BAAW_P_GNSS_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_BAAW_P_MODEM_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_BAAW_P_SHUB_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_BAAW_P_WLBT_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_CCI_550_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_DIT_ICLKL2A,
> +       CLK_CON_GAT_GOUT_CORE_GIC400_AIHWACG_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_ISP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_MFC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_ISP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_MFC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_CAM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_DPU_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_FSYS_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_G2D_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_USB_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX2_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL0_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D0_MODEM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D1_MODEM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_ABOX_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_APM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_CSSYS_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_G3D_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_GNSS_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_SHUB_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_WLBT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CPU_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_NRT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_RT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CPU_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_NRT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_RT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_APM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CAM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL0_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_DISPAUD_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_FSYS_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G2D_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G3D_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_GNSS_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_ISP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MFC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF0_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MODEM_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_PERI_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_SHUB_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_USB_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX2_CLK,
> +       CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_WLBT_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PDMA_CORE_ACLK_PDMA0,
> +       CLK_CON_GAT_GOUT_CORE_PGEN_LITE_SIREX_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PGEN_PDMA_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM0_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM1_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PPFW_CORE_PERI_CLK,
> +       CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_BUSD_CLK,
> +       CLK_CON_GAT_GOUT_CORE_BUSP_G3D_OCC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_BUSP_CLK,
> +       CLK_CON_GAT_GOUT_CORE_BUSP_OCC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_CCI_CLK,
> +       CLK_CON_GAT_GOUT_CORE_CCI_OCC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_G3D_CLK,
> +       CLK_CON_GAT_GOUT_CORE_G3D_OCC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_GIC_CLK,
> +       CLK_CON_GAT_GOUT_CORE_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_CORE_SFR_APBIF_CMU_TOPC_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_SIREX_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_SIREX_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_SPDMA_CORE_ACLK_PDMA1,
> +       CLK_CON_GAT_GOUT_CORE_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_CCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_GCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_ACLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_P_ACLK_P_CORE,
> +       CLK_CON_GAT_GOUT_CORE_TREX_P_CCLK_P_CORE,
> +       CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK,
> +       CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK_P_CORE,
> +       CLK_CON_GAT_GOUT_CORE_XIU_D_ACLK,
> +};
> +
> +PNAME(mout_pll_core_bus_user_p)                = { "oscclk",
> +                                           "dout_cmu_core_bus" };
> +PNAME(mout_pll_core_cci_user_p)        =        { "oscclk",
> +                                           "dout_cmu_core_cci" };
> +PNAME(mout_pll_core_g3d_user_p)        =        { "oscclk",
> +                                           "dout_cmu_core_g3d" };
> +PNAME(mout_clk_core_gic_p)             = { "oscclk",
> +                                           "dout_clk_core_busp" };
> +
> +static const struct samsung_mux_clock core_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_CORE_BUS_USER, "mout_pll_core_bus_user", mout_pll_core_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_CORE_BUS_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_CORE_CCI_USER, "mout_pll_core_cci_user", mout_pll_core_cci_user_p,
> +           PLL_CON0_MUX_CLKCMU_CORE_CCI_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_CORE_G3D_USER, "mout_pll_core_g3d_user", mout_pll_core_g3d_user_p,
> +           PLL_CON0_MUX_CLKCMU_CORE_G3D_USER, 4, 1),
> +       MUX(CLK_MOUT_CLK_CORE_GIC, "mout_clk_core_gic", mout_clk_core_gic_p,
> +           CLK_CON_MUX_MUX_CLK_CORE_GIC, 0, 1),
> +};
> +
> +static const struct samsung_div_clock core_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_CORE_BUSP, "dout_clk_core_busp", "mout_pll_core_bus_user",
> +           CLK_CON_DIV_DIV_CLK_CORE_BUSP, 0, 2),
> +};
> +
> +static const struct samsung_gate_clock core_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_CORE_CMU_PCLK, "gout_clk_core_cmu_pclk", "dout_clk_core_busp",
> +            CLK_CON_GAT_CLK_CORE_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_CCI_550_PCLKM, "gout_core_ad_apb_cci_550_pclkm",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_AD_APB_CCI_550_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_DIT_PCLKM, "gout_core_ad_apb_dit_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_DIT_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_PDMA0_PCLKM, "gout_core_ad_apb_pdma0_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_PDMA0_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_PGEN_PDMA_PCLKM, "gout_core_ad_apb_pgen_pdma_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_PGEN_PDMA_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_PPFW_MEM0_PCLKM, "gout_core_ad_apb_ppfw_mem0_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM0_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_PPFW_MEM1_PCLKM, "gout_core_ad_apb_ppfw_mem1_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_MEM1_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_PPFW_PERI_PCLKM, "gout_core_ad_apb_ppfw_peri_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_PPFW_PERI_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_APB_SPDMA_PCLKM, "gout_core_ad_apb_spdma_pclkm",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_AD_APB_SPDMA_PCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AD_AXI_GIC_ACLKM, "gout_core_ad_axi_gic_aclkm",
> +            "mout_clk_core_gic", CLK_CON_GAT_GOUT_CORE_AD_AXI_GIC_ACLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_ASYNCSFR_WR_DMC0_PCLK, "gout_core_asyncsfr_wr_dmc0_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_ASYNCSFR_WR_DMC1_PCLK, "gout_core_asyncsfr_wr_dmc1_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_ASYNCSFR_WR_DMC1_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_AXI_US_A40_64TO128_DIT_ACLK,
> +            "gout_core_axi_us_a40_64to128_dit_aclk", "mout_pll_core_bus_user",
> +            CLK_CON_GAT_GOUT_CORE_AXI_US_A40_64TO128_DIT_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BAAW_P_GNSS_PCLK, "gout_core_baaw_p_gnss_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BAAW_P_GNSS_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BAAW_P_MODEM_PCLK, "gout_core_baaw_p_modem_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BAAW_P_MODEM_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BAAW_P_SHUB_PCLK, "gout_core_baaw_p_shub_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BAAW_P_SHUB_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BAAW_P_WLBT_PCLK, "gout_core_baaw_p_wlbt_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BAAW_P_WLBT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_CCI_550_ACLK, "gout_core_cci_550_aclk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_CCI_550_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_DIT_ICLKL2A, "gout_core_dit_iclkl2a",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_DIT_ICLKL2A,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_GIC400_AIHWACG_CLK, "gout_core_gic400_aihwacg_clk",
> +            "mout_clk_core_gic", CLK_CON_GAT_GOUT_CORE_GIC400_AIHWACG_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D0_ISP_CLK, "gout_core_lhm_acel_d0_isp_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_ISP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D0_MFC_CLK, "gout_core_lhm_acel_d0_mfc_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D0_MFC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D1_ISP_CLK, "gout_core_lhm_acel_d1_isp_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_ISP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D1_MFC_CLK, "gout_core_lhm_acel_d1_mfc_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D1_MFC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_CAM_CLK, "gout_core_lhm_acel_d_cam_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_CAM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_DPU_CLK, "gout_core_lhm_acel_d_dpu_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_DPU_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_FSYS_CLK, "gout_core_lhm_acel_d_fsys_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_FSYS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_G2D_CLK, "gout_core_lhm_acel_d_g2d_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_G2D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_USB_CLK, "gout_core_lhm_acel_d_usb_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_USB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_VIPX1_CLK, "gout_core_lhm_acel_d_vipx1_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACEL_D_VIPX2_CLK, "gout_core_lhm_acel_d_vipx2_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_ACEL_D_VIPX2_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACE_D_CPUCL0_CLK, "gout_core_lhm_ace_d_cpucl0_clk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_ACE_D_CPUCL1_CLK, "gout_core_lhm_ace_d_cpucl1_clk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_LHM_ACE_D_CPUCL1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D0_MODEM_CLK, "gout_core_lhm_axi_d0_modem_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D0_MODEM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D1_MODEM_CLK, "gout_core_lhm_axi_d1_modem_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D1_MODEM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_ABOX_CLK, "gout_core_lhm_axi_d_abox_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_ABOX_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_APM_CLK, "gout_core_lhm_axi_d_apm_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_APM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_CSSYS_CLK, "gout_core_lhm_axi_d_cssys_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_CSSYS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_G3D_CLK, "gout_core_lhm_axi_d_g3d_clk",
> +            "mout_pll_core_g3d_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_G3D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_GNSS_CLK, "gout_core_lhm_axi_d_gnss_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_GNSS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_SHUB_CLK, "gout_core_lhm_axi_d_shub_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_SHUB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHM_AXI_D_WLBT_CLK, "gout_core_lhm_axi_d_wlbt_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHM_AXI_D_WLBT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D0_MIF_CPU_CLK, "gout_core_lhs_axi_d0_mif_cpu_clk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CPU_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D0_MIF_CP_CLK, "gout_core_lhs_axi_d0_mif_cp_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_CP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D0_MIF_NRT_CLK, "gout_core_lhs_axi_d0_mif_nrt_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_NRT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D0_MIF_RT_CLK, "gout_core_lhs_axi_d0_mif_rt_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D0_MIF_RT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D1_MIF_CPU_CLK, "gout_core_lhs_axi_d1_mif_cpu_clk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CPU_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D1_MIF_CP_CLK, "gout_core_lhs_axi_d1_mif_cp_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_CP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D1_MIF_NRT_CLK, "gout_core_lhs_axi_d1_mif_nrt_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_NRT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_D1_MIF_RT_CLK, "gout_core_lhs_axi_d1_mif_rt_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_LHS_AXI_D1_MIF_RT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_APM_CLK, "gout_core_lhs_axi_p_apm_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_APM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_CAM_CLK, "gout_core_lhs_axi_p_cam_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CAM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_CPUCL0_CLK, "gout_core_lhs_axi_p_cpucl0_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_CPUCL1_CLK, "gout_core_lhs_axi_p_cpucl1_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_CPUCL1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_DISPAUD_CLK, "gout_core_lhs_axi_p_dispaud_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_DISPAUD_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_FSYS_CLK, "gout_core_lhs_axi_p_fsys_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_FSYS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_G2D_CLK, "gout_core_lhs_axi_p_g2d_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G2D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_G3D_CLK, "gout_core_lhs_axi_p_g3d_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_G3D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_GNSS_CLK, "gout_core_lhs_axi_p_gnss_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_GNSS_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_ISP_CLK, "gout_core_lhs_axi_p_isp_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_ISP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_MFC_CLK, "gout_core_lhs_axi_p_mfc_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MFC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_MIF0_CLK, "gout_core_lhs_axi_p_mif0_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_MIF1_CLK, "gout_core_lhs_axi_p_mif1_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MIF1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_MODEM_CLK, "gout_core_lhs_axi_p_modem_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_MODEM_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_PERI_CLK, "gout_core_lhs_axi_p_peri_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_PERI_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_SHUB_CLK, "gout_core_lhs_axi_p_shub_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_SHUB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_USB_CLK, "gout_core_lhs_axi_p_usb_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_USB_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_VIPX1_CLK, "gout_core_lhs_axi_p_vipx1_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_VIPX2_CLK, "gout_core_lhs_axi_p_vipx2_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_VIPX2_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_LHS_AXI_P_WLBT_CLK, "gout_core_lhs_wlbt_p_apm_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_LHS_AXI_P_WLBT_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PDMA_CORE_ACLK_PDMA0, "gout_core_pdma_core_aclk_pdma0",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_PDMA_CORE_ACLK_PDMA0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PGEN_LITE_SIREX_CLK, "gout_core_pgen_lite_sirex_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_PGEN_LITE_SIREX_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PGEN_PDMA_CLK, "gout_core_pgen_pdma_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_PGEN_PDMA_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPCFW_G3D_ACLK, "gout_core_ppcfw_g3d_aclk",
> +            "mout_pll_core_g3d_user", CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPCFW_G3D_PCLK, "gout_core_ppcfw_g3d_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_PPCFW_G3D_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPFW_CORE_MEM0_CLK, "gout_core_ppfw_core_mem0_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPFW_CORE_MEM1_CLK, "gout_core_ppfw_core_mem1_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_PPFW_CORE_MEM1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPFW_CORE_PERI_CLK, "gout_core_ppfw_core_peri_clk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_PPFW_CORE_PERI_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPMU_ACE_CPUCL0_ACLK, "gout_core_ppmu_ace_cpucl0_aclk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPMU_ACE_CPUCL0_PCLK, "gout_core_ppmu_ace_cpucl0_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL0_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPMU_ACE_CPUCL1_ACLK, "gout_core_ppmu_ace_cpucl1_aclk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_PPMU_ACE_CPUCL1_PCLK, "gout_core_ppmu_ace_cpucl1_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_PPMU_ACE_CPUCL1_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BUSD_CLK, "gout_core_busd_clk", "mout_pll_core_bus_user",
> +            CLK_CON_GAT_GOUT_CORE_BUSD_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BUSP_G3D_OCC_CLK, "gout_core_busp_g3d_occ_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BUSP_G3D_OCC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BUSP_CLK, "gout_core_busp_clk", "dout_clk_core_busp",
> +            CLK_CON_GAT_GOUT_CORE_BUSP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_BUSP_OCC_CLK, "gout_core_busp_occ_clk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_BUSP_OCC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_CCI_CLK, "gout_core_cci_clk", "mout_pll_core_cci_user",
> +            CLK_CON_GAT_GOUT_CORE_CCI_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_CCI_OCC_CLK, "gout_core_cci_occ_clk",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_CCI_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_G3D_CLK, "gout_core_g3d_clk", "mout_pll_core_g3d_user",
> +            CLK_CON_GAT_GOUT_CORE_G3D_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_G3D_OCC_CLK, "gout_core_g3d_occ_clk",
> +            "mout_pll_core_g3d_user", CLK_CON_GAT_GOUT_CORE_G3D_OCC_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_GIC_CLK, "gout_core_gic_clk", "mout_clk_core_gic",
> +            CLK_CON_GAT_GOUT_CORE_GIC_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_OSCCLK_CLK, "gout_core_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_GOUT_CORE_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_SFR_APBIF_CMU_TOPC_PCLK, "gout_core_sfr_apbif_cmu_topc_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_SFR_APBIF_CMU_TOPC_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_SIREX_ACLK, "gout_core_sirex_aclk", "mout_pll_core_bus_user",
> +            CLK_CON_GAT_GOUT_CORE_SIREX_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_SIREX_PCLK, "gout_core_sirex_pclk", "dout_clk_core_busp",
> +            CLK_CON_GAT_GOUT_CORE_SIREX_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_SPDMA_CORE_ACLK_PDMA1, "gout_core_spdma_core_aclk_pdma1",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_SPDMA_CORE_ACLK_PDMA1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_SYSREG_PCLK, "gout_core_sysreg_pclk", "dout_clk_core_busp",
> +            CLK_CON_GAT_GOUT_CORE_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_ACLK, "gout_core_trex_d_aclk", "mout_pll_core_bus_user",
> +            CLK_CON_GAT_GOUT_CORE_TREX_D_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_CCLK, "gout_core_trex_d_cclk", "mout_pll_core_cci_user",
> +            CLK_CON_GAT_GOUT_CORE_TREX_D_CCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_GCLK, "gout_core_trex_d_gclk", "mout_pll_core_g3d_user",
> +            CLK_CON_GAT_GOUT_CORE_TREX_D_GCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_PCLK, "gout_core_trex_d_pclk", "dout_clk_core_busp",
> +            CLK_CON_GAT_GOUT_CORE_TREX_D_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_NRT_ACLK, "gout_core_trex_d_nrt_aclk",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_D_NRT_PCLK, "gout_core_trex_d_nrt_pclk",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_TREX_D_NRT_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_P_ACLK_P_CORE, "gout_core_trex_p_aclk_p_core",
> +            "mout_pll_core_bus_user", CLK_CON_GAT_GOUT_CORE_TREX_P_ACLK_P_CORE,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_P_CCLK_P_CORE, "gout_core_trex_p_cclk_p_core",
> +            "mout_pll_core_cci_user", CLK_CON_GAT_GOUT_CORE_TREX_P_CCLK_P_CORE,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_P_PCLK, "gout_core_trex_p_pclk", "dout_clk_core_busp",
> +            CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CORE_TREX_P_PCLK_P_CORE, "gout_core_trex_p_pclk_p_core",
> +            "dout_clk_core_busp", CLK_CON_GAT_GOUT_CORE_TREX_P_PCLK_P_CORE,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CORE_XIU_D_ACLK, "gout_core_xiu_d_aclk", "mout_pll_core_bus_user",
> +            CLK_CON_GAT_GOUT_CORE_XIU_D_ACLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info core_cmu_info __initconst = {
> +       .mux_clks               = core_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(core_mux_clks),
> +       .gate_clks              = core_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(core_gate_clks),
> +       .clk_regs               = core_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(core_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_CORE,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_CORE_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_DISPAUD */
> +#define PLL_LOCKTIME_PLL_AUD                                   0x0000
> +#define PLL_CON0_MUX_CLKCMU_DISPAUD_AUD_USER                   0x0100
> +#define PLL_CON2_MUX_CLKCMU_DISPAUD_AUD_USER                   0x0108
> +#define PLL_CON0_MUX_CLKCMU_DISPAUD_CPU_USER                   0x0120
> +#define PLL_CON2_MUX_CLKCMU_DISPAUD_CPU_USER                   0x0128
> +#define PLL_CON0_MUX_CLKCMU_DISPAUD_DISP_USER                  0x0140
> +#define PLL_CON2_MUX_CLKCMU_DISPAUD_DISP_USER                  0x0148
> +#define PLL_CON0_PLL_AUD                                       0x0160
> +#define PLL_CON3_PLL_AUD                                       0x016c
> +#define CMU_CMU_DISPAUD_CONTROLLER_OPTION                      0x0800
> +#define CLK_CON_MUX_MUX_CLK_AUD_BUS                            0x1000
> +#define CLK_CON_MUX_MUX_CLK_AUD_CPU                            0x1004
> +#define CLK_CON_MUX_MUX_CLK_AUD_CPU_HCH                                0x1008
> +#define CLK_CON_MUX_MUX_CLK_AUD_FM                             0x100c
> +#define CLK_CON_MUX_MUX_CLK_AUD_UAIF0                          0x1010
> +#define CLK_CON_MUX_MUX_CLK_AUD_UAIF1                          0x1014
> +#define CLK_CON_MUX_MUX_CLK_AUD_UAIF2                          0x1018
> +#define CLK_CON_DIV_DIV_CLK_AUD_AUDIF                          0x1800
> +#define CLK_CON_DIV_DIV_CLK_AUD_BUS                            0x1808
> +#define CLK_CON_DIV_DIV_CLK_AUD_CPU                            0x180c
> +#define CLK_CON_DIV_DIV_CLK_AUD_CPU_ACLK                       0x1810
> +#define CLK_CON_DIV_DIV_CLK_AUD_CPU_PCLKDBG                    0x1814
> +#define CLK_CON_DIV_DIV_CLK_AUD_DSIF                           0x1818
> +#define CLK_CON_DIV_DIV_CLK_AUD_FM                             0x181c
> +#define CLK_CON_DIV_DIV_CLK_AUD_FM_SPDY                                0x1820
> +#define CLK_CON_DIV_DIV_CLK_AUD_UAIF0                          0x1824
> +#define CLK_CON_DIV_DIV_CLK_AUD_UAIF1                          0x1828
> +#define CLK_CON_DIV_DIV_CLK_AUD_UAIF2                          0x182c
> +#define CLK_CON_DIV_DIV_CLK_DISPAUD_BUSP                       0x1830
> +#define CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF0                        0x2000
> +#define CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF1                        0x2004
> +#define CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF2                        0x2008
> +#define CLK_CON_GAT_CLK_DISPAUD_CMU_PCLK                       0x200c
> +#define CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF0_CLK              0x2010
> +#define CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF1_CLK              0x2014
> +#define CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF2_CLK              0x2018
> +#define CLK_CON_GAT_CLK_DISPAUD_OSCCLK_CLK                     0x201c
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_ACLK                     0x2020
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_DSIF                        0x2024
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_SPDY                        0x2028
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_ASB                 0x202c
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_CA7                 0x2030
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_DBG                 0x2034
> +#define CLK_CON_GAT_GOUT_DISPAUD_ABOX_OSC_SPDY                 0x2038
> +#define CLK_CON_GAT_GOUT_DISPAUD_AXI_US_32TO128_ACLK           0x203c
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_AUD               0x2040
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_DISP              0x2044
> +#define CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_ACLK                 0x2048
> +#define CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_PCLK                 0x204c
> +#define CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_ACLK                  0x2050
> +#define CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_PCLK                  0x2054
> +#define CLK_CON_GAT_GOUT_DISPAUD_DFTMUX_AUD_CODEC_MCLK         0x2058
> +#define CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DECON                        0x2060
> +#define CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DMA                  0x2064
> +#define CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DPP                  0x2068
> +#define CLK_CON_GAT_GOUT_DISPAUD_GPIO_DISPAUD_PCLK             0x206c
> +#define CLK_CON_GAT_GOUT_DISPAUD_LHM_AXI_P_DISPAUD_CLK         0x2070
> +#define CLK_CON_GAT_GOUT_DISPAUD_LHS_ACEL_D_DPU_CLK            0x2074
> +#define CLK_CON_GAT_GOUT_DISPAUD_LHS_AXI_D_ABOX_CLK            0x2078
> +#define CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_ACLKM            0x207c
> +#define CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_PCLK             0x2080
> +#define CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_ACLK                        0x2084
> +#define CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_PCLK                        0x2088
> +#define CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_ACLK                 0x208c
> +#define CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_PCLK                 0x2090
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_ACLK_CLK          0x2094
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_CLKIN_CLK         0x2098
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_PCLKDBG_CLK       0x209c
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_DSIF_CLK              0x20a0
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CLK                   0x20a4
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_BUSP_CLK                  0x20a8
> +#define CLK_CON_GAT_GOUT_DISPAUD_CLK_DISP_CLK                  0x20ac
> +#define CLK_CON_GAT_GOUT_DISPAUD_SMMU_ABOX_CLK                 0x20b0
> +#define CLK_CON_GAT_GOUT_DISPAUD_SMMU_DPU_CLK                  0x20b4
> +#define CLK_CON_GAT_GOUT_DISPAUD_SYSREG_PCLK                   0x20b8
> +#define CLK_CON_GAT_GOUT_DISPAUD_WDT_AUD_PCLK                  0x20bc
> +
> +static const unsigned long dispaud_clk_regs[] __initconst = {
> +       PLL_LOCKTIME_PLL_AUD,
> +       PLL_CON0_MUX_CLKCMU_DISPAUD_AUD_USER,
> +       PLL_CON2_MUX_CLKCMU_DISPAUD_AUD_USER,
> +       PLL_CON0_MUX_CLKCMU_DISPAUD_CPU_USER,
> +       PLL_CON2_MUX_CLKCMU_DISPAUD_CPU_USER,
> +       PLL_CON0_MUX_CLKCMU_DISPAUD_DISP_USER,
> +       PLL_CON2_MUX_CLKCMU_DISPAUD_DISP_USER,
> +       PLL_CON0_PLL_AUD,
> +       PLL_CON3_PLL_AUD,
> +       CMU_CMU_DISPAUD_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLK_AUD_BUS,
> +       CLK_CON_MUX_MUX_CLK_AUD_CPU,
> +       CLK_CON_MUX_MUX_CLK_AUD_CPU_HCH,
> +       CLK_CON_MUX_MUX_CLK_AUD_FM,
> +       CLK_CON_MUX_MUX_CLK_AUD_UAIF0,
> +       CLK_CON_MUX_MUX_CLK_AUD_UAIF1,
> +       CLK_CON_MUX_MUX_CLK_AUD_UAIF2,
> +       CLK_CON_DIV_DIV_CLK_AUD_AUDIF,
> +       CLK_CON_DIV_DIV_CLK_AUD_BUS,
> +       CLK_CON_DIV_DIV_CLK_AUD_CPU,
> +       CLK_CON_DIV_DIV_CLK_AUD_CPU_ACLK,
> +       CLK_CON_DIV_DIV_CLK_AUD_CPU_PCLKDBG,
> +       CLK_CON_DIV_DIV_CLK_AUD_DSIF,
> +       CLK_CON_DIV_DIV_CLK_AUD_FM,
> +       CLK_CON_DIV_DIV_CLK_AUD_FM_SPDY,
> +       CLK_CON_DIV_DIV_CLK_AUD_UAIF0,
> +       CLK_CON_DIV_DIV_CLK_AUD_UAIF1,
> +       CLK_CON_DIV_DIV_CLK_AUD_UAIF2,
> +       CLK_CON_DIV_DIV_CLK_DISPAUD_BUSP,
> +       CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF0,
> +       CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF1,
> +       CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF2,
> +       CLK_CON_GAT_CLK_DISPAUD_CMU_PCLK,
> +       CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF0_CLK,
> +       CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF1_CLK,
> +       CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF2_CLK,
> +       CLK_CON_GAT_CLK_DISPAUD_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_DSIF,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_SPDY,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_ASB,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_CA7,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_DBG,
> +       CLK_CON_GAT_GOUT_DISPAUD_ABOX_OSC_SPDY,
> +       CLK_CON_GAT_GOUT_DISPAUD_AXI_US_32TO128_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_AUD,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_DISP,
> +       CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_DFTMUX_AUD_CODEC_MCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DECON,
> +       CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DMA,
> +       CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DPP,
> +       CLK_CON_GAT_GOUT_DISPAUD_GPIO_DISPAUD_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_LHM_AXI_P_DISPAUD_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_LHS_ACEL_D_DPU_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_LHS_AXI_D_ABOX_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_ACLKM,
> +       CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_ACLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_ACLK_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_CLKIN_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_PCLKDBG_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_DSIF_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_BUSP_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_CLK_DISP_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_SMMU_ABOX_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_SMMU_DPU_CLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_DISPAUD_WDT_AUD_PCLK,
> +};
> +
> +static const struct samsung_pll_rate_table pll_aud_rate_table[] __initconst = {
> +       PLL_36XX_RATE(26 * MHZ, 1179648040, 45, 1, 0, 24319),
> +       PLL_36XX_RATE(26 * MHZ, 1083801605, 42, 1, 0, -20665),
> +};
> +
> +static const struct samsung_pll_clock dispaud_pll_clks[] __initconst = {
> +       PLL(pll_1061x, CLK_FOUT_AUD_PLL, "fout_aud_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_AUD, PLL_CON0_PLL_AUD, pll_aud_rate_table),
> +};
> +
> +PNAME(mout_pll_dispaud_aud_user_p)     = { "oscclk",
> +                                           "dout_cmu_dispaud_aud" };
> +PNAME(mout_pll_dispaud_cpu_user_p)     = { "oscclk",
> +                                           "dout_cmu_dispaud_cpu" };
> +PNAME(mout_pll_dispaud_disp_user_p)    = { "oscclk",
> +                                           "dout_cmu_dispaud_disp" };
> +PNAME(mout_clk_aud_bus_p)              = { "dout_clk_aud_bus",
> +                                           "mout_pll_dispaud_aud_user" };
> +PNAME(mout_clk_aud_cpu_p)              = { "dout_clk_aud_cpu",
> +                                           "mout_pll_dispaud_cpu_user" };
> +PNAME(mout_clk_aud_cpu_hch_p)          = { "mout_clk_aud_cpu", "oscclk" };
> +PNAME(mout_clk_aud_fm_p)               = { "oscclk",
> +                                           "dout_clk_aud_fm_spdy" };
> +PNAME(mout_clk_aud_uaif0_p)            = { "dout_clk_aud_uaif0",
> +                                           "ioclk_audiocdclk0" };
> +PNAME(mout_clk_aud_uaif1_p)            = { "dout_clk_aud_uaif1",
> +                                           "ioclk_audiocdclk1" };
> +PNAME(mout_clk_aud_uaif2_p)            = { "dout_clk_aud_uaif2",
> +                                           "ioclk_audiocdclk0" };
> +
> +static const struct samsung_mux_clock dispaud_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_DISPAUD_AUD_USER, "mout_pll_dispaud_aud_user", mout_pll_dispaud_aud_user_p,
> +           PLL_CON0_MUX_CLKCMU_DISPAUD_AUD_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_DISPAUD_CPU_USER, "mout_pll_dispaud_cpu_user", mout_pll_dispaud_cpu_user_p,
> +           PLL_CON0_MUX_CLKCMU_DISPAUD_CPU_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_DISPAUD_DISP_USER, "mout_pll_dispaud_disp_user",
> +           mout_pll_dispaud_disp_user_p, PLL_CON0_MUX_CLKCMU_DISPAUD_DISP_USER, 4, 1),
> +       MUX(CLK_MOUT_CLK_AUD_BUS, "mout_clk_aud_bus", mout_clk_aud_bus_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_BUS, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_CPU, "mout_clk_aud_cpu", mout_clk_aud_cpu_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_CPU, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_CPU_HCH, "mout_clk_aud_cpu_hch", mout_clk_aud_cpu_hch_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_CPU_HCH, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_FM, "mout_clk_aud_fm", mout_clk_aud_fm_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_FM, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_UAIF0, "mout_clk_aud_uaif0", mout_clk_aud_uaif0_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_UAIF0, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_UAIF1, "mout_clk_aud_uaif1", mout_clk_aud_uaif1_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_UAIF1, 0, 1),
> +       MUX(CLK_MOUT_CLK_AUD_UAIF2, "mout_clk_aud_uaif2", mout_clk_aud_uaif2_p,
> +           CLK_CON_MUX_MUX_CLK_AUD_UAIF2, 0, 1),
> +};
> +
> +static const struct samsung_div_clock dispaud_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_AUD_AUDIF, "dout_clk_aud_audif", "fout_aud_pll",
> +           CLK_CON_DIV_DIV_CLK_AUD_AUDIF, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_BUS, "dout_clk_aud_bus", "fout_aud_pll",
> +           CLK_CON_DIV_DIV_CLK_AUD_BUS, 0, 3),
> +       DIV(CLK_DOUT_CLK_AUD_CPU, "dout_clk_aud_cpu", "fout_aud_pll",
> +           CLK_CON_DIV_DIV_CLK_AUD_CPU, 0, 4),
> +       DIV(CLK_DOUT_CLK_AUD_CPU_ACLK, "dout_clk_aud_cpu_aclk", "mout_clk_aud_cpu_hch",
> +           CLK_CON_DIV_DIV_CLK_AUD_CPU_ACLK, 0, 3),
> +       DIV(CLK_DOUT_CLK_AUD_CPU_PCLKDBG, "dout_clk_aud_cpu_pclkdbg", "mout_clk_aud_cpu_hch",
> +           CLK_CON_DIV_DIV_CLK_AUD_CPU_PCLKDBG, 0, 3),
> +       DIV(CLK_DOUT_CLK_AUD_DSIF, "dout_clk_aud_dsif", "dout_clk_aud_audif",
> +           CLK_CON_DIV_DIV_CLK_AUD_DSIF, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_FM, "dout_clk_aud_fm", "mout_clk_aud_fm",
> +           CLK_CON_DIV_DIV_CLK_AUD_FM, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_FM_SPDY, "dout_clk_aud_fm_spdy", "tick_usb",
> +           CLK_CON_DIV_DIV_CLK_AUD_FM_SPDY, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_UAIF0, "dout_clk_aud_uaif0", "dout_clk_aud_audif",
> +           CLK_CON_DIV_DIV_CLK_AUD_UAIF0, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_UAIF1, "dout_clk_aud_uaif1", "dout_clk_aud_audif",
> +           CLK_CON_DIV_DIV_CLK_AUD_UAIF1, 0, 9),
> +       DIV(CLK_DOUT_CLK_AUD_UAIF2, "dout_clk_aud_uaif2", "dout_clk_aud_audif",
> +           CLK_CON_DIV_DIV_CLK_AUD_UAIF2, 0, 9),
> +       DIV(CLK_DOUT_CLK_DISPAUD_BUSP, "dout_clk_dispaud_busp", "mout_pll_dispaud_disp_user",
> +           CLK_CON_DIV_DIV_CLK_DISPAUD_BUSP, 0, 3),
> +};
> +
> +static const struct samsung_gate_clock dispaud_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_DISPAUD_ABOX_BCLK_UAIF0, "gout_clk_dispaud_abox_bclk_uaif0",
> +            "mout_clk_aud_uaif0", CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF0,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_ABOX_BCLK_UAIF1, "gout_clk_dispaud_abox_bclk_uaif1",
> +            "mout_clk_aud_uaif1", CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF1,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_ABOX_BCLK_UAIF2, "gout_clk_dispaud_abox_bclk_uaif2",
> +            "mout_clk_aud_uaif2", CLK_CON_GAT_CLK_DISPAUD_ABOX_BCLK_UAIF2,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_CMU_PCLK, "gout_clk_dispaud_cmu_pclk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_CLK_DISPAUD_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_CLK_AUD_UAIF0_CLK, "gout_clk_dispaud_clk_aud_uaif0_clk",
> +            "mout_clk_aud_uaif0", CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF0_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_CLK_AUD_UAIF1_CLK, "gout_clk_dispaud_clk_aud_uaif1_clk",
> +            "mout_clk_aud_uaif1", CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF1_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_CLK_AUD_UAIF2_CLK, "gout_clk_dispaud_clk_aud_uaif2_clk",
> +            "mout_clk_aud_uaif2", CLK_CON_GAT_CLK_DISPAUD_CLK_AUD_UAIF2_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_CLK_DISPAUD_OSCCLK_CLK, "gout_clk_dispaud_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_DISPAUD_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_ACLK, "gout_clk_dispaud_abox_aclk", "mout_clk_aud_bus",
> +            CLK_CON_GAT_GOUT_DISPAUD_ABOX_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_BCLK_DSIF, "gout_clk_dispaud_abox_bclk_dsif",
> +            "dout_clk_aud_dsif", CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_DSIF,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_BCLK_SPDY, "gout_clk_dispaud_abox_bclk_spdy",
> +            "dout_clk_aud_fm", CLK_CON_GAT_GOUT_DISPAUD_ABOX_BCLK_SPDY,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_CCLK_ASB, "gout_clk_dispaud_abox_cclk_asb",
> +            "dout_clk_aud_cpu_aclk", CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_ASB,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_CCLK_CA7, "gout_clk_dispaud_abox_cclk_ca7",
> +            "mout_clk_aud_cpu_hch", CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_CA7,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_CCLK_DBG, "gout_clk_dispaud_abox_cclk_dbg",
> +            "dout_clk_aud_cpu_pclkdbg", CLK_CON_GAT_GOUT_DISPAUD_ABOX_CCLK_DBG,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_ABOX_OSC_SPDY, "gout_clk_dispaud_abox_osc_spdy",
> +            "mout_clk_aud_fm", CLK_CON_GAT_GOUT_DISPAUD_ABOX_OSC_SPDY, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_AXI_US_32TO128_ACLK, "gout_dispaud_axi_us_32to128_aclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_AXI_US_32TO128_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_DISPAUD_AUD, "gout_dispaud_clk_dispaud_aud",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_AUD,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_DISPAUD_DISP, "gout_dispaud_clk_dispaud_disp",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_CLK_DISPAUD_DISP,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_BTM_ABOX_ACLK, "gout_dispaud_btm_abox_aclk", "mout_clk_aud_bus",
> +            CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_BTM_ABOX_PCLK, "gout_dispaud_btm_abox_pclk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_GOUT_DISPAUD_BTM_ABOX_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_BTM_DPU_ACLK, "gout_dispaud_btm_dpu_aclk",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_BTM_DPU_PCLK, "gout_dispaud_btm_dpu_pclk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_GOUT_DISPAUD_BTM_DPU_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_DFTMUX_AUD_CODEC_MCLK, "gout_dispaud_dftmux_aud_codec_mclk",
> +            "dout_clk_aud_audif", CLK_CON_GAT_GOUT_DISPAUD_DFTMUX_AUD_CODEC_MCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_DPU_ACLK_DECON, "gout_dispaud_dpu_aclk_decon",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DECON,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_DPU_ACLK_DMA, "gout_dispaud_dpu_aclk_dma",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DMA,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_DPU_ACLK_DPP, "gout_dispaud_dpu_aclk_dpp",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_DPU_ACLK_DPP,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_GPIO_DISPAUD_PCLK, "gout_dispaud_gpio_dispaud_pclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_GPIO_DISPAUD_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_LHM_AXI_P_DISPAUD_CLK, "gout_dispaud_lhm_axi_p_dispaud_clk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_LHM_AXI_P_DISPAUD_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_LHS_ACEL_D_DPU_CLK, "gout_dispaud_lhs_acel_d_dpu_clk",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_LHS_ACEL_D_DPU_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_LHS_AXI_D_ABOX_CLK, "gout_dispaud_lhs_axi_d_abox_clk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_LHS_AXI_D_ABOX_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PERI_AXI_ASB_ACLKM, "gout_dispaud_peri_axi_asb_aclkm",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_ACLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PERI_AXI_ASB_PCLK, "gout_dispaud_peri_axi_asb_pclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_PERI_AXI_ASB_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PPMU_ABOX_ACLK, "gout_dispaud_ppmu_abox_aclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PPMU_ABOX_PCLK, "gout_dispaud_ppmu_abox_pclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_PPMU_ABOX_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PPMU_DPU_ACLK, "gout_dispaud_ppmu_dpu_aclk",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_PPMU_DPU_PCLK, "gout_dispaud_ppmu_dpu_pclk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_GOUT_DISPAUD_PPMU_DPU_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_AUD_CPU_ACLK_CLK,
> +            "gout_dispaud_clk_aud_cpu_aclk_clk", "dout_clk_aud_cpu_aclk",
> +            CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_ACLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_AUD_CPU_CLKIN_CLK,
> +            "gout_dispaud_clk_aud_cpu_clkin_clk", "mout_clk_aud_cpu_hch",
> +            CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_CLKIN_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_AUD_CPU_PCLKDBG_CLK,
> +            "gout_dispaud_clk_aud_cpu_pclkdbg_clk", "dout_clk_aud_cpu_pclkdbg",
> +            CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CPU_PCLKDBG_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_AUD_DSIF_CLK, "gout_dispaud_clk_aud_dsif_clk",
> +            "dout_clk_aud_dsif", CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_DSIF_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_AUD_CLK, "gout_dispaud_clk_aud_clk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_CLK_AUD_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_BUSP_CLK, "gout_dispaud_clk_busp_clk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_GOUT_DISPAUD_CLK_BUSP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_CLK_DISP_CLK, "gout_dispaud_clk_disp_clk",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_CLK_DISP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_SMMU_ABOX_CLK, "gout_dispaud_smmu_abox_clk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_SMMU_ABOX_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_SMMU_DPU_CLK, "gout_dispaud_smmu_dpu_clk",
> +            "mout_pll_dispaud_disp_user", CLK_CON_GAT_GOUT_DISPAUD_SMMU_DPU_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_SYSREG_PCLK, "gout_dispaud_sysreg_pclk",
> +            "dout_clk_dispaud_busp", CLK_CON_GAT_GOUT_DISPAUD_SYSREG_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_DISPAUD_WDT_AUD_PCLK, "gout_dispaud_wdt_aud_pclk",
> +            "mout_clk_aud_bus", CLK_CON_GAT_GOUT_DISPAUD_WDT_AUD_PCLK,
> +            21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info dispaud_cmu_info __initconst = {
> +       .pll_clks               = dispaud_pll_clks,
> +       .nr_pll_clks            = ARRAY_SIZE(dispaud_pll_clks),
> +       .mux_clks               = dispaud_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(dispaud_mux_clks),
> +       .div_clks               = dispaud_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(dispaud_div_clks),
> +       .gate_clks              = dispaud_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(dispaud_gate_clks),
> +       .nr_clk_ids             = CLKS_NR_DISPAUD,
> +       .clk_regs               = dispaud_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(dispaud_clk_regs),
> +       .sysreg_clk_regs        = drcg_memclk_sysreg,
> +       .nr_sysreg_clk_regs     = ARRAY_SIZE(drcg_memclk_sysreg),
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .drcg_offset            = EXYNOS9610_DRCG_EN_OFFSET,
> +       .memclk_offset          = EXYNOS9610_MEMCLK_OFFSET,
> +       .option_offset          = CMU_CMU_DISPAUD_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_FSYS */
> +#define PLL_CON0_MUX_CLKCMU_FSYS_BUS_USER              0x0100
> +#define PLL_CON2_MUX_CLKCMU_FSYS_BUS_USER              0x0108
> +#define PLL_CON0_MUX_CLKCMU_FSYS_MMC_CARD_USER         0x0120
> +#define PLL_CON2_MUX_CLKCMU_FSYS_MMC_CARD_USER         0x0128
> +#define PLL_CON0_MUX_CLKCMU_FSYS_MMC_EMBD_USER         0x0140
> +#define PLL_CON2_MUX_CLKCMU_FSYS_MMC_EMBD_USER         0x0148
> +#define PLL_CON0_MUX_CLKCMU_FSYS_UFS_EMBD_USER         0x0160
> +#define PLL_CON2_MUX_CLKCMU_FSYS_UFS_EMBD_USER         0x0168
> +#define CMU_CMU_FSYS_CONTROLLER_OPTION                 0x0800
> +#define CLK_CON_GAT_CLK_FSYS_CMU_PCLK                  0x2000
> +#define CLK_CON_GAT_CLK_FSYS_OSCCLK_CLK                        0x2004
> +#define CLK_CON_GAT_GOUT_FSYS_ADM_AHB_SSS_HCLKM                0x2008
> +#define CLK_CON_GAT_GOUT_FSYS_BTM_ACLK                 0x200c
> +#define CLK_CON_GAT_GOUT_FSYS_BTM_PCLK                 0x2010
> +#define CLK_CON_GAT_GOUT_FSYS_GPIO_PCLK                        0x2014
> +#define CLK_CON_GAT_GOUT_FSYS_LHM_AXI_P_CLK            0x2018
> +#define CLK_CON_GAT_GOUT_FSYS_LHS_ACEL_D_CLK           0x201c
> +#define CLK_CON_GAT_GOUT_FSYS_MMC_CARD_ACLK            0x2020
> +#define CLK_CON_GAT_GOUT_FSYS_MMC_CARD_SDCLKIN         0x2024
> +#define CLK_CON_GAT_GOUT_FSYS_MMC_EMBD_ACLK            0x2028
> +#define CLK_CON_GAT_GOUT_FSYS_MMC_EMBD_SDCLKIN         0x202c
> +#define CLK_CON_GAT_GOUT_FSYS_PGEN_LITE_CLK            0x2030
> +#define CLK_CON_GAT_GOUT_FSYS_PPMU_ACLK                        0x2034
> +#define CLK_CON_GAT_GOUT_FSYS_PPMU_PCLK                        0x2038
> +#define CLK_CON_GAT_GOUT_FSYS_BUS_CLK                  0x203c
> +#define CLK_CON_GAT_GOUT_FSYS_RTIC_ACLK                        0x2040
> +#define CLK_CON_GAT_GOUT_FSYS_RTIC_PCLK                        0x2044
> +#define CLK_CON_GAT_GOUT_FSYS_SSS_ACLK                 0x2048
> +#define CLK_CON_GAT_GOUT_FSYS_SSS_PCLK                 0x204c
> +#define CLK_CON_GAT_GOUT_FSYS_SYSREG_PCLK              0x2050
> +#define CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_ACLK            0x2054
> +#define CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_CLK_UNIPRO      0x2058
> +#define CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_FMP_CLK         0x205c
> +#define CLK_CON_GAT_GOUT_FSYS_XIU_D_ACLK               0x2060
> +
> +static const unsigned long fsys_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_FSYS_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_FSYS_BUS_USER,
> +       PLL_CON0_MUX_CLKCMU_FSYS_MMC_CARD_USER,
> +       PLL_CON2_MUX_CLKCMU_FSYS_MMC_CARD_USER,
> +       PLL_CON0_MUX_CLKCMU_FSYS_MMC_EMBD_USER,
> +       PLL_CON2_MUX_CLKCMU_FSYS_MMC_EMBD_USER,
> +       PLL_CON0_MUX_CLKCMU_FSYS_UFS_EMBD_USER,
> +       PLL_CON2_MUX_CLKCMU_FSYS_UFS_EMBD_USER,
> +       CMU_CMU_FSYS_CONTROLLER_OPTION,
> +       CLK_CON_GAT_CLK_FSYS_CMU_PCLK,
> +       CLK_CON_GAT_CLK_FSYS_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_ADM_AHB_SSS_HCLKM,
> +       CLK_CON_GAT_GOUT_FSYS_BTM_ACLK,
> +       CLK_CON_GAT_GOUT_FSYS_BTM_PCLK,
> +       CLK_CON_GAT_GOUT_FSYS_GPIO_PCLK,
> +       CLK_CON_GAT_GOUT_FSYS_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_LHS_ACEL_D_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_MMC_CARD_ACLK,
> +       CLK_CON_GAT_GOUT_FSYS_MMC_EMBD_ACLK,
> +       CLK_CON_GAT_GOUT_FSYS_PGEN_LITE_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_PPMU_ACLK,
> +       CLK_CON_GAT_GOUT_FSYS_PPMU_PCLK,
> +       CLK_CON_GAT_GOUT_FSYS_BUS_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_ACLK,
> +       CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_CLK_UNIPRO,
> +       CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_FMP_CLK,
> +       CLK_CON_GAT_GOUT_FSYS_XIU_D_ACLK,
> +};
> +
> +PNAME(mout_pll_fsys_bus_user_p)                = { "oscclk",
> +                                           "dout_cmu_fsys_bus" };
> +PNAME(mout_pll_fsys_mmc_card_user_p)   = { "oscclk",
> +                                           "dout_cmu_fsys_mmc_card" };
> +PNAME(mout_pll_fsys_mmc_embd_user_p)   = { "oscclk",
> +                                           "dout_cmu_fsys_mmc_embd" };
> +PNAME(mout_pll_fsys_ufs_embd_user_p)   = { "oscclk",
> +                                           "dout_cmu_fsys_ufs_embd" };
> +
> +static const struct samsung_mux_clock fsys_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_FSYS_BUS_USER, "mout_pll_fsys_bus_user", mout_pll_fsys_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_FSYS_BUS_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_FSYS_MMC_CARD_USER, "mout_pll_fsys_mmc_card_user",
> +           mout_pll_fsys_mmc_card_user_p, PLL_CON0_MUX_CLKCMU_FSYS_MMC_CARD_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_FSYS_MMC_EMBD_USER, "mout_pll_fsys_mmc_embd_user",
> +           mout_pll_fsys_mmc_embd_user_p, PLL_CON0_MUX_CLKCMU_FSYS_MMC_EMBD_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_FSYS_UFS_EMBD_USER, "mout_pll_fsys_ufs_embd_user",
> +           mout_pll_fsys_ufs_embd_user_p, PLL_CON0_MUX_CLKCMU_FSYS_UFS_EMBD_USER, 4, 1),
> +};
> +
> +static const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_FSYS_CMU_PCLK, "gout_fsys_cmu_pclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_CLK_FSYS_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_OSCCLK_CLK, "gout_fsys_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_FSYS_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_ADM_AHB_SSS_HCLKM, "gout_fsys_adm_ahb_sss_hclkm",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_ADM_AHB_SSS_HCLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_BTM_ACLK, "gout_fsys_btm_aclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_BTM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_BTM_PCLK, "gout_fsys_btm_pclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_BTM_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_GPIO_PCLK, "gout_fsys_gpio_pclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_GPIO_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_LHM_AXI_P_CLK, "gout_fsys_lhm_axi_p_clk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_LHM_AXI_P_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_LHS_ACEL_D_CLK, "gout_fsys_lhs_acel_d_clk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_LHS_ACEL_D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_MMC_CARD_ACLK, "gout_fsys_mmc_card_aclk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_MMC_CARD_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_MMC_CARD_SDCLKIN, "gout_fsys_mmc_card_sdclkin",
> +            "mout_pll_fsys_mmc_card_user", CLK_CON_GAT_GOUT_FSYS_MMC_CARD_SDCLKIN,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_MMC_EMBD_ACLK, "gout_fsys_mmc_embd_aclk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_MMC_EMBD_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_MMC_EMBD_SDCLKIN, "gout_fsys_mmc_embd_sdclkin",
> +            "mout_pll_fsys_mmc_embd_user", CLK_CON_GAT_GOUT_FSYS_MMC_EMBD_SDCLKIN,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_PGEN_LITE_CLK, "gout_fsys_pgen_lite_clk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_PGEN_LITE_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_PPMU_ACLK, "gout_fsys_ppmu_aclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_PPMU_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_PPMU_PCLK, "gout_fsys_ppmu_pclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_PPMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_BUS_CLK, "gout_fsys_bus_clk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_BUS_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_SYSREG_PCLK, "gout_fsys_sysreg_pclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_UFS_EMBD_ACLK, "gout_fsys_ufs_embd_aclk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_ACLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_UFS_EMBD_CLK_UNIPRO, "gout_fsys_ufs_embd_clk_unipro",
> +            "mout_pll_fsys_ufs_embd_user", CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_CLK_UNIPRO,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_UFS_EMBD_FMP_CLK, "gout_fsys_ufs_embd_fmp_clk",
> +            "mout_pll_fsys_bus_user", CLK_CON_GAT_GOUT_FSYS_UFS_EMBD_FMP_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_FSYS_XIU_D_ACLK, "gout_fsys_xiu_d_aclk", "mout_pll_fsys_bus_user",
> +            CLK_CON_GAT_GOUT_FSYS_XIU_D_ACLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info fsys_cmu_info __initconst = {
> +       .mux_clks               = fsys_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(fsys_mux_clks),
> +       .gate_clks              = fsys_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(fsys_gate_clks),
> +       .clk_regs               = fsys_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(fsys_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_FSYS,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_FSYS_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_G2D */
> +#define PLL_CON0_MUX_CLKCMU_G2D_G2D_USER       0x0100
> +#define PLL_CON2_MUX_CLKCMU_G2D_G2D_USER       0x0108
> +#define PLL_CON0_MUX_CLKCMU_G2D_MSCL_USER      0x0120
> +#define PLL_CON2_MUX_CLKCMU_G2D_MSCL_USER      0x0128
> +#define CMU_CMU_G2D_CONTROLLER_OPTION          0x0800
> +#define CLK_CON_DIV_DIV_CLK_G2D_BUSP           0x1800
> +#define CLK_CON_GAT_CLK_G2D_CMU_PCLK           0x2000
> +#define CLK_CON_GAT_CLK_G2D_OSCCLK_CLK         0x2004
> +#define CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKM 0x2008
> +#define CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKS 0x200c
> +#define CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKM 0x2010
> +#define CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKS 0x2014
> +#define CLK_CON_GAT_GOUT_G2D_CLK_G2D_G2D       0x2018
> +#define CLK_CON_GAT_GOUT_G2D_CLK_G2D_MSCL      0x201c
> +#define CLK_CON_GAT_GOUT_G2D_BTM_ACLK          0x2020
> +#define CLK_CON_GAT_GOUT_G2D_BTM_PCLK          0x2024
> +#define CLK_CON_GAT_GOUT_G2D_G2D_ACLK          0x2028
> +#define CLK_CON_GAT_GOUT_G2D_JPEG_FIMP_CLK     0x202c
> +#define CLK_CON_GAT_GOUT_G2D_LHM_AXI_P_CLK     0x2030
> +#define CLK_CON_GAT_GOUT_G2D_LHS_ACEL_D_CLK    0x2034
> +#define CLK_CON_GAT_GOUT_G2D_MSCL_ACLK         0x2038
> +#define CLK_CON_GAT_GOUT_G2D_PGEN100_LITE_CLK  0x203c
> +#define CLK_CON_GAT_GOUT_G2D_PPMU_ACLK         0x2040
> +#define CLK_CON_GAT_GOUT_G2D_PPMU_PCLK         0x2044
> +#define CLK_CON_GAT_GOUT_G2D_BUSP_CLK          0x2048
> +#define CLK_CON_GAT_GOUT_G2D_G2D_CLK           0x204c
> +#define CLK_CON_GAT_GOUT_G2D_MSCL_CLK          0x2050
> +#define CLK_CON_GAT_GOUT_G2D_SYSMMU_CLK                0x2054
> +#define CLK_CON_GAT_GOUT_G2D_SYSREG_PCLK       0x2058
> +#define CLK_CON_GAT_GOUT_G2D_XIU_D_MSCL_ACLK   0x205c
> +
> +static const unsigned long g2d_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_G2D_G2D_USER,
> +       PLL_CON2_MUX_CLKCMU_G2D_G2D_USER,
> +       PLL_CON0_MUX_CLKCMU_G2D_MSCL_USER,
> +       PLL_CON2_MUX_CLKCMU_G2D_MSCL_USER,
> +       CMU_CMU_G2D_CONTROLLER_OPTION,
> +       CLK_CON_DIV_DIV_CLK_G2D_BUSP,
> +       CLK_CON_GAT_CLK_G2D_CMU_PCLK,
> +       CLK_CON_GAT_CLK_G2D_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKM,
> +       CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKS,
> +       CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKM,
> +       CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKS,
> +       CLK_CON_GAT_GOUT_G2D_CLK_G2D_G2D,
> +       CLK_CON_GAT_GOUT_G2D_CLK_G2D_MSCL,
> +       CLK_CON_GAT_GOUT_G2D_BTM_ACLK,
> +       CLK_CON_GAT_GOUT_G2D_BTM_PCLK,
> +       CLK_CON_GAT_GOUT_G2D_G2D_ACLK,
> +       CLK_CON_GAT_GOUT_G2D_JPEG_FIMP_CLK,
> +       CLK_CON_GAT_GOUT_G2D_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_G2D_LHS_ACEL_D_CLK,
> +       CLK_CON_GAT_GOUT_G2D_MSCL_ACLK,
> +       CLK_CON_GAT_GOUT_G2D_PGEN100_LITE_CLK,
> +       CLK_CON_GAT_GOUT_G2D_PPMU_ACLK,
> +       CLK_CON_GAT_GOUT_G2D_PPMU_PCLK,
> +       CLK_CON_GAT_GOUT_G2D_BUSP_CLK,
> +       CLK_CON_GAT_GOUT_G2D_G2D_CLK,
> +       CLK_CON_GAT_GOUT_G2D_MSCL_CLK,
> +       CLK_CON_GAT_GOUT_G2D_SYSMMU_CLK,
> +       CLK_CON_GAT_GOUT_G2D_SYSREG_PCLK,
> +       CLK_CON_GAT_GOUT_G2D_XIU_D_MSCL_ACLK,
> +};
> +
> +PNAME(mout_pll_g2d_g2d_user_p) = { "oscclk", "dout_cmu_g2d_g2d" };
> +PNAME(mout_pll_g2d_mscl_user_p) = { "oscclk", "dout_cmu_g2d_mscl" };
> +
> +static const struct samsung_mux_clock g2d_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_PLL_G2D_G2D_USER, "mout_pll_g2d_g2d_user", mout_pll_g2d_g2d_user_p,
> +           PLL_CON0_MUX_CLKCMU_G2D_G2D_USER, 4, 1),
> +       MUX(CLK_MOUT_PLL_G2D_MSCL_USER, "mout_pll_g2d_mscl_user", mout_pll_g2d_mscl_user_p,
> +           PLL_CON0_MUX_CLKCMU_G2D_MSCL_USER, 4, 1),
> +};
> +
> +static const struct samsung_div_clock g2d_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_G2D_BUSP, "dout_clk_g2d_busp", "mout_pll_g2d_mscl_user",
> +           CLK_CON_DIV_DIV_CLK_G2D_BUSP, 0, 3),
> +};
> +
> +static const struct samsung_gate_clock g2d_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_G2D_CMU_PCLK, "gout_clk_g2d_cmu_pclk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_CLK_G2D_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_G2D_OSCCLK_CLK, "gout_clk_g2d_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_G2D_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_AS_AXI_JPEG_ACLKM, "gout_g2d_as_axi_jpeg_aclkm",
> +            "mout_pll_g2d_g2d_user", CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G2D_AS_AXI_JPEG_ACLKS, "gout_g2d_as_axi_jpeg_aclks",
> +            "mout_pll_g2d_mscl_user", CLK_CON_GAT_GOUT_G2D_AS_AXI_JPEG_ACLKS,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G2D_AS_AXI_MSCL_ACLKM, "gout_g2d_as_axi_mscl_aclkm",
> +            "mout_pll_g2d_g2d_user", CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKM,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G2D_AS_AXI_MSCL_ACLKS, "gout_g2d_as_axi_mscl_aclks",
> +            "mout_pll_g2d_mscl_user", CLK_CON_GAT_GOUT_G2D_AS_AXI_MSCL_ACLKS,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G2D_CLK_G2D_G2D, "gout_g2d_clk_g2d_g2d", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_CLK_G2D_G2D, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_CLK_G2D_MSCL, "gout_g2d_clk_g2d_mscl", "mout_pll_g2d_mscl_user",
> +            CLK_CON_GAT_GOUT_G2D_CLK_G2D_MSCL, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_BTM_ACLK, "gout_g2d_btm_aclk", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_BTM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_BTM_PCLK, "gout_g2d_btm_pclk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_BTM_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_G2D_ACLK, "gout_g2d_g2d_aclk", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_G2D_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_JPEG_FIMP_CLK, "gout_g2d_jpeg_fimp_clk", "mout_pll_g2d_mscl_user",
> +            CLK_CON_GAT_GOUT_G2D_JPEG_FIMP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_LHM_AXI_P_CLK, "gout_g2d_lhm_axi_p_clk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_LHM_AXI_P_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_LHS_ACEL_D_CLK, "gout_g2d_lhs_acel_d_clk", "mout_pll_g2d_mscl_user",
> +            CLK_CON_GAT_GOUT_G2D_LHS_ACEL_D_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_MSCL_ACLK, "gout_g2d_mscl_aclk", "mout_pll_g2d_mscl_user",
> +            CLK_CON_GAT_GOUT_G2D_MSCL_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_PGEN100_LITE_CLK, "gout_g2d_pgen100_lite_clk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_PGEN100_LITE_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_PPMU_ACLK, "gout_g2d_ppmu_aclk", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_PPMU_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_PPMU_PCLK, "gout_g2d_ppmu_pclk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_PPMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_BUSP_CLK, "gout_g2d_busp_clk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_BUSP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_SYSMMU_CLK, "gout_g2d_sysmmu_clk", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_SYSMMU_CLK, 21, CLK_IGNORE_UNUSED, 0),
> +       GATE(CLK_GOUT_G2D_SYSREG_PCLK, "gout_g2d_sysreg_pclk", "dout_clk_g2d_busp",
> +            CLK_CON_GAT_GOUT_G2D_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G2D_XIU_D_MSCL_ACLK, "gout_g2d_xiu_d_mscl_aclk", "mout_pll_g2d_g2d_user",
> +            CLK_CON_GAT_GOUT_G2D_XIU_D_MSCL_ACLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info g2d_cmu_info __initconst = {
> +       .mux_clks               = g2d_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(g2d_mux_clks),
> +       .div_clks               = g2d_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(g2d_div_clks),
> +       .gate_clks              = g2d_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(g2d_gate_clks),
> +       .clk_regs               = g2d_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(g2d_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_G2D,
> +       .sysreg_clk_regs        = drcg_memclk_sysreg,
> +       .nr_sysreg_clk_regs     = ARRAY_SIZE(drcg_memclk_sysreg),
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .drcg_offset            = EXYNOS9610_DRCG_EN_OFFSET,
> +       .memclk_offset          = EXYNOS9610_MEMCLK_OFFSET,
> +       .option_offset          = CMU_CMU_G2D_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_G3D */
> +#define PLL_LOCKTIME_PLL_G3D                   0x0000
> +#define PLL_CON0_MUX_CLKCMU_G3D_SWITCH_USER    0x0100
> +#define PLL_CON2_MUX_CLKCMU_G3D_SWITCH_USER    0x0108
> +#define PLL_CON0_PLL_G3D                       0x0120
> +#define CMU_CMU_G3D_CONTROLLER_OPTION          0x0800
> +#define CLK_CON_MUX_MUX_CLK_G3D_BUSD           0x1004
> +#define CLK_CON_DIV_DIV_CLK_G3D_BUSD           0x1800
> +#define CLK_CON_DIV_DIV_CLK_G3D_BUSP           0x1804
> +#define CLK_CON_GAT_CLK_G3D_CMU_PCLK           0x2000
> +#define CLK_CON_GAT_CLK_G3D_G3D_CLK            0x2004
> +#define CLK_CON_GAT_CLK_G3D_HPM_TARGETCLK_C    0x2008
> +#define CLK_CON_GAT_CLK_G3D_OSCCLK_CLK         0x200c
> +#define CLK_CON_GAT_GOUT_G3D_BTM_ACLK          0x2014
> +#define CLK_CON_GAT_GOUT_G3D_BTM_PCLK          0x2018
> +#define CLK_CON_GAT_GOUT_G3D_BUSIF_HPMG3D_PCLK 0x201c
> +#define CLK_CON_GAT_GOUT_G3D_GRAY2BIN_CLK      0x2020
> +#define CLK_CON_GAT_GOUT_G3D_LHM_AXI_G3DSFR_CLK        0x2024
> +#define CLK_CON_GAT_GOUT_G3D_LHM_AXI_P_CLK     0x2028
> +#define CLK_CON_GAT_GOUT_G3D_LHS_AXI_D_CLK     0x202c
> +#define CLK_CON_GAT_GOUT_G3D_LHS_AXI_G3DSFR_CLK        0x2030
> +#define CLK_CON_GAT_GOUT_G3D_PGEN_LITE_CLK     0x2034
> +#define CLK_CON_GAT_GOUT_G3D_BUSD_CLK          0x2038
> +#define CLK_CON_GAT_GOUT_G3D_BUSP_CLK          0x203c
> +#define CLK_CON_GAT_GOUT_G3D_SYSREG_PCLK       0x2040
> +
> +static const unsigned long g3d_clk_regs[] __initconst = {
> +       PLL_LOCKTIME_PLL_G3D,
> +       PLL_CON0_MUX_CLKCMU_G3D_SWITCH_USER,
> +       PLL_CON2_MUX_CLKCMU_G3D_SWITCH_USER,
> +       PLL_CON0_PLL_G3D,
> +       CMU_CMU_G3D_CONTROLLER_OPTION,
> +       CLK_CON_MUX_MUX_CLK_G3D_BUSD,
> +       CLK_CON_DIV_DIV_CLK_G3D_BUSD,
> +       CLK_CON_DIV_DIV_CLK_G3D_BUSP,
> +       CLK_CON_GAT_CLK_G3D_CMU_PCLK,
> +       CLK_CON_GAT_CLK_G3D_G3D_CLK,
> +       CLK_CON_GAT_CLK_G3D_HPM_TARGETCLK_C,
> +       CLK_CON_GAT_CLK_G3D_OSCCLK_CLK,
> +       CLK_CON_GAT_GOUT_G3D_BTM_ACLK,
> +       CLK_CON_GAT_GOUT_G3D_BTM_PCLK,
> +       CLK_CON_GAT_GOUT_G3D_BUSIF_HPMG3D_PCLK,
> +       CLK_CON_GAT_GOUT_G3D_GRAY2BIN_CLK,
> +       CLK_CON_GAT_GOUT_G3D_LHM_AXI_G3DSFR_CLK,
> +       CLK_CON_GAT_GOUT_G3D_LHM_AXI_P_CLK,
> +       CLK_CON_GAT_GOUT_G3D_LHS_AXI_D_CLK,
> +       CLK_CON_GAT_GOUT_G3D_LHS_AXI_G3DSFR_CLK,
> +       CLK_CON_GAT_GOUT_G3D_PGEN_LITE_CLK,
> +       CLK_CON_GAT_GOUT_G3D_BUSD_CLK,
> +       CLK_CON_GAT_GOUT_G3D_BUSP_CLK,
> +       CLK_CON_GAT_GOUT_G3D_SYSREG_PCLK,
> +};
> +
> +static const struct samsung_pll_rate_table pll_g3d_rate_table[] __initconst = {
> +       PLL_35XX_RATE(26 * MHZ, 750000000, 375, 13, 0),
> +       PLL_35XX_RATE(26 * MHZ, 1000000000, 500, 13, 0),
> +       PLL_35XX_RATE(26 * MHZ, 1200000000, 600, 13, 0),
> +       PLL_35XX_RATE(26 * MHZ, 330000000, 660, 13, 2),
> +       PLL_35XX_RATE(26 * MHZ, 550000000, 550, 13, 1),
> +};
> +
> +static const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
> +       PLL(pll_1052x, CLK_FOUT_G3D_PLL, "fout_g3d_pll", "oscclk",
> +           PLL_LOCKTIME_PLL_G3D, PLL_CON0_PLL_G3D,
> +           pll_g3d_rate_table),
> +};
> +
> +PNAME(mout_g3d_switch_user_p)  = { "oscclk", "dout_cmu_g3d_switch" };
> +PNAME(mout_clk_g3d_busd_p)     = { "fout_g3d_pll",
> +                                   "mout_g3d_switch_user" };
> +
> +static const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_G3D_SWITCH_USER, "mout_g3d_switch_user", mout_g3d_switch_user_p,
> +           PLL_CON0_MUX_CLKCMU_G3D_SWITCH_USER, 4, 1),
> +       MUX(CLK_MOUT_CLK_G3D_BUSD, "mout_clk_g3d_busd", mout_clk_g3d_busd_p,
> +           CLK_CON_MUX_MUX_CLK_G3D_BUSD, 0, 1),
> +};
> +
> +static const struct samsung_div_clock g3d_div_clks[] __initconst = {
> +       DIV(CLK_DOUT_CLK_G3D_BUSD, "dout_clk_g3d_busd", "mout_clk_g3d_busd",
> +           CLK_CON_DIV_DIV_CLK_G3D_BUSD, 0, 1),
> +       DIV(CLK_DOUT_CLK_G3D_BUSP, "dout_clk_g3d_busp", "mout_clk_g3d_busd",
> +           CLK_CON_DIV_DIV_CLK_G3D_BUSP, 0, 3),
> +};
> +
> +static const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_G3D_CMU_PCLK, "gout_clk_g3d_cmu_pclk", "dout_clk_g3d_busp",
> +            CLK_CON_GAT_CLK_G3D_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_G3D_G3D_CLK, "gout_clk_g3d_g3d_clk", "dout_clk_g3d_busd",
> +            CLK_CON_GAT_CLK_G3D_G3D_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_G3D_HPM_TARGETCLK_C, "gout_clk_g3d_hpm_targetclk_c",
> +            "dout_cmu_hpm", CLK_CON_GAT_CLK_G3D_HPM_TARGETCLK_C, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_G3D_OSCCLK_CLK, "gout_clk_g3d_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_G3D_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G3D_BTM_ACLK, "gout_g3d_btm_aclk", "dout_clk_g3d_busd",
> +            CLK_CON_GAT_GOUT_G3D_BTM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G3D_BTM_PCLK, "gout_g3d_btm_pclk", "dout_clk_g3d_busp",
> +            CLK_CON_GAT_GOUT_G3D_BTM_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G3D_BUSIF_HPMG3D_PCLK, "gout_g3d_busif_hpmg3d_pclk",
> +            "dout_clk_g3d_busp", CLK_CON_GAT_GOUT_G3D_BUSIF_HPMG3D_PCLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_GRAY2BIN_CLK, "gout_g3d_gray2bin_clk",
> +            "dout_clk_g3d_busd", CLK_CON_GAT_GOUT_G3D_GRAY2BIN_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_LHM_AXI_G3DSFR_CLK, "gout_g3d_lhm_axi_g3dsfr_clk",
> +            "dout_clk_g3d_busd", CLK_CON_GAT_GOUT_G3D_LHM_AXI_G3DSFR_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_LHM_AXI_P_CLK, "gout_g3d_lhm_axi_p_clk",
> +            "dout_clk_g3d_busp", CLK_CON_GAT_GOUT_G3D_LHM_AXI_P_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_LHS_AXI_D_CLK, "gout_g3d_lhs_axi_d_clk",
> +            "dout_clk_g3d_busd", CLK_CON_GAT_GOUT_G3D_LHS_AXI_D_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_LHS_AXI_G3DSFR_CLK, "gout_g3d_lhs_axi_g3dsfr_clk",
> +            "dout_clk_g3d_busp", CLK_CON_GAT_GOUT_G3D_LHS_AXI_G3DSFR_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_PGEN_LITE_CLK, "gout_g3d_pgen_lite_clk",
> +            "dout_clk_g3d_busp", CLK_CON_GAT_GOUT_G3D_PGEN_LITE_CLK,
> +            21, 0, 0),
> +       GATE(CLK_GOUT_G3D_BUSD_CLK, "gout_g3d_busd_clk", "dout_clk_g3d_busd",
> +            CLK_CON_GAT_GOUT_G3D_BUSD_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G3D_BUSP_CLK, "gout_g3d_busp_clk", "dout_clk_g3d_busp",
> +            CLK_CON_GAT_GOUT_G3D_BUSP_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_G3D_SYSREG_PCLK, "gout_g3d_sysreg_pclk", "dout_clk_g3d_busp",
> +            CLK_CON_GAT_GOUT_G3D_SYSREG_PCLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info g3d_cmu_info __initconst = {
> +       .pll_clks               = g3d_pll_clks,
> +       .nr_pll_clks            = ARRAY_SIZE(g3d_pll_clks),
> +       .mux_clks               = g3d_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(g3d_mux_clks),
> +       .div_clks               = g3d_div_clks,
> +       .nr_div_clks            = ARRAY_SIZE(g3d_div_clks),
> +       .gate_clks              = g3d_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(g3d_gate_clks),
> +       .clk_regs               = g3d_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(g3d_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_G3D,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_G3D_CONTROLLER_OPTION,
> +};
> +
> +/* CMU_USB */
> +#define PLL_CON0_MUX_CLKCMU_USB_BUS_USER               0x0100
> +#define PLL_CON2_MUX_CLKCMU_USB_BUS_USER               0x0108
> +#define PLL_CON0_MUX_CLKCMU_USB_DPGTC_USER             0x0120
> +#define PLL_CON2_MUX_CLKCMU_USB_DPGTC_USER             0x0128
> +#define PLL_CON0_MUX_CLKCMU_USB_USB30DRD_USER          0x0140
> +#define PLL_CON2_MUX_CLKCMU_USB_USB30DRD_USER          0x0148
> +#define CMU_CMU_USB_CONTROLLER_OPTION                  0x0800
> +#define CLK_CON_GAT_CLK_USB_OSCCLK_CLK                 0x2000
> +#define CLK_CON_GAT_CLK_USB_CMU_PCLK                   0x2004
> +#define CLK_CON_GOUT_USB_BTM_ACLK                      0x2008
> +#define CLK_CON_GOUT_USB_BTM_PCLK                      0x200c
> +#define CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_DP_GTC_CLK  0x2010
> +#define CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_PCLK                0x2014
> +#define CLK_CON_GOUT_USB_LHM_AXI_P_CLK                 0x2018
> +#define CLK_CON_GOUT_USB_LHS_ACEL_D_CLK                        0x201c
> +#define CLK_CON_GOUT_USB_PGEN_LITE_CLK                 0x2020
> +#define CLK_CON_GOUT_USB_PPMU_ACLK                     0x2024
> +#define CLK_CON_GOUT_USB_PPMU_PCLK                     0x2028
> +#define CLK_CON_GOUT_USB_BUS_CLK                       0x202c
> +#define CLK_CON_GOUT_USB_SYSREG_PCLK                   0x2030
> +#define CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_20      0x2034
> +#define CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_0    0x2038
> +#define CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_1    0x203c
> +#define CLK_CON_GOUT_USB_USB30DRD_BUS_CLK_EARLY                0x2040
> +#define CLK_CON_GOUT_USB_USB30DRD_REF_CLK              0x2044
> +#define CLK_CON_GOUT_USB_US_D_ACLK                     0x2048
> +
> +static const unsigned long usb_clk_regs[] __initconst = {
> +       PLL_CON0_MUX_CLKCMU_USB_BUS_USER,
> +       PLL_CON2_MUX_CLKCMU_USB_BUS_USER,
> +       PLL_CON0_MUX_CLKCMU_USB_DPGTC_USER,
> +       PLL_CON2_MUX_CLKCMU_USB_DPGTC_USER,
> +       PLL_CON0_MUX_CLKCMU_USB_USB30DRD_USER,
> +       PLL_CON2_MUX_CLKCMU_USB_USB30DRD_USER,
> +       CMU_CMU_USB_CONTROLLER_OPTION,
> +       CLK_CON_GAT_CLK_USB_OSCCLK_CLK,
> +       CLK_CON_GAT_CLK_USB_CMU_PCLK,
> +       CLK_CON_GOUT_USB_BTM_ACLK,
> +       CLK_CON_GOUT_USB_BTM_PCLK,
> +       CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_DP_GTC_CLK,
> +       CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_PCLK,
> +       CLK_CON_GOUT_USB_LHM_AXI_P_CLK,
> +       CLK_CON_GOUT_USB_LHS_ACEL_D_CLK,
> +       CLK_CON_GOUT_USB_PGEN_LITE_CLK,
> +       CLK_CON_GOUT_USB_PPMU_ACLK,
> +       CLK_CON_GOUT_USB_PPMU_PCLK,
> +       CLK_CON_GOUT_USB_BUS_CLK,
> +       CLK_CON_GOUT_USB_SYSREG_PCLK,
> +       CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_20,
> +       CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_0,
> +       CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_1,
> +       CLK_CON_GOUT_USB_USB30DRD_BUS_CLK_EARLY,
> +       CLK_CON_GOUT_USB_USB30DRD_REF_CLK,
> +       CLK_CON_GOUT_USB_US_D_ACLK,
> +};
> +
> +PNAME(mout_usb_bus_user_p)     = { "oscclk", "dout_cmu_usb_bus" };
> +PNAME(mout_usb_dpgtc_user_p)   = { "oscclk", "dout_cmu_usb_dpgtc" };
> +PNAME(mout_usb_usb30drd_user_p)        = { "oscclk", "dout_cmu_usb_usb30drd" };
> +
> +static const struct samsung_mux_clock usb_mux_clks[] __initconst = {
> +       MUX(CLK_MOUT_USB_BUS_USER, "mout_usb_bus_user", mout_usb_bus_user_p,
> +           PLL_CON0_MUX_CLKCMU_USB_BUS_USER, 4, 1),
> +       MUX(CLK_MOUT_USB_DPGTC_USER, "mout_usb_dpgtc_user", mout_usb_dpgtc_user_p,
> +           PLL_CON0_MUX_CLKCMU_USB_DPGTC_USER, 4, 1),
> +       MUX(CLK_MOUT_USB_USB30DRD_USER, "mout_usb_usb30drd_user", mout_usb_usb30drd_user_p,
> +           PLL_CON0_MUX_CLKCMU_USB_USB30DRD_USER, 4, 1),
> +};
> +
> +static const struct samsung_gate_clock usb_gate_clks[] __initconst = {
> +       GATE(CLK_GOUT_CLK_USB_OSCCLK_CLK, "gout_clk_usb_oscclk_clk", "oscclk",
> +            CLK_CON_GAT_CLK_USB_OSCCLK_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_CLK_USB_CMU_PCLK, "gout_clk_usb_cmu_pclk", "mout_usb_bus_user",
> +            CLK_CON_GAT_CLK_USB_CMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_BTM_ACLK, "gout_usb_btm_aclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_BTM_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_BTM_PCLK, "gout_usb_btm_pclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_BTM_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_DP_LINK_DPTX_LINK_DT_GTC_CLK, "gout_usb_dp_link_dptx_link_dt_gtc_clk",
> +            "mout_usb_dpgtc_user", CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_DP_GTC_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_DP_LINK_DPTX_LINK_PCLK, "gout_usb_dp_link_dptx_link_pclk",
> +            "mout_usb_bus_user", CLK_CON_GOUT_USB_DP_LINK_DPTX_LINK_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_LHM_AXI_P_CLK, "gout_usb_lhm_axi_p_clk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_LHM_AXI_P_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_LHS_ACEL_D_CLK, "gout_usb_lhs_acel_d_clk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_LHS_ACEL_D_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_PGEN_LITE_CLK, "gout_usb_pgen_lite_clk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_PGEN_LITE_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_PPMU_ACLK, "gout_usb_ppmu_aclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_PPMU_ACLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_PPMU_PCLK, "gout_usb_ppmu_pclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_PPMU_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_BUS_CLK, "gout_usb_bus_clk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_BUS_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_SYSREG_PCLK, "gout_usb_sysreg_pclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_SYSREG_PCLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_USB30DRD_ACLK_PHYCTRL_20, "gout_usb_usb30drd_aclk_phyctrl_20",
> +            "mout_usb_bus_user", CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_20, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_0, "gout_usb_usb30drd_aclk_phyctrl_30_0",
> +            "mout_usb_bus_user", CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_0, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_1, "gout_usb_usb30drd_aclk_phyctrl_30_1",
> +            "mout_usb_bus_user", CLK_CON_GOUT_USB_USB30DRD_ACLK_PHYCTRL_30_1, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_USB30DRD_BUS_CLK_EARLY, "gout_usb_usb30drd_bus_clk_early",
> +            "mout_usb_bus_user", CLK_CON_GOUT_USB_USB30DRD_BUS_CLK_EARLY, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_USB30DRD_REF_CLK, "gout_usb_usb30drd_ref_clk",
> +            "mout_usb_usb30drd_user", CLK_CON_GOUT_USB_USB30DRD_REF_CLK, 21, 0, 0),
> +       GATE(CLK_GOUT_USB_US_D_ACLK, "gout_usb_us_d_aclk", "mout_usb_bus_user",
> +            CLK_CON_GOUT_USB_US_D_ACLK, 21, 0, 0),
> +};
> +
> +static const struct samsung_cmu_info usb_cmu_info __initconst = {
> +       .mux_clks               = usb_mux_clks,
> +       .nr_mux_clks            = ARRAY_SIZE(usb_mux_clks),
> +       .gate_clks              = usb_gate_clks,
> +       .nr_gate_clks           = ARRAY_SIZE(usb_gate_clks),
> +       .clk_regs               = usb_clk_regs,
> +       .nr_clk_regs            = ARRAY_SIZE(usb_clk_regs),
> +       .nr_clk_ids             = CLKS_NR_USB,
> +       .auto_clock_gate        = true,
> +       .gate_dbg_offset        = EXYNOS9610_GATE_DBG_OFFSET,
> +       .option_offset          = CMU_CMU_USB_CONTROLLER_OPTION,
> +};
> +
> +static int __init exynos9610_cmu_probe(struct platform_device *pdev)
> +{
> +       const struct samsung_cmu_info *info;
> +       struct device *dev = &pdev->dev;
> +
> +       info = of_device_get_match_data(dev);
> +       exynos_arm64_register_cmu(dev, dev->of_node, info);
> +
> +       return 0;
> +}
> +
> +static const struct of_device_id exynos9610_cmu_of_match[] = {
> +       {
> +               .compatible = "samsung,exynos9610-cmu-cam",
> +               .data = &cam_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-cmgp",
> +               .data = &cmgp_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-core",
> +               .data = &core_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-dispaud",
> +               .data = &dispaud_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-fsys",
> +               .data = &fsys_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-g2d",
> +               .data = &g2d_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-g3d",
> +               .data = &g3d_cmu_info,
> +       },
> +       {
> +               .compatible = "samsung,exynos9610-cmu-usb",
> +               .data = &usb_cmu_info,
> +       },
> +       { }
> +};
> +
> +static struct platform_driver exynos9610_cmu_driver __refdata = {
> +       .driver = {
> +               .name = "exynos9610-cmu",
> +               .of_match_table = exynos9610_cmu_of_match,
> +               .suppress_bind_attrs = true,
> +       },
> +       .probe = exynos9610_cmu_probe,
> +};
> +
> +static int __init exynos9610_cmu_init(void)
> +{
> +       return platform_driver_register(&exynos9610_cmu_driver);
> +}
> +core_initcall(exynos9610_cmu_init);

>
> --
> 2.54.0
>