^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2014 Samsung Electronics Co., Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Author: Chanwoo Choi <cw00.choi@samsung.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Common Clock Framework support for Exynos5433 SoC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/clk.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/clk-provider.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/of.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/of_address.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/of_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/pm_runtime.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <linux/slab.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <dt-bindings/clock/exynos5433.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #include "clk.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include "clk-cpu.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #include "clk-pll.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * Register offset definitions for CMU_TOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define ISP_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define AUD_PLL_LOCK 0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define ISP_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define ISP_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define ISP_PLL_FREQ_DET 0x0108
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define AUD_PLL_CON0 0x0110
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define AUD_PLL_CON1 0x0114
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define AUD_PLL_CON2 0x0118
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define AUD_PLL_FREQ_DET 0x011c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define MUX_SEL_TOP0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define MUX_SEL_TOP1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define MUX_SEL_TOP2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define MUX_SEL_TOP3 0x020c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define MUX_SEL_TOP4 0x0210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define MUX_SEL_TOP_MSCL 0x0220
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define MUX_SEL_TOP_CAM1 0x0224
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define MUX_SEL_TOP_DISP 0x0228
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define MUX_SEL_TOP_FSYS0 0x0230
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define MUX_SEL_TOP_FSYS1 0x0234
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define MUX_SEL_TOP_PERIC0 0x0238
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define MUX_SEL_TOP_PERIC1 0x023c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define MUX_ENABLE_TOP0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define MUX_ENABLE_TOP1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define MUX_ENABLE_TOP2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define MUX_ENABLE_TOP3 0x030c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define MUX_ENABLE_TOP4 0x0310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define MUX_ENABLE_TOP_MSCL 0x0320
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define MUX_ENABLE_TOP_CAM1 0x0324
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define MUX_ENABLE_TOP_DISP 0x0328
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define MUX_ENABLE_TOP_FSYS0 0x0330
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define MUX_ENABLE_TOP_FSYS1 0x0334
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define MUX_ENABLE_TOP_PERIC0 0x0338
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define MUX_ENABLE_TOP_PERIC1 0x033c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define MUX_STAT_TOP0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define MUX_STAT_TOP1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define MUX_STAT_TOP2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define MUX_STAT_TOP3 0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define MUX_STAT_TOP4 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define MUX_STAT_TOP_MSCL 0x0420
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define MUX_STAT_TOP_CAM1 0x0424
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define MUX_STAT_TOP_FSYS0 0x0430
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define MUX_STAT_TOP_FSYS1 0x0434
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define MUX_STAT_TOP_PERIC0 0x0438
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define MUX_STAT_TOP_PERIC1 0x043c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define DIV_TOP0 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define DIV_TOP1 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define DIV_TOP2 0x0608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define DIV_TOP3 0x060c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define DIV_TOP4 0x0610
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define DIV_TOP_MSCL 0x0618
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define DIV_TOP_CAM10 0x061c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define DIV_TOP_CAM11 0x0620
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define DIV_TOP_FSYS0 0x062c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define DIV_TOP_FSYS1 0x0630
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define DIV_TOP_FSYS2 0x0634
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define DIV_TOP_PERIC0 0x0638
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define DIV_TOP_PERIC1 0x063c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define DIV_TOP_PERIC2 0x0640
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define DIV_TOP_PERIC3 0x0644
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define DIV_TOP_PERIC4 0x0648
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #define DIV_TOP_PLL_FREQ_DET 0x064c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #define DIV_STAT_TOP0 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define DIV_STAT_TOP1 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define DIV_STAT_TOP2 0x0708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #define DIV_STAT_TOP3 0x070c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #define DIV_STAT_TOP4 0x0710
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #define DIV_STAT_TOP_MSCL 0x0718
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define DIV_STAT_TOP_CAM10 0x071c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define DIV_STAT_TOP_CAM11 0x0720
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define DIV_STAT_TOP_FSYS0 0x072c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) #define DIV_STAT_TOP_FSYS1 0x0730
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) #define DIV_STAT_TOP_FSYS2 0x0734
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) #define DIV_STAT_TOP_PERIC0 0x0738
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define DIV_STAT_TOP_PERIC1 0x073c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define DIV_STAT_TOP_PERIC2 0x0740
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define DIV_STAT_TOP_PERIC3 0x0744
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define DIV_STAT_TOP_PLL_FREQ_DET 0x074c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define ENABLE_ACLK_TOP 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define ENABLE_SCLK_TOP 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define ENABLE_SCLK_TOP_MSCL 0x0a04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define ENABLE_SCLK_TOP_CAM1 0x0a08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define ENABLE_SCLK_TOP_DISP 0x0a0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define ENABLE_SCLK_TOP_FSYS 0x0a10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define ENABLE_SCLK_TOP_PERIC 0x0a14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define ENABLE_IP_TOP 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define ENABLE_CMU_TOP 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define ENABLE_CMU_TOP_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) static const unsigned long top_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ISP_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) AUD_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) ISP_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) ISP_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ISP_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) AUD_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) AUD_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) AUD_PLL_CON2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) AUD_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) MUX_SEL_TOP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) MUX_SEL_TOP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) MUX_SEL_TOP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) MUX_SEL_TOP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) MUX_SEL_TOP4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) MUX_SEL_TOP_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) MUX_SEL_TOP_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) MUX_SEL_TOP_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) MUX_SEL_TOP_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) MUX_SEL_TOP_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) MUX_SEL_TOP_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) MUX_SEL_TOP_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) MUX_ENABLE_TOP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) MUX_ENABLE_TOP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) MUX_ENABLE_TOP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) MUX_ENABLE_TOP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) MUX_ENABLE_TOP4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) MUX_ENABLE_TOP_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) MUX_ENABLE_TOP_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) MUX_ENABLE_TOP_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) MUX_ENABLE_TOP_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) MUX_ENABLE_TOP_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) MUX_ENABLE_TOP_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) MUX_ENABLE_TOP_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) DIV_TOP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) DIV_TOP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) DIV_TOP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) DIV_TOP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) DIV_TOP4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) DIV_TOP_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) DIV_TOP_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) DIV_TOP_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) DIV_TOP_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) DIV_TOP_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) DIV_TOP_FSYS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) DIV_TOP_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) DIV_TOP_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) DIV_TOP_PERIC2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) DIV_TOP_PERIC3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) DIV_TOP_PERIC4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) DIV_TOP_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) ENABLE_ACLK_TOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ENABLE_SCLK_TOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) ENABLE_SCLK_TOP_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ENABLE_SCLK_TOP_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) ENABLE_SCLK_TOP_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) ENABLE_SCLK_TOP_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) ENABLE_SCLK_TOP_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) ENABLE_IP_TOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) ENABLE_CMU_TOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ENABLE_CMU_TOP_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) static const struct samsung_clk_reg_dump top_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* force all aclk clocks enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) { ENABLE_ACLK_TOP, 0x67ecffed },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) /* force all sclk_uart clocks enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) { ENABLE_SCLK_TOP_PERIC, 0x38 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) /* ISP PLL has to be enabled for suspend: reset value + ENABLE bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) { ISP_PLL_CON0, 0x85cc0502 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) /* ISP PLL has to be enabled for suspend: reset value + ENABLE bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) { AUD_PLL_CON0, 0x84830202 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) PNAME(mout_aud_pll_p) = { "oscclk", "fout_aud_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) PNAME(mout_isp_pll_p) = { "oscclk", "fout_isp_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) PNAME(mout_aud_pll_user_p) = { "oscclk", "mout_aud_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) PNAME(mout_mphy_pll_user_p) = { "oscclk", "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) PNAME(mout_mfc_pll_user_p) = { "oscclk", "sclk_mfc_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) PNAME(mout_bus_pll_user_p) = { "oscclk", "sclk_bus_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) PNAME(mout_bus_pll_user_t_p) = { "oscclk", "mout_bus_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) PNAME(mout_mphy_pll_user_t_p) = { "oscclk", "mout_mphy_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) PNAME(mout_bus_mfc_pll_user_p) = { "mout_bus_pll_user", "mout_mfc_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) PNAME(mout_mfc_bus_pll_user_p) = { "mout_mfc_pll_user", "mout_bus_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) PNAME(mout_aclk_cam1_552_b_p) = { "mout_aclk_cam1_552_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) "mout_mfc_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) PNAME(mout_aclk_cam1_552_a_p) = { "mout_isp_pll", "mout_bus_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) PNAME(mout_aclk_mfc_400_c_p) = { "mout_aclk_mfc_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) "mout_mphy_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) PNAME(mout_aclk_mfc_400_b_p) = { "mout_aclk_mfc_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) "mout_bus_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) PNAME(mout_aclk_mfc_400_a_p) = { "mout_mfc_pll_user", "mout_isp_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) PNAME(mout_bus_mphy_pll_user_p) = { "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) "mout_mphy_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) PNAME(mout_aclk_mscl_b_p) = { "mout_aclk_mscl_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) "mout_mphy_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) PNAME(mout_aclk_g2d_400_b_p) = { "mout_aclk_g2d_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) "mout_mphy_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) PNAME(mout_sclk_jpeg_c_p) = { "mout_sclk_jpeg_b", "mout_mphy_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) PNAME(mout_sclk_jpeg_b_p) = { "mout_sclk_jpeg_a", "mout_mfc_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) PNAME(mout_sclk_mmc2_b_p) = { "mout_sclk_mmc2_a", "mout_mfc_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) PNAME(mout_sclk_mmc1_b_p) = { "mout_sclk_mmc1_a", "mout_mfc_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) PNAME(mout_sclk_mmc0_d_p) = { "mout_sclk_mmc0_c", "mout_isp_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) PNAME(mout_sclk_mmc0_c_p) = { "mout_sclk_mmc0_b", "mout_mphy_pll_user",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) PNAME(mout_sclk_mmc0_b_p) = { "mout_sclk_mmc0_a", "mout_mfc_pll_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) PNAME(mout_sclk_spdif_p) = { "sclk_audio0", "sclk_audio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) "oscclk", "ioclk_spdif_extclk", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) PNAME(mout_sclk_audio1_p) = { "ioclk_audiocdclk1", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) "mout_aud_pll_user_t",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) PNAME(mout_sclk_audio0_p) = { "ioclk_audiocdclk0", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) "mout_aud_pll_user_t",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) PNAME(mout_sclk_hdmi_spdif_p) = { "sclk_audio1", "ioclk_spdif_extclk", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) static const struct samsung_fixed_factor_clock top_fixed_factor_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) FFACTOR(0, "oscclk_efuse_common", "oscclk", 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) static const struct samsung_fixed_rate_clock top_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) /* Xi2s{0|1}CDCLK input clock for I2S/PCM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) FRATE(0, "ioclk_audiocdclk1", NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) FRATE(0, "ioclk_audiocdclk0", NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) /* Xi2s1SDI input clock for SPDIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) FRATE(0, "ioclk_spdif_extclk", NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) /* XspiCLK[4:0] input clock for SPI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) FRATE(0, "ioclk_spi4_clk_in", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) FRATE(0, "ioclk_spi3_clk_in", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) FRATE(0, "ioclk_spi2_clk_in", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) FRATE(0, "ioclk_spi1_clk_in", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) FRATE(0, "ioclk_spi0_clk_in", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) /* Xi2s1SCLK input clock for I2S1_BCLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) FRATE(0, "ioclk_i2s1_bclk_in", NULL, 0, 12288000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) static const struct samsung_mux_clock top_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) /* MUX_SEL_TOP0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) MUX(CLK_MOUT_AUD_PLL, "mout_aud_pll", mout_aud_pll_p, MUX_SEL_TOP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) MUX(CLK_MOUT_ISP_PLL, "mout_isp_pll", mout_isp_pll_p, MUX_SEL_TOP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) /* MUX_SEL_TOP1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) MUX(CLK_MOUT_AUD_PLL_USER_T, "mout_aud_pll_user_t",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) mout_aud_pll_user_p, MUX_SEL_TOP1, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) MUX(CLK_MOUT_MPHY_PLL_USER, "mout_mphy_pll_user", mout_mphy_pll_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) MUX_SEL_TOP1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) MUX(CLK_MOUT_MFC_PLL_USER, "mout_mfc_pll_user", mout_mfc_pll_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) MUX_SEL_TOP1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) MUX(CLK_MOUT_BUS_PLL_USER, "mout_bus_pll_user", mout_bus_pll_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) MUX_SEL_TOP1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) /* MUX_SEL_TOP2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) MUX(CLK_MOUT_ACLK_HEVC_400, "mout_aclk_hevc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) MUX(CLK_MOUT_ACLK_CAM1_333, "mout_aclk_cam1_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) mout_mfc_bus_pll_user_p, MUX_SEL_TOP2, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) MUX(CLK_MOUT_ACLK_CAM1_552_B, "mout_aclk_cam1_552_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) mout_aclk_cam1_552_b_p, MUX_SEL_TOP2, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) MUX(CLK_MOUT_ACLK_CAM1_552_A, "mout_aclk_cam1_552_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) mout_aclk_cam1_552_a_p, MUX_SEL_TOP2, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) MUX(CLK_MOUT_ACLK_ISP_DIS_400, "mout_aclk_isp_dis_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) MUX(CLK_MOUT_ACLK_ISP_400, "mout_aclk_isp_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) /* MUX_SEL_TOP3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) MUX(CLK_MOUT_ACLK_BUS0_400, "mout_aclk_bus0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) mout_bus_mphy_pll_user_p, MUX_SEL_TOP3, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) MUX(CLK_MOUT_ACLK_MSCL_400_B, "mout_aclk_mscl_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) mout_aclk_mscl_b_p, MUX_SEL_TOP3, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) MUX(CLK_MOUT_ACLK_MSCL_400_A, "mout_aclk_mscl_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) mout_bus_mfc_pll_user_p, MUX_SEL_TOP3, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) MUX(CLK_MOUT_ACLK_GSCL_333, "mout_aclk_gscl_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) mout_mfc_bus_pll_user_p, MUX_SEL_TOP3, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) MUX(CLK_MOUT_ACLK_G2D_400_B, "mout_aclk_g2d_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) mout_aclk_g2d_400_b_p, MUX_SEL_TOP3, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) MUX(CLK_MOUT_ACLK_G2D_400_A, "mout_aclk_g2d_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) mout_bus_mfc_pll_user_p, MUX_SEL_TOP3, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) /* MUX_SEL_TOP4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) MUX(CLK_MOUT_ACLK_MFC_400_C, "mout_aclk_mfc_400_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) mout_aclk_mfc_400_c_p, MUX_SEL_TOP4, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) MUX(CLK_MOUT_ACLK_MFC_400_B, "mout_aclk_mfc_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) mout_aclk_mfc_400_b_p, MUX_SEL_TOP4, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) MUX(CLK_MOUT_ACLK_MFC_400_A, "mout_aclk_mfc_400_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) mout_aclk_mfc_400_a_p, MUX_SEL_TOP4, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) /* MUX_SEL_TOP_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) MUX(CLK_MOUT_SCLK_JPEG_C, "mout_sclk_jpeg_c", mout_sclk_jpeg_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) MUX_SEL_TOP_MSCL, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) MUX(CLK_MOUT_SCLK_JPEG_B, "mout_sclk_jpeg_b", mout_sclk_jpeg_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) MUX_SEL_TOP_MSCL, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) MUX(CLK_MOUT_SCLK_JPEG_A, "mout_sclk_jpeg_a", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) MUX_SEL_TOP_MSCL, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) /* MUX_SEL_TOP_CAM1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) MUX(CLK_MOUT_SCLK_ISP_SENSOR2, "mout_sclk_isp_sensor2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) MUX(CLK_MOUT_SCLK_ISP_SENSOR1, "mout_sclk_isp_sensor1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) MUX(CLK_MOUT_SCLK_ISP_SENSOR0, "mout_sclk_isp_sensor0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) MUX(CLK_MOUT_SCLK_ISP_UART, "mout_sclk_isp_uart",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) MUX(CLK_MOUT_SCLK_ISP_SPI1, "mout_sclk_isp_spi1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) MUX(CLK_MOUT_SCLK_ISP_SPI0, "mout_sclk_isp_spi0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) /* MUX_SEL_TOP_FSYS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) MUX(CLK_MOUT_SCLK_MMC2_B, "mout_sclk_mmc2_b", mout_sclk_mmc2_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) MUX_SEL_TOP_FSYS0, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) MUX(CLK_MOUT_SCLK_MMC2_A, "mout_sclk_mmc2_a", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) MUX_SEL_TOP_FSYS0, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) MUX(CLK_MOUT_SCLK_MMC1_B, "mout_sclk_mmc1_b", mout_sclk_mmc1_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) MUX_SEL_TOP_FSYS0, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) MUX(CLK_MOUT_SCLK_MMC1_A, "mout_sclk_mmc1_a", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) MUX_SEL_TOP_FSYS0, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) MUX(CLK_MOUT_SCLK_MMC0_D, "mout_sclk_mmc0_d", mout_sclk_mmc0_d_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) MUX_SEL_TOP_FSYS0, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) MUX(CLK_MOUT_SCLK_MMC0_C, "mout_sclk_mmc0_c", mout_sclk_mmc0_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) MUX_SEL_TOP_FSYS0, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) MUX(CLK_MOUT_SCLK_MMC0_B, "mout_sclk_mmc0_b", mout_sclk_mmc0_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) MUX_SEL_TOP_FSYS0, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) MUX(CLK_MOUT_SCLK_MMC0_A, "mout_sclk_mmc0_a", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) MUX_SEL_TOP_FSYS0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) /* MUX_SEL_TOP_FSYS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) MUX(CLK_MOUT_SCLK_PCIE_100, "mout_sclk_pcie_100", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) MUX_SEL_TOP_FSYS1, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) MUX(CLK_MOUT_SCLK_UFSUNIPRO, "mout_sclk_ufsunipro",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) mout_mphy_pll_user_t_p, MUX_SEL_TOP_FSYS1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) MUX(CLK_MOUT_SCLK_USBHOST30, "mout_sclk_usbhost30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) mout_bus_pll_user_t_p, MUX_SEL_TOP_FSYS1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) MUX(CLK_MOUT_SCLK_USBDRD30, "mout_sclk_usbdrd30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) mout_bus_pll_user_t_p, MUX_SEL_TOP_FSYS1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) /* MUX_SEL_TOP_PERIC0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) MUX(CLK_MOUT_SCLK_SPI4, "mout_sclk_spi4", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) MUX_SEL_TOP_PERIC0, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) MUX(CLK_MOUT_SCLK_SPI3, "mout_sclk_spi3", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) MUX_SEL_TOP_PERIC0, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) MUX(CLK_MOUT_SCLK_UART2, "mout_sclk_uart2", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) MUX_SEL_TOP_PERIC0, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) MUX(CLK_MOUT_SCLK_UART1, "mout_sclk_uart1", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) MUX_SEL_TOP_PERIC0, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) MUX(CLK_MOUT_SCLK_UART0, "mout_sclk_uart0", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) MUX_SEL_TOP_PERIC0, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) MUX(CLK_MOUT_SCLK_SPI2, "mout_sclk_spi2", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) MUX_SEL_TOP_PERIC0, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) MUX(CLK_MOUT_SCLK_SPI1, "mout_sclk_spi1", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) MUX_SEL_TOP_PERIC0, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) MUX(CLK_MOUT_SCLK_SPI0, "mout_sclk_spi0", mout_bus_pll_user_t_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) MUX_SEL_TOP_PERIC0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) /* MUX_SEL_TOP_PERIC1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) MUX(CLK_MOUT_SCLK_SLIMBUS, "mout_sclk_slimbus", mout_aud_pll_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) MUX_SEL_TOP_PERIC1, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) MUX(CLK_MOUT_SCLK_SPDIF, "mout_sclk_spdif", mout_sclk_spdif_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) MUX_SEL_TOP_PERIC1, 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) MUX(CLK_MOUT_SCLK_AUDIO1, "mout_sclk_audio1", mout_sclk_audio1_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) MUX_SEL_TOP_PERIC1, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) MUX(CLK_MOUT_SCLK_AUDIO0, "mout_sclk_audio0", mout_sclk_audio0_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) MUX_SEL_TOP_PERIC1, 0, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) /* MUX_SEL_TOP_DISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) MUX(CLK_MOUT_SCLK_HDMI_SPDIF, "mout_sclk_hdmi_spdif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) mout_sclk_hdmi_spdif_p, MUX_SEL_TOP_DISP, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) static const struct samsung_div_clock top_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) /* DIV_TOP0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) DIV(CLK_DIV_ACLK_CAM1_333, "div_aclk_cam1_333", "mout_aclk_cam1_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) DIV_TOP0, 28, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) DIV(CLK_DIV_ACLK_CAM1_400, "div_aclk_cam1_400", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) DIV_TOP0, 24, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) DIV(CLK_DIV_ACLK_CAM1_552, "div_aclk_cam1_552", "mout_aclk_cam1_552_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) DIV_TOP0, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) DIV(CLK_DIV_ACLK_CAM0_333, "div_aclk_cam0_333", "mout_mfc_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) DIV_TOP0, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) DIV(CLK_DIV_ACLK_CAM0_400, "div_aclk_cam0_400", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) DIV_TOP0, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) DIV(CLK_DIV_ACLK_CAM0_552, "div_aclk_cam0_552", "mout_isp_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) DIV_TOP0, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) DIV(CLK_DIV_ACLK_ISP_DIS_400, "div_aclk_isp_dis_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) "mout_aclk_isp_dis_400", DIV_TOP0, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) DIV(CLK_DIV_ACLK_ISP_400, "div_aclk_isp_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) "mout_aclk_isp_400", DIV_TOP0, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) /* DIV_TOP1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) DIV(CLK_DIV_ACLK_GSCL_111, "div_aclk_gscl_111", "mout_aclk_gscl_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) DIV_TOP1, 28, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) DIV(CLK_DIV_ACLK_GSCL_333, "div_aclk_gscl_333", "mout_aclk_gscl_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) DIV_TOP1, 24, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) DIV(CLK_DIV_ACLK_HEVC_400, "div_aclk_hevc_400", "mout_aclk_hevc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) DIV_TOP1, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) DIV(CLK_DIV_ACLK_MFC_400, "div_aclk_mfc_400", "mout_aclk_mfc_400_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) DIV_TOP1, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) DIV(CLK_DIV_ACLK_G2D_266, "div_aclk_g2d_266", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) DIV_TOP1, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) DIV(CLK_DIV_ACLK_G2D_400, "div_aclk_g2d_400", "mout_aclk_g2d_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) DIV_TOP1, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) /* DIV_TOP2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) DIV(CLK_DIV_ACLK_MSCL_400, "div_aclk_mscl_400", "mout_aclk_mscl_400_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) DIV_TOP2, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) DIV(CLK_DIV_ACLK_FSYS_200, "div_aclk_fsys_200", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) DIV_TOP2, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) /* DIV_TOP3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) DIV(CLK_DIV_ACLK_IMEM_SSSX_266, "div_aclk_imem_sssx_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) "mout_bus_pll_user", DIV_TOP3, 24, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) DIV(CLK_DIV_ACLK_IMEM_200, "div_aclk_imem_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) "mout_bus_pll_user", DIV_TOP3, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) DIV(CLK_DIV_ACLK_IMEM_266, "div_aclk_imem_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) "mout_bus_pll_user", DIV_TOP3, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) DIV(CLK_DIV_ACLK_PERIC_66_B, "div_aclk_peric_66_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) "div_aclk_peric_66_a", DIV_TOP3, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) DIV(CLK_DIV_ACLK_PERIC_66_A, "div_aclk_peric_66_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) "mout_bus_pll_user", DIV_TOP3, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) DIV(CLK_DIV_ACLK_PERIS_66_B, "div_aclk_peris_66_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) "div_aclk_peris_66_a", DIV_TOP3, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) DIV(CLK_DIV_ACLK_PERIS_66_A, "div_aclk_peris_66_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) "mout_bus_pll_user", DIV_TOP3, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) /* DIV_TOP4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) DIV(CLK_DIV_ACLK_G3D_400, "div_aclk_g3d_400", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) DIV_TOP4, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) DIV(CLK_DIV_ACLK_BUS0_400, "div_aclk_bus0_400", "mout_aclk_bus0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) DIV_TOP4, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) DIV(CLK_DIV_ACLK_BUS1_400, "div_aclk_bus1_400", "mout_bus_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) DIV_TOP4, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) /* DIV_TOP_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) DIV(CLK_DIV_SCLK_JPEG, "div_sclk_jpeg", "mout_sclk_jpeg_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) DIV_TOP_MSCL, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) /* DIV_TOP_CAM10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) DIV(CLK_DIV_SCLK_ISP_UART, "div_sclk_isp_uart", "mout_sclk_isp_uart",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) DIV_TOP_CAM10, 24, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) DIV(CLK_DIV_SCLK_ISP_SPI1_B, "div_sclk_isp_spi1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) "div_sclk_isp_spi1_a", DIV_TOP_CAM10, 16, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) DIV(CLK_DIV_SCLK_ISP_SPI1_A, "div_sclk_isp_spi1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) "mout_sclk_isp_spi1", DIV_TOP_CAM10, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) DIV(CLK_DIV_SCLK_ISP_SPI0_B, "div_sclk_isp_spi0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) "div_sclk_isp_spi0_a", DIV_TOP_CAM10, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) DIV(CLK_DIV_SCLK_ISP_SPI0_A, "div_sclk_isp_spi0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) "mout_sclk_isp_spi0", DIV_TOP_CAM10, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) /* DIV_TOP_CAM11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) DIV(CLK_DIV_SCLK_ISP_SENSOR2_B, "div_sclk_isp_sensor2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) "div_sclk_isp_sensor2_a", DIV_TOP_CAM11, 20, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) DIV(CLK_DIV_SCLK_ISP_SENSOR2_A, "div_sclk_isp_sensor2_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) "mout_sclk_isp_sensor2", DIV_TOP_CAM11, 16, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) DIV(CLK_DIV_SCLK_ISP_SENSOR1_B, "div_sclk_isp_sensor1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) "div_sclk_isp_sensor1_a", DIV_TOP_CAM11, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) DIV(CLK_DIV_SCLK_ISP_SENSOR1_A, "div_sclk_isp_sensor1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) "mout_sclk_isp_sensor1", DIV_TOP_CAM11, 8, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) DIV(CLK_DIV_SCLK_ISP_SENSOR0_B, "div_sclk_isp_sensor0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) "div_sclk_isp_sensor0_a", DIV_TOP_CAM11, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) DIV(CLK_DIV_SCLK_ISP_SENSOR0_A, "div_sclk_isp_sensor0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) "mout_sclk_isp_sensor0", DIV_TOP_CAM11, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) /* DIV_TOP_FSYS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) DIV(CLK_DIV_SCLK_MMC1_B, "div_sclk_mmc1_b", "div_sclk_mmc1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) DIV_TOP_FSYS0, 16, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) DIV(CLK_DIV_SCLK_MMC1_A, "div_sclk_mmc1_a", "mout_sclk_mmc1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) DIV_TOP_FSYS0, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) DIV_F(CLK_DIV_SCLK_MMC0_B, "div_sclk_mmc0_b", "div_sclk_mmc0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) DIV_TOP_FSYS0, 4, 8, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) DIV_F(CLK_DIV_SCLK_MMC0_A, "div_sclk_mmc0_a", "mout_sclk_mmc0_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) DIV_TOP_FSYS0, 0, 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) /* DIV_TOP_FSYS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) DIV(CLK_DIV_SCLK_MMC2_B, "div_sclk_mmc2_b", "div_sclk_mmc2_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) DIV_TOP_FSYS1, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) DIV(CLK_DIV_SCLK_MMC2_A, "div_sclk_mmc2_a", "mout_sclk_mmc2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) DIV_TOP_FSYS1, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) /* DIV_TOP_FSYS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) DIV(CLK_DIV_SCLK_PCIE_100, "div_sclk_pcie_100", "mout_sclk_pcie_100",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) DIV_TOP_FSYS2, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) DIV(CLK_DIV_SCLK_USBHOST30, "div_sclk_usbhost30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) "mout_sclk_usbhost30", DIV_TOP_FSYS2, 8, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) DIV(CLK_DIV_SCLK_UFSUNIPRO, "div_sclk_ufsunipro",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) "mout_sclk_ufsunipro", DIV_TOP_FSYS2, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) DIV(CLK_DIV_SCLK_USBDRD30, "div_sclk_usbdrd30", "mout_sclk_usbdrd30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) DIV_TOP_FSYS2, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) /* DIV_TOP_PERIC0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) DIV(CLK_DIV_SCLK_SPI1_B, "div_sclk_spi1_b", "div_sclk_spi1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) DIV_TOP_PERIC0, 16, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) DIV(CLK_DIV_SCLK_SPI1_A, "div_sclk_spi1_a", "mout_sclk_spi1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) DIV_TOP_PERIC0, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) DIV(CLK_DIV_SCLK_SPI0_B, "div_sclk_spi0_b", "div_sclk_spi0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) DIV_TOP_PERIC0, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) DIV(CLK_DIV_SCLK_SPI0_A, "div_sclk_spi0_a", "mout_sclk_spi0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) DIV_TOP_PERIC0, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) /* DIV_TOP_PERIC1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) DIV(CLK_DIV_SCLK_SPI2_B, "div_sclk_spi2_b", "div_sclk_spi2_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) DIV_TOP_PERIC1, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) DIV(CLK_DIV_SCLK_SPI2_A, "div_sclk_spi2_a", "mout_sclk_spi2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) DIV_TOP_PERIC1, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) /* DIV_TOP_PERIC2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) DIV(CLK_DIV_SCLK_UART2, "div_sclk_uart2", "mout_sclk_uart2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) DIV_TOP_PERIC2, 8, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) DIV(CLK_DIV_SCLK_UART1, "div_sclk_uart1", "mout_sclk_uart0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) DIV_TOP_PERIC2, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) DIV(CLK_DIV_SCLK_UART0, "div_sclk_uart0", "mout_sclk_uart1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) DIV_TOP_PERIC2, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) /* DIV_TOP_PERIC3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) DIV(CLK_DIV_SCLK_I2S1, "div_sclk_i2s1", "sclk_audio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) DIV_TOP_PERIC3, 16, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) DIV(CLK_DIV_SCLK_PCM1, "div_sclk_pcm1", "sclk_audio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) DIV_TOP_PERIC3, 8, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) DIV(CLK_DIV_SCLK_AUDIO1, "div_sclk_audio1", "mout_sclk_audio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) DIV_TOP_PERIC3, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) DIV(CLK_DIV_SCLK_AUDIO0, "div_sclk_audio0", "mout_sclk_audio0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) DIV_TOP_PERIC3, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) /* DIV_TOP_PERIC4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) DIV(CLK_DIV_SCLK_SPI4_B, "div_sclk_spi4_b", "div_sclk_spi4_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) DIV_TOP_PERIC4, 16, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) DIV(CLK_DIV_SCLK_SPI4_A, "div_sclk_spi4_a", "mout_sclk_spi4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) DIV_TOP_PERIC4, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) DIV(CLK_DIV_SCLK_SPI3_B, "div_sclk_spi3_b", "div_sclk_spi3_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) DIV_TOP_PERIC4, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) DIV(CLK_DIV_SCLK_SPI3_A, "div_sclk_spi3_a", "mout_sclk_spi3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) DIV_TOP_PERIC4, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) static const struct samsung_gate_clock top_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) /* ENABLE_ACLK_TOP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) GATE(CLK_ACLK_G3D_400, "aclk_g3d_400", "div_aclk_g3d_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) ENABLE_ACLK_TOP, 30, CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) GATE(CLK_ACLK_IMEM_SSSX_266, "aclk_imem_sssx_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) "div_aclk_imem_sssx_266", ENABLE_ACLK_TOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) 29, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) GATE(CLK_ACLK_BUS0_400, "aclk_bus0_400", "div_aclk_bus0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) ENABLE_ACLK_TOP, 26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) GATE(CLK_ACLK_BUS1_400, "aclk_bus1_400", "div_aclk_bus1_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) ENABLE_ACLK_TOP, 25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) GATE(CLK_ACLK_IMEM_200, "aclk_imem_200", "div_aclk_imem_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) ENABLE_ACLK_TOP, 24,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) GATE(CLK_ACLK_IMEM_266, "aclk_imem_266", "div_aclk_imem_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) ENABLE_ACLK_TOP, 23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) GATE(CLK_ACLK_PERIC_66, "aclk_peric_66", "div_aclk_peric_66_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) ENABLE_ACLK_TOP, 22,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) GATE(CLK_ACLK_PERIS_66, "aclk_peris_66", "div_aclk_peris_66_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) ENABLE_ACLK_TOP, 21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) GATE(CLK_ACLK_MSCL_400, "aclk_mscl_400", "div_aclk_mscl_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) ENABLE_ACLK_TOP, 19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) GATE(CLK_ACLK_FSYS_200, "aclk_fsys_200", "div_aclk_fsys_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) ENABLE_ACLK_TOP, 18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) GATE(CLK_ACLK_GSCL_111, "aclk_gscl_111", "div_aclk_gscl_111",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) ENABLE_ACLK_TOP, 15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) GATE(CLK_ACLK_GSCL_333, "aclk_gscl_333", "div_aclk_gscl_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) ENABLE_ACLK_TOP, 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) GATE(CLK_ACLK_CAM1_333, "aclk_cam1_333", "div_aclk_cam1_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) ENABLE_ACLK_TOP, 13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) GATE(CLK_ACLK_CAM1_400, "aclk_cam1_400", "div_aclk_cam1_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) ENABLE_ACLK_TOP, 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) GATE(CLK_ACLK_CAM1_552, "aclk_cam1_552", "div_aclk_cam1_552",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) ENABLE_ACLK_TOP, 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) GATE(CLK_ACLK_CAM0_333, "aclk_cam0_333", "div_aclk_cam0_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) ENABLE_ACLK_TOP, 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) GATE(CLK_ACLK_CAM0_400, "aclk_cam0_400", "div_aclk_cam0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) ENABLE_ACLK_TOP, 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) GATE(CLK_ACLK_CAM0_552, "aclk_cam0_552", "div_aclk_cam0_552",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) ENABLE_ACLK_TOP, 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) GATE(CLK_ACLK_ISP_DIS_400, "aclk_isp_dis_400", "div_aclk_isp_dis_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) ENABLE_ACLK_TOP, 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) GATE(CLK_ACLK_ISP_400, "aclk_isp_400", "div_aclk_isp_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) ENABLE_ACLK_TOP, 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) GATE(CLK_ACLK_HEVC_400, "aclk_hevc_400", "div_aclk_hevc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) ENABLE_ACLK_TOP, 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) GATE(CLK_ACLK_MFC_400, "aclk_mfc_400", "div_aclk_mfc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) ENABLE_ACLK_TOP, 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) GATE(CLK_ACLK_G2D_266, "aclk_g2d_266", "div_aclk_g2d_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) ENABLE_ACLK_TOP, 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) GATE(CLK_ACLK_G2D_400, "aclk_g2d_400", "div_aclk_g2d_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) ENABLE_ACLK_TOP, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) /* ENABLE_SCLK_TOP_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) GATE(CLK_SCLK_JPEG_MSCL, "sclk_jpeg_mscl", "div_sclk_jpeg",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) ENABLE_SCLK_TOP_MSCL, 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) /* ENABLE_SCLK_TOP_CAM1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "div_sclk_isp_sensor2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) ENABLE_SCLK_TOP_CAM1, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "div_sclk_isp_sensor1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) ENABLE_SCLK_TOP_CAM1, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "div_sclk_isp_sensor0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) ENABLE_SCLK_TOP_CAM1, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) GATE(CLK_SCLK_ISP_MCTADC_CAM1, "sclk_isp_mctadc_cam1", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) ENABLE_SCLK_TOP_CAM1, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) GATE(CLK_SCLK_ISP_UART_CAM1, "sclk_isp_uart_cam1", "div_sclk_isp_uart",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) ENABLE_SCLK_TOP_CAM1, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) GATE(CLK_SCLK_ISP_SPI1_CAM1, "sclk_isp_spi1_cam1", "div_sclk_isp_spi1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) ENABLE_SCLK_TOP_CAM1, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) GATE(CLK_SCLK_ISP_SPI0_CAM1, "sclk_isp_spi0_cam1", "div_sclk_isp_spi0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) ENABLE_SCLK_TOP_CAM1, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) /* ENABLE_SCLK_TOP_DISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) GATE(CLK_SCLK_HDMI_SPDIF_DISP, "sclk_hdmi_spdif_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) "mout_sclk_hdmi_spdif", ENABLE_SCLK_TOP_DISP, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) /* ENABLE_SCLK_TOP_FSYS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) GATE(CLK_SCLK_PCIE_100_FSYS, "sclk_pcie_100_fsys", "div_sclk_pcie_100",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) ENABLE_SCLK_TOP_FSYS, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) GATE(CLK_SCLK_MMC2_FSYS, "sclk_mmc2_fsys", "div_sclk_mmc2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) ENABLE_SCLK_TOP_FSYS, 6, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) GATE(CLK_SCLK_MMC1_FSYS, "sclk_mmc1_fsys", "div_sclk_mmc1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) ENABLE_SCLK_TOP_FSYS, 5, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) GATE(CLK_SCLK_MMC0_FSYS, "sclk_mmc0_fsys", "div_sclk_mmc0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) ENABLE_SCLK_TOP_FSYS, 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) GATE(CLK_SCLK_UFSUNIPRO_FSYS, "sclk_ufsunipro_fsys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) "div_sclk_ufsunipro", ENABLE_SCLK_TOP_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) GATE(CLK_SCLK_USBHOST30_FSYS, "sclk_usbhost30_fsys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) "div_sclk_usbhost30", ENABLE_SCLK_TOP_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) GATE(CLK_SCLK_USBDRD30_FSYS, "sclk_usbdrd30_fsys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) "div_sclk_usbdrd30", ENABLE_SCLK_TOP_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) /* ENABLE_SCLK_TOP_PERIC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) GATE(CLK_SCLK_SPI4_PERIC, "sclk_spi4_peric", "div_sclk_spi4_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) ENABLE_SCLK_TOP_PERIC, 12, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) GATE(CLK_SCLK_SPI3_PERIC, "sclk_spi3_peric", "div_sclk_spi3_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) ENABLE_SCLK_TOP_PERIC, 11, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) GATE(CLK_SCLK_SPDIF_PERIC, "sclk_spdif_peric", "mout_sclk_spdif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) ENABLE_SCLK_TOP_PERIC, 9, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) GATE(CLK_SCLK_I2S1_PERIC, "sclk_i2s1_peric", "div_sclk_i2s1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) ENABLE_SCLK_TOP_PERIC, 8, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) GATE(CLK_SCLK_PCM1_PERIC, "sclk_pcm1_peric", "div_sclk_pcm1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) ENABLE_SCLK_TOP_PERIC, 7, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) GATE(CLK_SCLK_UART2_PERIC, "sclk_uart2_peric", "div_sclk_uart2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) ENABLE_SCLK_TOP_PERIC, 5, CLK_SET_RATE_PARENT |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) GATE(CLK_SCLK_UART1_PERIC, "sclk_uart1_peric", "div_sclk_uart1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) ENABLE_SCLK_TOP_PERIC, 4, CLK_SET_RATE_PARENT |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) GATE(CLK_SCLK_UART0_PERIC, "sclk_uart0_peric", "div_sclk_uart0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) ENABLE_SCLK_TOP_PERIC, 3, CLK_SET_RATE_PARENT |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) GATE(CLK_SCLK_SPI2_PERIC, "sclk_spi2_peric", "div_sclk_spi2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) ENABLE_SCLK_TOP_PERIC, 2, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) GATE(CLK_SCLK_SPI1_PERIC, "sclk_spi1_peric", "div_sclk_spi1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) ENABLE_SCLK_TOP_PERIC, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) GATE(CLK_SCLK_SPI0_PERIC, "sclk_spi0_peric", "div_sclk_spi0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) ENABLE_SCLK_TOP_PERIC, 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) /* MUX_ENABLE_TOP_PERIC1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) GATE(CLK_SCLK_SLIMBUS, "sclk_slimbus", "mout_sclk_slimbus",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) MUX_ENABLE_TOP_PERIC1, 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) GATE(CLK_SCLK_AUDIO1, "sclk_audio1", "div_sclk_audio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) MUX_ENABLE_TOP_PERIC1, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) GATE(CLK_SCLK_AUDIO0, "sclk_audio0", "div_sclk_audio0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) MUX_ENABLE_TOP_PERIC1, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) * ATLAS_PLL & APOLLO_PLL & MEM0_PLL & MEM1_PLL & BUS_PLL & MFC_PLL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) * & MPHY_PLL & G3D_PLL & DISP_PLL & ISP_PLL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) static const struct samsung_pll_rate_table exynos5433_pll_rates[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) PLL_35XX_RATE(24 * MHZ, 2500000000U, 625, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) PLL_35XX_RATE(24 * MHZ, 2400000000U, 500, 5, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) PLL_35XX_RATE(24 * MHZ, 2300000000U, 575, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) PLL_35XX_RATE(24 * MHZ, 2200000000U, 550, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) PLL_35XX_RATE(24 * MHZ, 2100000000U, 350, 4, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) PLL_35XX_RATE(24 * MHZ, 2000000000U, 500, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) PLL_35XX_RATE(24 * MHZ, 1900000000U, 475, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) PLL_35XX_RATE(24 * MHZ, 1800000000U, 375, 5, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) PLL_35XX_RATE(24 * MHZ, 1700000000U, 425, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) PLL_35XX_RATE(24 * MHZ, 1600000000U, 400, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) PLL_35XX_RATE(24 * MHZ, 1500000000U, 250, 4, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) PLL_35XX_RATE(24 * MHZ, 1400000000U, 350, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) PLL_35XX_RATE(24 * MHZ, 1332000000U, 222, 4, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) PLL_35XX_RATE(24 * MHZ, 1300000000U, 325, 6, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) PLL_35XX_RATE(24 * MHZ, 1200000000U, 500, 5, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) PLL_35XX_RATE(24 * MHZ, 1100000000U, 550, 6, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) PLL_35XX_RATE(24 * MHZ, 1086000000U, 362, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) PLL_35XX_RATE(24 * MHZ, 1066000000U, 533, 6, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) PLL_35XX_RATE(24 * MHZ, 1000000000U, 500, 6, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) PLL_35XX_RATE(24 * MHZ, 933000000U, 311, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) PLL_35XX_RATE(24 * MHZ, 921000000U, 307, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) PLL_35XX_RATE(24 * MHZ, 900000000U, 375, 5, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) PLL_35XX_RATE(24 * MHZ, 825000000U, 275, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) PLL_35XX_RATE(24 * MHZ, 800000000U, 400, 6, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) PLL_35XX_RATE(24 * MHZ, 733000000U, 733, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) PLL_35XX_RATE(24 * MHZ, 700000000U, 175, 3, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) PLL_35XX_RATE(24 * MHZ, 666000000U, 222, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) PLL_35XX_RATE(24 * MHZ, 633000000U, 211, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) PLL_35XX_RATE(24 * MHZ, 600000000U, 500, 5, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) PLL_35XX_RATE(24 * MHZ, 552000000U, 460, 5, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) PLL_35XX_RATE(24 * MHZ, 550000000U, 550, 6, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) PLL_35XX_RATE(24 * MHZ, 543000000U, 362, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) PLL_35XX_RATE(24 * MHZ, 533000000U, 533, 6, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) PLL_35XX_RATE(24 * MHZ, 500000000U, 500, 6, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) PLL_35XX_RATE(24 * MHZ, 444000000U, 370, 5, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) PLL_35XX_RATE(24 * MHZ, 420000000U, 350, 5, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) PLL_35XX_RATE(24 * MHZ, 400000000U, 400, 6, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) PLL_35XX_RATE(24 * MHZ, 350000000U, 350, 6, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) PLL_35XX_RATE(24 * MHZ, 333000000U, 222, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) PLL_35XX_RATE(24 * MHZ, 300000000U, 500, 5, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) PLL_35XX_RATE(24 * MHZ, 278000000U, 556, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) PLL_35XX_RATE(24 * MHZ, 266000000U, 532, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) PLL_35XX_RATE(24 * MHZ, 250000000U, 500, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) PLL_35XX_RATE(24 * MHZ, 200000000U, 400, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) PLL_35XX_RATE(24 * MHZ, 166000000U, 332, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) PLL_35XX_RATE(24 * MHZ, 160000000U, 320, 6, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) PLL_35XX_RATE(24 * MHZ, 133000000U, 532, 6, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) PLL_35XX_RATE(24 * MHZ, 100000000U, 400, 6, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) { /* sentinel */ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) /* AUD_PLL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) static const struct samsung_pll_rate_table exynos5433_aud_pll_rates[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) PLL_36XX_RATE(24 * MHZ, 400000000U, 200, 3, 2, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) PLL_36XX_RATE(24 * MHZ, 393216003U, 197, 3, 2, -25690),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) PLL_36XX_RATE(24 * MHZ, 384000000U, 128, 2, 2, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) PLL_36XX_RATE(24 * MHZ, 368639991U, 246, 4, 2, -15729),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) PLL_36XX_RATE(24 * MHZ, 361507202U, 181, 3, 2, -16148),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) PLL_36XX_RATE(24 * MHZ, 338687988U, 113, 2, 2, -6816),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) PLL_36XX_RATE(24 * MHZ, 294912002U, 98, 1, 3, 19923),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) PLL_36XX_RATE(24 * MHZ, 288000000U, 96, 1, 3, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) PLL_36XX_RATE(24 * MHZ, 252000000U, 84, 1, 3, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) PLL_36XX_RATE(24 * MHZ, 196608001U, 197, 3, 3, -25690),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) { /* sentinel */ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) static const struct samsung_pll_clock top_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) PLL(pll_35xx, CLK_FOUT_ISP_PLL, "fout_isp_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) ISP_PLL_LOCK, ISP_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) PLL(pll_36xx, CLK_FOUT_AUD_PLL, "fout_aud_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) AUD_PLL_LOCK, AUD_PLL_CON0, exynos5433_aud_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) static const struct samsung_cmu_info top_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) .pll_clks = top_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) .nr_pll_clks = ARRAY_SIZE(top_pll_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) .mux_clks = top_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) .nr_mux_clks = ARRAY_SIZE(top_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) .div_clks = top_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) .nr_div_clks = ARRAY_SIZE(top_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) .gate_clks = top_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) .nr_gate_clks = ARRAY_SIZE(top_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) .fixed_clks = top_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) .nr_fixed_clks = ARRAY_SIZE(top_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) .fixed_factor_clks = top_fixed_factor_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) .nr_fixed_factor_clks = ARRAY_SIZE(top_fixed_factor_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) .nr_clk_ids = TOP_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) .clk_regs = top_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) .nr_clk_regs = ARRAY_SIZE(top_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) .suspend_regs = top_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) .nr_suspend_regs = ARRAY_SIZE(top_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) static void __init exynos5433_cmu_top_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) samsung_cmu_register_one(np, &top_cmu_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) CLK_OF_DECLARE(exynos5433_cmu_top, "samsung,exynos5433-cmu-top",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) exynos5433_cmu_top_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) * Register offset definitions for CMU_CPIF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) #define MPHY_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) #define MPHY_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) #define MPHY_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) #define MPHY_PLL_FREQ_DET 0x010c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) #define MUX_SEL_CPIF0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) #define DIV_CPIF 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) #define ENABLE_SCLK_CPIF 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) static const unsigned long cpif_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) MPHY_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) MPHY_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) MPHY_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) MPHY_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) MUX_SEL_CPIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) DIV_CPIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) ENABLE_SCLK_CPIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) static const struct samsung_clk_reg_dump cpif_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) /* force all sclk clocks enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) { ENABLE_SCLK_CPIF, 0x3ff },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) /* MPHY PLL has to be enabled for suspend: reset value + ENABLE bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) { MPHY_PLL_CON0, 0x81c70601 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) PNAME(mout_mphy_pll_p) = { "oscclk", "fout_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) static const struct samsung_pll_clock cpif_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) PLL(pll_35xx, CLK_FOUT_MPHY_PLL, "fout_mphy_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) MPHY_PLL_LOCK, MPHY_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) static const struct samsung_mux_clock cpif_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) /* MUX_SEL_CPIF0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) MUX(CLK_MOUT_MPHY_PLL, "mout_mphy_pll", mout_mphy_pll_p, MUX_SEL_CPIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) static const struct samsung_div_clock cpif_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) /* DIV_CPIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) DIV(CLK_DIV_SCLK_MPHY, "div_sclk_mphy", "mout_mphy_pll", DIV_CPIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) 0, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) static const struct samsung_gate_clock cpif_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) /* ENABLE_SCLK_CPIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) GATE(CLK_SCLK_MPHY_PLL, "sclk_mphy_pll", "mout_mphy_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) ENABLE_SCLK_CPIF, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) GATE(CLK_SCLK_UFS_MPHY, "sclk_ufs_mphy", "div_sclk_mphy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) ENABLE_SCLK_CPIF, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) static const struct samsung_cmu_info cpif_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) .pll_clks = cpif_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) .nr_pll_clks = ARRAY_SIZE(cpif_pll_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) .mux_clks = cpif_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) .nr_mux_clks = ARRAY_SIZE(cpif_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) .div_clks = cpif_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) .nr_div_clks = ARRAY_SIZE(cpif_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) .gate_clks = cpif_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) .nr_gate_clks = ARRAY_SIZE(cpif_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) .nr_clk_ids = CPIF_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) .clk_regs = cpif_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) .nr_clk_regs = ARRAY_SIZE(cpif_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) .suspend_regs = cpif_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) .nr_suspend_regs = ARRAY_SIZE(cpif_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) static void __init exynos5433_cmu_cpif_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) samsung_cmu_register_one(np, &cpif_cmu_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) CLK_OF_DECLARE(exynos5433_cmu_cpif, "samsung,exynos5433-cmu-cpif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) exynos5433_cmu_cpif_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) * Register offset definitions for CMU_MIF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) #define MEM0_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) #define MEM1_PLL_LOCK 0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) #define BUS_PLL_LOCK 0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) #define MFC_PLL_LOCK 0x000c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) #define MEM0_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) #define MEM0_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) #define MEM0_PLL_FREQ_DET 0x010c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) #define MEM1_PLL_CON0 0x0110
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) #define MEM1_PLL_CON1 0x0114
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) #define MEM1_PLL_FREQ_DET 0x011c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) #define BUS_PLL_CON0 0x0120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) #define BUS_PLL_CON1 0x0124
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) #define BUS_PLL_FREQ_DET 0x012c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) #define MFC_PLL_CON0 0x0130
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) #define MFC_PLL_CON1 0x0134
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) #define MFC_PLL_FREQ_DET 0x013c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) #define MUX_SEL_MIF0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) #define MUX_SEL_MIF1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) #define MUX_SEL_MIF2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) #define MUX_SEL_MIF3 0x020c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) #define MUX_SEL_MIF4 0x0210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) #define MUX_SEL_MIF5 0x0214
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) #define MUX_SEL_MIF6 0x0218
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) #define MUX_SEL_MIF7 0x021c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) #define MUX_ENABLE_MIF0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) #define MUX_ENABLE_MIF1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) #define MUX_ENABLE_MIF2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) #define MUX_ENABLE_MIF3 0x030c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) #define MUX_ENABLE_MIF4 0x0310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) #define MUX_ENABLE_MIF5 0x0314
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) #define MUX_ENABLE_MIF6 0x0318
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) #define MUX_ENABLE_MIF7 0x031c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) #define MUX_STAT_MIF0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) #define MUX_STAT_MIF1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) #define MUX_STAT_MIF2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) #define MUX_STAT_MIF3 0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) #define MUX_STAT_MIF4 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) #define MUX_STAT_MIF5 0x0414
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) #define MUX_STAT_MIF6 0x0418
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) #define MUX_STAT_MIF7 0x041c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) #define DIV_MIF1 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) #define DIV_MIF2 0x0608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) #define DIV_MIF3 0x060c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) #define DIV_MIF4 0x0610
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) #define DIV_MIF5 0x0614
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) #define DIV_MIF_PLL_FREQ_DET 0x0618
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) #define DIV_STAT_MIF1 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) #define DIV_STAT_MIF2 0x0708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) #define DIV_STAT_MIF3 0x070c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) #define DIV_STAT_MIF4 0x0710
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) #define DIV_STAT_MIF5 0x0714
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) #define DIV_STAT_MIF_PLL_FREQ_DET 0x0718
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) #define ENABLE_ACLK_MIF0 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) #define ENABLE_ACLK_MIF1 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) #define ENABLE_ACLK_MIF2 0x0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) #define ENABLE_ACLK_MIF3 0x080c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) #define ENABLE_PCLK_MIF 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) #define ENABLE_PCLK_MIF_SECURE_DREX0_TZ 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) #define ENABLE_PCLK_MIF_SECURE_DREX1_TZ 0x0908
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) #define ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT 0x090c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) #define ENABLE_PCLK_MIF_SECURE_RTC 0x0910
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) #define ENABLE_SCLK_MIF 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) #define ENABLE_IP_MIF0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) #define ENABLE_IP_MIF1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) #define ENABLE_IP_MIF2 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) #define ENABLE_IP_MIF3 0x0b0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) #define ENABLE_IP_MIF_SECURE_DREX0_TZ 0x0b10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) #define ENABLE_IP_MIF_SECURE_DREX1_TZ 0x0b14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) #define ENABLE_IP_MIF_SECURE_MONOTONIC_CNT 0x0b18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) #define ENABLE_IP_MIF_SECURE_RTC 0x0b1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) #define CLKOUT_CMU_MIF 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) #define CLKOUT_CMU_MIF_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) #define DREX_FREQ_CTRL0 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) #define DREX_FREQ_CTRL1 0x1004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) #define PAUSE 0x1008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) #define DDRPHY_LOCK_CTRL 0x100c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) static const unsigned long mif_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) MEM0_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) MEM1_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) BUS_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) MFC_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) MEM0_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) MEM0_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) MEM0_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) MEM1_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) MEM1_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) MEM1_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) BUS_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) BUS_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) BUS_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) MFC_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) MFC_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) MFC_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) MUX_SEL_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) MUX_SEL_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) MUX_SEL_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) MUX_SEL_MIF3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) MUX_SEL_MIF4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) MUX_SEL_MIF5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) MUX_SEL_MIF6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) MUX_SEL_MIF7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) MUX_ENABLE_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) MUX_ENABLE_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) MUX_ENABLE_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) MUX_ENABLE_MIF3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) MUX_ENABLE_MIF4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) MUX_ENABLE_MIF5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) MUX_ENABLE_MIF6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) MUX_ENABLE_MIF7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) DIV_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) DIV_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) DIV_MIF3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) DIV_MIF4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) DIV_MIF5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) DIV_MIF_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) ENABLE_ACLK_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) ENABLE_ACLK_MIF3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) ENABLE_PCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) ENABLE_PCLK_MIF_SECURE_DREX0_TZ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) ENABLE_PCLK_MIF_SECURE_DREX1_TZ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) ENABLE_PCLK_MIF_SECURE_RTC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) ENABLE_SCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) ENABLE_IP_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) ENABLE_IP_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) ENABLE_IP_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) ENABLE_IP_MIF3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) ENABLE_IP_MIF_SECURE_DREX0_TZ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) ENABLE_IP_MIF_SECURE_DREX1_TZ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) ENABLE_IP_MIF_SECURE_MONOTONIC_CNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) ENABLE_IP_MIF_SECURE_RTC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) CLKOUT_CMU_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) CLKOUT_CMU_MIF_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) DREX_FREQ_CTRL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) DREX_FREQ_CTRL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) PAUSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) DDRPHY_LOCK_CTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) static const struct samsung_pll_clock mif_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) PLL(pll_35xx, CLK_FOUT_MEM0_PLL, "fout_mem0_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) MEM0_PLL_LOCK, MEM0_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) PLL(pll_35xx, CLK_FOUT_MEM1_PLL, "fout_mem1_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) MEM1_PLL_LOCK, MEM1_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) PLL(pll_35xx, CLK_FOUT_BUS_PLL, "fout_bus_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) BUS_PLL_LOCK, BUS_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) PLL(pll_35xx, CLK_FOUT_MFC_PLL, "fout_mfc_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) MFC_PLL_LOCK, MFC_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) PNAME(mout_mfc_pll_div2_p) = { "mout_mfc_pll", "dout_mfc_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) PNAME(mout_bus_pll_div2_p) = { "mout_bus_pll", "dout_bus_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) PNAME(mout_mem1_pll_div2_p) = { "mout_mem1_pll", "dout_mem1_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) PNAME(mout_mem0_pll_div2_p) = { "mout_mem0_pll", "dout_mem0_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) PNAME(mout_mfc_pll_p) = { "oscclk", "fout_mfc_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) PNAME(mout_bus_pll_p) = { "oscclk", "fout_bus_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) PNAME(mout_mem1_pll_p) = { "oscclk", "fout_mem1_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) PNAME(mout_mem0_pll_p) = { "oscclk", "fout_mem0_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) PNAME(mout_clk2x_phy_c_p) = { "mout_mem0_pll_div2", "mout_clkm_phy_b", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) PNAME(mout_clk2x_phy_b_p) = { "mout_bus_pll_div2", "mout_clkm_phy_a", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) PNAME(mout_clk2x_phy_a_p) = { "mout_bus_pll_div2", "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) PNAME(mout_clkm_phy_b_p) = { "mout_mem1_pll_div2", "mout_clkm_phy_a", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) PNAME(mout_aclk_mifnm_200_p) = { "mout_mem0_pll_div2", "div_mif_pre", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) PNAME(mout_aclk_mifnm_400_p) = { "mout_mem1_pll_div2", "mout_bus_pll_div2",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) PNAME(mout_aclk_disp_333_b_p) = { "mout_aclk_disp_333_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) "mout_bus_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) PNAME(mout_aclk_disp_333_a_p) = { "mout_mfc_pll_div2", "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) PNAME(mout_sclk_decon_vclk_c_p) = { "mout_sclk_decon_vclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) PNAME(mout_sclk_decon_vclk_b_p) = { "mout_sclk_decon_vclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) PNAME(mout_sclk_decon_p) = { "oscclk", "mout_bus_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) PNAME(mout_sclk_decon_eclk_c_p) = { "mout_sclk_decon_eclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) PNAME(mout_sclk_decon_eclk_b_p) = { "mout_sclk_decon_eclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) PNAME(mout_sclk_decon_tv_eclk_c_p) = { "mout_sclk_decon_tv_eclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) PNAME(mout_sclk_decon_tv_eclk_b_p) = { "mout_sclk_decon_tv_eclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) PNAME(mout_sclk_dsd_c_p) = { "mout_sclk_dsd_b", "mout_bus_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) PNAME(mout_sclk_dsd_b_p) = { "mout_sclk_dsd_a", "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) PNAME(mout_sclk_dsd_a_p) = { "oscclk", "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) PNAME(mout_sclk_dsim0_c_p) = { "mout_sclk_dsim0_b", "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) PNAME(mout_sclk_dsim0_b_p) = { "mout_sclk_dsim0_a", "mout_mfc_pll_div2" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) PNAME(mout_sclk_decon_tv_vclk_c_p) = { "mout_sclk_decon_tv_vclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) PNAME(mout_sclk_decon_tv_vclk_b_p) = { "mout_sclk_decon_tv_vclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) "mout_mfc_pll_div2", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) PNAME(mout_sclk_dsim1_c_p) = { "mout_sclk_dsim1_b", "sclk_mphy_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) PNAME(mout_sclk_dsim1_b_p) = { "mout_sclk_dsim1_a", "mout_mfc_pll_div2",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) static const struct samsung_fixed_factor_clock mif_fixed_factor_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) /* dout_{mfc|bus|mem1|mem0}_pll is half fixed rate from parent mux */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) FFACTOR(CLK_DOUT_MFC_PLL, "dout_mfc_pll", "mout_mfc_pll", 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) FFACTOR(CLK_DOUT_BUS_PLL, "dout_bus_pll", "mout_bus_pll", 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) FFACTOR(CLK_DOUT_MEM1_PLL, "dout_mem1_pll", "mout_mem1_pll", 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) FFACTOR(CLK_DOUT_MEM0_PLL, "dout_mem0_pll", "mout_mem0_pll", 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) static const struct samsung_mux_clock mif_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) /* MUX_SEL_MIF0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) MUX(CLK_MOUT_MFC_PLL_DIV2, "mout_mfc_pll_div2", mout_mfc_pll_div2_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) MUX_SEL_MIF0, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) MUX(CLK_MOUT_BUS_PLL_DIV2, "mout_bus_pll_div2", mout_bus_pll_div2_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) MUX_SEL_MIF0, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) MUX(CLK_MOUT_MEM1_PLL_DIV2, "mout_mem1_pll_div2", mout_mem1_pll_div2_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) MUX_SEL_MIF0, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) MUX(CLK_MOUT_MEM0_PLL_DIV2, "mout_mem0_pll_div2", mout_mem0_pll_div2_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) MUX_SEL_MIF0, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) MUX(CLK_MOUT_MFC_PLL, "mout_mfc_pll", mout_mfc_pll_p, MUX_SEL_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) MUX(CLK_MOUT_BUS_PLL, "mout_bus_pll", mout_bus_pll_p, MUX_SEL_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) MUX(CLK_MOUT_MEM1_PLL, "mout_mem1_pll", mout_mem1_pll_p, MUX_SEL_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) MUX(CLK_MOUT_MEM0_PLL, "mout_mem0_pll", mout_mem0_pll_p, MUX_SEL_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) /* MUX_SEL_MIF1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) MUX(CLK_MOUT_CLK2X_PHY_C, "mout_clk2x_phy_c", mout_clk2x_phy_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) MUX_SEL_MIF1, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) MUX(CLK_MOUT_CLK2X_PHY_B, "mout_clk2x_phy_b", mout_clk2x_phy_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) MUX_SEL_MIF1, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) MUX(CLK_MOUT_CLK2X_PHY_A, "mout_clk2x_phy_a", mout_clk2x_phy_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) MUX_SEL_MIF1, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) MUX(CLK_MOUT_CLKM_PHY_C, "mout_clkm_phy_c", mout_clk2x_phy_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) MUX_SEL_MIF1, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) MUX(CLK_MOUT_CLKM_PHY_B, "mout_clkm_phy_b", mout_clkm_phy_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) MUX_SEL_MIF1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) MUX(CLK_MOUT_CLKM_PHY_A, "mout_clkm_phy_a", mout_clk2x_phy_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) MUX_SEL_MIF1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) /* MUX_SEL_MIF2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) MUX(CLK_MOUT_ACLK_MIFNM_200, "mout_aclk_mifnm_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) mout_aclk_mifnm_200_p, MUX_SEL_MIF2, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) MUX(CLK_MOUT_ACLK_MIFNM_400, "mout_aclk_mifnm_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) mout_aclk_mifnm_400_p, MUX_SEL_MIF2, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) /* MUX_SEL_MIF3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) MUX(CLK_MOUT_ACLK_DISP_333_B, "mout_aclk_disp_333_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) mout_aclk_disp_333_b_p, MUX_SEL_MIF3, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) MUX(CLK_MOUT_ACLK_DISP_333_A, "mout_aclk_disp_333_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) mout_aclk_disp_333_a_p, MUX_SEL_MIF3, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) /* MUX_SEL_MIF4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) MUX(CLK_MOUT_SCLK_DECON_VCLK_C, "mout_sclk_decon_vclk_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) mout_sclk_decon_vclk_c_p, MUX_SEL_MIF4, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) MUX(CLK_MOUT_SCLK_DECON_VCLK_B, "mout_sclk_decon_vclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) mout_sclk_decon_vclk_b_p, MUX_SEL_MIF4, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) MUX(CLK_MOUT_SCLK_DECON_VCLK_A, "mout_sclk_decon_vclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) mout_sclk_decon_p, MUX_SEL_MIF4, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) MUX(CLK_MOUT_SCLK_DECON_ECLK_C, "mout_sclk_decon_eclk_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) mout_sclk_decon_eclk_c_p, MUX_SEL_MIF4, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) MUX(CLK_MOUT_SCLK_DECON_ECLK_B, "mout_sclk_decon_eclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) mout_sclk_decon_eclk_b_p, MUX_SEL_MIF4, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) MUX(CLK_MOUT_SCLK_DECON_ECLK_A, "mout_sclk_decon_eclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) mout_sclk_decon_p, MUX_SEL_MIF4, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) /* MUX_SEL_MIF5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_C, "mout_sclk_decon_tv_eclk_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) mout_sclk_decon_tv_eclk_c_p, MUX_SEL_MIF5, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_B, "mout_sclk_decon_tv_eclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) mout_sclk_decon_tv_eclk_b_p, MUX_SEL_MIF5, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_A, "mout_sclk_decon_tv_eclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) mout_sclk_decon_p, MUX_SEL_MIF5, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) MUX(CLK_MOUT_SCLK_DSD_C, "mout_sclk_dsd_c", mout_sclk_dsd_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) MUX_SEL_MIF5, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) MUX(CLK_MOUT_SCLK_DSD_B, "mout_sclk_dsd_b", mout_sclk_dsd_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) MUX_SEL_MIF5, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) MUX(CLK_MOUT_SCLK_DSD_A, "mout_sclk_dsd_a", mout_sclk_dsd_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) MUX_SEL_MIF5, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) /* MUX_SEL_MIF6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) MUX(CLK_MOUT_SCLK_DSIM0_C, "mout_sclk_dsim0_c", mout_sclk_dsim0_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) MUX_SEL_MIF6, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) MUX(CLK_MOUT_SCLK_DSIM0_B, "mout_sclk_dsim0_b", mout_sclk_dsim0_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) MUX_SEL_MIF6, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) MUX(CLK_MOUT_SCLK_DSIM0_A, "mout_sclk_dsim0_a", mout_sclk_decon_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) MUX_SEL_MIF6, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) /* MUX_SEL_MIF7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_C, "mout_sclk_decon_tv_vclk_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) mout_sclk_decon_tv_vclk_c_p, MUX_SEL_MIF7, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_B, "mout_sclk_decon_tv_vclk_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) mout_sclk_decon_tv_vclk_b_p, MUX_SEL_MIF7, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_A, "mout_sclk_decon_tv_vclk_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) mout_sclk_decon_p, MUX_SEL_MIF7, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) MUX(CLK_MOUT_SCLK_DSIM1_C, "mout_sclk_dsim1_c", mout_sclk_dsim1_c_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) MUX_SEL_MIF7, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) MUX(CLK_MOUT_SCLK_DSIM1_B, "mout_sclk_dsim1_b", mout_sclk_dsim1_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) MUX_SEL_MIF7, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) MUX(CLK_MOUT_SCLK_DSIM1_A, "mout_sclk_dsim1_a", mout_sclk_decon_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) MUX_SEL_MIF7, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) static const struct samsung_div_clock mif_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) /* DIV_MIF1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) DIV(CLK_DIV_SCLK_HPM_MIF, "div_sclk_hpm_mif", "div_clk2x_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) DIV_MIF1, 16, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) DIV(CLK_DIV_ACLK_DREX1, "div_aclk_drex1", "div_clk2x_phy", DIV_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) DIV(CLK_DIV_ACLK_DREX0, "div_aclk_drex0", "div_clk2x_phy", DIV_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) 8, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) DIV(CLK_DIV_CLK2XPHY, "div_clk2x_phy", "mout_clk2x_phy_c", DIV_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) /* DIV_MIF2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) DIV(CLK_DIV_ACLK_MIF_266, "div_aclk_mif_266", "mout_bus_pll_div2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) DIV_MIF2, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) DIV(CLK_DIV_ACLK_MIFND_133, "div_aclk_mifnd_133", "div_mif_pre",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) DIV_MIF2, 16, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) DIV(CLK_DIV_ACLK_MIF_133, "div_aclk_mif_133", "div_mif_pre",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) DIV_MIF2, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) DIV(CLK_DIV_ACLK_MIFNM_200, "div_aclk_mifnm_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) "mout_aclk_mifnm_200", DIV_MIF2, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) DIV(CLK_DIV_ACLK_MIF_200, "div_aclk_mif_200", "div_aclk_mif_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) DIV_MIF2, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) DIV(CLK_DIV_ACLK_MIF_400, "div_aclk_mif_400", "mout_aclk_mifnm_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) DIV_MIF2, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) /* DIV_MIF3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) DIV(CLK_DIV_ACLK_BUS2_400, "div_aclk_bus2_400", "div_mif_pre",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) DIV_MIF3, 16, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) DIV(CLK_DIV_ACLK_DISP_333, "div_aclk_disp_333", "mout_aclk_disp_333_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) DIV_MIF3, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) DIV(CLK_DIV_ACLK_CPIF_200, "div_aclk_cpif_200", "mout_aclk_mifnm_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) DIV_MIF3, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) /* DIV_MIF4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) DIV(CLK_DIV_SCLK_DSIM1, "div_sclk_dsim1", "mout_sclk_dsim1_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) DIV_MIF4, 24, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) DIV(CLK_DIV_SCLK_DECON_TV_VCLK, "div_sclk_decon_tv_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) "mout_sclk_decon_tv_vclk_c", DIV_MIF4, 20, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) DIV(CLK_DIV_SCLK_DSIM0, "div_sclk_dsim0", "mout_sclk_dsim0_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) DIV_MIF4, 16, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) DIV(CLK_DIV_SCLK_DSD, "div_sclk_dsd", "mout_sclk_dsd_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) DIV_MIF4, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) DIV(CLK_DIV_SCLK_DECON_TV_ECLK, "div_sclk_decon_tv_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) "mout_sclk_decon_tv_eclk_c", DIV_MIF4, 8, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) DIV(CLK_DIV_SCLK_DECON_VCLK, "div_sclk_decon_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) "mout_sclk_decon_vclk_c", DIV_MIF4, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) DIV(CLK_DIV_SCLK_DECON_ECLK, "div_sclk_decon_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) "mout_sclk_decon_eclk_c", DIV_MIF4, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) /* DIV_MIF5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) DIV(CLK_DIV_MIF_PRE, "div_mif_pre", "mout_bus_pll_div2", DIV_MIF5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) static const struct samsung_gate_clock mif_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) /* ENABLE_ACLK_MIF0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) GATE(CLK_CLK2X_PHY1, "clk2k_phy1", "div_clk2x_phy", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) GATE(CLK_CLK2X_PHY0, "clk2x_phy0", "div_clk2x_phy", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) GATE(CLK_CLKM_PHY1, "clkm_phy1", "mout_clkm_phy_c", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) GATE(CLK_CLKM_PHY0, "clkm_phy0", "mout_clkm_phy_c", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) GATE(CLK_RCLK_DREX1, "rclk_drex1", "oscclk", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) GATE(CLK_RCLK_DREX0, "rclk_drex0", "oscclk", ENABLE_ACLK_MIF0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) GATE(CLK_ACLK_DREX1_TZ, "aclk_drex1_tz", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) ENABLE_ACLK_MIF0, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) GATE(CLK_ACLK_DREX0_TZ, "aclk_drex0_tz", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) ENABLE_ACLK_MIF0, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) GATE(CLK_ACLK_DREX1_PEREV, "aclk_drex1_perev", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) ENABLE_ACLK_MIF0, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) GATE(CLK_ACLK_DREX0_PEREV, "aclk_drex0_perev", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) ENABLE_ACLK_MIF0, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) GATE(CLK_ACLK_DREX1_MEMIF, "aclk_drex1_memif", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) ENABLE_ACLK_MIF0, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) GATE(CLK_ACLK_DREX0_MEMIF, "aclk_drex0_memif", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) ENABLE_ACLK_MIF0, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) GATE(CLK_ACLK_DREX1_SCH, "aclk_drex1_sch", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) ENABLE_ACLK_MIF0, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) GATE(CLK_ACLK_DREX0_SCH, "aclk_drex0_sch", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) ENABLE_ACLK_MIF0, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) GATE(CLK_ACLK_DREX1_BUSIF, "aclk_drex1_busif", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) ENABLE_ACLK_MIF0, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) GATE(CLK_ACLK_DREX0_BUSIF, "aclk_drex0_busif", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) ENABLE_ACLK_MIF0, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) GATE(CLK_ACLK_DREX1_BUSIF_RD, "aclk_drex1_busif_rd", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) ENABLE_ACLK_MIF0, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) GATE(CLK_ACLK_DREX0_BUSIF_RD, "aclk_drex0_busif_rd", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) ENABLE_ACLK_MIF0, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) GATE(CLK_ACLK_DREX1, "aclk_drex1", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) ENABLE_ACLK_MIF0, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) GATE(CLK_ACLK_DREX0, "aclk_drex0", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) ENABLE_ACLK_MIF0, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) /* ENABLE_ACLK_MIF1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) GATE(CLK_ACLK_ASYNCAXIS_MIF_IMEM, "aclk_asyncaxis_mif_imem",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) "div_aclk_mif_200", ENABLE_ACLK_MIF1, 28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) GATE(CLK_ACLK_ASYNCAXIS_NOC_P_CCI, "aclk_asyncaxis_noc_p_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) "div_aclk_mif_200", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) GATE(CLK_ACLK_ASYNCAXIM_NOC_P_CCI, "aclk_asyncaxim_noc_p_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) GATE(CLK_ACLK_ASYNCAXIS_CP1, "aclk_asyncaxis_cp1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) "div_aclk_mifnm_200", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) GATE(CLK_ACLK_ASYNCAXIM_CP1, "aclk_asyncaxim_cp1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) "div_aclk_drex1", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) GATE(CLK_ACLK_ASYNCAXIS_CP0, "aclk_asyncaxis_cp0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) "div_aclk_mifnm_200", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) GATE(CLK_ACLK_ASYNCAXIM_CP0, "aclk_asyncaxim_cp0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) "div_aclk_drex0", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) GATE(CLK_ACLK_ASYNCAXIS_DREX1_3, "aclk_asyncaxis_drex1_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) GATE(CLK_ACLK_ASYNCAXIM_DREX1_3, "aclk_asyncaxim_drex1_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) "div_aclk_drex1", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) GATE(CLK_ACLK_ASYNCAXIS_DREX1_1, "aclk_asyncaxis_drex1_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) GATE(CLK_ACLK_ASYNCAXIM_DREX1_1, "aclk_asyncaxim_drex1_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) "div_aclk_drex1", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) GATE(CLK_ACLK_ASYNCAXIS_DREX1_0, "aclk_asyncaxis_drex1_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) GATE(CLK_ACLK_ASYNCAXIM_DREX1_0, "aclk_asyncaxim_drex1_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) "div_aclk_drex1", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) GATE(CLK_ACLK_ASYNCAXIS_DREX0_3, "aclk_asyncaxis_drex0_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) GATE(CLK_ACLK_ASYNCAXIM_DREX0_3, "aclk_asyncaxim_drex0_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) "div_aclk_drex0", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) GATE(CLK_ACLK_ASYNCAXIS_DREX0_1, "aclk_asyncaxis_drex0_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) GATE(CLK_ACLK_ASYNCAXIM_DREX0_1, "aclk_asyncaxim_drex0_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) "div_aclk_drex0", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) GATE(CLK_ACLK_ASYNCAXIS_DREX0_0, "aclk_asyncaxis_drex0_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) "div_aclk_mif_133", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) GATE(CLK_ACLK_ASYNCAXIM_DREX0_0, "aclk_asyncaxim_drex0_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) "div_aclk_drex0", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) GATE(CLK_ACLK_AHB2APB_MIF2P, "aclk_ahb2apb_mif2p", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) ENABLE_ACLK_MIF1, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) GATE(CLK_ACLK_AHB2APB_MIF1P, "aclk_ahb2apb_mif1p", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) ENABLE_ACLK_MIF1, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) GATE(CLK_ACLK_AHB2APB_MIF0P, "aclk_ahb2apb_mif0p", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) ENABLE_ACLK_MIF1, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) GATE(CLK_ACLK_IXIU_CCI, "aclk_ixiu_cci", "div_aclk_mif_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) ENABLE_ACLK_MIF1, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) GATE(CLK_ACLK_XIU_MIFSFRX, "aclk_xiu_mifsfrx", "div_aclk_mif_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) ENABLE_ACLK_MIF1, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) GATE(CLK_ACLK_MIFNP_133, "aclk_mifnp_133", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) ENABLE_ACLK_MIF1, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) GATE(CLK_ACLK_MIFNM_200, "aclk_mifnm_200", "div_aclk_mifnm_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) ENABLE_ACLK_MIF1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) GATE(CLK_ACLK_MIFND_133, "aclk_mifnd_133", "div_aclk_mifnd_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) ENABLE_ACLK_MIF1, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) GATE(CLK_ACLK_MIFND_400, "aclk_mifnd_400", "div_aclk_mif_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) ENABLE_ACLK_MIF1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) GATE(CLK_ACLK_CCI, "aclk_cci", "div_aclk_mif_400", ENABLE_ACLK_MIF1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) /* ENABLE_ACLK_MIF2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) GATE(CLK_ACLK_MIFND_266, "aclk_mifnd_266", "div_aclk_mif_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) ENABLE_ACLK_MIF2, 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) GATE(CLK_ACLK_PPMU_DREX1S3, "aclk_ppmu_drex1s3", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) ENABLE_ACLK_MIF2, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) GATE(CLK_ACLK_PPMU_DREX1S1, "aclk_ppmu_drex1s1", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) ENABLE_ACLK_MIF2, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) GATE(CLK_ACLK_PPMU_DREX1S0, "aclk_ppmu_drex1s0", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) ENABLE_ACLK_MIF2, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) GATE(CLK_ACLK_PPMU_DREX0S3, "aclk_ppmu_drex0s3", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) ENABLE_ACLK_MIF2, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) GATE(CLK_ACLK_PPMU_DREX0S1, "aclk_ppmu_drex0s1", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) ENABLE_ACLK_MIF2, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) GATE(CLK_ACLK_PPMU_DREX0S0, "aclk_ppmu_drex0s0", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) ENABLE_ACLK_MIF2, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) GATE(CLK_ACLK_AXIDS_CCI_MIFSFRX, "aclk_axids_cci_mifsfrx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) "div_aclk_mif_200", ENABLE_ACLK_MIF2, 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) GATE(CLK_ACLK_AXISYNCDNS_CCI, "aclk_axisyncdns_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) "div_aclk_mif_400", ENABLE_ACLK_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) GATE(CLK_ACLK_AXISYNCDN_CCI, "aclk_axisyncdn_cci", "div_aclk_mif_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) ENABLE_ACLK_MIF2, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) GATE(CLK_ACLK_AXISYNCDN_NOC_D, "aclk_axisyncdn_noc_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) "div_aclk_mif_200", ENABLE_ACLK_MIF2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) GATE(CLK_ACLK_ASYNCAPBS_MIF_CSSYS, "aclk_asyncapbs_mif_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) "div_aclk_mifnd_133", ENABLE_ACLK_MIF2, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) /* ENABLE_ACLK_MIF3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) GATE(CLK_ACLK_BUS2_400, "aclk_bus2_400", "div_aclk_bus2_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) ENABLE_ACLK_MIF3, 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) GATE(CLK_ACLK_DISP_333, "aclk_disp_333", "div_aclk_disp_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) ENABLE_ACLK_MIF3, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) GATE(CLK_ACLK_CPIF_200, "aclk_cpif_200", "div_aclk_cpif_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) ENABLE_ACLK_MIF3, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) /* ENABLE_PCLK_MIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) GATE(CLK_PCLK_PPMU_DREX1S3, "pclk_ppmu_drex1s3", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) ENABLE_PCLK_MIF, 29, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) GATE(CLK_PCLK_PPMU_DREX1S1, "pclk_ppmu_drex1s1", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) ENABLE_PCLK_MIF, 28, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) GATE(CLK_PCLK_PPMU_DREX1S0, "pclk_ppmu_drex1s0", "div_aclk_drex1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) ENABLE_PCLK_MIF, 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) GATE(CLK_PCLK_PPMU_DREX0S3, "pclk_ppmu_drex0s3", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) ENABLE_PCLK_MIF, 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) GATE(CLK_PCLK_PPMU_DREX0S1, "pclk_ppmu_drex0s1", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) ENABLE_PCLK_MIF, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) GATE(CLK_PCLK_PPMU_DREX0S0, "pclk_ppmu_drex0s0", "div_aclk_drex0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) ENABLE_PCLK_MIF, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) GATE(CLK_PCLK_ASYNCAXI_NOC_P_CCI, "pclk_asyncaxi_noc_p_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) "div_aclk_mif_133", ENABLE_PCLK_MIF, 21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) GATE(CLK_PCLK_ASYNCAXI_CP1, "pclk_asyncaxi_cp1", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) ENABLE_PCLK_MIF, 19, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) GATE(CLK_PCLK_ASYNCAXI_CP0, "pclk_asyncaxi_cp0", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) ENABLE_PCLK_MIF, 18, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) GATE(CLK_PCLK_ASYNCAXI_DREX1_3, "pclk_asyncaxi_drex1_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) "div_aclk_mif_133", ENABLE_PCLK_MIF, 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) GATE(CLK_PCLK_ASYNCAXI_DREX1_1, "pclk_asyncaxi_drex1_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) "div_aclk_mif_133", ENABLE_PCLK_MIF, 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) GATE(CLK_PCLK_ASYNCAXI_DREX1_0, "pclk_asyncaxi_drex1_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) "div_aclk_mif_133", ENABLE_PCLK_MIF, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) GATE(CLK_PCLK_ASYNCAXI_DREX0_3, "pclk_asyncaxi_drex0_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) "div_aclk_mif_133", ENABLE_PCLK_MIF, 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) GATE(CLK_PCLK_ASYNCAXI_DREX0_1, "pclk_asyncaxi_drex0_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) "div_aclk_mif_133", ENABLE_PCLK_MIF, 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) GATE(CLK_PCLK_ASYNCAXI_DREX0_0, "pclk_asyncaxi_drex0_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) "div_aclk_mif_133", ENABLE_PCLK_MIF, 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) GATE(CLK_PCLK_MIFSRVND_133, "pclk_mifsrvnd_133", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) ENABLE_PCLK_MIF, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) GATE(CLK_PCLK_PMU_MIF, "pclk_pmu_mif", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) ENABLE_PCLK_MIF, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) GATE(CLK_PCLK_SYSREG_MIF, "pclk_sysreg_mif", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) ENABLE_PCLK_MIF, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) GATE(CLK_PCLK_GPIO_ALIVE, "pclk_gpio_alive", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) ENABLE_PCLK_MIF, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) GATE(CLK_PCLK_ABB, "pclk_abb", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) ENABLE_PCLK_MIF, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) GATE(CLK_PCLK_PMU_APBIF, "pclk_pmu_apbif", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) ENABLE_PCLK_MIF, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) GATE(CLK_PCLK_DDR_PHY1, "pclk_ddr_phy1", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) ENABLE_PCLK_MIF, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) GATE(CLK_PCLK_DREX1, "pclk_drex1", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) ENABLE_PCLK_MIF, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) GATE(CLK_PCLK_DDR_PHY0, "pclk_ddr_phy0", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) ENABLE_PCLK_MIF, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) GATE(CLK_PCLK_DREX0, "pclk_drex0", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) ENABLE_PCLK_MIF, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) /* ENABLE_PCLK_MIF_SECURE_DREX0_TZ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) GATE(CLK_PCLK_DREX0_TZ, "pclk_drex0_tz", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) ENABLE_PCLK_MIF_SECURE_DREX0_TZ, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) /* ENABLE_PCLK_MIF_SECURE_DREX1_TZ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) GATE(CLK_PCLK_DREX1_TZ, "pclk_drex1_tz", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) ENABLE_PCLK_MIF_SECURE_DREX1_TZ, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) /* ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) GATE(CLK_PCLK_MONOTONIC_CNT, "pclk_monotonic_cnt", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) /* ENABLE_PCLK_MIF_SECURE_RTC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) GATE(CLK_PCLK_RTC, "pclk_rtc", "div_aclk_mif_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) ENABLE_PCLK_MIF_SECURE_RTC, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) /* ENABLE_SCLK_MIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) GATE(CLK_SCLK_DSIM1_DISP, "sclk_dsim1_disp", "div_sclk_dsim1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) ENABLE_SCLK_MIF, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) GATE(CLK_SCLK_DECON_TV_VCLK_DISP, "sclk_decon_tv_vclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) "div_sclk_decon_tv_vclk", ENABLE_SCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) GATE(CLK_SCLK_DSIM0_DISP, "sclk_dsim0_disp", "div_sclk_dsim0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) ENABLE_SCLK_MIF, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) GATE(CLK_SCLK_DSD_DISP, "sclk_dsd_disp", "div_sclk_dsd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) ENABLE_SCLK_MIF, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) GATE(CLK_SCLK_DECON_TV_ECLK_DISP, "sclk_decon_tv_eclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) "div_sclk_decon_tv_eclk", ENABLE_SCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) GATE(CLK_SCLK_DECON_VCLK_DISP, "sclk_decon_vclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) "div_sclk_decon_vclk", ENABLE_SCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) GATE(CLK_SCLK_DECON_ECLK_DISP, "sclk_decon_eclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) "div_sclk_decon_eclk", ENABLE_SCLK_MIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) GATE(CLK_SCLK_HPM_MIF, "sclk_hpm_mif", "div_sclk_hpm_mif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) ENABLE_SCLK_MIF, 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) GATE(CLK_SCLK_MFC_PLL, "sclk_mfc_pll", "mout_mfc_pll_div2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) ENABLE_SCLK_MIF, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) GATE(CLK_SCLK_BUS_PLL, "sclk_bus_pll", "mout_bus_pll_div2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) ENABLE_SCLK_MIF, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) GATE(CLK_SCLK_BUS_PLL_APOLLO, "sclk_bus_pll_apollo", "sclk_bus_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) ENABLE_SCLK_MIF, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) GATE(CLK_SCLK_BUS_PLL_ATLAS, "sclk_bus_pll_atlas", "sclk_bus_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) ENABLE_SCLK_MIF, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) static const struct samsung_cmu_info mif_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) .pll_clks = mif_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) .nr_pll_clks = ARRAY_SIZE(mif_pll_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) .mux_clks = mif_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) .nr_mux_clks = ARRAY_SIZE(mif_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) .div_clks = mif_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) .nr_div_clks = ARRAY_SIZE(mif_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) .gate_clks = mif_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) .nr_gate_clks = ARRAY_SIZE(mif_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) .fixed_factor_clks = mif_fixed_factor_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) .nr_fixed_factor_clks = ARRAY_SIZE(mif_fixed_factor_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) .nr_clk_ids = MIF_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) .clk_regs = mif_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) .nr_clk_regs = ARRAY_SIZE(mif_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) static void __init exynos5433_cmu_mif_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) samsung_cmu_register_one(np, &mif_cmu_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) CLK_OF_DECLARE(exynos5433_cmu_mif, "samsung,exynos5433-cmu-mif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) exynos5433_cmu_mif_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) * Register offset definitions for CMU_PERIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) #define DIV_PERIC 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) #define DIV_STAT_PERIC 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) #define ENABLE_ACLK_PERIC 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) #define ENABLE_PCLK_PERIC0 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) #define ENABLE_PCLK_PERIC1 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) #define ENABLE_SCLK_PERIC 0x0A00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) #define ENABLE_IP_PERIC0 0x0B00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) #define ENABLE_IP_PERIC1 0x0B04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) #define ENABLE_IP_PERIC2 0x0B08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) static const unsigned long peric_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) DIV_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) ENABLE_ACLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) ENABLE_PCLK_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) ENABLE_IP_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) ENABLE_IP_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) ENABLE_IP_PERIC2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) static const struct samsung_clk_reg_dump peric_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) /* pclk: sci, pmu, sysreg, gpio_{finger, ese, touch, nfc}, uart2-0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) { ENABLE_PCLK_PERIC0, 0xe00ff000 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) /* sclk: uart2-0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) { ENABLE_SCLK_PERIC, 0x7 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) static const struct samsung_div_clock peric_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) /* DIV_PERIC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) DIV(CLK_DIV_SCLK_SCI, "div_sclk_sci", "oscclk", DIV_PERIC, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) DIV(CLK_DIV_SCLK_SC_IN, "div_sclk_sc_in", "oscclk", DIV_PERIC, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) static const struct samsung_gate_clock peric_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) /* ENABLE_ACLK_PERIC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) GATE(CLK_ACLK_AHB2APB_PERIC2P, "aclk_ahb2apb_peric2p", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) ENABLE_ACLK_PERIC, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) GATE(CLK_ACLK_AHB2APB_PERIC1P, "aclk_ahb2apb_peric1p", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) ENABLE_ACLK_PERIC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) GATE(CLK_ACLK_AHB2APB_PERIC0P, "aclk_ahb2apb_peric0p", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) ENABLE_ACLK_PERIC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) GATE(CLK_ACLK_PERICNP_66, "aclk_pericnp_66", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) ENABLE_ACLK_PERIC, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) /* ENABLE_PCLK_PERIC0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) GATE(CLK_PCLK_SCI, "pclk_sci", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) 31, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) GATE(CLK_PCLK_GPIO_FINGER, "pclk_gpio_finger", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) ENABLE_PCLK_PERIC0, 30, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) GATE(CLK_PCLK_GPIO_ESE, "pclk_gpio_ese", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) ENABLE_PCLK_PERIC0, 29, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) GATE(CLK_PCLK_PWM, "pclk_pwm", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) 28, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) GATE(CLK_PCLK_SPDIF, "pclk_spdif", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) 26, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) GATE(CLK_PCLK_PCM1, "pclk_pcm1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) 25, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) GATE(CLK_PCLK_I2S1, "pclk_i2s", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) 24, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) GATE(CLK_PCLK_SPI2, "pclk_spi2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) 23, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) GATE(CLK_PCLK_SPI1, "pclk_spi1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) 22, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) GATE(CLK_PCLK_SPI0, "pclk_spi0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) 21, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) GATE(CLK_PCLK_ADCIF, "pclk_adcif", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) 20, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) GATE(CLK_PCLK_GPIO_TOUCH, "pclk_gpio_touch", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) ENABLE_PCLK_PERIC0, 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) GATE(CLK_PCLK_GPIO_NFC, "pclk_gpio_nfc", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) ENABLE_PCLK_PERIC0, 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) GATE(CLK_PCLK_GPIO_PERIC, "pclk_gpio_peric", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) ENABLE_PCLK_PERIC0, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) GATE(CLK_PCLK_PMU_PERIC, "pclk_pmu_peric", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) ENABLE_PCLK_PERIC0, 16, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) GATE(CLK_PCLK_SYSREG_PERIC, "pclk_sysreg_peric", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) ENABLE_PCLK_PERIC0, 15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) GATE(CLK_PCLK_UART2, "pclk_uart2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) 14, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) GATE(CLK_PCLK_UART1, "pclk_uart1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) 13, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) GATE(CLK_PCLK_UART0, "pclk_uart0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) 12, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) GATE(CLK_PCLK_HSI2C3, "pclk_hsi2c3", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) ENABLE_PCLK_PERIC0, 11, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) GATE(CLK_PCLK_HSI2C2, "pclk_hsi2c2", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) ENABLE_PCLK_PERIC0, 10, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) GATE(CLK_PCLK_HSI2C1, "pclk_hsi2c1", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) ENABLE_PCLK_PERIC0, 9, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) GATE(CLK_PCLK_HSI2C0, "pclk_hsi2c0", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) ENABLE_PCLK_PERIC0, 8, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) GATE(CLK_PCLK_I2C7, "pclk_i2c7", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 7, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) GATE(CLK_PCLK_I2C6, "pclk_i2c6", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) 6, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) GATE(CLK_PCLK_I2C5, "pclk_i2c5", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) 5, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) GATE(CLK_PCLK_I2C4, "pclk_i2c4", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) GATE(CLK_PCLK_I2C3, "pclk_i2c3", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) GATE(CLK_PCLK_I2C2, "pclk_i2c2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) 2, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) GATE(CLK_PCLK_I2C1, "pclk_i2c1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) GATE(CLK_PCLK_I2C0, "pclk_i2c0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) /* ENABLE_PCLK_PERIC1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) GATE(CLK_PCLK_SPI4, "pclk_spi4", "aclk_peric_66", ENABLE_PCLK_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) 9, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) GATE(CLK_PCLK_SPI3, "pclk_spi3", "aclk_peric_66", ENABLE_PCLK_PERIC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) 8, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) GATE(CLK_PCLK_HSI2C11, "pclk_hsi2c11", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) ENABLE_PCLK_PERIC1, 7, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) GATE(CLK_PCLK_HSI2C10, "pclk_hsi2c10", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) ENABLE_PCLK_PERIC1, 6, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) GATE(CLK_PCLK_HSI2C9, "pclk_hsi2c9", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) ENABLE_PCLK_PERIC1, 5, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) GATE(CLK_PCLK_HSI2C8, "pclk_hsi2c8", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) ENABLE_PCLK_PERIC1, 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) GATE(CLK_PCLK_HSI2C7, "pclk_hsi2c7", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) ENABLE_PCLK_PERIC1, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) GATE(CLK_PCLK_HSI2C6, "pclk_hsi2c6", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) ENABLE_PCLK_PERIC1, 2, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) GATE(CLK_PCLK_HSI2C5, "pclk_hsi2c5", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) ENABLE_PCLK_PERIC1, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) GATE(CLK_PCLK_HSI2C4, "pclk_hsi2c4", "aclk_peric_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) ENABLE_PCLK_PERIC1, 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) /* ENABLE_SCLK_PERIC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) GATE(CLK_SCLK_IOCLK_SPI4, "sclk_ioclk_spi4", "ioclk_spi4_clk_in",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) ENABLE_SCLK_PERIC, 21, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) GATE(CLK_SCLK_IOCLK_SPI3, "sclk_ioclk_spi3", "ioclk_spi3_clk_in",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) ENABLE_SCLK_PERIC, 20, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) GATE(CLK_SCLK_SPI4, "sclk_spi4", "sclk_spi4_peric", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) 19, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) GATE(CLK_SCLK_SPI3, "sclk_spi3", "sclk_spi3_peric", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) 18, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) GATE(CLK_SCLK_SCI, "sclk_sci", "div_sclk_sci", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) GATE(CLK_SCLK_SC_IN, "sclk_sc_in", "div_sclk_sc_in", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) GATE(CLK_SCLK_PWM, "sclk_pwm", "oscclk", ENABLE_SCLK_PERIC, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) GATE(CLK_SCLK_IOCLK_SPI2, "sclk_ioclk_spi2", "ioclk_spi2_clk_in",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) ENABLE_SCLK_PERIC, 13, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) GATE(CLK_SCLK_IOCLK_SPI1, "sclk_ioclk_spi1", "ioclk_spi1_clk_in",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) ENABLE_SCLK_PERIC, 12, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) GATE(CLK_SCLK_IOCLK_SPI0, "sclk_ioclk_spi0", "ioclk_spi0_clk_in",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) ENABLE_SCLK_PERIC, 11, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) GATE(CLK_SCLK_IOCLK_I2S1_BCLK, "sclk_ioclk_i2s1_bclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) "ioclk_i2s1_bclk_in", ENABLE_SCLK_PERIC, 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) GATE(CLK_SCLK_SPDIF, "sclk_spdif", "sclk_spdif_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) ENABLE_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) GATE(CLK_SCLK_PCM1, "sclk_pcm1", "sclk_pcm1_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) ENABLE_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) GATE(CLK_SCLK_I2S1, "sclk_i2s1", "sclk_i2s1_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) ENABLE_SCLK_PERIC, 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) GATE(CLK_SCLK_SPI2, "sclk_spi2", "sclk_spi2_peric", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) 5, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) GATE(CLK_SCLK_SPI1, "sclk_spi1", "sclk_spi1_peric", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) GATE(CLK_SCLK_SPI0, "sclk_spi0", "sclk_spi0_peric", ENABLE_SCLK_PERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) GATE(CLK_SCLK_UART2, "sclk_uart2", "sclk_uart2_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) ENABLE_SCLK_PERIC, 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) GATE(CLK_SCLK_UART1, "sclk_uart1", "sclk_uart1_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) ENABLE_SCLK_PERIC, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) GATE(CLK_SCLK_UART0, "sclk_uart0", "sclk_uart0_peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) ENABLE_SCLK_PERIC, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) static const struct samsung_cmu_info peric_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) .div_clks = peric_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) .nr_div_clks = ARRAY_SIZE(peric_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) .gate_clks = peric_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) .nr_gate_clks = ARRAY_SIZE(peric_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) .nr_clk_ids = PERIC_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) .clk_regs = peric_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) .nr_clk_regs = ARRAY_SIZE(peric_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) .suspend_regs = peric_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) .nr_suspend_regs = ARRAY_SIZE(peric_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) static void __init exynos5433_cmu_peric_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) samsung_cmu_register_one(np, &peric_cmu_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) CLK_OF_DECLARE(exynos5433_cmu_peric, "samsung,exynos5433-cmu-peric",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) exynos5433_cmu_peric_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) * Register offset definitions for CMU_PERIS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) #define ENABLE_ACLK_PERIS 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) #define ENABLE_PCLK_PERIS 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) #define ENABLE_PCLK_PERIS_SECURE_TZPC 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) #define ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF 0x0908
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) #define ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF 0x090c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) #define ENABLE_PCLK_PERIS_SECURE_TOPRTC 0x0910
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) #define ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF 0x0914
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) #define ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF 0x0918
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) #define ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF 0x091c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) #define ENABLE_SCLK_PERIS 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) #define ENABLE_SCLK_PERIS_SECURE_SECKEY 0x0a04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) #define ENABLE_SCLK_PERIS_SECURE_CHIPID 0x0a08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) #define ENABLE_SCLK_PERIS_SECURE_TOPRTC 0x0a0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) #define ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE 0x0a10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) #define ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT 0x0a14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) #define ENABLE_SCLK_PERIS_SECURE_OTP_CON 0x0a18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) #define ENABLE_IP_PERIS0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) #define ENABLE_IP_PERIS1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) #define ENABLE_IP_PERIS_SECURE_TZPC 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) #define ENABLE_IP_PERIS_SECURE_SECKEY 0x0b0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) #define ENABLE_IP_PERIS_SECURE_CHIPID 0x0b10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) #define ENABLE_IP_PERIS_SECURE_TOPRTC 0x0b14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) #define ENABLE_IP_PERIS_SECURE_CUSTOM_EFUSE 0x0b18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) #define ENABLE_IP_PERIS_SECURE_ANTIBRK_CNT 0x0b1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) #define ENABLE_IP_PERIS_SECURE_OTP_CON 0x0b20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) static const unsigned long peris_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) ENABLE_ACLK_PERIS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) ENABLE_PCLK_PERIS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) ENABLE_PCLK_PERIS_SECURE_TZPC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) ENABLE_PCLK_PERIS_SECURE_TOPRTC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) ENABLE_SCLK_PERIS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) ENABLE_SCLK_PERIS_SECURE_SECKEY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) ENABLE_SCLK_PERIS_SECURE_CHIPID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) ENABLE_SCLK_PERIS_SECURE_TOPRTC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) ENABLE_SCLK_PERIS_SECURE_OTP_CON,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) ENABLE_IP_PERIS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) ENABLE_IP_PERIS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) ENABLE_IP_PERIS_SECURE_TZPC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) ENABLE_IP_PERIS_SECURE_SECKEY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) ENABLE_IP_PERIS_SECURE_CHIPID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) ENABLE_IP_PERIS_SECURE_TOPRTC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) ENABLE_IP_PERIS_SECURE_CUSTOM_EFUSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) ENABLE_IP_PERIS_SECURE_ANTIBRK_CNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) ENABLE_IP_PERIS_SECURE_OTP_CON,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) static const struct samsung_gate_clock peris_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) /* ENABLE_ACLK_PERIS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) GATE(CLK_ACLK_AHB2APB_PERIS1P, "aclk_ahb2apb_peris1p", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) ENABLE_ACLK_PERIS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) GATE(CLK_ACLK_AHB2APB_PERIS0P, "aclk_ahb2apb_peris0p", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) ENABLE_ACLK_PERIS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) GATE(CLK_ACLK_PERISNP_66, "aclk_perisnp_66", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) ENABLE_ACLK_PERIS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) /* ENABLE_PCLK_PERIS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) GATE(CLK_PCLK_HPM_APBIF, "pclk_hpm_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) ENABLE_PCLK_PERIS, 30, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) GATE(CLK_PCLK_TMU1_APBIF, "pclk_tmu1_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) ENABLE_PCLK_PERIS, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) GATE(CLK_PCLK_TMU0_APBIF, "pclk_tmu0_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) ENABLE_PCLK_PERIS, 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) GATE(CLK_PCLK_PMU_PERIS, "pclk_pmu_peris", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) ENABLE_PCLK_PERIS, 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) GATE(CLK_PCLK_SYSREG_PERIS, "pclk_sysreg_peris", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) ENABLE_PCLK_PERIS, 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) GATE(CLK_PCLK_CMU_TOP_APBIF, "pclk_cmu_top_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) ENABLE_PCLK_PERIS, 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) GATE(CLK_PCLK_WDT_APOLLO, "pclk_wdt_apollo", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) ENABLE_PCLK_PERIS, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) GATE(CLK_PCLK_WDT_ATLAS, "pclk_wdt_atlas", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) ENABLE_PCLK_PERIS, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) GATE(CLK_PCLK_MCT, "pclk_mct", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) ENABLE_PCLK_PERIS, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) GATE(CLK_PCLK_HDMI_CEC, "pclk_hdmi_cec", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) ENABLE_PCLK_PERIS, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) /* ENABLE_PCLK_PERIS_SECURE_TZPC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) GATE(CLK_PCLK_TZPC12, "pclk_tzpc12", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) ENABLE_PCLK_PERIS_SECURE_TZPC, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) GATE(CLK_PCLK_TZPC11, "pclk_tzpc11", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) ENABLE_PCLK_PERIS_SECURE_TZPC, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) GATE(CLK_PCLK_TZPC10, "pclk_tzpc10", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) ENABLE_PCLK_PERIS_SECURE_TZPC, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) GATE(CLK_PCLK_TZPC9, "pclk_tzpc9", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) ENABLE_PCLK_PERIS_SECURE_TZPC, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) GATE(CLK_PCLK_TZPC8, "pclk_tzpc8", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) ENABLE_PCLK_PERIS_SECURE_TZPC, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) GATE(CLK_PCLK_TZPC7, "pclk_tzpc7", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) ENABLE_PCLK_PERIS_SECURE_TZPC, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) GATE(CLK_PCLK_TZPC6, "pclk_tzpc6", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) ENABLE_PCLK_PERIS_SECURE_TZPC, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) GATE(CLK_PCLK_TZPC5, "pclk_tzpc5", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) ENABLE_PCLK_PERIS_SECURE_TZPC, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) GATE(CLK_PCLK_TZPC4, "pclk_tzpc4", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) ENABLE_PCLK_PERIS_SECURE_TZPC, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) GATE(CLK_PCLK_TZPC3, "pclk_tzpc3", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) ENABLE_PCLK_PERIS_SECURE_TZPC, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) GATE(CLK_PCLK_TZPC2, "pclk_tzpc2", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) ENABLE_PCLK_PERIS_SECURE_TZPC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) GATE(CLK_PCLK_TZPC1, "pclk_tzpc1", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) ENABLE_PCLK_PERIS_SECURE_TZPC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) GATE(CLK_PCLK_TZPC0, "pclk_tzpc0", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) ENABLE_PCLK_PERIS_SECURE_TZPC, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) /* ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) GATE(CLK_PCLK_SECKEY_APBIF, "pclk_seckey_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) /* ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) GATE(CLK_PCLK_CHIPID_APBIF, "pclk_chipid_apbif", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) /* ENABLE_PCLK_PERIS_SECURE_TOPRTC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) GATE(CLK_PCLK_TOPRTC, "pclk_toprtc", "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) ENABLE_PCLK_PERIS_SECURE_TOPRTC, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) /* ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) GATE(CLK_PCLK_CUSTOM_EFUSE_APBIF, "pclk_custom_efuse_apbif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) /* ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) GATE(CLK_PCLK_ANTIRBK_CNT_APBIF, "pclk_antirbk_cnt_apbif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) /* ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) GATE(CLK_PCLK_OTP_CON_APBIF, "pclk_otp_con_apbif",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) "aclk_peris_66",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) /* ENABLE_SCLK_PERIS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) GATE(CLK_SCLK_ASV_TB, "sclk_asv_tb", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) ENABLE_SCLK_PERIS, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) GATE(CLK_SCLK_TMU1, "sclk_tmu1", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) ENABLE_SCLK_PERIS, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) GATE(CLK_SCLK_TMU0, "sclk_tmu0", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) ENABLE_SCLK_PERIS, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) /* ENABLE_SCLK_PERIS_SECURE_SECKEY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) GATE(CLK_SCLK_SECKEY, "sclk_seckey", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) ENABLE_SCLK_PERIS_SECURE_SECKEY, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) /* ENABLE_SCLK_PERIS_SECURE_CHIPID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) GATE(CLK_SCLK_CHIPID, "sclk_chipid", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) ENABLE_SCLK_PERIS_SECURE_CHIPID, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) /* ENABLE_SCLK_PERIS_SECURE_TOPRTC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) GATE(CLK_SCLK_TOPRTC, "sclk_toprtc", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) ENABLE_SCLK_PERIS_SECURE_TOPRTC, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) /* ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) GATE(CLK_SCLK_CUSTOM_EFUSE, "sclk_custom_efuse", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) /* ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) GATE(CLK_SCLK_ANTIRBK_CNT, "sclk_antirbk_cnt", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) /* ENABLE_SCLK_PERIS_SECURE_OTP_CON */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) GATE(CLK_SCLK_OTP_CON, "sclk_otp_con", "oscclk_efuse_common",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) ENABLE_SCLK_PERIS_SECURE_OTP_CON, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) static const struct samsung_cmu_info peris_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) .gate_clks = peris_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) .nr_gate_clks = ARRAY_SIZE(peris_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) .nr_clk_ids = PERIS_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) .clk_regs = peris_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) .nr_clk_regs = ARRAY_SIZE(peris_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) static void __init exynos5433_cmu_peris_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) samsung_cmu_register_one(np, &peris_cmu_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) CLK_OF_DECLARE(exynos5433_cmu_peris, "samsung,exynos5433-cmu-peris",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) exynos5433_cmu_peris_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) * Register offset definitions for CMU_FSYS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) #define MUX_SEL_FSYS0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) #define MUX_SEL_FSYS1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) #define MUX_SEL_FSYS2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) #define MUX_SEL_FSYS3 0x020c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) #define MUX_SEL_FSYS4 0x0210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) #define MUX_ENABLE_FSYS0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) #define MUX_ENABLE_FSYS1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) #define MUX_ENABLE_FSYS2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) #define MUX_ENABLE_FSYS3 0x030c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) #define MUX_ENABLE_FSYS4 0x0310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) #define MUX_STAT_FSYS0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) #define MUX_STAT_FSYS1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) #define MUX_STAT_FSYS2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) #define MUX_STAT_FSYS3 0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) #define MUX_STAT_FSYS4 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) #define MUX_IGNORE_FSYS2 0x0508
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) #define MUX_IGNORE_FSYS3 0x050c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) #define ENABLE_ACLK_FSYS0 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) #define ENABLE_ACLK_FSYS1 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) #define ENABLE_PCLK_FSYS 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) #define ENABLE_SCLK_FSYS 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) #define ENABLE_IP_FSYS0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) #define ENABLE_IP_FSYS1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) PNAME(mout_sclk_ufs_mphy_user_p) = { "oscclk", "sclk_ufs_mphy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) PNAME(mout_aclk_fsys_200_user_p) = { "oscclk", "aclk_fsys_200", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) PNAME(mout_sclk_pcie_100_user_p) = { "oscclk", "sclk_pcie_100_fsys",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) PNAME(mout_sclk_ufsunipro_user_p) = { "oscclk", "sclk_ufsunipro_fsys",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) PNAME(mout_sclk_mmc2_user_p) = { "oscclk", "sclk_mmc2_fsys", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) PNAME(mout_sclk_mmc1_user_p) = { "oscclk", "sclk_mmc1_fsys", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) PNAME(mout_sclk_mmc0_user_p) = { "oscclk", "sclk_mmc0_fsys", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) PNAME(mout_sclk_usbhost30_user_p) = { "oscclk", "sclk_usbhost30_fsys",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) PNAME(mout_sclk_usbdrd30_user_p) = { "oscclk", "sclk_usbdrd30_fsys", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) PNAME(mout_phyclk_usbhost30_uhost30_pipe_pclk_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) = { "oscclk", "phyclk_usbhost30_uhost30_pipe_pclk_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) PNAME(mout_phyclk_usbhost30_uhost30_phyclock_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) = { "oscclk", "phyclk_usbhost30_uhost30_phyclock_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) PNAME(mout_phyclk_usbhost20_phy_hsic1_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) = { "oscclk", "phyclk_usbhost20_phy_hsic1_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) PNAME(mout_phyclk_usbhost20_phy_clk48mohci_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) = { "oscclk", "phyclk_usbhost20_phy_clk48mohci_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) PNAME(mout_phyclk_usbhost20_phy_phyclock_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) = { "oscclk", "phyclk_usbhost20_phy_phyclock_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) PNAME(mout_phyclk_usbhost20_phy_freeclk_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) = { "oscclk", "phyclk_usbhost20_phy_freeclk_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) PNAME(mout_phyclk_usbdrd30_udrd30_pipe_pclk_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) = { "oscclk", "phyclk_usbdrd30_udrd30_pipe_pclk_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) PNAME(mout_phyclk_usbdrd30_udrd30_phyclock_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) = { "oscclk", "phyclk_usbdrd30_udrd30_phyclock_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) PNAME(mout_phyclk_ufs_rx1_symbol_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) = { "oscclk", "phyclk_ufs_rx1_symbol_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) PNAME(mout_phyclk_ufs_rx0_symbol_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) = { "oscclk", "phyclk_ufs_rx0_symbol_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) PNAME(mout_phyclk_ufs_tx1_symbol_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) = { "oscclk", "phyclk_ufs_tx1_symbol_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) PNAME(mout_phyclk_ufs_tx0_symbol_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) = { "oscclk", "phyclk_ufs_tx0_symbol_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) PNAME(mout_phyclk_lli_mphy_to_ufs_user_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) = { "oscclk", "phyclk_lli_mphy_to_ufs_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) PNAME(mout_sclk_mphy_p)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) = { "mout_sclk_ufs_mphy_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) "mout_phyclk_lli_mphy_to_ufs_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) static const unsigned long fsys_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) MUX_SEL_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) MUX_SEL_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) MUX_SEL_FSYS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) MUX_SEL_FSYS3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) MUX_SEL_FSYS4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) MUX_ENABLE_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) MUX_ENABLE_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) MUX_ENABLE_FSYS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) MUX_ENABLE_FSYS3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) MUX_ENABLE_FSYS4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) MUX_IGNORE_FSYS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) MUX_IGNORE_FSYS3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) ENABLE_ACLK_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) ENABLE_PCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) ENABLE_IP_FSYS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) ENABLE_IP_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) static const struct samsung_clk_reg_dump fsys_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) { MUX_SEL_FSYS0, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) { MUX_SEL_FSYS1, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) { MUX_SEL_FSYS2, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) { MUX_SEL_FSYS3, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) { MUX_SEL_FSYS4, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) static const struct samsung_fixed_rate_clock fsys_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) /* PHY clocks from USBDRD30_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) FRATE(CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) "phyclk_usbdrd30_udrd30_phyclock_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) 0, 60000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) FRATE(CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) "phyclk_usbdrd30_udrd30_pipe_pclk_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) 0, 125000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) /* PHY clocks from USBHOST30_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) FRATE(CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) "phyclk_usbhost30_uhost30_phyclock_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) 0, 60000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) FRATE(CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) "phyclk_usbhost30_uhost30_pipe_pclk_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) 0, 125000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) /* PHY clocks from USBHOST20_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) FRATE(CLK_PHYCLK_USBHOST20_PHY_FREECLK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) "phyclk_usbhost20_phy_freeclk_phy", NULL, 0, 60000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) FRATE(CLK_PHYCLK_USBHOST20_PHY_PHYCLOCK_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) "phyclk_usbhost20_phy_phyclock_phy", NULL, 0, 60000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) FRATE(CLK_PHYCLK_USBHOST20_PHY_CLK48MOHCI_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) "phyclk_usbhost20_phy_clk48mohci_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) 0, 48000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) FRATE(CLK_PHYCLK_USBHOST20_PHY_HSIC1_PHY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) "phyclk_usbhost20_phy_hsic1_phy", NULL, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) 60000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) /* PHY clocks from UFS_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) FRATE(CLK_PHYCLK_UFS_TX0_SYMBOL_PHY, "phyclk_ufs_tx0_symbol_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) NULL, 0, 300000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) FRATE(CLK_PHYCLK_UFS_RX0_SYMBOL_PHY, "phyclk_ufs_rx0_symbol_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) NULL, 0, 300000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) FRATE(CLK_PHYCLK_UFS_TX1_SYMBOL_PHY, "phyclk_ufs_tx1_symbol_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) NULL, 0, 300000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) FRATE(CLK_PHYCLK_UFS_RX1_SYMBOL_PHY, "phyclk_ufs_rx1_symbol_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) NULL, 0, 300000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) /* PHY clocks from LLI_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) FRATE(CLK_PHYCLK_LLI_MPHY_TO_UFS_PHY, "phyclk_lli_mphy_to_ufs_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) NULL, 0, 26000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) static const struct samsung_mux_clock fsys_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) /* MUX_SEL_FSYS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) MUX(CLK_MOUT_SCLK_UFS_MPHY_USER, "mout_sclk_ufs_mphy_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) mout_sclk_ufs_mphy_user_p, MUX_SEL_FSYS0, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) MUX(CLK_MOUT_ACLK_FSYS_200_USER, "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) mout_aclk_fsys_200_user_p, MUX_SEL_FSYS0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084) /* MUX_SEL_FSYS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) MUX(CLK_MOUT_SCLK_PCIE_100_USER, "mout_sclk_pcie_100_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) mout_sclk_pcie_100_user_p, MUX_SEL_FSYS1, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) MUX(CLK_MOUT_SCLK_UFSUNIPRO_USER, "mout_sclk_ufsunipro_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) mout_sclk_ufsunipro_user_p, MUX_SEL_FSYS1, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) MUX(CLK_MOUT_SCLK_MMC2_USER, "mout_sclk_mmc2_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) mout_sclk_mmc2_user_p, MUX_SEL_FSYS1, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) MUX(CLK_MOUT_SCLK_MMC1_USER, "mout_sclk_mmc1_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) mout_sclk_mmc1_user_p, MUX_SEL_FSYS1, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) MUX(CLK_MOUT_SCLK_MMC0_USER, "mout_sclk_mmc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) mout_sclk_mmc0_user_p, MUX_SEL_FSYS1, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095) MUX(CLK_MOUT_SCLK_USBHOST30_USER, "mout_sclk_usbhost30_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) mout_sclk_usbhost30_user_p, MUX_SEL_FSYS1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) MUX(CLK_MOUT_SCLK_USBDRD30_USER, "mout_sclk_usbdrd30_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) mout_sclk_usbdrd30_user_p, MUX_SEL_FSYS1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) /* MUX_SEL_FSYS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) MUX(CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) "mout_phyclk_usbhost30_uhost30_pipe_pclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) mout_phyclk_usbhost30_uhost30_pipe_pclk_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) MUX_SEL_FSYS2, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) MUX(CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) "mout_phyclk_usbhost30_uhost30_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) mout_phyclk_usbhost30_uhost30_phyclock_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) MUX_SEL_FSYS2, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_HSIC1_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) "mout_phyclk_usbhost20_phy_hsic1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) mout_phyclk_usbhost20_phy_hsic1_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) MUX_SEL_FSYS2, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_CLK48MOHCI_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) "mout_phyclk_usbhost20_phy_clk48mohci_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) mout_phyclk_usbhost20_phy_clk48mohci_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) MUX_SEL_FSYS2, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_PHYCLOCK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) "mout_phyclk_usbhost20_phy_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) mout_phyclk_usbhost20_phy_phyclock_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) MUX_SEL_FSYS2, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_PHY_FREECLK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) "mout_phyclk_usbhost20_phy_freeclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) mout_phyclk_usbhost20_phy_freeclk_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) MUX_SEL_FSYS2, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) MUX(CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) "mout_phyclk_usbdrd30_udrd30_pipe_pclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) mout_phyclk_usbdrd30_udrd30_pipe_pclk_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) MUX_SEL_FSYS2, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) MUX(CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130) "mout_phyclk_usbdrd30_udrd30_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) mout_phyclk_usbdrd30_udrd30_phyclock_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) MUX_SEL_FSYS2, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) /* MUX_SEL_FSYS3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) MUX(CLK_MOUT_PHYCLK_UFS_RX1_SYMBOL_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) "mout_phyclk_ufs_rx1_symbol_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) mout_phyclk_ufs_rx1_symbol_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) MUX_SEL_FSYS3, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) MUX(CLK_MOUT_PHYCLK_UFS_RX0_SYMBOL_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) "mout_phyclk_ufs_rx0_symbol_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) mout_phyclk_ufs_rx0_symbol_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) MUX_SEL_FSYS3, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) MUX(CLK_MOUT_PHYCLK_UFS_TX1_SYMBOL_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) "mout_phyclk_ufs_tx1_symbol_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) mout_phyclk_ufs_tx1_symbol_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) MUX_SEL_FSYS3, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) MUX(CLK_MOUT_PHYCLK_UFS_TX0_SYMBOL_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) "mout_phyclk_ufs_tx0_symbol_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) mout_phyclk_ufs_tx0_symbol_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) MUX_SEL_FSYS3, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) MUX(CLK_MOUT_PHYCLK_LLI_MPHY_TO_UFS_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) "mout_phyclk_lli_mphy_to_ufs_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) mout_phyclk_lli_mphy_to_ufs_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) MUX_SEL_FSYS3, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) /* MUX_SEL_FSYS4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) MUX(CLK_MOUT_SCLK_MPHY, "mout_sclk_mphy", mout_sclk_mphy_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) MUX_SEL_FSYS4, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) static const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) /* ENABLE_ACLK_FSYS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) GATE(CLK_ACLK_PCIE, "aclk_pcie", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) ENABLE_ACLK_FSYS0, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) GATE(CLK_ACLK_PDMA1, "aclk_pdma1", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) ENABLE_ACLK_FSYS0, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) GATE(CLK_ACLK_TSI, "aclk_tsi", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) ENABLE_ACLK_FSYS0, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) GATE(CLK_ACLK_MMC2, "aclk_mmc2", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) ENABLE_ACLK_FSYS0, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) GATE(CLK_ACLK_MMC1, "aclk_mmc1", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) ENABLE_ACLK_FSYS0, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) GATE(CLK_ACLK_MMC0, "aclk_mmc0", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) ENABLE_ACLK_FSYS0, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) GATE(CLK_ACLK_UFS, "aclk_ufs", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) ENABLE_ACLK_FSYS0, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) GATE(CLK_ACLK_USBHOST20, "aclk_usbhost20", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) ENABLE_ACLK_FSYS0, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) GATE(CLK_ACLK_USBHOST30, "aclk_usbhost30", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) ENABLE_ACLK_FSYS0, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) GATE(CLK_ACLK_USBDRD30, "aclk_usbdrd30", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) ENABLE_ACLK_FSYS0, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) GATE(CLK_ACLK_PDMA0, "aclk_pdma0", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) ENABLE_ACLK_FSYS0, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) /* ENABLE_ACLK_FSYS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) GATE(CLK_ACLK_XIU_FSYSPX, "aclk_xiu_fsyspx", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) ENABLE_ACLK_FSYS1, 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) GATE(CLK_ACLK_AHB_USBLINKH1, "aclk_ahb_usblinkh1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) GATE(CLK_ACLK_SMMU_PDMA1, "aclk_smmu_pdma1", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) ENABLE_ACLK_FSYS1, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) GATE(CLK_ACLK_BTS_PCIE, "aclk_bts_pcie", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) ENABLE_ACLK_FSYS1, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) GATE(CLK_ACLK_AXIUS_PDMA1, "aclk_axius_pdma1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) GATE(CLK_ACLK_SMMU_PDMA0, "aclk_smmu_pdma0", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) ENABLE_ACLK_FSYS1, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) GATE(CLK_ACLK_BTS_UFS, "aclk_bts_ufs", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) ENABLE_ACLK_FSYS1, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) GATE(CLK_ACLK_BTS_USBHOST30, "aclk_bts_usbhost30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) GATE(CLK_ACLK_BTS_USBDRD30, "aclk_bts_usbdrd30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) GATE(CLK_ACLK_AXIUS_PDMA0, "aclk_axius_pdma0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) GATE(CLK_ACLK_AXIUS_USBHS, "aclk_axius_usbhs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) GATE(CLK_ACLK_AXIUS_FSYSSX, "aclk_axius_fsyssx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) GATE(CLK_ACLK_AHB2APB_FSYSP, "aclk_ahb2apb_fsysp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) GATE(CLK_ACLK_AHB2AXI_USBHS, "aclk_ahb2axi_usbhs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) GATE(CLK_ACLK_AHB_USBLINKH0, "aclk_ahb_usblinkh0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) "mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) GATE(CLK_ACLK_AHB_USBHS, "aclk_ahb_usbhs", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) ENABLE_ACLK_FSYS1, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) GATE(CLK_ACLK_AHB_FSYSH, "aclk_ahb_fsysh", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230) ENABLE_ACLK_FSYS1, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) GATE(CLK_ACLK_XIU_FSYSX, "aclk_xiu_fsysx", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232) ENABLE_ACLK_FSYS1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) GATE(CLK_ACLK_XIU_FSYSSX, "aclk_xiu_fsyssx", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) ENABLE_ACLK_FSYS1, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) GATE(CLK_ACLK_FSYSNP_200, "aclk_fsysnp_200", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) ENABLE_ACLK_FSYS1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) GATE(CLK_ACLK_FSYSND_200, "aclk_fsysnd_200", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) ENABLE_ACLK_FSYS1, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) /* ENABLE_PCLK_FSYS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) GATE(CLK_PCLK_PCIE_CTRL, "pclk_pcie_ctrl", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) ENABLE_PCLK_FSYS, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243) GATE(CLK_PCLK_SMMU_PDMA1, "pclk_smmu_pdma1", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) ENABLE_PCLK_FSYS, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) GATE(CLK_PCLK_PCIE_PHY, "pclk_pcie_phy", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) ENABLE_PCLK_FSYS, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) GATE(CLK_PCLK_BTS_PCIE, "pclk_bts_pcie", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) ENABLE_PCLK_FSYS, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) GATE(CLK_PCLK_SMMU_PDMA0, "pclk_smmu_pdma0", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) ENABLE_PCLK_FSYS, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) GATE(CLK_PCLK_BTS_UFS, "pclk_bts_ufs", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) ENABLE_PCLK_FSYS, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253) GATE(CLK_PCLK_BTS_USBHOST30, "pclk_bts_usbhost30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) "mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) GATE(CLK_PCLK_BTS_USBDRD30, "pclk_bts_usbdrd30",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256) "mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257) GATE(CLK_PCLK_GPIO_FSYS, "pclk_gpio_fsys", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) ENABLE_PCLK_FSYS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) GATE(CLK_PCLK_PMU_FSYS, "pclk_pmu_fsys", "mout_aclk_fsys_200_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) ENABLE_PCLK_FSYS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261) GATE(CLK_PCLK_SYSREG_FSYS, "pclk_sysreg_fsys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) "mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265) /* ENABLE_SCLK_FSYS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) GATE(CLK_SCLK_PCIE_100, "sclk_pcie_100", "mout_sclk_pcie_100_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) ENABLE_SCLK_FSYS, 21, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) GATE(CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269) "phyclk_usbhost30_uhost30_pipe_pclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) "mout_phyclk_usbhost30_uhost30_pipe_pclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271) ENABLE_SCLK_FSYS, 18, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) GATE(CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273) "phyclk_usbhost30_uhost30_phyclock",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) "mout_phyclk_usbhost30_uhost30_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275) ENABLE_SCLK_FSYS, 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) GATE(CLK_PHYCLK_UFS_RX1_SYMBOL, "phyclk_ufs_rx1_symbol",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) "mout_phyclk_ufs_rx1_symbol_user", ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) GATE(CLK_PHYCLK_UFS_RX0_SYMBOL, "phyclk_ufs_rx0_symbol",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) "mout_phyclk_ufs_rx0_symbol_user", ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) GATE(CLK_PHYCLK_UFS_TX1_SYMBOL, "phyclk_ufs_tx1_symbol",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) "mout_phyclk_ufs_tx1_symbol_user", ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284) 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) GATE(CLK_PHYCLK_UFS_TX0_SYMBOL, "phyclk_ufs_tx0_symbol",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) "mout_phyclk_ufs_tx0_symbol_user", ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287) 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288) GATE(CLK_PHYCLK_USBHOST20_PHY_HSIC1, "phyclk_usbhost20_phy_hsic1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) "mout_phyclk_usbhost20_phy_hsic1", ENABLE_SCLK_FSYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291) GATE(CLK_PHYCLK_USBHOST20_PHY_CLK48MOHCI,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) "phyclk_usbhost20_phy_clk48mohci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293) "mout_phyclk_usbhost20_phy_clk48mohci_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) ENABLE_SCLK_FSYS, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) GATE(CLK_PHYCLK_USBHOST20_PHY_PHYCLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296) "phyclk_usbhost20_phy_phyclock",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) "mout_phyclk_usbhost20_phy_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) ENABLE_SCLK_FSYS, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299) GATE(CLK_PHYCLK_USBHOST20_PHY_FREECLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) "phyclk_usbhost20_phy_freeclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301) "mout_phyclk_usbhost20_phy_freeclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) ENABLE_SCLK_FSYS, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303) GATE(CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) "phyclk_usbdrd30_udrd30_pipe_pclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) "mout_phyclk_usbdrd30_udrd30_pipe_pclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) ENABLE_SCLK_FSYS, 8, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) GATE(CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) "phyclk_usbdrd30_udrd30_phyclock",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) "mout_phyclk_usbdrd30_udrd30_phyclock_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) ENABLE_SCLK_FSYS, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311) GATE(CLK_SCLK_MPHY, "sclk_mphy", "mout_sclk_mphy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) ENABLE_SCLK_FSYS, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313) GATE(CLK_SCLK_UFSUNIPRO, "sclk_ufsunipro", "mout_sclk_ufsunipro_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) ENABLE_SCLK_FSYS, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) GATE(CLK_SCLK_MMC2, "sclk_mmc2", "mout_sclk_mmc2_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316) ENABLE_SCLK_FSYS, 4, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317) GATE(CLK_SCLK_MMC1, "sclk_mmc1", "mout_sclk_mmc1_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) ENABLE_SCLK_FSYS, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319) GATE(CLK_SCLK_MMC0, "sclk_mmc0", "mout_sclk_mmc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) ENABLE_SCLK_FSYS, 2, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321) GATE(CLK_SCLK_USBHOST30, "sclk_usbhost30", "mout_sclk_usbhost30_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) ENABLE_SCLK_FSYS, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) GATE(CLK_SCLK_USBDRD30, "sclk_usbdrd30", "mout_sclk_usbdrd30_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) ENABLE_SCLK_FSYS, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) /* ENABLE_IP_FSYS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) GATE(CLK_PCIE, "pcie", "sclk_pcie_100", ENABLE_IP_FSYS0, 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) GATE(CLK_PDMA1, "pdma1", "aclk_pdma1", ENABLE_IP_FSYS0, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) GATE(CLK_PDMA0, "pdma0", "aclk_pdma0", ENABLE_IP_FSYS0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332) static const struct samsung_cmu_info fsys_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333) .mux_clks = fsys_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334) .nr_mux_clks = ARRAY_SIZE(fsys_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) .gate_clks = fsys_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) .nr_gate_clks = ARRAY_SIZE(fsys_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) .fixed_clks = fsys_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) .nr_fixed_clks = ARRAY_SIZE(fsys_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) .nr_clk_ids = FSYS_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) .clk_regs = fsys_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) .nr_clk_regs = ARRAY_SIZE(fsys_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) .suspend_regs = fsys_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) .nr_suspend_regs = ARRAY_SIZE(fsys_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) .clk_name = "aclk_fsys_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) * Register offset definitions for CMU_G2D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350) #define MUX_SEL_G2D0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) #define MUX_SEL_ENABLE_G2D0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) #define MUX_SEL_STAT_G2D0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) #define DIV_G2D 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) #define DIV_STAT_G2D 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) #define DIV_ENABLE_ACLK_G2D 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) #define DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) #define DIV_ENABLE_PCLK_G2D 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) #define DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359) #define DIV_ENABLE_IP_G2D0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) #define DIV_ENABLE_IP_G2D1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) #define DIV_ENABLE_IP_G2D_SECURE_SMMU_G2D 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) static const unsigned long g2d_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364) MUX_SEL_G2D0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) MUX_SEL_ENABLE_G2D0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366) DIV_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) DIV_ENABLE_ACLK_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) DIV_ENABLE_PCLK_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) DIV_ENABLE_IP_G2D0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) DIV_ENABLE_IP_G2D1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373) DIV_ENABLE_IP_G2D_SECURE_SMMU_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) static const struct samsung_clk_reg_dump g2d_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) { MUX_SEL_G2D0, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381) PNAME(mout_aclk_g2d_266_user_p) = { "oscclk", "aclk_g2d_266", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) PNAME(mout_aclk_g2d_400_user_p) = { "oscclk", "aclk_g2d_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) static const struct samsung_mux_clock g2d_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385) /* MUX_SEL_G2D0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) MUX(CLK_MUX_ACLK_G2D_266_USER, "mout_aclk_g2d_266_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) mout_aclk_g2d_266_user_p, MUX_SEL_G2D0, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) MUX(CLK_MUX_ACLK_G2D_400_USER, "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) mout_aclk_g2d_400_user_p, MUX_SEL_G2D0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392) static const struct samsung_div_clock g2d_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) /* DIV_G2D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394) DIV(CLK_DIV_PCLK_G2D, "div_pclk_g2d", "mout_aclk_g2d_266_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) DIV_G2D, 0, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) static const struct samsung_gate_clock g2d_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399) /* DIV_ENABLE_ACLK_G2D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) GATE(CLK_ACLK_SMMU_MDMA1, "aclk_smmu_mdma1", "mout_aclk_g2d_266_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) DIV_ENABLE_ACLK_G2D, 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) GATE(CLK_ACLK_BTS_MDMA1, "aclk_bts_mdam1", "mout_aclk_g2d_266_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403) DIV_ENABLE_ACLK_G2D, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) GATE(CLK_ACLK_BTS_G2D, "aclk_bts_g2d", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) DIV_ENABLE_ACLK_G2D, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) GATE(CLK_ACLK_ALB_G2D, "aclk_alb_g2d", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) DIV_ENABLE_ACLK_G2D, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) GATE(CLK_ACLK_AXIUS_G2DX, "aclk_axius_g2dx", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) DIV_ENABLE_ACLK_G2D, 8, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) GATE(CLK_ACLK_ASYNCAXI_SYSX, "aclk_asyncaxi_sysx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411) "mout_aclk_g2d_400_user", DIV_ENABLE_ACLK_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413) GATE(CLK_ACLK_AHB2APB_G2D1P, "aclk_ahb2apb_g2d1p", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) DIV_ENABLE_ACLK_G2D, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) GATE(CLK_ACLK_AHB2APB_G2D0P, "aclk_ahb2apb_g2d0p", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416) DIV_ENABLE_ACLK_G2D, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) GATE(CLK_ACLK_XIU_G2DX, "aclk_xiu_g2dx", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) DIV_ENABLE_ACLK_G2D, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419) GATE(CLK_ACLK_G2DNP_133, "aclk_g2dnp_133", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) DIV_ENABLE_ACLK_G2D, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) GATE(CLK_ACLK_G2DND_400, "aclk_g2dnd_400", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) DIV_ENABLE_ACLK_G2D, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) GATE(CLK_ACLK_MDMA1, "aclk_mdma1", "mout_aclk_g2d_266_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) DIV_ENABLE_ACLK_G2D, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) GATE(CLK_ACLK_G2D, "aclk_g2d", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) DIV_ENABLE_ACLK_G2D, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) /* DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429) GATE(CLK_ACLK_SMMU_G2D, "aclk_smmu_g2d", "mout_aclk_g2d_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) /* DIV_ENABLE_PCLK_G2D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2433) GATE(CLK_PCLK_SMMU_MDMA1, "pclk_smmu_mdma1", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2434) DIV_ENABLE_PCLK_G2D, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2435) GATE(CLK_PCLK_BTS_MDMA1, "pclk_bts_mdam1", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2436) DIV_ENABLE_PCLK_G2D, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2437) GATE(CLK_PCLK_BTS_G2D, "pclk_bts_g2d", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2438) DIV_ENABLE_PCLK_G2D, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2439) GATE(CLK_PCLK_ALB_G2D, "pclk_alb_g2d", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2440) DIV_ENABLE_PCLK_G2D, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2441) GATE(CLK_PCLK_ASYNCAXI_SYSX, "pclk_asyncaxi_sysx", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2442) DIV_ENABLE_PCLK_G2D, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2443) GATE(CLK_PCLK_PMU_G2D, "pclk_pmu_g2d", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2444) DIV_ENABLE_PCLK_G2D, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2445) GATE(CLK_PCLK_SYSREG_G2D, "pclk_sysreg_g2d", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2446) DIV_ENABLE_PCLK_G2D, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2447) GATE(CLK_PCLK_G2D, "pclk_g2d", "div_pclk_g2d", DIV_ENABLE_PCLK_G2D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2448) 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2450) /* DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2451) GATE(CLK_PCLK_SMMU_G2D, "pclk_smmu_g2d", "div_pclk_g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2452) DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2453) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2455) static const struct samsung_cmu_info g2d_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2456) .mux_clks = g2d_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2457) .nr_mux_clks = ARRAY_SIZE(g2d_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2458) .div_clks = g2d_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2459) .nr_div_clks = ARRAY_SIZE(g2d_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2460) .gate_clks = g2d_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2461) .nr_gate_clks = ARRAY_SIZE(g2d_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2462) .nr_clk_ids = G2D_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2463) .clk_regs = g2d_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2464) .nr_clk_regs = ARRAY_SIZE(g2d_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2465) .suspend_regs = g2d_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2466) .nr_suspend_regs = ARRAY_SIZE(g2d_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2467) .clk_name = "aclk_g2d_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2468) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2470) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2471) * Register offset definitions for CMU_DISP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2472) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2473) #define DISP_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2474) #define DISP_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2475) #define DISP_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2476) #define DISP_PLL_FREQ_DET 0x0108
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2477) #define MUX_SEL_DISP0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2478) #define MUX_SEL_DISP1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2479) #define MUX_SEL_DISP2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2480) #define MUX_SEL_DISP3 0x020c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2481) #define MUX_SEL_DISP4 0x0210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2482) #define MUX_ENABLE_DISP0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2483) #define MUX_ENABLE_DISP1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2484) #define MUX_ENABLE_DISP2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2485) #define MUX_ENABLE_DISP3 0x030c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2486) #define MUX_ENABLE_DISP4 0x0310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2487) #define MUX_STAT_DISP0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2488) #define MUX_STAT_DISP1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2489) #define MUX_STAT_DISP2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2490) #define MUX_STAT_DISP3 0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2491) #define MUX_STAT_DISP4 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2492) #define MUX_IGNORE_DISP2 0x0508
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2493) #define DIV_DISP 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2494) #define DIV_DISP_PLL_FREQ_DET 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2495) #define DIV_STAT_DISP 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2496) #define DIV_STAT_DISP_PLL_FREQ_DET 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2497) #define ENABLE_ACLK_DISP0 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2498) #define ENABLE_ACLK_DISP1 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2499) #define ENABLE_PCLK_DISP 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2500) #define ENABLE_SCLK_DISP 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2501) #define ENABLE_IP_DISP0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2502) #define ENABLE_IP_DISP1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2503) #define CLKOUT_CMU_DISP 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2504) #define CLKOUT_CMU_DISP_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2506) static const unsigned long disp_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2507) DISP_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2508) DISP_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2509) DISP_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2510) DISP_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2511) MUX_SEL_DISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2512) MUX_SEL_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2513) MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2514) MUX_SEL_DISP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2515) MUX_SEL_DISP4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2516) MUX_ENABLE_DISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2517) MUX_ENABLE_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2518) MUX_ENABLE_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2519) MUX_ENABLE_DISP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2520) MUX_ENABLE_DISP4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2521) MUX_IGNORE_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2522) DIV_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2523) DIV_DISP_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2524) ENABLE_ACLK_DISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2525) ENABLE_ACLK_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2526) ENABLE_PCLK_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2527) ENABLE_SCLK_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2528) ENABLE_IP_DISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2529) ENABLE_IP_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2530) CLKOUT_CMU_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2531) CLKOUT_CMU_DISP_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2532) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2534) static const struct samsung_clk_reg_dump disp_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2535) /* PLL has to be enabled for suspend */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2536) { DISP_PLL_CON0, 0x85f40502 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2537) /* ignore status of external PHY muxes during suspend to avoid hangs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2538) { MUX_IGNORE_DISP2, 0x00111111 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2539) { MUX_SEL_DISP0, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2540) { MUX_SEL_DISP1, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2541) { MUX_SEL_DISP2, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2542) { MUX_SEL_DISP3, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2543) { MUX_SEL_DISP4, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2544) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2545)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2546) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2547) PNAME(mout_disp_pll_p) = { "oscclk", "fout_disp_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2548) PNAME(mout_sclk_dsim1_user_p) = { "oscclk", "sclk_dsim1_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2549) PNAME(mout_sclk_dsim0_user_p) = { "oscclk", "sclk_dsim0_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2550) PNAME(mout_sclk_dsd_user_p) = { "oscclk", "sclk_dsd_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2551) PNAME(mout_sclk_decon_tv_eclk_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2552) "sclk_decon_tv_eclk_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2553) PNAME(mout_sclk_decon_vclk_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2554) "sclk_decon_vclk_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2555) PNAME(mout_sclk_decon_eclk_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2556) "sclk_decon_eclk_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2557) PNAME(mout_sclk_decon_tv_vlkc_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2558) "sclk_decon_tv_vclk_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2559) PNAME(mout_aclk_disp_333_user_p) = { "oscclk", "aclk_disp_333", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2561) PNAME(mout_phyclk_mipidphy1_bitclkdiv8_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2562) "phyclk_mipidphy1_bitclkdiv8_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2563) PNAME(mout_phyclk_mipidphy1_rxclkesc0_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2564) "phyclk_mipidphy1_rxclkesc0_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2565) PNAME(mout_phyclk_mipidphy0_bitclkdiv8_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2566) "phyclk_mipidphy0_bitclkdiv8_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2567) PNAME(mout_phyclk_mipidphy0_rxclkesc0_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2568) "phyclk_mipidphy0_rxclkesc0_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2569) PNAME(mout_phyclk_hdmiphy_tmds_clko_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2570) "phyclk_hdmiphy_tmds_clko_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2571) PNAME(mout_phyclk_hdmiphy_pixel_clko_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2572) "phyclk_hdmiphy_pixel_clko_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2573)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2574) PNAME(mout_sclk_dsim0_p) = { "mout_disp_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2575) "mout_sclk_dsim0_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2576) PNAME(mout_sclk_decon_tv_eclk_p) = { "mout_disp_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2577) "mout_sclk_decon_tv_eclk_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2578) PNAME(mout_sclk_decon_vclk_p) = { "mout_disp_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2579) "mout_sclk_decon_vclk_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2580) PNAME(mout_sclk_decon_eclk_p) = { "mout_disp_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2581) "mout_sclk_decon_eclk_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2583) PNAME(mout_sclk_dsim1_b_disp_p) = { "mout_sclk_dsim1_a_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2584) "mout_sclk_dsim1_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2585) PNAME(mout_sclk_decon_tv_vclk_c_disp_p) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2586) "mout_phyclk_hdmiphy_pixel_clko_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2587) "mout_sclk_decon_tv_vclk_b_disp", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2588) PNAME(mout_sclk_decon_tv_vclk_b_disp_p) = { "mout_sclk_decon_tv_vclk_a_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2589) "mout_sclk_decon_tv_vclk_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2590)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2591) static const struct samsung_pll_clock disp_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2592) PLL(pll_35xx, CLK_FOUT_DISP_PLL, "fout_disp_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2593) DISP_PLL_LOCK, DISP_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2594) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2596) static const struct samsung_fixed_factor_clock disp_fixed_factor_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2597) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2598) * sclk_rgb_{vclk|tv_vclk} is half clock of sclk_decon_{vclk|tv_vclk}.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2599) * The divider has fixed value (2) between sclk_rgb_{vclk|tv_vclk}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2600) * and sclk_decon_{vclk|tv_vclk}.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2601) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2602) FFACTOR(CLK_SCLK_RGB_VCLK, "sclk_rgb_vclk", "sclk_decon_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2603) 1, 2, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2604) FFACTOR(CLK_SCLK_RGB_TV_VCLK, "sclk_rgb_tv_vclk", "sclk_decon_tv_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2605) 1, 2, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2606) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2607)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2608) static const struct samsung_fixed_rate_clock disp_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2609) /* PHY clocks from MIPI_DPHY1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2610) FRATE(0, "phyclk_mipidphy1_bitclkdiv8_phy", NULL, 0, 188000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2611) FRATE(0, "phyclk_mipidphy1_rxclkesc0_phy", NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2612) /* PHY clocks from MIPI_DPHY0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2613) FRATE(CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8_PHY, "phyclk_mipidphy0_bitclkdiv8_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2614) NULL, 0, 188000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2615) FRATE(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY, "phyclk_mipidphy0_rxclkesc0_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2616) NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2617) /* PHY clocks from HDMI_PHY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2618) FRATE(CLK_PHYCLK_HDMIPHY_TMDS_CLKO_PHY, "phyclk_hdmiphy_tmds_clko_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2619) NULL, 0, 300000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2620) FRATE(CLK_PHYCLK_HDMIPHY_PIXEL_CLKO_PHY, "phyclk_hdmiphy_pixel_clko_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2621) NULL, 0, 166000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2622) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2623)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2624) static const struct samsung_mux_clock disp_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2625) /* MUX_SEL_DISP0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2626) MUX(CLK_MOUT_DISP_PLL, "mout_disp_pll", mout_disp_pll_p, MUX_SEL_DISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2627) 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2628)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2629) /* MUX_SEL_DISP1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2630) MUX(CLK_MOUT_SCLK_DSIM1_USER, "mout_sclk_dsim1_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2631) mout_sclk_dsim1_user_p, MUX_SEL_DISP1, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2632) MUX(CLK_MOUT_SCLK_DSIM0_USER, "mout_sclk_dsim0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2633) mout_sclk_dsim0_user_p, MUX_SEL_DISP1, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2634) MUX(CLK_MOUT_SCLK_DSD_USER, "mout_sclk_dsd_user", mout_sclk_dsd_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2635) MUX_SEL_DISP1, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2636) MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_USER, "mout_sclk_decon_tv_eclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2637) mout_sclk_decon_tv_eclk_user_p, MUX_SEL_DISP1, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2638) MUX(CLK_MOUT_SCLK_DECON_VCLK_USER, "mout_sclk_decon_vclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2639) mout_sclk_decon_vclk_user_p, MUX_SEL_DISP1, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2640) MUX(CLK_MOUT_SCLK_DECON_ECLK_USER, "mout_sclk_decon_eclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2641) mout_sclk_decon_eclk_user_p, MUX_SEL_DISP1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2642) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_USER, "mout_sclk_decon_tv_vclk_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2643) mout_sclk_decon_tv_vlkc_user_p, MUX_SEL_DISP1, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2644) MUX(CLK_MOUT_ACLK_DISP_333_USER, "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2645) mout_aclk_disp_333_user_p, MUX_SEL_DISP1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2646)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2647) /* MUX_SEL_DISP2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2648) MUX(CLK_MOUT_PHYCLK_MIPIDPHY1_BITCLKDIV8_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2649) "mout_phyclk_mipidphy1_bitclkdiv8_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2650) mout_phyclk_mipidphy1_bitclkdiv8_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2651) 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2652) MUX(CLK_MOUT_PHYCLK_MIPIDPHY1_RXCLKESC0_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2653) "mout_phyclk_mipidphy1_rxclkesc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2654) mout_phyclk_mipidphy1_rxclkesc0_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2655) 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2656) MUX(CLK_MOUT_PHYCLK_MIPIDPHY0_BITCLKDIV8_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2657) "mout_phyclk_mipidphy0_bitclkdiv8_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2658) mout_phyclk_mipidphy0_bitclkdiv8_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2659) 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2660) MUX(CLK_MOUT_PHYCLK_MIPIDPHY0_RXCLKESC0_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2661) "mout_phyclk_mipidphy0_rxclkesc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2662) mout_phyclk_mipidphy0_rxclkesc0_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2663) 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2664) MUX(CLK_MOUT_PHYCLK_HDMIPHY_TMDS_CLKO_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2665) "mout_phyclk_hdmiphy_tmds_clko_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2666) mout_phyclk_hdmiphy_tmds_clko_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2667) 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2668) MUX(CLK_MOUT_PHYCLK_HDMIPHY_PIXEL_CLKO_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2669) "mout_phyclk_hdmiphy_pixel_clko_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2670) mout_phyclk_hdmiphy_pixel_clko_user_p, MUX_SEL_DISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2671) 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2672)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2673) /* MUX_SEL_DISP3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2674) MUX(CLK_MOUT_SCLK_DSIM0, "mout_sclk_dsim0", mout_sclk_dsim0_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2675) MUX_SEL_DISP3, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2676) MUX(CLK_MOUT_SCLK_DECON_TV_ECLK, "mout_sclk_decon_tv_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2677) mout_sclk_decon_tv_eclk_p, MUX_SEL_DISP3, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2678) MUX(CLK_MOUT_SCLK_DECON_VCLK, "mout_sclk_decon_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2679) mout_sclk_decon_vclk_p, MUX_SEL_DISP3, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2680) MUX(CLK_MOUT_SCLK_DECON_ECLK, "mout_sclk_decon_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2681) mout_sclk_decon_eclk_p, MUX_SEL_DISP3, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2682)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2683) /* MUX_SEL_DISP4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2684) MUX(CLK_MOUT_SCLK_DSIM1_B_DISP, "mout_sclk_dsim1_b_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2685) mout_sclk_dsim1_b_disp_p, MUX_SEL_DISP4, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2686) MUX(CLK_MOUT_SCLK_DSIM1_A_DISP, "mout_sclk_dsim1_a_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2687) mout_sclk_dsim0_p, MUX_SEL_DISP4, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2688) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_C_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2689) "mout_sclk_decon_tv_vclk_c_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2690) mout_sclk_decon_tv_vclk_c_disp_p, MUX_SEL_DISP4, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2691) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_B_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2692) "mout_sclk_decon_tv_vclk_b_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2693) mout_sclk_decon_tv_vclk_b_disp_p, MUX_SEL_DISP4, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2694) MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_A_DISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2695) "mout_sclk_decon_tv_vclk_a_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2696) mout_sclk_decon_vclk_p, MUX_SEL_DISP4, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2697) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2698)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2699) static const struct samsung_div_clock disp_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2700) /* DIV_DISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2701) DIV(CLK_DIV_SCLK_DSIM1_DISP, "div_sclk_dsim1_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2702) "mout_sclk_dsim1_b_disp", DIV_DISP, 24, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2703) DIV(CLK_DIV_SCLK_DECON_TV_VCLK_DISP, "div_sclk_decon_tv_vclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2704) "mout_sclk_decon_tv_vclk_c_disp", DIV_DISP, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2705) DIV(CLK_DIV_SCLK_DSIM0_DISP, "div_sclk_dsim0_disp", "mout_sclk_dsim0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2706) DIV_DISP, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2707) DIV(CLK_DIV_SCLK_DECON_TV_ECLK_DISP, "div_sclk_decon_tv_eclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2708) "mout_sclk_decon_tv_eclk", DIV_DISP, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2709) DIV(CLK_DIV_SCLK_DECON_VCLK_DISP, "div_sclk_decon_vclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2710) "mout_sclk_decon_vclk", DIV_DISP, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2711) DIV(CLK_DIV_SCLK_DECON_ECLK_DISP, "div_sclk_decon_eclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2712) "mout_sclk_decon_eclk", DIV_DISP, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2713) DIV(CLK_DIV_PCLK_DISP, "div_pclk_disp", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2714) DIV_DISP, 0, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2715) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2716)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2717) static const struct samsung_gate_clock disp_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2718) /* ENABLE_ACLK_DISP0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2719) GATE(CLK_ACLK_DECON_TV, "aclk_decon_tv", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2720) ENABLE_ACLK_DISP0, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2721) GATE(CLK_ACLK_DECON, "aclk_decon", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2722) ENABLE_ACLK_DISP0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2724) /* ENABLE_ACLK_DISP1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2725) GATE(CLK_ACLK_SMMU_TV1X, "aclk_smmu_tv1x", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2726) ENABLE_ACLK_DISP1, 25, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2727) GATE(CLK_ACLK_SMMU_TV0X, "aclk_smmu_tv0x", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2728) ENABLE_ACLK_DISP1, 24, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2729) GATE(CLK_ACLK_SMMU_DECON1X, "aclk_smmu_decon1x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2730) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 23, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2731) GATE(CLK_ACLK_SMMU_DECON0X, "aclk_smmu_decon0x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2732) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 22, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2733) GATE(CLK_ACLK_BTS_DECON_TV_M3, "aclk_bts_decon_tv_m3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2734) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 21, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2735) GATE(CLK_ACLK_BTS_DECON_TV_M2, "aclk_bts_decon_tv_m2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2736) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 20, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2737) GATE(CLK_ACLK_BTS_DECON_TV_M1, "aclk_bts_decon_tv_m1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2738) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 19, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2739) GATE(CLK_ACLK_BTS_DECON_TV_M0, "aclk-bts_decon_tv_m0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2740) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 18, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2741) GATE(CLK_ACLK_BTS_DECON_NM4, "aclk_bts_decon_nm4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2742) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2743) GATE(CLK_ACLK_BTS_DECON_NM3, "aclk_bts_decon_nm3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2744) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2745) GATE(CLK_ACLK_BTS_DECON_NM2, "aclk_bts_decon_nm2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2746) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2747) GATE(CLK_ACLK_BTS_DECON_NM1, "aclk_bts_decon_nm1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2748) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2749) GATE(CLK_ACLK_BTS_DECON_NM0, "aclk_bts_decon_nm0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2750) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2751) GATE(CLK_ACLK_AHB2APB_DISPSFR2P, "aclk_ahb2apb_dispsfr2p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2752) "div_pclk_disp", ENABLE_ACLK_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2753) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2754) GATE(CLK_ACLK_AHB2APB_DISPSFR1P, "aclk_ahb2apb_dispsfr1p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2755) "div_pclk_disp", ENABLE_ACLK_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2756) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2757) GATE(CLK_ACLK_AHB2APB_DISPSFR0P, "aclk_ahb2apb_dispsfr0p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2758) "div_pclk_disp", ENABLE_ACLK_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2759) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2760) GATE(CLK_ACLK_AHB_DISPH, "aclk_ahb_disph", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2761) ENABLE_ACLK_DISP1, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2762) GATE(CLK_ACLK_XIU_TV1X, "aclk_xiu_tv1x", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2763) ENABLE_ACLK_DISP1, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2764) GATE(CLK_ACLK_XIU_TV0X, "aclk_xiu_tv0x", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2765) ENABLE_ACLK_DISP1, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2766) GATE(CLK_ACLK_XIU_DECON1X, "aclk_xiu_decon1x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2767) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2768) GATE(CLK_ACLK_XIU_DECON0X, "aclk_xiu_decon0x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2769) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2770) GATE(CLK_ACLK_XIU_DISP1X, "aclk_xiu_disp1x", "mout_aclk_disp_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2771) ENABLE_ACLK_DISP1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2772) GATE(CLK_ACLK_XIU_DISPNP_100, "aclk_xiu_dispnp_100", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2773) ENABLE_ACLK_DISP1, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2774) GATE(CLK_ACLK_DISP1ND_333, "aclk_disp1nd_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2775) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2776) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2777) GATE(CLK_ACLK_DISP0ND_333, "aclk_disp0nd_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2778) "mout_aclk_disp_333_user", ENABLE_ACLK_DISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2779) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2780)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2781) /* ENABLE_PCLK_DISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2782) GATE(CLK_PCLK_SMMU_TV1X, "pclk_smmu_tv1x", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2783) ENABLE_PCLK_DISP, 23, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2784) GATE(CLK_PCLK_SMMU_TV0X, "pclk_smmu_tv0x", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2785) ENABLE_PCLK_DISP, 22, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2786) GATE(CLK_PCLK_SMMU_DECON1X, "pclk_smmu_decon1x", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2787) ENABLE_PCLK_DISP, 21, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2788) GATE(CLK_PCLK_SMMU_DECON0X, "pclk_smmu_decon0x", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2789) ENABLE_PCLK_DISP, 20, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2790) GATE(CLK_PCLK_BTS_DECON_TV_M3, "pclk_bts_decon_tv_m3", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2791) ENABLE_PCLK_DISP, 19, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2792) GATE(CLK_PCLK_BTS_DECON_TV_M2, "pclk_bts_decon_tv_m2", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2793) ENABLE_PCLK_DISP, 18, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2794) GATE(CLK_PCLK_BTS_DECON_TV_M1, "pclk_bts_decon_tv_m1", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2795) ENABLE_PCLK_DISP, 17, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2796) GATE(CLK_PCLK_BTS_DECON_TV_M0, "pclk_bts_decon_tv_m0", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2797) ENABLE_PCLK_DISP, 16, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2798) GATE(CLK_PCLK_BTS_DECONM4, "pclk_bts_deconm4", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2799) ENABLE_PCLK_DISP, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2800) GATE(CLK_PCLK_BTS_DECONM3, "pclk_bts_deconm3", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2801) ENABLE_PCLK_DISP, 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2802) GATE(CLK_PCLK_BTS_DECONM2, "pclk_bts_deconm2", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2803) ENABLE_PCLK_DISP, 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2804) GATE(CLK_PCLK_BTS_DECONM1, "pclk_bts_deconm1", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2805) ENABLE_PCLK_DISP, 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2806) GATE(CLK_PCLK_BTS_DECONM0, "pclk_bts_deconm0", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2807) ENABLE_PCLK_DISP, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2808) GATE(CLK_PCLK_MIC1, "pclk_mic1", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2809) ENABLE_PCLK_DISP, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2810) GATE(CLK_PCLK_PMU_DISP, "pclk_pmu_disp", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2811) ENABLE_PCLK_DISP, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2812) GATE(CLK_PCLK_SYSREG_DISP, "pclk_sysreg_disp", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2813) ENABLE_PCLK_DISP, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2814) GATE(CLK_PCLK_HDMIPHY, "pclk_hdmiphy", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2815) ENABLE_PCLK_DISP, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2816) GATE(CLK_PCLK_HDMI, "pclk_hdmi", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2817) ENABLE_PCLK_DISP, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2818) GATE(CLK_PCLK_MIC0, "pclk_mic0", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2819) ENABLE_PCLK_DISP, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2820) GATE(CLK_PCLK_DSIM1, "pclk_dsim1", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2821) ENABLE_PCLK_DISP, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2822) GATE(CLK_PCLK_DSIM0, "pclk_dsim0", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2823) ENABLE_PCLK_DISP, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2824) GATE(CLK_PCLK_DECON_TV, "pclk_decon_tv", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2825) ENABLE_PCLK_DISP, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2826) GATE(CLK_PCLK_DECON, "pclk_decon", "div_pclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2827) ENABLE_PCLK_DISP, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2828)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2829) /* ENABLE_SCLK_DISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2830) GATE(CLK_PHYCLK_MIPIDPHY1_BITCLKDIV8, "phyclk_mipidphy1_bitclkdiv8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2831) "mout_phyclk_mipidphy1_bitclkdiv8_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2832) ENABLE_SCLK_DISP, 26, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2833) GATE(CLK_PHYCLK_MIPIDPHY1_RXCLKESC0, "phyclk_mipidphy1_rxclkesc0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2834) "mout_phyclk_mipidphy1_rxclkesc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2835) ENABLE_SCLK_DISP, 25, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2836) GATE(CLK_SCLK_RGB_TV_VCLK_TO_DSIM1, "sclk_rgb_tv_vclk_to_dsim1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2837) "sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 24, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2838) GATE(CLK_SCLK_RGB_TV_VCLK_TO_MIC1, "sclk_rgb_tv_vclk_to_mic1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2839) "sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 23, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2840) GATE(CLK_SCLK_DSIM1, "sclk_dsim1", "div_sclk_dsim1_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2841) ENABLE_SCLK_DISP, 22, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2842) GATE(CLK_SCLK_DECON_TV_VCLK, "sclk_decon_tv_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2843) "div_sclk_decon_tv_vclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2844) ENABLE_SCLK_DISP, 21, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2845) GATE(CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8, "phyclk_mipidphy0_bitclkdiv8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2846) "mout_phyclk_mipidphy0_bitclkdiv8_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2847) ENABLE_SCLK_DISP, 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2848) GATE(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0, "phyclk_mipidphy0_rxclkesc0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2849) "mout_phyclk_mipidphy0_rxclkesc0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2850) ENABLE_SCLK_DISP, 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2851) GATE(CLK_PHYCLK_HDMIPHY_TMDS_CLKO, "phyclk_hdmiphy_tmds_clko",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2852) "mout_phyclk_hdmiphy_tmds_clko_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2853) ENABLE_SCLK_DISP, 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2854) GATE(CLK_PHYCLK_HDMI_PIXEL, "phyclk_hdmi_pixel",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2855) "sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2856) GATE(CLK_SCLK_RGB_VCLK_TO_SMIES, "sclk_rgb_vclk_to_smies",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2857) "sclk_rgb_vclk", ENABLE_SCLK_DISP, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2858) GATE(CLK_SCLK_RGB_VCLK_TO_DSIM0, "sclk_rgb_vclk_to_dsim0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2859) "sclk_rgb_vclk", ENABLE_SCLK_DISP, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2860) GATE(CLK_SCLK_RGB_VCLK_TO_MIC0, "sclk_rgb_vclk_to_mic0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2861) "sclk_rgb_vclk", ENABLE_SCLK_DISP, 8, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2862) GATE(CLK_SCLK_DSD, "sclk_dsd", "mout_sclk_dsd_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2863) ENABLE_SCLK_DISP, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2864) GATE(CLK_SCLK_HDMI_SPDIF, "sclk_hdmi_spdif", "sclk_hdmi_spdif_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2865) ENABLE_SCLK_DISP, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2866) GATE(CLK_SCLK_DSIM0, "sclk_dsim0", "div_sclk_dsim0_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2867) ENABLE_SCLK_DISP, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2868) GATE(CLK_SCLK_DECON_TV_ECLK, "sclk_decon_tv_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2869) "div_sclk_decon_tv_eclk_disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2870) ENABLE_SCLK_DISP, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2871) GATE(CLK_SCLK_DECON_VCLK, "sclk_decon_vclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2872) "div_sclk_decon_vclk_disp", ENABLE_SCLK_DISP, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2873) GATE(CLK_SCLK_DECON_ECLK, "sclk_decon_eclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2874) "div_sclk_decon_eclk_disp", ENABLE_SCLK_DISP, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2875) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2876)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2877) static const struct samsung_cmu_info disp_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2878) .pll_clks = disp_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2879) .nr_pll_clks = ARRAY_SIZE(disp_pll_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2880) .mux_clks = disp_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2881) .nr_mux_clks = ARRAY_SIZE(disp_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2882) .div_clks = disp_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2883) .nr_div_clks = ARRAY_SIZE(disp_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2884) .gate_clks = disp_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2885) .nr_gate_clks = ARRAY_SIZE(disp_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2886) .fixed_clks = disp_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2887) .nr_fixed_clks = ARRAY_SIZE(disp_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2888) .fixed_factor_clks = disp_fixed_factor_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2889) .nr_fixed_factor_clks = ARRAY_SIZE(disp_fixed_factor_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2890) .nr_clk_ids = DISP_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2891) .clk_regs = disp_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2892) .nr_clk_regs = ARRAY_SIZE(disp_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2893) .suspend_regs = disp_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2894) .nr_suspend_regs = ARRAY_SIZE(disp_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2895) .clk_name = "aclk_disp_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2896) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2897)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2898) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2899) * Register offset definitions for CMU_AUD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2900) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2901) #define MUX_SEL_AUD0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2902) #define MUX_SEL_AUD1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2903) #define MUX_ENABLE_AUD0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2904) #define MUX_ENABLE_AUD1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2905) #define MUX_STAT_AUD0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2906) #define DIV_AUD0 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2907) #define DIV_AUD1 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2908) #define DIV_STAT_AUD0 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2909) #define DIV_STAT_AUD1 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2910) #define ENABLE_ACLK_AUD 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2911) #define ENABLE_PCLK_AUD 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2912) #define ENABLE_SCLK_AUD0 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2913) #define ENABLE_SCLK_AUD1 0x0a04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2914) #define ENABLE_IP_AUD0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2915) #define ENABLE_IP_AUD1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2916)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2917) static const unsigned long aud_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2918) MUX_SEL_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2919) MUX_SEL_AUD1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2920) MUX_ENABLE_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2921) MUX_ENABLE_AUD1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2922) DIV_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2923) DIV_AUD1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2924) ENABLE_ACLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2925) ENABLE_PCLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2926) ENABLE_SCLK_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2927) ENABLE_SCLK_AUD1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2928) ENABLE_IP_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2929) ENABLE_IP_AUD1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2930) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2931)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2932) static const struct samsung_clk_reg_dump aud_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2933) { MUX_SEL_AUD0, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2934) { MUX_SEL_AUD1, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2935) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2936)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2937) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2938) PNAME(mout_aud_pll_user_aud_p) = { "oscclk", "fout_aud_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2939) PNAME(mout_sclk_aud_pcm_p) = { "mout_aud_pll_user", "ioclk_audiocdclk0",};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2941) static const struct samsung_fixed_rate_clock aud_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2942) FRATE(0, "ioclk_jtag_tclk", NULL, 0, 33000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2943) FRATE(0, "ioclk_slimbus_clk", NULL, 0, 25000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2944) FRATE(0, "ioclk_i2s_bclk", NULL, 0, 50000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2945) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2946)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2947) static const struct samsung_mux_clock aud_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2948) /* MUX_SEL_AUD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2949) MUX(CLK_MOUT_AUD_PLL_USER, "mout_aud_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2950) mout_aud_pll_user_aud_p, MUX_SEL_AUD0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2951)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2952) /* MUX_SEL_AUD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2953) MUX(CLK_MOUT_SCLK_AUD_PCM, "mout_sclk_aud_pcm", mout_sclk_aud_pcm_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2954) MUX_SEL_AUD1, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2955) MUX(CLK_MOUT_SCLK_AUD_I2S, "mout_sclk_aud_i2s", mout_sclk_aud_pcm_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2956) MUX_SEL_AUD1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2957) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2958)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2959) static const struct samsung_div_clock aud_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2960) /* DIV_AUD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2961) DIV(CLK_DIV_ATCLK_AUD, "div_atclk_aud", "div_aud_ca5", DIV_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2962) 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2963) DIV(CLK_DIV_PCLK_DBG_AUD, "div_pclk_dbg_aud", "div_aud_ca5", DIV_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2964) 8, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2965) DIV(CLK_DIV_ACLK_AUD, "div_aclk_aud", "div_aud_ca5", DIV_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2966) 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2967) DIV(CLK_DIV_AUD_CA5, "div_aud_ca5", "mout_aud_pll_user", DIV_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2968) 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2969)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2970) /* DIV_AUD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2971) DIV(CLK_DIV_SCLK_AUD_SLIMBUS, "div_sclk_aud_slimbus",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2972) "mout_aud_pll_user", DIV_AUD1, 16, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2973) DIV(CLK_DIV_SCLK_AUD_UART, "div_sclk_aud_uart", "mout_aud_pll_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2974) DIV_AUD1, 12, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2975) DIV(CLK_DIV_SCLK_AUD_PCM, "div_sclk_aud_pcm", "mout_sclk_aud_pcm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2976) DIV_AUD1, 4, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2977) DIV(CLK_DIV_SCLK_AUD_I2S, "div_sclk_aud_i2s", "mout_sclk_aud_i2s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2978) DIV_AUD1, 0, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2979) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2980)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2981) static const struct samsung_gate_clock aud_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2982) /* ENABLE_ACLK_AUD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2983) GATE(CLK_ACLK_INTR_CTRL, "aclk_intr_ctrl", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2984) ENABLE_ACLK_AUD, 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2985) GATE(CLK_ACLK_SMMU_LPASSX, "aclk_smmu_lpassx", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2986) ENABLE_ACLK_AUD, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2987) GATE(CLK_ACLK_XIU_LPASSX, "aclk_xiu_lpassx", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2988) ENABLE_ACLK_AUD, 0, 4, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2989) GATE(CLK_ACLK_AUDNP_133, "aclk_audnp_133", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2990) ENABLE_ACLK_AUD, 0, 3, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2991) GATE(CLK_ACLK_AUDND_133, "aclk_audnd_133", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2992) ENABLE_ACLK_AUD, 0, 2, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2993) GATE(CLK_ACLK_SRAMC, "aclk_sramc", "div_aclk_aud", ENABLE_ACLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2994) 0, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2995) GATE(CLK_ACLK_DMAC, "aclk_dmac", "div_aclk_aud", ENABLE_ACLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2996) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2997)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2998) /* ENABLE_PCLK_AUD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2999) GATE(CLK_PCLK_WDT1, "pclk_wdt1", "div_aclk_aud", ENABLE_PCLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3000) 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3001) GATE(CLK_PCLK_WDT0, "pclk_wdt0", "div_aclk_aud", ENABLE_PCLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3002) 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3003) GATE(CLK_PCLK_SFR1, "pclk_sfr1", "div_aclk_aud", ENABLE_PCLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3004) 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3005) GATE(CLK_PCLK_SMMU_LPASSX, "pclk_smmu_lpassx", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3006) ENABLE_PCLK_AUD, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3007) GATE(CLK_PCLK_GPIO_AUD, "pclk_gpio_aud", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3008) ENABLE_PCLK_AUD, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3009) GATE(CLK_PCLK_PMU_AUD, "pclk_pmu_aud", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3010) ENABLE_PCLK_AUD, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3011) GATE(CLK_PCLK_SYSREG_AUD, "pclk_sysreg_aud", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3012) ENABLE_PCLK_AUD, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3013) GATE(CLK_PCLK_AUD_SLIMBUS, "pclk_aud_slimbus", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3014) ENABLE_PCLK_AUD, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3015) GATE(CLK_PCLK_AUD_UART, "pclk_aud_uart", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3016) ENABLE_PCLK_AUD, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3017) GATE(CLK_PCLK_AUD_PCM, "pclk_aud_pcm", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3018) ENABLE_PCLK_AUD, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3019) GATE(CLK_PCLK_AUD_I2S, "pclk_aud_i2s", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3020) ENABLE_PCLK_AUD, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3021) GATE(CLK_PCLK_TIMER, "pclk_timer", "div_aclk_aud", ENABLE_PCLK_AUD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3022) 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3023) GATE(CLK_PCLK_SFR0_CTRL, "pclk_sfr0_ctrl", "div_aclk_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3024) ENABLE_PCLK_AUD, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3025)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3026) /* ENABLE_SCLK_AUD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3027) GATE(CLK_ATCLK_AUD, "atclk_aud", "div_atclk_aud", ENABLE_SCLK_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3028) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3029) GATE(CLK_PCLK_DBG_AUD, "pclk_dbg_aud", "div_pclk_dbg_aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3030) ENABLE_SCLK_AUD0, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3031) GATE(CLK_SCLK_AUD_CA5, "sclk_aud_ca5", "div_aud_ca5", ENABLE_SCLK_AUD0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3032) 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3033)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3034) /* ENABLE_SCLK_AUD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3035) GATE(CLK_SCLK_JTAG_TCK, "sclk_jtag_tck", "ioclk_jtag_tclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3036) ENABLE_SCLK_AUD1, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3037) GATE(CLK_SCLK_SLIMBUS_CLKIN, "sclk_slimbus_clkin", "ioclk_slimbus_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3038) ENABLE_SCLK_AUD1, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3039) GATE(CLK_SCLK_AUD_SLIMBUS, "sclk_aud_slimbus", "div_sclk_aud_slimbus",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3040) ENABLE_SCLK_AUD1, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3041) GATE(CLK_SCLK_AUD_UART, "sclk_aud_uart", "div_sclk_aud_uart",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3042) ENABLE_SCLK_AUD1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3043) GATE(CLK_SCLK_AUD_PCM, "sclk_aud_pcm", "div_sclk_aud_pcm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3044) ENABLE_SCLK_AUD1, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3045) GATE(CLK_SCLK_I2S_BCLK, "sclk_i2s_bclk", "ioclk_i2s_bclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3046) ENABLE_SCLK_AUD1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3047) GATE(CLK_SCLK_AUD_I2S, "sclk_aud_i2s", "div_sclk_aud_i2s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3048) ENABLE_SCLK_AUD1, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3049) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3050)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3051) static const struct samsung_cmu_info aud_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3052) .mux_clks = aud_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3053) .nr_mux_clks = ARRAY_SIZE(aud_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3054) .div_clks = aud_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3055) .nr_div_clks = ARRAY_SIZE(aud_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3056) .gate_clks = aud_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3057) .nr_gate_clks = ARRAY_SIZE(aud_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3058) .fixed_clks = aud_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3059) .nr_fixed_clks = ARRAY_SIZE(aud_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3060) .nr_clk_ids = AUD_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3061) .clk_regs = aud_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3062) .nr_clk_regs = ARRAY_SIZE(aud_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3063) .suspend_regs = aud_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3064) .nr_suspend_regs = ARRAY_SIZE(aud_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3065) .clk_name = "fout_aud_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3066) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3068) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3069) * Register offset definitions for CMU_BUS{0|1|2}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3070) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3071) #define DIV_BUS 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3072) #define DIV_STAT_BUS 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3073) #define ENABLE_ACLK_BUS 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3074) #define ENABLE_PCLK_BUS 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3075) #define ENABLE_IP_BUS0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3076) #define ENABLE_IP_BUS1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3077)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3078) #define MUX_SEL_BUS2 0x0200 /* Only for CMU_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3079) #define MUX_ENABLE_BUS2 0x0300 /* Only for CMU_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3080) #define MUX_STAT_BUS2 0x0400 /* Only for CMU_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3081)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3082) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3083) PNAME(mout_aclk_bus2_400_p) = { "oscclk", "aclk_bus2_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3085) #define CMU_BUS_COMMON_CLK_REGS \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3086) DIV_BUS, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3087) ENABLE_ACLK_BUS, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3088) ENABLE_PCLK_BUS, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3089) ENABLE_IP_BUS0, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3090) ENABLE_IP_BUS1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3091)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3092) static const unsigned long bus01_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3093) CMU_BUS_COMMON_CLK_REGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3094) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3096) static const unsigned long bus2_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3097) MUX_SEL_BUS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3098) MUX_ENABLE_BUS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3099) CMU_BUS_COMMON_CLK_REGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3100) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3102) static const struct samsung_div_clock bus0_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3103) /* DIV_BUS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3104) DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus0_133", "aclk_bus0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3105) DIV_BUS, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3106) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3108) /* CMU_BUS0 clocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3109) static const struct samsung_gate_clock bus0_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3110) /* ENABLE_ACLK_BUS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3111) GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus0p", "div_pclk_bus0_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3112) ENABLE_ACLK_BUS, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3113) GATE(CLK_ACLK_BUSNP_133, "aclk_bus0np_133", "div_pclk_bus0_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3114) ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3115) GATE(CLK_ACLK_BUSND_400, "aclk_bus0nd_400", "aclk_bus0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3116) ENABLE_ACLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3118) /* ENABLE_PCLK_BUS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3119) GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus0srvnd_133", "div_pclk_bus0_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3120) ENABLE_PCLK_BUS, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3121) GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus0", "div_pclk_bus0_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3122) ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3123) GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus0", "div_pclk_bus0_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3124) ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3125) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3127) /* CMU_BUS1 clocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3128) static const struct samsung_div_clock bus1_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3129) /* DIV_BUS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3130) DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus1_133", "aclk_bus1_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3131) DIV_BUS, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3132) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3134) static const struct samsung_gate_clock bus1_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3135) /* ENABLE_ACLK_BUS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3136) GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus1p", "div_pclk_bus1_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3137) ENABLE_ACLK_BUS, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3138) GATE(CLK_ACLK_BUSNP_133, "aclk_bus1np_133", "div_pclk_bus1_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3139) ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3140) GATE(CLK_ACLK_BUSND_400, "aclk_bus1nd_400", "aclk_bus1_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3141) ENABLE_ACLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3143) /* ENABLE_PCLK_BUS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3144) GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus1srvnd_133", "div_pclk_bus1_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3145) ENABLE_PCLK_BUS, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3146) GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus1", "div_pclk_bus1_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3147) ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3148) GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus1", "div_pclk_bus1_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3149) ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3150) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3152) /* CMU_BUS2 clocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3153) static const struct samsung_mux_clock bus2_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3154) /* MUX_SEL_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3155) MUX(CLK_MOUT_ACLK_BUS2_400_USER, "mout_aclk_bus2_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3156) mout_aclk_bus2_400_p, MUX_SEL_BUS2, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3157) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3159) static const struct samsung_div_clock bus2_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3160) /* DIV_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3161) DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3162) "mout_aclk_bus2_400_user", DIV_BUS, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3163) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3165) static const struct samsung_gate_clock bus2_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3166) /* ENABLE_ACLK_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3167) GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus2p", "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3168) ENABLE_ACLK_BUS, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3169) GATE(CLK_ACLK_BUSNP_133, "aclk_bus2np_133", "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3170) ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3171) GATE(CLK_ACLK_BUS2BEND_400, "aclk_bus2bend_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3172) "mout_aclk_bus2_400_user", ENABLE_ACLK_BUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3173) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3174) GATE(CLK_ACLK_BUS2RTND_400, "aclk_bus2rtnd_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3175) "mout_aclk_bus2_400_user", ENABLE_ACLK_BUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3176) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3178) /* ENABLE_PCLK_BUS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3179) GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus2srvnd_133", "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3180) ENABLE_PCLK_BUS, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3181) GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus2", "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3182) ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3183) GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus2", "div_pclk_bus2_133",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3184) ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3185) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3187) #define CMU_BUS_INFO_CLKS(id) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3188) .div_clks = bus##id##_div_clks, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3189) .nr_div_clks = ARRAY_SIZE(bus##id##_div_clks), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3190) .gate_clks = bus##id##_gate_clks, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3191) .nr_gate_clks = ARRAY_SIZE(bus##id##_gate_clks), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3192) .nr_clk_ids = BUSx_NR_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3194) static const struct samsung_cmu_info bus0_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3195) CMU_BUS_INFO_CLKS(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3196) .clk_regs = bus01_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3197) .nr_clk_regs = ARRAY_SIZE(bus01_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3198) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3200) static const struct samsung_cmu_info bus1_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3201) CMU_BUS_INFO_CLKS(1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3202) .clk_regs = bus01_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3203) .nr_clk_regs = ARRAY_SIZE(bus01_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3204) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3206) static const struct samsung_cmu_info bus2_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3207) CMU_BUS_INFO_CLKS(2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3208) .mux_clks = bus2_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3209) .nr_mux_clks = ARRAY_SIZE(bus2_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3210) .clk_regs = bus2_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3211) .nr_clk_regs = ARRAY_SIZE(bus2_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3212) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3214) #define exynos5433_cmu_bus_init(id) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3215) static void __init exynos5433_cmu_bus##id##_init(struct device_node *np)\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3216) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3217) samsung_cmu_register_one(np, &bus##id##_cmu_info); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3218) } \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3219) CLK_OF_DECLARE(exynos5433_cmu_bus##id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3220) "samsung,exynos5433-cmu-bus"#id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3221) exynos5433_cmu_bus##id##_init)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3223) exynos5433_cmu_bus_init(0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3224) exynos5433_cmu_bus_init(1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3225) exynos5433_cmu_bus_init(2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3227) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3228) * Register offset definitions for CMU_G3D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3229) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3230) #define G3D_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3231) #define G3D_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3232) #define G3D_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3233) #define G3D_PLL_FREQ_DET 0x010c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3234) #define MUX_SEL_G3D 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3235) #define MUX_ENABLE_G3D 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3236) #define MUX_STAT_G3D 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3237) #define DIV_G3D 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3238) #define DIV_G3D_PLL_FREQ_DET 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3239) #define DIV_STAT_G3D 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3240) #define DIV_STAT_G3D_PLL_FREQ_DET 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3241) #define ENABLE_ACLK_G3D 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3242) #define ENABLE_PCLK_G3D 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3243) #define ENABLE_SCLK_G3D 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3244) #define ENABLE_IP_G3D0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3245) #define ENABLE_IP_G3D1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3246) #define CLKOUT_CMU_G3D 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3247) #define CLKOUT_CMU_G3D_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3248) #define CLK_STOPCTRL 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3250) static const unsigned long g3d_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3251) G3D_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3252) G3D_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3253) G3D_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3254) G3D_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3255) MUX_SEL_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3256) MUX_ENABLE_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3257) DIV_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3258) DIV_G3D_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3259) ENABLE_ACLK_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3260) ENABLE_PCLK_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3261) ENABLE_SCLK_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3262) ENABLE_IP_G3D0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3263) ENABLE_IP_G3D1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3264) CLKOUT_CMU_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3265) CLKOUT_CMU_G3D_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3266) CLK_STOPCTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3267) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3269) static const struct samsung_clk_reg_dump g3d_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3270) { MUX_SEL_G3D, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3271) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3272)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3273) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3274) PNAME(mout_aclk_g3d_400_p) = { "mout_g3d_pll", "aclk_g3d_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3275) PNAME(mout_g3d_pll_p) = { "oscclk", "fout_g3d_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3277) static const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3278) PLL(pll_35xx, CLK_FOUT_G3D_PLL, "fout_g3d_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3279) G3D_PLL_LOCK, G3D_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3280) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3281)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3282) static const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3283) /* MUX_SEL_G3D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3284) MUX_F(CLK_MOUT_ACLK_G3D_400, "mout_aclk_g3d_400", mout_aclk_g3d_400_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3285) MUX_SEL_G3D, 8, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3286) MUX_F(CLK_MOUT_G3D_PLL, "mout_g3d_pll", mout_g3d_pll_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3287) MUX_SEL_G3D, 0, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3288) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3289)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3290) static const struct samsung_div_clock g3d_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3291) /* DIV_G3D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3292) DIV(CLK_DIV_SCLK_HPM_G3D, "div_sclk_hpm_g3d", "mout_g3d_pll", DIV_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3293) 8, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3294) DIV(CLK_DIV_PCLK_G3D, "div_pclk_g3d", "div_aclk_g3d", DIV_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3295) 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3296) DIV_F(CLK_DIV_ACLK_G3D, "div_aclk_g3d", "mout_aclk_g3d_400", DIV_G3D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3297) 0, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3298) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3300) static const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3301) /* ENABLE_ACLK_G3D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3302) GATE(CLK_ACLK_BTS_G3D1, "aclk_bts_g3d1", "div_aclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3303) ENABLE_ACLK_G3D, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3304) GATE(CLK_ACLK_BTS_G3D0, "aclk_bts_g3d0", "div_aclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3305) ENABLE_ACLK_G3D, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3306) GATE(CLK_ACLK_ASYNCAPBS_G3D, "aclk_asyncapbs_g3d", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3307) ENABLE_ACLK_G3D, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3308) GATE(CLK_ACLK_ASYNCAPBM_G3D, "aclk_asyncapbm_g3d", "div_aclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3309) ENABLE_ACLK_G3D, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3310) GATE(CLK_ACLK_AHB2APB_G3DP, "aclk_ahb2apb_g3dp", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3311) ENABLE_ACLK_G3D, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3312) GATE(CLK_ACLK_G3DNP_150, "aclk_g3dnp_150", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3313) ENABLE_ACLK_G3D, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3314) GATE(CLK_ACLK_G3DND_600, "aclk_g3dnd_600", "div_aclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3315) ENABLE_ACLK_G3D, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3316) GATE(CLK_ACLK_G3D, "aclk_g3d", "div_aclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3317) ENABLE_ACLK_G3D, 0, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3319) /* ENABLE_PCLK_G3D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3320) GATE(CLK_PCLK_BTS_G3D1, "pclk_bts_g3d1", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3321) ENABLE_PCLK_G3D, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3322) GATE(CLK_PCLK_BTS_G3D0, "pclk_bts_g3d0", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3323) ENABLE_PCLK_G3D, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3324) GATE(CLK_PCLK_PMU_G3D, "pclk_pmu_g3d", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3325) ENABLE_PCLK_G3D, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3326) GATE(CLK_PCLK_SYSREG_G3D, "pclk_sysreg_g3d", "div_pclk_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3327) ENABLE_PCLK_G3D, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3329) /* ENABLE_SCLK_G3D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3330) GATE(CLK_SCLK_HPM_G3D, "sclk_hpm_g3d", "div_sclk_hpm_g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3331) ENABLE_SCLK_G3D, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3332) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3333)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3334) static const struct samsung_cmu_info g3d_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3335) .pll_clks = g3d_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3336) .nr_pll_clks = ARRAY_SIZE(g3d_pll_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3337) .mux_clks = g3d_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3338) .nr_mux_clks = ARRAY_SIZE(g3d_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3339) .div_clks = g3d_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3340) .nr_div_clks = ARRAY_SIZE(g3d_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3341) .gate_clks = g3d_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3342) .nr_gate_clks = ARRAY_SIZE(g3d_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3343) .nr_clk_ids = G3D_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3344) .clk_regs = g3d_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3345) .nr_clk_regs = ARRAY_SIZE(g3d_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3346) .suspend_regs = g3d_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3347) .nr_suspend_regs = ARRAY_SIZE(g3d_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3348) .clk_name = "aclk_g3d_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3349) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3350)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3351) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3352) * Register offset definitions for CMU_GSCL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3353) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3354) #define MUX_SEL_GSCL 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3355) #define MUX_ENABLE_GSCL 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3356) #define MUX_STAT_GSCL 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3357) #define ENABLE_ACLK_GSCL 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3358) #define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3359) #define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1 0x0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3360) #define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2 0x080c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3361) #define ENABLE_PCLK_GSCL 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3362) #define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3363) #define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1 0x0908
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3364) #define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2 0x090c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3365) #define ENABLE_IP_GSCL0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3366) #define ENABLE_IP_GSCL1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3367) #define ENABLE_IP_GSCL_SECURE_SMMU_GSCL0 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3368) #define ENABLE_IP_GSCL_SECURE_SMMU_GSCL1 0x0b0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3369) #define ENABLE_IP_GSCL_SECURE_SMMU_GSCL2 0x0b10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3370)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3371) static const unsigned long gscl_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3372) MUX_SEL_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3373) MUX_ENABLE_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3374) ENABLE_ACLK_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3375) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3376) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3377) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3378) ENABLE_PCLK_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3379) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3380) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3381) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3382) ENABLE_IP_GSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3383) ENABLE_IP_GSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3384) ENABLE_IP_GSCL_SECURE_SMMU_GSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3385) ENABLE_IP_GSCL_SECURE_SMMU_GSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3386) ENABLE_IP_GSCL_SECURE_SMMU_GSCL2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3387) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3388)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3389) static const struct samsung_clk_reg_dump gscl_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3390) { MUX_SEL_GSCL, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3391) { ENABLE_ACLK_GSCL, 0xfff },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3392) { ENABLE_PCLK_GSCL, 0xff },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3393) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3395) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3396) PNAME(aclk_gscl_111_user_p) = { "oscclk", "aclk_gscl_111", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3397) PNAME(aclk_gscl_333_user_p) = { "oscclk", "aclk_gscl_333", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3399) static const struct samsung_mux_clock gscl_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3400) /* MUX_SEL_GSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3401) MUX(CLK_MOUT_ACLK_GSCL_111_USER, "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3402) aclk_gscl_111_user_p, MUX_SEL_GSCL, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3403) MUX(CLK_MOUT_ACLK_GSCL_333_USER, "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3404) aclk_gscl_333_user_p, MUX_SEL_GSCL, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3405) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3407) static const struct samsung_gate_clock gscl_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3408) /* ENABLE_ACLK_GSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3409) GATE(CLK_ACLK_BTS_GSCL2, "aclk_bts_gscl2", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3410) ENABLE_ACLK_GSCL, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3411) GATE(CLK_ACLK_BTS_GSCL1, "aclk_bts_gscl1", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3412) ENABLE_ACLK_GSCL, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3413) GATE(CLK_ACLK_BTS_GSCL0, "aclk_bts_gscl0", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3414) ENABLE_ACLK_GSCL, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3415) GATE(CLK_ACLK_AHB2APB_GSCLP, "aclk_ahb2apb_gsclp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3416) "mout_aclk_gscl_111_user", ENABLE_ACLK_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3417) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3418) GATE(CLK_ACLK_XIU_GSCLX, "aclk_xiu_gsclx", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3419) ENABLE_ACLK_GSCL, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3420) GATE(CLK_ACLK_GSCLNP_111, "aclk_gsclnp_111", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3421) ENABLE_ACLK_GSCL, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3422) GATE(CLK_ACLK_GSCLRTND_333, "aclk_gsclrtnd_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3423) "mout_aclk_gscl_333_user", ENABLE_ACLK_GSCL, 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3424) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3425) GATE(CLK_ACLK_GSCLBEND_333, "aclk_gsclbend_333",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3426) "mout_aclk_gscl_333_user", ENABLE_ACLK_GSCL, 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3427) CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3428) GATE(CLK_ACLK_GSD, "aclk_gsd", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3429) ENABLE_ACLK_GSCL, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3430) GATE(CLK_ACLK_GSCL2, "aclk_gscl2", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3431) ENABLE_ACLK_GSCL, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3432) GATE(CLK_ACLK_GSCL1, "aclk_gscl1", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3433) ENABLE_ACLK_GSCL, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3434) GATE(CLK_ACLK_GSCL0, "aclk_gscl0", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3435) ENABLE_ACLK_GSCL, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3437) /* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3438) GATE(CLK_ACLK_SMMU_GSCL0, "aclk_smmu_gscl0", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3439) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3441) /* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3442) GATE(CLK_ACLK_SMMU_GSCL1, "aclk_smmu_gscl1", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3443) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3445) /* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3446) GATE(CLK_ACLK_SMMU_GSCL2, "aclk_smmu_gscl2", "mout_aclk_gscl_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3447) ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3449) /* ENABLE_PCLK_GSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3450) GATE(CLK_PCLK_BTS_GSCL2, "pclk_bts_gscl2", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3451) ENABLE_PCLK_GSCL, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3452) GATE(CLK_PCLK_BTS_GSCL1, "pclk_bts_gscl1", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3453) ENABLE_PCLK_GSCL, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3454) GATE(CLK_PCLK_BTS_GSCL0, "pclk_bts_gscl0", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3455) ENABLE_PCLK_GSCL, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3456) GATE(CLK_PCLK_PMU_GSCL, "pclk_pmu_gscl", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3457) ENABLE_PCLK_GSCL, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3458) GATE(CLK_PCLK_SYSREG_GSCL, "pclk_sysreg_gscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3459) "mout_aclk_gscl_111_user", ENABLE_PCLK_GSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3460) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3461) GATE(CLK_PCLK_GSCL2, "pclk_gscl2", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3462) ENABLE_PCLK_GSCL, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3463) GATE(CLK_PCLK_GSCL1, "pclk_gscl1", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3464) ENABLE_PCLK_GSCL, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3465) GATE(CLK_PCLK_GSCL0, "pclk_gscl0", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3466) ENABLE_PCLK_GSCL, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3467)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3468) /* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3469) GATE(CLK_PCLK_SMMU_GSCL0, "pclk_smmu_gscl0", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3470) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3471)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3472) /* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3473) GATE(CLK_PCLK_SMMU_GSCL1, "pclk_smmu_gscl1", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3474) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3475)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3476) /* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3477) GATE(CLK_PCLK_SMMU_GSCL2, "pclk_smmu_gscl2", "mout_aclk_gscl_111_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3478) ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3479) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3480)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3481) static const struct samsung_cmu_info gscl_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3482) .mux_clks = gscl_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3483) .nr_mux_clks = ARRAY_SIZE(gscl_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3484) .gate_clks = gscl_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3485) .nr_gate_clks = ARRAY_SIZE(gscl_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3486) .nr_clk_ids = GSCL_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3487) .clk_regs = gscl_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3488) .nr_clk_regs = ARRAY_SIZE(gscl_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3489) .suspend_regs = gscl_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3490) .nr_suspend_regs = ARRAY_SIZE(gscl_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3491) .clk_name = "aclk_gscl_111",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3492) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3494) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3495) * Register offset definitions for CMU_APOLLO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3496) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3497) #define APOLLO_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3498) #define APOLLO_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3499) #define APOLLO_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3500) #define APOLLO_PLL_FREQ_DET 0x010c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3501) #define MUX_SEL_APOLLO0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3502) #define MUX_SEL_APOLLO1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3503) #define MUX_SEL_APOLLO2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3504) #define MUX_ENABLE_APOLLO0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3505) #define MUX_ENABLE_APOLLO1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3506) #define MUX_ENABLE_APOLLO2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3507) #define MUX_STAT_APOLLO0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3508) #define MUX_STAT_APOLLO1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3509) #define MUX_STAT_APOLLO2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3510) #define DIV_APOLLO0 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3511) #define DIV_APOLLO1 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3512) #define DIV_APOLLO_PLL_FREQ_DET 0x0608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3513) #define DIV_STAT_APOLLO0 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3514) #define DIV_STAT_APOLLO1 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3515) #define DIV_STAT_APOLLO_PLL_FREQ_DET 0x0708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3516) #define ENABLE_ACLK_APOLLO 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3517) #define ENABLE_PCLK_APOLLO 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3518) #define ENABLE_SCLK_APOLLO 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3519) #define ENABLE_IP_APOLLO0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3520) #define ENABLE_IP_APOLLO1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3521) #define CLKOUT_CMU_APOLLO 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3522) #define CLKOUT_CMU_APOLLO_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3523) #define ARMCLK_STOPCTRL 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3524) #define APOLLO_PWR_CTRL 0x1020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3525) #define APOLLO_PWR_CTRL2 0x1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3526) #define APOLLO_INTR_SPREAD_ENABLE 0x1080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3527) #define APOLLO_INTR_SPREAD_USE_STANDBYWFI 0x1084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3528) #define APOLLO_INTR_SPREAD_BLOCKING_DURATION 0x1088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3529)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3530) static const unsigned long apollo_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3531) APOLLO_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3532) APOLLO_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3533) APOLLO_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3534) APOLLO_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3535) MUX_SEL_APOLLO0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3536) MUX_SEL_APOLLO1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3537) MUX_SEL_APOLLO2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3538) MUX_ENABLE_APOLLO0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3539) MUX_ENABLE_APOLLO1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3540) MUX_ENABLE_APOLLO2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3541) DIV_APOLLO0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3542) DIV_APOLLO1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3543) DIV_APOLLO_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3544) ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3545) ENABLE_PCLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3546) ENABLE_SCLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3547) ENABLE_IP_APOLLO0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3548) ENABLE_IP_APOLLO1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3549) CLKOUT_CMU_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3550) CLKOUT_CMU_APOLLO_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3551) ARMCLK_STOPCTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3552) APOLLO_PWR_CTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3553) APOLLO_PWR_CTRL2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3554) APOLLO_INTR_SPREAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3555) APOLLO_INTR_SPREAD_USE_STANDBYWFI,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3556) APOLLO_INTR_SPREAD_BLOCKING_DURATION,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3557) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3558)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3559) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3560) PNAME(mout_apollo_pll_p) = { "oscclk", "fout_apollo_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3561) PNAME(mout_bus_pll_apollo_user_p) = { "oscclk", "sclk_bus_pll_apollo", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3562) PNAME(mout_apollo_p) = { "mout_apollo_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3563) "mout_bus_pll_apollo_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3564)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3565) static const struct samsung_pll_clock apollo_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3566) PLL(pll_35xx, CLK_FOUT_APOLLO_PLL, "fout_apollo_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3567) APOLLO_PLL_LOCK, APOLLO_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3568) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3570) static const struct samsung_mux_clock apollo_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3571) /* MUX_SEL_APOLLO0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3572) MUX_F(CLK_MOUT_APOLLO_PLL, "mout_apollo_pll", mout_apollo_pll_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3573) MUX_SEL_APOLLO0, 0, 1, CLK_SET_RATE_PARENT |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3574) CLK_RECALC_NEW_RATES, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3575)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3576) /* MUX_SEL_APOLLO1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3577) MUX(CLK_MOUT_BUS_PLL_APOLLO_USER, "mout_bus_pll_apollo_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3578) mout_bus_pll_apollo_user_p, MUX_SEL_APOLLO1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3579)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3580) /* MUX_SEL_APOLLO2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3581) MUX_F(CLK_MOUT_APOLLO, "mout_apollo", mout_apollo_p, MUX_SEL_APOLLO2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3582) 0, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3583) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3584)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3585) static const struct samsung_div_clock apollo_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3586) /* DIV_APOLLO0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3587) DIV_F(CLK_DIV_CNTCLK_APOLLO, "div_cntclk_apollo", "div_apollo2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3588) DIV_APOLLO0, 24, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3589) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3590) DIV_F(CLK_DIV_PCLK_DBG_APOLLO, "div_pclk_dbg_apollo", "div_apollo2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3591) DIV_APOLLO0, 20, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3592) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3593) DIV_F(CLK_DIV_ATCLK_APOLLO, "div_atclk_apollo", "div_apollo2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3594) DIV_APOLLO0, 16, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3595) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3596) DIV_F(CLK_DIV_PCLK_APOLLO, "div_pclk_apollo", "div_apollo2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3597) DIV_APOLLO0, 12, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3598) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3599) DIV_F(CLK_DIV_ACLK_APOLLO, "div_aclk_apollo", "div_apollo2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3600) DIV_APOLLO0, 8, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3601) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3602) DIV_F(CLK_DIV_APOLLO2, "div_apollo2", "div_apollo1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3603) DIV_APOLLO0, 4, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3604) DIV_F(CLK_DIV_APOLLO1, "div_apollo1", "mout_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3605) DIV_APOLLO0, 0, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3606)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3607) /* DIV_APOLLO1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3608) DIV_F(CLK_DIV_SCLK_HPM_APOLLO, "div_sclk_hpm_apollo", "mout_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3609) DIV_APOLLO1, 4, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3610) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3611) DIV_F(CLK_DIV_APOLLO_PLL, "div_apollo_pll", "mout_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3612) DIV_APOLLO1, 0, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3613) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3614) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3615)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3616) static const struct samsung_gate_clock apollo_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3617) /* ENABLE_ACLK_APOLLO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3618) GATE(CLK_ACLK_ASATBSLV_APOLLO_3_CSSYS, "aclk_asatbslv_apollo_3_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3619) "div_atclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3620) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3621) GATE(CLK_ACLK_ASATBSLV_APOLLO_2_CSSYS, "aclk_asatbslv_apollo_2_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3622) "div_atclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3623) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3624) GATE(CLK_ACLK_ASATBSLV_APOLLO_1_CSSYS, "aclk_asatbslv_apollo_1_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3625) "div_atclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3626) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3627) GATE(CLK_ACLK_ASATBSLV_APOLLO_0_CSSYS, "aclk_asatbslv_apollo_0_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3628) "div_atclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3629) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3630) GATE(CLK_ACLK_ASYNCACES_APOLLO_CCI, "aclk_asyncaces_apollo_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3631) "div_aclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3632) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3633) GATE(CLK_ACLK_AHB2APB_APOLLOP, "aclk_ahb2apb_apollop",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3634) "div_pclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3635) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3636) GATE(CLK_ACLK_APOLLONP_200, "aclk_apollonp_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3637) "div_pclk_apollo", ENABLE_ACLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3638) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3640) /* ENABLE_PCLK_APOLLO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3641) GATE(CLK_PCLK_ASAPBMST_CSSYS_APOLLO, "pclk_asapbmst_cssys_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3642) "div_pclk_dbg_apollo", ENABLE_PCLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3643) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3644) GATE(CLK_PCLK_PMU_APOLLO, "pclk_pmu_apollo", "div_pclk_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3645) ENABLE_PCLK_APOLLO, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3646) GATE(CLK_PCLK_SYSREG_APOLLO, "pclk_sysreg_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3647) "div_pclk_apollo", ENABLE_PCLK_APOLLO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3648) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3649)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3650) /* ENABLE_SCLK_APOLLO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3651) GATE(CLK_CNTCLK_APOLLO, "cntclk_apollo", "div_cntclk_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3652) ENABLE_SCLK_APOLLO, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3653) GATE(CLK_SCLK_HPM_APOLLO, "sclk_hpm_apollo", "div_sclk_hpm_apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3654) ENABLE_SCLK_APOLLO, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3655) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3656)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3657) #define E5433_APOLLO_DIV0(cntclk, pclk_dbg, atclk, pclk, aclk) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3658) (((cntclk) << 24) | ((pclk_dbg) << 20) | ((atclk) << 16) | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3659) ((pclk) << 12) | ((aclk) << 8))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3660)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3661) #define E5433_APOLLO_DIV1(hpm, copy) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3662) (((hpm) << 4) | ((copy) << 0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3663)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3664) static const struct exynos_cpuclk_cfg_data exynos5433_apolloclk_d[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3665) { 1300000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3666) { 1200000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3667) { 1100000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3668) { 1000000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3669) { 900000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3670) { 800000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3671) { 700000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3672) { 600000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3673) { 500000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3674) { 400000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3675) { 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3676) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3678) static void __init exynos5433_cmu_apollo_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3679) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3680) void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3681) struct samsung_clk_provider *ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3682) struct clk_hw **hws;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3683)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3684) reg_base = of_iomap(np, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3685) if (!reg_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3686) panic("%s: failed to map registers\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3687) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3688) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3690) ctx = samsung_clk_init(np, reg_base, APOLLO_NR_CLK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3691) if (!ctx) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3692) panic("%s: unable to allocate ctx\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3693) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3694) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3695)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3696) samsung_clk_register_pll(ctx, apollo_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3697) ARRAY_SIZE(apollo_pll_clks), reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3698) samsung_clk_register_mux(ctx, apollo_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3699) ARRAY_SIZE(apollo_mux_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3700) samsung_clk_register_div(ctx, apollo_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3701) ARRAY_SIZE(apollo_div_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3702) samsung_clk_register_gate(ctx, apollo_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3703) ARRAY_SIZE(apollo_gate_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3704)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3705) hws = ctx->clk_data.hws;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3706)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3707) exynos_register_cpu_clock(ctx, CLK_SCLK_APOLLO, "apolloclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3708) hws[CLK_MOUT_APOLLO_PLL], hws[CLK_MOUT_BUS_PLL_APOLLO_USER], 0x200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3709) exynos5433_apolloclk_d, ARRAY_SIZE(exynos5433_apolloclk_d),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3710) CLK_CPU_HAS_E5433_REGS_LAYOUT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3711)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3712) samsung_clk_sleep_init(reg_base, apollo_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3713) ARRAY_SIZE(apollo_clk_regs));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3714)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3715) samsung_clk_of_add_provider(np, ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3716) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3717) CLK_OF_DECLARE(exynos5433_cmu_apollo, "samsung,exynos5433-cmu-apollo",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3718) exynos5433_cmu_apollo_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3719)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3720) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3721) * Register offset definitions for CMU_ATLAS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3722) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3723) #define ATLAS_PLL_LOCK 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3724) #define ATLAS_PLL_CON0 0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3725) #define ATLAS_PLL_CON1 0x0104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3726) #define ATLAS_PLL_FREQ_DET 0x010c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3727) #define MUX_SEL_ATLAS0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3728) #define MUX_SEL_ATLAS1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3729) #define MUX_SEL_ATLAS2 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3730) #define MUX_ENABLE_ATLAS0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3731) #define MUX_ENABLE_ATLAS1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3732) #define MUX_ENABLE_ATLAS2 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3733) #define MUX_STAT_ATLAS0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3734) #define MUX_STAT_ATLAS1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3735) #define MUX_STAT_ATLAS2 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3736) #define DIV_ATLAS0 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3737) #define DIV_ATLAS1 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3738) #define DIV_ATLAS_PLL_FREQ_DET 0x0608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3739) #define DIV_STAT_ATLAS0 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3740) #define DIV_STAT_ATLAS1 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3741) #define DIV_STAT_ATLAS_PLL_FREQ_DET 0x0708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3742) #define ENABLE_ACLK_ATLAS 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3743) #define ENABLE_PCLK_ATLAS 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3744) #define ENABLE_SCLK_ATLAS 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3745) #define ENABLE_IP_ATLAS0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3746) #define ENABLE_IP_ATLAS1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3747) #define CLKOUT_CMU_ATLAS 0x0c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3748) #define CLKOUT_CMU_ATLAS_DIV_STAT 0x0c04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3749) #define ARMCLK_STOPCTRL 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3750) #define ATLAS_PWR_CTRL 0x1020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3751) #define ATLAS_PWR_CTRL2 0x1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3752) #define ATLAS_INTR_SPREAD_ENABLE 0x1080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3753) #define ATLAS_INTR_SPREAD_USE_STANDBYWFI 0x1084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3754) #define ATLAS_INTR_SPREAD_BLOCKING_DURATION 0x1088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3755)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3756) static const unsigned long atlas_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3757) ATLAS_PLL_LOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3758) ATLAS_PLL_CON0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3759) ATLAS_PLL_CON1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3760) ATLAS_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3761) MUX_SEL_ATLAS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3762) MUX_SEL_ATLAS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3763) MUX_SEL_ATLAS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3764) MUX_ENABLE_ATLAS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3765) MUX_ENABLE_ATLAS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3766) MUX_ENABLE_ATLAS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3767) DIV_ATLAS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3768) DIV_ATLAS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3769) DIV_ATLAS_PLL_FREQ_DET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3770) ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3771) ENABLE_PCLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3772) ENABLE_SCLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3773) ENABLE_IP_ATLAS0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3774) ENABLE_IP_ATLAS1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3775) CLKOUT_CMU_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3776) CLKOUT_CMU_ATLAS_DIV_STAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3777) ARMCLK_STOPCTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3778) ATLAS_PWR_CTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3779) ATLAS_PWR_CTRL2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3780) ATLAS_INTR_SPREAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3781) ATLAS_INTR_SPREAD_USE_STANDBYWFI,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3782) ATLAS_INTR_SPREAD_BLOCKING_DURATION,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3783) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3784)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3785) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3786) PNAME(mout_atlas_pll_p) = { "oscclk", "fout_atlas_pll", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3787) PNAME(mout_bus_pll_atlas_user_p) = { "oscclk", "sclk_bus_pll_atlas", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3788) PNAME(mout_atlas_p) = { "mout_atlas_pll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3789) "mout_bus_pll_atlas_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3790)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3791) static const struct samsung_pll_clock atlas_pll_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3792) PLL(pll_35xx, CLK_FOUT_ATLAS_PLL, "fout_atlas_pll", "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3793) ATLAS_PLL_LOCK, ATLAS_PLL_CON0, exynos5433_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3794) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3795)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3796) static const struct samsung_mux_clock atlas_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3797) /* MUX_SEL_ATLAS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3798) MUX_F(CLK_MOUT_ATLAS_PLL, "mout_atlas_pll", mout_atlas_pll_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3799) MUX_SEL_ATLAS0, 0, 1, CLK_SET_RATE_PARENT |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3800) CLK_RECALC_NEW_RATES, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3801)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3802) /* MUX_SEL_ATLAS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3803) MUX(CLK_MOUT_BUS_PLL_ATLAS_USER, "mout_bus_pll_atlas_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3804) mout_bus_pll_atlas_user_p, MUX_SEL_ATLAS1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3805)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3806) /* MUX_SEL_ATLAS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3807) MUX_F(CLK_MOUT_ATLAS, "mout_atlas", mout_atlas_p, MUX_SEL_ATLAS2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3808) 0, 1, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3809) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3811) static const struct samsung_div_clock atlas_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3812) /* DIV_ATLAS0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3813) DIV_F(CLK_DIV_CNTCLK_ATLAS, "div_cntclk_atlas", "div_atlas2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3814) DIV_ATLAS0, 24, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3815) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3816) DIV_F(CLK_DIV_PCLK_DBG_ATLAS, "div_pclk_dbg_atlas", "div_atclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3817) DIV_ATLAS0, 20, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3818) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3819) DIV_F(CLK_DIV_ATCLK_ATLASO, "div_atclk_atlas", "div_atlas2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3820) DIV_ATLAS0, 16, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3821) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3822) DIV_F(CLK_DIV_PCLK_ATLAS, "div_pclk_atlas", "div_atlas2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3823) DIV_ATLAS0, 12, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3824) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3825) DIV_F(CLK_DIV_ACLK_ATLAS, "div_aclk_atlas", "div_atlas2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3826) DIV_ATLAS0, 8, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3827) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3828) DIV_F(CLK_DIV_ATLAS2, "div_atlas2", "div_atlas1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3829) DIV_ATLAS0, 4, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3830) DIV_F(CLK_DIV_ATLAS1, "div_atlas1", "mout_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3831) DIV_ATLAS0, 0, 3, CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3832)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3833) /* DIV_ATLAS1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3834) DIV_F(CLK_DIV_SCLK_HPM_ATLAS, "div_sclk_hpm_atlas", "mout_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3835) DIV_ATLAS1, 4, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3836) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3837) DIV_F(CLK_DIV_ATLAS_PLL, "div_atlas_pll", "mout_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3838) DIV_ATLAS1, 0, 3, CLK_GET_RATE_NOCACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3839) CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3840) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3842) static const struct samsung_gate_clock atlas_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3843) /* ENABLE_ACLK_ATLAS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3844) GATE(CLK_ACLK_ATB_AUD_CSSYS, "aclk_atb_aud_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3845) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3846) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3847) GATE(CLK_ACLK_ATB_APOLLO3_CSSYS, "aclk_atb_apollo3_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3848) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3849) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3850) GATE(CLK_ACLK_ATB_APOLLO2_CSSYS, "aclk_atb_apollo2_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3851) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3852) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3853) GATE(CLK_ACLK_ATB_APOLLO1_CSSYS, "aclk_atb_apollo1_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3854) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3855) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3856) GATE(CLK_ACLK_ATB_APOLLO0_CSSYS, "aclk_atb_apollo0_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3857) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3858) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3859) GATE(CLK_ACLK_ASYNCAHBS_CSSYS_SSS, "aclk_asyncahbs_cssys_sss",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3860) "div_atclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3861) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3862) GATE(CLK_ACLK_ASYNCAXIS_CSSYS_CCIX, "aclk_asyncaxis_cssys_ccix",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3863) "div_pclk_dbg_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3864) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3865) GATE(CLK_ACLK_ASYNCACES_ATLAS_CCI, "aclk_asyncaces_atlas_cci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3866) "div_aclk_atlas", ENABLE_ACLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3867) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3868) GATE(CLK_ACLK_AHB2APB_ATLASP, "aclk_ahb2apb_atlasp", "div_pclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3869) ENABLE_ACLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3870) GATE(CLK_ACLK_ATLASNP_200, "aclk_atlasnp_200", "div_pclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3871) ENABLE_ACLK_ATLAS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3872)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3873) /* ENABLE_PCLK_ATLAS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3874) GATE(CLK_PCLK_ASYNCAPB_AUD_CSSYS, "pclk_asyncapb_aud_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3875) "div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3876) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3877) GATE(CLK_PCLK_ASYNCAPB_ISP_CSSYS, "pclk_asyncapb_isp_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3878) "div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3879) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3880) GATE(CLK_PCLK_ASYNCAPB_APOLLO_CSSYS, "pclk_asyncapb_apollo_cssys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3881) "div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3882) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3883) GATE(CLK_PCLK_PMU_ATLAS, "pclk_pmu_atlas", "div_pclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3884) ENABLE_PCLK_ATLAS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3885) GATE(CLK_PCLK_SYSREG_ATLAS, "pclk_sysreg_atlas", "div_pclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3886) ENABLE_PCLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3887) GATE(CLK_PCLK_SECJTAG, "pclk_secjtag", "div_pclk_dbg_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3888) ENABLE_PCLK_ATLAS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3889)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3890) /* ENABLE_SCLK_ATLAS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3891) GATE(CLK_CNTCLK_ATLAS, "cntclk_atlas", "div_cntclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3892) ENABLE_SCLK_ATLAS, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3893) GATE(CLK_SCLK_HPM_ATLAS, "sclk_hpm_atlas", "div_sclk_hpm_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3894) ENABLE_SCLK_ATLAS, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3895) GATE(CLK_TRACECLK, "traceclk", "div_atclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3896) ENABLE_SCLK_ATLAS, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3897) GATE(CLK_CTMCLK, "ctmclk", "div_atclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3898) ENABLE_SCLK_ATLAS, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3899) GATE(CLK_HCLK_CSSYS, "hclk_cssys", "div_atclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3900) ENABLE_SCLK_ATLAS, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3901) GATE(CLK_PCLK_DBG_CSSYS, "pclk_dbg_cssys", "div_pclk_dbg_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3902) ENABLE_SCLK_ATLAS, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3903) GATE(CLK_PCLK_DBG, "pclk_dbg", "div_pclk_dbg_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3904) ENABLE_SCLK_ATLAS, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3905) GATE(CLK_ATCLK, "atclk", "div_atclk_atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3906) ENABLE_SCLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3907) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3908)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3909) #define E5433_ATLAS_DIV0(cntclk, pclk_dbg, atclk, pclk, aclk) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3910) (((cntclk) << 24) | ((pclk_dbg) << 20) | ((atclk) << 16) | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3911) ((pclk) << 12) | ((aclk) << 8))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3912)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3913) #define E5433_ATLAS_DIV1(hpm, copy) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3914) (((hpm) << 4) | ((copy) << 0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3915)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3916) static const struct exynos_cpuclk_cfg_data exynos5433_atlasclk_d[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3917) { 1900000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3918) { 1800000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3919) { 1700000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3920) { 1600000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3921) { 1500000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3922) { 1400000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3923) { 1300000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3924) { 1200000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3925) { 1100000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3926) { 1000000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3927) { 900000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3928) { 800000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3929) { 700000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3930) { 600000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3931) { 500000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3932) { 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3933) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3934)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3935) static void __init exynos5433_cmu_atlas_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3936) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3937) void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3938) struct samsung_clk_provider *ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3939) struct clk_hw **hws;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3941) reg_base = of_iomap(np, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3942) if (!reg_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3943) panic("%s: failed to map registers\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3944) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3945) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3946)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3947) ctx = samsung_clk_init(np, reg_base, ATLAS_NR_CLK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3948) if (!ctx) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3949) panic("%s: unable to allocate ctx\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3950) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3951) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3952)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3953) samsung_clk_register_pll(ctx, atlas_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3954) ARRAY_SIZE(atlas_pll_clks), reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3955) samsung_clk_register_mux(ctx, atlas_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3956) ARRAY_SIZE(atlas_mux_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3957) samsung_clk_register_div(ctx, atlas_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3958) ARRAY_SIZE(atlas_div_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3959) samsung_clk_register_gate(ctx, atlas_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3960) ARRAY_SIZE(atlas_gate_clks));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3961)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3962) hws = ctx->clk_data.hws;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3963)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3964) exynos_register_cpu_clock(ctx, CLK_SCLK_ATLAS, "atlasclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3965) hws[CLK_MOUT_ATLAS_PLL], hws[CLK_MOUT_BUS_PLL_ATLAS_USER], 0x200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3966) exynos5433_atlasclk_d, ARRAY_SIZE(exynos5433_atlasclk_d),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3967) CLK_CPU_HAS_E5433_REGS_LAYOUT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3969) samsung_clk_sleep_init(reg_base, atlas_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3970) ARRAY_SIZE(atlas_clk_regs));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3971)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3972) samsung_clk_of_add_provider(np, ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3973) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3974) CLK_OF_DECLARE(exynos5433_cmu_atlas, "samsung,exynos5433-cmu-atlas",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3975) exynos5433_cmu_atlas_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3977) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3978) * Register offset definitions for CMU_MSCL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3979) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3980) #define MUX_SEL_MSCL0 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3981) #define MUX_SEL_MSCL1 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3982) #define MUX_ENABLE_MSCL0 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3983) #define MUX_ENABLE_MSCL1 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3984) #define MUX_STAT_MSCL0 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3985) #define MUX_STAT_MSCL1 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3986) #define DIV_MSCL 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3987) #define DIV_STAT_MSCL 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3988) #define ENABLE_ACLK_MSCL 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3989) #define ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3990) #define ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1 0x0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3991) #define ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG 0x080c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3992) #define ENABLE_PCLK_MSCL 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3993) #define ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3994) #define ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1 0x0908
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3995) #define ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG 0x090c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3996) #define ENABLE_SCLK_MSCL 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3997) #define ENABLE_IP_MSCL0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3998) #define ENABLE_IP_MSCL1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3999) #define ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER0 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4000) #define ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER1 0x0b0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4001) #define ENABLE_IP_MSCL_SECURE_SMMU_JPEG 0x0b10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4003) static const unsigned long mscl_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4004) MUX_SEL_MSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4005) MUX_SEL_MSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4006) MUX_ENABLE_MSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4007) MUX_ENABLE_MSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4008) DIV_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4009) ENABLE_ACLK_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4010) ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4011) ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4012) ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4013) ENABLE_PCLK_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4014) ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4015) ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4016) ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4017) ENABLE_SCLK_MSCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4018) ENABLE_IP_MSCL0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4019) ENABLE_IP_MSCL1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4020) ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4021) ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4022) ENABLE_IP_MSCL_SECURE_SMMU_JPEG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4023) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4024)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4025) static const struct samsung_clk_reg_dump mscl_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4026) { MUX_SEL_MSCL0, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4027) { MUX_SEL_MSCL1, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4028) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4029)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4030) /* list of all parent clock list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4031) PNAME(mout_sclk_jpeg_user_p) = { "oscclk", "sclk_jpeg_mscl", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4032) PNAME(mout_aclk_mscl_400_user_p) = { "oscclk", "aclk_mscl_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4033) PNAME(mout_sclk_jpeg_p) = { "mout_sclk_jpeg_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4034) "mout_aclk_mscl_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4035)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4036) static const struct samsung_mux_clock mscl_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4037) /* MUX_SEL_MSCL0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4038) MUX(CLK_MOUT_SCLK_JPEG_USER, "mout_sclk_jpeg_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4039) mout_sclk_jpeg_user_p, MUX_SEL_MSCL0, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4040) MUX(CLK_MOUT_ACLK_MSCL_400_USER, "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4041) mout_aclk_mscl_400_user_p, MUX_SEL_MSCL0, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4042)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4043) /* MUX_SEL_MSCL1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4044) MUX(CLK_MOUT_SCLK_JPEG, "mout_sclk_jpeg", mout_sclk_jpeg_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4045) MUX_SEL_MSCL1, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4046) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4047)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4048) static const struct samsung_div_clock mscl_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4049) /* DIV_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4050) DIV(CLK_DIV_PCLK_MSCL, "div_pclk_mscl", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4051) DIV_MSCL, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4052) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4053)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4054) static const struct samsung_gate_clock mscl_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4055) /* ENABLE_ACLK_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4056) GATE(CLK_ACLK_BTS_JPEG, "aclk_bts_jpeg", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4057) ENABLE_ACLK_MSCL, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4058) GATE(CLK_ACLK_BTS_M2MSCALER1, "aclk_bts_m2mscaler1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4059) "mout_aclk_mscl_400_user", ENABLE_ACLK_MSCL, 8, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4060) GATE(CLK_ACLK_BTS_M2MSCALER0, "aclk_bts_m2mscaler0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4061) "mout_aclk_mscl_400_user", ENABLE_ACLK_MSCL, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4062) GATE(CLK_ACLK_AHB2APB_MSCL0P, "aclk_abh2apb_mscl0p", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4063) ENABLE_ACLK_MSCL, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4064) GATE(CLK_ACLK_XIU_MSCLX, "aclk_xiu_msclx", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4065) ENABLE_ACLK_MSCL, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4066) GATE(CLK_ACLK_MSCLNP_100, "aclk_msclnp_100", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4067) ENABLE_ACLK_MSCL, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4068) GATE(CLK_ACLK_MSCLND_400, "aclk_msclnd_400", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4069) ENABLE_ACLK_MSCL, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4070) GATE(CLK_ACLK_JPEG, "aclk_jpeg", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4071) ENABLE_ACLK_MSCL, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4072) GATE(CLK_ACLK_M2MSCALER1, "aclk_m2mscaler1", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4073) ENABLE_ACLK_MSCL, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4074) GATE(CLK_ACLK_M2MSCALER0, "aclk_m2mscaler0", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4075) ENABLE_ACLK_MSCL, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4076)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4077) /* ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4078) GATE(CLK_ACLK_SMMU_M2MSCALER0, "aclk_smmu_m2mscaler0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4079) "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4080) ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4081) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4082)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4083) /* ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4084) GATE(CLK_ACLK_SMMU_M2MSCALER1, "aclk_smmu_m2mscaler1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4085) "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4086) ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4087) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4088)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4089) /* ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4090) GATE(CLK_ACLK_SMMU_JPEG, "aclk_smmu_jpeg", "mout_aclk_mscl_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4091) ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4092) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4093)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4094) /* ENABLE_PCLK_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4095) GATE(CLK_PCLK_BTS_JPEG, "pclk_bts_jpeg", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4096) ENABLE_PCLK_MSCL, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4097) GATE(CLK_PCLK_BTS_M2MSCALER1, "pclk_bts_m2mscaler1", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4098) ENABLE_PCLK_MSCL, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4099) GATE(CLK_PCLK_BTS_M2MSCALER0, "pclk_bts_m2mscaler0", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4100) ENABLE_PCLK_MSCL, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4101) GATE(CLK_PCLK_PMU_MSCL, "pclk_pmu_mscl", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4102) ENABLE_PCLK_MSCL, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4103) GATE(CLK_PCLK_SYSREG_MSCL, "pclk_sysreg_mscl", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4104) ENABLE_PCLK_MSCL, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4105) GATE(CLK_PCLK_JPEG, "pclk_jpeg", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4106) ENABLE_PCLK_MSCL, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4107) GATE(CLK_PCLK_M2MSCALER1, "pclk_m2mscaler1", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4108) ENABLE_PCLK_MSCL, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4109) GATE(CLK_PCLK_M2MSCALER0, "pclk_m2mscaler0", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4110) ENABLE_PCLK_MSCL, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4112) /* ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4113) GATE(CLK_PCLK_SMMU_M2MSCALER0, "pclk_smmu_m2mscaler0", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4114) ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4115) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4117) /* ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4118) GATE(CLK_PCLK_SMMU_M2MSCALER1, "pclk_smmu_m2mscaler1", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4119) ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4120) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4122) /* ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4123) GATE(CLK_PCLK_SMMU_JPEG, "pclk_smmu_jpeg", "div_pclk_mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4124) ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4125) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4127) /* ENABLE_SCLK_MSCL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4128) GATE(CLK_SCLK_JPEG, "sclk_jpeg", "mout_sclk_jpeg", ENABLE_SCLK_MSCL, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4129) CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4130) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4132) static const struct samsung_cmu_info mscl_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4133) .mux_clks = mscl_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4134) .nr_mux_clks = ARRAY_SIZE(mscl_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4135) .div_clks = mscl_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4136) .nr_div_clks = ARRAY_SIZE(mscl_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4137) .gate_clks = mscl_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4138) .nr_gate_clks = ARRAY_SIZE(mscl_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4139) .nr_clk_ids = MSCL_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4140) .clk_regs = mscl_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4141) .nr_clk_regs = ARRAY_SIZE(mscl_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4142) .suspend_regs = mscl_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4143) .nr_suspend_regs = ARRAY_SIZE(mscl_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4144) .clk_name = "aclk_mscl_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4145) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4147) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4148) * Register offset definitions for CMU_MFC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4149) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4150) #define MUX_SEL_MFC 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4151) #define MUX_ENABLE_MFC 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4152) #define MUX_STAT_MFC 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4153) #define DIV_MFC 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4154) #define DIV_STAT_MFC 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4155) #define ENABLE_ACLK_MFC 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4156) #define ENABLE_ACLK_MFC_SECURE_SMMU_MFC 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4157) #define ENABLE_PCLK_MFC 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4158) #define ENABLE_PCLK_MFC_SECURE_SMMU_MFC 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4159) #define ENABLE_IP_MFC0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4160) #define ENABLE_IP_MFC1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4161) #define ENABLE_IP_MFC_SECURE_SMMU_MFC 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4163) static const unsigned long mfc_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4164) MUX_SEL_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4165) MUX_ENABLE_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4166) DIV_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4167) ENABLE_ACLK_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4168) ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4169) ENABLE_PCLK_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4170) ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4171) ENABLE_IP_MFC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4172) ENABLE_IP_MFC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4173) ENABLE_IP_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4174) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4176) static const struct samsung_clk_reg_dump mfc_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4177) { MUX_SEL_MFC, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4178) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4180) PNAME(mout_aclk_mfc_400_user_p) = { "oscclk", "aclk_mfc_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4182) static const struct samsung_mux_clock mfc_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4183) /* MUX_SEL_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4184) MUX(CLK_MOUT_ACLK_MFC_400_USER, "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4185) mout_aclk_mfc_400_user_p, MUX_SEL_MFC, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4186) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4188) static const struct samsung_div_clock mfc_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4189) /* DIV_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4190) DIV(CLK_DIV_PCLK_MFC, "div_pclk_mfc", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4191) DIV_MFC, 0, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4192) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4194) static const struct samsung_gate_clock mfc_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4195) /* ENABLE_ACLK_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4196) GATE(CLK_ACLK_BTS_MFC_1, "aclk_bts_mfc_1", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4197) ENABLE_ACLK_MFC, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4198) GATE(CLK_ACLK_BTS_MFC_0, "aclk_bts_mfc_0", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4199) ENABLE_ACLK_MFC, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4200) GATE(CLK_ACLK_AHB2APB_MFCP, "aclk_ahb2apb_mfcp", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4201) ENABLE_ACLK_MFC, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4202) GATE(CLK_ACLK_XIU_MFCX, "aclk_xiu_mfcx", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4203) ENABLE_ACLK_MFC, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4204) GATE(CLK_ACLK_MFCNP_100, "aclk_mfcnp_100", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4205) ENABLE_ACLK_MFC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4206) GATE(CLK_ACLK_MFCND_400, "aclk_mfcnd_400", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4207) ENABLE_ACLK_MFC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4208) GATE(CLK_ACLK_MFC, "aclk_mfc", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4209) ENABLE_ACLK_MFC, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4211) /* ENABLE_ACLK_MFC_SECURE_SMMU_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4212) GATE(CLK_ACLK_SMMU_MFC_1, "aclk_smmu_mfc_1", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4213) ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4214) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4215) GATE(CLK_ACLK_SMMU_MFC_0, "aclk_smmu_mfc_0", "mout_aclk_mfc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4216) ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4217) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4219) /* ENABLE_PCLK_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4220) GATE(CLK_PCLK_BTS_MFC_1, "pclk_bts_mfc_1", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4221) ENABLE_PCLK_MFC, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4222) GATE(CLK_PCLK_BTS_MFC_0, "pclk_bts_mfc_0", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4223) ENABLE_PCLK_MFC, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4224) GATE(CLK_PCLK_PMU_MFC, "pclk_pmu_mfc", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4225) ENABLE_PCLK_MFC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4226) GATE(CLK_PCLK_SYSREG_MFC, "pclk_sysreg_mfc", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4227) ENABLE_PCLK_MFC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4228) GATE(CLK_PCLK_MFC, "pclk_mfc", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4229) ENABLE_PCLK_MFC, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4231) /* ENABLE_PCLK_MFC_SECURE_SMMU_MFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4232) GATE(CLK_PCLK_SMMU_MFC_1, "pclk_smmu_mfc_1", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4233) ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4234) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4235) GATE(CLK_PCLK_SMMU_MFC_0, "pclk_smmu_mfc_0", "div_pclk_mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4236) ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4237) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4238) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4240) static const struct samsung_cmu_info mfc_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4241) .mux_clks = mfc_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4242) .nr_mux_clks = ARRAY_SIZE(mfc_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4243) .div_clks = mfc_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4244) .nr_div_clks = ARRAY_SIZE(mfc_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4245) .gate_clks = mfc_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4246) .nr_gate_clks = ARRAY_SIZE(mfc_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4247) .nr_clk_ids = MFC_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4248) .clk_regs = mfc_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4249) .nr_clk_regs = ARRAY_SIZE(mfc_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4250) .suspend_regs = mfc_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4251) .nr_suspend_regs = ARRAY_SIZE(mfc_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4252) .clk_name = "aclk_mfc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4253) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4255) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4256) * Register offset definitions for CMU_HEVC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4257) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4258) #define MUX_SEL_HEVC 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4259) #define MUX_ENABLE_HEVC 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4260) #define MUX_STAT_HEVC 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4261) #define DIV_HEVC 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4262) #define DIV_STAT_HEVC 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4263) #define ENABLE_ACLK_HEVC 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4264) #define ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4265) #define ENABLE_PCLK_HEVC 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4266) #define ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC 0x0904
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4267) #define ENABLE_IP_HEVC0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4268) #define ENABLE_IP_HEVC1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4269) #define ENABLE_IP_HEVC_SECURE_SMMU_HEVC 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4270)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4271) static const unsigned long hevc_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4272) MUX_SEL_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4273) MUX_ENABLE_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4274) DIV_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4275) ENABLE_ACLK_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4276) ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4277) ENABLE_PCLK_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4278) ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4279) ENABLE_IP_HEVC0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4280) ENABLE_IP_HEVC1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4281) ENABLE_IP_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4282) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4284) static const struct samsung_clk_reg_dump hevc_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4285) { MUX_SEL_HEVC, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4286) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4288) PNAME(mout_aclk_hevc_400_user_p) = { "oscclk", "aclk_hevc_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4289)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4290) static const struct samsung_mux_clock hevc_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4291) /* MUX_SEL_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4292) MUX(CLK_MOUT_ACLK_HEVC_400_USER, "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4293) mout_aclk_hevc_400_user_p, MUX_SEL_HEVC, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4294) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4295)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4296) static const struct samsung_div_clock hevc_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4297) /* DIV_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4298) DIV(CLK_DIV_PCLK_HEVC, "div_pclk_hevc", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4299) DIV_HEVC, 0, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4300) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4301)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4302) static const struct samsung_gate_clock hevc_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4303) /* ENABLE_ACLK_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4304) GATE(CLK_ACLK_BTS_HEVC_1, "aclk_bts_hevc_1", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4305) ENABLE_ACLK_HEVC, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4306) GATE(CLK_ACLK_BTS_HEVC_0, "aclk_bts_hevc_0", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4307) ENABLE_ACLK_HEVC, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4308) GATE(CLK_ACLK_AHB2APB_HEVCP, "aclk_ahb2apb_hevcp", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4309) ENABLE_ACLK_HEVC, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4310) GATE(CLK_ACLK_XIU_HEVCX, "aclk_xiu_hevcx", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4311) ENABLE_ACLK_HEVC, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4312) GATE(CLK_ACLK_HEVCNP_100, "aclk_hevcnp_100", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4313) ENABLE_ACLK_HEVC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4314) GATE(CLK_ACLK_HEVCND_400, "aclk_hevcnd_400", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4315) ENABLE_ACLK_HEVC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4316) GATE(CLK_ACLK_HEVC, "aclk_hevc", "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4317) ENABLE_ACLK_HEVC, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4319) /* ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4320) GATE(CLK_ACLK_SMMU_HEVC_1, "aclk_smmu_hevc_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4321) "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4322) ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4323) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4324) GATE(CLK_ACLK_SMMU_HEVC_0, "aclk_smmu_hevc_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4325) "mout_aclk_hevc_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4326) ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4327) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4329) /* ENABLE_PCLK_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4330) GATE(CLK_PCLK_BTS_HEVC_1, "pclk_bts_hevc_1", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4331) ENABLE_PCLK_HEVC, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4332) GATE(CLK_PCLK_BTS_HEVC_0, "pclk_bts_hevc_0", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4333) ENABLE_PCLK_HEVC, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4334) GATE(CLK_PCLK_PMU_HEVC, "pclk_pmu_hevc", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4335) ENABLE_PCLK_HEVC, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4336) GATE(CLK_PCLK_SYSREG_HEVC, "pclk_sysreg_hevc", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4337) ENABLE_PCLK_HEVC, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4338) GATE(CLK_PCLK_HEVC, "pclk_hevc", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4339) ENABLE_PCLK_HEVC, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4341) /* ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4342) GATE(CLK_PCLK_SMMU_HEVC_1, "pclk_smmu_hevc_1", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4343) ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4344) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4345) GATE(CLK_PCLK_SMMU_HEVC_0, "pclk_smmu_hevc_0", "div_pclk_hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4346) ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4347) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4348) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4350) static const struct samsung_cmu_info hevc_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4351) .mux_clks = hevc_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4352) .nr_mux_clks = ARRAY_SIZE(hevc_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4353) .div_clks = hevc_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4354) .nr_div_clks = ARRAY_SIZE(hevc_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4355) .gate_clks = hevc_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4356) .nr_gate_clks = ARRAY_SIZE(hevc_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4357) .nr_clk_ids = HEVC_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4358) .clk_regs = hevc_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4359) .nr_clk_regs = ARRAY_SIZE(hevc_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4360) .suspend_regs = hevc_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4361) .nr_suspend_regs = ARRAY_SIZE(hevc_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4362) .clk_name = "aclk_hevc_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4363) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4365) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4366) * Register offset definitions for CMU_ISP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4367) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4368) #define MUX_SEL_ISP 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4369) #define MUX_ENABLE_ISP 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4370) #define MUX_STAT_ISP 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4371) #define DIV_ISP 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4372) #define DIV_STAT_ISP 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4373) #define ENABLE_ACLK_ISP0 0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4374) #define ENABLE_ACLK_ISP1 0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4375) #define ENABLE_ACLK_ISP2 0x0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4376) #define ENABLE_PCLK_ISP 0x0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4377) #define ENABLE_SCLK_ISP 0x0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4378) #define ENABLE_IP_ISP0 0x0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4379) #define ENABLE_IP_ISP1 0x0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4380) #define ENABLE_IP_ISP2 0x0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4381) #define ENABLE_IP_ISP3 0x0b0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4382)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4383) static const unsigned long isp_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4384) MUX_SEL_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4385) MUX_ENABLE_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4386) DIV_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4387) ENABLE_ACLK_ISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4388) ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4389) ENABLE_ACLK_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4390) ENABLE_PCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4391) ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4392) ENABLE_IP_ISP0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4393) ENABLE_IP_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4394) ENABLE_IP_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4395) ENABLE_IP_ISP3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4396) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4398) static const struct samsung_clk_reg_dump isp_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4399) { MUX_SEL_ISP, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4400) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4401)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4402) PNAME(mout_aclk_isp_dis_400_user_p) = { "oscclk", "aclk_isp_dis_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4403) PNAME(mout_aclk_isp_400_user_p) = { "oscclk", "aclk_isp_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4404)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4405) static const struct samsung_mux_clock isp_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4406) /* MUX_SEL_ISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4407) MUX(CLK_MOUT_ACLK_ISP_DIS_400_USER, "mout_aclk_isp_dis_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4408) mout_aclk_isp_dis_400_user_p, MUX_SEL_ISP, 4, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4409) MUX(CLK_MOUT_ACLK_ISP_400_USER, "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4410) mout_aclk_isp_400_user_p, MUX_SEL_ISP, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4411) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4413) static const struct samsung_div_clock isp_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4414) /* DIV_ISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4415) DIV(CLK_DIV_PCLK_ISP_DIS, "div_pclk_isp_dis",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4416) "mout_aclk_isp_dis_400_user", DIV_ISP, 12, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4417) DIV(CLK_DIV_PCLK_ISP, "div_pclk_isp", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4418) DIV_ISP, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4419) DIV(CLK_DIV_ACLK_ISP_D_200, "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4420) "mout_aclk_isp_400_user", DIV_ISP, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4421) DIV(CLK_DIV_ACLK_ISP_C_200, "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4422) "mout_aclk_isp_400_user", DIV_ISP, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4423) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4425) static const struct samsung_gate_clock isp_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4426) /* ENABLE_ACLK_ISP0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4427) GATE(CLK_ACLK_ISP_D_GLUE, "aclk_isp_d_glue", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4428) ENABLE_ACLK_ISP0, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4429) GATE(CLK_ACLK_SCALERP, "aclk_scalerp", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4430) ENABLE_ACLK_ISP0, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4431) GATE(CLK_ACLK_3DNR, "aclk_3dnr", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4432) ENABLE_ACLK_ISP0, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4433) GATE(CLK_ACLK_DIS, "aclk_dis", "mout_aclk_isp_dis_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4434) ENABLE_ACLK_ISP0, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4435) GATE(CLK_ACLK_SCALERC, "aclk_scalerc", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4436) ENABLE_ACLK_ISP0, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4437) GATE(CLK_ACLK_DRC, "aclk_drc", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4438) ENABLE_ACLK_ISP0, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4439) GATE(CLK_ACLK_ISP, "aclk_isp", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4440) ENABLE_ACLK_ISP0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4442) /* ENABLE_ACLK_ISP1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4443) GATE(CLK_ACLK_AXIUS_SCALERP, "aclk_axius_scalerp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4444) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4445) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4446) GATE(CLK_ACLK_AXIUS_SCALERC, "aclk_axius_scalerc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4447) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4448) 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4449) GATE(CLK_ACLK_AXIUS_DRC, "aclk_axius_drc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4450) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4451) 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4452) GATE(CLK_ACLK_ASYNCAHBM_ISP2P, "aclk_asyncahbm_isp2p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4453) "div_pclk_isp", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4454) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4455) GATE(CLK_ACLK_ASYNCAHBM_ISP1P, "aclk_asyncahbm_isp1p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4456) "div_pclk_isp", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4457) 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4458) GATE(CLK_ACLK_ASYNCAXIS_DIS1, "aclk_asyncaxis_dis1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4459) "mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4460) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4461) GATE(CLK_ACLK_ASYNCAXIS_DIS0, "aclk_asyncaxis_dis0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4462) "mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4463) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4464) GATE(CLK_ACLK_ASYNCAXIM_DIS1, "aclk_asyncaxim_dis1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4465) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4466) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4467) GATE(CLK_ACLK_ASYNCAXIM_DIS0, "aclk_asyncaxim_dis0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4468) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4469) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4470) GATE(CLK_ACLK_ASYNCAXIM_ISP2P, "aclk_asyncaxim_isp2p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4471) "div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4472) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4473) GATE(CLK_ACLK_ASYNCAXIM_ISP1P, "aclk_asyncaxim_isp1p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4474) "div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4475) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4476) GATE(CLK_ACLK_AHB2APB_ISP2P, "aclk_ahb2apb_isp2p", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4477) ENABLE_ACLK_ISP1, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4478) GATE(CLK_ACLK_AHB2APB_ISP1P, "aclk_ahb2apb_isp1p", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4479) ENABLE_ACLK_ISP1, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4480) GATE(CLK_ACLK_AXI2APB_ISP2P, "aclk_axi2apb_isp2p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4481) "div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4482) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4483) GATE(CLK_ACLK_AXI2APB_ISP1P, "aclk_axi2apb_isp1p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4484) "div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4485) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4486) GATE(CLK_ACLK_XIU_ISPEX1, "aclk_xiu_ispex1", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4487) ENABLE_ACLK_ISP1, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4488) GATE(CLK_ACLK_XIU_ISPEX0, "aclk_xiu_ispex0", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4489) ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4490) GATE(CLK_ACLK_ISPND_400, "aclk_ispnd_400", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4491) ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4492)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4493) /* ENABLE_ACLK_ISP2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4494) GATE(CLK_ACLK_SMMU_SCALERP, "aclk_smmu_scalerp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4495) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4496) 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4497) GATE(CLK_ACLK_SMMU_3DNR, "aclk_smmu_3dnr", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4498) ENABLE_ACLK_ISP2, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4499) GATE(CLK_ACLK_SMMU_DIS1, "aclk_smmu_dis1", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4500) ENABLE_ACLK_ISP2, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4501) GATE(CLK_ACLK_SMMU_DIS0, "aclk_smmu_dis0", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4502) ENABLE_ACLK_ISP2, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4503) GATE(CLK_ACLK_SMMU_SCALERC, "aclk_smmu_scalerc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4504) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4505) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4506) GATE(CLK_ACLK_SMMU_DRC, "aclk_smmu_drc", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4507) ENABLE_ACLK_ISP2, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4508) GATE(CLK_ACLK_SMMU_ISP, "aclk_smmu_isp", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4509) ENABLE_ACLK_ISP2, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4510) GATE(CLK_ACLK_BTS_SCALERP, "aclk_bts_scalerp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4511) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4512) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4513) GATE(CLK_ACLK_BTS_3DR, "aclk_bts_3dnr", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4514) ENABLE_ACLK_ISP2, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4515) GATE(CLK_ACLK_BTS_DIS1, "aclk_bts_dis1", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4516) ENABLE_ACLK_ISP2, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4517) GATE(CLK_ACLK_BTS_DIS0, "aclk_bts_dis0", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4518) ENABLE_ACLK_ISP2, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4519) GATE(CLK_ACLK_BTS_SCALERC, "aclk_bts_scalerc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4520) "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4521) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4522) GATE(CLK_ACLK_BTS_DRC, "aclk_bts_drc", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4523) ENABLE_ACLK_ISP2, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4524) GATE(CLK_ACLK_BTS_ISP, "aclk_bts_isp", "mout_aclk_isp_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4525) ENABLE_ACLK_ISP2, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4527) /* ENABLE_PCLK_ISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4528) GATE(CLK_PCLK_SMMU_SCALERP, "pclk_smmu_scalerp", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4529) ENABLE_PCLK_ISP, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4530) GATE(CLK_PCLK_SMMU_3DNR, "pclk_smmu_3dnr", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4531) ENABLE_PCLK_ISP, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4532) GATE(CLK_PCLK_SMMU_DIS1, "pclk_smmu_dis1", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4533) ENABLE_PCLK_ISP, 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4534) GATE(CLK_PCLK_SMMU_DIS0, "pclk_smmu_dis0", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4535) ENABLE_PCLK_ISP, 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4536) GATE(CLK_PCLK_SMMU_SCALERC, "pclk_smmu_scalerc", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4537) ENABLE_PCLK_ISP, 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4538) GATE(CLK_PCLK_SMMU_DRC, "pclk_smmu_drc", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4539) ENABLE_PCLK_ISP, 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4540) GATE(CLK_PCLK_SMMU_ISP, "pclk_smmu_isp", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4541) ENABLE_PCLK_ISP, 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4542) GATE(CLK_PCLK_BTS_SCALERP, "pclk_bts_scalerp", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4543) ENABLE_PCLK_ISP, 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4544) GATE(CLK_PCLK_BTS_3DNR, "pclk_bts_3dnr", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4545) ENABLE_PCLK_ISP, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4546) GATE(CLK_PCLK_BTS_DIS1, "pclk_bts_dis1", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4547) ENABLE_PCLK_ISP, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4548) GATE(CLK_PCLK_BTS_DIS0, "pclk_bts_dis0", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4549) ENABLE_PCLK_ISP, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4550) GATE(CLK_PCLK_BTS_SCALERC, "pclk_bts_scalerc", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4551) ENABLE_PCLK_ISP, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4552) GATE(CLK_PCLK_BTS_DRC, "pclk_bts_drc", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4553) ENABLE_PCLK_ISP, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4554) GATE(CLK_PCLK_BTS_ISP, "pclk_bts_isp", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4555) ENABLE_PCLK_ISP, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4556) GATE(CLK_PCLK_ASYNCAXI_DIS1, "pclk_asyncaxi_dis1", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4557) ENABLE_PCLK_ISP, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4558) GATE(CLK_PCLK_ASYNCAXI_DIS0, "pclk_asyncaxi_dis0", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4559) ENABLE_PCLK_ISP, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4560) GATE(CLK_PCLK_PMU_ISP, "pclk_pmu_isp", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4561) ENABLE_PCLK_ISP, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4562) GATE(CLK_PCLK_SYSREG_ISP, "pclk_sysreg_isp", "div_pclk_isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4563) ENABLE_PCLK_ISP, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4564) GATE(CLK_PCLK_CMU_ISP_LOCAL, "pclk_cmu_isp_local",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4565) "div_aclk_isp_c_200", ENABLE_PCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4566) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4567) GATE(CLK_PCLK_SCALERP, "pclk_scalerp", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4568) ENABLE_PCLK_ISP, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4569) GATE(CLK_PCLK_3DNR, "pclk_3dnr", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4570) ENABLE_PCLK_ISP, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4571) GATE(CLK_PCLK_DIS_CORE, "pclk_dis_core", "div_pclk_isp_dis",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4572) ENABLE_PCLK_ISP, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4573) GATE(CLK_PCLK_DIS, "pclk_dis", "div_aclk_isp_d_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4574) ENABLE_PCLK_ISP, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4575) GATE(CLK_PCLK_SCALERC, "pclk_scalerc", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4576) ENABLE_PCLK_ISP, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4577) GATE(CLK_PCLK_DRC, "pclk_drc", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4578) ENABLE_PCLK_ISP, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4579) GATE(CLK_PCLK_ISP, "pclk_isp", "div_aclk_isp_c_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4580) ENABLE_PCLK_ISP, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4581)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4582) /* ENABLE_SCLK_ISP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4583) GATE(CLK_SCLK_PIXELASYNCS_DIS, "sclk_pixelasyncs_dis",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4584) "mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4585) 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4586) GATE(CLK_SCLK_PIXELASYNCM_DIS, "sclk_pixelasyncm_dis",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4587) "mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4588) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4589) GATE(CLK_SCLK_PIXELASYNCS_SCALERP, "sclk_pixelasyncs_scalerp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4590) "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4591) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4592) GATE(CLK_SCLK_PIXELASYNCM_ISPD, "sclk_pixelasyncm_ispd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4593) "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4594) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4595) GATE(CLK_SCLK_PIXELASYNCS_ISPC, "sclk_pixelasyncs_ispc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4596) "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4597) 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4598) GATE(CLK_SCLK_PIXELASYNCM_ISPC, "sclk_pixelasyncm_ispc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4599) "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4600) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4601) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4602)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4603) static const struct samsung_cmu_info isp_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4604) .mux_clks = isp_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4605) .nr_mux_clks = ARRAY_SIZE(isp_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4606) .div_clks = isp_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4607) .nr_div_clks = ARRAY_SIZE(isp_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4608) .gate_clks = isp_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4609) .nr_gate_clks = ARRAY_SIZE(isp_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4610) .nr_clk_ids = ISP_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4611) .clk_regs = isp_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4612) .nr_clk_regs = ARRAY_SIZE(isp_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4613) .suspend_regs = isp_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4614) .nr_suspend_regs = ARRAY_SIZE(isp_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4615) .clk_name = "aclk_isp_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4616) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4617)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4618) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4619) * Register offset definitions for CMU_CAM0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4620) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4621) #define MUX_SEL_CAM00 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4622) #define MUX_SEL_CAM01 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4623) #define MUX_SEL_CAM02 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4624) #define MUX_SEL_CAM03 0x020c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4625) #define MUX_SEL_CAM04 0x0210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4626) #define MUX_ENABLE_CAM00 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4627) #define MUX_ENABLE_CAM01 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4628) #define MUX_ENABLE_CAM02 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4629) #define MUX_ENABLE_CAM03 0x030c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4630) #define MUX_ENABLE_CAM04 0x0310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4631) #define MUX_STAT_CAM00 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4632) #define MUX_STAT_CAM01 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4633) #define MUX_STAT_CAM02 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4634) #define MUX_STAT_CAM03 0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4635) #define MUX_STAT_CAM04 0x0410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4636) #define MUX_IGNORE_CAM01 0x0504
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4637) #define DIV_CAM00 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4638) #define DIV_CAM01 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4639) #define DIV_CAM02 0x0608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4640) #define DIV_CAM03 0x060c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4641) #define DIV_STAT_CAM00 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4642) #define DIV_STAT_CAM01 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4643) #define DIV_STAT_CAM02 0x0708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4644) #define DIV_STAT_CAM03 0x070c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4645) #define ENABLE_ACLK_CAM00 0X0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4646) #define ENABLE_ACLK_CAM01 0X0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4647) #define ENABLE_ACLK_CAM02 0X0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4648) #define ENABLE_PCLK_CAM0 0X0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4649) #define ENABLE_SCLK_CAM0 0X0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4650) #define ENABLE_IP_CAM00 0X0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4651) #define ENABLE_IP_CAM01 0X0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4652) #define ENABLE_IP_CAM02 0X0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4653) #define ENABLE_IP_CAM03 0X0b0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4655) static const unsigned long cam0_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4656) MUX_SEL_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4657) MUX_SEL_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4658) MUX_SEL_CAM02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4659) MUX_SEL_CAM03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4660) MUX_SEL_CAM04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4661) MUX_ENABLE_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4662) MUX_ENABLE_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4663) MUX_ENABLE_CAM02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4664) MUX_ENABLE_CAM03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4665) MUX_ENABLE_CAM04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4666) MUX_IGNORE_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4667) DIV_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4668) DIV_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4669) DIV_CAM02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4670) DIV_CAM03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4671) ENABLE_ACLK_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4672) ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4673) ENABLE_ACLK_CAM02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4674) ENABLE_PCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4675) ENABLE_SCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4676) ENABLE_IP_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4677) ENABLE_IP_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4678) ENABLE_IP_CAM02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4679) ENABLE_IP_CAM03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4680) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4681)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4682) static const struct samsung_clk_reg_dump cam0_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4683) { MUX_SEL_CAM00, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4684) { MUX_SEL_CAM01, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4685) { MUX_SEL_CAM02, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4686) { MUX_SEL_CAM03, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4687) { MUX_SEL_CAM04, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4688) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4690) PNAME(mout_aclk_cam0_333_user_p) = { "oscclk", "aclk_cam0_333", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4691) PNAME(mout_aclk_cam0_400_user_p) = { "oscclk", "aclk_cam0_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4692) PNAME(mout_aclk_cam0_552_user_p) = { "oscclk", "aclk_cam0_552", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4693)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4694) PNAME(mout_phyclk_rxbyteclkhs0_s4_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4695) "phyclk_rxbyteclkhs0_s4_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4696) PNAME(mout_phyclk_rxbyteclkhs0_s2a_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4697) "phyclk_rxbyteclkhs0_s2a_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4698)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4699) PNAME(mout_aclk_lite_d_b_p) = { "mout_aclk_lite_d_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4700) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4701) PNAME(mout_aclk_lite_d_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4702) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4703) PNAME(mout_aclk_lite_b_b_p) = { "mout_aclk_lite_b_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4704) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4705) PNAME(mout_aclk_lite_b_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4706) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4707) PNAME(mout_aclk_lite_a_b_p) = { "mout_aclk_lite_a_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4708) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4709) PNAME(mout_aclk_lite_a_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4710) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4711) PNAME(mout_aclk_cam0_400_p) = { "mout_aclk_cam0_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4712) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4713)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4714) PNAME(mout_aclk_csis1_b_p) = { "mout_aclk_csis1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4715) "mout_aclk_cam0_333_user" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4716) PNAME(mout_aclk_csis1_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4717) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4718) PNAME(mout_aclk_csis0_b_p) = { "mout_aclk_csis0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4719) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4720) PNAME(mout_aclk_csis0_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4721) "mout_aclk-cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4722) PNAME(mout_aclk_3aa1_b_p) = { "mout_aclk_3aa1_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4723) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4724) PNAME(mout_aclk_3aa1_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4725) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4726) PNAME(mout_aclk_3aa0_b_p) = { "mout_aclk_3aa0_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4727) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4728) PNAME(mout_aclk_3aa0_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4729) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4730)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4731) PNAME(mout_sclk_lite_freecnt_c_p) = { "mout_sclk_lite_freecnt_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4732) "div_pclk_lite_d", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4733) PNAME(mout_sclk_lite_freecnt_b_p) = { "mout_sclk_lite_freecnt_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4734) "div_pclk_pixelasync_lite_c", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4735) PNAME(mout_sclk_lite_freecnt_a_p) = { "div_pclk_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4736) "div_pclk_lite_b", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4737) PNAME(mout_sclk_pixelasync_lite_c_b_p) = { "mout_sclk_pixelasync_lite_c_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4738) "mout_aclk_cam0_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4739) PNAME(mout_sclk_pixelasync_lite_c_a_p) = { "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4740) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4741) PNAME(mout_sclk_pixelasync_lite_c_init_b_p) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4742) "mout_sclk_pixelasync_lite_c_init_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4743) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4744) PNAME(mout_sclk_pixelasync_lite_c_init_a_p) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4745) "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4746) "mout_aclk_cam0_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4747)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4748) static const struct samsung_fixed_rate_clock cam0_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4749) FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S4_PHY, "phyclk_rxbyteclkhs0_s4_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4750) NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4751) FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S2A_PHY, "phyclk_rxbyteclkhs0_s2a_phy",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4752) NULL, 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4753) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4754)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4755) static const struct samsung_mux_clock cam0_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4756) /* MUX_SEL_CAM00 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4757) MUX(CLK_MOUT_ACLK_CAM0_333_USER, "mout_aclk_cam0_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4758) mout_aclk_cam0_333_user_p, MUX_SEL_CAM00, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4759) MUX(CLK_MOUT_ACLK_CAM0_400_USER, "mout_aclk_cam0_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4760) mout_aclk_cam0_400_user_p, MUX_SEL_CAM00, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4761) MUX(CLK_MOUT_ACLK_CAM0_552_USER, "mout_aclk_cam0_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4762) mout_aclk_cam0_552_user_p, MUX_SEL_CAM00, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4763)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4764) /* MUX_SEL_CAM01 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4765) MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S4_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4766) "mout_phyclk_rxbyteclkhs0_s4_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4767) mout_phyclk_rxbyteclkhs0_s4_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4768) MUX_SEL_CAM01, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4769) MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S2A_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4770) "mout_phyclk_rxbyteclkhs0_s2a_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4771) mout_phyclk_rxbyteclkhs0_s2a_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4772) MUX_SEL_CAM01, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4773)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4774) /* MUX_SEL_CAM02 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4775) MUX(CLK_MOUT_ACLK_LITE_D_B, "mout_aclk_lite_d_b", mout_aclk_lite_d_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4776) MUX_SEL_CAM02, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4777) MUX(CLK_MOUT_ACLK_LITE_D_A, "mout_aclk_lite_d_a", mout_aclk_lite_d_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4778) MUX_SEL_CAM02, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4779) MUX(CLK_MOUT_ACLK_LITE_B_B, "mout_aclk_lite_b_b", mout_aclk_lite_b_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4780) MUX_SEL_CAM02, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4781) MUX(CLK_MOUT_ACLK_LITE_B_A, "mout_aclk_lite_b_a", mout_aclk_lite_b_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4782) MUX_SEL_CAM02, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4783) MUX(CLK_MOUT_ACLK_LITE_A_B, "mout_aclk_lite_a_b", mout_aclk_lite_a_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4784) MUX_SEL_CAM02, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4785) MUX(CLK_MOUT_ACLK_LITE_A_A, "mout_aclk_lite_a_a", mout_aclk_lite_a_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4786) MUX_SEL_CAM02, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4787) MUX(CLK_MOUT_ACLK_CAM0_400, "mout_aclk_cam0_400", mout_aclk_cam0_400_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4788) MUX_SEL_CAM02, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4789)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4790) /* MUX_SEL_CAM03 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4791) MUX(CLK_MOUT_ACLK_CSIS1_B, "mout_aclk_csis1_b", mout_aclk_csis1_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4792) MUX_SEL_CAM03, 28, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4793) MUX(CLK_MOUT_ACLK_CSIS1_A, "mout_aclk_csis1_a", mout_aclk_csis1_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4794) MUX_SEL_CAM03, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4795) MUX(CLK_MOUT_ACLK_CSIS0_B, "mout_aclk_csis0_b", mout_aclk_csis0_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4796) MUX_SEL_CAM03, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4797) MUX(CLK_MOUT_ACLK_CSIS0_A, "mout_aclk_csis0_a", mout_aclk_csis0_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4798) MUX_SEL_CAM03, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4799) MUX(CLK_MOUT_ACLK_3AA1_B, "mout_aclk_3aa1_b", mout_aclk_3aa1_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4800) MUX_SEL_CAM03, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4801) MUX(CLK_MOUT_ACLK_3AA1_A, "mout_aclk_3aa1_a", mout_aclk_3aa1_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4802) MUX_SEL_CAM03, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4803) MUX(CLK_MOUT_ACLK_3AA0_B, "mout_aclk_3aa0_b", mout_aclk_3aa0_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4804) MUX_SEL_CAM03, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4805) MUX(CLK_MOUT_ACLK_3AA0_A, "mout_aclk_3aa0_a", mout_aclk_3aa0_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4806) MUX_SEL_CAM03, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4807)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4808) /* MUX_SEL_CAM04 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4809) MUX(CLK_MOUT_SCLK_LITE_FREECNT_C, "mout_sclk_lite_freecnt_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4810) mout_sclk_lite_freecnt_c_p, MUX_SEL_CAM04, 24, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4811) MUX(CLK_MOUT_SCLK_LITE_FREECNT_B, "mout_sclk_lite_freecnt_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4812) mout_sclk_lite_freecnt_b_p, MUX_SEL_CAM04, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4813) MUX(CLK_MOUT_SCLK_LITE_FREECNT_A, "mout_sclk_lite_freecnt_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4814) mout_sclk_lite_freecnt_a_p, MUX_SEL_CAM04, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4815) MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_B, "mout_sclk_pixelasync_lite_c_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4816) mout_sclk_pixelasync_lite_c_b_p, MUX_SEL_CAM04, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4817) MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_A, "mout_sclk_pixelasync_lite_c_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4818) mout_sclk_pixelasync_lite_c_a_p, MUX_SEL_CAM04, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4819) MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_INIT_B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4820) "mout_sclk_pixelasync_lite_c_init_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4821) mout_sclk_pixelasync_lite_c_init_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4822) MUX_SEL_CAM04, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4823) MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_INIT_A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4824) "mout_sclk_pixelasync_lite_c_init_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4825) mout_sclk_pixelasync_lite_c_init_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4826) MUX_SEL_CAM04, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4827) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4828)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4829) static const struct samsung_div_clock cam0_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4830) /* DIV_CAM00 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4831) DIV(CLK_DIV_PCLK_CAM0_50, "div_pclk_cam0_50", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4832) DIV_CAM00, 8, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4833) DIV(CLK_DIV_ACLK_CAM0_200, "div_aclk_cam0_200", "mout_aclk_cam0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4834) DIV_CAM00, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4835) DIV(CLK_DIV_ACLK_CAM0_BUS_400, "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4836) "mout_aclk_cam0_400", DIV_CAM00, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4837)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4838) /* DIV_CAM01 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4839) DIV(CLK_DIV_PCLK_LITE_D, "div_pclk_lite_d", "div_aclk_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4840) DIV_CAM01, 20, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4841) DIV(CLK_DIV_ACLK_LITE_D, "div_aclk_lite_d", "mout_aclk_lite_d_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4842) DIV_CAM01, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4843) DIV(CLK_DIV_PCLK_LITE_B, "div_pclk_lite_b", "div_aclk_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4844) DIV_CAM01, 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4845) DIV(CLK_DIV_ACLK_LITE_B, "div_aclk_lite_b", "mout_aclk_lite_b_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4846) DIV_CAM01, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4847) DIV(CLK_DIV_PCLK_LITE_A, "div_pclk_lite_a", "div_aclk_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4848) DIV_CAM01, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4849) DIV(CLK_DIV_ACLK_LITE_A, "div_aclk_lite_a", "mout_aclk_lite_a_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4850) DIV_CAM01, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4851)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4852) /* DIV_CAM02 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4853) DIV(CLK_DIV_ACLK_CSIS1, "div_aclk_csis1", "mout_aclk_csis1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4854) DIV_CAM02, 20, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4855) DIV(CLK_DIV_ACLK_CSIS0, "div_aclk_csis0", "mout_aclk_csis0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4856) DIV_CAM02, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4857) DIV(CLK_DIV_PCLK_3AA1, "div_pclk_3aa1", "div_aclk_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4858) DIV_CAM02, 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4859) DIV(CLK_DIV_ACLK_3AA1, "div_aclk_3aa1", "mout_aclk_3aa1_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4860) DIV_CAM02, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4861) DIV(CLK_DIV_PCLK_3AA0, "div_pclk_3aa0", "div_aclk_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4862) DIV_CAM02, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4863) DIV(CLK_DIV_ACLK_3AA0, "div_aclk_3aa0", "mout_aclk_3aa0_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4864) DIV_CAM02, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4865)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4866) /* DIV_CAM03 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4867) DIV(CLK_DIV_SCLK_PIXELASYNC_LITE_C, "div_sclk_pixelasync_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4868) "mout_sclk_pixelasync_lite_c_b", DIV_CAM03, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4869) DIV(CLK_DIV_PCLK_PIXELASYNC_LITE_C, "div_pclk_pixelasync_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4870) "div_sclk_pixelasync_lite_c_init", DIV_CAM03, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4871) DIV(CLK_DIV_SCLK_PIXELASYNC_LITE_C_INIT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4872) "div_sclk_pixelasync_lite_c_init",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4873) "mout_sclk_pixelasync_lite_c_init_b", DIV_CAM03, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4874) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4875)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4876) static const struct samsung_gate_clock cam0_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4877) /* ENABLE_ACLK_CAM00 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4878) GATE(CLK_ACLK_CSIS1, "aclk_csis1", "div_aclk_csis1", ENABLE_ACLK_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4879) 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4880) GATE(CLK_ACLK_CSIS0, "aclk_csis0", "div_aclk_csis0", ENABLE_ACLK_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4881) 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4882) GATE(CLK_ACLK_3AA1, "aclk_3aa1", "div_aclk_3aa1", ENABLE_ACLK_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4883) 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4884) GATE(CLK_ACLK_3AA0, "aclk_3aa0", "div_aclk_3aa0", ENABLE_ACLK_CAM00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4885) 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4886) GATE(CLK_ACLK_LITE_D, "aclk_lite_d", "div_aclk_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4887) ENABLE_ACLK_CAM00, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4888) GATE(CLK_ACLK_LITE_B, "aclk_lite_b", "div_aclk_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4889) ENABLE_ACLK_CAM00, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4890) GATE(CLK_ACLK_LITE_A, "aclk_lite_a", "div_aclk_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4891) ENABLE_ACLK_CAM00, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4892)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4893) /* ENABLE_ACLK_CAM01 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4894) GATE(CLK_ACLK_AHBSYNCDN, "aclk_ahbsyncdn", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4895) ENABLE_ACLK_CAM01, 31, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4896) GATE(CLK_ACLK_AXIUS_LITE_D, "aclk_axius_lite_d", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4897) ENABLE_ACLK_CAM01, 30, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4898) GATE(CLK_ACLK_AXIUS_LITE_B, "aclk_axius_lite_b", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4899) ENABLE_ACLK_CAM01, 29, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4900) GATE(CLK_ACLK_AXIUS_LITE_A, "aclk_axius_lite_a", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4901) ENABLE_ACLK_CAM01, 28, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4902) GATE(CLK_ACLK_ASYNCAPBM_3AA1, "aclk_asyncapbm_3aa1", "div_pclk_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4903) ENABLE_ACLK_CAM01, 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4904) GATE(CLK_ACLK_ASYNCAPBS_3AA1, "aclk_asyncapbs_3aa1", "div_aclk_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4905) ENABLE_ACLK_CAM01, 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4906) GATE(CLK_ACLK_ASYNCAPBM_3AA0, "aclk_asyncapbm_3aa0", "div_pclk_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4907) ENABLE_ACLK_CAM01, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4908) GATE(CLK_ACLK_ASYNCAPBS_3AA0, "aclk_asyncapbs_3aa0", "div_aclk_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4909) ENABLE_ACLK_CAM01, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4910) GATE(CLK_ACLK_ASYNCAPBM_LITE_D, "aclk_asyncapbm_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4911) "div_pclk_lite_d", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4912) 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4913) GATE(CLK_ACLK_ASYNCAPBS_LITE_D, "aclk_asyncapbs_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4914) "div_aclk_cam0_200", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4915) 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4916) GATE(CLK_ACLK_ASYNCAPBM_LITE_B, "aclk_asyncapbm_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4917) "div_pclk_lite_b", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4918) 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4919) GATE(CLK_ACLK_ASYNCAPBS_LITE_B, "aclk_asyncapbs_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4920) "div_aclk_cam0_200", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4921) 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4922) GATE(CLK_ACLK_ASYNCAPBM_LITE_A, "aclk_asyncapbm_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4923) "div_pclk_lite_a", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4924) 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4925) GATE(CLK_ACLK_ASYNCAPBS_LITE_A, "aclk_asyncapbs_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4926) "div_aclk_cam0_200", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4927) 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4928) GATE(CLK_ACLK_ASYNCAXIM_ISP0P, "aclk_asyncaxim_isp0p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4929) "div_aclk_cam0_200", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4930) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4931) GATE(CLK_ACLK_ASYNCAXIM_3AA1, "aclk_asyncaxim_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4932) "div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4933) 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4934) GATE(CLK_ACLK_ASYNCAXIS_3AA1, "aclk_asyncaxis_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4935) "div_aclk_3aa1", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4936) 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4937) GATE(CLK_ACLK_ASYNCAXIM_3AA0, "aclk_asyncaxim_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4938) "div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4939) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4940) GATE(CLK_ACLK_ASYNCAXIS_3AA0, "aclk_asyncaxis_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4941) "div_aclk_3aa0", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4942) 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4943) GATE(CLK_ACLK_ASYNCAXIM_LITE_D, "aclk_asyncaxim_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4944) "div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4945) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4946) GATE(CLK_ACLK_ASYNCAXIS_LITE_D, "aclk_asyncaxis_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4947) "div_aclk_lite_d", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4948) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4949) GATE(CLK_ACLK_ASYNCAXIM_LITE_B, "aclk_asyncaxim_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4950) "div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4951) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4952) GATE(CLK_ACLK_ASYNCAXIS_LITE_B, "aclk_asyncaxis_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4953) "div_aclk_lite_b", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4954) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4955) GATE(CLK_ACLK_ASYNCAXIM_LITE_A, "aclk_asyncaxim_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4956) "div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4957) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4958) GATE(CLK_ACLK_ASYNCAXIS_LITE_A, "aclk_asyncaxis_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4959) "div_aclk_lite_a", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4960) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4961) GATE(CLK_ACLK_AHB2APB_ISPSFRP, "aclk_ahb2apb_ispsfrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4962) "div_pclk_cam0_50", ENABLE_ACLK_CAM01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4963) 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4964) GATE(CLK_ACLK_AXI2APB_ISP0P, "aclk_axi2apb_isp0p", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4965) ENABLE_ACLK_CAM01, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4966) GATE(CLK_ACLK_AXI2AHB_ISP0P, "aclk_axi2ahb_isp0p", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4967) ENABLE_ACLK_CAM01, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4968) GATE(CLK_ACLK_XIU_IS0X, "aclk_xiu_is0x", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4969) ENABLE_ACLK_CAM01, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4970) GATE(CLK_ACLK_XIU_ISP0EX, "aclk_xiu_isp0ex", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4971) ENABLE_ACLK_CAM01, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4972) GATE(CLK_ACLK_CAM0NP_276, "aclk_cam0np_276", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4973) ENABLE_ACLK_CAM01, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4974) GATE(CLK_ACLK_CAM0ND_400, "aclk_cam0nd_400", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4975) ENABLE_ACLK_CAM01, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4977) /* ENABLE_ACLK_CAM02 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4978) GATE(CLK_ACLK_SMMU_3AA1, "aclk_smmu_3aa1", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4979) ENABLE_ACLK_CAM02, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4980) GATE(CLK_ACLK_SMMU_3AA0, "aclk_smmu_3aa0", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4981) ENABLE_ACLK_CAM02, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4982) GATE(CLK_ACLK_SMMU_LITE_D, "aclk_smmu_lite_d", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4983) ENABLE_ACLK_CAM02, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4984) GATE(CLK_ACLK_SMMU_LITE_B, "aclk_smmu_lite_b", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4985) ENABLE_ACLK_CAM02, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4986) GATE(CLK_ACLK_SMMU_LITE_A, "aclk_smmu_lite_a", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4987) ENABLE_ACLK_CAM02, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4988) GATE(CLK_ACLK_BTS_3AA1, "aclk_bts_3aa1", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4989) ENABLE_ACLK_CAM02, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4990) GATE(CLK_ACLK_BTS_3AA0, "aclk_bts_3aa0", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4991) ENABLE_ACLK_CAM02, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4992) GATE(CLK_ACLK_BTS_LITE_D, "aclk_bts_lite_d", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4993) ENABLE_ACLK_CAM02, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4994) GATE(CLK_ACLK_BTS_LITE_B, "aclk_bts_lite_b", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4995) ENABLE_ACLK_CAM02, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4996) GATE(CLK_ACLK_BTS_LITE_A, "aclk_bts_lite_a", "div_aclk_cam0_bus_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4997) ENABLE_ACLK_CAM02, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4998)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4999) /* ENABLE_PCLK_CAM0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5000) GATE(CLK_PCLK_SMMU_3AA1, "pclk_smmu_3aa1", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5001) ENABLE_PCLK_CAM0, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5002) GATE(CLK_PCLK_SMMU_3AA0, "pclk_smmu_3aa0", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5003) ENABLE_PCLK_CAM0, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5004) GATE(CLK_PCLK_SMMU_LITE_D, "pclk_smmu_lite_d", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5005) ENABLE_PCLK_CAM0, 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5006) GATE(CLK_PCLK_SMMU_LITE_B, "pclk_smmu_lite_b", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5007) ENABLE_PCLK_CAM0, 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5008) GATE(CLK_PCLK_SMMU_LITE_A, "pclk_smmu_lite_a", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5009) ENABLE_PCLK_CAM0, 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5010) GATE(CLK_PCLK_BTS_3AA1, "pclk_bts_3aa1", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5011) ENABLE_PCLK_CAM0, 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5012) GATE(CLK_PCLK_BTS_3AA0, "pclk_bts_3aa0", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5013) ENABLE_PCLK_CAM0, 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5014) GATE(CLK_PCLK_BTS_LITE_D, "pclk_bts_lite_d", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5015) ENABLE_PCLK_CAM0, 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5016) GATE(CLK_PCLK_BTS_LITE_B, "pclk_bts_lite_b", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5017) ENABLE_PCLK_CAM0, 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5018) GATE(CLK_PCLK_BTS_LITE_A, "pclk_bts_lite_a", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5019) ENABLE_PCLK_CAM0, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5020) GATE(CLK_PCLK_ASYNCAXI_CAM1, "pclk_asyncaxi_cam1", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5021) ENABLE_PCLK_CAM0, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5022) GATE(CLK_PCLK_ASYNCAXI_3AA1, "pclk_asyncaxi_3aa1", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5023) ENABLE_PCLK_CAM0, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5024) GATE(CLK_PCLK_ASYNCAXI_3AA0, "pclk_asyncaxi_3aa0", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5025) ENABLE_PCLK_CAM0, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5026) GATE(CLK_PCLK_ASYNCAXI_LITE_D, "pclk_asyncaxi_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5027) "div_pclk_cam0_50", ENABLE_PCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5028) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5029) GATE(CLK_PCLK_ASYNCAXI_LITE_B, "pclk_asyncaxi_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5030) "div_pclk_cam0_50", ENABLE_PCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5031) 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5032) GATE(CLK_PCLK_ASYNCAXI_LITE_A, "pclk_asyncaxi_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5033) "div_pclk_cam0_50", ENABLE_PCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5034) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5035) GATE(CLK_PCLK_PMU_CAM0, "pclk_pmu_cam0", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5036) ENABLE_PCLK_CAM0, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5037) GATE(CLK_PCLK_SYSREG_CAM0, "pclk_sysreg_cam0", "div_pclk_cam0_50",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5038) ENABLE_PCLK_CAM0, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5039) GATE(CLK_PCLK_CMU_CAM0_LOCAL, "pclk_cmu_cam0_local",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5040) "div_aclk_cam0_200", ENABLE_PCLK_CAM0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5041) 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5042) GATE(CLK_PCLK_CSIS1, "pclk_csis1", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5043) ENABLE_PCLK_CAM0, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5044) GATE(CLK_PCLK_CSIS0, "pclk_csis0", "div_aclk_cam0_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5045) ENABLE_PCLK_CAM0, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5046) GATE(CLK_PCLK_3AA1, "pclk_3aa1", "div_pclk_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5047) ENABLE_PCLK_CAM0, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5048) GATE(CLK_PCLK_3AA0, "pclk_3aa0", "div_pclk_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5049) ENABLE_PCLK_CAM0, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5050) GATE(CLK_PCLK_LITE_D, "pclk_lite_d", "div_pclk_lite_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5051) ENABLE_PCLK_CAM0, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5052) GATE(CLK_PCLK_LITE_B, "pclk_lite_b", "div_pclk_lite_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5053) ENABLE_PCLK_CAM0, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5054) GATE(CLK_PCLK_LITE_A, "pclk_lite_a", "div_pclk_lite_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5055) ENABLE_PCLK_CAM0, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5056)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5057) /* ENABLE_SCLK_CAM0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5058) GATE(CLK_PHYCLK_RXBYTECLKHS0_S4, "phyclk_rxbyteclkhs0_s4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5059) "mout_phyclk_rxbyteclkhs0_s4_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5060) ENABLE_SCLK_CAM0, 8, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5061) GATE(CLK_PHYCLK_RXBYTECLKHS0_S2A, "phyclk_rxbyteclkhs0_s2a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5062) "mout_phyclk_rxbyteclkhs0_s2a_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5063) ENABLE_SCLK_CAM0, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5064) GATE(CLK_SCLK_LITE_FREECNT, "sclk_lite_freecnt",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5065) "mout_sclk_lite_freecnt_c", ENABLE_SCLK_CAM0, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5066) GATE(CLK_SCLK_PIXELASYNCM_3AA1, "sclk_pixelasycm_3aa1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5067) "div_aclk_3aa1", ENABLE_SCLK_CAM0, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5068) GATE(CLK_SCLK_PIXELASYNCM_3AA0, "sclk_pixelasycm_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5069) "div_aclk_3aa0", ENABLE_SCLK_CAM0, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5070) GATE(CLK_SCLK_PIXELASYNCS_3AA0, "sclk_pixelasycs_3aa0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5071) "div_aclk_3aa0", ENABLE_SCLK_CAM0, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5072) GATE(CLK_SCLK_PIXELASYNCM_LITE_C, "sclk_pixelasyncm_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5073) "div_sclk_pixelasync_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5074) ENABLE_SCLK_CAM0, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5075) GATE(CLK_SCLK_PIXELASYNCM_LITE_C_INIT, "sclk_pixelasyncm_lite_c_init",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5076) "div_sclk_pixelasync_lite_c_init",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5077) ENABLE_SCLK_CAM0, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5078) GATE(CLK_SCLK_PIXELASYNCS_LITE_C_INIT, "sclk_pixelasyncs_lite_c_init",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5079) "div_sclk_pixelasync_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5080) ENABLE_SCLK_CAM0, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5081) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5082)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5083) static const struct samsung_cmu_info cam0_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5084) .mux_clks = cam0_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5085) .nr_mux_clks = ARRAY_SIZE(cam0_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5086) .div_clks = cam0_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5087) .nr_div_clks = ARRAY_SIZE(cam0_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5088) .gate_clks = cam0_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5089) .nr_gate_clks = ARRAY_SIZE(cam0_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5090) .fixed_clks = cam0_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5091) .nr_fixed_clks = ARRAY_SIZE(cam0_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5092) .nr_clk_ids = CAM0_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5093) .clk_regs = cam0_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5094) .nr_clk_regs = ARRAY_SIZE(cam0_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5095) .suspend_regs = cam0_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5096) .nr_suspend_regs = ARRAY_SIZE(cam0_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5097) .clk_name = "aclk_cam0_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5098) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5099)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5100) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5101) * Register offset definitions for CMU_CAM1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5102) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5103) #define MUX_SEL_CAM10 0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5104) #define MUX_SEL_CAM11 0x0204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5105) #define MUX_SEL_CAM12 0x0208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5106) #define MUX_ENABLE_CAM10 0x0300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5107) #define MUX_ENABLE_CAM11 0x0304
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5108) #define MUX_ENABLE_CAM12 0x0308
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5109) #define MUX_STAT_CAM10 0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5110) #define MUX_STAT_CAM11 0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5111) #define MUX_STAT_CAM12 0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5112) #define MUX_IGNORE_CAM11 0x0504
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5113) #define DIV_CAM10 0x0600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5114) #define DIV_CAM11 0x0604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5115) #define DIV_STAT_CAM10 0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5116) #define DIV_STAT_CAM11 0x0704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5117) #define ENABLE_ACLK_CAM10 0X0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5118) #define ENABLE_ACLK_CAM11 0X0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5119) #define ENABLE_ACLK_CAM12 0X0808
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5120) #define ENABLE_PCLK_CAM1 0X0900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5121) #define ENABLE_SCLK_CAM1 0X0a00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5122) #define ENABLE_IP_CAM10 0X0b00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5123) #define ENABLE_IP_CAM11 0X0b04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5124) #define ENABLE_IP_CAM12 0X0b08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5126) static const unsigned long cam1_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5127) MUX_SEL_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5128) MUX_SEL_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5129) MUX_SEL_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5130) MUX_ENABLE_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5131) MUX_ENABLE_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5132) MUX_ENABLE_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5133) MUX_IGNORE_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5134) DIV_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5135) DIV_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5136) ENABLE_ACLK_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5137) ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5138) ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5139) ENABLE_PCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5140) ENABLE_SCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5141) ENABLE_IP_CAM10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5142) ENABLE_IP_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5143) ENABLE_IP_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5144) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5146) static const struct samsung_clk_reg_dump cam1_suspend_regs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5147) { MUX_SEL_CAM10, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5148) { MUX_SEL_CAM11, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5149) { MUX_SEL_CAM12, 0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5150) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5152) PNAME(mout_sclk_isp_uart_user_p) = { "oscclk", "sclk_isp_uart_cam1", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5153) PNAME(mout_sclk_isp_spi1_user_p) = { "oscclk", "sclk_isp_spi1_cam1", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5154) PNAME(mout_sclk_isp_spi0_user_p) = { "oscclk", "sclk_isp_spi0_cam1", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5156) PNAME(mout_aclk_cam1_333_user_p) = { "oscclk", "aclk_cam1_333", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5157) PNAME(mout_aclk_cam1_400_user_p) = { "oscclk", "aclk_cam1_400", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5158) PNAME(mout_aclk_cam1_552_user_p) = { "oscclk", "aclk_cam1_552", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5160) PNAME(mout_phyclk_rxbyteclkhs0_s2b_user_p) = { "oscclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5161) "phyclk_rxbyteclkhs0_s2b_phy", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5163) PNAME(mout_aclk_csis2_b_p) = { "mout_aclk_csis2_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5164) "mout_aclk_cam1_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5165) PNAME(mout_aclk_csis2_a_p) = { "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5166) "mout_aclk_cam1_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5168) PNAME(mout_aclk_fd_b_p) = { "mout_aclk_fd_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5169) "mout_aclk_cam1_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5170) PNAME(mout_aclk_fd_a_p) = { "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5171) "mout_aclk_cam1_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5173) PNAME(mout_aclk_lite_c_b_p) = { "mout_aclk_lite_c_a",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5174) "mout_aclk_cam1_333_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5175) PNAME(mout_aclk_lite_c_a_p) = { "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5176) "mout_aclk_cam1_400_user", };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5178) static const struct samsung_fixed_rate_clock cam1_fixed_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5179) FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S2B, "phyclk_rxbyteclkhs0_s2b_phy", NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5180) 0, 100000000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5181) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5183) static const struct samsung_mux_clock cam1_mux_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5184) /* MUX_SEL_CAM10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5185) MUX(CLK_MOUT_SCLK_ISP_UART_USER, "mout_sclk_isp_uart_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5186) mout_sclk_isp_uart_user_p, MUX_SEL_CAM10, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5187) MUX(CLK_MOUT_SCLK_ISP_SPI1_USER, "mout_sclk_isp_spi1_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5188) mout_sclk_isp_spi1_user_p, MUX_SEL_CAM10, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5189) MUX(CLK_MOUT_SCLK_ISP_SPI0_USER, "mout_sclk_isp_spi0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5190) mout_sclk_isp_spi0_user_p, MUX_SEL_CAM10, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5191) MUX(CLK_MOUT_ACLK_CAM1_333_USER, "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5192) mout_aclk_cam1_333_user_p, MUX_SEL_CAM10, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5193) MUX(CLK_MOUT_ACLK_CAM1_400_USER, "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5194) mout_aclk_cam1_400_user_p, MUX_SEL_CAM10, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5195) MUX(CLK_MOUT_ACLK_CAM1_552_USER, "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5196) mout_aclk_cam1_552_user_p, MUX_SEL_CAM10, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5198) /* MUX_SEL_CAM11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5199) MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S2B_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5200) "mout_phyclk_rxbyteclkhs0_s2b_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5201) mout_phyclk_rxbyteclkhs0_s2b_user_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5202) MUX_SEL_CAM11, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5204) /* MUX_SEL_CAM12 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5205) MUX(CLK_MOUT_ACLK_CSIS2_B, "mout_aclk_csis2_b", mout_aclk_csis2_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5206) MUX_SEL_CAM12, 20, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5207) MUX(CLK_MOUT_ACLK_CSIS2_A, "mout_aclk_csis2_a", mout_aclk_csis2_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5208) MUX_SEL_CAM12, 16, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5209) MUX(CLK_MOUT_ACLK_FD_B, "mout_aclk_fd_b", mout_aclk_fd_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5210) MUX_SEL_CAM12, 12, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5211) MUX(CLK_MOUT_ACLK_FD_A, "mout_aclk_fd_a", mout_aclk_fd_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5212) MUX_SEL_CAM12, 8, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5213) MUX(CLK_MOUT_ACLK_LITE_C_B, "mout_aclk_lite_c_b", mout_aclk_lite_c_b_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5214) MUX_SEL_CAM12, 4, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5215) MUX(CLK_MOUT_ACLK_LITE_C_A, "mout_aclk_lite_c_a", mout_aclk_lite_c_a_p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5216) MUX_SEL_CAM12, 0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5217) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5219) static const struct samsung_div_clock cam1_div_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5220) /* DIV_CAM10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5221) DIV(CLK_DIV_SCLK_ISP_MPWM, "div_sclk_isp_mpwm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5222) "div_pclk_cam1_83", DIV_CAM10, 16, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5223) DIV(CLK_DIV_PCLK_CAM1_83, "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5224) "mout_aclk_cam1_333_user", DIV_CAM10, 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5225) DIV(CLK_DIV_PCLK_CAM1_166, "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5226) "mout_aclk_cam1_333_user", DIV_CAM10, 8, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5227) DIV(CLK_DIV_PCLK_DBG_CAM1, "div_pclk_dbg_cam1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5228) "mout_aclk_cam1_552_user", DIV_CAM10, 4, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5229) DIV(CLK_DIV_ATCLK_CAM1, "div_atclk_cam1", "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5230) DIV_CAM10, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5232) /* DIV_CAM11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5233) DIV(CLK_DIV_ACLK_CSIS2, "div_aclk_csis2", "mout_aclk_csis2_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5234) DIV_CAM11, 16, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5235) DIV(CLK_DIV_PCLK_FD, "div_pclk_fd", "div_aclk_fd", DIV_CAM11, 12, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5236) DIV(CLK_DIV_ACLK_FD, "div_aclk_fd", "mout_aclk_fd_b", DIV_CAM11, 8, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5237) DIV(CLK_DIV_PCLK_LITE_C, "div_pclk_lite_c", "div_aclk_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5238) DIV_CAM11, 4, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5239) DIV(CLK_DIV_ACLK_LITE_C, "div_aclk_lite_c", "mout_aclk_lite_c_b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5240) DIV_CAM11, 0, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5241) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5243) static const struct samsung_gate_clock cam1_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5244) /* ENABLE_ACLK_CAM10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5245) GATE(CLK_ACLK_ISP_GIC, "aclk_isp_gic", "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5246) ENABLE_ACLK_CAM10, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5247) GATE(CLK_ACLK_FD, "aclk_fd", "div_aclk_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5248) ENABLE_ACLK_CAM10, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5249) GATE(CLK_ACLK_LITE_C, "aclk_lite_c", "div_aclk_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5250) ENABLE_ACLK_CAM10, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5251) GATE(CLK_ACLK_CSIS2, "aclk_csis2", "div_aclk_csis2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5252) ENABLE_ACLK_CAM10, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5254) /* ENABLE_ACLK_CAM11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5255) GATE(CLK_ACLK_ASYNCAPBM_FD, "aclk_asyncapbm_fd", "div_pclk_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5256) ENABLE_ACLK_CAM11, 29, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5257) GATE(CLK_ACLK_ASYNCAPBS_FD, "aclk_asyncapbs_fd", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5258) ENABLE_ACLK_CAM11, 28, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5259) GATE(CLK_ACLK_ASYNCAPBM_LITE_C, "aclk_asyncapbm_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5260) "div_pclk_lite_c", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5261) 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5262) GATE(CLK_ACLK_ASYNCAPBS_LITE_C, "aclk_asyncapbs_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5263) "div_pclk_cam1_166", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5264) 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5265) GATE(CLK_ACLK_ASYNCAHBS_SFRISP2H2, "aclk_asyncahbs_sfrisp2h2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5266) "div_pclk_cam1_83", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5267) 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5268) GATE(CLK_ACLK_ASYNCAHBS_SFRISP2H1, "aclk_asyncahbs_sfrisp2h1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5269) "div_pclk_cam1_83", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5270) 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5271) GATE(CLK_ACLK_ASYNCAXIM_CA5, "aclk_asyncaxim_ca5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5272) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5273) 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5274) GATE(CLK_ACLK_ASYNCAXIS_CA5, "aclk_asyncaxis_ca5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5275) "mout_aclk_cam1_552_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5276) 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5277) GATE(CLK_ACLK_ASYNCAXIS_ISPX2, "aclk_asyncaxis_ispx2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5278) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5279) 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5280) GATE(CLK_ACLK_ASYNCAXIS_ISPX1, "aclk_asyncaxis_ispx1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5281) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5282) 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5283) GATE(CLK_ACLK_ASYNCAXIS_ISPX0, "aclk_asyncaxis_ispx0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5284) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5285) 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5286) GATE(CLK_ACLK_ASYNCAXIM_ISPEX, "aclk_asyncaxim_ispex",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5287) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5288) 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5289) GATE(CLK_ACLK_ASYNCAXIM_ISP3P, "aclk_asyncaxim_isp3p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5290) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5291) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5292) GATE(CLK_ACLK_ASYNCAXIS_ISP3P, "aclk_asyncaxis_isp3p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5293) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5294) 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5295) GATE(CLK_ACLK_ASYNCAXIM_FD, "aclk_asyncaxim_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5296) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5297) 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5298) GATE(CLK_ACLK_ASYNCAXIS_FD, "aclk_asyncaxis_fd", "div_aclk_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5299) ENABLE_ACLK_CAM11, 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5300) GATE(CLK_ACLK_ASYNCAXIM_LITE_C, "aclk_asyncaxim_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5301) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5302) 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5303) GATE(CLK_ACLK_ASYNCAXIS_LITE_C, "aclk_asyncaxis_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5304) "div_aclk_lite_c", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5305) 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5306) GATE(CLK_ACLK_AHB2APB_ISP5P, "aclk_ahb2apb_isp5p", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5307) ENABLE_ACLK_CAM11, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5308) GATE(CLK_ACLK_AHB2APB_ISP3P, "aclk_ahb2apb_isp3p", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5309) ENABLE_ACLK_CAM11, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5310) GATE(CLK_ACLK_AXI2APB_ISP3P, "aclk_axi2apb_isp3p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5311) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5312) 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5313) GATE(CLK_ACLK_AHB_SFRISP2H, "aclk_ahb_sfrisp2h", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5314) ENABLE_ACLK_CAM11, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5315) GATE(CLK_ACLK_AXI_ISP_HX_R, "aclk_axi_isp_hx_r", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5316) ENABLE_ACLK_CAM11, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5317) GATE(CLK_ACLK_AXI_ISP_CX_R, "aclk_axi_isp_cx_r", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5318) ENABLE_ACLK_CAM11, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5319) GATE(CLK_ACLK_AXI_ISP_HX, "aclk_axi_isp_hx", "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5320) ENABLE_ACLK_CAM11, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5321) GATE(CLK_ACLK_AXI_ISP_CX, "aclk_axi_isp_cx", "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5322) ENABLE_ACLK_CAM11, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5323) GATE(CLK_ACLK_XIU_ISPX, "aclk_xiu_ispx", "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5324) ENABLE_ACLK_CAM11, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5325) GATE(CLK_ACLK_XIU_ISPEX, "aclk_xiu_ispex", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5326) ENABLE_ACLK_CAM11, 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5327) GATE(CLK_ACLK_CAM1NP_333, "aclk_cam1np_333", "mout_aclk_cam1_333_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5328) ENABLE_ACLK_CAM11, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5329) GATE(CLK_ACLK_CAM1ND_400, "aclk_cam1nd_400", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5330) ENABLE_ACLK_CAM11, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5331)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5332) /* ENABLE_ACLK_CAM12 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5333) GATE(CLK_ACLK_SMMU_ISPCPU, "aclk_smmu_ispcpu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5334) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5335) 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5336) GATE(CLK_ACLK_SMMU_FD, "aclk_smmu_fd", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5337) ENABLE_ACLK_CAM12, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5338) GATE(CLK_ACLK_SMMU_LITE_C, "aclk_smmu_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5339) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5340) 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5341) GATE(CLK_ACLK_BTS_ISP3P, "aclk_bts_isp3p", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5342) ENABLE_ACLK_CAM12, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5343) GATE(CLK_ACLK_BTS_FD, "aclk_bts_fd", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5344) ENABLE_ACLK_CAM12, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5345) GATE(CLK_ACLK_BTS_LITE_C, "aclk_bts_lite_c", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5346) ENABLE_ACLK_CAM12, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5347) GATE(CLK_ACLK_AHBDN_SFRISP2H, "aclk_ahbdn_sfrisp2h",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5348) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5349) 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5350) GATE(CLK_ACLK_AHBDN_ISP5P, "aclk_aclk-shbdn_isp5p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5351) "mout_aclk_cam1_333_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5352) 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5353) GATE(CLK_ACLK_AXIUS_ISP3P, "aclk_axius_isp3p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5354) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5355) 2, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5356) GATE(CLK_ACLK_AXIUS_FD, "aclk_axius_fd", "mout_aclk_cam1_400_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5357) ENABLE_ACLK_CAM12, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5358) GATE(CLK_ACLK_AXIUS_LITE_C, "aclk_axius_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5359) "mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5360) 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5361)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5362) /* ENABLE_PCLK_CAM1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5363) GATE(CLK_PCLK_SMMU_ISPCPU, "pclk_smmu_ispcpu", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5364) ENABLE_PCLK_CAM1, 27, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5365) GATE(CLK_PCLK_SMMU_FD, "pclk_smmu_fd", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5366) ENABLE_PCLK_CAM1, 26, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5367) GATE(CLK_PCLK_SMMU_LITE_C, "pclk_smmu_lite_c", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5368) ENABLE_PCLK_CAM1, 25, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5369) GATE(CLK_PCLK_BTS_ISP3P, "pclk_bts_isp3p", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5370) ENABLE_PCLK_CAM1, 24, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5371) GATE(CLK_PCLK_BTS_FD, "pclk_bts_fd", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5372) ENABLE_PCLK_CAM1, 23, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5373) GATE(CLK_PCLK_BTS_LITE_C, "pclk_bts_lite_c", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5374) ENABLE_PCLK_CAM1, 22, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5375) GATE(CLK_PCLK_ASYNCAXIM_CA5, "pclk_asyncaxim_ca5", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5376) ENABLE_PCLK_CAM1, 21, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5377) GATE(CLK_PCLK_ASYNCAXIM_ISPEX, "pclk_asyncaxim_ispex",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5378) "div_pclk_cam1_83", ENABLE_PCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5379) 20, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5380) GATE(CLK_PCLK_ASYNCAXIM_ISP3P, "pclk_asyncaxim_isp3p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5381) "div_pclk_cam1_83", ENABLE_PCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5382) 19, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5383) GATE(CLK_PCLK_ASYNCAXIM_FD, "pclk_asyncaxim_fd", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5384) ENABLE_PCLK_CAM1, 18, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5385) GATE(CLK_PCLK_ASYNCAXIM_LITE_C, "pclk_asyncaxim_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5386) "div_pclk_cam1_83", ENABLE_PCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5387) 17, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5388) GATE(CLK_PCLK_PMU_CAM1, "pclk_pmu_cam1", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5389) ENABLE_PCLK_CAM1, 16, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5390) GATE(CLK_PCLK_SYSREG_CAM1, "pclk_sysreg_cam1", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5391) ENABLE_PCLK_CAM1, 15, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5392) GATE(CLK_PCLK_CMU_CAM1_LOCAL, "pclk_cmu_cam1_local",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5393) "div_pclk_cam1_166", ENABLE_PCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5394) 14, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5395) GATE(CLK_PCLK_ISP_MCTADC, "pclk_isp_mctadc", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5396) ENABLE_PCLK_CAM1, 13, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5397) GATE(CLK_PCLK_ISP_WDT, "pclk_isp_wdt", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5398) ENABLE_PCLK_CAM1, 12, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5399) GATE(CLK_PCLK_ISP_PWM, "pclk_isp_pwm", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5400) ENABLE_PCLK_CAM1, 11, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5401) GATE(CLK_PCLK_ISP_UART, "pclk_isp_uart", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5402) ENABLE_PCLK_CAM1, 10, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5403) GATE(CLK_PCLK_ISP_MCUCTL, "pclk_isp_mcuctl", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5404) ENABLE_PCLK_CAM1, 9, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5405) GATE(CLK_PCLK_ISP_SPI1, "pclk_isp_spi1", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5406) ENABLE_PCLK_CAM1, 8, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5407) GATE(CLK_PCLK_ISP_SPI0, "pclk_isp_spi0", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5408) ENABLE_PCLK_CAM1, 7, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5409) GATE(CLK_PCLK_ISP_I2C2, "pclk_isp_i2c2", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5410) ENABLE_PCLK_CAM1, 6, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5411) GATE(CLK_PCLK_ISP_I2C1, "pclk_isp_i2c1", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5412) ENABLE_PCLK_CAM1, 5, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5413) GATE(CLK_PCLK_ISP_I2C0, "pclk_isp_i2c0", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5414) ENABLE_PCLK_CAM1, 4, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5415) GATE(CLK_PCLK_ISP_MPWM, "pclk_isp_mpwm", "div_pclk_cam1_83",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5416) ENABLE_PCLK_CAM1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5417) GATE(CLK_PCLK_FD, "pclk_fd", "div_pclk_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5418) ENABLE_PCLK_CAM1, 3, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5419) GATE(CLK_PCLK_LITE_C, "pclk_lite_c", "div_pclk_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5420) ENABLE_PCLK_CAM1, 1, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5421) GATE(CLK_PCLK_CSIS2, "pclk_csis2", "div_pclk_cam1_166",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5422) ENABLE_PCLK_CAM1, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5423)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5424) /* ENABLE_SCLK_CAM1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5425) GATE(CLK_SCLK_ISP_I2C2, "sclk_isp_i2c2", "oscclk", ENABLE_SCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5426) 15, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5427) GATE(CLK_SCLK_ISP_I2C1, "sclk_isp_i2c1", "oscclk", ENABLE_SCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5428) 14, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5429) GATE(CLK_SCLK_ISP_I2C0, "sclk_isp_i2c0", "oscclk", ENABLE_SCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5430) 13, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5431) GATE(CLK_SCLK_ISP_PWM, "sclk_isp_pwm", "oscclk", ENABLE_SCLK_CAM1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5432) 12, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5433) GATE(CLK_PHYCLK_RXBYTECLKHS0_S2B, "phyclk_rxbyteclkhs0_s2b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5434) "mout_phyclk_rxbyteclkhs0_s2b_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5435) ENABLE_SCLK_CAM1, 11, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5436) GATE(CLK_SCLK_LITE_C_FREECNT, "sclk_lite_c_freecnt", "div_pclk_lite_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5437) ENABLE_SCLK_CAM1, 10, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5438) GATE(CLK_SCLK_PIXELASYNCM_FD, "sclk_pixelasyncm_fd", "div_aclk_fd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5439) ENABLE_SCLK_CAM1, 9, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5440) GATE(CLK_SCLK_ISP_MCTADC, "sclk_isp_mctadc", "sclk_isp_mctadc_cam1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5441) ENABLE_SCLK_CAM1, 7, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5442) GATE(CLK_SCLK_ISP_UART, "sclk_isp_uart", "mout_sclk_isp_uart_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5443) ENABLE_SCLK_CAM1, 6, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5444) GATE(CLK_SCLK_ISP_SPI1, "sclk_isp_spi1", "mout_sclk_isp_spi1_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5445) ENABLE_SCLK_CAM1, 5, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5446) GATE(CLK_SCLK_ISP_SPI0, "sclk_isp_spi0", "mout_sclk_isp_spi0_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5447) ENABLE_SCLK_CAM1, 4, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5448) GATE(CLK_SCLK_ISP_MPWM, "sclk_isp_mpwm", "div_sclk_isp_mpwm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5449) ENABLE_SCLK_CAM1, 3, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5450) GATE(CLK_PCLK_DBG_ISP, "sclk_dbg_isp", "div_pclk_dbg_cam1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5451) ENABLE_SCLK_CAM1, 2, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5452) GATE(CLK_ATCLK_ISP, "atclk_isp", "div_atclk_cam1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5453) ENABLE_SCLK_CAM1, 1, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5454) GATE(CLK_SCLK_ISP_CA5, "sclk_isp_ca5", "mout_aclk_cam1_552_user",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5455) ENABLE_SCLK_CAM1, 0, 0, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5456) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5458) static const struct samsung_cmu_info cam1_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5459) .mux_clks = cam1_mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5460) .nr_mux_clks = ARRAY_SIZE(cam1_mux_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5461) .div_clks = cam1_div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5462) .nr_div_clks = ARRAY_SIZE(cam1_div_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5463) .gate_clks = cam1_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5464) .nr_gate_clks = ARRAY_SIZE(cam1_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5465) .fixed_clks = cam1_fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5466) .nr_fixed_clks = ARRAY_SIZE(cam1_fixed_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5467) .nr_clk_ids = CAM1_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5468) .clk_regs = cam1_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5469) .nr_clk_regs = ARRAY_SIZE(cam1_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5470) .suspend_regs = cam1_suspend_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5471) .nr_suspend_regs = ARRAY_SIZE(cam1_suspend_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5472) .clk_name = "aclk_cam1_400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5473) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5474)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5475) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5476) * Register offset definitions for CMU_IMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5477) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5478) #define ENABLE_ACLK_IMEM_SLIMSSS 0x080c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5479) #define ENABLE_PCLK_IMEM_SLIMSSS 0x0908
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5480)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5481) static const unsigned long imem_clk_regs[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5482) ENABLE_ACLK_IMEM_SLIMSSS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5483) ENABLE_PCLK_IMEM_SLIMSSS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5484) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5485)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5486) static const struct samsung_gate_clock imem_gate_clks[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5487) /* ENABLE_ACLK_IMEM_SLIMSSS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5488) GATE(CLK_ACLK_SLIMSSS, "aclk_slimsss", "aclk_imem_sssx_266",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5489) ENABLE_ACLK_IMEM_SLIMSSS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5491) /* ENABLE_PCLK_IMEM_SLIMSSS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5492) GATE(CLK_PCLK_SLIMSSS, "pclk_slimsss", "aclk_imem_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5493) ENABLE_PCLK_IMEM_SLIMSSS, 0, CLK_IGNORE_UNUSED, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5494) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5496) static const struct samsung_cmu_info imem_cmu_info __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5497) .gate_clks = imem_gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5498) .nr_gate_clks = ARRAY_SIZE(imem_gate_clks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5499) .nr_clk_ids = IMEM_NR_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5500) .clk_regs = imem_clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5501) .nr_clk_regs = ARRAY_SIZE(imem_clk_regs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5502) .clk_name = "aclk_imem_200",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5503) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5505) struct exynos5433_cmu_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5506) struct samsung_clk_reg_dump *clk_save;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5507) unsigned int nr_clk_save;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5508) const struct samsung_clk_reg_dump *clk_suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5509) unsigned int nr_clk_suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5511) struct clk *clk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5512) struct clk **pclks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5513) int nr_pclks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5514)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5515) /* must be the last entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5516) struct samsung_clk_provider ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5517) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5518)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5519) static int __maybe_unused exynos5433_cmu_suspend(struct device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5520) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5521) struct exynos5433_cmu_data *data = dev_get_drvdata(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5522) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5523)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5524) samsung_clk_save(data->ctx.reg_base, data->clk_save,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5525) data->nr_clk_save);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5527) for (i = 0; i < data->nr_pclks; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5528) clk_prepare_enable(data->pclks[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5529)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5530) /* for suspend some registers have to be set to certain values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5531) samsung_clk_restore(data->ctx.reg_base, data->clk_suspend,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5532) data->nr_clk_suspend);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5534) for (i = 0; i < data->nr_pclks; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5535) clk_disable_unprepare(data->pclks[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5536)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5537) clk_disable_unprepare(data->clk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5539) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5540) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5541)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5542) static int __maybe_unused exynos5433_cmu_resume(struct device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5543) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5544) struct exynos5433_cmu_data *data = dev_get_drvdata(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5545) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5546)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5547) clk_prepare_enable(data->clk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5548)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5549) for (i = 0; i < data->nr_pclks; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5550) clk_prepare_enable(data->pclks[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5552) samsung_clk_restore(data->ctx.reg_base, data->clk_save,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5553) data->nr_clk_save);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5555) for (i = 0; i < data->nr_pclks; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5556) clk_disable_unprepare(data->pclks[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5557)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5558) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5559) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5561) static int __init exynos5433_cmu_probe(struct platform_device *pdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5562) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5563) const struct samsung_cmu_info *info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5564) struct exynos5433_cmu_data *data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5565) struct samsung_clk_provider *ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5566) struct device *dev = &pdev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5567) struct resource *res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5568) void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5569) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5570)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5571) info = of_device_get_match_data(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5572)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5573) data = devm_kzalloc(dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5574) struct_size(data, ctx.clk_data.hws, info->nr_clk_ids),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5575) GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5576) if (!data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5577) return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5578) ctx = &data->ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5579)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5580) res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5581) reg_base = devm_ioremap_resource(dev, res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5582) if (IS_ERR(reg_base))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5583) return PTR_ERR(reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5584)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5585) for (i = 0; i < info->nr_clk_ids; ++i)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5586) ctx->clk_data.hws[i] = ERR_PTR(-ENOENT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5587)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5588) ctx->clk_data.num = info->nr_clk_ids;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5589) ctx->reg_base = reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5590) ctx->dev = dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5591) spin_lock_init(&ctx->lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5592)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5593) data->clk_save = samsung_clk_alloc_reg_dump(info->clk_regs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5594) info->nr_clk_regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5595) if (!data->clk_save)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5596) return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5597) data->nr_clk_save = info->nr_clk_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5598) data->clk_suspend = info->suspend_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5599) data->nr_clk_suspend = info->nr_suspend_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5600) data->nr_pclks = of_clk_get_parent_count(dev->of_node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5601)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5602) if (data->nr_pclks > 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5603) data->pclks = devm_kcalloc(dev, sizeof(struct clk *),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5604) data->nr_pclks, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5605) if (!data->pclks) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5606) kfree(data->clk_save);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5607) return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5608) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5609) for (i = 0; i < data->nr_pclks; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5610) struct clk *clk = of_clk_get(dev->of_node, i);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5611)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5612) if (IS_ERR(clk)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5613) kfree(data->clk_save);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5614) while (--i >= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5615) clk_put(data->pclks[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5616) return PTR_ERR(clk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5617) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5618) data->pclks[i] = clk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5619) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5620) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5621)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5622) if (info->clk_name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5623) data->clk = clk_get(dev, info->clk_name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5624) clk_prepare_enable(data->clk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5626) platform_set_drvdata(pdev, data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5627)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5628) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5629) * Enable runtime PM here to allow the clock core using runtime PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5630) * for the registered clocks. Additionally, we increase the runtime
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5631) * PM usage count before registering the clocks, to prevent the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5632) * clock core from runtime suspending the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5633) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5634) pm_runtime_get_noresume(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5635) pm_runtime_set_active(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5636) pm_runtime_enable(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5637)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5638) if (info->pll_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5639) samsung_clk_register_pll(ctx, info->pll_clks, info->nr_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5640) reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5641) if (info->mux_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5642) samsung_clk_register_mux(ctx, info->mux_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5643) info->nr_mux_clks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5644) if (info->div_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5645) samsung_clk_register_div(ctx, info->div_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5646) info->nr_div_clks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5647) if (info->gate_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5648) samsung_clk_register_gate(ctx, info->gate_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5649) info->nr_gate_clks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5650) if (info->fixed_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5651) samsung_clk_register_fixed_rate(ctx, info->fixed_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5652) info->nr_fixed_clks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5653) if (info->fixed_factor_clks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5654) samsung_clk_register_fixed_factor(ctx, info->fixed_factor_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5655) info->nr_fixed_factor_clks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5656)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5657) samsung_clk_of_add_provider(dev->of_node, ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5658) pm_runtime_put_sync(dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5659)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5660) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5661) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5662)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5663) static const struct of_device_id exynos5433_cmu_of_match[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5664) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5665) .compatible = "samsung,exynos5433-cmu-aud",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5666) .data = &aud_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5667) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5668) .compatible = "samsung,exynos5433-cmu-cam0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5669) .data = &cam0_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5670) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5671) .compatible = "samsung,exynos5433-cmu-cam1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5672) .data = &cam1_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5673) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5674) .compatible = "samsung,exynos5433-cmu-disp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5675) .data = &disp_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5676) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5677) .compatible = "samsung,exynos5433-cmu-g2d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5678) .data = &g2d_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5679) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5680) .compatible = "samsung,exynos5433-cmu-g3d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5681) .data = &g3d_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5682) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5683) .compatible = "samsung,exynos5433-cmu-fsys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5684) .data = &fsys_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5685) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5686) .compatible = "samsung,exynos5433-cmu-gscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5687) .data = &gscl_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5688) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5689) .compatible = "samsung,exynos5433-cmu-mfc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5690) .data = &mfc_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5691) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5692) .compatible = "samsung,exynos5433-cmu-hevc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5693) .data = &hevc_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5694) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5695) .compatible = "samsung,exynos5433-cmu-isp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5696) .data = &isp_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5697) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5698) .compatible = "samsung,exynos5433-cmu-mscl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5699) .data = &mscl_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5700) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5701) .compatible = "samsung,exynos5433-cmu-imem",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5702) .data = &imem_cmu_info,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5703) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5704) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5705) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5706)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5707) static const struct dev_pm_ops exynos5433_cmu_pm_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5708) SET_RUNTIME_PM_OPS(exynos5433_cmu_suspend, exynos5433_cmu_resume,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5709) NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5710) SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5711) pm_runtime_force_resume)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5712) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5713)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5714) static struct platform_driver exynos5433_cmu_driver __refdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5715) .driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5716) .name = "exynos5433-cmu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5717) .of_match_table = exynos5433_cmu_of_match,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5718) .suppress_bind_attrs = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5719) .pm = &exynos5433_cmu_pm_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5720) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5721) .probe = exynos5433_cmu_probe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5722) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5724) static int __init exynos5433_cmu_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5725) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5726) return platform_driver_register(&exynos5433_cmu_driver);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5727) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5728) core_initcall(exynos5433_cmu_init);