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