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