1*aec89f78SBastian Köcher /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. 2*aec89f78SBastian Köcher * 3*aec89f78SBastian Köcher * This program is free software; you can redistribute it and/or modify 4*aec89f78SBastian Köcher * it under the terms of the GNU General Public License version 2 and 5*aec89f78SBastian Köcher * only version 2 as published by the Free Software Foundation. 6*aec89f78SBastian Köcher * 7*aec89f78SBastian Köcher * This program is distributed in the hope that it will be useful, 8*aec89f78SBastian Köcher * but WITHOUT ANY WARRANTY; without even the implied warranty of 9*aec89f78SBastian Köcher * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10*aec89f78SBastian Köcher * GNU General Public License for more details. 11*aec89f78SBastian Köcher */ 12*aec89f78SBastian Köcher 13*aec89f78SBastian Köcher #include <linux/kernel.h> 14*aec89f78SBastian Köcher #include <linux/init.h> 15*aec89f78SBastian Köcher #include <linux/err.h> 16*aec89f78SBastian Köcher #include <linux/ctype.h> 17*aec89f78SBastian Köcher #include <linux/io.h> 18*aec89f78SBastian Köcher #include <linux/of.h> 19*aec89f78SBastian Köcher #include <linux/platform_device.h> 20*aec89f78SBastian Köcher #include <linux/module.h> 21*aec89f78SBastian Köcher #include <linux/regmap.h> 22*aec89f78SBastian Köcher 23*aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h> 24*aec89f78SBastian Köcher 25*aec89f78SBastian Köcher #include "common.h" 26*aec89f78SBastian Köcher #include "clk-regmap.h" 27*aec89f78SBastian Köcher #include "clk-alpha-pll.h" 28*aec89f78SBastian Köcher #include "clk-rcg.h" 29*aec89f78SBastian Köcher #include "clk-branch.h" 30*aec89f78SBastian Köcher #include "reset.h" 31*aec89f78SBastian Köcher 32*aec89f78SBastian Köcher enum { 33*aec89f78SBastian Köcher P_XO, 34*aec89f78SBastian Köcher P_GPLL0, 35*aec89f78SBastian Köcher P_GPLL4, 36*aec89f78SBastian Köcher }; 37*aec89f78SBastian Köcher 38*aec89f78SBastian Köcher static const struct parent_map gcc_xo_gpll0_map[] = { 39*aec89f78SBastian Köcher { P_XO, 0 }, 40*aec89f78SBastian Köcher { P_GPLL0, 1 }, 41*aec89f78SBastian Köcher }; 42*aec89f78SBastian Köcher 43*aec89f78SBastian Köcher static const char * const gcc_xo_gpll0[] = { 44*aec89f78SBastian Köcher "xo", 45*aec89f78SBastian Köcher "gpll0", 46*aec89f78SBastian Köcher }; 47*aec89f78SBastian Köcher 48*aec89f78SBastian Köcher static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 49*aec89f78SBastian Köcher { P_XO, 0 }, 50*aec89f78SBastian Köcher { P_GPLL0, 1 }, 51*aec89f78SBastian Köcher { P_GPLL4, 5 }, 52*aec89f78SBastian Köcher }; 53*aec89f78SBastian Köcher 54*aec89f78SBastian Köcher static const char * const gcc_xo_gpll0_gpll4[] = { 55*aec89f78SBastian Köcher "xo", 56*aec89f78SBastian Köcher "gpll0", 57*aec89f78SBastian Köcher "gpll4", 58*aec89f78SBastian Köcher }; 59*aec89f78SBastian Köcher 60*aec89f78SBastian Köcher #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } 61*aec89f78SBastian Köcher 62*aec89f78SBastian Köcher static struct clk_fixed_factor xo = { 63*aec89f78SBastian Köcher .mult = 1, 64*aec89f78SBastian Köcher .div = 1, 65*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 66*aec89f78SBastian Köcher { 67*aec89f78SBastian Köcher .name = "xo", 68*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo_board" }, 69*aec89f78SBastian Köcher .num_parents = 1, 70*aec89f78SBastian Köcher .ops = &clk_fixed_factor_ops, 71*aec89f78SBastian Köcher }, 72*aec89f78SBastian Köcher }; 73*aec89f78SBastian Köcher 74*aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = { 75*aec89f78SBastian Köcher .offset = 0x00000, 76*aec89f78SBastian Köcher .clkr = { 77*aec89f78SBastian Köcher .enable_reg = 0x1480, 78*aec89f78SBastian Köcher .enable_mask = BIT(0), 79*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 80*aec89f78SBastian Köcher { 81*aec89f78SBastian Köcher .name = "gpll0_early", 82*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 83*aec89f78SBastian Köcher .num_parents = 1, 84*aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 85*aec89f78SBastian Köcher }, 86*aec89f78SBastian Köcher }, 87*aec89f78SBastian Köcher }; 88*aec89f78SBastian Köcher 89*aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = { 90*aec89f78SBastian Köcher .offset = 0x00000, 91*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 92*aec89f78SBastian Köcher { 93*aec89f78SBastian Köcher .name = "gpll0", 94*aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll0_early" }, 95*aec89f78SBastian Köcher .num_parents = 1, 96*aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 97*aec89f78SBastian Köcher }, 98*aec89f78SBastian Köcher }; 99*aec89f78SBastian Köcher 100*aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = { 101*aec89f78SBastian Köcher .offset = 0x1dc0, 102*aec89f78SBastian Köcher .clkr = { 103*aec89f78SBastian Köcher .enable_reg = 0x1480, 104*aec89f78SBastian Köcher .enable_mask = BIT(4), 105*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 106*aec89f78SBastian Köcher { 107*aec89f78SBastian Köcher .name = "gpll4_early", 108*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 109*aec89f78SBastian Köcher .num_parents = 1, 110*aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 111*aec89f78SBastian Köcher }, 112*aec89f78SBastian Köcher }, 113*aec89f78SBastian Köcher }; 114*aec89f78SBastian Köcher 115*aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = { 116*aec89f78SBastian Köcher .offset = 0x1dc0, 117*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 118*aec89f78SBastian Köcher { 119*aec89f78SBastian Köcher .name = "gpll4", 120*aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll4_early" }, 121*aec89f78SBastian Köcher .num_parents = 1, 122*aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 123*aec89f78SBastian Köcher }, 124*aec89f78SBastian Köcher }; 125*aec89f78SBastian Köcher 126*aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 127*aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 128*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 129*aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 130*aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 131*aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 132*aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 133*aec89f78SBastian Köcher { } 134*aec89f78SBastian Köcher }; 135*aec89f78SBastian Köcher 136*aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 137*aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 138*aec89f78SBastian Köcher .mnd_width = 8, 139*aec89f78SBastian Köcher .hid_width = 5, 140*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 141*aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 142*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 143*aec89f78SBastian Köcher { 144*aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 145*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 146*aec89f78SBastian Köcher .num_parents = 2, 147*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 148*aec89f78SBastian Köcher }, 149*aec89f78SBastian Köcher }; 150*aec89f78SBastian Köcher 151*aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 152*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 153*aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 154*aec89f78SBastian Köcher { } 155*aec89f78SBastian Köcher }; 156*aec89f78SBastian Köcher 157*aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 158*aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 159*aec89f78SBastian Köcher .mnd_width = 8, 160*aec89f78SBastian Köcher .hid_width = 5, 161*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 162*aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 163*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 164*aec89f78SBastian Köcher { 165*aec89f78SBastian Köcher .name = "usb30_master_clk_src", 166*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 167*aec89f78SBastian Köcher .num_parents = 2, 168*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 169*aec89f78SBastian Köcher }, 170*aec89f78SBastian Köcher }; 171*aec89f78SBastian Köcher 172*aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 173*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 174*aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 175*aec89f78SBastian Köcher { } 176*aec89f78SBastian Köcher }; 177*aec89f78SBastian Köcher 178*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 179*aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 180*aec89f78SBastian Köcher .hid_width = 5, 181*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 182*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 183*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 184*aec89f78SBastian Köcher { 185*aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 186*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 187*aec89f78SBastian Köcher .num_parents = 2, 188*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 189*aec89f78SBastian Köcher }, 190*aec89f78SBastian Köcher }; 191*aec89f78SBastian Köcher 192*aec89f78SBastian Köcher static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = { 193*aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 194*aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 195*aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 196*aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 197*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 198*aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 199*aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 200*aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 201*aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 202*aec89f78SBastian Köcher { } 203*aec89f78SBastian Köcher }; 204*aec89f78SBastian Köcher 205*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 206*aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 207*aec89f78SBastian Köcher .mnd_width = 8, 208*aec89f78SBastian Köcher .hid_width = 5, 209*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 210*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 211*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 212*aec89f78SBastian Köcher { 213*aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 214*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 215*aec89f78SBastian Köcher .num_parents = 2, 216*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 217*aec89f78SBastian Köcher }, 218*aec89f78SBastian Köcher }; 219*aec89f78SBastian Köcher 220*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 221*aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 222*aec89f78SBastian Köcher .hid_width = 5, 223*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 224*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 225*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 226*aec89f78SBastian Köcher { 227*aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 228*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 229*aec89f78SBastian Köcher .num_parents = 2, 230*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 231*aec89f78SBastian Köcher }, 232*aec89f78SBastian Köcher }; 233*aec89f78SBastian Köcher 234*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 235*aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 236*aec89f78SBastian Köcher .mnd_width = 8, 237*aec89f78SBastian Köcher .hid_width = 5, 238*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 239*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 240*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 241*aec89f78SBastian Köcher { 242*aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 243*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 244*aec89f78SBastian Köcher .num_parents = 2, 245*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 246*aec89f78SBastian Köcher }, 247*aec89f78SBastian Köcher }; 248*aec89f78SBastian Köcher 249*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 250*aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 251*aec89f78SBastian Köcher .hid_width = 5, 252*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 253*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 254*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 255*aec89f78SBastian Köcher { 256*aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 257*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 258*aec89f78SBastian Köcher .num_parents = 2, 259*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 260*aec89f78SBastian Köcher }, 261*aec89f78SBastian Köcher }; 262*aec89f78SBastian Köcher 263*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 264*aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 265*aec89f78SBastian Köcher .mnd_width = 8, 266*aec89f78SBastian Köcher .hid_width = 5, 267*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 268*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 269*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 270*aec89f78SBastian Köcher { 271*aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 272*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 273*aec89f78SBastian Köcher .num_parents = 2, 274*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 275*aec89f78SBastian Köcher }, 276*aec89f78SBastian Köcher }; 277*aec89f78SBastian Köcher 278*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 279*aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 280*aec89f78SBastian Köcher .hid_width = 5, 281*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 282*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 283*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 284*aec89f78SBastian Köcher { 285*aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 286*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 287*aec89f78SBastian Köcher .num_parents = 2, 288*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 289*aec89f78SBastian Köcher }, 290*aec89f78SBastian Köcher }; 291*aec89f78SBastian Köcher 292*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 293*aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 294*aec89f78SBastian Köcher .mnd_width = 8, 295*aec89f78SBastian Köcher .hid_width = 5, 296*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 297*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 298*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 299*aec89f78SBastian Köcher { 300*aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 301*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 302*aec89f78SBastian Köcher .num_parents = 2, 303*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 304*aec89f78SBastian Köcher }, 305*aec89f78SBastian Köcher }; 306*aec89f78SBastian Köcher 307*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 308*aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 309*aec89f78SBastian Köcher .hid_width = 5, 310*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 311*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 312*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 313*aec89f78SBastian Köcher { 314*aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 315*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 316*aec89f78SBastian Köcher .num_parents = 2, 317*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 318*aec89f78SBastian Köcher }, 319*aec89f78SBastian Köcher }; 320*aec89f78SBastian Köcher 321*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 322*aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 323*aec89f78SBastian Köcher .mnd_width = 8, 324*aec89f78SBastian Köcher .hid_width = 5, 325*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 326*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 327*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 328*aec89f78SBastian Köcher { 329*aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 330*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 331*aec89f78SBastian Köcher .num_parents = 2, 332*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 333*aec89f78SBastian Köcher }, 334*aec89f78SBastian Köcher }; 335*aec89f78SBastian Köcher 336*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 337*aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 338*aec89f78SBastian Köcher .hid_width = 5, 339*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 340*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 341*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 342*aec89f78SBastian Köcher { 343*aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 344*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 345*aec89f78SBastian Köcher .num_parents = 2, 346*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 347*aec89f78SBastian Köcher }, 348*aec89f78SBastian Köcher }; 349*aec89f78SBastian Köcher 350*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 351*aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 352*aec89f78SBastian Köcher .mnd_width = 8, 353*aec89f78SBastian Köcher .hid_width = 5, 354*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 355*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 356*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 357*aec89f78SBastian Köcher { 358*aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 359*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 360*aec89f78SBastian Köcher .num_parents = 2, 361*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 362*aec89f78SBastian Köcher }, 363*aec89f78SBastian Köcher }; 364*aec89f78SBastian Köcher 365*aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 366*aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 367*aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 368*aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 369*aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 370*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 371*aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 372*aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 373*aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 374*aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 375*aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 376*aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 377*aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 378*aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 379*aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 380*aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 381*aec89f78SBastian Köcher { } 382*aec89f78SBastian Köcher }; 383*aec89f78SBastian Köcher 384*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 385*aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 386*aec89f78SBastian Köcher .mnd_width = 16, 387*aec89f78SBastian Köcher .hid_width = 5, 388*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 389*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 390*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 391*aec89f78SBastian Köcher { 392*aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 393*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 394*aec89f78SBastian Köcher .num_parents = 2, 395*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 396*aec89f78SBastian Köcher }, 397*aec89f78SBastian Köcher }; 398*aec89f78SBastian Köcher 399*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 400*aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 401*aec89f78SBastian Köcher .mnd_width = 16, 402*aec89f78SBastian Köcher .hid_width = 5, 403*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 404*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 405*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 406*aec89f78SBastian Köcher { 407*aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 408*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 409*aec89f78SBastian Köcher .num_parents = 2, 410*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 411*aec89f78SBastian Köcher }, 412*aec89f78SBastian Köcher }; 413*aec89f78SBastian Köcher 414*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 415*aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 416*aec89f78SBastian Köcher .mnd_width = 16, 417*aec89f78SBastian Köcher .hid_width = 5, 418*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 419*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 420*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 421*aec89f78SBastian Köcher { 422*aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 423*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 424*aec89f78SBastian Köcher .num_parents = 2, 425*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 426*aec89f78SBastian Köcher }, 427*aec89f78SBastian Köcher }; 428*aec89f78SBastian Köcher 429*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 430*aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 431*aec89f78SBastian Köcher .mnd_width = 16, 432*aec89f78SBastian Köcher .hid_width = 5, 433*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 434*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 435*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 436*aec89f78SBastian Köcher { 437*aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 438*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 439*aec89f78SBastian Köcher .num_parents = 2, 440*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 441*aec89f78SBastian Köcher }, 442*aec89f78SBastian Köcher }; 443*aec89f78SBastian Köcher 444*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 445*aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 446*aec89f78SBastian Köcher .mnd_width = 16, 447*aec89f78SBastian Köcher .hid_width = 5, 448*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 449*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 450*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 451*aec89f78SBastian Köcher { 452*aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 453*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 454*aec89f78SBastian Köcher .num_parents = 2, 455*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 456*aec89f78SBastian Köcher }, 457*aec89f78SBastian Köcher }; 458*aec89f78SBastian Köcher 459*aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 460*aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 461*aec89f78SBastian Köcher .mnd_width = 16, 462*aec89f78SBastian Köcher .hid_width = 5, 463*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 464*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 465*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 466*aec89f78SBastian Köcher { 467*aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 468*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 469*aec89f78SBastian Köcher .num_parents = 2, 470*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 471*aec89f78SBastian Köcher }, 472*aec89f78SBastian Köcher }; 473*aec89f78SBastian Köcher 474*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 475*aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 476*aec89f78SBastian Köcher .hid_width = 5, 477*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 478*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 479*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 480*aec89f78SBastian Köcher { 481*aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 482*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 483*aec89f78SBastian Köcher .num_parents = 2, 484*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 485*aec89f78SBastian Köcher }, 486*aec89f78SBastian Köcher }; 487*aec89f78SBastian Köcher 488*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 489*aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 490*aec89f78SBastian Köcher .mnd_width = 8, 491*aec89f78SBastian Köcher .hid_width = 5, 492*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 493*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 494*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 495*aec89f78SBastian Köcher { 496*aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 497*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 498*aec89f78SBastian Köcher .num_parents = 2, 499*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 500*aec89f78SBastian Köcher }, 501*aec89f78SBastian Köcher }; 502*aec89f78SBastian Köcher 503*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 504*aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 505*aec89f78SBastian Köcher .hid_width = 5, 506*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 507*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 508*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 509*aec89f78SBastian Köcher { 510*aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 511*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 512*aec89f78SBastian Köcher .num_parents = 2, 513*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 514*aec89f78SBastian Köcher }, 515*aec89f78SBastian Köcher }; 516*aec89f78SBastian Köcher 517*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 518*aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 519*aec89f78SBastian Köcher .mnd_width = 8, 520*aec89f78SBastian Köcher .hid_width = 5, 521*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 522*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 523*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 524*aec89f78SBastian Köcher { 525*aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 526*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 527*aec89f78SBastian Köcher .num_parents = 2, 528*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 529*aec89f78SBastian Köcher }, 530*aec89f78SBastian Köcher }; 531*aec89f78SBastian Köcher 532*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 533*aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 534*aec89f78SBastian Köcher .hid_width = 5, 535*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 536*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 537*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 538*aec89f78SBastian Köcher { 539*aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 540*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 541*aec89f78SBastian Köcher .num_parents = 2, 542*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 543*aec89f78SBastian Köcher }, 544*aec89f78SBastian Köcher }; 545*aec89f78SBastian Köcher 546*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 547*aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 548*aec89f78SBastian Köcher .mnd_width = 8, 549*aec89f78SBastian Köcher .hid_width = 5, 550*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 551*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 552*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 553*aec89f78SBastian Köcher { 554*aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 555*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 556*aec89f78SBastian Köcher .num_parents = 2, 557*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 558*aec89f78SBastian Köcher }, 559*aec89f78SBastian Köcher }; 560*aec89f78SBastian Köcher 561*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 562*aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 563*aec89f78SBastian Köcher .hid_width = 5, 564*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 565*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 566*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 567*aec89f78SBastian Köcher { 568*aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 569*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 570*aec89f78SBastian Köcher .num_parents = 2, 571*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 572*aec89f78SBastian Köcher }, 573*aec89f78SBastian Köcher }; 574*aec89f78SBastian Köcher 575*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 576*aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 577*aec89f78SBastian Köcher .mnd_width = 8, 578*aec89f78SBastian Köcher .hid_width = 5, 579*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 580*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 581*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 582*aec89f78SBastian Köcher { 583*aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 584*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 585*aec89f78SBastian Köcher .num_parents = 2, 586*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 587*aec89f78SBastian Köcher }, 588*aec89f78SBastian Köcher }; 589*aec89f78SBastian Köcher 590*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 591*aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 592*aec89f78SBastian Köcher .hid_width = 5, 593*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 594*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 595*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 596*aec89f78SBastian Köcher { 597*aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 598*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 599*aec89f78SBastian Köcher .num_parents = 2, 600*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 601*aec89f78SBastian Köcher }, 602*aec89f78SBastian Köcher }; 603*aec89f78SBastian Köcher 604*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 605*aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 606*aec89f78SBastian Köcher .mnd_width = 8, 607*aec89f78SBastian Köcher .hid_width = 5, 608*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 609*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 610*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 611*aec89f78SBastian Köcher { 612*aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 613*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 614*aec89f78SBastian Köcher .num_parents = 2, 615*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 616*aec89f78SBastian Köcher }, 617*aec89f78SBastian Köcher }; 618*aec89f78SBastian Köcher 619*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 620*aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 621*aec89f78SBastian Köcher .hid_width = 5, 622*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 623*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 624*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 625*aec89f78SBastian Köcher { 626*aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 627*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 628*aec89f78SBastian Köcher .num_parents = 2, 629*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 630*aec89f78SBastian Köcher }, 631*aec89f78SBastian Köcher }; 632*aec89f78SBastian Köcher 633*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 634*aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 635*aec89f78SBastian Köcher .mnd_width = 8, 636*aec89f78SBastian Köcher .hid_width = 5, 637*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 638*aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 639*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 640*aec89f78SBastian Köcher { 641*aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 642*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 643*aec89f78SBastian Köcher .num_parents = 2, 644*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 645*aec89f78SBastian Köcher }, 646*aec89f78SBastian Köcher }; 647*aec89f78SBastian Köcher 648*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 649*aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 650*aec89f78SBastian Köcher .mnd_width = 16, 651*aec89f78SBastian Köcher .hid_width = 5, 652*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 653*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 654*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 655*aec89f78SBastian Köcher { 656*aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 657*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 658*aec89f78SBastian Köcher .num_parents = 2, 659*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 660*aec89f78SBastian Köcher }, 661*aec89f78SBastian Köcher }; 662*aec89f78SBastian Köcher 663*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 664*aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 665*aec89f78SBastian Köcher .mnd_width = 16, 666*aec89f78SBastian Köcher .hid_width = 5, 667*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 668*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 669*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 670*aec89f78SBastian Köcher { 671*aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 672*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 673*aec89f78SBastian Köcher .num_parents = 2, 674*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 675*aec89f78SBastian Köcher }, 676*aec89f78SBastian Köcher }; 677*aec89f78SBastian Köcher 678*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 679*aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 680*aec89f78SBastian Köcher .mnd_width = 16, 681*aec89f78SBastian Köcher .hid_width = 5, 682*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 683*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 684*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 685*aec89f78SBastian Köcher { 686*aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 687*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 688*aec89f78SBastian Köcher .num_parents = 2, 689*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 690*aec89f78SBastian Köcher }, 691*aec89f78SBastian Köcher }; 692*aec89f78SBastian Köcher 693*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 694*aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 695*aec89f78SBastian Köcher .mnd_width = 16, 696*aec89f78SBastian Köcher .hid_width = 5, 697*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 698*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 699*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 700*aec89f78SBastian Köcher { 701*aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 702*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 703*aec89f78SBastian Köcher .num_parents = 2, 704*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 705*aec89f78SBastian Köcher }, 706*aec89f78SBastian Köcher }; 707*aec89f78SBastian Köcher 708*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 709*aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 710*aec89f78SBastian Köcher .mnd_width = 16, 711*aec89f78SBastian Köcher .hid_width = 5, 712*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 713*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 714*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 715*aec89f78SBastian Köcher { 716*aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 717*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 718*aec89f78SBastian Köcher .num_parents = 2, 719*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 720*aec89f78SBastian Köcher }, 721*aec89f78SBastian Köcher }; 722*aec89f78SBastian Köcher 723*aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 724*aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 725*aec89f78SBastian Köcher .mnd_width = 16, 726*aec89f78SBastian Köcher .hid_width = 5, 727*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 728*aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 729*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 730*aec89f78SBastian Köcher { 731*aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 732*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 733*aec89f78SBastian Köcher .num_parents = 2, 734*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 735*aec89f78SBastian Köcher }, 736*aec89f78SBastian Köcher }; 737*aec89f78SBastian Köcher 738*aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 739*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 740*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 741*aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 742*aec89f78SBastian Köcher { } 743*aec89f78SBastian Köcher }; 744*aec89f78SBastian Köcher 745*aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 746*aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 747*aec89f78SBastian Köcher .mnd_width = 8, 748*aec89f78SBastian Köcher .hid_width = 5, 749*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 750*aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 751*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 752*aec89f78SBastian Köcher { 753*aec89f78SBastian Köcher .name = "gp1_clk_src", 754*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 755*aec89f78SBastian Köcher .num_parents = 2, 756*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 757*aec89f78SBastian Köcher }, 758*aec89f78SBastian Köcher }; 759*aec89f78SBastian Köcher 760*aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 761*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 762*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 763*aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 764*aec89f78SBastian Köcher { } 765*aec89f78SBastian Köcher }; 766*aec89f78SBastian Köcher 767*aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 768*aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 769*aec89f78SBastian Köcher .mnd_width = 8, 770*aec89f78SBastian Köcher .hid_width = 5, 771*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 772*aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 773*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 774*aec89f78SBastian Köcher { 775*aec89f78SBastian Köcher .name = "gp2_clk_src", 776*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 777*aec89f78SBastian Köcher .num_parents = 2, 778*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 779*aec89f78SBastian Köcher }, 780*aec89f78SBastian Köcher }; 781*aec89f78SBastian Köcher 782*aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 783*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 784*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 785*aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 786*aec89f78SBastian Köcher { } 787*aec89f78SBastian Köcher }; 788*aec89f78SBastian Köcher 789*aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 790*aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 791*aec89f78SBastian Köcher .mnd_width = 8, 792*aec89f78SBastian Köcher .hid_width = 5, 793*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 794*aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 795*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 796*aec89f78SBastian Köcher { 797*aec89f78SBastian Köcher .name = "gp3_clk_src", 798*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 799*aec89f78SBastian Köcher .num_parents = 2, 800*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 801*aec89f78SBastian Köcher }, 802*aec89f78SBastian Köcher }; 803*aec89f78SBastian Köcher 804*aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 805*aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 806*aec89f78SBastian Köcher { } 807*aec89f78SBastian Köcher }; 808*aec89f78SBastian Köcher 809*aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 810*aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 811*aec89f78SBastian Köcher .mnd_width = 8, 812*aec89f78SBastian Köcher .hid_width = 5, 813*aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 814*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 815*aec89f78SBastian Köcher { 816*aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 817*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 818*aec89f78SBastian Köcher .num_parents = 1, 819*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 820*aec89f78SBastian Köcher }, 821*aec89f78SBastian Köcher }; 822*aec89f78SBastian Köcher 823*aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 824*aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 825*aec89f78SBastian Köcher { } 826*aec89f78SBastian Köcher }; 827*aec89f78SBastian Köcher 828*aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 829*aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 830*aec89f78SBastian Köcher .hid_width = 5, 831*aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 832*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 833*aec89f78SBastian Köcher { 834*aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 835*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 836*aec89f78SBastian Köcher .num_parents = 1, 837*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 838*aec89f78SBastian Köcher }, 839*aec89f78SBastian Köcher }; 840*aec89f78SBastian Köcher 841*aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 842*aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 843*aec89f78SBastian Köcher { } 844*aec89f78SBastian Köcher }; 845*aec89f78SBastian Köcher 846*aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 847*aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 848*aec89f78SBastian Köcher .mnd_width = 8, 849*aec89f78SBastian Köcher .hid_width = 5, 850*aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 851*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 852*aec89f78SBastian Köcher { 853*aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 854*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 855*aec89f78SBastian Köcher .num_parents = 1, 856*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 857*aec89f78SBastian Köcher }, 858*aec89f78SBastian Köcher }; 859*aec89f78SBastian Köcher 860*aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 861*aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 862*aec89f78SBastian Köcher .hid_width = 5, 863*aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 864*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 865*aec89f78SBastian Köcher { 866*aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 867*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 868*aec89f78SBastian Köcher .num_parents = 1, 869*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 870*aec89f78SBastian Köcher }, 871*aec89f78SBastian Köcher }; 872*aec89f78SBastian Köcher 873*aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 874*aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 875*aec89f78SBastian Köcher { } 876*aec89f78SBastian Köcher }; 877*aec89f78SBastian Köcher 878*aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 879*aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 880*aec89f78SBastian Köcher .hid_width = 5, 881*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 882*aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 883*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 884*aec89f78SBastian Köcher { 885*aec89f78SBastian Köcher .name = "pdm2_clk_src", 886*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 887*aec89f78SBastian Köcher .num_parents = 2, 888*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 889*aec89f78SBastian Köcher }, 890*aec89f78SBastian Köcher }; 891*aec89f78SBastian Köcher 892*aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 893*aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 894*aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 895*aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 896*aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 897*aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 898*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 899*aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 900*aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 901*aec89f78SBastian Köcher { } 902*aec89f78SBastian Köcher }; 903*aec89f78SBastian Köcher 904*aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 905*aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 906*aec89f78SBastian Köcher .mnd_width = 8, 907*aec89f78SBastian Köcher .hid_width = 5, 908*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 909*aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 910*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 911*aec89f78SBastian Köcher { 912*aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 913*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0_gpll4, 914*aec89f78SBastian Köcher .num_parents = 3, 915*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 916*aec89f78SBastian Köcher }, 917*aec89f78SBastian Köcher }; 918*aec89f78SBastian Köcher 919*aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 920*aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 921*aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 922*aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 923*aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 924*aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 925*aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 926*aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 927*aec89f78SBastian Köcher { } 928*aec89f78SBastian Köcher }; 929*aec89f78SBastian Köcher 930*aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 931*aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 932*aec89f78SBastian Köcher .mnd_width = 8, 933*aec89f78SBastian Köcher .hid_width = 5, 934*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 935*aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 936*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 937*aec89f78SBastian Köcher { 938*aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 939*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 940*aec89f78SBastian Köcher .num_parents = 2, 941*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 942*aec89f78SBastian Köcher }, 943*aec89f78SBastian Köcher }; 944*aec89f78SBastian Köcher 945*aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 946*aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 947*aec89f78SBastian Köcher .mnd_width = 8, 948*aec89f78SBastian Köcher .hid_width = 5, 949*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 950*aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 951*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 952*aec89f78SBastian Köcher { 953*aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 954*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 955*aec89f78SBastian Köcher .num_parents = 2, 956*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 957*aec89f78SBastian Köcher }, 958*aec89f78SBastian Köcher }; 959*aec89f78SBastian Köcher 960*aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 961*aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 962*aec89f78SBastian Köcher .mnd_width = 8, 963*aec89f78SBastian Köcher .hid_width = 5, 964*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 965*aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 966*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 967*aec89f78SBastian Köcher { 968*aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 969*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 970*aec89f78SBastian Köcher .num_parents = 2, 971*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 972*aec89f78SBastian Köcher }, 973*aec89f78SBastian Köcher }; 974*aec89f78SBastian Köcher 975*aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 976*aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 977*aec89f78SBastian Köcher { } 978*aec89f78SBastian Köcher }; 979*aec89f78SBastian Köcher 980*aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 981*aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 982*aec89f78SBastian Köcher .mnd_width = 8, 983*aec89f78SBastian Köcher .hid_width = 5, 984*aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 985*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 986*aec89f78SBastian Köcher { 987*aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 988*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 989*aec89f78SBastian Köcher .num_parents = 1, 990*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 991*aec89f78SBastian Köcher }, 992*aec89f78SBastian Köcher }; 993*aec89f78SBastian Köcher 994*aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 995*aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 996*aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 997*aec89f78SBastian Köcher { } 998*aec89f78SBastian Köcher }; 999*aec89f78SBastian Köcher 1000*aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1001*aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1002*aec89f78SBastian Köcher .hid_width = 5, 1003*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1004*aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 1005*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 1006*aec89f78SBastian Köcher { 1007*aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 1008*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 1009*aec89f78SBastian Köcher .num_parents = 2, 1010*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1011*aec89f78SBastian Köcher }, 1012*aec89f78SBastian Köcher }; 1013*aec89f78SBastian Köcher 1014*aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1015*aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1016*aec89f78SBastian Köcher { } 1017*aec89f78SBastian Köcher }; 1018*aec89f78SBastian Köcher 1019*aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1020*aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1021*aec89f78SBastian Köcher .hid_width = 5, 1022*aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 1023*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 1024*aec89f78SBastian Köcher { 1025*aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 1026*aec89f78SBastian Köcher .parent_names = (const char *[]) { "xo" }, 1027*aec89f78SBastian Köcher .num_parents = 1, 1028*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1029*aec89f78SBastian Köcher }, 1030*aec89f78SBastian Köcher }; 1031*aec89f78SBastian Köcher 1032*aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1033*aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1034*aec89f78SBastian Köcher { } 1035*aec89f78SBastian Köcher }; 1036*aec89f78SBastian Köcher 1037*aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1038*aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1039*aec89f78SBastian Köcher .hid_width = 5, 1040*aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1041*aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 1042*aec89f78SBastian Köcher .clkr.hw.init = &(struct clk_init_data) 1043*aec89f78SBastian Köcher { 1044*aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 1045*aec89f78SBastian Köcher .parent_names = gcc_xo_gpll0, 1046*aec89f78SBastian Köcher .num_parents = 2, 1047*aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1048*aec89f78SBastian Köcher }, 1049*aec89f78SBastian Köcher }; 1050*aec89f78SBastian Köcher 1051*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 1052*aec89f78SBastian Köcher .halt_reg = 0x05c4, 1053*aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1054*aec89f78SBastian Köcher .clkr = { 1055*aec89f78SBastian Köcher .enable_reg = 0x1484, 1056*aec89f78SBastian Köcher .enable_mask = BIT(17), 1057*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1058*aec89f78SBastian Köcher { 1059*aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 1060*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1061*aec89f78SBastian Köcher }, 1062*aec89f78SBastian Köcher }, 1063*aec89f78SBastian Köcher }; 1064*aec89f78SBastian Köcher 1065*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1066*aec89f78SBastian Köcher .halt_reg = 0x0648, 1067*aec89f78SBastian Köcher .clkr = { 1068*aec89f78SBastian Köcher .enable_reg = 0x0648, 1069*aec89f78SBastian Köcher .enable_mask = BIT(0), 1070*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1071*aec89f78SBastian Köcher { 1072*aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 1073*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1074*aec89f78SBastian Köcher "blsp1_qup1_i2c_apps_clk_src", 1075*aec89f78SBastian Köcher }, 1076*aec89f78SBastian Köcher .num_parents = 1, 1077*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1078*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1079*aec89f78SBastian Köcher }, 1080*aec89f78SBastian Köcher }, 1081*aec89f78SBastian Köcher }; 1082*aec89f78SBastian Köcher 1083*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1084*aec89f78SBastian Köcher .halt_reg = 0x0644, 1085*aec89f78SBastian Köcher .clkr = { 1086*aec89f78SBastian Köcher .enable_reg = 0x0644, 1087*aec89f78SBastian Köcher .enable_mask = BIT(0), 1088*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1089*aec89f78SBastian Köcher { 1090*aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 1091*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1092*aec89f78SBastian Köcher "blsp1_qup1_spi_apps_clk_src", 1093*aec89f78SBastian Köcher }, 1094*aec89f78SBastian Köcher .num_parents = 1, 1095*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1096*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1097*aec89f78SBastian Köcher }, 1098*aec89f78SBastian Köcher }, 1099*aec89f78SBastian Köcher }; 1100*aec89f78SBastian Köcher 1101*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1102*aec89f78SBastian Köcher .halt_reg = 0x06c8, 1103*aec89f78SBastian Köcher .clkr = { 1104*aec89f78SBastian Köcher .enable_reg = 0x06c8, 1105*aec89f78SBastian Köcher .enable_mask = BIT(0), 1106*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1107*aec89f78SBastian Köcher { 1108*aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 1109*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1110*aec89f78SBastian Köcher "blsp1_qup2_i2c_apps_clk_src", 1111*aec89f78SBastian Köcher }, 1112*aec89f78SBastian Köcher .num_parents = 1, 1113*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1114*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1115*aec89f78SBastian Köcher }, 1116*aec89f78SBastian Köcher }, 1117*aec89f78SBastian Köcher }; 1118*aec89f78SBastian Köcher 1119*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1120*aec89f78SBastian Köcher .halt_reg = 0x06c4, 1121*aec89f78SBastian Köcher .clkr = { 1122*aec89f78SBastian Köcher .enable_reg = 0x06c4, 1123*aec89f78SBastian Köcher .enable_mask = BIT(0), 1124*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1125*aec89f78SBastian Köcher { 1126*aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 1127*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1128*aec89f78SBastian Köcher "blsp1_qup2_spi_apps_clk_src", 1129*aec89f78SBastian Köcher }, 1130*aec89f78SBastian Köcher .num_parents = 1, 1131*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1132*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1133*aec89f78SBastian Köcher }, 1134*aec89f78SBastian Köcher }, 1135*aec89f78SBastian Köcher }; 1136*aec89f78SBastian Köcher 1137*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1138*aec89f78SBastian Köcher .halt_reg = 0x0748, 1139*aec89f78SBastian Köcher .clkr = { 1140*aec89f78SBastian Köcher .enable_reg = 0x0748, 1141*aec89f78SBastian Köcher .enable_mask = BIT(0), 1142*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1143*aec89f78SBastian Köcher { 1144*aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 1145*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1146*aec89f78SBastian Köcher "blsp1_qup3_i2c_apps_clk_src", 1147*aec89f78SBastian Köcher }, 1148*aec89f78SBastian Köcher .num_parents = 1, 1149*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1150*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1151*aec89f78SBastian Köcher }, 1152*aec89f78SBastian Köcher }, 1153*aec89f78SBastian Köcher }; 1154*aec89f78SBastian Köcher 1155*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1156*aec89f78SBastian Köcher .halt_reg = 0x0744, 1157*aec89f78SBastian Köcher .clkr = { 1158*aec89f78SBastian Köcher .enable_reg = 0x0744, 1159*aec89f78SBastian Köcher .enable_mask = BIT(0), 1160*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1161*aec89f78SBastian Köcher { 1162*aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 1163*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1164*aec89f78SBastian Köcher "blsp1_qup3_spi_apps_clk_src", 1165*aec89f78SBastian Köcher }, 1166*aec89f78SBastian Köcher .num_parents = 1, 1167*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1168*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1169*aec89f78SBastian Köcher }, 1170*aec89f78SBastian Köcher }, 1171*aec89f78SBastian Köcher }; 1172*aec89f78SBastian Köcher 1173*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1174*aec89f78SBastian Köcher .halt_reg = 0x07c8, 1175*aec89f78SBastian Köcher .clkr = { 1176*aec89f78SBastian Köcher .enable_reg = 0x07c8, 1177*aec89f78SBastian Köcher .enable_mask = BIT(0), 1178*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1179*aec89f78SBastian Köcher { 1180*aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 1181*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1182*aec89f78SBastian Köcher "blsp1_qup4_i2c_apps_clk_src", 1183*aec89f78SBastian Köcher }, 1184*aec89f78SBastian Köcher .num_parents = 1, 1185*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1186*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1187*aec89f78SBastian Köcher }, 1188*aec89f78SBastian Köcher }, 1189*aec89f78SBastian Köcher }; 1190*aec89f78SBastian Köcher 1191*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1192*aec89f78SBastian Köcher .halt_reg = 0x07c4, 1193*aec89f78SBastian Köcher .clkr = { 1194*aec89f78SBastian Köcher .enable_reg = 0x07c4, 1195*aec89f78SBastian Köcher .enable_mask = BIT(0), 1196*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1197*aec89f78SBastian Köcher { 1198*aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 1199*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1200*aec89f78SBastian Köcher "blsp1_qup4_spi_apps_clk_src", 1201*aec89f78SBastian Köcher }, 1202*aec89f78SBastian Köcher .num_parents = 1, 1203*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1204*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1205*aec89f78SBastian Köcher }, 1206*aec89f78SBastian Köcher }, 1207*aec89f78SBastian Köcher }; 1208*aec89f78SBastian Köcher 1209*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1210*aec89f78SBastian Köcher .halt_reg = 0x0848, 1211*aec89f78SBastian Köcher .clkr = { 1212*aec89f78SBastian Köcher .enable_reg = 0x0848, 1213*aec89f78SBastian Köcher .enable_mask = BIT(0), 1214*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1215*aec89f78SBastian Köcher { 1216*aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 1217*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1218*aec89f78SBastian Köcher "blsp1_qup5_i2c_apps_clk_src", 1219*aec89f78SBastian Köcher }, 1220*aec89f78SBastian Köcher .num_parents = 1, 1221*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1222*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1223*aec89f78SBastian Köcher }, 1224*aec89f78SBastian Köcher }, 1225*aec89f78SBastian Köcher }; 1226*aec89f78SBastian Köcher 1227*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1228*aec89f78SBastian Köcher .halt_reg = 0x0844, 1229*aec89f78SBastian Köcher .clkr = { 1230*aec89f78SBastian Köcher .enable_reg = 0x0844, 1231*aec89f78SBastian Köcher .enable_mask = BIT(0), 1232*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1233*aec89f78SBastian Köcher { 1234*aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 1235*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1236*aec89f78SBastian Köcher "blsp1_qup5_spi_apps_clk_src", 1237*aec89f78SBastian Köcher }, 1238*aec89f78SBastian Köcher .num_parents = 1, 1239*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1240*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1241*aec89f78SBastian Köcher }, 1242*aec89f78SBastian Köcher }, 1243*aec89f78SBastian Köcher }; 1244*aec89f78SBastian Köcher 1245*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1246*aec89f78SBastian Köcher .halt_reg = 0x08c8, 1247*aec89f78SBastian Köcher .clkr = { 1248*aec89f78SBastian Köcher .enable_reg = 0x08c8, 1249*aec89f78SBastian Köcher .enable_mask = BIT(0), 1250*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1251*aec89f78SBastian Köcher { 1252*aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 1253*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1254*aec89f78SBastian Köcher "blsp1_qup6_i2c_apps_clk_src", 1255*aec89f78SBastian Köcher }, 1256*aec89f78SBastian Köcher .num_parents = 1, 1257*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1258*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1259*aec89f78SBastian Köcher }, 1260*aec89f78SBastian Köcher }, 1261*aec89f78SBastian Köcher }; 1262*aec89f78SBastian Köcher 1263*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1264*aec89f78SBastian Köcher .halt_reg = 0x08c4, 1265*aec89f78SBastian Köcher .clkr = { 1266*aec89f78SBastian Köcher .enable_reg = 0x08c4, 1267*aec89f78SBastian Köcher .enable_mask = BIT(0), 1268*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1269*aec89f78SBastian Köcher { 1270*aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 1271*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1272*aec89f78SBastian Köcher "blsp1_qup6_spi_apps_clk_src", 1273*aec89f78SBastian Köcher }, 1274*aec89f78SBastian Köcher .num_parents = 1, 1275*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1276*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1277*aec89f78SBastian Köcher }, 1278*aec89f78SBastian Köcher }, 1279*aec89f78SBastian Köcher }; 1280*aec89f78SBastian Köcher 1281*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1282*aec89f78SBastian Köcher .halt_reg = 0x0684, 1283*aec89f78SBastian Köcher .clkr = { 1284*aec89f78SBastian Köcher .enable_reg = 0x0684, 1285*aec89f78SBastian Köcher .enable_mask = BIT(0), 1286*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1287*aec89f78SBastian Köcher { 1288*aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 1289*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1290*aec89f78SBastian Köcher "blsp1_uart1_apps_clk_src", 1291*aec89f78SBastian Köcher }, 1292*aec89f78SBastian Köcher .num_parents = 1, 1293*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1294*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1295*aec89f78SBastian Köcher }, 1296*aec89f78SBastian Köcher }, 1297*aec89f78SBastian Köcher }; 1298*aec89f78SBastian Köcher 1299*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1300*aec89f78SBastian Köcher .halt_reg = 0x0704, 1301*aec89f78SBastian Köcher .clkr = { 1302*aec89f78SBastian Köcher .enable_reg = 0x0704, 1303*aec89f78SBastian Köcher .enable_mask = BIT(0), 1304*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1305*aec89f78SBastian Köcher { 1306*aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 1307*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1308*aec89f78SBastian Köcher "blsp1_uart2_apps_clk_src", 1309*aec89f78SBastian Köcher }, 1310*aec89f78SBastian Köcher .num_parents = 1, 1311*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1312*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1313*aec89f78SBastian Köcher }, 1314*aec89f78SBastian Köcher }, 1315*aec89f78SBastian Köcher }; 1316*aec89f78SBastian Köcher 1317*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1318*aec89f78SBastian Köcher .halt_reg = 0x0784, 1319*aec89f78SBastian Köcher .clkr = { 1320*aec89f78SBastian Köcher .enable_reg = 0x0784, 1321*aec89f78SBastian Köcher .enable_mask = BIT(0), 1322*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1323*aec89f78SBastian Köcher { 1324*aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 1325*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1326*aec89f78SBastian Köcher "blsp1_uart3_apps_clk_src", 1327*aec89f78SBastian Köcher }, 1328*aec89f78SBastian Köcher .num_parents = 1, 1329*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1330*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1331*aec89f78SBastian Köcher }, 1332*aec89f78SBastian Köcher }, 1333*aec89f78SBastian Köcher }; 1334*aec89f78SBastian Köcher 1335*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1336*aec89f78SBastian Köcher .halt_reg = 0x0804, 1337*aec89f78SBastian Köcher .clkr = { 1338*aec89f78SBastian Köcher .enable_reg = 0x0804, 1339*aec89f78SBastian Köcher .enable_mask = BIT(0), 1340*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1341*aec89f78SBastian Köcher { 1342*aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 1343*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1344*aec89f78SBastian Köcher "blsp1_uart4_apps_clk_src", 1345*aec89f78SBastian Köcher }, 1346*aec89f78SBastian Köcher .num_parents = 1, 1347*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1348*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1349*aec89f78SBastian Köcher }, 1350*aec89f78SBastian Köcher }, 1351*aec89f78SBastian Köcher }; 1352*aec89f78SBastian Köcher 1353*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1354*aec89f78SBastian Köcher .halt_reg = 0x0884, 1355*aec89f78SBastian Köcher .clkr = { 1356*aec89f78SBastian Köcher .enable_reg = 0x0884, 1357*aec89f78SBastian Köcher .enable_mask = BIT(0), 1358*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1359*aec89f78SBastian Köcher { 1360*aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 1361*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1362*aec89f78SBastian Köcher "blsp1_uart5_apps_clk_src", 1363*aec89f78SBastian Köcher }, 1364*aec89f78SBastian Köcher .num_parents = 1, 1365*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1366*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1367*aec89f78SBastian Köcher }, 1368*aec89f78SBastian Köcher }, 1369*aec89f78SBastian Köcher }; 1370*aec89f78SBastian Köcher 1371*aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1372*aec89f78SBastian Köcher .halt_reg = 0x0904, 1373*aec89f78SBastian Köcher .clkr = { 1374*aec89f78SBastian Köcher .enable_reg = 0x0904, 1375*aec89f78SBastian Köcher .enable_mask = BIT(0), 1376*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1377*aec89f78SBastian Köcher { 1378*aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 1379*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1380*aec89f78SBastian Köcher "blsp1_uart6_apps_clk_src", 1381*aec89f78SBastian Köcher }, 1382*aec89f78SBastian Köcher .num_parents = 1, 1383*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1384*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1385*aec89f78SBastian Köcher }, 1386*aec89f78SBastian Köcher }, 1387*aec89f78SBastian Köcher }; 1388*aec89f78SBastian Köcher 1389*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1390*aec89f78SBastian Köcher .halt_reg = 0x0944, 1391*aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1392*aec89f78SBastian Köcher .clkr = { 1393*aec89f78SBastian Köcher .enable_reg = 0x1484, 1394*aec89f78SBastian Köcher .enable_mask = BIT(15), 1395*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1396*aec89f78SBastian Köcher { 1397*aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 1398*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1399*aec89f78SBastian Köcher }, 1400*aec89f78SBastian Köcher }, 1401*aec89f78SBastian Köcher }; 1402*aec89f78SBastian Köcher 1403*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1404*aec89f78SBastian Köcher .halt_reg = 0x0988, 1405*aec89f78SBastian Köcher .clkr = { 1406*aec89f78SBastian Köcher .enable_reg = 0x0988, 1407*aec89f78SBastian Köcher .enable_mask = BIT(0), 1408*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1409*aec89f78SBastian Köcher { 1410*aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 1411*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1412*aec89f78SBastian Köcher "blsp2_qup1_i2c_apps_clk_src", 1413*aec89f78SBastian Köcher }, 1414*aec89f78SBastian Köcher .num_parents = 1, 1415*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1416*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1417*aec89f78SBastian Köcher }, 1418*aec89f78SBastian Köcher }, 1419*aec89f78SBastian Köcher }; 1420*aec89f78SBastian Köcher 1421*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1422*aec89f78SBastian Köcher .halt_reg = 0x0984, 1423*aec89f78SBastian Köcher .clkr = { 1424*aec89f78SBastian Köcher .enable_reg = 0x0984, 1425*aec89f78SBastian Köcher .enable_mask = BIT(0), 1426*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1427*aec89f78SBastian Köcher { 1428*aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 1429*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1430*aec89f78SBastian Köcher "blsp2_qup1_spi_apps_clk_src", 1431*aec89f78SBastian Köcher }, 1432*aec89f78SBastian Köcher .num_parents = 1, 1433*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1434*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1435*aec89f78SBastian Köcher }, 1436*aec89f78SBastian Köcher }, 1437*aec89f78SBastian Köcher }; 1438*aec89f78SBastian Köcher 1439*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1440*aec89f78SBastian Köcher .halt_reg = 0x0a08, 1441*aec89f78SBastian Köcher .clkr = { 1442*aec89f78SBastian Köcher .enable_reg = 0x0a08, 1443*aec89f78SBastian Köcher .enable_mask = BIT(0), 1444*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1445*aec89f78SBastian Köcher { 1446*aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 1447*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1448*aec89f78SBastian Köcher "blsp2_qup2_i2c_apps_clk_src", 1449*aec89f78SBastian Köcher }, 1450*aec89f78SBastian Köcher .num_parents = 1, 1451*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1452*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1453*aec89f78SBastian Köcher }, 1454*aec89f78SBastian Köcher }, 1455*aec89f78SBastian Köcher }; 1456*aec89f78SBastian Köcher 1457*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1458*aec89f78SBastian Köcher .halt_reg = 0x0a04, 1459*aec89f78SBastian Köcher .clkr = { 1460*aec89f78SBastian Köcher .enable_reg = 0x0a04, 1461*aec89f78SBastian Köcher .enable_mask = BIT(0), 1462*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1463*aec89f78SBastian Köcher { 1464*aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 1465*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1466*aec89f78SBastian Köcher "blsp2_qup2_spi_apps_clk_src", 1467*aec89f78SBastian Köcher }, 1468*aec89f78SBastian Köcher .num_parents = 1, 1469*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1470*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1471*aec89f78SBastian Köcher }, 1472*aec89f78SBastian Köcher }, 1473*aec89f78SBastian Köcher }; 1474*aec89f78SBastian Köcher 1475*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1476*aec89f78SBastian Köcher .halt_reg = 0x0a88, 1477*aec89f78SBastian Köcher .clkr = { 1478*aec89f78SBastian Köcher .enable_reg = 0x0a88, 1479*aec89f78SBastian Köcher .enable_mask = BIT(0), 1480*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1481*aec89f78SBastian Köcher { 1482*aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 1483*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1484*aec89f78SBastian Köcher "blsp2_qup3_i2c_apps_clk_src", 1485*aec89f78SBastian Köcher }, 1486*aec89f78SBastian Köcher .num_parents = 1, 1487*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1488*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1489*aec89f78SBastian Köcher }, 1490*aec89f78SBastian Köcher }, 1491*aec89f78SBastian Köcher }; 1492*aec89f78SBastian Köcher 1493*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1494*aec89f78SBastian Köcher .halt_reg = 0x0a84, 1495*aec89f78SBastian Köcher .clkr = { 1496*aec89f78SBastian Köcher .enable_reg = 0x0a84, 1497*aec89f78SBastian Köcher .enable_mask = BIT(0), 1498*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1499*aec89f78SBastian Köcher { 1500*aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 1501*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1502*aec89f78SBastian Köcher "blsp2_qup3_spi_apps_clk_src", 1503*aec89f78SBastian Köcher }, 1504*aec89f78SBastian Köcher .num_parents = 1, 1505*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1506*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1507*aec89f78SBastian Köcher }, 1508*aec89f78SBastian Köcher }, 1509*aec89f78SBastian Köcher }; 1510*aec89f78SBastian Köcher 1511*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1512*aec89f78SBastian Köcher .halt_reg = 0x0b08, 1513*aec89f78SBastian Köcher .clkr = { 1514*aec89f78SBastian Köcher .enable_reg = 0x0b08, 1515*aec89f78SBastian Köcher .enable_mask = BIT(0), 1516*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1517*aec89f78SBastian Köcher { 1518*aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 1519*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1520*aec89f78SBastian Köcher "blsp2_qup4_i2c_apps_clk_src", 1521*aec89f78SBastian Köcher }, 1522*aec89f78SBastian Köcher .num_parents = 1, 1523*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1524*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1525*aec89f78SBastian Köcher }, 1526*aec89f78SBastian Köcher }, 1527*aec89f78SBastian Köcher }; 1528*aec89f78SBastian Köcher 1529*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1530*aec89f78SBastian Köcher .halt_reg = 0x0b04, 1531*aec89f78SBastian Köcher .clkr = { 1532*aec89f78SBastian Köcher .enable_reg = 0x0b04, 1533*aec89f78SBastian Köcher .enable_mask = BIT(0), 1534*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1535*aec89f78SBastian Köcher { 1536*aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 1537*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1538*aec89f78SBastian Köcher "blsp2_qup4_spi_apps_clk_src", 1539*aec89f78SBastian Köcher }, 1540*aec89f78SBastian Köcher .num_parents = 1, 1541*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1542*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1543*aec89f78SBastian Köcher }, 1544*aec89f78SBastian Köcher }, 1545*aec89f78SBastian Köcher }; 1546*aec89f78SBastian Köcher 1547*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1548*aec89f78SBastian Köcher .halt_reg = 0x0b88, 1549*aec89f78SBastian Köcher .clkr = { 1550*aec89f78SBastian Köcher .enable_reg = 0x0b88, 1551*aec89f78SBastian Köcher .enable_mask = BIT(0), 1552*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1553*aec89f78SBastian Köcher { 1554*aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 1555*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1556*aec89f78SBastian Köcher "blsp2_qup5_i2c_apps_clk_src", 1557*aec89f78SBastian Köcher }, 1558*aec89f78SBastian Köcher .num_parents = 1, 1559*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1560*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1561*aec89f78SBastian Köcher }, 1562*aec89f78SBastian Köcher }, 1563*aec89f78SBastian Köcher }; 1564*aec89f78SBastian Köcher 1565*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1566*aec89f78SBastian Köcher .halt_reg = 0x0b84, 1567*aec89f78SBastian Köcher .clkr = { 1568*aec89f78SBastian Köcher .enable_reg = 0x0b84, 1569*aec89f78SBastian Köcher .enable_mask = BIT(0), 1570*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1571*aec89f78SBastian Köcher { 1572*aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 1573*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1574*aec89f78SBastian Köcher "blsp2_qup5_spi_apps_clk_src", 1575*aec89f78SBastian Köcher }, 1576*aec89f78SBastian Köcher .num_parents = 1, 1577*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1578*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1579*aec89f78SBastian Köcher }, 1580*aec89f78SBastian Köcher }, 1581*aec89f78SBastian Köcher }; 1582*aec89f78SBastian Köcher 1583*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1584*aec89f78SBastian Köcher .halt_reg = 0x0c08, 1585*aec89f78SBastian Köcher .clkr = { 1586*aec89f78SBastian Köcher .enable_reg = 0x0c08, 1587*aec89f78SBastian Köcher .enable_mask = BIT(0), 1588*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1589*aec89f78SBastian Köcher { 1590*aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 1591*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1592*aec89f78SBastian Köcher "blsp2_qup6_i2c_apps_clk_src", 1593*aec89f78SBastian Köcher }, 1594*aec89f78SBastian Köcher .num_parents = 1, 1595*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1596*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1597*aec89f78SBastian Köcher }, 1598*aec89f78SBastian Köcher }, 1599*aec89f78SBastian Köcher }; 1600*aec89f78SBastian Köcher 1601*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1602*aec89f78SBastian Köcher .halt_reg = 0x0c04, 1603*aec89f78SBastian Köcher .clkr = { 1604*aec89f78SBastian Köcher .enable_reg = 0x0c04, 1605*aec89f78SBastian Köcher .enable_mask = BIT(0), 1606*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1607*aec89f78SBastian Köcher { 1608*aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 1609*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1610*aec89f78SBastian Köcher "blsp2_qup6_spi_apps_clk_src", 1611*aec89f78SBastian Köcher }, 1612*aec89f78SBastian Köcher .num_parents = 1, 1613*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1614*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1615*aec89f78SBastian Köcher }, 1616*aec89f78SBastian Köcher }, 1617*aec89f78SBastian Köcher }; 1618*aec89f78SBastian Köcher 1619*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1620*aec89f78SBastian Köcher .halt_reg = 0x09c4, 1621*aec89f78SBastian Köcher .clkr = { 1622*aec89f78SBastian Köcher .enable_reg = 0x09c4, 1623*aec89f78SBastian Köcher .enable_mask = BIT(0), 1624*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1625*aec89f78SBastian Köcher { 1626*aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 1627*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1628*aec89f78SBastian Köcher "blsp2_uart1_apps_clk_src", 1629*aec89f78SBastian Köcher }, 1630*aec89f78SBastian Köcher .num_parents = 1, 1631*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1632*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1633*aec89f78SBastian Köcher }, 1634*aec89f78SBastian Köcher }, 1635*aec89f78SBastian Köcher }; 1636*aec89f78SBastian Köcher 1637*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1638*aec89f78SBastian Köcher .halt_reg = 0x0a44, 1639*aec89f78SBastian Köcher .clkr = { 1640*aec89f78SBastian Köcher .enable_reg = 0x0a44, 1641*aec89f78SBastian Köcher .enable_mask = BIT(0), 1642*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1643*aec89f78SBastian Köcher { 1644*aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 1645*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1646*aec89f78SBastian Köcher "blsp2_uart2_apps_clk_src", 1647*aec89f78SBastian Köcher }, 1648*aec89f78SBastian Köcher .num_parents = 1, 1649*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1650*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1651*aec89f78SBastian Köcher }, 1652*aec89f78SBastian Köcher }, 1653*aec89f78SBastian Köcher }; 1654*aec89f78SBastian Köcher 1655*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1656*aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1657*aec89f78SBastian Köcher .clkr = { 1658*aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1659*aec89f78SBastian Köcher .enable_mask = BIT(0), 1660*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1661*aec89f78SBastian Köcher { 1662*aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 1663*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1664*aec89f78SBastian Köcher "blsp2_uart3_apps_clk_src", 1665*aec89f78SBastian Köcher }, 1666*aec89f78SBastian Köcher .num_parents = 1, 1667*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1668*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1669*aec89f78SBastian Köcher }, 1670*aec89f78SBastian Köcher }, 1671*aec89f78SBastian Köcher }; 1672*aec89f78SBastian Köcher 1673*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1674*aec89f78SBastian Köcher .halt_reg = 0x0b44, 1675*aec89f78SBastian Köcher .clkr = { 1676*aec89f78SBastian Köcher .enable_reg = 0x0b44, 1677*aec89f78SBastian Köcher .enable_mask = BIT(0), 1678*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1679*aec89f78SBastian Köcher { 1680*aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 1681*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1682*aec89f78SBastian Köcher "blsp2_uart4_apps_clk_src", 1683*aec89f78SBastian Köcher }, 1684*aec89f78SBastian Köcher .num_parents = 1, 1685*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1686*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1687*aec89f78SBastian Köcher }, 1688*aec89f78SBastian Köcher }, 1689*aec89f78SBastian Köcher }; 1690*aec89f78SBastian Köcher 1691*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1692*aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1693*aec89f78SBastian Köcher .clkr = { 1694*aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1695*aec89f78SBastian Köcher .enable_mask = BIT(0), 1696*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1697*aec89f78SBastian Köcher { 1698*aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 1699*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1700*aec89f78SBastian Köcher "blsp2_uart5_apps_clk_src", 1701*aec89f78SBastian Köcher }, 1702*aec89f78SBastian Köcher .num_parents = 1, 1703*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1704*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1705*aec89f78SBastian Köcher }, 1706*aec89f78SBastian Köcher }, 1707*aec89f78SBastian Köcher }; 1708*aec89f78SBastian Köcher 1709*aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1710*aec89f78SBastian Köcher .halt_reg = 0x0c44, 1711*aec89f78SBastian Köcher .clkr = { 1712*aec89f78SBastian Köcher .enable_reg = 0x0c44, 1713*aec89f78SBastian Köcher .enable_mask = BIT(0), 1714*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1715*aec89f78SBastian Köcher { 1716*aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 1717*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1718*aec89f78SBastian Köcher "blsp2_uart6_apps_clk_src", 1719*aec89f78SBastian Köcher }, 1720*aec89f78SBastian Köcher .num_parents = 1, 1721*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1722*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1723*aec89f78SBastian Köcher }, 1724*aec89f78SBastian Köcher }, 1725*aec89f78SBastian Köcher }; 1726*aec89f78SBastian Köcher 1727*aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1728*aec89f78SBastian Köcher .halt_reg = 0x1900, 1729*aec89f78SBastian Köcher .clkr = { 1730*aec89f78SBastian Köcher .enable_reg = 0x1900, 1731*aec89f78SBastian Köcher .enable_mask = BIT(0), 1732*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1733*aec89f78SBastian Köcher { 1734*aec89f78SBastian Köcher .name = "gcc_gp1_clk", 1735*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1736*aec89f78SBastian Köcher "gp1_clk_src", 1737*aec89f78SBastian Köcher }, 1738*aec89f78SBastian Köcher .num_parents = 1, 1739*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1740*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1741*aec89f78SBastian Köcher }, 1742*aec89f78SBastian Köcher }, 1743*aec89f78SBastian Köcher }; 1744*aec89f78SBastian Köcher 1745*aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1746*aec89f78SBastian Köcher .halt_reg = 0x1940, 1747*aec89f78SBastian Köcher .clkr = { 1748*aec89f78SBastian Köcher .enable_reg = 0x1940, 1749*aec89f78SBastian Köcher .enable_mask = BIT(0), 1750*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1751*aec89f78SBastian Köcher { 1752*aec89f78SBastian Köcher .name = "gcc_gp2_clk", 1753*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1754*aec89f78SBastian Köcher "gp2_clk_src", 1755*aec89f78SBastian Köcher }, 1756*aec89f78SBastian Köcher .num_parents = 1, 1757*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1758*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1759*aec89f78SBastian Köcher }, 1760*aec89f78SBastian Köcher }, 1761*aec89f78SBastian Köcher }; 1762*aec89f78SBastian Köcher 1763*aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1764*aec89f78SBastian Köcher .halt_reg = 0x1980, 1765*aec89f78SBastian Köcher .clkr = { 1766*aec89f78SBastian Köcher .enable_reg = 0x1980, 1767*aec89f78SBastian Köcher .enable_mask = BIT(0), 1768*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1769*aec89f78SBastian Köcher { 1770*aec89f78SBastian Köcher .name = "gcc_gp3_clk", 1771*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1772*aec89f78SBastian Köcher "gp3_clk_src", 1773*aec89f78SBastian Köcher }, 1774*aec89f78SBastian Köcher .num_parents = 1, 1775*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1776*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1777*aec89f78SBastian Köcher }, 1778*aec89f78SBastian Köcher }, 1779*aec89f78SBastian Köcher }; 1780*aec89f78SBastian Köcher 1781*aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1782*aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1783*aec89f78SBastian Köcher .clkr = { 1784*aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1785*aec89f78SBastian Köcher .enable_mask = BIT(0), 1786*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1787*aec89f78SBastian Köcher { 1788*aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 1789*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1790*aec89f78SBastian Köcher "pcie_0_aux_clk_src", 1791*aec89f78SBastian Köcher }, 1792*aec89f78SBastian Köcher .num_parents = 1, 1793*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1794*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1795*aec89f78SBastian Köcher }, 1796*aec89f78SBastian Köcher }, 1797*aec89f78SBastian Köcher }; 1798*aec89f78SBastian Köcher 1799*aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1800*aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1801*aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1802*aec89f78SBastian Köcher .clkr = { 1803*aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1804*aec89f78SBastian Köcher .enable_mask = BIT(0), 1805*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1806*aec89f78SBastian Köcher { 1807*aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 1808*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1809*aec89f78SBastian Köcher "pcie_0_pipe_clk_src", 1810*aec89f78SBastian Köcher }, 1811*aec89f78SBastian Köcher .num_parents = 1, 1812*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1813*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1814*aec89f78SBastian Köcher }, 1815*aec89f78SBastian Köcher }, 1816*aec89f78SBastian Köcher }; 1817*aec89f78SBastian Köcher 1818*aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1819*aec89f78SBastian Köcher .halt_reg = 0x1b54, 1820*aec89f78SBastian Köcher .clkr = { 1821*aec89f78SBastian Köcher .enable_reg = 0x1b54, 1822*aec89f78SBastian Köcher .enable_mask = BIT(0), 1823*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1824*aec89f78SBastian Köcher { 1825*aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 1826*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1827*aec89f78SBastian Köcher "pcie_1_aux_clk_src", 1828*aec89f78SBastian Köcher }, 1829*aec89f78SBastian Köcher .num_parents = 1, 1830*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1831*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1832*aec89f78SBastian Köcher }, 1833*aec89f78SBastian Köcher }, 1834*aec89f78SBastian Köcher }; 1835*aec89f78SBastian Köcher 1836*aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1837*aec89f78SBastian Köcher .halt_reg = 0x1b58, 1838*aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1839*aec89f78SBastian Köcher .clkr = { 1840*aec89f78SBastian Köcher .enable_reg = 0x1b58, 1841*aec89f78SBastian Köcher .enable_mask = BIT(0), 1842*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1843*aec89f78SBastian Köcher { 1844*aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 1845*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1846*aec89f78SBastian Köcher "pcie_1_pipe_clk_src", 1847*aec89f78SBastian Köcher }, 1848*aec89f78SBastian Köcher .num_parents = 1, 1849*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1850*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1851*aec89f78SBastian Köcher }, 1852*aec89f78SBastian Köcher }, 1853*aec89f78SBastian Köcher }; 1854*aec89f78SBastian Köcher 1855*aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1856*aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1857*aec89f78SBastian Köcher .clkr = { 1858*aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1859*aec89f78SBastian Köcher .enable_mask = BIT(0), 1860*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1861*aec89f78SBastian Köcher { 1862*aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 1863*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1864*aec89f78SBastian Köcher "pdm2_clk_src", 1865*aec89f78SBastian Köcher }, 1866*aec89f78SBastian Köcher .num_parents = 1, 1867*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1868*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1869*aec89f78SBastian Köcher }, 1870*aec89f78SBastian Köcher }, 1871*aec89f78SBastian Köcher }; 1872*aec89f78SBastian Köcher 1873*aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1874*aec89f78SBastian Köcher .halt_reg = 0x04c4, 1875*aec89f78SBastian Köcher .clkr = { 1876*aec89f78SBastian Köcher .enable_reg = 0x04c4, 1877*aec89f78SBastian Köcher .enable_mask = BIT(0), 1878*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1879*aec89f78SBastian Köcher { 1880*aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 1881*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1882*aec89f78SBastian Köcher "sdcc1_apps_clk_src", 1883*aec89f78SBastian Köcher }, 1884*aec89f78SBastian Köcher .num_parents = 1, 1885*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1886*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1887*aec89f78SBastian Köcher }, 1888*aec89f78SBastian Köcher }, 1889*aec89f78SBastian Köcher }; 1890*aec89f78SBastian Köcher 1891*aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 1892*aec89f78SBastian Köcher .halt_reg = 0x0504, 1893*aec89f78SBastian Köcher .clkr = { 1894*aec89f78SBastian Köcher .enable_reg = 0x0504, 1895*aec89f78SBastian Köcher .enable_mask = BIT(0), 1896*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1897*aec89f78SBastian Köcher { 1898*aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 1899*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1900*aec89f78SBastian Köcher "sdcc2_apps_clk_src", 1901*aec89f78SBastian Köcher }, 1902*aec89f78SBastian Köcher .num_parents = 1, 1903*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1904*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1905*aec89f78SBastian Köcher }, 1906*aec89f78SBastian Köcher }, 1907*aec89f78SBastian Köcher }; 1908*aec89f78SBastian Köcher 1909*aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 1910*aec89f78SBastian Köcher .halt_reg = 0x0544, 1911*aec89f78SBastian Köcher .clkr = { 1912*aec89f78SBastian Köcher .enable_reg = 0x0544, 1913*aec89f78SBastian Köcher .enable_mask = BIT(0), 1914*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1915*aec89f78SBastian Köcher { 1916*aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 1917*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1918*aec89f78SBastian Köcher "sdcc3_apps_clk_src", 1919*aec89f78SBastian Köcher }, 1920*aec89f78SBastian Köcher .num_parents = 1, 1921*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1922*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1923*aec89f78SBastian Köcher }, 1924*aec89f78SBastian Köcher }, 1925*aec89f78SBastian Köcher }; 1926*aec89f78SBastian Köcher 1927*aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 1928*aec89f78SBastian Köcher .halt_reg = 0x0584, 1929*aec89f78SBastian Köcher .clkr = { 1930*aec89f78SBastian Köcher .enable_reg = 0x0584, 1931*aec89f78SBastian Köcher .enable_mask = BIT(0), 1932*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1933*aec89f78SBastian Köcher { 1934*aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 1935*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1936*aec89f78SBastian Köcher "sdcc4_apps_clk_src", 1937*aec89f78SBastian Köcher }, 1938*aec89f78SBastian Köcher .num_parents = 1, 1939*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1940*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1941*aec89f78SBastian Köcher }, 1942*aec89f78SBastian Köcher }, 1943*aec89f78SBastian Köcher }; 1944*aec89f78SBastian Köcher 1945*aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 1946*aec89f78SBastian Köcher .halt_reg = 0x1d7c, 1947*aec89f78SBastian Köcher .clkr = { 1948*aec89f78SBastian Köcher .enable_reg = 0x1d7c, 1949*aec89f78SBastian Köcher .enable_mask = BIT(0), 1950*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1951*aec89f78SBastian Köcher { 1952*aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 1953*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1954*aec89f78SBastian Köcher "ufs_axi_clk_src", 1955*aec89f78SBastian Köcher }, 1956*aec89f78SBastian Köcher .num_parents = 1, 1957*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1958*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1959*aec89f78SBastian Köcher }, 1960*aec89f78SBastian Köcher }, 1961*aec89f78SBastian Köcher }; 1962*aec89f78SBastian Köcher 1963*aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 1964*aec89f78SBastian Köcher .halt_reg = 0x03fc, 1965*aec89f78SBastian Köcher .clkr = { 1966*aec89f78SBastian Köcher .enable_reg = 0x03fc, 1967*aec89f78SBastian Köcher .enable_mask = BIT(0), 1968*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1969*aec89f78SBastian Köcher { 1970*aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 1971*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1972*aec89f78SBastian Köcher "usb30_master_clk_src", 1973*aec89f78SBastian Köcher }, 1974*aec89f78SBastian Köcher .num_parents = 1, 1975*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1976*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1977*aec89f78SBastian Köcher }, 1978*aec89f78SBastian Köcher }, 1979*aec89f78SBastian Köcher }; 1980*aec89f78SBastian Köcher 1981*aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 1982*aec89f78SBastian Köcher .halt_reg = 0x0d88, 1983*aec89f78SBastian Köcher .clkr = { 1984*aec89f78SBastian Köcher .enable_reg = 0x0d88, 1985*aec89f78SBastian Köcher .enable_mask = BIT(0), 1986*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 1987*aec89f78SBastian Köcher { 1988*aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 1989*aec89f78SBastian Köcher .parent_names = (const char *[]) { 1990*aec89f78SBastian Köcher "tsif_ref_clk_src", 1991*aec89f78SBastian Köcher }, 1992*aec89f78SBastian Köcher .num_parents = 1, 1993*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1994*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1995*aec89f78SBastian Köcher }, 1996*aec89f78SBastian Köcher }, 1997*aec89f78SBastian Köcher }; 1998*aec89f78SBastian Köcher 1999*aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2000*aec89f78SBastian Köcher .halt_reg = 0x1d48, 2001*aec89f78SBastian Köcher .clkr = { 2002*aec89f78SBastian Köcher .enable_reg = 0x1d48, 2003*aec89f78SBastian Köcher .enable_mask = BIT(0), 2004*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2005*aec89f78SBastian Köcher { 2006*aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 2007*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2008*aec89f78SBastian Köcher "ufs_axi_clk_src", 2009*aec89f78SBastian Köcher }, 2010*aec89f78SBastian Köcher .num_parents = 1, 2011*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2012*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2013*aec89f78SBastian Köcher }, 2014*aec89f78SBastian Köcher }, 2015*aec89f78SBastian Köcher }; 2016*aec89f78SBastian Köcher 2017*aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2018*aec89f78SBastian Köcher .halt_reg = 0x1d54, 2019*aec89f78SBastian Köcher .clkr = { 2020*aec89f78SBastian Köcher .enable_reg = 0x1d54, 2021*aec89f78SBastian Köcher .enable_mask = BIT(0), 2022*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2023*aec89f78SBastian Köcher { 2024*aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 2025*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2026*aec89f78SBastian Köcher "ufs_axi_clk_src", 2027*aec89f78SBastian Köcher }, 2028*aec89f78SBastian Köcher .num_parents = 1, 2029*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2030*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2031*aec89f78SBastian Köcher }, 2032*aec89f78SBastian Köcher }, 2033*aec89f78SBastian Köcher }; 2034*aec89f78SBastian Köcher 2035*aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2036*aec89f78SBastian Köcher .halt_reg = 0x1d50, 2037*aec89f78SBastian Köcher .clkr = { 2038*aec89f78SBastian Köcher .enable_reg = 0x1d50, 2039*aec89f78SBastian Köcher .enable_mask = BIT(0), 2040*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2041*aec89f78SBastian Köcher { 2042*aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 2043*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2044*aec89f78SBastian Köcher "ufs_axi_clk_src", 2045*aec89f78SBastian Köcher }, 2046*aec89f78SBastian Köcher .num_parents = 1, 2047*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2048*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2049*aec89f78SBastian Köcher }, 2050*aec89f78SBastian Köcher }, 2051*aec89f78SBastian Köcher }; 2052*aec89f78SBastian Köcher 2053*aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2054*aec89f78SBastian Köcher .halt_reg = 0x03c8, 2055*aec89f78SBastian Köcher .clkr = { 2056*aec89f78SBastian Köcher .enable_reg = 0x03c8, 2057*aec89f78SBastian Köcher .enable_mask = BIT(0), 2058*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2059*aec89f78SBastian Köcher { 2060*aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 2061*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2062*aec89f78SBastian Köcher "usb30_master_clk_src", 2063*aec89f78SBastian Köcher }, 2064*aec89f78SBastian Köcher .num_parents = 1, 2065*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2066*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2067*aec89f78SBastian Köcher }, 2068*aec89f78SBastian Köcher }, 2069*aec89f78SBastian Köcher }; 2070*aec89f78SBastian Köcher 2071*aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2072*aec89f78SBastian Köcher .halt_reg = 0x03d0, 2073*aec89f78SBastian Köcher .clkr = { 2074*aec89f78SBastian Köcher .enable_reg = 0x03d0, 2075*aec89f78SBastian Köcher .enable_mask = BIT(0), 2076*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2077*aec89f78SBastian Köcher { 2078*aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 2079*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2080*aec89f78SBastian Köcher "usb30_mock_utmi_clk_src", 2081*aec89f78SBastian Köcher }, 2082*aec89f78SBastian Köcher .num_parents = 1, 2083*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2084*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2085*aec89f78SBastian Köcher }, 2086*aec89f78SBastian Köcher }, 2087*aec89f78SBastian Köcher }; 2088*aec89f78SBastian Köcher 2089*aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2090*aec89f78SBastian Köcher .halt_reg = 0x1408, 2091*aec89f78SBastian Köcher .clkr = { 2092*aec89f78SBastian Köcher .enable_reg = 0x1408, 2093*aec89f78SBastian Köcher .enable_mask = BIT(0), 2094*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2095*aec89f78SBastian Köcher { 2096*aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 2097*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2098*aec89f78SBastian Köcher "usb3_phy_aux_clk_src", 2099*aec89f78SBastian Köcher }, 2100*aec89f78SBastian Köcher .num_parents = 1, 2101*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2102*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2103*aec89f78SBastian Köcher }, 2104*aec89f78SBastian Köcher }, 2105*aec89f78SBastian Köcher }; 2106*aec89f78SBastian Köcher 2107*aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2108*aec89f78SBastian Köcher .halt_reg = 0x0484, 2109*aec89f78SBastian Köcher .clkr = { 2110*aec89f78SBastian Köcher .enable_reg = 0x0484, 2111*aec89f78SBastian Köcher .enable_mask = BIT(0), 2112*aec89f78SBastian Köcher .hw.init = &(struct clk_init_data) 2113*aec89f78SBastian Köcher { 2114*aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 2115*aec89f78SBastian Köcher .parent_names = (const char *[]) { 2116*aec89f78SBastian Köcher "usb_hs_system_clk_src", 2117*aec89f78SBastian Köcher }, 2118*aec89f78SBastian Köcher .num_parents = 1, 2119*aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2120*aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2121*aec89f78SBastian Köcher }, 2122*aec89f78SBastian Köcher }, 2123*aec89f78SBastian Köcher }; 2124*aec89f78SBastian Köcher 2125*aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2126*aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2127*aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2128*aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2129*aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 2130*aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2131*aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2132*aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2133*aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2134*aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2135*aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2136*aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2137*aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2138*aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2139*aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2140*aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2141*aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2142*aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2143*aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2144*aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2145*aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2146*aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2147*aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2148*aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2149*aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2150*aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2151*aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2152*aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2153*aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2154*aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2155*aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2156*aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2157*aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2158*aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2159*aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2160*aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2161*aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2162*aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2163*aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2164*aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2165*aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2166*aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2167*aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2168*aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2169*aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2170*aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2171*aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2172*aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2173*aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2174*aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2175*aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2176*aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2177*aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2178*aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2179*aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2180*aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2181*aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2182*aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2183*aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2184*aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2185*aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2186*aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2187*aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2188*aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2189*aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2190*aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2191*aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2192*aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2193*aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2194*aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2195*aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2196*aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2197*aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2198*aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2199*aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2200*aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2201*aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2202*aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2203*aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2204*aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2205*aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2206*aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2207*aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2208*aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2209*aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2210*aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2211*aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2212*aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2213*aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2214*aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2215*aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2216*aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2217*aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2218*aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2219*aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2220*aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2221*aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2222*aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2223*aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2224*aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 2225*aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 2226*aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 2227*aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 2228*aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 2229*aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 2230*aec89f78SBastian Köcher [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 2231*aec89f78SBastian Köcher [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 2232*aec89f78SBastian Köcher [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 2233*aec89f78SBastian Köcher [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2234*aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2235*aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 2236*aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 2237*aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2238*aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 2239*aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 2240*aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2241*aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 2242*aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2243*aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 2244*aec89f78SBastian Köcher }; 2245*aec89f78SBastian Köcher 2246*aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2247*aec89f78SBastian Köcher .reg_bits = 32, 2248*aec89f78SBastian Köcher .reg_stride = 4, 2249*aec89f78SBastian Köcher .val_bits = 32, 2250*aec89f78SBastian Köcher .max_register = 0x2000, 2251*aec89f78SBastian Köcher .fast_io = true, 2252*aec89f78SBastian Köcher }; 2253*aec89f78SBastian Köcher 2254*aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2255*aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2256*aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2257*aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 2258*aec89f78SBastian Köcher }; 2259*aec89f78SBastian Köcher 2260*aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2261*aec89f78SBastian Köcher { .compatible = "qcom,gcc-msm8994" }, 2262*aec89f78SBastian Köcher {} 2263*aec89f78SBastian Köcher }; 2264*aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2265*aec89f78SBastian Köcher 2266*aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2267*aec89f78SBastian Köcher { 2268*aec89f78SBastian Köcher struct device *dev = &pdev->dev; 2269*aec89f78SBastian Köcher struct clk *clk; 2270*aec89f78SBastian Köcher 2271*aec89f78SBastian Köcher clk = devm_clk_register(dev, &xo.hw); 2272*aec89f78SBastian Köcher if (IS_ERR(clk)) 2273*aec89f78SBastian Köcher return PTR_ERR(clk); 2274*aec89f78SBastian Köcher 2275*aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2276*aec89f78SBastian Köcher } 2277*aec89f78SBastian Köcher 2278*aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2279*aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2280*aec89f78SBastian Köcher .driver = { 2281*aec89f78SBastian Köcher .name = "gcc-msm8994", 2282*aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2283*aec89f78SBastian Köcher }, 2284*aec89f78SBastian Köcher }; 2285*aec89f78SBastian Köcher 2286*aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2287*aec89f78SBastian Köcher { 2288*aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2289*aec89f78SBastian Köcher } 2290*aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2291*aec89f78SBastian Köcher 2292*aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2293*aec89f78SBastian Köcher { 2294*aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2295*aec89f78SBastian Köcher } 2296*aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2297*aec89f78SBastian Köcher 2298*aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2299*aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2300*aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2301