1/* Public Domain */ 2 3/* 4 * i.MX6Q clocks. 5 */ 6 7#define IMX6_CLK_IPG 0x3e 8#define IMX6_CLK_IPG_PER 0x3f 9#define IMX6_CLK_ECSPI_ROOT 0x47 10#define IMX6_CLK_ARM 0x68 11#define IMX6_CLK_AHB 0x69 12#define IMX6_CLK_ECSPI2 0x71 13#define IMX6_CLK_ENET 0x75 14#define IMX6_CLK_I2C1 0x7d 15#define IMX6_CLK_I2C2 0x7e 16#define IMX6_CLK_I2C3 0x7f 17#define IMX6_CLK_SATA 0x9a 18#define IMX6_CLK_UART_IPG 0xa0 19#define IMX6_CLK_UART_SERIAL 0xa1 20#define IMX6_CLK_USBOH3 0xa2 21#define IMX6_CLK_USDHC1 0xa3 22#define IMX6_CLK_USDHC2 0xa4 23#define IMX6_CLK_USDHC3 0xa5 24#define IMX6_CLK_USDHC4 0xa6 25#define IMX6_CLK_PLL3_USB_OTG 0xac 26#define IMX6_CLK_PLL7_USB_HOST 0xb0 27#define IMX6_CLK_PLL6_ENET 0xb1 28#define IMX6_CLK_USBPHY1 0xb6 29#define IMX6_CLK_USBPHY2 0xb7 30#define IMX6_CLK_SATA_REF 0xba 31#define IMX6_CLK_SATA_REF_100 0xbb 32#define IMX6_CLK_ENET_REF 0xbe 33#define IMX6_CLK_PLL3 0xe1 34#define IMX6_CLK_PLL6 0xe4 35#define IMX6_CLK_PLL7 0xe5 36 37const struct imxccm_gate imx6_gates[] = { 38 [IMX6_CLK_ECSPI2] = { CCM_CCGR1, 1, IMX6_CLK_ECSPI_ROOT }, 39 [IMX6_CLK_ENET] = { CCM_CCGR1, 5, IMX6_CLK_IPG }, 40 [IMX6_CLK_I2C1] = { CCM_CCGR2, 3, IMX6_CLK_IPG_PER }, 41 [IMX6_CLK_I2C2] = { CCM_CCGR2, 4, IMX6_CLK_IPG_PER }, 42 [IMX6_CLK_I2C3] = { CCM_CCGR2, 5, IMX6_CLK_IPG_PER }, 43 [IMX6_CLK_SATA] = { CCM_CCGR5, 2 }, 44 [IMX6_CLK_UART_IPG] = { CCM_CCGR5, 12, IMX6_CLK_IPG }, 45 [IMX6_CLK_UART_SERIAL] = { CCM_CCGR5, 13 }, 46 [IMX6_CLK_USBOH3] = { CCM_CCGR6, 0 }, 47 [IMX6_CLK_USDHC1] = { CCM_CCGR6, 1 }, 48 [IMX6_CLK_USDHC2] = { CCM_CCGR6, 2 }, 49 [IMX6_CLK_USDHC3] = { CCM_CCGR6, 3 }, 50 [IMX6_CLK_USDHC4] = { CCM_CCGR6, 4 }, 51}; 52 53/* 54 * i.MX6UL clocks. 55 */ 56 57#define IMX6UL_CLK_ARM 0x5d 58#define IMX6UL_CLK_PERCLK 0x63 59#define IMX6UL_CLK_IPG 0x64 60#define IMX6UL_CLK_GPT1_BUS 0x98 61#define IMX6UL_CLK_GPT1_SERIAL 0x99 62#define IMX6UL_CLK_I2C1 0x9c 63#define IMX6UL_CLK_I2C2 0x9d 64#define IMX6UL_CLK_I2C3 0x9e 65#define IMX6UL_CLK_I2C4 0x9f 66#define IMX6UL_CLK_UART1_IPG 0xbd 67#define IMX6UL_CLK_UART1_SERIAL 0xbe 68#define IMX6UL_CLK_USBOH3 0xcd 69#define IMX6UL_CLK_USDHC1 0xce 70#define IMX6UL_CLK_USDHC2 0xcf 71 72const struct imxccm_gate imx6ul_gates[] = { 73 [IMX6UL_CLK_GPT1_BUS] = { CCM_CCGR1, 10, IMX6UL_CLK_PERCLK }, 74 [IMX6UL_CLK_GPT1_SERIAL] = { CCM_CCGR1, 11, IMX6UL_CLK_PERCLK }, 75 [IMX6UL_CLK_I2C1] = { CCM_CCGR2, 3, IMX6UL_CLK_PERCLK }, 76 [IMX6UL_CLK_I2C2] = { CCM_CCGR2, 4, IMX6UL_CLK_PERCLK }, 77 [IMX6UL_CLK_I2C3] = { CCM_CCGR2, 5, IMX6UL_CLK_PERCLK }, 78 [IMX6UL_CLK_I2C4] = { CCM_CCGR6, 12, IMX6UL_CLK_PERCLK }, 79 [IMX6UL_CLK_UART1_IPG] = { CCM_CCGR5, 12, IMX6UL_CLK_IPG }, 80 [IMX6UL_CLK_UART1_SERIAL] = { CCM_CCGR5, 12 }, 81 [IMX6UL_CLK_USBOH3] = { CCM_CCGR6, 0 }, 82 [IMX6UL_CLK_USDHC1] = { CCM_CCGR6, 1 }, 83 [IMX6UL_CLK_USDHC2] = { CCM_CCGR6, 2 }, 84}; 85 86/* 87 * i.MX7D clocks. 88 */ 89 90#define IMX7D_PLL_ENET_MAIN_125M_CLK 0x2a 91#define IMX7D_ENET_AXI_ROOT_CLK 0x52 92#define IMX7D_ENET_AXI_ROOT_SRC 0x53 93#define IMX7D_ENET_AXI_ROOT_CG 0x54 94#define IMX7D_ENET_AXI_ROOT_DIV 0x55 95#define IMX7D_ENET1_IPG_ROOT_CLK 0x9e 96#define IMX7D_ENET1_TIME_ROOT_CLK 0xa2 97#define IMX7D_ENET1_TIME_ROOT_SRC 0xa3 98#define IMX7D_ENET1_TIME_ROOT_CG 0xa4 99#define IMX7D_ENET1_TIME_ROOT_DIV 0xa5 100#define IMX7D_ENET2_IPG_ROOT_CLK 0xa6 101#define IMX7D_ENET2_TIME_ROOT_CLK 0xaa 102#define IMX7D_ENET2_TIME_ROOT_SRC 0xab 103#define IMX7D_ENET2_TIME_ROOT_CG 0xac 104#define IMX7D_ENET2_TIME_ROOT_DIV 0xad 105#define IMX7D_ENET_PHY_REF_ROOT_CLK 0xae 106#define IMX7D_ENET_PHY_REF_ROOT_SRC 0xaf 107#define IMX7D_ENET_PHY_REF_ROOT_CG 0xb0 108#define IMX7D_ENET_PHY_REF_ROOT_DIV 0xb1 109#define IMX7D_USDHC1_ROOT_CLK 0xbe 110#define IMX7D_USDHC1_ROOT_SRC 0xbf 111#define IMX7D_USDHC1_ROOT_CG 0xc0 112#define IMX7D_USDHC1_ROOT_DIV 0xc1 113#define IMX7D_USDHC2_ROOT_CLK 0xc2 114#define IMX7D_USDHC2_ROOT_SRC 0xc3 115#define IMX7D_USDHC2_ROOT_CG 0xc4 116#define IMX7D_USDHC2_ROOT_DIV 0xc5 117#define IMX7D_USDHC3_ROOT_CLK 0xc6 118#define IMX7D_USDHC3_ROOT_SRC 0xc7 119#define IMX7D_USDHC3_ROOT_CG 0xc8 120#define IMX7D_USDHC3_ROOT_DIV 0xc9 121#define IMX7D_I2C1_ROOT_CLK 0xd2 122#define IMX7D_I2C1_ROOT_SRC 0xd3 123#define IMX7D_I2C1_ROOT_CG 0xd4 124#define IMX7D_I2C1_ROOT_DIV 0xd5 125#define IMX7D_I2C2_ROOT_CLK 0xd6 126#define IMX7D_I2C2_ROOT_SRC 0xd7 127#define IMX7D_I2C2_ROOT_CG 0xd8 128#define IMX7D_I2C2_ROOT_DIV 0xd9 129#define IMX7D_I2C3_ROOT_CLK 0xda 130#define IMX7D_I2C3_ROOT_SRC 0xdb 131#define IMX7D_I2C3_ROOT_CG 0xdc 132#define IMX7D_I2C3_ROOT_DIV 0xdd 133#define IMX7D_I2C4_ROOT_CLK 0xde 134#define IMX7D_I2C4_ROOT_SRC 0xdf 135#define IMX7D_I2C4_ROOT_CG 0xe0 136#define IMX7D_I2C4_ROOT_DIV 0xe1 137#define IMX7D_UART1_ROOT_CLK 0xe2 138#define IMX7D_UART1_ROOT_SRC 0xe3 139#define IMX7D_UART1_ROOT_CG 0xe4 140#define IMX7D_UART1_ROOT_DIV 0xe5 141#define IMX7D_UART2_ROOT_CLK 0xe6 142#define IMX7D_UART2_ROOT_SRC 0xe7 143#define IMX7D_UART2_ROOT_CG 0xe8 144#define IMX7D_UART2_ROOT_DIV 0xe9 145#define IMX7D_UART3_ROOT_CLK 0xea 146#define IMX7D_UART3_ROOT_SRC 0xeb 147#define IMX7D_UART3_ROOT_CG 0xec 148#define IMX7D_UART3_ROOT_DIV 0xed 149#define IMX7D_UART4_ROOT_CLK 0xee 150#define IMX7D_UART4_ROOT_SRC 0xef 151#define IMX7D_UART4_ROOT_CG 0xf0 152#define IMX7D_UART4_ROOT_DIV 0xf1 153#define IMX7D_UART5_ROOT_CLK 0xf2 154#define IMX7D_UART5_ROOT_SRC 0xf3 155#define IMX7D_UART5_ROOT_CG 0xf4 156#define IMX7D_UART5_ROOT_DIV 0xf5 157#define IMX7D_UART6_ROOT_CLK 0xf6 158#define IMX7D_UART6_ROOT_SRC 0xf7 159#define IMX7D_UART6_ROOT_CG 0xf8 160#define IMX7D_UART6_ROOT_DIV 0xf9 161#define IMX7D_UART7_ROOT_CLK 0xfa 162#define IMX7D_UART7_ROOT_SRC 0xfb 163#define IMX7D_UART7_ROOT_CG 0xfc 164#define IMX7D_UART7_ROOT_DIV 0xfd 165#define IMX7D_ENET_AXI_ROOT_PRE_DIV 0x15a 166#define IMX7D_ENET1_TIME_ROOT_PRE_DIV 0x16a 167#define IMX7D_ENET2_TIME_ROOT_PRE_DIV 0x16c 168#define IMX7D_ENET_PHY_REF_ROOT_PRE_DIV 0x16d 169#define IMX7D_USDHC1_ROOT_PRE_DIV 0x171 170#define IMX7D_USDHC2_ROOT_PRE_DIV 0x172 171#define IMX7D_USDHC3_ROOT_PRE_DIV 0x173 172#define IMX7D_I2C1_ROOT_PRE_DIV 0x176 173#define IMX7D_I2C2_ROOT_PRE_DIV 0x177 174#define IMX7D_I2C3_ROOT_PRE_DIV 0x178 175#define IMX7D_I2C4_ROOT_PRE_DIV 0x179 176#define IMX7D_UART1_ROOT_PRE_DIV 0x17a 177#define IMX7D_UART2_ROOT_PRE_DIV 0x17b 178#define IMX7D_UART3_ROOT_PRE_DIV 0x17c 179#define IMX7D_UART4_ROOT_PRE_DIV 0x17d 180#define IMX7D_UART5_ROOT_PRE_DIV 0x17e 181#define IMX7D_UART6_ROOT_PRE_DIV 0x17f 182#define IMX7D_UART7_ROOT_PRE_DIV 0x180 183#define IMX7D_USB_CTRL_CLK 0x1a6 184#define IMX7D_USB_PHY1_CLK 0x1a7 185#define IMX7D_USB_PHY2_CLK 0x1a8 186 187const struct imxccm_gate imx7d_gates[] = { 188 [IMX7D_ENET_AXI_ROOT_CG] = { 0x8900, 28, IMX7D_ENET_AXI_ROOT_SRC }, 189 [IMX7D_ENET1_TIME_ROOT_CG] = { 0xa780, 28, IMX7D_ENET1_TIME_ROOT_SRC }, 190 [IMX7D_ENET2_TIME_ROOT_CG] = { 0xa880, 28, IMX7D_ENET2_TIME_ROOT_SRC }, 191 [IMX7D_ENET_PHY_REF_ROOT_CG] = { 0xa900, 28, IMX7D_ENET_PHY_REF_ROOT_SRC }, 192 [IMX7D_USDHC1_ROOT_CG] = { 0xab00, 28, IMX7D_USDHC1_ROOT_SRC }, 193 [IMX7D_USDHC2_ROOT_CG] = { 0xab80, 28, IMX7D_USDHC2_ROOT_SRC }, 194 [IMX7D_USDHC3_ROOT_CG] = { 0xabc0, 28, IMX7D_USDHC3_ROOT_SRC }, 195 [IMX7D_I2C1_ROOT_CG] = { 0xad80, 28, IMX7D_I2C1_ROOT_SRC }, 196 [IMX7D_I2C2_ROOT_CG] = { 0xae00, 28, IMX7D_I2C2_ROOT_SRC }, 197 [IMX7D_I2C3_ROOT_CG] = { 0xae80, 28, IMX7D_I2C3_ROOT_SRC }, 198 [IMX7D_I2C4_ROOT_CG] = { 0xaf00, 28, IMX7D_I2C4_ROOT_SRC }, 199 [IMX7D_UART1_ROOT_CG] = { 0xaf80, 28, IMX7D_UART1_ROOT_SRC }, 200 [IMX7D_UART2_ROOT_CG] = { 0xb000, 28, IMX7D_UART2_ROOT_SRC }, 201 [IMX7D_UART3_ROOT_CG] = { 0xb080, 28, IMX7D_UART3_ROOT_SRC }, 202 [IMX7D_UART4_ROOT_CG] = { 0xb100, 28, IMX7D_UART4_ROOT_SRC }, 203 [IMX7D_UART5_ROOT_CG] = { 0xb180, 28, IMX7D_UART5_ROOT_SRC }, 204 [IMX7D_UART6_ROOT_CG] = { 0xb200, 28, IMX7D_UART6_ROOT_SRC }, 205 [IMX7D_UART7_ROOT_CG] = { 0xb280, 28, IMX7D_UART7_ROOT_SRC }, 206 [IMX7D_ENET_AXI_ROOT_CLK] = { 0x4060, 0, IMX7D_ENET_AXI_ROOT_DIV }, 207 [IMX7D_USB_CTRL_CLK] = { 0x4680, 0 }, 208 [IMX7D_USB_PHY1_CLK] = { 0x46a0, 0 }, 209 [IMX7D_USB_PHY2_CLK] = { 0x46b0, 0 }, 210 [IMX7D_USDHC1_ROOT_CLK] = { 0x46c0, 0, IMX7D_USDHC1_ROOT_DIV }, 211 [IMX7D_USDHC2_ROOT_CLK] = { 0x46d0, 0, IMX7D_USDHC2_ROOT_DIV }, 212 [IMX7D_USDHC3_ROOT_CLK] = { 0x46e0, 0, IMX7D_USDHC3_ROOT_DIV }, 213 [IMX7D_ENET1_IPG_ROOT_CLK] = { 0x4700, 0, IMX7D_ENET_AXI_ROOT_DIV }, 214 [IMX7D_ENET1_TIME_ROOT_CLK] = { 0x4700, 0, IMX7D_ENET1_TIME_ROOT_DIV }, 215 [IMX7D_ENET2_IPG_ROOT_CLK] = { 0x4710, 0, IMX7D_ENET_AXI_ROOT_DIV }, 216 [IMX7D_ENET2_TIME_ROOT_CLK] = { 0x4710, 0, IMX7D_ENET1_TIME_ROOT_DIV }, 217 [IMX7D_I2C1_ROOT_CLK] = { 0x4880, 0, IMX7D_I2C1_ROOT_DIV }, 218 [IMX7D_I2C2_ROOT_CLK] = { 0x4890, 0, IMX7D_I2C2_ROOT_DIV }, 219 [IMX7D_I2C3_ROOT_CLK] = { 0x48a0, 0, IMX7D_I2C3_ROOT_DIV }, 220 [IMX7D_I2C4_ROOT_CLK] = { 0x48b0, 0, IMX7D_I2C4_ROOT_DIV }, 221 [IMX7D_UART1_ROOT_CLK] = { 0x4940, 0, IMX7D_UART1_ROOT_DIV }, 222 [IMX7D_UART2_ROOT_CLK] = { 0x4950, 0, IMX7D_UART2_ROOT_DIV }, 223 [IMX7D_UART3_ROOT_CLK] = { 0x4960, 0, IMX7D_UART3_ROOT_DIV }, 224 [IMX7D_UART4_ROOT_CLK] = { 0x4970, 0, IMX7D_UART4_ROOT_DIV }, 225 [IMX7D_UART5_ROOT_CLK] = { 0x4980, 0, IMX7D_UART5_ROOT_DIV }, 226 [IMX7D_UART6_ROOT_CLK] = { 0x4990, 0, IMX7D_UART6_ROOT_DIV }, 227 [IMX7D_UART7_ROOT_CLK] = { 0x49a0, 0, IMX7D_UART7_ROOT_DIV }, 228}; 229 230const struct imxccm_divider imx7d_divs[] = { 231 [IMX7D_ENET_AXI_ROOT_PRE_DIV] = { 0x8900, 16, 0x7, IMX7D_ENET_AXI_ROOT_CG }, 232 [IMX7D_ENET1_TIME_ROOT_PRE_DIV] = { 0xa780, 16, 0x7, IMX7D_ENET1_TIME_ROOT_CG }, 233 [IMX7D_ENET2_TIME_ROOT_PRE_DIV] = { 0xa880, 16, 0x7, IMX7D_ENET2_TIME_ROOT_CG }, 234 [IMX7D_ENET_PHY_REF_ROOT_PRE_DIV] = { 0xa900, 16, 0x7, IMX7D_ENET_PHY_REF_ROOT_CG }, 235 [IMX7D_USDHC1_ROOT_PRE_DIV] = { 0xab00, 16, 0x7, IMX7D_USDHC1_ROOT_CG }, 236 [IMX7D_USDHC2_ROOT_PRE_DIV] = { 0xab80, 16, 0x7, IMX7D_USDHC2_ROOT_CG }, 237 [IMX7D_USDHC3_ROOT_PRE_DIV] = { 0xac00, 16, 0x7, IMX7D_USDHC3_ROOT_CG }, 238 [IMX7D_I2C1_ROOT_PRE_DIV] = { 0xad80, 16, 0x7, IMX7D_I2C1_ROOT_CG }, 239 [IMX7D_I2C2_ROOT_PRE_DIV] = { 0xae00, 16, 0x7, IMX7D_I2C2_ROOT_CG }, 240 [IMX7D_I2C3_ROOT_PRE_DIV] = { 0xae80, 16, 0x7, IMX7D_I2C3_ROOT_CG }, 241 [IMX7D_I2C4_ROOT_PRE_DIV] = { 0xaf00, 16, 0x7, IMX7D_I2C4_ROOT_CG }, 242 [IMX7D_UART1_ROOT_PRE_DIV] = { 0xaf80, 16, 0x7, IMX7D_UART1_ROOT_CG }, 243 [IMX7D_UART2_ROOT_PRE_DIV] = { 0xb000, 16, 0x7, IMX7D_UART2_ROOT_CG }, 244 [IMX7D_UART3_ROOT_PRE_DIV] = { 0xb080, 16, 0x7, IMX7D_UART3_ROOT_CG }, 245 [IMX7D_UART4_ROOT_PRE_DIV] = { 0xb100, 16, 0x7, IMX7D_UART4_ROOT_CG }, 246 [IMX7D_UART5_ROOT_PRE_DIV] = { 0xb180, 16, 0x7, IMX7D_UART5_ROOT_CG }, 247 [IMX7D_UART6_ROOT_PRE_DIV] = { 0xb200, 16, 0x7, IMX7D_UART6_ROOT_CG }, 248 [IMX7D_UART7_ROOT_PRE_DIV] = { 0xb280, 16, 0x7, IMX7D_UART7_ROOT_CG }, 249 [IMX7D_ENET_AXI_ROOT_DIV] = { 0x8900, 0, 0x3f, IMX7D_ENET_AXI_ROOT_PRE_DIV }, 250 [IMX7D_ENET1_TIME_ROOT_DIV] = { 0xa780, 0, 0x3f, IMX7D_ENET1_TIME_ROOT_PRE_DIV }, 251 [IMX7D_ENET2_TIME_ROOT_DIV] = { 0xa880, 0, 0x3f, IMX7D_ENET2_TIME_ROOT_PRE_DIV }, 252 [IMX7D_ENET_PHY_REF_ROOT_CLK] = { 0xa900, 0, 0x3f, IMX7D_ENET_PHY_REF_ROOT_PRE_DIV }, 253 [IMX7D_USDHC1_ROOT_DIV] = { 0xab00, 0, 0x3f, IMX7D_USDHC1_ROOT_PRE_DIV }, 254 [IMX7D_USDHC2_ROOT_DIV] = { 0xab80, 0, 0x3f, IMX7D_USDHC2_ROOT_PRE_DIV }, 255 [IMX7D_USDHC3_ROOT_DIV] = { 0xac00, 0, 0x3f, IMX7D_USDHC3_ROOT_PRE_DIV }, 256 [IMX7D_I2C1_ROOT_DIV] = { 0xad80, 0, 0x3f, IMX7D_I2C1_ROOT_PRE_DIV }, 257 [IMX7D_I2C2_ROOT_DIV] = { 0xae00, 0, 0x3f, IMX7D_I2C2_ROOT_PRE_DIV }, 258 [IMX7D_I2C3_ROOT_DIV] = { 0xae80, 0, 0x3f, IMX7D_I2C3_ROOT_PRE_DIV }, 259 [IMX7D_I2C4_ROOT_DIV] = { 0xaf00, 0, 0x3f, IMX7D_I2C4_ROOT_PRE_DIV }, 260 [IMX7D_UART1_ROOT_DIV] = { 0xaf80, 0, 0x3f, IMX7D_UART1_ROOT_PRE_DIV }, 261 [IMX7D_UART2_ROOT_DIV] = { 0xb000, 0, 0x3f, IMX7D_UART2_ROOT_PRE_DIV }, 262 [IMX7D_UART3_ROOT_DIV] = { 0xb080, 0, 0x3f, IMX7D_UART3_ROOT_PRE_DIV }, 263 [IMX7D_UART4_ROOT_DIV] = { 0xb100, 0, 0x3f, IMX7D_UART4_ROOT_PRE_DIV }, 264 [IMX7D_UART5_ROOT_DIV] = { 0xb180, 0, 0x3f, IMX7D_UART5_ROOT_PRE_DIV }, 265 [IMX7D_UART6_ROOT_DIV] = { 0xb200, 0, 0x3f, IMX7D_UART6_ROOT_PRE_DIV }, 266 [IMX7D_UART7_ROOT_DIV] = { 0xb280, 0, 0x3f, IMX7D_UART7_ROOT_PRE_DIV }, 267}; 268 269const struct imxccm_mux imx7d_muxs[] = { 270 [IMX7D_ENET_AXI_ROOT_SRC] = { 0x8900, 24, 0x7 }, 271 [IMX7D_ENET1_TIME_ROOT_SRC] = { 0xa780, 24, 0x7 }, 272 [IMX7D_ENET2_TIME_ROOT_SRC] = { 0xa880, 24, 0x7 }, 273 [IMX7D_ENET_PHY_REF_ROOT_SRC] = { 0xa900, 24, 0x7 }, 274 [IMX7D_USDHC1_ROOT_SRC] = { 0xab00, 24, 0x7 }, 275 [IMX7D_USDHC2_ROOT_SRC] = { 0xab80, 24, 0x7 }, 276 [IMX7D_USDHC3_ROOT_SRC] = { 0xac00, 24, 0x7 }, 277 [IMX7D_I2C1_ROOT_SRC] = { 0xad80, 24, 0x7 }, 278 [IMX7D_I2C2_ROOT_SRC] = { 0xae00, 24, 0x7 }, 279 [IMX7D_I2C3_ROOT_SRC] = { 0xae80, 24, 0x7 }, 280 [IMX7D_I2C4_ROOT_SRC] = { 0xaf00, 24, 0x7 }, 281 [IMX7D_UART1_ROOT_SRC] = { 0xaf80, 24, 0x7 }, 282 [IMX7D_UART2_ROOT_SRC] = { 0xb000, 24, 0x7 }, 283 [IMX7D_UART3_ROOT_SRC] = { 0xb080, 24, 0x7 }, 284 [IMX7D_UART4_ROOT_SRC] = { 0xb100, 24, 0x7 }, 285 [IMX7D_UART5_ROOT_SRC] = { 0xb180, 24, 0x7 }, 286 [IMX7D_UART6_ROOT_SRC] = { 0xb200, 24, 0x7 }, 287 [IMX7D_UART7_ROOT_SRC] = { 0xb280, 24, 0x7 }, 288}; 289 290/* 291 * i.MX8MM clocks. 292 */ 293 294#define IMX8MM_ARM_PLL 0x18 295#define IMX8MM_SYS_PLL1_100M 0x32 296#define IMX8MM_SYS_PLL1_800M 0x38 297#define IMX8MM_SYS_PLL2_100M 0x3a 298#define IMX8MM_SYS_PLL2_250M 0x3e 299#define IMX8MM_SYS_PLL2_500M 0x40 300#define IMX8MM_CLK_A53_SRC 0x42 301#define IMX8MM_ARM_PLL_OUT 0x2c 302#define IMX8MM_CLK_A53_CG 0x47 303#define IMX8MM_CLK_A53_DIV 0x4c 304#define IMX8MM_CLK_ENET_AXI 0x52 305#define IMX8MM_CLK_NAND_USDHC_BUS 0x53 306#define IMX8MM_CLK_USB_BUS 0x58 307#define IMX8MM_CLK_AHB 0x5d 308#define IMX8MM_CLK_IPG_ROOT 0x5f 309#define IMX8MM_CLK_PCIE1_CTRL 0x67 310#define IMX8MM_CLK_PCIE1_PHY 0x68 311#define IMX8MM_CLK_PCIE1_AUX 0x69 312#define IMX8MM_CLK_ENET_REF 0x74 313#define IMX8MM_CLK_ENET_TIMER 0x75 314#define IMX8MM_CLK_ENET_PHY_REF 0x76 315#define IMX8MM_CLK_USDHC1 0x79 316#define IMX8MM_CLK_USDHC2 0x7a 317#define IMX8MM_CLK_I2C1 0x7b 318#define IMX8MM_CLK_I2C2 0x7c 319#define IMX8MM_CLK_I2C3 0x7d 320#define IMX8MM_CLK_I2C4 0x7e 321#define IMX8MM_CLK_UART1 0x7f 322#define IMX8MM_CLK_UART2 0x80 323#define IMX8MM_CLK_UART3 0x81 324#define IMX8MM_CLK_UART4 0x82 325#define IMX8MM_CLK_USB_CORE_REF 0x83 326#define IMX8MM_CLK_USB_PHY_REF 0x84 327#define IMX8MM_CLK_USDHC3 0x91 328#define IMX8MM_CLK_PCIE2_CTRL 0x98 329#define IMX8MM_CLK_PCIE2_PHY 0x99 330#define IMX8MM_CLK_PCIE2_AUX 0x9a 331#define IMX8MM_CLK_ENET1_ROOT 0xa2 332#define IMX8MM_CLK_I2C1_ROOT 0xa4 333#define IMX8MM_CLK_I2C2_ROOT 0xa5 334#define IMX8MM_CLK_I2C3_ROOT 0xa6 335#define IMX8MM_CLK_I2C4_ROOT 0xa7 336#define IMX8MM_CLK_OCOTP_ROOT 0xa8 337#define IMX8MM_CLK_PCIE1_ROOT 0xa9 338#define IMX8MM_CLK_UART1_ROOT 0xbc 339#define IMX8MM_CLK_UART2_ROOT 0xbd 340#define IMX8MM_CLK_UART3_ROOT 0xbe 341#define IMX8MM_CLK_UART4_ROOT 0xbf 342#define IMX8MM_CLK_USB1_CTRL_ROOT 0xc0 343#define IMX8MM_CLK_USDHC1_ROOT 0xc2 344#define IMX8MM_CLK_USDHC2_ROOT 0xc3 345#define IMX8MM_CLK_USDHC3_ROOT 0xd0 346#define IMX8MM_CLK_TMU_ROOT 0xd1 347#define IMX8MM_CLK_ARM 0xd7 348 349const struct imxccm_gate imx8mm_gates[] = { 350 [IMX8MM_CLK_A53_CG] = { 0x8000, 14 }, 351 [IMX8MM_CLK_ENET_AXI] = { 0x8880, 14 }, 352 [IMX8MM_CLK_NAND_USDHC_BUS] = { 0x8900, 14 }, 353 [IMX8MM_CLK_USB_BUS] = { 0x8b80, 14 }, 354 [IMX8MM_CLK_AHB] = { 0x9000, 14 }, 355 [IMX8MM_CLK_PCIE1_CTRL] = { 0xa300, 14 }, 356 [IMX8MM_CLK_PCIE1_PHY] = { 0xa380, 14 }, 357 [IMX8MM_CLK_PCIE1_AUX] = { 0xa400, 14 }, 358 [IMX8MM_CLK_ENET_REF] = { 0xa980, 14 }, 359 [IMX8MM_CLK_ENET_TIMER] = { 0xaa00, 14 }, 360 [IMX8MM_CLK_ENET_PHY_REF] = { 0xaa80, 14 }, 361 [IMX8MM_CLK_USDHC1] = { 0xac00, 14 }, 362 [IMX8MM_CLK_USDHC2] = { 0xac80, 14 }, 363 [IMX8MM_CLK_I2C1] = { 0xad00, 14 }, 364 [IMX8MM_CLK_I2C2] = { 0xad80, 14 }, 365 [IMX8MM_CLK_I2C3] = { 0xae00, 14 }, 366 [IMX8MM_CLK_I2C4] = { 0xae80, 14 }, 367 [IMX8MM_CLK_UART1] = { 0xaf00, 14 }, 368 [IMX8MM_CLK_UART2] = { 0xaf80, 14 }, 369 [IMX8MM_CLK_UART3] = { 0xb000, 14 }, 370 [IMX8MM_CLK_UART4] = { 0xb080, 14 }, 371 [IMX8MM_CLK_USB_CORE_REF] = { 0xb100, 14 }, 372 [IMX8MM_CLK_USB_PHY_REF] = { 0xb180, 14 }, 373 [IMX8MM_CLK_USDHC3] = { 0xbc80, 14 }, 374 [IMX8MM_CLK_PCIE2_CTRL] = { 0xc000, 24, 0x7 }, 375 [IMX8MM_CLK_PCIE2_PHY] = { 0xc080, 24, 0x7 }, 376 [IMX8MM_CLK_PCIE2_AUX] = { 0xc100, 24, 0x7 }, 377 [IMX8MM_CLK_ENET1_ROOT] = { 0x40a0, 0, IMX8MM_CLK_ENET_AXI }, 378 [IMX8MM_CLK_I2C1_ROOT] = { 0x4170, 0, IMX8MM_CLK_I2C1 }, 379 [IMX8MM_CLK_I2C2_ROOT] = { 0x4180, 0, IMX8MM_CLK_I2C2 }, 380 [IMX8MM_CLK_I2C3_ROOT] = { 0x4190, 0, IMX8MM_CLK_I2C3 }, 381 [IMX8MM_CLK_I2C4_ROOT] = { 0x41a0, 0, IMX8MM_CLK_I2C4 }, 382 [IMX8MM_CLK_OCOTP_ROOT] = { 0x4220, 0, IMX8MM_CLK_IPG_ROOT }, 383 [IMX8MM_CLK_PCIE1_ROOT] = { 0x4250, 0, IMX8MM_CLK_PCIE1_CTRL }, 384 [IMX8MM_CLK_UART1_ROOT] = { 0x4490, 0, IMX8MM_CLK_UART1 }, 385 [IMX8MM_CLK_UART2_ROOT] = { 0x44a0, 0, IMX8MM_CLK_UART2 }, 386 [IMX8MM_CLK_UART3_ROOT] = { 0x44b0, 0, IMX8MM_CLK_UART3 }, 387 [IMX8MM_CLK_UART4_ROOT] = { 0x44c0, 0, IMX8MM_CLK_UART4 }, 388 [IMX8MM_CLK_USB1_CTRL_ROOT] = { 0x44d0, 0, IMX8MM_CLK_USB_BUS }, 389 [IMX8MM_CLK_USDHC1_ROOT] = { 0x4510, 0, IMX8MM_CLK_USDHC1 }, 390 [IMX8MM_CLK_USDHC2_ROOT] = { 0x4520, 0, IMX8MM_CLK_USDHC2 }, 391 [IMX8MM_CLK_USDHC3_ROOT] = { 0x45e0, 0, IMX8MM_CLK_USDHC3 }, 392 [IMX8MM_CLK_TMU_ROOT] = { 0x4620, 0 }, 393}; 394 395const struct imxccm_divider imx8mm_divs[] = { 396 [IMX8MM_CLK_A53_DIV] = { 0x8000, 0, 0x7, IMX8MM_CLK_A53_CG }, 397 [IMX8MM_CLK_ENET_AXI] = { 0x8880, 0, 0x3f }, 398 [IMX8MM_CLK_NAND_USDHC_BUS] = { 0x8900, 0, 0x3f }, 399 [IMX8MM_CLK_USB_BUS] = { 0x8b80, 0, 0x3f }, 400 [IMX8MM_CLK_AHB] = { 0x9000, 0, 0x3f }, 401 [IMX8MM_CLK_IPG_ROOT] = { 0x9080, 0, 0x1, IMX8MM_CLK_AHB }, 402 [IMX8MM_CLK_PCIE1_CTRL] = { 0xa300, 0, 0x3f }, 403 [IMX8MM_CLK_PCIE1_PHY] = { 0xa380, 0, 0x3f }, 404 [IMX8MM_CLK_PCIE1_AUX] = { 0xa400, 0, 0x3f }, 405 [IMX8MM_CLK_USDHC1] = { 0xac00, 0, 0x3f }, 406 [IMX8MM_CLK_USDHC2] = { 0xac80, 0, 0x3f }, 407 [IMX8MM_CLK_I2C1] = { 0xad00, 0, 0x3f }, 408 [IMX8MM_CLK_I2C2] = { 0xad80, 0, 0x3f }, 409 [IMX8MM_CLK_I2C3] = { 0xae00, 0, 0x3f }, 410 [IMX8MM_CLK_I2C4] = { 0xae80, 0, 0x3f }, 411 [IMX8MM_CLK_UART1] = { 0xaf00, 0, 0x3f }, 412 [IMX8MM_CLK_UART2] = { 0xaf80, 0, 0x3f }, 413 [IMX8MM_CLK_UART3] = { 0xb000, 0, 0x3f }, 414 [IMX8MM_CLK_UART4] = { 0xb080, 0, 0x3f }, 415 [IMX8MM_CLK_USB_CORE_REF] = { 0xb100, 0, 0x3f }, 416 [IMX8MM_CLK_USB_PHY_REF] = { 0xb180, 0, 0x3f }, 417 [IMX8MM_CLK_USDHC3] = { 0xbc80, 0, 0x3f }, 418 [IMX8MM_CLK_PCIE2_CTRL] = { 0xc000, 0, 0x3f }, 419 [IMX8MM_CLK_PCIE2_PHY] = { 0xc080, 0, 0x3f }, 420 [IMX8MM_CLK_PCIE2_AUX] = { 0xc100, 0, 0x3f }, 421}; 422 423const struct imxccm_divider imx8mm_predivs[] = { 424 [IMX8MM_CLK_ENET_AXI] = { 0x8880, 16, 0x7 }, 425 [IMX8MM_CLK_NAND_USDHC_BUS] = { 0x8900, 16, 0x7 }, 426 [IMX8MM_CLK_USB_BUS] = { 0x8b80, 16, 0x7 }, 427 [IMX8MM_CLK_AHB] = { 0x9000, 16, 0x7 }, 428 [IMX8MM_CLK_PCIE1_CTRL] = { 0xa300, 16, 0x7 }, 429 [IMX8MM_CLK_PCIE1_PHY] = { 0xa380, 16, 0x7 }, 430 [IMX8MM_CLK_PCIE1_AUX] = { 0xa400, 16, 0x7 }, 431 [IMX8MM_CLK_USDHC1] = { 0xac00, 16, 0x7 }, 432 [IMX8MM_CLK_USDHC2] = { 0xac80, 16, 0x7 }, 433 [IMX8MM_CLK_I2C1] = { 0xad00, 16, 0x7 }, 434 [IMX8MM_CLK_I2C2] = { 0xad80, 16, 0x7 }, 435 [IMX8MM_CLK_I2C3] = { 0xae00, 16, 0x7 }, 436 [IMX8MM_CLK_I2C4] = { 0xae80, 16, 0x7 }, 437 [IMX8MM_CLK_UART1] = { 0xaf00, 16, 0x7 }, 438 [IMX8MM_CLK_UART2] = { 0xaf80, 16, 0x7 }, 439 [IMX8MM_CLK_UART3] = { 0xb000, 16, 0x7 }, 440 [IMX8MM_CLK_UART4] = { 0xb080, 16, 0x7 }, 441 [IMX8MM_CLK_USB_CORE_REF] = { 0xb100, 16, 0x7 }, 442 [IMX8MM_CLK_USB_PHY_REF] = { 0xb180, 16, 0x7 }, 443 [IMX8MM_CLK_USDHC3] = { 0xbc80, 16, 0x7 }, 444 [IMX8MM_CLK_PCIE2_CTRL] = { 0xc000, 16, 0x7 }, 445 [IMX8MM_CLK_PCIE2_PHY] = { 0xc080, 16, 0x7 }, 446 [IMX8MM_CLK_PCIE2_AUX] = { 0xc100, 16, 0x7 }, 447}; 448 449const struct imxccm_mux imx8mm_muxs[] = { 450 [IMX8MM_CLK_A53_SRC] = { 0x8000, 24, 0x7 }, 451 [IMX8MM_CLK_ENET_AXI] = { 0x8880, 24, 0x7 }, 452 [IMX8MM_CLK_NAND_USDHC_BUS] = { 0x8900, 24, 0x7 }, 453 [IMX8MM_CLK_USB_BUS] = { 0x8b80, 24, 0x7 }, 454 [IMX8MM_CLK_AHB] = { 0x9000, 24, 0x7 }, 455 [IMX8MM_CLK_PCIE1_CTRL] = { 0xa300, 24, 0x7 }, 456 [IMX8MM_CLK_PCIE1_PHY] = { 0xa380, 24, 0x7 }, 457 [IMX8MM_CLK_PCIE1_AUX] = { 0xa400, 24, 0x7 }, 458 [IMX8MM_CLK_USDHC1] = { 0xac00, 24, 0x7 }, 459 [IMX8MM_CLK_USDHC2] = { 0xac80, 24, 0x7 }, 460 [IMX8MM_CLK_I2C1] = { 0xad00, 24, 0x7 }, 461 [IMX8MM_CLK_I2C2] = { 0xad80, 24, 0x7 }, 462 [IMX8MM_CLK_I2C3] = { 0xae00, 24, 0x7 }, 463 [IMX8MM_CLK_I2C4] = { 0xae80, 24, 0x7 }, 464 [IMX8MM_CLK_UART1] = { 0xaf00, 24, 0x7 }, 465 [IMX8MM_CLK_UART2] = { 0xaf80, 24, 0x7 }, 466 [IMX8MM_CLK_UART3] = { 0xb000, 24, 0x7 }, 467 [IMX8MM_CLK_UART4] = { 0xb080, 24, 0x7 }, 468 [IMX8MM_CLK_USB_CORE_REF] = { 0xb100, 24, 0x7 }, 469 [IMX8MM_CLK_USB_PHY_REF] = { 0xb180, 24, 0x7 }, 470 [IMX8MM_CLK_USDHC3] = { 0xbc80, 24, 0x7 }, 471 [IMX8MM_CLK_PCIE2_CTRL] = { 0xc000, 24, 0x7 }, 472 [IMX8MM_CLK_PCIE2_PHY] = { 0xc080, 24, 0x7 }, 473 [IMX8MM_CLK_PCIE2_AUX] = { 0xc100, 24, 0x7 }, 474}; 475 476/* 477 * i.MX8MP clocks. 478 */ 479 480#define IMX8MP_CLK_24M 0x02 481#define IMX8MP_SYS_PLL1_266M 0x36 482#define IMX8MP_SYS_PLL2_50M 0x39 483#define IMX8MP_SYS_PLL2_100M 0x3a 484#define IMX8MP_SYS_PLL2_125M 0x3b 485#define IMX8MP_SYS_PLL2_500M 0x40 486#define IMX8MP_CLK_ENET_AXI 0x5e 487#define IMX8MP_CLK_NAND_USDHC_BUS 0x5f 488#define IMX8MP_CLK_AHB 0x6b 489#define IMX8MP_CLK_IPG_ROOT 0x6e 490#define IMX8MP_CLK_PCIE_PHY 0x77 491#define IMX8MP_CLK_PCIE_AUX 0x78 492#define IMX8MP_CLK_I2C5 0x79 493#define IMX8MP_CLK_I2C6 0x7a 494#define IMX8MP_CLK_ENET_QOS 0x81 495#define IMX8MP_CLK_ENET_QOS_TIMER 0x82 496#define IMX8MP_CLK_ENET_REF 0x83 497#define IMX8MP_CLK_ENET_TIMER 0x84 498#define IMX8MP_CLK_ENET_PHY_REF 0x85 499#define IMX8MP_CLK_USDHC1 0x88 500#define IMX8MP_CLK_USDHC2 0x89 501#define IMX8MP_CLK_I2C1 0x8a 502#define IMX8MP_CLK_I2C2 0x8b 503#define IMX8MP_CLK_I2C3 0x8c 504#define IMX8MP_CLK_I2C4 0x8d 505#define IMX8MP_CLK_UART1 0x8e 506#define IMX8MP_CLK_UART2 0x8f 507#define IMX8MP_CLK_UART3 0x90 508#define IMX8MP_CLK_UART4 0x91 509#define IMX8MP_CLK_USB_CORE_REF 0x92 510#define IMX8MP_CLK_USB_PHY_REF 0x93 511#define IMX8MP_CLK_USDHC3 0xa9 512#define IMX8MP_CLK_PCIE2_CTRL 0xb0 513#define IMX8MP_CLK_PCIE2_PHY 0xb1 514#define IMX8MP_CLK_ENET1_ROOT 0xc0 515#define IMX8MP_CLK_I2C1_ROOT 0xcd 516#define IMX8MP_CLK_I2C2_ROOT 0xce 517#define IMX8MP_CLK_I2C3_ROOT 0xcf 518#define IMX8MP_CLK_I2C4_ROOT 0xd0 519#define IMX8MP_CLK_PCIE_ROOT 0xd9 520#define IMX8MP_CLK_QOS_ROOT 0xe0 521#define IMX8MP_CLK_QOS_ENET_ROOT 0xe1 522#define IMX8MP_CLK_I2C5_ROOT 0xe7 523#define IMX8MP_CLK_I2C6_ROOT 0xe8 524#define IMX8MP_CLK_ENET_QOS_ROOT 0xed 525#define IMX8MP_CLK_SIM_ENET_ROOT 0xf2 526#define IMX8MP_CLK_UART1_ROOT 0xfb 527#define IMX8MP_CLK_UART2_ROOT 0xfc 528#define IMX8MP_CLK_UART3_ROOT 0xfd 529#define IMX8MP_CLK_UART4_ROOT 0xfe 530#define IMX8MP_CLK_USB_ROOT 0xff 531#define IMX8MP_CLK_USB_PHY_ROOT 0x100 532#define IMX8MP_CLK_USDHC1_ROOT 0x101 533#define IMX8MP_CLK_USDHC2_ROOT 0x102 534#define IMX8MP_CLK_HSIO_ROOT 0x10c 535#define IMX8MP_CLK_USDHC3_ROOT 0x115 536#define IMX8MP_CLK_HSIO_AXI 0x137 537 538const struct imxccm_gate imx8mp_gates[] = { 539 [IMX8MP_CLK_ENET_AXI] = { 0x8880, 14 }, 540 [IMX8MP_CLK_NAND_USDHC_BUS] = { 0x8900, 14 }, 541 [IMX8MP_CLK_AHB] = { 0x9000, 14 }, 542 [IMX8MP_CLK_PCIE_PHY] = { 0xa380, 14 }, 543 [IMX8MP_CLK_PCIE_AUX] = { 0xa400, 14 }, 544 [IMX8MP_CLK_I2C5] = { 0xa480, 14 }, 545 [IMX8MP_CLK_I2C6] = { 0xa500, 14 }, 546 [IMX8MP_CLK_ENET_QOS] = { 0xa880, 14 }, 547 [IMX8MP_CLK_ENET_QOS_TIMER] = { 0xa900, 14 }, 548 [IMX8MP_CLK_ENET_REF] = { 0xa980, 14 }, 549 [IMX8MP_CLK_ENET_TIMER] = { 0xaa00, 14 }, 550 [IMX8MP_CLK_ENET_PHY_REF] = { 0xaa80, 14 }, 551 [IMX8MP_CLK_USDHC1] = { 0xac00, 14 }, 552 [IMX8MP_CLK_USDHC2] = { 0xac80, 14 }, 553 [IMX8MP_CLK_I2C1] = { 0xad00, 14 }, 554 [IMX8MP_CLK_I2C2] = { 0xad80, 14 }, 555 [IMX8MP_CLK_I2C3] = { 0xae00, 14 }, 556 [IMX8MP_CLK_I2C4] = { 0xae80, 14 }, 557 [IMX8MP_CLK_UART1] = { 0xaf00, 14 }, 558 [IMX8MP_CLK_UART2] = { 0xaf80, 14 }, 559 [IMX8MP_CLK_UART3] = { 0xb000, 14 }, 560 [IMX8MP_CLK_UART4] = { 0xb080, 14 }, 561 [IMX8MP_CLK_USB_CORE_REF] = { 0xb100, 14 }, 562 [IMX8MP_CLK_USB_PHY_REF] = { 0xb180, 14 }, 563 [IMX8MP_CLK_USDHC3] = { 0xbc80, 14 }, 564 [IMX8MP_CLK_PCIE2_CTRL] = { 0xc000, 14 }, 565 [IMX8MP_CLK_PCIE2_PHY] = { 0xc080, 14 }, 566 [IMX8MP_CLK_ENET1_ROOT] = { 0x40a0, 0, IMX8MP_CLK_ENET_AXI }, 567 [IMX8MP_CLK_I2C1_ROOT] = { 0x4170, 0, IMX8MP_CLK_I2C1 }, 568 [IMX8MP_CLK_I2C2_ROOT] = { 0x4180, 0, IMX8MP_CLK_I2C2 }, 569 [IMX8MP_CLK_I2C3_ROOT] = { 0x4190, 0, IMX8MP_CLK_I2C3 }, 570 [IMX8MP_CLK_I2C4_ROOT] = { 0x41a0, 0, IMX8MP_CLK_I2C4 }, 571 [IMX8MP_CLK_PCIE_ROOT] = { 0x4250, 0, IMX8MP_CLK_PCIE_AUX }, 572 [IMX8MP_CLK_QOS_ROOT] = { 0x42c0, 0, IMX8MP_CLK_IPG_ROOT }, 573 [IMX8MP_CLK_QOS_ENET_ROOT] = { 0x42e0, 0, IMX8MP_CLK_IPG_ROOT }, 574 [IMX8MP_CLK_I2C5_ROOT] = { 0x4330, 0, IMX8MP_CLK_I2C5 }, 575 [IMX8MP_CLK_I2C6_ROOT] = { 0x4340, 0, IMX8MP_CLK_I2C6 }, 576 [IMX8MP_CLK_ENET_QOS_ROOT] = { 0x43b0, 0, IMX8MP_CLK_SIM_ENET_ROOT }, 577 [IMX8MP_CLK_SIM_ENET_ROOT] = { 0x4400, 0, IMX8MP_CLK_ENET_AXI }, 578 [IMX8MP_CLK_UART1_ROOT] = { 0x4490, 0, IMX8MP_CLK_UART1 }, 579 [IMX8MP_CLK_UART2_ROOT] = { 0x44a0, 0, IMX8MP_CLK_UART2 }, 580 [IMX8MP_CLK_UART3_ROOT] = { 0x44b0, 0, IMX8MP_CLK_UART3 }, 581 [IMX8MP_CLK_UART4_ROOT] = { 0x44c0, 0, IMX8MP_CLK_UART4 }, 582 [IMX8MP_CLK_USB_ROOT] = { 0x44d0, 0 }, 583 [IMX8MP_CLK_USB_PHY_ROOT] = { 0x44f0, 0, IMX8MP_CLK_USB_PHY_REF }, 584 [IMX8MP_CLK_USDHC1_ROOT] = { 0x4510, 0, IMX8MP_CLK_USDHC1 }, 585 [IMX8MP_CLK_USDHC2_ROOT] = { 0x4520, 0, IMX8MP_CLK_USDHC2 }, 586 [IMX8MP_CLK_HSIO_ROOT] = { 0x45c0, 0, IMX8MP_CLK_IPG_ROOT }, 587 [IMX8MP_CLK_USDHC3_ROOT] = { 0x45e0, 0, IMX8MP_CLK_USDHC3 }, 588 [IMX8MP_CLK_HSIO_AXI] = { 0x8400, 14 }, 589}; 590 591const struct imxccm_divider imx8mp_divs[] = { 592 [IMX8MP_CLK_ENET_AXI] = { 0x8880, 0, 0x3f }, 593 [IMX8MP_CLK_NAND_USDHC_BUS] = { 0x8900, 0, 0x3f }, 594 [IMX8MP_CLK_AHB] = { 0x9000, 0, 0x3f }, 595 [IMX8MP_CLK_IPG_ROOT] = { 0x9080, 0, 0x1, IMX8MP_CLK_AHB }, 596 [IMX8MP_CLK_PCIE_PHY] = { 0xa380, 0, 0x3f }, 597 [IMX8MP_CLK_PCIE_AUX] = { 0xa400, 0, 0x3f }, 598 [IMX8MP_CLK_I2C5] = { 0xa480, 0, 0x3f }, 599 [IMX8MP_CLK_I2C6] = { 0xa500, 0, 0x3f }, 600 [IMX8MP_CLK_ENET_QOS] = { 0xa880, 0, 0x3f }, 601 [IMX8MP_CLK_ENET_QOS_TIMER] = { 0xa900, 0, 0x3f }, 602 [IMX8MP_CLK_ENET_REF] = { 0xa980, 0, 0x3f }, 603 [IMX8MP_CLK_ENET_TIMER] = { 0xaa00, 0, 0x3f }, 604 [IMX8MP_CLK_ENET_PHY_REF] = { 0xaa80, 0, 0x3f}, 605 [IMX8MP_CLK_USDHC1] = { 0xac00, 0, 0x3f }, 606 [IMX8MP_CLK_USDHC2] = { 0xac80, 0, 0x3f }, 607 [IMX8MP_CLK_I2C1] = { 0xad00, 0, 0x3f }, 608 [IMX8MP_CLK_I2C2] = { 0xad80, 0, 0x3f }, 609 [IMX8MP_CLK_I2C3] = { 0xae00, 0, 0x3f }, 610 [IMX8MP_CLK_I2C4] = { 0xae80, 0, 0x3f }, 611 [IMX8MP_CLK_UART1] = { 0xaf00, 0, 0x3f }, 612 [IMX8MP_CLK_UART2] = { 0xaf80, 0, 0x3f }, 613 [IMX8MP_CLK_UART3] = { 0xb000, 0, 0x3f }, 614 [IMX8MP_CLK_UART4] = { 0xb080, 0, 0x3f }, 615 [IMX8MP_CLK_USB_CORE_REF] = { 0xb100, 0, 0x3f }, 616 [IMX8MP_CLK_USB_PHY_REF] = { 0xb180, 0, 0x3f }, 617 [IMX8MP_CLK_USDHC3] = { 0xbc80, 0, 0x3f }, 618 [IMX8MP_CLK_PCIE2_CTRL] = { 0xc000, 0, 0x3f }, 619 [IMX8MP_CLK_PCIE2_PHY] = { 0xc080, 0, 0x3f }, 620 [IMX8MP_CLK_HSIO_AXI] = { 0x8400, 0, 0x3f }, 621}; 622 623const struct imxccm_divider imx8mp_predivs[] = { 624 [IMX8MP_CLK_ENET_AXI] = { 0x8880, 16, 0x7 }, 625 [IMX8MP_CLK_NAND_USDHC_BUS] = { 0x8900, 16, 0x7 }, 626 [IMX8MP_CLK_AHB] = { 0x9000, 16, 0x7 }, 627 [IMX8MP_CLK_PCIE_PHY] = { 0xa380, 16, 0x7 }, 628 [IMX8MP_CLK_PCIE_AUX] = { 0xa400, 16, 0x7 }, 629 [IMX8MP_CLK_I2C5] = { 0xa480, 16, 0x7 }, 630 [IMX8MP_CLK_I2C6] = { 0xa500, 16, 0x7 }, 631 [IMX8MP_CLK_ENET_QOS] = { 0xa880, 16, 0x7 }, 632 [IMX8MP_CLK_ENET_QOS_TIMER] = { 0xa900, 16, 0x7 }, 633 [IMX8MP_CLK_ENET_REF] = { 0xa980, 16, 0x7 }, 634 [IMX8MP_CLK_ENET_TIMER] = { 0xaa00, 16, 0x7 }, 635 [IMX8MP_CLK_ENET_PHY_REF] = { 0xaa80, 16, 0x7 }, 636 [IMX8MP_CLK_USDHC1] = { 0xac00, 16, 0x7 }, 637 [IMX8MP_CLK_USDHC2] = { 0xac80, 16, 0x7 }, 638 [IMX8MP_CLK_I2C1] = { 0xad00, 16, 0x7 }, 639 [IMX8MP_CLK_I2C2] = { 0xad80, 16, 0x7 }, 640 [IMX8MP_CLK_I2C3] = { 0xae00, 16, 0x7 }, 641 [IMX8MP_CLK_I2C4] = { 0xae80, 16, 0x7 }, 642 [IMX8MP_CLK_UART1] = { 0xaf00, 16, 0x7 }, 643 [IMX8MP_CLK_UART2] = { 0xaf80, 16, 0x7 }, 644 [IMX8MP_CLK_UART3] = { 0xb000, 16, 0x7 }, 645 [IMX8MP_CLK_UART4] = { 0xb080, 16, 0x7 }, 646 [IMX8MP_CLK_USB_CORE_REF] = { 0xb100, 16, 0x7 }, 647 [IMX8MP_CLK_USB_PHY_REF] = { 0xb180, 16, 0x7 }, 648 [IMX8MP_CLK_USDHC3] = { 0xbc80, 16, 0x7 }, 649 [IMX8MP_CLK_PCIE2_CTRL] = { 0xc000, 16, 0x7 }, 650 [IMX8MP_CLK_PCIE2_PHY] = { 0xc080, 16, 0x7 }, 651 [IMX8MP_CLK_HSIO_AXI] = { 0x8400, 16, 0x7 }, 652}; 653 654const struct imxccm_mux imx8mp_muxs[] = { 655 [IMX8MP_CLK_ENET_AXI] = { 0x8880, 24, 0x7 }, 656 [IMX8MP_CLK_NAND_USDHC_BUS] = { 0x8900, 24, 0x7 }, 657 [IMX8MP_CLK_AHB] = { 0x9000, 24, 0x7 }, 658 [IMX8MP_CLK_PCIE_PHY] = { 0xa380, 24, 0x7 }, 659 [IMX8MP_CLK_PCIE_AUX] = { 0xa400, 24, 0x7 }, 660 [IMX8MP_CLK_I2C5] = { 0xa480, 24, 0x7 }, 661 [IMX8MP_CLK_I2C6] = { 0xa500, 24, 0x7 }, 662 [IMX8MP_CLK_ENET_QOS] = { 0xa880, 24, 0x7 }, 663 [IMX8MP_CLK_ENET_QOS_TIMER] = { 0xa900, 24, 0x7 }, 664 [IMX8MP_CLK_ENET_REF] = { 0xa980, 24, 0x7 }, 665 [IMX8MP_CLK_ENET_TIMER] = { 0xaa00, 24, 0x7 }, 666 [IMX8MP_CLK_ENET_PHY_REF] = { 0xaa80, 24, 0x7 }, 667 [IMX8MP_CLK_USDHC1] = { 0xac00, 24, 0x7 }, 668 [IMX8MP_CLK_USDHC2] = { 0xac80, 24, 0x7 }, 669 [IMX8MP_CLK_I2C1] = { 0xad00, 24, 0x7 }, 670 [IMX8MP_CLK_I2C2] = { 0xad80, 24, 0x7 }, 671 [IMX8MP_CLK_I2C3] = { 0xae00, 24, 0x7 }, 672 [IMX8MP_CLK_I2C4] = { 0xae80, 24, 0x7 }, 673 [IMX8MP_CLK_UART1] = { 0xaf00, 24, 0x7 }, 674 [IMX8MP_CLK_UART2] = { 0xaf80, 24, 0x7 }, 675 [IMX8MP_CLK_UART3] = { 0xb000, 24, 0x7 }, 676 [IMX8MP_CLK_UART4] = { 0xb080, 24, 0x7 }, 677 [IMX8MP_CLK_USB_CORE_REF] = { 0xb100, 24, 0x7 }, 678 [IMX8MP_CLK_USB_PHY_REF] = { 0xb180, 24, 0x7 }, 679 [IMX8MP_CLK_USDHC3] = { 0xbc80, 24, 0x7 }, 680 [IMX8MP_CLK_PCIE2_CTRL] = { 0xc000, 24, 0x7 }, 681 [IMX8MP_CLK_PCIE2_PHY] = { 0xc080, 24, 0x7 }, 682 [IMX8MP_CLK_HSIO_AXI] = { 0x8400, 24, 0x7 }, 683}; 684 685/* 686 * i.MX8MQ clocks. 687 */ 688 689#define IMX8MQ_CLK_32K 0x01 690#define IMX8MQ_ARM_PLL 0x0a 691#define IMX8MQ_ARM_PLL_OUT 0x0c 692#define IMX8MQ_SYS1_PLL_100M 0x48 693#define IMX8MQ_SYS1_PLL_266M 0x4c 694#define IMX8MQ_SYS1_PLL_400M 0x4d 695#define IMX8MQ_SYS1_PLL_800M 0x4e 696#define IMX8MQ_SYS2_PLL_100M 0x50 697#define IMX8MQ_SYS2_PLL_250M 0x54 698#define IMX8MQ_SYS2_PLL_500M 0x56 699#define IMX8MQ_CLK_A53_SRC 0x58 700#define IMX8MQ_CLK_A53_CG 0x59 701#define IMX8MQ_CLK_A53_DIV 0x5a 702#define IMX8MQ_CLK_ENET_AXI 0x68 703#define IMX8MQ_CLK_NAND_USDHC_BUS 0x69 704#define IMX8MQ_CLK_USB_BUS 0x6e 705#define IMX8MQ_CLK_AHB 0x74 706#define IMX8MQ_CLK_PCIE1_CTRL 0x7c 707#define IMX8MQ_CLK_PCIE1_PHY 0x7d 708#define IMX8MQ_CLK_PCIE1_AUX 0x7e 709#define IMX8MQ_CLK_ENET_REF 0x89 710#define IMX8MQ_CLK_ENET_TIMER 0x8a 711#define IMX8MQ_CLK_ENET_PHY_REF 0x8b 712#define IMX8MQ_CLK_USDHC1 0x8e 713#define IMX8MQ_CLK_USDHC2 0x8f 714#define IMX8MQ_CLK_I2C1 0x90 715#define IMX8MQ_CLK_I2C2 0x91 716#define IMX8MQ_CLK_I2C3 0x92 717#define IMX8MQ_CLK_I2C4 0x93 718#define IMX8MQ_CLK_UART1 0x94 719#define IMX8MQ_CLK_UART2 0x95 720#define IMX8MQ_CLK_UART3 0x96 721#define IMX8MQ_CLK_UART4 0x97 722#define IMX8MQ_CLK_USB_CORE_REF 0x98 723#define IMX8MQ_CLK_USB_PHY_REF 0x99 724#define IMX8MQ_CLK_ECSPI1 0x9a 725#define IMX8MQ_CLK_ECSPI2 0x9b 726#define IMX8MQ_CLK_PWM1 0x9c 727#define IMX8MQ_CLK_PWM2 0x9d 728#define IMX8MQ_CLK_PWM3 0x9e 729#define IMX8MQ_CLK_PWM4 0x9f 730#define IMX8MQ_CLK_PCIE2_CTRL 0xad 731#define IMX8MQ_CLK_PCIE2_PHY 0xae 732#define IMX8MQ_CLK_PCIE2_AUX 0xaf 733#define IMX8MQ_CLK_ECSPI3 0xb0 734#define IMX8MQ_CLK_ECSPI1_ROOT 0xb3 735#define IMX8MQ_CLK_ECSPI2_ROOT 0xb4 736#define IMX8MQ_CLK_ECSPI3_ROOT 0xb5 737#define IMX8MQ_CLK_ENET1_ROOT 0xb6 738#define IMX8MQ_CLK_I2C1_ROOT 0xb8 739#define IMX8MQ_CLK_I2C2_ROOT 0xb9 740#define IMX8MQ_CLK_I2C3_ROOT 0xba 741#define IMX8MQ_CLK_I2C4_ROOT 0xbb 742#define IMX8MQ_CLK_PCIE1_ROOT 0xbd 743#define IMX8MQ_CLK_PCIE2_ROOT 0xbe 744#define IMX8MQ_CLK_PWM1_ROOT 0xbf 745#define IMX8MQ_CLK_PWM2_ROOT 0xc0 746#define IMX8MQ_CLK_PWM3_ROOT 0xc1 747#define IMX8MQ_CLK_PWM4_ROOT 0xc2 748#define IMX8MQ_CLK_UART1_ROOT 0xca 749#define IMX8MQ_CLK_UART2_ROOT 0xcb 750#define IMX8MQ_CLK_UART3_ROOT 0xcc 751#define IMX8MQ_CLK_UART4_ROOT 0xcd 752#define IMX8MQ_CLK_USB1_CTRL_ROOT 0xce 753#define IMX8MQ_CLK_USB2_CTRL_ROOT 0xcf 754#define IMX8MQ_CLK_USB1_PHY_ROOT 0xd0 755#define IMX8MQ_CLK_USB2_PHY_ROOT 0xd1 756#define IMX8MQ_CLK_USDHC1_ROOT 0xd2 757#define IMX8MQ_CLK_USDHC2_ROOT 0xd3 758#define IMX8MQ_CLK_IPG_ROOT 0xec 759#define IMX8MQ_CLK_TMU_ROOT 0xf6 760#define IMX8MQ_CLK_OCOTP_ROOT 0xfa 761#define IMX8MQ_CLK_ARM 0x102 762 763const struct imxccm_gate imx8mq_gates[] = { 764 [IMX8MQ_CLK_A53_CG] = { 0x8000, 14 }, 765 [IMX8MQ_CLK_ENET_AXI] = { 0x8880, 14 }, 766 [IMX8MQ_CLK_NAND_USDHC_BUS] = { 0x8900, 14 }, 767 [IMX8MQ_CLK_USB_BUS] = { 0x8b80, 14 }, 768 [IMX8MQ_CLK_AHB] = { 0x9000, 14 }, 769 [IMX8MQ_CLK_PCIE1_CTRL] = { 0xa300, 14 }, 770 [IMX8MQ_CLK_PCIE1_PHY] = { 0xa380, 14 }, 771 [IMX8MQ_CLK_PCIE1_AUX] = { 0xa400, 14 }, 772 [IMX8MQ_CLK_ENET_REF] = { 0xa980, 14 }, 773 [IMX8MQ_CLK_ENET_TIMER] = { 0xaa00, 14 }, 774 [IMX8MQ_CLK_ENET_PHY_REF] = { 0xaa80, 14 }, 775 [IMX8MQ_CLK_USDHC1] = { 0xac00, 14 }, 776 [IMX8MQ_CLK_USDHC2] = { 0xac80, 14 }, 777 [IMX8MQ_CLK_I2C1] = { 0xad00, 14 }, 778 [IMX8MQ_CLK_I2C2] = { 0xad80, 14 }, 779 [IMX8MQ_CLK_I2C3] = { 0xae00, 14 }, 780 [IMX8MQ_CLK_I2C4] = { 0xae80, 14 }, 781 [IMX8MQ_CLK_UART1] = { 0xaf00, 14 }, 782 [IMX8MQ_CLK_UART2] = { 0xaf80, 14 }, 783 [IMX8MQ_CLK_UART3] = { 0xb000, 14 }, 784 [IMX8MQ_CLK_UART4] = { 0xb080, 14 }, 785 [IMX8MQ_CLK_USB_CORE_REF] = { 0xb100, 14 }, 786 [IMX8MQ_CLK_USB_PHY_REF] = { 0xb180, 14 }, 787 [IMX8MQ_CLK_ECSPI1] = { 0xb280, 14 }, 788 [IMX8MQ_CLK_ECSPI2] = { 0xb300, 14 }, 789 [IMX8MQ_CLK_PWM1] = { 0xb380, 14 }, 790 [IMX8MQ_CLK_PWM2] = { 0xb400, 14 }, 791 [IMX8MQ_CLK_PWM3] = { 0xb480, 14 }, 792 [IMX8MQ_CLK_PWM4] = { 0xb500, 14 }, 793 [IMX8MQ_CLK_PCIE2_CTRL] = { 0xc000, 14 }, 794 [IMX8MQ_CLK_PCIE2_PHY] = { 0xc080, 14 }, 795 [IMX8MQ_CLK_PCIE2_AUX] = { 0xc100, 14 }, 796 [IMX8MQ_CLK_ECSPI3] = { 0xc180, 14 }, 797 [IMX8MQ_CLK_ECSPI1_ROOT] = { 0x4070, 0, IMX8MQ_CLK_ECSPI1 }, 798 [IMX8MQ_CLK_ECSPI2_ROOT] = { 0x4080, 0, IMX8MQ_CLK_ECSPI2 }, 799 [IMX8MQ_CLK_ECSPI3_ROOT] = { 0x4090, 0, IMX8MQ_CLK_ECSPI3 }, 800 [IMX8MQ_CLK_ENET1_ROOT] = { 0x40a0, 0, IMX8MQ_CLK_ENET_AXI }, 801 [IMX8MQ_CLK_I2C1_ROOT] = { 0x4170, 0, IMX8MQ_CLK_I2C1 }, 802 [IMX8MQ_CLK_I2C2_ROOT] = { 0x4180, 0, IMX8MQ_CLK_I2C2 }, 803 [IMX8MQ_CLK_I2C3_ROOT] = { 0x4190, 0, IMX8MQ_CLK_I2C3 }, 804 [IMX8MQ_CLK_I2C4_ROOT] = { 0x41a0, 0, IMX8MQ_CLK_I2C4 }, 805 [IMX8MQ_CLK_PCIE1_ROOT] = { 0x4250, 0, IMX8MQ_CLK_PCIE1_CTRL }, 806 [IMX8MQ_CLK_PCIE2_ROOT] = { 0x4640, 0, IMX8MQ_CLK_PCIE2_CTRL }, 807 [IMX8MQ_CLK_PWM1_ROOT] = { 0x4280, 0, IMX8MQ_CLK_PWM1 }, 808 [IMX8MQ_CLK_PWM2_ROOT] = { 0x4290, 0, IMX8MQ_CLK_PWM2 }, 809 [IMX8MQ_CLK_PWM3_ROOT] = { 0x42a0, 0, IMX8MQ_CLK_PWM3 }, 810 [IMX8MQ_CLK_PWM4_ROOT] = { 0x42b0, 0, IMX8MQ_CLK_PWM4 }, 811 [IMX8MQ_CLK_UART1_ROOT] = { 0x4490, 0, IMX8MQ_CLK_UART1 }, 812 [IMX8MQ_CLK_UART2_ROOT] = { 0x44a0, 0, IMX8MQ_CLK_UART2 }, 813 [IMX8MQ_CLK_UART3_ROOT] = { 0x44b0, 0, IMX8MQ_CLK_UART3 }, 814 [IMX8MQ_CLK_UART4_ROOT] = { 0x44c0, 0, IMX8MQ_CLK_UART4 }, 815 [IMX8MQ_CLK_USB1_CTRL_ROOT] = { 0x44d0, 0, IMX8MQ_CLK_USB_BUS }, 816 [IMX8MQ_CLK_USB2_CTRL_ROOT] = { 0x44e0, 0, IMX8MQ_CLK_USB_BUS }, 817 [IMX8MQ_CLK_USB1_PHY_ROOT] = { 0x44f0, 0, IMX8MQ_CLK_USB_PHY_REF }, 818 [IMX8MQ_CLK_USB2_PHY_ROOT] = { 0x4500, 0, IMX8MQ_CLK_USB_PHY_REF }, 819 [IMX8MQ_CLK_USDHC1_ROOT] = { 0x4510, 0, IMX8MQ_CLK_USDHC1 }, 820 [IMX8MQ_CLK_USDHC2_ROOT] = { 0x4520, 0, IMX8MQ_CLK_USDHC2 }, 821 [IMX8MQ_CLK_TMU_ROOT] = { 0x4620, 0 }, 822 [IMX8MQ_CLK_OCOTP_ROOT] = { 0x4220, 0, IMX8MQ_CLK_IPG_ROOT }, 823}; 824 825const struct imxccm_divider imx8mq_divs[] = { 826 [IMX8MQ_CLK_A53_DIV] = { 0x8000, 0, 0x7, IMX8MQ_CLK_A53_CG }, 827 [IMX8MQ_CLK_ENET_AXI] = { 0x8880, 0, 0x3f }, 828 [IMX8MQ_CLK_NAND_USDHC_BUS] = { 0x8900, 0, 0x3f }, 829 [IMX8MQ_CLK_USB_BUS] = { 0x8b80, 0, 0x3f }, 830 [IMX8MQ_CLK_AHB] = { 0x9000, 0, 0x3f }, 831 [IMX8MQ_CLK_PCIE1_CTRL] = { 0xa300, 0, 0x3f }, 832 [IMX8MQ_CLK_PCIE1_PHY] = { 0xa380, 0, 0x3f }, 833 [IMX8MQ_CLK_PCIE1_AUX] = { 0xa400, 0, 0x3f }, 834 [IMX8MQ_CLK_ENET_REF] = { 0xa980, 0, 0x3f }, 835 [IMX8MQ_CLK_ENET_TIMER] = { 0xaa00, 0, 0x3f }, 836 [IMX8MQ_CLK_ENET_PHY_REF] = { 0xaa80, 0, 0x3f }, 837 [IMX8MQ_CLK_USDHC1] = { 0xac00, 0, 0x3f }, 838 [IMX8MQ_CLK_USDHC2] = { 0xac80, 0, 0x3f }, 839 [IMX8MQ_CLK_I2C1] = { 0xad00, 0, 0x3f }, 840 [IMX8MQ_CLK_I2C2] = { 0xad80, 0, 0x3f }, 841 [IMX8MQ_CLK_I2C3] = { 0xae00, 0, 0x3f }, 842 [IMX8MQ_CLK_I2C4] = { 0xae80, 0, 0x3f }, 843 [IMX8MQ_CLK_UART1] = { 0xaf00, 0, 0x3f }, 844 [IMX8MQ_CLK_UART2] = { 0xaf80, 0, 0x3f }, 845 [IMX8MQ_CLK_UART3] = { 0xb000, 0, 0x3f }, 846 [IMX8MQ_CLK_UART4] = { 0xb080, 0, 0x3f }, 847 [IMX8MQ_CLK_USB_CORE_REF] = { 0xb100, 0, 0x3f }, 848 [IMX8MQ_CLK_USB_PHY_REF] = { 0xb180, 0, 0x3f }, 849 [IMX8MQ_CLK_ECSPI1] = { 0xb280, 0, 0x3f }, 850 [IMX8MQ_CLK_ECSPI2] = { 0xb300, 0, 0x3f }, 851 [IMX8MQ_CLK_PWM1] = { 0xb380, 0, 0x3f }, 852 [IMX8MQ_CLK_PWM2] = { 0xb400, 0, 0x3f }, 853 [IMX8MQ_CLK_PWM3] = { 0xb480, 0, 0x3f }, 854 [IMX8MQ_CLK_PWM4] = { 0xb500, 0, 0x3f }, 855 [IMX8MQ_CLK_PCIE2_CTRL] = { 0xc000, 0, 0x3f }, 856 [IMX8MQ_CLK_PCIE2_PHY] = { 0xc080, 0, 0x3f }, 857 [IMX8MQ_CLK_PCIE2_AUX] = { 0xc100, 0, 0x3f }, 858 [IMX8MQ_CLK_ECSPI3] = { 0xc180, 0, 0x3f }, 859 [IMX8MQ_CLK_IPG_ROOT] = { 0x9080, 0, 0x1, IMX8MQ_CLK_AHB }, 860}; 861 862const struct imxccm_divider imx8mq_predivs[] = { 863 [IMX8MQ_CLK_ENET_AXI] = { 0x8880, 16, 0x7 }, 864 [IMX8MQ_CLK_NAND_USDHC_BUS] = { 0x8900, 16, 0x7 }, 865 [IMX8MQ_CLK_USB_BUS] = { 0x8b80, 16, 0x7 }, 866 [IMX8MQ_CLK_AHB] = { 0x9000, 16, 0x7 }, 867 [IMX8MQ_CLK_PCIE1_CTRL] = { 0xa300, 16, 0x7 }, 868 [IMX8MQ_CLK_PCIE1_PHY] = { 0xa380, 16, 0x7 }, 869 [IMX8MQ_CLK_PCIE1_AUX] = { 0xa400, 16, 0x7 }, 870 [IMX8MQ_CLK_ENET_REF] = { 0xa980, 16, 0x7 }, 871 [IMX8MQ_CLK_ENET_TIMER] = { 0xaa00, 16, 0x7 }, 872 [IMX8MQ_CLK_ENET_PHY_REF] = { 0xaa80, 16, 0x7 }, 873 [IMX8MQ_CLK_USDHC1] = { 0xac00, 16, 0x7 }, 874 [IMX8MQ_CLK_USDHC2] = { 0xac80, 16, 0x7 }, 875 [IMX8MQ_CLK_I2C1] = { 0xad00, 16, 0x7 }, 876 [IMX8MQ_CLK_I2C2] = { 0xad80, 16, 0x7 }, 877 [IMX8MQ_CLK_I2C3] = { 0xae00, 16, 0x7 }, 878 [IMX8MQ_CLK_I2C4] = { 0xae80, 16, 0x7 }, 879 [IMX8MQ_CLK_UART1] = { 0xaf00, 16, 0x7 }, 880 [IMX8MQ_CLK_UART2] = { 0xaf80, 16, 0x7 }, 881 [IMX8MQ_CLK_UART3] = { 0xb000, 16, 0x7 }, 882 [IMX8MQ_CLK_UART4] = { 0xb080, 16, 0x7 }, 883 [IMX8MQ_CLK_USB_CORE_REF] = { 0xb100, 16, 0x7 }, 884 [IMX8MQ_CLK_USB_PHY_REF] = { 0xb180, 16, 0x7 }, 885 [IMX8MQ_CLK_ECSPI1] = { 0xb280, 16, 0x7 }, 886 [IMX8MQ_CLK_ECSPI2] = { 0xb300, 16, 0x7 }, 887 [IMX8MQ_CLK_PWM1] = { 0xb380, 16, 0x7 }, 888 [IMX8MQ_CLK_PWM2] = { 0xb400, 16, 0x7 }, 889 [IMX8MQ_CLK_PWM3] = { 0xb480, 16, 0x7 }, 890 [IMX8MQ_CLK_PWM4] = { 0xb500, 16, 0x7 }, 891 [IMX8MQ_CLK_PCIE2_CTRL] = { 0xc000, 16, 0x7 }, 892 [IMX8MQ_CLK_PCIE2_PHY] = { 0xc080, 16, 0x7 }, 893 [IMX8MQ_CLK_PCIE2_AUX] = { 0xc100, 16, 0x7 }, 894 [IMX8MQ_CLK_ECSPI3] = { 0xc180, 16, 0x7 }, 895}; 896 897const struct imxccm_mux imx8mq_muxs[] = { 898 [IMX8MQ_CLK_A53_SRC] = { 0x8000, 24, 0x7 }, 899 [IMX8MQ_CLK_ENET_AXI] = { 0x8880, 24, 0x7 }, 900 [IMX8MQ_CLK_NAND_USDHC_BUS] = { 0x8900, 24, 0x7 }, 901 [IMX8MQ_CLK_USB_BUS] = { 0x8b80, 24, 0x7 }, 902 [IMX8MQ_CLK_AHB] = { 0x9000, 24, 0x7 }, 903 [IMX8MQ_CLK_PCIE1_CTRL] = { 0xa300, 24, 0x7 }, 904 [IMX8MQ_CLK_PCIE1_PHY] = { 0xa380, 24, 0x7 }, 905 [IMX8MQ_CLK_PCIE1_AUX] = { 0xa400, 24, 0x7 }, 906 [IMX8MQ_CLK_ENET_REF] = { 0xa980, 24, 0x7 }, 907 [IMX8MQ_CLK_ENET_TIMER] = { 0xaa00, 24, 0x7 }, 908 [IMX8MQ_CLK_ENET_PHY_REF] = { 0xaa80, 24, 0x7 }, 909 [IMX8MQ_CLK_USDHC1] = { 0xac00, 24, 0x7 }, 910 [IMX8MQ_CLK_USDHC2] = { 0xac80, 24, 0x7 }, 911 [IMX8MQ_CLK_I2C1] = { 0xad00, 24, 0x7 }, 912 [IMX8MQ_CLK_I2C2] = { 0xad80, 24, 0x7 }, 913 [IMX8MQ_CLK_I2C3] = { 0xae00, 24, 0x7 }, 914 [IMX8MQ_CLK_I2C4] = { 0xae80, 24, 0x7 }, 915 [IMX8MQ_CLK_UART1] = { 0xaf00, 24, 0x7 }, 916 [IMX8MQ_CLK_UART2] = { 0xaf80, 24, 0x7 }, 917 [IMX8MQ_CLK_UART3] = { 0xb000, 24, 0x7 }, 918 [IMX8MQ_CLK_UART4] = { 0xb080, 24, 0x7 }, 919 [IMX8MQ_CLK_USB_CORE_REF] = { 0xb100, 24, 0x7 }, 920 [IMX8MQ_CLK_USB_PHY_REF] = { 0xb180, 24, 0x7 }, 921 [IMX8MQ_CLK_ECSPI1] = { 0xb280, 24, 0x7 }, 922 [IMX8MQ_CLK_ECSPI2] = { 0xb300, 24, 0x7 }, 923 [IMX8MQ_CLK_PWM1] = { 0xb380, 24, 0x7 }, 924 [IMX8MQ_CLK_PWM2] = { 0xb400, 24, 0x7 }, 925 [IMX8MQ_CLK_PWM3] = { 0xb480, 24, 0x7 }, 926 [IMX8MQ_CLK_PWM4] = { 0xb500, 24, 0x7 }, 927 [IMX8MQ_CLK_PCIE2_CTRL] = { 0xc000, 24, 0x7 }, 928 [IMX8MQ_CLK_PCIE2_PHY] = { 0xc080, 24, 0x7 }, 929 [IMX8MQ_CLK_PCIE2_AUX] = { 0xc100, 24, 0x7 }, 930 [IMX8MQ_CLK_ECSPI3] = { 0xc180, 24, 0x7 }, 931}; 932