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