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" 238c18b41bSKonrad 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 struct clk_alpha_pll gpll0_early = { 32*0519d1d0SKonrad Dybcio .offset = 0, 3328d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 34aec89f78SBastian Köcher .clkr = { 35aec89f78SBastian Köcher .enable_reg = 0x1480, 36aec89f78SBastian Köcher .enable_mask = BIT(0), 37*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 38aec89f78SBastian Köcher .name = "gpll0_early", 39*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 40*0519d1d0SKonrad Dybcio .fw_name = "xo", 41*0519d1d0SKonrad Dybcio }, 42aec89f78SBastian Köcher .num_parents = 1, 43aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 44aec89f78SBastian Köcher }, 45aec89f78SBastian Köcher }, 46aec89f78SBastian Köcher }; 47aec89f78SBastian Köcher 48aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = { 49*0519d1d0SKonrad Dybcio .offset = 0, 5028d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 51*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 52aec89f78SBastian Köcher .name = "gpll0", 53aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll0_early" }, 54aec89f78SBastian Köcher .num_parents = 1, 55aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 56aec89f78SBastian Köcher }, 57aec89f78SBastian Köcher }; 58aec89f78SBastian Köcher 59aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = { 60aec89f78SBastian Köcher .offset = 0x1dc0, 6128d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 62aec89f78SBastian Köcher .clkr = { 63aec89f78SBastian Köcher .enable_reg = 0x1480, 64aec89f78SBastian Köcher .enable_mask = BIT(4), 65*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 66aec89f78SBastian Köcher .name = "gpll4_early", 67*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 68*0519d1d0SKonrad Dybcio .fw_name = "xo", 69*0519d1d0SKonrad Dybcio }, 70aec89f78SBastian Köcher .num_parents = 1, 71aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 72aec89f78SBastian Köcher }, 73aec89f78SBastian Köcher }, 74aec89f78SBastian Köcher }; 75aec89f78SBastian Köcher 76aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = { 77aec89f78SBastian Köcher .offset = 0x1dc0, 7828d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 79*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 80aec89f78SBastian Köcher .name = "gpll4", 81aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll4_early" }, 82aec89f78SBastian Köcher .num_parents = 1, 83aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 84aec89f78SBastian Köcher }, 85aec89f78SBastian Köcher }; 86aec89f78SBastian Köcher 87*0519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = { 88*0519d1d0SKonrad Dybcio { P_XO, 0 }, 89*0519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 90*0519d1d0SKonrad Dybcio }; 91*0519d1d0SKonrad Dybcio 92*0519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = { 93*0519d1d0SKonrad Dybcio { .fw_name = "xo" }, 94*0519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 95*0519d1d0SKonrad Dybcio }; 96*0519d1d0SKonrad Dybcio 97*0519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 98*0519d1d0SKonrad Dybcio { P_XO, 0 }, 99*0519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 100*0519d1d0SKonrad Dybcio { P_GPLL4, 5 }, 101*0519d1d0SKonrad Dybcio }; 102*0519d1d0SKonrad Dybcio 103*0519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 104*0519d1d0SKonrad Dybcio { .fw_name = "xo" }, 105*0519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 106*0519d1d0SKonrad Dybcio { .hw = &gpll4.clkr.hw }, 107*0519d1d0SKonrad Dybcio }; 108*0519d1d0SKonrad Dybcio 109aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 110aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 111aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 112aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 113aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 114aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 115aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 116aec89f78SBastian Köcher { } 117aec89f78SBastian Köcher }; 118aec89f78SBastian Köcher 119aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 120aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 121aec89f78SBastian Köcher .mnd_width = 8, 122aec89f78SBastian Köcher .hid_width = 5, 123aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 124aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 125*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 126aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 127*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 128aec89f78SBastian Köcher .num_parents = 2, 129aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 130aec89f78SBastian Köcher }, 131aec89f78SBastian Köcher }; 132aec89f78SBastian Köcher 133aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 134aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 135aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 136aec89f78SBastian Köcher { } 137aec89f78SBastian Köcher }; 138aec89f78SBastian Köcher 139aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 140aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 141aec89f78SBastian Köcher .mnd_width = 8, 142aec89f78SBastian Köcher .hid_width = 5, 143aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 144aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 145*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 146aec89f78SBastian Köcher .name = "usb30_master_clk_src", 147*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 148aec89f78SBastian Köcher .num_parents = 2, 149aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 150aec89f78SBastian Köcher }, 151aec89f78SBastian Köcher }; 152aec89f78SBastian Köcher 153aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 154aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 155aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 156aec89f78SBastian Köcher { } 157aec89f78SBastian Köcher }; 158aec89f78SBastian Köcher 159aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 160aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 161aec89f78SBastian Köcher .hid_width = 5, 162aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 163aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 164*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 165aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 166*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 167aec89f78SBastian Köcher .num_parents = 2, 168aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 169aec89f78SBastian Köcher }, 170aec89f78SBastian Köcher }; 171aec89f78SBastian Köcher 172aec89f78SBastian Köcher static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = { 173aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 174aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 175aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 176aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 177aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 178aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 179aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 180aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 181aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 182aec89f78SBastian Köcher { } 183aec89f78SBastian Köcher }; 184aec89f78SBastian Köcher 185aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 186aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 187aec89f78SBastian Köcher .mnd_width = 8, 188aec89f78SBastian Köcher .hid_width = 5, 189aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 190aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 191*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 192aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 193*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 194aec89f78SBastian Köcher .num_parents = 2, 195aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 196aec89f78SBastian Köcher }, 197aec89f78SBastian Köcher }; 198aec89f78SBastian Köcher 199aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 200aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 201aec89f78SBastian Köcher .hid_width = 5, 202aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 203aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 204*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 205aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 206*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 207aec89f78SBastian Köcher .num_parents = 2, 208aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 209aec89f78SBastian Köcher }, 210aec89f78SBastian Köcher }; 211aec89f78SBastian Köcher 212aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 213aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 214aec89f78SBastian Köcher .mnd_width = 8, 215aec89f78SBastian Köcher .hid_width = 5, 216aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 217aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 218*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 219aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 220*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 221aec89f78SBastian Köcher .num_parents = 2, 222aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 223aec89f78SBastian Köcher }, 224aec89f78SBastian Köcher }; 225aec89f78SBastian Köcher 226aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 227aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 228aec89f78SBastian Köcher .hid_width = 5, 229aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 230aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 231*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 232aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 233*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 234aec89f78SBastian Köcher .num_parents = 2, 235aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 236aec89f78SBastian Köcher }, 237aec89f78SBastian Köcher }; 238aec89f78SBastian Köcher 239aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 240aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 241aec89f78SBastian Köcher .mnd_width = 8, 242aec89f78SBastian Köcher .hid_width = 5, 243aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 244aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 245*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 246aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 247*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 248aec89f78SBastian Köcher .num_parents = 2, 249aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 250aec89f78SBastian Köcher }, 251aec89f78SBastian Köcher }; 252aec89f78SBastian Köcher 253aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 254aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 255aec89f78SBastian Köcher .hid_width = 5, 256aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 257aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 258*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 259aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 260*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 261aec89f78SBastian Köcher .num_parents = 2, 262aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 263aec89f78SBastian Köcher }, 264aec89f78SBastian Köcher }; 265aec89f78SBastian Köcher 266aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 267aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 268aec89f78SBastian Köcher .mnd_width = 8, 269aec89f78SBastian Köcher .hid_width = 5, 270aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 271aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 272*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 273aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 274*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 275aec89f78SBastian Köcher .num_parents = 2, 276aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 277aec89f78SBastian Köcher }, 278aec89f78SBastian Köcher }; 279aec89f78SBastian Köcher 280aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 281aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 282aec89f78SBastian Köcher .hid_width = 5, 283aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 284aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 285*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 286aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 287*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 288aec89f78SBastian Köcher .num_parents = 2, 289aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 290aec89f78SBastian Köcher }, 291aec89f78SBastian Köcher }; 292aec89f78SBastian Köcher 293aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 294aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 295aec89f78SBastian Köcher .mnd_width = 8, 296aec89f78SBastian Köcher .hid_width = 5, 297aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 298aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 299*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 300aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 301*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 302aec89f78SBastian Köcher .num_parents = 2, 303aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 304aec89f78SBastian Köcher }, 305aec89f78SBastian Köcher }; 306aec89f78SBastian Köcher 307aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 308aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 309aec89f78SBastian Köcher .hid_width = 5, 310aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 311aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 312*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 313aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 314*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 315aec89f78SBastian Köcher .num_parents = 2, 316aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 317aec89f78SBastian Köcher }, 318aec89f78SBastian Köcher }; 319aec89f78SBastian Köcher 320aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 321aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 322aec89f78SBastian Köcher .mnd_width = 8, 323aec89f78SBastian Köcher .hid_width = 5, 324aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 325aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 326*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 327aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 328*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 329aec89f78SBastian Köcher .num_parents = 2, 330aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 331aec89f78SBastian Köcher }, 332aec89f78SBastian Köcher }; 333aec89f78SBastian Köcher 334aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 335aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 336aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 337aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 338aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 339aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 340aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 341aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 342aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 343aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 344aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 345aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 346aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 347aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 348aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 349aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 350aec89f78SBastian Köcher { } 351aec89f78SBastian Köcher }; 352aec89f78SBastian Köcher 353aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 354aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 355aec89f78SBastian Köcher .mnd_width = 16, 356aec89f78SBastian Köcher .hid_width = 5, 357aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 358aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 359*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 360aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 361*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 362aec89f78SBastian Köcher .num_parents = 2, 363aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 364aec89f78SBastian Köcher }, 365aec89f78SBastian Köcher }; 366aec89f78SBastian Köcher 367aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 368aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 369aec89f78SBastian Köcher .mnd_width = 16, 370aec89f78SBastian Köcher .hid_width = 5, 371aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 372aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 373*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 374aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 375*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 376aec89f78SBastian Köcher .num_parents = 2, 377aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 378aec89f78SBastian Köcher }, 379aec89f78SBastian Köcher }; 380aec89f78SBastian Köcher 381aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 382aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 383aec89f78SBastian Köcher .mnd_width = 16, 384aec89f78SBastian Köcher .hid_width = 5, 385aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 386aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 387*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 388aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 389*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 390aec89f78SBastian Köcher .num_parents = 2, 391aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 392aec89f78SBastian Köcher }, 393aec89f78SBastian Köcher }; 394aec89f78SBastian Köcher 395aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 396aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 397aec89f78SBastian Köcher .mnd_width = 16, 398aec89f78SBastian Köcher .hid_width = 5, 399aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 400aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 401*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 402aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 403*0519d1d0SKonrad Dybcio .parent_data = 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_uart5_apps_clk_src = { 410aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 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, 415*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 416aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 417*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 418aec89f78SBastian Köcher .num_parents = 2, 419aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 420aec89f78SBastian Köcher }, 421aec89f78SBastian Köcher }; 422aec89f78SBastian Köcher 423aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 424aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 425aec89f78SBastian Köcher .mnd_width = 16, 426aec89f78SBastian Köcher .hid_width = 5, 427aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 428aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 429*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 430aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 431*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 432aec89f78SBastian Köcher .num_parents = 2, 433aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 434aec89f78SBastian Köcher }, 435aec89f78SBastian Köcher }; 436aec89f78SBastian Köcher 437aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 438aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 439aec89f78SBastian Köcher .hid_width = 5, 440aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 441aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 442*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 443aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 444*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 445aec89f78SBastian Köcher .num_parents = 2, 446aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 447aec89f78SBastian Köcher }, 448aec89f78SBastian Köcher }; 449aec89f78SBastian Köcher 450aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 451aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 452aec89f78SBastian Köcher .mnd_width = 8, 453aec89f78SBastian Köcher .hid_width = 5, 454aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 455aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 456*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 457aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 458*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 459aec89f78SBastian Köcher .num_parents = 2, 460aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 461aec89f78SBastian Köcher }, 462aec89f78SBastian Köcher }; 463aec89f78SBastian Köcher 464aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 465aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 466aec89f78SBastian Köcher .hid_width = 5, 467aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 468aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 469*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 470aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 471*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 472aec89f78SBastian Köcher .num_parents = 2, 473aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 474aec89f78SBastian Köcher }, 475aec89f78SBastian Köcher }; 476aec89f78SBastian Köcher 477aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 478aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 479aec89f78SBastian Köcher .mnd_width = 8, 480aec89f78SBastian Köcher .hid_width = 5, 481aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 482aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 483*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 484aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 485*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 486aec89f78SBastian Köcher .num_parents = 2, 487aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 488aec89f78SBastian Köcher }, 489aec89f78SBastian Köcher }; 490aec89f78SBastian Köcher 491aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 492aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 493aec89f78SBastian Köcher .hid_width = 5, 494aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 495aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 496*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 497aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 498*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 499aec89f78SBastian Köcher .num_parents = 2, 500aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 501aec89f78SBastian Köcher }, 502aec89f78SBastian Köcher }; 503aec89f78SBastian Köcher 504aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 505aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 506aec89f78SBastian Köcher .mnd_width = 8, 507aec89f78SBastian Köcher .hid_width = 5, 508aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 509aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 510*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 511aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 512*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 513aec89f78SBastian Köcher .num_parents = 2, 514aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 515aec89f78SBastian Köcher }, 516aec89f78SBastian Köcher }; 517aec89f78SBastian Köcher 518aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 519aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 520aec89f78SBastian Köcher .hid_width = 5, 521aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 522aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 523*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 524aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 525*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 526aec89f78SBastian Köcher .num_parents = 2, 527aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 528aec89f78SBastian Köcher }, 529aec89f78SBastian Köcher }; 530aec89f78SBastian Köcher 531aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 532aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 533aec89f78SBastian Köcher .mnd_width = 8, 534aec89f78SBastian Köcher .hid_width = 5, 535aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 536aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 537*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 538aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 539*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 540aec89f78SBastian Köcher .num_parents = 2, 541aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 542aec89f78SBastian Köcher }, 543aec89f78SBastian Köcher }; 544aec89f78SBastian Köcher 545aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 546aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 547aec89f78SBastian Köcher .hid_width = 5, 548aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 549aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 550*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 551aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 552*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 553aec89f78SBastian Köcher .num_parents = 2, 554aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 555aec89f78SBastian Köcher }, 556aec89f78SBastian Köcher }; 557aec89f78SBastian Köcher 558aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 559aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 560aec89f78SBastian Köcher .mnd_width = 8, 561aec89f78SBastian Köcher .hid_width = 5, 562aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 563aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 564*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 565aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 566*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 567aec89f78SBastian Köcher .num_parents = 2, 568aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 569aec89f78SBastian Köcher }, 570aec89f78SBastian Köcher }; 571aec89f78SBastian Köcher 572aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 573aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 574aec89f78SBastian Köcher .hid_width = 5, 575aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 576aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 577*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 578aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 579*0519d1d0SKonrad Dybcio .parent_data = 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_qup6_spi_apps_clk_src = { 586aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 587aec89f78SBastian Köcher .mnd_width = 8, 588aec89f78SBastian Köcher .hid_width = 5, 589aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 590aec89f78SBastian Köcher .freq_tbl = ftbl_blspqup_spi_apps_clk_src, 591*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 592aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 593*0519d1d0SKonrad Dybcio .parent_data = 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_uart1_apps_clk_src = { 600aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 601aec89f78SBastian Köcher .mnd_width = 16, 602aec89f78SBastian Köcher .hid_width = 5, 603aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 604aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 605*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 606aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 607*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 608aec89f78SBastian Köcher .num_parents = 2, 609aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 610aec89f78SBastian Köcher }, 611aec89f78SBastian Köcher }; 612aec89f78SBastian Köcher 613aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 614aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 615aec89f78SBastian Köcher .mnd_width = 16, 616aec89f78SBastian Köcher .hid_width = 5, 617aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 618aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 619*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 620aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 621*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 622aec89f78SBastian Köcher .num_parents = 2, 623aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 624aec89f78SBastian Köcher }, 625aec89f78SBastian Köcher }; 626aec89f78SBastian Köcher 627aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 628aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 629aec89f78SBastian Köcher .mnd_width = 16, 630aec89f78SBastian Köcher .hid_width = 5, 631aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 632aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 633*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 634aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 635*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 636aec89f78SBastian Köcher .num_parents = 2, 637aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 638aec89f78SBastian Köcher }, 639aec89f78SBastian Köcher }; 640aec89f78SBastian Köcher 641aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 642aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 643aec89f78SBastian Köcher .mnd_width = 16, 644aec89f78SBastian Köcher .hid_width = 5, 645aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 646aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 647*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 648aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 649*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 650aec89f78SBastian Köcher .num_parents = 2, 651aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 652aec89f78SBastian Köcher }, 653aec89f78SBastian Köcher }; 654aec89f78SBastian Köcher 655aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 656aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 657aec89f78SBastian Köcher .mnd_width = 16, 658aec89f78SBastian Köcher .hid_width = 5, 659aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 660aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 661*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 662aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 663*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 664aec89f78SBastian Köcher .num_parents = 2, 665aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 666aec89f78SBastian Köcher }, 667aec89f78SBastian Köcher }; 668aec89f78SBastian Köcher 669aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 670aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 671aec89f78SBastian Köcher .mnd_width = 16, 672aec89f78SBastian Köcher .hid_width = 5, 673aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 674aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 675*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 676aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 677*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 678aec89f78SBastian Köcher .num_parents = 2, 679aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 680aec89f78SBastian Köcher }, 681aec89f78SBastian Köcher }; 682aec89f78SBastian Köcher 683aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 684aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 685aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 686aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 687aec89f78SBastian Köcher { } 688aec89f78SBastian Köcher }; 689aec89f78SBastian Köcher 690aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 691aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 692aec89f78SBastian Köcher .mnd_width = 8, 693aec89f78SBastian Köcher .hid_width = 5, 694aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 695aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 696*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 697aec89f78SBastian Köcher .name = "gp1_clk_src", 698*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 699aec89f78SBastian Köcher .num_parents = 2, 700aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 701aec89f78SBastian Köcher }, 702aec89f78SBastian Köcher }; 703aec89f78SBastian Köcher 704aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 705aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 706aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 707aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 708aec89f78SBastian Köcher { } 709aec89f78SBastian Köcher }; 710aec89f78SBastian Köcher 711aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 712aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 713aec89f78SBastian Köcher .mnd_width = 8, 714aec89f78SBastian Köcher .hid_width = 5, 715aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 716aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 717*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 718aec89f78SBastian Köcher .name = "gp2_clk_src", 719*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 720aec89f78SBastian Köcher .num_parents = 2, 721aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 722aec89f78SBastian Köcher }, 723aec89f78SBastian Köcher }; 724aec89f78SBastian Köcher 725aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 726aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 727aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 728aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 729aec89f78SBastian Köcher { } 730aec89f78SBastian Köcher }; 731aec89f78SBastian Köcher 732aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 733aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 734aec89f78SBastian Köcher .mnd_width = 8, 735aec89f78SBastian Köcher .hid_width = 5, 736aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 737aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 738*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 739aec89f78SBastian Köcher .name = "gp3_clk_src", 740*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 741aec89f78SBastian Köcher .num_parents = 2, 742aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 743aec89f78SBastian Köcher }, 744aec89f78SBastian Köcher }; 745aec89f78SBastian Köcher 746aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 747aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 748aec89f78SBastian Köcher { } 749aec89f78SBastian Köcher }; 750aec89f78SBastian Köcher 751aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 752aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 753aec89f78SBastian Köcher .mnd_width = 8, 754aec89f78SBastian Köcher .hid_width = 5, 755aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 756*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 757aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 758*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 759*0519d1d0SKonrad Dybcio .fw_name = "xo", 760*0519d1d0SKonrad Dybcio }, 761aec89f78SBastian Köcher .num_parents = 1, 762aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 763aec89f78SBastian Köcher }, 764aec89f78SBastian Köcher }; 765aec89f78SBastian Köcher 766aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 767aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 768aec89f78SBastian Köcher { } 769aec89f78SBastian Köcher }; 770aec89f78SBastian Köcher 771aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 772aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 773aec89f78SBastian Köcher .hid_width = 5, 774aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 775*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 776aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 777*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 778*0519d1d0SKonrad Dybcio .fw_name = "xo", 779*0519d1d0SKonrad Dybcio }, 780aec89f78SBastian Köcher .num_parents = 1, 781aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 782aec89f78SBastian Köcher }, 783aec89f78SBastian Köcher }; 784aec89f78SBastian Köcher 785aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 786aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 787aec89f78SBastian Köcher { } 788aec89f78SBastian Köcher }; 789aec89f78SBastian Köcher 790aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 791aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 792aec89f78SBastian Köcher .mnd_width = 8, 793aec89f78SBastian Köcher .hid_width = 5, 794aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 795*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 796aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 797*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 798*0519d1d0SKonrad Dybcio .fw_name = "xo", 799*0519d1d0SKonrad Dybcio }, 800aec89f78SBastian Köcher .num_parents = 1, 801aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 802aec89f78SBastian Köcher }, 803aec89f78SBastian Köcher }; 804aec89f78SBastian Köcher 805aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 806aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 807aec89f78SBastian Köcher .hid_width = 5, 808aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 809*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 810aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 811*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 812*0519d1d0SKonrad Dybcio .fw_name = "xo", 813*0519d1d0SKonrad Dybcio }, 814aec89f78SBastian Köcher .num_parents = 1, 815aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 816aec89f78SBastian Köcher }, 817aec89f78SBastian Köcher }; 818aec89f78SBastian Köcher 819aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 820aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 821aec89f78SBastian Köcher { } 822aec89f78SBastian Köcher }; 823aec89f78SBastian Köcher 824aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 825aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 826aec89f78SBastian Köcher .hid_width = 5, 827aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 828aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 829*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 830aec89f78SBastian Köcher .name = "pdm2_clk_src", 831*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 832aec89f78SBastian Köcher .num_parents = 2, 833aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 834aec89f78SBastian Köcher }, 835aec89f78SBastian Köcher }; 836aec89f78SBastian Köcher 837aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 838aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 839aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 840aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 841aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 842aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 843aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 844aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 845aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 846aec89f78SBastian Köcher { } 847aec89f78SBastian Köcher }; 848aec89f78SBastian Köcher 849aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 850aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 851aec89f78SBastian Köcher .mnd_width = 8, 852aec89f78SBastian Köcher .hid_width = 5, 853aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 854aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 855*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 856aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 857*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 858aec89f78SBastian Köcher .num_parents = 3, 8595f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 860aec89f78SBastian Köcher }, 861aec89f78SBastian Köcher }; 862aec89f78SBastian Köcher 863aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 864aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 865aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 866aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 867aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 868aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 869aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 870aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 871aec89f78SBastian Köcher { } 872aec89f78SBastian Köcher }; 873aec89f78SBastian Köcher 874aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 875aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 876aec89f78SBastian Köcher .mnd_width = 8, 877aec89f78SBastian Köcher .hid_width = 5, 878aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 879aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 880*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 881aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 882*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 883aec89f78SBastian Köcher .num_parents = 2, 8845f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 885aec89f78SBastian Köcher }, 886aec89f78SBastian Köcher }; 887aec89f78SBastian Köcher 888aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 889aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 890aec89f78SBastian Köcher .mnd_width = 8, 891aec89f78SBastian Köcher .hid_width = 5, 892aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 893aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 894*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 895aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 896*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 897aec89f78SBastian Köcher .num_parents = 2, 8985f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 899aec89f78SBastian Köcher }, 900aec89f78SBastian Köcher }; 901aec89f78SBastian Köcher 902aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 903aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 904aec89f78SBastian Köcher .mnd_width = 8, 905aec89f78SBastian Köcher .hid_width = 5, 906aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 907aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 908*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 909aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 910*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 911aec89f78SBastian Köcher .num_parents = 2, 9125f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 913aec89f78SBastian Köcher }, 914aec89f78SBastian Köcher }; 915aec89f78SBastian Köcher 916aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 917aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 918aec89f78SBastian Köcher { } 919aec89f78SBastian Köcher }; 920aec89f78SBastian Köcher 921aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 922aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 923aec89f78SBastian Köcher .mnd_width = 8, 924aec89f78SBastian Köcher .hid_width = 5, 925aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 926*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 927aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 928*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 929*0519d1d0SKonrad Dybcio .fw_name = "xo", 930*0519d1d0SKonrad Dybcio }, 931aec89f78SBastian Köcher .num_parents = 1, 932aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 933aec89f78SBastian Köcher }, 934aec89f78SBastian Köcher }; 935aec89f78SBastian Köcher 936aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 937aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 938aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 939aec89f78SBastian Köcher { } 940aec89f78SBastian Köcher }; 941aec89f78SBastian Köcher 942aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 943aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 944aec89f78SBastian Köcher .hid_width = 5, 945aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 946aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 947*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 948aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 949*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 950aec89f78SBastian Köcher .num_parents = 2, 951aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 952aec89f78SBastian Köcher }, 953aec89f78SBastian Köcher }; 954aec89f78SBastian Köcher 955aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 956aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 957aec89f78SBastian Köcher { } 958aec89f78SBastian Köcher }; 959aec89f78SBastian Köcher 960aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 961aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 962aec89f78SBastian Köcher .hid_width = 5, 963aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 964*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 965aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 966*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 967*0519d1d0SKonrad Dybcio .fw_name = "xo", 968*0519d1d0SKonrad Dybcio }, 969aec89f78SBastian Köcher .num_parents = 1, 970aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 971aec89f78SBastian Köcher }, 972aec89f78SBastian Köcher }; 973aec89f78SBastian Köcher 974aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 975aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 976aec89f78SBastian Köcher { } 977aec89f78SBastian Köcher }; 978aec89f78SBastian Köcher 979aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 980aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 981aec89f78SBastian Köcher .hid_width = 5, 982aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 983aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 984*0519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 985aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 986*0519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 987aec89f78SBastian Köcher .num_parents = 2, 988aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 989aec89f78SBastian Köcher }, 990aec89f78SBastian Köcher }; 991aec89f78SBastian Köcher 992aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 993aec89f78SBastian Köcher .halt_reg = 0x05c4, 994aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 995aec89f78SBastian Köcher .clkr = { 996aec89f78SBastian Köcher .enable_reg = 0x1484, 997aec89f78SBastian Köcher .enable_mask = BIT(17), 998*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 999aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 1000aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1001aec89f78SBastian Köcher }, 1002aec89f78SBastian Köcher }, 1003aec89f78SBastian Köcher }; 1004aec89f78SBastian Köcher 1005aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1006aec89f78SBastian Köcher .halt_reg = 0x0648, 1007aec89f78SBastian Köcher .clkr = { 1008aec89f78SBastian Köcher .enable_reg = 0x0648, 1009aec89f78SBastian Köcher .enable_mask = BIT(0), 1010*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1011aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 1012*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1013aec89f78SBastian Köcher .num_parents = 1, 1014aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1015aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1016aec89f78SBastian Köcher }, 1017aec89f78SBastian Köcher }, 1018aec89f78SBastian Köcher }; 1019aec89f78SBastian Köcher 1020aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1021aec89f78SBastian Köcher .halt_reg = 0x0644, 1022aec89f78SBastian Köcher .clkr = { 1023aec89f78SBastian Köcher .enable_reg = 0x0644, 1024aec89f78SBastian Köcher .enable_mask = BIT(0), 1025*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1026aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 1027*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1028aec89f78SBastian Köcher .num_parents = 1, 1029aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1030aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1031aec89f78SBastian Köcher }, 1032aec89f78SBastian Köcher }, 1033aec89f78SBastian Köcher }; 1034aec89f78SBastian Köcher 1035aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1036aec89f78SBastian Köcher .halt_reg = 0x06c8, 1037aec89f78SBastian Köcher .clkr = { 1038aec89f78SBastian Köcher .enable_reg = 0x06c8, 1039aec89f78SBastian Köcher .enable_mask = BIT(0), 1040*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1041aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 1042*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1043aec89f78SBastian Köcher .num_parents = 1, 1044aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1045aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1046aec89f78SBastian Köcher }, 1047aec89f78SBastian Köcher }, 1048aec89f78SBastian Köcher }; 1049aec89f78SBastian Köcher 1050aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1051aec89f78SBastian Köcher .halt_reg = 0x06c4, 1052aec89f78SBastian Köcher .clkr = { 1053aec89f78SBastian Köcher .enable_reg = 0x06c4, 1054aec89f78SBastian Köcher .enable_mask = BIT(0), 1055*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1056aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 1057*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1058aec89f78SBastian Köcher .num_parents = 1, 1059aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1060aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1061aec89f78SBastian Köcher }, 1062aec89f78SBastian Köcher }, 1063aec89f78SBastian Köcher }; 1064aec89f78SBastian Köcher 1065aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1066aec89f78SBastian Köcher .halt_reg = 0x0748, 1067aec89f78SBastian Köcher .clkr = { 1068aec89f78SBastian Köcher .enable_reg = 0x0748, 1069aec89f78SBastian Köcher .enable_mask = BIT(0), 1070*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1071aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 1072*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1073aec89f78SBastian Köcher .num_parents = 1, 1074aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1075aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1076aec89f78SBastian Köcher }, 1077aec89f78SBastian Köcher }, 1078aec89f78SBastian Köcher }; 1079aec89f78SBastian Köcher 1080aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1081aec89f78SBastian Köcher .halt_reg = 0x0744, 1082aec89f78SBastian Köcher .clkr = { 1083aec89f78SBastian Köcher .enable_reg = 0x0744, 1084aec89f78SBastian Köcher .enable_mask = BIT(0), 1085*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1086aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 1087*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1088aec89f78SBastian Köcher .num_parents = 1, 1089aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1090aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1091aec89f78SBastian Köcher }, 1092aec89f78SBastian Köcher }, 1093aec89f78SBastian Köcher }; 1094aec89f78SBastian Köcher 1095aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1096aec89f78SBastian Köcher .halt_reg = 0x07c8, 1097aec89f78SBastian Köcher .clkr = { 1098aec89f78SBastian Köcher .enable_reg = 0x07c8, 1099aec89f78SBastian Köcher .enable_mask = BIT(0), 1100*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1101aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 1102*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1103aec89f78SBastian Köcher .num_parents = 1, 1104aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1105aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1106aec89f78SBastian Köcher }, 1107aec89f78SBastian Köcher }, 1108aec89f78SBastian Köcher }; 1109aec89f78SBastian Köcher 1110aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1111aec89f78SBastian Köcher .halt_reg = 0x07c4, 1112aec89f78SBastian Köcher .clkr = { 1113aec89f78SBastian Köcher .enable_reg = 0x07c4, 1114aec89f78SBastian Köcher .enable_mask = BIT(0), 1115*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1116aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 1117*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1118aec89f78SBastian Köcher .num_parents = 1, 1119aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1120aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1121aec89f78SBastian Köcher }, 1122aec89f78SBastian Köcher }, 1123aec89f78SBastian Köcher }; 1124aec89f78SBastian Köcher 1125aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1126aec89f78SBastian Köcher .halt_reg = 0x0848, 1127aec89f78SBastian Köcher .clkr = { 1128aec89f78SBastian Köcher .enable_reg = 0x0848, 1129aec89f78SBastian Köcher .enable_mask = BIT(0), 1130*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1131aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 1132*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1133aec89f78SBastian Köcher .num_parents = 1, 1134aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1135aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1136aec89f78SBastian Köcher }, 1137aec89f78SBastian Köcher }, 1138aec89f78SBastian Köcher }; 1139aec89f78SBastian Köcher 1140aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1141aec89f78SBastian Köcher .halt_reg = 0x0844, 1142aec89f78SBastian Köcher .clkr = { 1143aec89f78SBastian Köcher .enable_reg = 0x0844, 1144aec89f78SBastian Köcher .enable_mask = BIT(0), 1145*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1146aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 1147*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1148aec89f78SBastian Köcher .num_parents = 1, 1149aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1150aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1151aec89f78SBastian Köcher }, 1152aec89f78SBastian Köcher }, 1153aec89f78SBastian Köcher }; 1154aec89f78SBastian Köcher 1155aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1156aec89f78SBastian Köcher .halt_reg = 0x08c8, 1157aec89f78SBastian Köcher .clkr = { 1158aec89f78SBastian Köcher .enable_reg = 0x08c8, 1159aec89f78SBastian Köcher .enable_mask = BIT(0), 1160*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1161aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 1162*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1163aec89f78SBastian Köcher .num_parents = 1, 1164aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1165aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1166aec89f78SBastian Köcher }, 1167aec89f78SBastian Köcher }, 1168aec89f78SBastian Köcher }; 1169aec89f78SBastian Köcher 1170aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1171aec89f78SBastian Köcher .halt_reg = 0x08c4, 1172aec89f78SBastian Köcher .clkr = { 1173aec89f78SBastian Köcher .enable_reg = 0x08c4, 1174aec89f78SBastian Köcher .enable_mask = BIT(0), 1175*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1176aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 1177*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1178aec89f78SBastian Köcher .num_parents = 1, 1179aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1180aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1181aec89f78SBastian Köcher }, 1182aec89f78SBastian Köcher }, 1183aec89f78SBastian Köcher }; 1184aec89f78SBastian Köcher 1185aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1186aec89f78SBastian Köcher .halt_reg = 0x0684, 1187aec89f78SBastian Köcher .clkr = { 1188aec89f78SBastian Köcher .enable_reg = 0x0684, 1189aec89f78SBastian Köcher .enable_mask = BIT(0), 1190*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1191aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 1192*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1193aec89f78SBastian Köcher .num_parents = 1, 1194aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1195aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1196aec89f78SBastian Köcher }, 1197aec89f78SBastian Köcher }, 1198aec89f78SBastian Köcher }; 1199aec89f78SBastian Köcher 1200aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1201aec89f78SBastian Köcher .halt_reg = 0x0704, 1202aec89f78SBastian Köcher .clkr = { 1203aec89f78SBastian Köcher .enable_reg = 0x0704, 1204aec89f78SBastian Köcher .enable_mask = BIT(0), 1205*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1206aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 1207*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1208aec89f78SBastian Köcher .num_parents = 1, 1209aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1210aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1211aec89f78SBastian Köcher }, 1212aec89f78SBastian Köcher }, 1213aec89f78SBastian Köcher }; 1214aec89f78SBastian Köcher 1215aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1216aec89f78SBastian Köcher .halt_reg = 0x0784, 1217aec89f78SBastian Köcher .clkr = { 1218aec89f78SBastian Köcher .enable_reg = 0x0784, 1219aec89f78SBastian Köcher .enable_mask = BIT(0), 1220*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1221aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 1222*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1223aec89f78SBastian Köcher .num_parents = 1, 1224aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1225aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1226aec89f78SBastian Köcher }, 1227aec89f78SBastian Köcher }, 1228aec89f78SBastian Köcher }; 1229aec89f78SBastian Köcher 1230aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1231aec89f78SBastian Köcher .halt_reg = 0x0804, 1232aec89f78SBastian Köcher .clkr = { 1233aec89f78SBastian Köcher .enable_reg = 0x0804, 1234aec89f78SBastian Köcher .enable_mask = BIT(0), 1235*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1236aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 1237*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1238aec89f78SBastian Köcher .num_parents = 1, 1239aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1240aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1241aec89f78SBastian Köcher }, 1242aec89f78SBastian Köcher }, 1243aec89f78SBastian Köcher }; 1244aec89f78SBastian Köcher 1245aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1246aec89f78SBastian Köcher .halt_reg = 0x0884, 1247aec89f78SBastian Köcher .clkr = { 1248aec89f78SBastian Köcher .enable_reg = 0x0884, 1249aec89f78SBastian Köcher .enable_mask = BIT(0), 1250*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1251aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 1252*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1253aec89f78SBastian Köcher .num_parents = 1, 1254aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1255aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1256aec89f78SBastian Köcher }, 1257aec89f78SBastian Köcher }, 1258aec89f78SBastian Köcher }; 1259aec89f78SBastian Köcher 1260aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1261aec89f78SBastian Köcher .halt_reg = 0x0904, 1262aec89f78SBastian Köcher .clkr = { 1263aec89f78SBastian Köcher .enable_reg = 0x0904, 1264aec89f78SBastian Köcher .enable_mask = BIT(0), 1265*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1266aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 1267*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1268aec89f78SBastian Köcher .num_parents = 1, 1269aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1270aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1271aec89f78SBastian Köcher }, 1272aec89f78SBastian Köcher }, 1273aec89f78SBastian Köcher }; 1274aec89f78SBastian Köcher 1275aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1276aec89f78SBastian Köcher .halt_reg = 0x0944, 1277aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1278aec89f78SBastian Köcher .clkr = { 1279aec89f78SBastian Köcher .enable_reg = 0x1484, 1280aec89f78SBastian Köcher .enable_mask = BIT(15), 1281*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1282aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 1283aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1284aec89f78SBastian Köcher }, 1285aec89f78SBastian Köcher }, 1286aec89f78SBastian Köcher }; 1287aec89f78SBastian Köcher 1288aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1289aec89f78SBastian Köcher .halt_reg = 0x0988, 1290aec89f78SBastian Köcher .clkr = { 1291aec89f78SBastian Köcher .enable_reg = 0x0988, 1292aec89f78SBastian Köcher .enable_mask = BIT(0), 1293*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1294aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 1295*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1296aec89f78SBastian Köcher .num_parents = 1, 1297aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1298aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1299aec89f78SBastian Köcher }, 1300aec89f78SBastian Köcher }, 1301aec89f78SBastian Köcher }; 1302aec89f78SBastian Köcher 1303aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1304aec89f78SBastian Köcher .halt_reg = 0x0984, 1305aec89f78SBastian Köcher .clkr = { 1306aec89f78SBastian Köcher .enable_reg = 0x0984, 1307aec89f78SBastian Köcher .enable_mask = BIT(0), 1308*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1309aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 1310*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1311aec89f78SBastian Köcher .num_parents = 1, 1312aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1313aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1314aec89f78SBastian Köcher }, 1315aec89f78SBastian Köcher }, 1316aec89f78SBastian Köcher }; 1317aec89f78SBastian Köcher 1318aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1319aec89f78SBastian Köcher .halt_reg = 0x0a08, 1320aec89f78SBastian Köcher .clkr = { 1321aec89f78SBastian Köcher .enable_reg = 0x0a08, 1322aec89f78SBastian Köcher .enable_mask = BIT(0), 1323*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1324aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 1325*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1326aec89f78SBastian Köcher .num_parents = 1, 1327aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1328aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1329aec89f78SBastian Köcher }, 1330aec89f78SBastian Köcher }, 1331aec89f78SBastian Köcher }; 1332aec89f78SBastian Köcher 1333aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1334aec89f78SBastian Köcher .halt_reg = 0x0a04, 1335aec89f78SBastian Köcher .clkr = { 1336aec89f78SBastian Köcher .enable_reg = 0x0a04, 1337aec89f78SBastian Köcher .enable_mask = BIT(0), 1338*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1339aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 1340*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 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_blsp2_qup3_i2c_apps_clk = { 1349aec89f78SBastian Köcher .halt_reg = 0x0a88, 1350aec89f78SBastian Köcher .clkr = { 1351aec89f78SBastian Köcher .enable_reg = 0x0a88, 1352aec89f78SBastian Köcher .enable_mask = BIT(0), 1353*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1354aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 1355*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1356aec89f78SBastian Köcher .num_parents = 1, 1357aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1358aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1359aec89f78SBastian Köcher }, 1360aec89f78SBastian Köcher }, 1361aec89f78SBastian Köcher }; 1362aec89f78SBastian Köcher 1363aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1364aec89f78SBastian Köcher .halt_reg = 0x0a84, 1365aec89f78SBastian Köcher .clkr = { 1366aec89f78SBastian Köcher .enable_reg = 0x0a84, 1367aec89f78SBastian Köcher .enable_mask = BIT(0), 1368*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1369aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 1370*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1371aec89f78SBastian Köcher .num_parents = 1, 1372aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1373aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1374aec89f78SBastian Köcher }, 1375aec89f78SBastian Köcher }, 1376aec89f78SBastian Köcher }; 1377aec89f78SBastian Köcher 1378aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1379aec89f78SBastian Köcher .halt_reg = 0x0b08, 1380aec89f78SBastian Köcher .clkr = { 1381aec89f78SBastian Köcher .enable_reg = 0x0b08, 1382aec89f78SBastian Köcher .enable_mask = BIT(0), 1383*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1384aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 1385*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1386aec89f78SBastian Köcher .num_parents = 1, 1387aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1388aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1389aec89f78SBastian Köcher }, 1390aec89f78SBastian Köcher }, 1391aec89f78SBastian Köcher }; 1392aec89f78SBastian Köcher 1393aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1394aec89f78SBastian Köcher .halt_reg = 0x0b04, 1395aec89f78SBastian Köcher .clkr = { 1396aec89f78SBastian Köcher .enable_reg = 0x0b04, 1397aec89f78SBastian Köcher .enable_mask = BIT(0), 1398*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1399aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 1400*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1401aec89f78SBastian Köcher .num_parents = 1, 1402aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1403aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1404aec89f78SBastian Köcher }, 1405aec89f78SBastian Köcher }, 1406aec89f78SBastian Köcher }; 1407aec89f78SBastian Köcher 1408aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1409aec89f78SBastian Köcher .halt_reg = 0x0b88, 1410aec89f78SBastian Köcher .clkr = { 1411aec89f78SBastian Köcher .enable_reg = 0x0b88, 1412aec89f78SBastian Köcher .enable_mask = BIT(0), 1413*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1414aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 1415*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1416aec89f78SBastian Köcher .num_parents = 1, 1417aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1418aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1419aec89f78SBastian Köcher }, 1420aec89f78SBastian Köcher }, 1421aec89f78SBastian Köcher }; 1422aec89f78SBastian Köcher 1423aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1424aec89f78SBastian Köcher .halt_reg = 0x0b84, 1425aec89f78SBastian Köcher .clkr = { 1426aec89f78SBastian Köcher .enable_reg = 0x0b84, 1427aec89f78SBastian Köcher .enable_mask = BIT(0), 1428*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1429aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 1430*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1431aec89f78SBastian Köcher .num_parents = 1, 1432aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1433aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1434aec89f78SBastian Köcher }, 1435aec89f78SBastian Köcher }, 1436aec89f78SBastian Köcher }; 1437aec89f78SBastian Köcher 1438aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1439aec89f78SBastian Köcher .halt_reg = 0x0c08, 1440aec89f78SBastian Köcher .clkr = { 1441aec89f78SBastian Köcher .enable_reg = 0x0c08, 1442aec89f78SBastian Köcher .enable_mask = BIT(0), 1443*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1444aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 1445*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1446aec89f78SBastian Köcher .num_parents = 1, 1447aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1448aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1449aec89f78SBastian Köcher }, 1450aec89f78SBastian Köcher }, 1451aec89f78SBastian Köcher }; 1452aec89f78SBastian Köcher 1453aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1454aec89f78SBastian Köcher .halt_reg = 0x0c04, 1455aec89f78SBastian Köcher .clkr = { 1456aec89f78SBastian Köcher .enable_reg = 0x0c04, 1457aec89f78SBastian Köcher .enable_mask = BIT(0), 1458*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1459aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 1460*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1461aec89f78SBastian Köcher .num_parents = 1, 1462aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1463aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1464aec89f78SBastian Köcher }, 1465aec89f78SBastian Köcher }, 1466aec89f78SBastian Köcher }; 1467aec89f78SBastian Köcher 1468aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1469aec89f78SBastian Köcher .halt_reg = 0x09c4, 1470aec89f78SBastian Köcher .clkr = { 1471aec89f78SBastian Köcher .enable_reg = 0x09c4, 1472aec89f78SBastian Köcher .enable_mask = BIT(0), 1473*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1474aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 1475*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1476aec89f78SBastian Köcher .num_parents = 1, 1477aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1478aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1479aec89f78SBastian Köcher }, 1480aec89f78SBastian Köcher }, 1481aec89f78SBastian Köcher }; 1482aec89f78SBastian Köcher 1483aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1484aec89f78SBastian Köcher .halt_reg = 0x0a44, 1485aec89f78SBastian Köcher .clkr = { 1486aec89f78SBastian Köcher .enable_reg = 0x0a44, 1487aec89f78SBastian Köcher .enable_mask = BIT(0), 1488*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1489aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 1490*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1491aec89f78SBastian Köcher .num_parents = 1, 1492aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1493aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1494aec89f78SBastian Köcher }, 1495aec89f78SBastian Köcher }, 1496aec89f78SBastian Köcher }; 1497aec89f78SBastian Köcher 1498aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1499aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1500aec89f78SBastian Köcher .clkr = { 1501aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1502aec89f78SBastian Köcher .enable_mask = BIT(0), 1503*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1504aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 1505*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1506aec89f78SBastian Köcher .num_parents = 1, 1507aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1508aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1509aec89f78SBastian Köcher }, 1510aec89f78SBastian Köcher }, 1511aec89f78SBastian Köcher }; 1512aec89f78SBastian Köcher 1513aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1514aec89f78SBastian Köcher .halt_reg = 0x0b44, 1515aec89f78SBastian Köcher .clkr = { 1516aec89f78SBastian Köcher .enable_reg = 0x0b44, 1517aec89f78SBastian Köcher .enable_mask = BIT(0), 1518*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1519aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 1520*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1521aec89f78SBastian Köcher .num_parents = 1, 1522aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1523aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1524aec89f78SBastian Köcher }, 1525aec89f78SBastian Köcher }, 1526aec89f78SBastian Köcher }; 1527aec89f78SBastian Köcher 1528aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1529aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1530aec89f78SBastian Köcher .clkr = { 1531aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1532aec89f78SBastian Köcher .enable_mask = BIT(0), 1533*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1534aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 1535*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1536aec89f78SBastian Köcher .num_parents = 1, 1537aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1538aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1539aec89f78SBastian Köcher }, 1540aec89f78SBastian Köcher }, 1541aec89f78SBastian Köcher }; 1542aec89f78SBastian Köcher 1543aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1544aec89f78SBastian Köcher .halt_reg = 0x0c44, 1545aec89f78SBastian Köcher .clkr = { 1546aec89f78SBastian Köcher .enable_reg = 0x0c44, 1547aec89f78SBastian Köcher .enable_mask = BIT(0), 1548*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1549aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 1550*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1551aec89f78SBastian Köcher .num_parents = 1, 1552aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1553aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1554aec89f78SBastian Köcher }, 1555aec89f78SBastian Köcher }, 1556aec89f78SBastian Köcher }; 1557aec89f78SBastian Köcher 1558aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1559aec89f78SBastian Köcher .halt_reg = 0x1900, 1560aec89f78SBastian Köcher .clkr = { 1561aec89f78SBastian Köcher .enable_reg = 0x1900, 1562aec89f78SBastian Köcher .enable_mask = BIT(0), 1563*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1564aec89f78SBastian Köcher .name = "gcc_gp1_clk", 1565*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1566aec89f78SBastian Köcher .num_parents = 1, 1567aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1568aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1569aec89f78SBastian Köcher }, 1570aec89f78SBastian Köcher }, 1571aec89f78SBastian Köcher }; 1572aec89f78SBastian Köcher 1573aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1574aec89f78SBastian Köcher .halt_reg = 0x1940, 1575aec89f78SBastian Köcher .clkr = { 1576aec89f78SBastian Köcher .enable_reg = 0x1940, 1577aec89f78SBastian Köcher .enable_mask = BIT(0), 1578*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1579aec89f78SBastian Köcher .name = "gcc_gp2_clk", 1580*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1581aec89f78SBastian Köcher .num_parents = 1, 1582aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1583aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1584aec89f78SBastian Köcher }, 1585aec89f78SBastian Köcher }, 1586aec89f78SBastian Köcher }; 1587aec89f78SBastian Köcher 1588aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1589aec89f78SBastian Köcher .halt_reg = 0x1980, 1590aec89f78SBastian Köcher .clkr = { 1591aec89f78SBastian Köcher .enable_reg = 0x1980, 1592aec89f78SBastian Köcher .enable_mask = BIT(0), 1593*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1594aec89f78SBastian Köcher .name = "gcc_gp3_clk", 1595*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1596aec89f78SBastian Köcher .num_parents = 1, 1597aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1598aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1599aec89f78SBastian Köcher }, 1600aec89f78SBastian Köcher }, 1601aec89f78SBastian Köcher }; 1602aec89f78SBastian Köcher 16038c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 16048c18b41bSKonrad Dybcio .halt_reg = 0x0280, 16058c18b41bSKonrad Dybcio .clkr = { 16068c18b41bSKonrad Dybcio .enable_reg = 0x0280, 16078c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1608*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 16098c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 16108c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 16118c18b41bSKonrad Dybcio }, 16128c18b41bSKonrad Dybcio }, 16138c18b41bSKonrad Dybcio }; 16148c18b41bSKonrad Dybcio 16158c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 16168c18b41bSKonrad Dybcio .halt_reg = 0x0284, 16178c18b41bSKonrad Dybcio .clkr = { 16188c18b41bSKonrad Dybcio .enable_reg = 0x0284, 16198c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1620*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 16218c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 16228c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 16238c18b41bSKonrad Dybcio }, 16248c18b41bSKonrad Dybcio }, 16258c18b41bSKonrad Dybcio }; 16268c18b41bSKonrad Dybcio 1627aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1628aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1629aec89f78SBastian Köcher .clkr = { 1630aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1631aec89f78SBastian Köcher .enable_mask = BIT(0), 1632*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1633aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 1634*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1635aec89f78SBastian Köcher .num_parents = 1, 1636aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1637aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1638aec89f78SBastian Köcher }, 1639aec89f78SBastian Köcher }, 1640aec89f78SBastian Köcher }; 1641aec89f78SBastian Köcher 16428c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 16438c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 16448c18b41bSKonrad Dybcio .clkr = { 16458c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 16468c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1647*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 16488c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 16498c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 16508c18b41bSKonrad Dybcio }, 16518c18b41bSKonrad Dybcio }, 16528c18b41bSKonrad Dybcio }; 16538c18b41bSKonrad Dybcio 16548c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 16558c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 16568c18b41bSKonrad Dybcio .clkr = { 16578c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 16588c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1659*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 16608c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 16618c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 16628c18b41bSKonrad Dybcio }, 16638c18b41bSKonrad Dybcio }, 16648c18b41bSKonrad Dybcio }; 16658c18b41bSKonrad Dybcio 1666aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1667aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1668aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1669aec89f78SBastian Köcher .clkr = { 1670aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1671aec89f78SBastian Köcher .enable_mask = BIT(0), 1672*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1673aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 1674*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1675aec89f78SBastian Köcher .num_parents = 1, 1676aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1677aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1678aec89f78SBastian Köcher }, 1679aec89f78SBastian Köcher }, 1680aec89f78SBastian Köcher }; 1681aec89f78SBastian Köcher 16828c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 16838c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 16848c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 16858c18b41bSKonrad Dybcio .clkr = { 16868c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 16878c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1688*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 16898c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 16908c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 16918c18b41bSKonrad Dybcio }, 16928c18b41bSKonrad Dybcio }, 16938c18b41bSKonrad Dybcio }; 16948c18b41bSKonrad Dybcio 1695aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1696aec89f78SBastian Köcher .halt_reg = 0x1b54, 1697aec89f78SBastian Köcher .clkr = { 1698aec89f78SBastian Köcher .enable_reg = 0x1b54, 1699aec89f78SBastian Köcher .enable_mask = BIT(0), 1700*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1701aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 1702*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1703aec89f78SBastian Köcher .num_parents = 1, 1704aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1705aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1706aec89f78SBastian Köcher }, 1707aec89f78SBastian Köcher }, 1708aec89f78SBastian Köcher }; 1709aec89f78SBastian Köcher 17108c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 17118c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 17128c18b41bSKonrad Dybcio .clkr = { 17138c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 17148c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1715*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17168c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 17178c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17188c18b41bSKonrad Dybcio }, 17198c18b41bSKonrad Dybcio }, 17208c18b41bSKonrad Dybcio }; 17218c18b41bSKonrad Dybcio 17228c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 17238c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 17248c18b41bSKonrad Dybcio .clkr = { 17258c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 17268c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1727*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17288c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 17298c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17308c18b41bSKonrad Dybcio }, 17318c18b41bSKonrad Dybcio }, 17328c18b41bSKonrad Dybcio }; 17338c18b41bSKonrad Dybcio 1734aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1735aec89f78SBastian Köcher .halt_reg = 0x1b58, 1736aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1737aec89f78SBastian Köcher .clkr = { 1738aec89f78SBastian Köcher .enable_reg = 0x1b58, 1739aec89f78SBastian Köcher .enable_mask = BIT(0), 1740*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1741aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 1742*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1743aec89f78SBastian Köcher .num_parents = 1, 1744aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1745aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1746aec89f78SBastian Köcher }, 1747aec89f78SBastian Köcher }, 1748aec89f78SBastian Köcher }; 1749aec89f78SBastian Köcher 17508c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 17518c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 17528c18b41bSKonrad Dybcio .clkr = { 17538c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 17548c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1755*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17568c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 17578c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17588c18b41bSKonrad Dybcio }, 17598c18b41bSKonrad Dybcio }, 17608c18b41bSKonrad Dybcio }; 17618c18b41bSKonrad Dybcio 1762aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1763aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1764aec89f78SBastian Köcher .clkr = { 1765aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1766aec89f78SBastian Köcher .enable_mask = BIT(0), 1767*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1768aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 1769*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1770aec89f78SBastian Köcher .num_parents = 1, 1771aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1772aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1773aec89f78SBastian Köcher }, 1774aec89f78SBastian Köcher }, 1775aec89f78SBastian Köcher }; 1776aec89f78SBastian Köcher 17778c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 17788c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 17798c18b41bSKonrad Dybcio .clkr = { 17808c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 17818c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1782*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17838c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 17848c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17858c18b41bSKonrad Dybcio }, 17868c18b41bSKonrad Dybcio }, 17878c18b41bSKonrad Dybcio }; 17888c18b41bSKonrad Dybcio 1789aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1790aec89f78SBastian Köcher .halt_reg = 0x04c4, 1791aec89f78SBastian Köcher .clkr = { 1792aec89f78SBastian Köcher .enable_reg = 0x04c4, 1793aec89f78SBastian Köcher .enable_mask = BIT(0), 1794*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1795aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 1796*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1797aec89f78SBastian Köcher .num_parents = 1, 1798aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1799aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1800aec89f78SBastian Köcher }, 1801aec89f78SBastian Köcher }, 1802aec89f78SBastian Köcher }; 1803aec89f78SBastian Köcher 1804eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1805eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1806eaff16bcSJeremy McNicoll .clkr = { 1807eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1808eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 1809*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1810eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 1811eaff16bcSJeremy McNicoll .parent_names = (const char *[]){ 1812eaff16bcSJeremy McNicoll "periph_noc_clk_src", 1813eaff16bcSJeremy McNicoll }, 1814eaff16bcSJeremy McNicoll .num_parents = 1, 1815eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1816eaff16bcSJeremy McNicoll }, 1817eaff16bcSJeremy McNicoll }, 1818eaff16bcSJeremy McNicoll }; 1819eaff16bcSJeremy McNicoll 18208c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 18218c18b41bSKonrad Dybcio .halt_reg = 0x0508, 18228c18b41bSKonrad Dybcio .clkr = { 18238c18b41bSKonrad Dybcio .enable_reg = 0x0508, 18248c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1825*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18268c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 18278c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 18288c18b41bSKonrad Dybcio "periph_noc_clk_src", 18298c18b41bSKonrad Dybcio }, 18308c18b41bSKonrad Dybcio .num_parents = 1, 18318c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18328c18b41bSKonrad Dybcio }, 18338c18b41bSKonrad Dybcio }, 18348c18b41bSKonrad Dybcio }; 18358c18b41bSKonrad Dybcio 1836aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 1837aec89f78SBastian Köcher .halt_reg = 0x0504, 1838aec89f78SBastian Köcher .clkr = { 1839aec89f78SBastian Köcher .enable_reg = 0x0504, 1840aec89f78SBastian Köcher .enable_mask = BIT(0), 1841*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1842aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 1843*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw }, 1844aec89f78SBastian Köcher .num_parents = 1, 1845aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1846aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1847aec89f78SBastian Köcher }, 1848aec89f78SBastian Köcher }, 1849aec89f78SBastian Köcher }; 1850aec89f78SBastian Köcher 18518c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = { 18528c18b41bSKonrad Dybcio .halt_reg = 0x0548, 18538c18b41bSKonrad Dybcio .clkr = { 18548c18b41bSKonrad Dybcio .enable_reg = 0x0548, 18558c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1856*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18578c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 18588c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 18598c18b41bSKonrad Dybcio "periph_noc_clk_src", 18608c18b41bSKonrad Dybcio }, 18618c18b41bSKonrad Dybcio .num_parents = 1, 18628c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18638c18b41bSKonrad Dybcio }, 18648c18b41bSKonrad Dybcio }, 18658c18b41bSKonrad Dybcio }; 18668c18b41bSKonrad Dybcio 1867aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 1868aec89f78SBastian Köcher .halt_reg = 0x0544, 1869aec89f78SBastian Köcher .clkr = { 1870aec89f78SBastian Köcher .enable_reg = 0x0544, 1871aec89f78SBastian Köcher .enable_mask = BIT(0), 1872*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1873aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 1874*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 1875aec89f78SBastian Köcher .num_parents = 1, 1876aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1877aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1878aec89f78SBastian Köcher }, 1879aec89f78SBastian Köcher }, 1880aec89f78SBastian Köcher }; 1881aec89f78SBastian Köcher 18828c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = { 18838c18b41bSKonrad Dybcio .halt_reg = 0x0588, 18848c18b41bSKonrad Dybcio .clkr = { 18858c18b41bSKonrad Dybcio .enable_reg = 0x0588, 18868c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1887*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18888c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 18898c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 18908c18b41bSKonrad Dybcio "periph_noc_clk_src", 18918c18b41bSKonrad Dybcio }, 18928c18b41bSKonrad Dybcio .num_parents = 1, 18938c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18948c18b41bSKonrad Dybcio }, 18958c18b41bSKonrad Dybcio }, 18968c18b41bSKonrad Dybcio }; 18978c18b41bSKonrad Dybcio 1898aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 1899aec89f78SBastian Köcher .halt_reg = 0x0584, 1900aec89f78SBastian Köcher .clkr = { 1901aec89f78SBastian Köcher .enable_reg = 0x0584, 1902aec89f78SBastian Köcher .enable_mask = BIT(0), 1903*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1904aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 1905*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 1906aec89f78SBastian Köcher .num_parents = 1, 1907aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1908aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1909aec89f78SBastian Köcher }, 1910aec89f78SBastian Köcher }, 1911aec89f78SBastian Köcher }; 1912aec89f78SBastian Köcher 1913aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 1914aec89f78SBastian Köcher .halt_reg = 0x1d7c, 1915aec89f78SBastian Köcher .clkr = { 1916aec89f78SBastian Köcher .enable_reg = 0x1d7c, 1917aec89f78SBastian Köcher .enable_mask = BIT(0), 1918*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1919aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 1920*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 1921aec89f78SBastian Köcher .num_parents = 1, 1922aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1923aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1924aec89f78SBastian Köcher }, 1925aec89f78SBastian Köcher }, 1926aec89f78SBastian Köcher }; 1927aec89f78SBastian Köcher 1928aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 1929aec89f78SBastian Köcher .halt_reg = 0x03fc, 1930aec89f78SBastian Köcher .clkr = { 1931aec89f78SBastian Köcher .enable_reg = 0x03fc, 1932aec89f78SBastian Köcher .enable_mask = BIT(0), 1933*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1934aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 1935*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 1936aec89f78SBastian Köcher .num_parents = 1, 1937aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1938aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1939aec89f78SBastian Köcher }, 1940aec89f78SBastian Köcher }, 1941aec89f78SBastian Köcher }; 1942aec89f78SBastian Köcher 19438c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 19448c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 19458c18b41bSKonrad Dybcio .clkr = { 19468c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 19478c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1948*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19498c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 19508c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19518c18b41bSKonrad Dybcio }, 19528c18b41bSKonrad Dybcio }, 19538c18b41bSKonrad Dybcio }; 19548c18b41bSKonrad Dybcio 1955aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 1956aec89f78SBastian Köcher .halt_reg = 0x0d88, 1957aec89f78SBastian Köcher .clkr = { 1958aec89f78SBastian Köcher .enable_reg = 0x0d88, 1959aec89f78SBastian Köcher .enable_mask = BIT(0), 1960*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1961aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 1962*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 1963aec89f78SBastian Köcher .num_parents = 1, 1964aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1965aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1966aec89f78SBastian Köcher }, 1967aec89f78SBastian Köcher }, 1968aec89f78SBastian Köcher }; 1969aec89f78SBastian Köcher 19708c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 19718c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 19728c18b41bSKonrad Dybcio .clkr = { 19738c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 19748c18b41bSKonrad Dybcio .enable_mask = BIT(0), 1975*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19768c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 19778c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19788c18b41bSKonrad Dybcio }, 19798c18b41bSKonrad Dybcio }, 19808c18b41bSKonrad Dybcio }; 19818c18b41bSKonrad Dybcio 1982aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 1983aec89f78SBastian Köcher .halt_reg = 0x1d48, 1984aec89f78SBastian Köcher .clkr = { 1985aec89f78SBastian Köcher .enable_reg = 0x1d48, 1986aec89f78SBastian Köcher .enable_mask = BIT(0), 1987*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1988aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 1989*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 1990aec89f78SBastian Köcher .num_parents = 1, 1991aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1992aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1993aec89f78SBastian Köcher }, 1994aec89f78SBastian Köcher }, 1995aec89f78SBastian Köcher }; 1996aec89f78SBastian Köcher 1997aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 1998aec89f78SBastian Köcher .halt_reg = 0x1d54, 1999aec89f78SBastian Köcher .clkr = { 2000aec89f78SBastian Köcher .enable_reg = 0x1d54, 2001aec89f78SBastian Köcher .enable_mask = BIT(0), 2002*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2003aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 2004*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2005aec89f78SBastian Köcher .num_parents = 1, 2006aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2007aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2008aec89f78SBastian Köcher }, 2009aec89f78SBastian Köcher }, 2010aec89f78SBastian Köcher }; 2011aec89f78SBastian Köcher 20128c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 20138c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 20148c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 20158c18b41bSKonrad Dybcio .clkr = { 20168c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 20178c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2018*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20198c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 20208c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20218c18b41bSKonrad Dybcio }, 20228c18b41bSKonrad Dybcio }, 20238c18b41bSKonrad Dybcio }; 20248c18b41bSKonrad Dybcio 20258c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 20268c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 20278c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 20288c18b41bSKonrad Dybcio .clkr = { 20298c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 20308c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2031*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20328c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 20338c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20348c18b41bSKonrad Dybcio }, 20358c18b41bSKonrad Dybcio }, 20368c18b41bSKonrad Dybcio }; 20378c18b41bSKonrad Dybcio 2038aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2039aec89f78SBastian Köcher .halt_reg = 0x1d50, 2040aec89f78SBastian Köcher .clkr = { 2041aec89f78SBastian Köcher .enable_reg = 0x1d50, 2042aec89f78SBastian Köcher .enable_mask = BIT(0), 2043*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2044aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 2045*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2046aec89f78SBastian Köcher .num_parents = 1, 2047aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2048aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2049aec89f78SBastian Köcher }, 2050aec89f78SBastian Köcher }, 2051aec89f78SBastian Köcher }; 2052aec89f78SBastian Köcher 20538c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 20548c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 20558c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 20568c18b41bSKonrad Dybcio .clkr = { 20578c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 20588c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2059*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20608c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 20618c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20628c18b41bSKonrad Dybcio }, 20638c18b41bSKonrad Dybcio }, 20648c18b41bSKonrad Dybcio }; 20658c18b41bSKonrad Dybcio 20668c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 20678c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 20688c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 20698c18b41bSKonrad Dybcio .clkr = { 20708c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 20718c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2072*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20738c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 20748c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20758c18b41bSKonrad Dybcio }, 20768c18b41bSKonrad Dybcio }, 20778c18b41bSKonrad Dybcio }; 20788c18b41bSKonrad Dybcio 20798c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 20808c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 20818c18b41bSKonrad Dybcio .clkr = { 20828c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 20838c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2084*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20858c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 2086*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 2087*0519d1d0SKonrad Dybcio .fw_name = "sleep", 2088*0519d1d0SKonrad Dybcio .name = "sleep" 2089*0519d1d0SKonrad Dybcio }, 2090*0519d1d0SKonrad Dybcio .num_parents = 1, 20918c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20928c18b41bSKonrad Dybcio }, 20938c18b41bSKonrad Dybcio }, 20948c18b41bSKonrad Dybcio }; 20958c18b41bSKonrad Dybcio 2096aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2097aec89f78SBastian Köcher .halt_reg = 0x03c8, 2098aec89f78SBastian Köcher .clkr = { 2099aec89f78SBastian Köcher .enable_reg = 0x03c8, 2100aec89f78SBastian Köcher .enable_mask = BIT(0), 2101*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2102aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 2103*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2104aec89f78SBastian Köcher .num_parents = 1, 2105aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2106aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2107aec89f78SBastian Köcher }, 2108aec89f78SBastian Köcher }, 2109aec89f78SBastian Köcher }; 2110aec89f78SBastian Köcher 2111aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2112aec89f78SBastian Köcher .halt_reg = 0x03d0, 2113aec89f78SBastian Köcher .clkr = { 2114aec89f78SBastian Köcher .enable_reg = 0x03d0, 2115aec89f78SBastian Köcher .enable_mask = BIT(0), 2116*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2117aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 2118*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 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 21268c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 21278c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 21288c18b41bSKonrad Dybcio .clkr = { 21298c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 21308c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2131*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21328c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 2133*0519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 2134*0519d1d0SKonrad Dybcio .fw_name = "sleep", 2135*0519d1d0SKonrad Dybcio .name = "sleep" 2136*0519d1d0SKonrad Dybcio }, 2137*0519d1d0SKonrad Dybcio .num_parents = 1, 21388c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21398c18b41bSKonrad Dybcio }, 21408c18b41bSKonrad Dybcio }, 21418c18b41bSKonrad Dybcio }; 21428c18b41bSKonrad Dybcio 2143aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2144aec89f78SBastian Köcher .halt_reg = 0x1408, 2145aec89f78SBastian Köcher .clkr = { 2146aec89f78SBastian Köcher .enable_reg = 0x1408, 2147aec89f78SBastian Köcher .enable_mask = BIT(0), 2148*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2149aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 2150*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2151aec89f78SBastian Köcher .num_parents = 1, 2152aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2153aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2154aec89f78SBastian Köcher }, 2155aec89f78SBastian Köcher }, 2156aec89f78SBastian Köcher }; 2157aec89f78SBastian Köcher 21588c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 21598c18b41bSKonrad Dybcio .halt_reg = 0x0488, 21608c18b41bSKonrad Dybcio .clkr = { 21618c18b41bSKonrad Dybcio .enable_reg = 0x0488, 21628c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2163*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21648c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 21658c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21668c18b41bSKonrad Dybcio }, 21678c18b41bSKonrad Dybcio }, 21688c18b41bSKonrad Dybcio }; 21698c18b41bSKonrad Dybcio 2170aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2171aec89f78SBastian Köcher .halt_reg = 0x0484, 2172aec89f78SBastian Köcher .clkr = { 2173aec89f78SBastian Köcher .enable_reg = 0x0484, 2174aec89f78SBastian Köcher .enable_mask = BIT(0), 2175*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2176aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 2177*0519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2178aec89f78SBastian Köcher .num_parents = 1, 2179aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2180aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2181aec89f78SBastian Köcher }, 2182aec89f78SBastian Köcher }, 2183aec89f78SBastian Köcher }; 2184aec89f78SBastian Köcher 21858c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 21868c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 21878c18b41bSKonrad Dybcio .clkr = { 21888c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 21898c18b41bSKonrad Dybcio .enable_mask = BIT(0), 2190*0519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21918c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 21928c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21938c18b41bSKonrad Dybcio }, 21948c18b41bSKonrad Dybcio }, 21958c18b41bSKonrad Dybcio }; 21968c18b41bSKonrad Dybcio 21978c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = { 21988c18b41bSKonrad Dybcio .gdscr = 0x1e18, 21998c18b41bSKonrad Dybcio .pd = { 22008c18b41bSKonrad Dybcio .name = "pcie", 22018c18b41bSKonrad Dybcio }, 22028c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22038c18b41bSKonrad Dybcio }; 22048c18b41bSKonrad Dybcio 22058c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 22068c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 22078c18b41bSKonrad Dybcio .pd = { 22088c18b41bSKonrad Dybcio .name = "pcie_0", 22098c18b41bSKonrad Dybcio }, 22108c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22118c18b41bSKonrad Dybcio }; 22128c18b41bSKonrad Dybcio 22138c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 22148c18b41bSKonrad Dybcio .gdscr = 0x1b44, 22158c18b41bSKonrad Dybcio .pd = { 22168c18b41bSKonrad Dybcio .name = "pcie_1", 22178c18b41bSKonrad Dybcio }, 22188c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22198c18b41bSKonrad Dybcio }; 22208c18b41bSKonrad Dybcio 22218c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 22228c18b41bSKonrad Dybcio .gdscr = 0x3c4, 22238c18b41bSKonrad Dybcio .pd = { 22248c18b41bSKonrad Dybcio .name = "usb30", 22258c18b41bSKonrad Dybcio }, 22268c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22278c18b41bSKonrad Dybcio }; 22288c18b41bSKonrad Dybcio 22298c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 22308c18b41bSKonrad Dybcio .gdscr = 0x1d44, 22318c18b41bSKonrad Dybcio .pd = { 22328c18b41bSKonrad Dybcio .name = "ufs", 22338c18b41bSKonrad Dybcio }, 22348c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22358c18b41bSKonrad Dybcio }; 22368c18b41bSKonrad Dybcio 2237aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2238aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2239aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2240aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2241aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 2242aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2243aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2244aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2245aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2246aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2247aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2248aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2249aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2250aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2251aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2252aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2253aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2254aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2255aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2256aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2257aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2258aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2259aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2260aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2261aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2262aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2263aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2264aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2265aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2266aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2267aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2268aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2269aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2270aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2271aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2272aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2273aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2274aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2275aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2276aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2277aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2278aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2279aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2280aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2281aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2282aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2283aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2284aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2285aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2286aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2287aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2288aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2289aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2290aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2291aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2292aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2293aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2294aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2295aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2296aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2297aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2298aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2299aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2300aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2301aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2302aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2303aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2304aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2305aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2306aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2307aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2308aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2309aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2310aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2311aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2312aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2313aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2314aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2315aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2316aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2317aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2318aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2319aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2320aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2321aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2322aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2323aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2324aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2325aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2326aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2327aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2328aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2329aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2330aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2331aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2332aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2333aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2334aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2335aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2336aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 23378c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 23388c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2339aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 23408c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 23418c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2342aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 23438c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2344aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 23458c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 23468c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2347aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 23488c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2349aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 23508c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2351eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 23528c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 23538c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 23548c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 23558c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 23568c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 23578c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 23588c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2359aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2360aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 23618c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2362aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 23638c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2364aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2365aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 23668c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 23678c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2368aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 23698c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 23708c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 23718c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2372aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2373aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 23748c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2375aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 23768c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2377aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 23788c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 23798c18b41bSKonrad Dybcio }; 23808c18b41bSKonrad Dybcio 23818c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 23828c18b41bSKonrad Dybcio [PCIE_GDSC] = &pcie_gdsc, 23838c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 23848c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 23858c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 23868c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 23878c18b41bSKonrad Dybcio }; 23888c18b41bSKonrad Dybcio 23898c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 23908c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 23918c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 23928c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 23938c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 23948c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2395aec89f78SBastian Köcher }; 2396aec89f78SBastian Köcher 2397aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2398aec89f78SBastian Köcher .reg_bits = 32, 2399aec89f78SBastian Köcher .reg_stride = 4, 2400aec89f78SBastian Köcher .val_bits = 32, 2401aec89f78SBastian Köcher .max_register = 0x2000, 2402aec89f78SBastian Köcher .fast_io = true, 2403aec89f78SBastian Köcher }; 2404aec89f78SBastian Köcher 2405aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2406aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2407aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2408aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 24098c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 24108c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 24118c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 24128c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2413aec89f78SBastian Köcher }; 2414aec89f78SBastian Köcher 2415aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2416aec89f78SBastian Köcher { .compatible = "qcom,gcc-msm8994" }, 2417aec89f78SBastian Köcher {} 2418aec89f78SBastian Köcher }; 2419aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2420aec89f78SBastian Köcher 2421aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2422aec89f78SBastian Köcher { 2423aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2424aec89f78SBastian Köcher } 2425aec89f78SBastian Köcher 2426aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2427aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2428aec89f78SBastian Köcher .driver = { 2429aec89f78SBastian Köcher .name = "gcc-msm8994", 2430aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2431aec89f78SBastian Köcher }, 2432aec89f78SBastian Köcher }; 2433aec89f78SBastian Köcher 2434aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2435aec89f78SBastian Köcher { 2436aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2437aec89f78SBastian Köcher } 2438aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2439aec89f78SBastian Köcher 2440aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2441aec89f78SBastian Köcher { 2442aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2443aec89f78SBastian Köcher } 2444aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2445aec89f78SBastian Köcher 2446aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2447aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2448aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2449