1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2016 Amlogic, Inc. 4*4882a593Smuzhiyun * Author: Michael Turquette <mturquette@baylibre.com> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (c) 2018 Amlogic, inc. 7*4882a593Smuzhiyun * Author: Qiufang Dai <qiufang.dai@amlogic.com> 8*4882a593Smuzhiyun * Author: Jian Hu <jian.hu@amlogic.com> 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun #ifndef __G12A_H 12*4882a593Smuzhiyun #define __G12A_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* 15*4882a593Smuzhiyun * Clock controller register offsets 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun * Register offsets from the data sheet must be multiplied by 4 before 18*4882a593Smuzhiyun * adding them to the base address to get the right value. 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun #define HHI_MIPI_CNTL0 0x000 21*4882a593Smuzhiyun #define HHI_MIPI_CNTL1 0x004 22*4882a593Smuzhiyun #define HHI_MIPI_CNTL2 0x008 23*4882a593Smuzhiyun #define HHI_MIPI_STS 0x00C 24*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL0 0x040 25*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL1 0x044 26*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL2 0x048 27*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL3 0x04C 28*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL4 0x050 29*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL5 0x054 30*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL6 0x058 31*4882a593Smuzhiyun #define HHI_GP0_PLL_STS 0x05C 32*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL0 0x060 33*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL1 0x064 34*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL2 0x068 35*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL3 0x06C 36*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL4 0x070 37*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL5 0x074 38*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL6 0x078 39*4882a593Smuzhiyun #define HHI_GP1_PLL_STS 0x07C 40*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL0 0x098 41*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL1 0x09C 42*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL2 0x0A0 43*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL3 0x0A4 44*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL4 0x0A8 45*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL5 0x0AC 46*4882a593Smuzhiyun #define HHI_PCIE_PLL_STS 0x0B8 47*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL0 0x0D8 48*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL1 0x0DC 49*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL2 0x0E0 50*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL3 0x0E4 51*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL4 0x0E8 52*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL5 0x0EC 53*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL6 0x0F0 54*4882a593Smuzhiyun #define HHI_VIID_CLK_DIV 0x128 55*4882a593Smuzhiyun #define HHI_VIID_CLK_CNTL 0x12C 56*4882a593Smuzhiyun #define HHI_GCLK_MPEG0 0x140 57*4882a593Smuzhiyun #define HHI_GCLK_MPEG1 0x144 58*4882a593Smuzhiyun #define HHI_GCLK_MPEG2 0x148 59*4882a593Smuzhiyun #define HHI_GCLK_OTHER 0x150 60*4882a593Smuzhiyun #define HHI_GCLK_OTHER2 0x154 61*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL1 0x15c 62*4882a593Smuzhiyun #define HHI_VID_CLK_DIV 0x164 63*4882a593Smuzhiyun #define HHI_MPEG_CLK_CNTL 0x174 64*4882a593Smuzhiyun #define HHI_AUD_CLK_CNTL 0x178 65*4882a593Smuzhiyun #define HHI_VID_CLK_CNTL 0x17c 66*4882a593Smuzhiyun #define HHI_TS_CLK_CNTL 0x190 67*4882a593Smuzhiyun #define HHI_VID_CLK_CNTL2 0x194 68*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL0 0x19c 69*4882a593Smuzhiyun #define HHI_VID_PLL_CLK_DIV 0x1A0 70*4882a593Smuzhiyun #define HHI_MALI_CLK_CNTL 0x1b0 71*4882a593Smuzhiyun #define HHI_VPU_CLKC_CNTL 0x1b4 72*4882a593Smuzhiyun #define HHI_VPU_CLK_CNTL 0x1bC 73*4882a593Smuzhiyun #define HHI_NNA_CLK_CNTL 0x1C8 74*4882a593Smuzhiyun #define HHI_HDMI_CLK_CNTL 0x1CC 75*4882a593Smuzhiyun #define HHI_VDEC_CLK_CNTL 0x1E0 76*4882a593Smuzhiyun #define HHI_VDEC2_CLK_CNTL 0x1E4 77*4882a593Smuzhiyun #define HHI_VDEC3_CLK_CNTL 0x1E8 78*4882a593Smuzhiyun #define HHI_VDEC4_CLK_CNTL 0x1EC 79*4882a593Smuzhiyun #define HHI_HDCP22_CLK_CNTL 0x1F0 80*4882a593Smuzhiyun #define HHI_VAPBCLK_CNTL 0x1F4 81*4882a593Smuzhiyun #define HHI_SYS_CPUB_CLK_CNTL1 0x200 82*4882a593Smuzhiyun #define HHI_SYS_CPUB_CLK_CNTL 0x208 83*4882a593Smuzhiyun #define HHI_VPU_CLKB_CNTL 0x20C 84*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL2 0x210 85*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL3 0x214 86*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL4 0x218 87*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL5 0x21c 88*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL6 0x220 89*4882a593Smuzhiyun #define HHI_GEN_CLK_CNTL 0x228 90*4882a593Smuzhiyun #define HHI_VDIN_MEAS_CLK_CNTL 0x250 91*4882a593Smuzhiyun #define HHI_MIPIDSI_PHY_CLK_CNTL 0x254 92*4882a593Smuzhiyun #define HHI_NAND_CLK_CNTL 0x25C 93*4882a593Smuzhiyun #define HHI_SD_EMMC_CLK_CNTL 0x264 94*4882a593Smuzhiyun #define HHI_MPLL_CNTL0 0x278 95*4882a593Smuzhiyun #define HHI_MPLL_CNTL1 0x27C 96*4882a593Smuzhiyun #define HHI_MPLL_CNTL2 0x280 97*4882a593Smuzhiyun #define HHI_MPLL_CNTL3 0x284 98*4882a593Smuzhiyun #define HHI_MPLL_CNTL4 0x288 99*4882a593Smuzhiyun #define HHI_MPLL_CNTL5 0x28c 100*4882a593Smuzhiyun #define HHI_MPLL_CNTL6 0x290 101*4882a593Smuzhiyun #define HHI_MPLL_CNTL7 0x294 102*4882a593Smuzhiyun #define HHI_MPLL_CNTL8 0x298 103*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL0 0x2A0 104*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL1 0x2A4 105*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL3 0x2AC 106*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL0 0x2f4 107*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL1 0x2f8 108*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL2 0x2fc 109*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL3 0x300 110*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL4 0x304 111*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL5 0x308 112*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL6 0x30c 113*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL0 0x320 114*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL1 0x324 115*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL2 0x328 116*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL3 0x32c 117*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL4 0x330 118*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL5 0x334 119*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL6 0x338 120*4882a593Smuzhiyun #define HHI_SPICC_CLK_CNTL 0x3dc 121*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL0 0x380 122*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL1 0x384 123*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL2 0x388 124*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL3 0x38c 125*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL4 0x390 126*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL5 0x394 127*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL6 0x398 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun /* 130*4882a593Smuzhiyun * CLKID index values 131*4882a593Smuzhiyun * 132*4882a593Smuzhiyun * These indices are entirely contrived and do not map onto the hardware. 133*4882a593Smuzhiyun * It has now been decided to expose everything by default in the DT header: 134*4882a593Smuzhiyun * include/dt-bindings/clock/g12a-clkc.h. Only the clocks ids we don't want 135*4882a593Smuzhiyun * to expose, such as the internal muxes and dividers of composite clocks, 136*4882a593Smuzhiyun * will remain defined here. 137*4882a593Smuzhiyun */ 138*4882a593Smuzhiyun #define CLKID_MPEG_SEL 8 139*4882a593Smuzhiyun #define CLKID_MPEG_DIV 9 140*4882a593Smuzhiyun #define CLKID_SD_EMMC_A_CLK0_SEL 63 141*4882a593Smuzhiyun #define CLKID_SD_EMMC_A_CLK0_DIV 64 142*4882a593Smuzhiyun #define CLKID_SD_EMMC_B_CLK0_SEL 65 143*4882a593Smuzhiyun #define CLKID_SD_EMMC_B_CLK0_DIV 66 144*4882a593Smuzhiyun #define CLKID_SD_EMMC_C_CLK0_SEL 67 145*4882a593Smuzhiyun #define CLKID_SD_EMMC_C_CLK0_DIV 68 146*4882a593Smuzhiyun #define CLKID_MPLL0_DIV 69 147*4882a593Smuzhiyun #define CLKID_MPLL1_DIV 70 148*4882a593Smuzhiyun #define CLKID_MPLL2_DIV 71 149*4882a593Smuzhiyun #define CLKID_MPLL3_DIV 72 150*4882a593Smuzhiyun #define CLKID_MPLL_PREDIV 73 151*4882a593Smuzhiyun #define CLKID_FCLK_DIV2_DIV 75 152*4882a593Smuzhiyun #define CLKID_FCLK_DIV3_DIV 76 153*4882a593Smuzhiyun #define CLKID_FCLK_DIV4_DIV 77 154*4882a593Smuzhiyun #define CLKID_FCLK_DIV5_DIV 78 155*4882a593Smuzhiyun #define CLKID_FCLK_DIV7_DIV 79 156*4882a593Smuzhiyun #define CLKID_FCLK_DIV2P5_DIV 100 157*4882a593Smuzhiyun #define CLKID_FIXED_PLL_DCO 101 158*4882a593Smuzhiyun #define CLKID_SYS_PLL_DCO 102 159*4882a593Smuzhiyun #define CLKID_GP0_PLL_DCO 103 160*4882a593Smuzhiyun #define CLKID_HIFI_PLL_DCO 104 161*4882a593Smuzhiyun #define CLKID_VPU_0_DIV 111 162*4882a593Smuzhiyun #define CLKID_VPU_1_DIV 114 163*4882a593Smuzhiyun #define CLKID_VAPB_0_DIV 118 164*4882a593Smuzhiyun #define CLKID_VAPB_1_DIV 121 165*4882a593Smuzhiyun #define CLKID_HDMI_PLL_DCO 125 166*4882a593Smuzhiyun #define CLKID_HDMI_PLL_OD 126 167*4882a593Smuzhiyun #define CLKID_HDMI_PLL_OD2 127 168*4882a593Smuzhiyun #define CLKID_VID_PLL_SEL 130 169*4882a593Smuzhiyun #define CLKID_VID_PLL_DIV 131 170*4882a593Smuzhiyun #define CLKID_VCLK_SEL 132 171*4882a593Smuzhiyun #define CLKID_VCLK2_SEL 133 172*4882a593Smuzhiyun #define CLKID_VCLK_INPUT 134 173*4882a593Smuzhiyun #define CLKID_VCLK2_INPUT 135 174*4882a593Smuzhiyun #define CLKID_VCLK_DIV 136 175*4882a593Smuzhiyun #define CLKID_VCLK2_DIV 137 176*4882a593Smuzhiyun #define CLKID_VCLK_DIV2_EN 140 177*4882a593Smuzhiyun #define CLKID_VCLK_DIV4_EN 141 178*4882a593Smuzhiyun #define CLKID_VCLK_DIV6_EN 142 179*4882a593Smuzhiyun #define CLKID_VCLK_DIV12_EN 143 180*4882a593Smuzhiyun #define CLKID_VCLK2_DIV2_EN 144 181*4882a593Smuzhiyun #define CLKID_VCLK2_DIV4_EN 145 182*4882a593Smuzhiyun #define CLKID_VCLK2_DIV6_EN 146 183*4882a593Smuzhiyun #define CLKID_VCLK2_DIV12_EN 147 184*4882a593Smuzhiyun #define CLKID_CTS_ENCI_SEL 158 185*4882a593Smuzhiyun #define CLKID_CTS_ENCP_SEL 159 186*4882a593Smuzhiyun #define CLKID_CTS_VDAC_SEL 160 187*4882a593Smuzhiyun #define CLKID_HDMI_TX_SEL 161 188*4882a593Smuzhiyun #define CLKID_HDMI_SEL 166 189*4882a593Smuzhiyun #define CLKID_HDMI_DIV 167 190*4882a593Smuzhiyun #define CLKID_MALI_0_DIV 170 191*4882a593Smuzhiyun #define CLKID_MALI_1_DIV 173 192*4882a593Smuzhiyun #define CLKID_MPLL_50M_DIV 176 193*4882a593Smuzhiyun #define CLKID_SYS_PLL_DIV16_EN 178 194*4882a593Smuzhiyun #define CLKID_SYS_PLL_DIV16 179 195*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0_SEL 180 196*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0_DIV 181 197*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0 182 198*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1_SEL 183 199*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1_DIV 184 200*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1 185 201*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN 186 202*4882a593Smuzhiyun #define CLKID_CPU_CLK_DIV16_EN 188 203*4882a593Smuzhiyun #define CLKID_CPU_CLK_DIV16 189 204*4882a593Smuzhiyun #define CLKID_CPU_CLK_APB_DIV 190 205*4882a593Smuzhiyun #define CLKID_CPU_CLK_APB 191 206*4882a593Smuzhiyun #define CLKID_CPU_CLK_ATB_DIV 192 207*4882a593Smuzhiyun #define CLKID_CPU_CLK_ATB 193 208*4882a593Smuzhiyun #define CLKID_CPU_CLK_AXI_DIV 194 209*4882a593Smuzhiyun #define CLKID_CPU_CLK_AXI 195 210*4882a593Smuzhiyun #define CLKID_CPU_CLK_TRACE_DIV 196 211*4882a593Smuzhiyun #define CLKID_CPU_CLK_TRACE 197 212*4882a593Smuzhiyun #define CLKID_PCIE_PLL_DCO 198 213*4882a593Smuzhiyun #define CLKID_PCIE_PLL_DCO_DIV2 199 214*4882a593Smuzhiyun #define CLKID_PCIE_PLL_OD 200 215*4882a593Smuzhiyun #define CLKID_VDEC_1_SEL 202 216*4882a593Smuzhiyun #define CLKID_VDEC_1_DIV 203 217*4882a593Smuzhiyun #define CLKID_VDEC_HEVC_SEL 205 218*4882a593Smuzhiyun #define CLKID_VDEC_HEVC_DIV 206 219*4882a593Smuzhiyun #define CLKID_VDEC_HEVCF_SEL 208 220*4882a593Smuzhiyun #define CLKID_VDEC_HEVCF_DIV 209 221*4882a593Smuzhiyun #define CLKID_TS_DIV 211 222*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DCO 213 223*4882a593Smuzhiyun #define CLKID_SYS1_PLL 214 224*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DIV16_EN 215 225*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DIV16 216 226*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0_SEL 217 227*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0_DIV 218 228*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0 219 229*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1_SEL 220 230*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1_DIV 221 231*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1 222 232*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN 223 233*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV16_EN 225 234*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV16 226 235*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV2 227 236*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV3 228 237*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV4 229 238*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV5 230 239*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV6 231 240*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV7 232 241*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV8 233 242*4882a593Smuzhiyun #define CLKID_CPUB_CLK_APB_SEL 234 243*4882a593Smuzhiyun #define CLKID_CPUB_CLK_APB 235 244*4882a593Smuzhiyun #define CLKID_CPUB_CLK_ATB_SEL 236 245*4882a593Smuzhiyun #define CLKID_CPUB_CLK_ATB 237 246*4882a593Smuzhiyun #define CLKID_CPUB_CLK_AXI_SEL 238 247*4882a593Smuzhiyun #define CLKID_CPUB_CLK_AXI 239 248*4882a593Smuzhiyun #define CLKID_CPUB_CLK_TRACE_SEL 240 249*4882a593Smuzhiyun #define CLKID_CPUB_CLK_TRACE 241 250*4882a593Smuzhiyun #define CLKID_GP1_PLL_DCO 242 251*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0_SEL 244 252*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0_DIV 245 253*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0 246 254*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1_SEL 247 255*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1_DIV 248 256*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1 249 257*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN 250 258*4882a593Smuzhiyun #define CLKID_DSU_CLK_FINAL 251 259*4882a593Smuzhiyun #define CLKID_SPICC0_SCLK_SEL 256 260*4882a593Smuzhiyun #define CLKID_SPICC0_SCLK_DIV 257 261*4882a593Smuzhiyun #define CLKID_SPICC1_SCLK_SEL 259 262*4882a593Smuzhiyun #define CLKID_SPICC1_SCLK_DIV 260 263*4882a593Smuzhiyun #define CLKID_NNA_AXI_CLK_SEL 262 264*4882a593Smuzhiyun #define CLKID_NNA_AXI_CLK_DIV 263 265*4882a593Smuzhiyun #define CLKID_NNA_CORE_CLK_SEL 265 266*4882a593Smuzhiyun #define CLKID_NNA_CORE_CLK_DIV 266 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun #define NR_CLKS 268 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun /* include the CLKIDs that have been made part of the DT binding */ 271*4882a593Smuzhiyun #include <dt-bindings/clock/g12a-clkc.h> 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #endif /* __G12A_H */ 274