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 = { 320519d1d0SKonrad 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), 370519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 38aec89f78SBastian Köcher .name = "gpll0_early", 390519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 400519d1d0SKonrad Dybcio .fw_name = "xo", 410519d1d0SKonrad 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 = { 490519d1d0SKonrad Dybcio .offset = 0, 5028d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 510519d1d0SKonrad 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), 650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 66aec89f78SBastian Köcher .name = "gpll4_early", 670519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 680519d1d0SKonrad Dybcio .fw_name = "xo", 690519d1d0SKonrad 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], 790519d1d0SKonrad 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 870519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = { 880519d1d0SKonrad Dybcio { P_XO, 0 }, 890519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 900519d1d0SKonrad Dybcio }; 910519d1d0SKonrad Dybcio 920519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = { 930519d1d0SKonrad Dybcio { .fw_name = "xo" }, 940519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 950519d1d0SKonrad Dybcio }; 960519d1d0SKonrad Dybcio 970519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 980519d1d0SKonrad Dybcio { P_XO, 0 }, 990519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 1000519d1d0SKonrad Dybcio { P_GPLL4, 5 }, 1010519d1d0SKonrad Dybcio }; 1020519d1d0SKonrad Dybcio 1030519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 1040519d1d0SKonrad Dybcio { .fw_name = "xo" }, 1050519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 1060519d1d0SKonrad Dybcio { .hw = &gpll4.clkr.hw }, 1070519d1d0SKonrad Dybcio }; 1080519d1d0SKonrad 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, 1250519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 126aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 1270519d1d0SKonrad 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, 1450519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 146aec89f78SBastian Köcher .name = "usb30_master_clk_src", 1470519d1d0SKonrad 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, 1640519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 165aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 1660519d1d0SKonrad 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 172*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_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, 190*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 1910519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 192aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 1930519d1d0SKonrad 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, 2040519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 205aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 2060519d1d0SKonrad 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 212*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 213*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 214*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 215*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 216*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 217*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 218*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 219*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 220*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 221*80863521SKonrad Dybcio F(46150000, P_GPLL0, 13, 0, 0), 222*80863521SKonrad Dybcio { } 223*80863521SKonrad Dybcio }; 224*80863521SKonrad Dybcio 225aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 226aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 227aec89f78SBastian Köcher .mnd_width = 8, 228aec89f78SBastian Köcher .hid_width = 5, 229aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 230*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 2310519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 232aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 2330519d1d0SKonrad 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_i2c_apps_clk_src = { 240aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 241aec89f78SBastian Köcher .hid_width = 5, 242aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 243aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2440519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 245aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 2460519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 247aec89f78SBastian Köcher .num_parents = 2, 248aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 249aec89f78SBastian Köcher }, 250aec89f78SBastian Köcher }; 251aec89f78SBastian Köcher 252*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 253*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 254*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 255*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 256*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 257*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 258*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 259*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 260*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 261*80863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 262*80863521SKonrad Dybcio { } 263*80863521SKonrad Dybcio }; 264*80863521SKonrad Dybcio 265aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 266aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 267aec89f78SBastian Köcher .mnd_width = 8, 268aec89f78SBastian Köcher .hid_width = 5, 269aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 270*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 2710519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 272aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 2730519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 274aec89f78SBastian Köcher .num_parents = 2, 275aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 276aec89f78SBastian Köcher }, 277aec89f78SBastian Köcher }; 278aec89f78SBastian Köcher 279aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 280aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 281aec89f78SBastian Köcher .hid_width = 5, 282aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 283aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 285aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 2860519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 287aec89f78SBastian Köcher .num_parents = 2, 288aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 289aec89f78SBastian Köcher }, 290aec89f78SBastian Köcher }; 291aec89f78SBastian Köcher 292aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 293aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 294aec89f78SBastian Köcher .mnd_width = 8, 295aec89f78SBastian Köcher .hid_width = 5, 296aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 297*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 2980519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 299aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 3000519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 301aec89f78SBastian Köcher .num_parents = 2, 302aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 303aec89f78SBastian Köcher }, 304aec89f78SBastian Köcher }; 305aec89f78SBastian Köcher 306aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 307aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 308aec89f78SBastian Köcher .hid_width = 5, 309aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 310aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3110519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 312aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 3130519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 314aec89f78SBastian Köcher .num_parents = 2, 315aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 316aec89f78SBastian Köcher }, 317aec89f78SBastian Köcher }; 318aec89f78SBastian Köcher 319*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 320*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 321*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 322*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 323*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 324*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 325*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 326*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 327*80863521SKonrad Dybcio F(40000000, P_GPLL0, 15, 0, 0), 328*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 329*80863521SKonrad Dybcio { } 330*80863521SKonrad Dybcio }; 331*80863521SKonrad Dybcio 332aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 333aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 334aec89f78SBastian Köcher .mnd_width = 8, 335aec89f78SBastian Köcher .hid_width = 5, 336aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 337*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 3380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 339aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 3400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 341aec89f78SBastian Köcher .num_parents = 2, 342aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 343aec89f78SBastian Köcher }, 344aec89f78SBastian Köcher }; 345aec89f78SBastian Köcher 346aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 347aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 348aec89f78SBastian Köcher .hid_width = 5, 349aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 350aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3510519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 352aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 3530519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 354aec89f78SBastian Köcher .num_parents = 2, 355aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 356aec89f78SBastian Köcher }, 357aec89f78SBastian Köcher }; 358aec89f78SBastian Köcher 359*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 360*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 361*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 362*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 363*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 364*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 365*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 366*80863521SKonrad Dybcio F(27906976, P_GPLL0, 1, 2, 43), 367*80863521SKonrad Dybcio F(41380000, P_GPLL0, 15, 0, 0), 368*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 369*80863521SKonrad Dybcio { } 370*80863521SKonrad Dybcio }; 371*80863521SKonrad Dybcio 372aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 373aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 374aec89f78SBastian Köcher .mnd_width = 8, 375aec89f78SBastian Köcher .hid_width = 5, 376aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 377*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 3780519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 379aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 3800519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 381aec89f78SBastian Köcher .num_parents = 2, 382aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 383aec89f78SBastian Köcher }, 384aec89f78SBastian Köcher }; 385aec89f78SBastian Köcher 386aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 387aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 388aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 389aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 390aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 391aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 392aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 393aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 394aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 395aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 396aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 397aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 398aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 399aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 400aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 401aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 402aec89f78SBastian Köcher { } 403aec89f78SBastian Köcher }; 404aec89f78SBastian Köcher 405aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 406aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 407aec89f78SBastian Köcher .mnd_width = 16, 408aec89f78SBastian Köcher .hid_width = 5, 409aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 410aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4110519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 412aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 4130519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 414aec89f78SBastian Köcher .num_parents = 2, 415aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 416aec89f78SBastian Köcher }, 417aec89f78SBastian Köcher }; 418aec89f78SBastian Köcher 419aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 420aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 421aec89f78SBastian Köcher .mnd_width = 16, 422aec89f78SBastian Köcher .hid_width = 5, 423aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 424aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4250519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 426aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 4270519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 428aec89f78SBastian Köcher .num_parents = 2, 429aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 430aec89f78SBastian Köcher }, 431aec89f78SBastian Köcher }; 432aec89f78SBastian Köcher 433aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 434aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 435aec89f78SBastian Köcher .mnd_width = 16, 436aec89f78SBastian Köcher .hid_width = 5, 437aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 438aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4390519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 440aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 4410519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 442aec89f78SBastian Köcher .num_parents = 2, 443aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 444aec89f78SBastian Köcher }, 445aec89f78SBastian Köcher }; 446aec89f78SBastian Köcher 447aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 448aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 449aec89f78SBastian Köcher .mnd_width = 16, 450aec89f78SBastian Köcher .hid_width = 5, 451aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 452aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4530519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 454aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 4550519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 456aec89f78SBastian Köcher .num_parents = 2, 457aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 458aec89f78SBastian Köcher }, 459aec89f78SBastian Köcher }; 460aec89f78SBastian Köcher 461aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 462aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 463aec89f78SBastian Köcher .mnd_width = 16, 464aec89f78SBastian Köcher .hid_width = 5, 465aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 466aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4670519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 468aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 4690519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 470aec89f78SBastian Köcher .num_parents = 2, 471aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 472aec89f78SBastian Köcher }, 473aec89f78SBastian Köcher }; 474aec89f78SBastian Köcher 475aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 476aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 477aec89f78SBastian Köcher .mnd_width = 16, 478aec89f78SBastian Köcher .hid_width = 5, 479aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 480aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4810519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 482aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 4830519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 484aec89f78SBastian Köcher .num_parents = 2, 485aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 486aec89f78SBastian Köcher }, 487aec89f78SBastian Köcher }; 488aec89f78SBastian Köcher 489aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 490aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 491aec89f78SBastian Köcher .hid_width = 5, 492aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 493aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 4940519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 495aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 4960519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 497aec89f78SBastian Köcher .num_parents = 2, 498aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 499aec89f78SBastian Köcher }, 500aec89f78SBastian Köcher }; 501aec89f78SBastian Köcher 502*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 503*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 504*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 505*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 506*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 507*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 508*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 509*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 510*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 511*80863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 512*80863521SKonrad Dybcio { } 513*80863521SKonrad Dybcio }; 514*80863521SKonrad Dybcio 515aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 516aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 517aec89f78SBastian Köcher .mnd_width = 8, 518aec89f78SBastian Köcher .hid_width = 5, 519aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 520*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5210519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 522aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 5230519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 524aec89f78SBastian Köcher .num_parents = 2, 525aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 526aec89f78SBastian Köcher }, 527aec89f78SBastian Köcher }; 528aec89f78SBastian Köcher 529aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 530aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 531aec89f78SBastian Köcher .hid_width = 5, 532aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 533aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 535aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 5360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 537aec89f78SBastian Köcher .num_parents = 2, 538aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 539aec89f78SBastian Köcher }, 540aec89f78SBastian Köcher }; 541aec89f78SBastian Köcher 542aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 543aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 544aec89f78SBastian Köcher .mnd_width = 8, 545aec89f78SBastian Köcher .hid_width = 5, 546aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 547*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5480519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 549aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 5500519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 551aec89f78SBastian Köcher .num_parents = 2, 552aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 553aec89f78SBastian Köcher }, 554aec89f78SBastian Köcher }; 555aec89f78SBastian Köcher 556*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 557*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 558*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 559*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 560*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 561*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 562*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 563*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 564*80863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 565*80863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 566*80863521SKonrad Dybcio { } 567*80863521SKonrad Dybcio }; 568*80863521SKonrad Dybcio 569aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 570aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 571aec89f78SBastian Köcher .hid_width = 5, 572aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 573aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5740519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 575aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 5760519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 577aec89f78SBastian Köcher .num_parents = 2, 578aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 579aec89f78SBastian Köcher }, 580aec89f78SBastian Köcher }; 581aec89f78SBastian Köcher 582aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 583aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 584aec89f78SBastian Köcher .mnd_width = 8, 585aec89f78SBastian Köcher .hid_width = 5, 586aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 587*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 5880519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 589aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 5900519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 591aec89f78SBastian Köcher .num_parents = 2, 592aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 593aec89f78SBastian Köcher }, 594aec89f78SBastian Köcher }; 595aec89f78SBastian Köcher 596aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 597aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 598aec89f78SBastian Köcher .hid_width = 5, 599aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 600aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 602aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 6030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 604aec89f78SBastian Köcher .num_parents = 2, 605aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 606aec89f78SBastian Köcher }, 607aec89f78SBastian Köcher }; 608aec89f78SBastian Köcher 609aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 610aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 611aec89f78SBastian Köcher .mnd_width = 8, 612aec89f78SBastian Köcher .hid_width = 5, 613aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 614*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6150519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 616aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 6170519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 618aec89f78SBastian Köcher .num_parents = 2, 619aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 620aec89f78SBastian Köcher }, 621aec89f78SBastian Köcher }; 622aec89f78SBastian Köcher 623aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 624aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 625aec89f78SBastian Köcher .hid_width = 5, 626aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 627aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6280519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 629aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 6300519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 631aec89f78SBastian Köcher .num_parents = 2, 632aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 633aec89f78SBastian Köcher }, 634aec89f78SBastian Köcher }; 635aec89f78SBastian Köcher 636aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 637aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 638aec89f78SBastian Köcher .mnd_width = 8, 639aec89f78SBastian Köcher .hid_width = 5, 640aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 641*80863521SKonrad Dybcio /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 642*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 6430519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 644aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 6450519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 646aec89f78SBastian Köcher .num_parents = 2, 647aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 648aec89f78SBastian Köcher }, 649aec89f78SBastian Köcher }; 650aec89f78SBastian Köcher 651aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 652aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 653aec89f78SBastian Köcher .hid_width = 5, 654aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 655aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6560519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 657aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 6580519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 659aec89f78SBastian Köcher .num_parents = 2, 660aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 661aec89f78SBastian Köcher }, 662aec89f78SBastian Köcher }; 663aec89f78SBastian Köcher 664*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 665*80863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 666*80863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 667*80863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 668*80863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 669*80863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 670*80863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 671*80863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 672*80863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 673*80863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 674*80863521SKonrad Dybcio { } 675*80863521SKonrad Dybcio }; 676*80863521SKonrad Dybcio 677aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 678aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 679aec89f78SBastian Köcher .mnd_width = 8, 680aec89f78SBastian Köcher .hid_width = 5, 681aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 682*80863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 6830519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 684aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 6850519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 686aec89f78SBastian Köcher .num_parents = 2, 687aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 688aec89f78SBastian Köcher }, 689aec89f78SBastian Köcher }; 690aec89f78SBastian Köcher 691aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 692aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 693aec89f78SBastian Köcher .mnd_width = 16, 694aec89f78SBastian Köcher .hid_width = 5, 695aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 696aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 6970519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 698aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 6990519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 700aec89f78SBastian Köcher .num_parents = 2, 701aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 702aec89f78SBastian Köcher }, 703aec89f78SBastian Köcher }; 704aec89f78SBastian Köcher 705aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 706aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 707aec89f78SBastian Köcher .mnd_width = 16, 708aec89f78SBastian Köcher .hid_width = 5, 709aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 710aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7110519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 712aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 7130519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 714aec89f78SBastian Köcher .num_parents = 2, 715aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 716aec89f78SBastian Köcher }, 717aec89f78SBastian Köcher }; 718aec89f78SBastian Köcher 719aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 720aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 721aec89f78SBastian Köcher .mnd_width = 16, 722aec89f78SBastian Köcher .hid_width = 5, 723aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 724aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7250519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 726aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 7270519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 728aec89f78SBastian Köcher .num_parents = 2, 729aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 730aec89f78SBastian Köcher }, 731aec89f78SBastian Köcher }; 732aec89f78SBastian Köcher 733aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 734aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 735aec89f78SBastian Köcher .mnd_width = 16, 736aec89f78SBastian Köcher .hid_width = 5, 737aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 738aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7390519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 740aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 7410519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 742aec89f78SBastian Köcher .num_parents = 2, 743aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 744aec89f78SBastian Köcher }, 745aec89f78SBastian Köcher }; 746aec89f78SBastian Köcher 747aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 748aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 749aec89f78SBastian Köcher .mnd_width = 16, 750aec89f78SBastian Köcher .hid_width = 5, 751aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 752aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7530519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 754aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 7550519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 756aec89f78SBastian Köcher .num_parents = 2, 757aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 758aec89f78SBastian Köcher }, 759aec89f78SBastian Köcher }; 760aec89f78SBastian Köcher 761aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 762aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 763aec89f78SBastian Köcher .mnd_width = 16, 764aec89f78SBastian Köcher .hid_width = 5, 765aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 766aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7670519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 768aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 7690519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 770aec89f78SBastian Köcher .num_parents = 2, 771aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 772aec89f78SBastian Köcher }, 773aec89f78SBastian Köcher }; 774aec89f78SBastian Köcher 775aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 776aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 777aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 778aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 779aec89f78SBastian Köcher { } 780aec89f78SBastian Köcher }; 781aec89f78SBastian Köcher 782aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 783aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 784aec89f78SBastian Köcher .mnd_width = 8, 785aec89f78SBastian Köcher .hid_width = 5, 786aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 787aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 7880519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 789aec89f78SBastian Köcher .name = "gp1_clk_src", 7900519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 791aec89f78SBastian Köcher .num_parents = 2, 792aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 793aec89f78SBastian Köcher }, 794aec89f78SBastian Köcher }; 795aec89f78SBastian Köcher 796aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 797aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 798aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 799aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 800aec89f78SBastian Köcher { } 801aec89f78SBastian Köcher }; 802aec89f78SBastian Köcher 803aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 804aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 805aec89f78SBastian Köcher .mnd_width = 8, 806aec89f78SBastian Köcher .hid_width = 5, 807aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 808aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 8090519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 810aec89f78SBastian Köcher .name = "gp2_clk_src", 8110519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 812aec89f78SBastian Köcher .num_parents = 2, 813aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 814aec89f78SBastian Köcher }, 815aec89f78SBastian Köcher }; 816aec89f78SBastian Köcher 817aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 818aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 819aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 820aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 821aec89f78SBastian Köcher { } 822aec89f78SBastian Köcher }; 823aec89f78SBastian Köcher 824aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 825aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 826aec89f78SBastian Köcher .mnd_width = 8, 827aec89f78SBastian Köcher .hid_width = 5, 828aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 829aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 8300519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 831aec89f78SBastian Köcher .name = "gp3_clk_src", 8320519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 833aec89f78SBastian Köcher .num_parents = 2, 834aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 835aec89f78SBastian Köcher }, 836aec89f78SBastian Köcher }; 837aec89f78SBastian Köcher 838aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 839aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 840aec89f78SBastian Köcher { } 841aec89f78SBastian Köcher }; 842aec89f78SBastian Köcher 843aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 844aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 845aec89f78SBastian Köcher .mnd_width = 8, 846aec89f78SBastian Köcher .hid_width = 5, 847aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 8480519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 849aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 8500519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8510519d1d0SKonrad Dybcio .fw_name = "xo", 8520519d1d0SKonrad Dybcio }, 853aec89f78SBastian Köcher .num_parents = 1, 854aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 855aec89f78SBastian Köcher }, 856aec89f78SBastian Köcher }; 857aec89f78SBastian Köcher 858aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 859aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 860aec89f78SBastian Köcher { } 861aec89f78SBastian Köcher }; 862aec89f78SBastian Köcher 863aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 864aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 865aec89f78SBastian Köcher .hid_width = 5, 866aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 8670519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 868aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 8690519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8700519d1d0SKonrad Dybcio .fw_name = "xo", 8710519d1d0SKonrad Dybcio }, 872aec89f78SBastian Köcher .num_parents = 1, 873aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 874aec89f78SBastian Köcher }, 875aec89f78SBastian Köcher }; 876aec89f78SBastian Köcher 877aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 878aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 879aec89f78SBastian Köcher { } 880aec89f78SBastian Köcher }; 881aec89f78SBastian Köcher 882aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 883aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 884aec89f78SBastian Köcher .mnd_width = 8, 885aec89f78SBastian Köcher .hid_width = 5, 886aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 8870519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 888aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 8890519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8900519d1d0SKonrad Dybcio .fw_name = "xo", 8910519d1d0SKonrad Dybcio }, 892aec89f78SBastian Köcher .num_parents = 1, 893aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 894aec89f78SBastian Köcher }, 895aec89f78SBastian Köcher }; 896aec89f78SBastian Köcher 897aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 898aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 899aec89f78SBastian Köcher .hid_width = 5, 900aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 902aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 9030519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9040519d1d0SKonrad Dybcio .fw_name = "xo", 9050519d1d0SKonrad Dybcio }, 906aec89f78SBastian Köcher .num_parents = 1, 907aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 908aec89f78SBastian Köcher }, 909aec89f78SBastian Köcher }; 910aec89f78SBastian Köcher 911aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 912aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 913aec89f78SBastian Köcher { } 914aec89f78SBastian Köcher }; 915aec89f78SBastian Köcher 916aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 917aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 918aec89f78SBastian Köcher .hid_width = 5, 919aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 920aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 9210519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 922aec89f78SBastian Köcher .name = "pdm2_clk_src", 9230519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 924aec89f78SBastian Köcher .num_parents = 2, 925aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 926aec89f78SBastian Köcher }, 927aec89f78SBastian Köcher }; 928aec89f78SBastian Köcher 929aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 930aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 931aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 932aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 933aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 934aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 935aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 936aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 937aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 938aec89f78SBastian Köcher { } 939aec89f78SBastian Köcher }; 940aec89f78SBastian Köcher 941aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 942aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 943aec89f78SBastian Köcher .mnd_width = 8, 944aec89f78SBastian Köcher .hid_width = 5, 945aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 946aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 9470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 948aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 9490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 950aec89f78SBastian Köcher .num_parents = 3, 9515f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 952aec89f78SBastian Köcher }, 953aec89f78SBastian Köcher }; 954aec89f78SBastian Köcher 955aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 956aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 957aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 958aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 959aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 960aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 961aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 962aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 963aec89f78SBastian Köcher { } 964aec89f78SBastian Köcher }; 965aec89f78SBastian Köcher 966aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 967aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 968aec89f78SBastian Köcher .mnd_width = 8, 969aec89f78SBastian Köcher .hid_width = 5, 970aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 971aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 9720519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 973aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 9740519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 975aec89f78SBastian Köcher .num_parents = 2, 9765f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 977aec89f78SBastian Köcher }, 978aec89f78SBastian Köcher }; 979aec89f78SBastian Köcher 980aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 981aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 982aec89f78SBastian Köcher .mnd_width = 8, 983aec89f78SBastian Köcher .hid_width = 5, 984aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 985aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 9860519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 987aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 9880519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 989aec89f78SBastian Köcher .num_parents = 2, 9905f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 991aec89f78SBastian Köcher }, 992aec89f78SBastian Köcher }; 993aec89f78SBastian Köcher 994aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 995aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 996aec89f78SBastian Köcher .mnd_width = 8, 997aec89f78SBastian Köcher .hid_width = 5, 998aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 999aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10000519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1001aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 10020519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1003aec89f78SBastian Köcher .num_parents = 2, 10045f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1005aec89f78SBastian Köcher }, 1006aec89f78SBastian Köcher }; 1007aec89f78SBastian Köcher 1008aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1009aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 1010aec89f78SBastian Köcher { } 1011aec89f78SBastian Köcher }; 1012aec89f78SBastian Köcher 1013aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 1014aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 1015aec89f78SBastian Köcher .mnd_width = 8, 1016aec89f78SBastian Köcher .hid_width = 5, 1017aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 10180519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1019aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 10200519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10210519d1d0SKonrad Dybcio .fw_name = "xo", 10220519d1d0SKonrad Dybcio }, 1023aec89f78SBastian Köcher .num_parents = 1, 1024aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1025aec89f78SBastian Köcher }, 1026aec89f78SBastian Köcher }; 1027aec89f78SBastian Köcher 1028aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1029aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 1030aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 1031aec89f78SBastian Köcher { } 1032aec89f78SBastian Köcher }; 1033aec89f78SBastian Köcher 1034aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1035aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1036aec89f78SBastian Köcher .hid_width = 5, 1037aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1038aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 10390519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1040aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 10410519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1042aec89f78SBastian Köcher .num_parents = 2, 1043aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1044aec89f78SBastian Köcher }, 1045aec89f78SBastian Köcher }; 1046aec89f78SBastian Köcher 1047aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1048aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1049aec89f78SBastian Köcher { } 1050aec89f78SBastian Köcher }; 1051aec89f78SBastian Köcher 1052aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1053aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1054aec89f78SBastian Köcher .hid_width = 5, 1055aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 10560519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1057aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 10580519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10590519d1d0SKonrad Dybcio .fw_name = "xo", 10600519d1d0SKonrad Dybcio }, 1061aec89f78SBastian Köcher .num_parents = 1, 1062aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1063aec89f78SBastian Köcher }, 1064aec89f78SBastian Köcher }; 1065aec89f78SBastian Köcher 1066aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1067aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1068aec89f78SBastian Köcher { } 1069aec89f78SBastian Köcher }; 1070aec89f78SBastian Köcher 1071aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1072aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1073aec89f78SBastian Köcher .hid_width = 5, 1074aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1075aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 10760519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1077aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 10780519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1079aec89f78SBastian Köcher .num_parents = 2, 1080aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1081aec89f78SBastian Köcher }, 1082aec89f78SBastian Köcher }; 1083aec89f78SBastian Köcher 1084aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 1085aec89f78SBastian Köcher .halt_reg = 0x05c4, 1086aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1087aec89f78SBastian Köcher .clkr = { 1088aec89f78SBastian Köcher .enable_reg = 0x1484, 1089aec89f78SBastian Köcher .enable_mask = BIT(17), 10900519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1091aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 1092aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1093aec89f78SBastian Köcher }, 1094aec89f78SBastian Köcher }, 1095aec89f78SBastian Köcher }; 1096aec89f78SBastian Köcher 1097aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1098aec89f78SBastian Köcher .halt_reg = 0x0648, 1099aec89f78SBastian Köcher .clkr = { 1100aec89f78SBastian Köcher .enable_reg = 0x0648, 1101aec89f78SBastian Köcher .enable_mask = BIT(0), 11020519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1103aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 11040519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1105aec89f78SBastian Köcher .num_parents = 1, 1106aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1107aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1108aec89f78SBastian Köcher }, 1109aec89f78SBastian Köcher }, 1110aec89f78SBastian Köcher }; 1111aec89f78SBastian Köcher 1112aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1113aec89f78SBastian Köcher .halt_reg = 0x0644, 1114aec89f78SBastian Köcher .clkr = { 1115aec89f78SBastian Köcher .enable_reg = 0x0644, 1116aec89f78SBastian Köcher .enable_mask = BIT(0), 11170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1118aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 11190519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1120aec89f78SBastian Köcher .num_parents = 1, 1121aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1122aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1123aec89f78SBastian Köcher }, 1124aec89f78SBastian Köcher }, 1125aec89f78SBastian Köcher }; 1126aec89f78SBastian Köcher 1127aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1128aec89f78SBastian Köcher .halt_reg = 0x06c8, 1129aec89f78SBastian Köcher .clkr = { 1130aec89f78SBastian Köcher .enable_reg = 0x06c8, 1131aec89f78SBastian Köcher .enable_mask = BIT(0), 11320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1133aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 11340519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1135aec89f78SBastian Köcher .num_parents = 1, 1136aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1137aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1138aec89f78SBastian Köcher }, 1139aec89f78SBastian Köcher }, 1140aec89f78SBastian Köcher }; 1141aec89f78SBastian Köcher 1142aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1143aec89f78SBastian Köcher .halt_reg = 0x06c4, 1144aec89f78SBastian Köcher .clkr = { 1145aec89f78SBastian Köcher .enable_reg = 0x06c4, 1146aec89f78SBastian Köcher .enable_mask = BIT(0), 11470519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1148aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 11490519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1150aec89f78SBastian Köcher .num_parents = 1, 1151aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1152aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1153aec89f78SBastian Köcher }, 1154aec89f78SBastian Köcher }, 1155aec89f78SBastian Köcher }; 1156aec89f78SBastian Köcher 1157aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1158aec89f78SBastian Köcher .halt_reg = 0x0748, 1159aec89f78SBastian Köcher .clkr = { 1160aec89f78SBastian Köcher .enable_reg = 0x0748, 1161aec89f78SBastian Köcher .enable_mask = BIT(0), 11620519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1163aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 11640519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1165aec89f78SBastian Köcher .num_parents = 1, 1166aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1167aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1168aec89f78SBastian Köcher }, 1169aec89f78SBastian Köcher }, 1170aec89f78SBastian Köcher }; 1171aec89f78SBastian Köcher 1172aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1173aec89f78SBastian Köcher .halt_reg = 0x0744, 1174aec89f78SBastian Köcher .clkr = { 1175aec89f78SBastian Köcher .enable_reg = 0x0744, 1176aec89f78SBastian Köcher .enable_mask = BIT(0), 11770519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1178aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 11790519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1180aec89f78SBastian Köcher .num_parents = 1, 1181aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1182aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1183aec89f78SBastian Köcher }, 1184aec89f78SBastian Köcher }, 1185aec89f78SBastian Köcher }; 1186aec89f78SBastian Köcher 1187aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1188aec89f78SBastian Köcher .halt_reg = 0x07c8, 1189aec89f78SBastian Köcher .clkr = { 1190aec89f78SBastian Köcher .enable_reg = 0x07c8, 1191aec89f78SBastian Köcher .enable_mask = BIT(0), 11920519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1193aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 11940519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1195aec89f78SBastian Köcher .num_parents = 1, 1196aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1197aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1198aec89f78SBastian Köcher }, 1199aec89f78SBastian Köcher }, 1200aec89f78SBastian Köcher }; 1201aec89f78SBastian Köcher 1202aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1203aec89f78SBastian Köcher .halt_reg = 0x07c4, 1204aec89f78SBastian Köcher .clkr = { 1205aec89f78SBastian Köcher .enable_reg = 0x07c4, 1206aec89f78SBastian Köcher .enable_mask = BIT(0), 12070519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1208aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 12090519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1210aec89f78SBastian Köcher .num_parents = 1, 1211aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1212aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1213aec89f78SBastian Köcher }, 1214aec89f78SBastian Köcher }, 1215aec89f78SBastian Köcher }; 1216aec89f78SBastian Köcher 1217aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1218aec89f78SBastian Köcher .halt_reg = 0x0848, 1219aec89f78SBastian Köcher .clkr = { 1220aec89f78SBastian Köcher .enable_reg = 0x0848, 1221aec89f78SBastian Köcher .enable_mask = BIT(0), 12220519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1223aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 12240519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1225aec89f78SBastian Köcher .num_parents = 1, 1226aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1227aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1228aec89f78SBastian Köcher }, 1229aec89f78SBastian Köcher }, 1230aec89f78SBastian Köcher }; 1231aec89f78SBastian Köcher 1232aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1233aec89f78SBastian Köcher .halt_reg = 0x0844, 1234aec89f78SBastian Köcher .clkr = { 1235aec89f78SBastian Köcher .enable_reg = 0x0844, 1236aec89f78SBastian Köcher .enable_mask = BIT(0), 12370519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1238aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 12390519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1240aec89f78SBastian Köcher .num_parents = 1, 1241aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1242aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1243aec89f78SBastian Köcher }, 1244aec89f78SBastian Köcher }, 1245aec89f78SBastian Köcher }; 1246aec89f78SBastian Köcher 1247aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1248aec89f78SBastian Köcher .halt_reg = 0x08c8, 1249aec89f78SBastian Köcher .clkr = { 1250aec89f78SBastian Köcher .enable_reg = 0x08c8, 1251aec89f78SBastian Köcher .enable_mask = BIT(0), 12520519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1253aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 12540519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1255aec89f78SBastian Köcher .num_parents = 1, 1256aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1257aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1258aec89f78SBastian Köcher }, 1259aec89f78SBastian Köcher }, 1260aec89f78SBastian Köcher }; 1261aec89f78SBastian Köcher 1262aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1263aec89f78SBastian Köcher .halt_reg = 0x08c4, 1264aec89f78SBastian Köcher .clkr = { 1265aec89f78SBastian Köcher .enable_reg = 0x08c4, 1266aec89f78SBastian Köcher .enable_mask = BIT(0), 12670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1268aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 12690519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1270aec89f78SBastian Köcher .num_parents = 1, 1271aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1272aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1273aec89f78SBastian Köcher }, 1274aec89f78SBastian Köcher }, 1275aec89f78SBastian Köcher }; 1276aec89f78SBastian Köcher 1277aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1278aec89f78SBastian Köcher .halt_reg = 0x0684, 1279aec89f78SBastian Köcher .clkr = { 1280aec89f78SBastian Köcher .enable_reg = 0x0684, 1281aec89f78SBastian Köcher .enable_mask = BIT(0), 12820519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1283aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 12840519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1285aec89f78SBastian Köcher .num_parents = 1, 1286aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1287aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1288aec89f78SBastian Köcher }, 1289aec89f78SBastian Köcher }, 1290aec89f78SBastian Köcher }; 1291aec89f78SBastian Köcher 1292aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1293aec89f78SBastian Köcher .halt_reg = 0x0704, 1294aec89f78SBastian Köcher .clkr = { 1295aec89f78SBastian Köcher .enable_reg = 0x0704, 1296aec89f78SBastian Köcher .enable_mask = BIT(0), 12970519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1298aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 12990519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1300aec89f78SBastian Köcher .num_parents = 1, 1301aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1302aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1303aec89f78SBastian Köcher }, 1304aec89f78SBastian Köcher }, 1305aec89f78SBastian Köcher }; 1306aec89f78SBastian Köcher 1307aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1308aec89f78SBastian Köcher .halt_reg = 0x0784, 1309aec89f78SBastian Köcher .clkr = { 1310aec89f78SBastian Köcher .enable_reg = 0x0784, 1311aec89f78SBastian Köcher .enable_mask = BIT(0), 13120519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1313aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 13140519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1315aec89f78SBastian Köcher .num_parents = 1, 1316aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1317aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1318aec89f78SBastian Köcher }, 1319aec89f78SBastian Köcher }, 1320aec89f78SBastian Köcher }; 1321aec89f78SBastian Köcher 1322aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1323aec89f78SBastian Köcher .halt_reg = 0x0804, 1324aec89f78SBastian Köcher .clkr = { 1325aec89f78SBastian Köcher .enable_reg = 0x0804, 1326aec89f78SBastian Köcher .enable_mask = BIT(0), 13270519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1328aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 13290519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1330aec89f78SBastian Köcher .num_parents = 1, 1331aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1332aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1333aec89f78SBastian Köcher }, 1334aec89f78SBastian Köcher }, 1335aec89f78SBastian Köcher }; 1336aec89f78SBastian Köcher 1337aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1338aec89f78SBastian Köcher .halt_reg = 0x0884, 1339aec89f78SBastian Köcher .clkr = { 1340aec89f78SBastian Köcher .enable_reg = 0x0884, 1341aec89f78SBastian Köcher .enable_mask = BIT(0), 13420519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1343aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 13440519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1345aec89f78SBastian Köcher .num_parents = 1, 1346aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1347aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1348aec89f78SBastian Köcher }, 1349aec89f78SBastian Köcher }, 1350aec89f78SBastian Köcher }; 1351aec89f78SBastian Köcher 1352aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1353aec89f78SBastian Köcher .halt_reg = 0x0904, 1354aec89f78SBastian Köcher .clkr = { 1355aec89f78SBastian Köcher .enable_reg = 0x0904, 1356aec89f78SBastian Köcher .enable_mask = BIT(0), 13570519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1358aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 13590519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1360aec89f78SBastian Köcher .num_parents = 1, 1361aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1362aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1363aec89f78SBastian Köcher }, 1364aec89f78SBastian Köcher }, 1365aec89f78SBastian Köcher }; 1366aec89f78SBastian Köcher 1367aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1368aec89f78SBastian Köcher .halt_reg = 0x0944, 1369aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1370aec89f78SBastian Köcher .clkr = { 1371aec89f78SBastian Köcher .enable_reg = 0x1484, 1372aec89f78SBastian Köcher .enable_mask = BIT(15), 13730519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1374aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 1375aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1376aec89f78SBastian Köcher }, 1377aec89f78SBastian Köcher }, 1378aec89f78SBastian Köcher }; 1379aec89f78SBastian Köcher 1380aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1381aec89f78SBastian Köcher .halt_reg = 0x0988, 1382aec89f78SBastian Köcher .clkr = { 1383aec89f78SBastian Köcher .enable_reg = 0x0988, 1384aec89f78SBastian Köcher .enable_mask = BIT(0), 13850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1386aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 13870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1388aec89f78SBastian Köcher .num_parents = 1, 1389aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1390aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1391aec89f78SBastian Köcher }, 1392aec89f78SBastian Köcher }, 1393aec89f78SBastian Köcher }; 1394aec89f78SBastian Köcher 1395aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1396aec89f78SBastian Köcher .halt_reg = 0x0984, 1397aec89f78SBastian Köcher .clkr = { 1398aec89f78SBastian Köcher .enable_reg = 0x0984, 1399aec89f78SBastian Köcher .enable_mask = BIT(0), 14000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1401aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 14020519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1403aec89f78SBastian Köcher .num_parents = 1, 1404aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1405aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1406aec89f78SBastian Köcher }, 1407aec89f78SBastian Köcher }, 1408aec89f78SBastian Köcher }; 1409aec89f78SBastian Köcher 1410aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1411aec89f78SBastian Köcher .halt_reg = 0x0a08, 1412aec89f78SBastian Köcher .clkr = { 1413aec89f78SBastian Köcher .enable_reg = 0x0a08, 1414aec89f78SBastian Köcher .enable_mask = BIT(0), 14150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1416aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 14170519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1418aec89f78SBastian Köcher .num_parents = 1, 1419aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1420aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1421aec89f78SBastian Köcher }, 1422aec89f78SBastian Köcher }, 1423aec89f78SBastian Köcher }; 1424aec89f78SBastian Köcher 1425aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1426aec89f78SBastian Köcher .halt_reg = 0x0a04, 1427aec89f78SBastian Köcher .clkr = { 1428aec89f78SBastian Köcher .enable_reg = 0x0a04, 1429aec89f78SBastian Köcher .enable_mask = BIT(0), 14300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1431aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 14320519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1433aec89f78SBastian Köcher .num_parents = 1, 1434aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1435aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1436aec89f78SBastian Köcher }, 1437aec89f78SBastian Köcher }, 1438aec89f78SBastian Köcher }; 1439aec89f78SBastian Köcher 1440aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1441aec89f78SBastian Köcher .halt_reg = 0x0a88, 1442aec89f78SBastian Köcher .clkr = { 1443aec89f78SBastian Köcher .enable_reg = 0x0a88, 1444aec89f78SBastian Köcher .enable_mask = BIT(0), 14450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1446aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 14470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1448aec89f78SBastian Köcher .num_parents = 1, 1449aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1450aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1451aec89f78SBastian Köcher }, 1452aec89f78SBastian Köcher }, 1453aec89f78SBastian Köcher }; 1454aec89f78SBastian Köcher 1455aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1456aec89f78SBastian Köcher .halt_reg = 0x0a84, 1457aec89f78SBastian Köcher .clkr = { 1458aec89f78SBastian Köcher .enable_reg = 0x0a84, 1459aec89f78SBastian Köcher .enable_mask = BIT(0), 14600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1461aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 14620519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1463aec89f78SBastian Köcher .num_parents = 1, 1464aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1465aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1466aec89f78SBastian Köcher }, 1467aec89f78SBastian Köcher }, 1468aec89f78SBastian Köcher }; 1469aec89f78SBastian Köcher 1470aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1471aec89f78SBastian Köcher .halt_reg = 0x0b08, 1472aec89f78SBastian Köcher .clkr = { 1473aec89f78SBastian Köcher .enable_reg = 0x0b08, 1474aec89f78SBastian Köcher .enable_mask = BIT(0), 14750519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1476aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 14770519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1478aec89f78SBastian Köcher .num_parents = 1, 1479aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1480aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1481aec89f78SBastian Köcher }, 1482aec89f78SBastian Köcher }, 1483aec89f78SBastian Köcher }; 1484aec89f78SBastian Köcher 1485aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1486aec89f78SBastian Köcher .halt_reg = 0x0b04, 1487aec89f78SBastian Köcher .clkr = { 1488aec89f78SBastian Köcher .enable_reg = 0x0b04, 1489aec89f78SBastian Köcher .enable_mask = BIT(0), 14900519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1491aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 14920519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1493aec89f78SBastian Köcher .num_parents = 1, 1494aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1495aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1496aec89f78SBastian Köcher }, 1497aec89f78SBastian Köcher }, 1498aec89f78SBastian Köcher }; 1499aec89f78SBastian Köcher 1500aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1501aec89f78SBastian Köcher .halt_reg = 0x0b88, 1502aec89f78SBastian Köcher .clkr = { 1503aec89f78SBastian Köcher .enable_reg = 0x0b88, 1504aec89f78SBastian Köcher .enable_mask = BIT(0), 15050519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1506aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 15070519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1508aec89f78SBastian Köcher .num_parents = 1, 1509aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1510aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1511aec89f78SBastian Köcher }, 1512aec89f78SBastian Köcher }, 1513aec89f78SBastian Köcher }; 1514aec89f78SBastian Köcher 1515aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1516aec89f78SBastian Köcher .halt_reg = 0x0b84, 1517aec89f78SBastian Köcher .clkr = { 1518aec89f78SBastian Köcher .enable_reg = 0x0b84, 1519aec89f78SBastian Köcher .enable_mask = BIT(0), 15200519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1521aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 15220519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1523aec89f78SBastian Köcher .num_parents = 1, 1524aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1525aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1526aec89f78SBastian Köcher }, 1527aec89f78SBastian Köcher }, 1528aec89f78SBastian Köcher }; 1529aec89f78SBastian Köcher 1530aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1531aec89f78SBastian Köcher .halt_reg = 0x0c08, 1532aec89f78SBastian Köcher .clkr = { 1533aec89f78SBastian Köcher .enable_reg = 0x0c08, 1534aec89f78SBastian Köcher .enable_mask = BIT(0), 15350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1536aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 15370519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1538aec89f78SBastian Köcher .num_parents = 1, 1539aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1540aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1541aec89f78SBastian Köcher }, 1542aec89f78SBastian Köcher }, 1543aec89f78SBastian Köcher }; 1544aec89f78SBastian Köcher 1545aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1546aec89f78SBastian Köcher .halt_reg = 0x0c04, 1547aec89f78SBastian Köcher .clkr = { 1548aec89f78SBastian Köcher .enable_reg = 0x0c04, 1549aec89f78SBastian Köcher .enable_mask = BIT(0), 15500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1551aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 15520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1553aec89f78SBastian Köcher .num_parents = 1, 1554aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1555aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1556aec89f78SBastian Köcher }, 1557aec89f78SBastian Köcher }, 1558aec89f78SBastian Köcher }; 1559aec89f78SBastian Köcher 1560aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1561aec89f78SBastian Köcher .halt_reg = 0x09c4, 1562aec89f78SBastian Köcher .clkr = { 1563aec89f78SBastian Köcher .enable_reg = 0x09c4, 1564aec89f78SBastian Köcher .enable_mask = BIT(0), 15650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1566aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 15670519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1568aec89f78SBastian Köcher .num_parents = 1, 1569aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1570aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1571aec89f78SBastian Köcher }, 1572aec89f78SBastian Köcher }, 1573aec89f78SBastian Köcher }; 1574aec89f78SBastian Köcher 1575aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1576aec89f78SBastian Köcher .halt_reg = 0x0a44, 1577aec89f78SBastian Köcher .clkr = { 1578aec89f78SBastian Köcher .enable_reg = 0x0a44, 1579aec89f78SBastian Köcher .enable_mask = BIT(0), 15800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1581aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 15820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1583aec89f78SBastian Köcher .num_parents = 1, 1584aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1585aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1586aec89f78SBastian Köcher }, 1587aec89f78SBastian Köcher }, 1588aec89f78SBastian Köcher }; 1589aec89f78SBastian Köcher 1590aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1591aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1592aec89f78SBastian Köcher .clkr = { 1593aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1594aec89f78SBastian Köcher .enable_mask = BIT(0), 15950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1596aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 15970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1598aec89f78SBastian Köcher .num_parents = 1, 1599aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1600aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1601aec89f78SBastian Köcher }, 1602aec89f78SBastian Köcher }, 1603aec89f78SBastian Köcher }; 1604aec89f78SBastian Köcher 1605aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1606aec89f78SBastian Köcher .halt_reg = 0x0b44, 1607aec89f78SBastian Köcher .clkr = { 1608aec89f78SBastian Köcher .enable_reg = 0x0b44, 1609aec89f78SBastian Köcher .enable_mask = BIT(0), 16100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1611aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 16120519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1613aec89f78SBastian Köcher .num_parents = 1, 1614aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1615aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1616aec89f78SBastian Köcher }, 1617aec89f78SBastian Köcher }, 1618aec89f78SBastian Köcher }; 1619aec89f78SBastian Köcher 1620aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1621aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1622aec89f78SBastian Köcher .clkr = { 1623aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1624aec89f78SBastian Köcher .enable_mask = BIT(0), 16250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1626aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 16270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1628aec89f78SBastian Köcher .num_parents = 1, 1629aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1630aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1631aec89f78SBastian Köcher }, 1632aec89f78SBastian Köcher }, 1633aec89f78SBastian Köcher }; 1634aec89f78SBastian Köcher 1635aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1636aec89f78SBastian Köcher .halt_reg = 0x0c44, 1637aec89f78SBastian Köcher .clkr = { 1638aec89f78SBastian Köcher .enable_reg = 0x0c44, 1639aec89f78SBastian Köcher .enable_mask = BIT(0), 16400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1641aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 16420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1643aec89f78SBastian Köcher .num_parents = 1, 1644aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1645aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1646aec89f78SBastian Köcher }, 1647aec89f78SBastian Köcher }, 1648aec89f78SBastian Köcher }; 1649aec89f78SBastian Köcher 1650aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1651aec89f78SBastian Köcher .halt_reg = 0x1900, 1652aec89f78SBastian Köcher .clkr = { 1653aec89f78SBastian Köcher .enable_reg = 0x1900, 1654aec89f78SBastian Köcher .enable_mask = BIT(0), 16550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1656aec89f78SBastian Köcher .name = "gcc_gp1_clk", 16570519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1658aec89f78SBastian Köcher .num_parents = 1, 1659aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1660aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1661aec89f78SBastian Köcher }, 1662aec89f78SBastian Köcher }, 1663aec89f78SBastian Köcher }; 1664aec89f78SBastian Köcher 1665aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1666aec89f78SBastian Köcher .halt_reg = 0x1940, 1667aec89f78SBastian Köcher .clkr = { 1668aec89f78SBastian Köcher .enable_reg = 0x1940, 1669aec89f78SBastian Köcher .enable_mask = BIT(0), 16700519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1671aec89f78SBastian Köcher .name = "gcc_gp2_clk", 16720519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1673aec89f78SBastian Köcher .num_parents = 1, 1674aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1675aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1676aec89f78SBastian Köcher }, 1677aec89f78SBastian Köcher }, 1678aec89f78SBastian Köcher }; 1679aec89f78SBastian Köcher 1680aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1681aec89f78SBastian Köcher .halt_reg = 0x1980, 1682aec89f78SBastian Köcher .clkr = { 1683aec89f78SBastian Köcher .enable_reg = 0x1980, 1684aec89f78SBastian Köcher .enable_mask = BIT(0), 16850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1686aec89f78SBastian Köcher .name = "gcc_gp3_clk", 16870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1688aec89f78SBastian Köcher .num_parents = 1, 1689aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1690aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1691aec89f78SBastian Köcher }, 1692aec89f78SBastian Köcher }, 1693aec89f78SBastian Köcher }; 1694aec89f78SBastian Köcher 16958c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 16968c18b41bSKonrad Dybcio .halt_reg = 0x0280, 16978c18b41bSKonrad Dybcio .clkr = { 16988c18b41bSKonrad Dybcio .enable_reg = 0x0280, 16998c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17018c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 17028c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17038c18b41bSKonrad Dybcio }, 17048c18b41bSKonrad Dybcio }, 17058c18b41bSKonrad Dybcio }; 17068c18b41bSKonrad Dybcio 17078c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 17088c18b41bSKonrad Dybcio .halt_reg = 0x0284, 17098c18b41bSKonrad Dybcio .clkr = { 17108c18b41bSKonrad Dybcio .enable_reg = 0x0284, 17118c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17120519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17138c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 17148c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17158c18b41bSKonrad Dybcio }, 17168c18b41bSKonrad Dybcio }, 17178c18b41bSKonrad Dybcio }; 17188c18b41bSKonrad Dybcio 1719aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1720aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1721aec89f78SBastian Köcher .clkr = { 1722aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1723aec89f78SBastian Köcher .enable_mask = BIT(0), 17240519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1725aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 17260519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1727aec89f78SBastian Köcher .num_parents = 1, 1728aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1729aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1730aec89f78SBastian Köcher }, 1731aec89f78SBastian Köcher }, 1732aec89f78SBastian Köcher }; 1733aec89f78SBastian Köcher 17348c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 17358c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 17368c18b41bSKonrad Dybcio .clkr = { 17378c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 17388c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17390519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17408c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 17418c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17428c18b41bSKonrad Dybcio }, 17438c18b41bSKonrad Dybcio }, 17448c18b41bSKonrad Dybcio }; 17458c18b41bSKonrad Dybcio 17468c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 17478c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 17488c18b41bSKonrad Dybcio .clkr = { 17498c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 17508c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17510519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17528c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 17538c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17548c18b41bSKonrad Dybcio }, 17558c18b41bSKonrad Dybcio }, 17568c18b41bSKonrad Dybcio }; 17578c18b41bSKonrad Dybcio 1758aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1759aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1760aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1761aec89f78SBastian Köcher .clkr = { 1762aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1763aec89f78SBastian Köcher .enable_mask = BIT(0), 17640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1765aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 17660519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1767aec89f78SBastian Köcher .num_parents = 1, 1768aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1769aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1770aec89f78SBastian Köcher }, 1771aec89f78SBastian Köcher }, 1772aec89f78SBastian Köcher }; 1773aec89f78SBastian Köcher 17748c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 17758c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 17768c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 17778c18b41bSKonrad Dybcio .clkr = { 17788c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 17798c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17818c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 17828c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17838c18b41bSKonrad Dybcio }, 17848c18b41bSKonrad Dybcio }, 17858c18b41bSKonrad Dybcio }; 17868c18b41bSKonrad Dybcio 1787aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1788aec89f78SBastian Köcher .halt_reg = 0x1b54, 1789aec89f78SBastian Köcher .clkr = { 1790aec89f78SBastian Köcher .enable_reg = 0x1b54, 1791aec89f78SBastian Köcher .enable_mask = BIT(0), 17920519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1793aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 17940519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1795aec89f78SBastian Köcher .num_parents = 1, 1796aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1797aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1798aec89f78SBastian Köcher }, 1799aec89f78SBastian Köcher }, 1800aec89f78SBastian Köcher }; 1801aec89f78SBastian Köcher 18028c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 18038c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 18048c18b41bSKonrad Dybcio .clkr = { 18058c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 18068c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18070519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18088c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 18098c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18108c18b41bSKonrad Dybcio }, 18118c18b41bSKonrad Dybcio }, 18128c18b41bSKonrad Dybcio }; 18138c18b41bSKonrad Dybcio 18148c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 18158c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 18168c18b41bSKonrad Dybcio .clkr = { 18178c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 18188c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18208c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 18218c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18228c18b41bSKonrad Dybcio }, 18238c18b41bSKonrad Dybcio }, 18248c18b41bSKonrad Dybcio }; 18258c18b41bSKonrad Dybcio 1826aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1827aec89f78SBastian Köcher .halt_reg = 0x1b58, 1828aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1829aec89f78SBastian Köcher .clkr = { 1830aec89f78SBastian Köcher .enable_reg = 0x1b58, 1831aec89f78SBastian Köcher .enable_mask = BIT(0), 18320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1833aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 18340519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1835aec89f78SBastian Köcher .num_parents = 1, 1836aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1837aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1838aec89f78SBastian Köcher }, 1839aec89f78SBastian Köcher }, 1840aec89f78SBastian Köcher }; 1841aec89f78SBastian Köcher 18428c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 18438c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 18448c18b41bSKonrad Dybcio .clkr = { 18458c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 18468c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18470519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18488c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 18498c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18508c18b41bSKonrad Dybcio }, 18518c18b41bSKonrad Dybcio }, 18528c18b41bSKonrad Dybcio }; 18538c18b41bSKonrad Dybcio 1854aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1855aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1856aec89f78SBastian Köcher .clkr = { 1857aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1858aec89f78SBastian Köcher .enable_mask = BIT(0), 18590519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1860aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 18610519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1862aec89f78SBastian Köcher .num_parents = 1, 1863aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1864aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1865aec89f78SBastian Köcher }, 1866aec89f78SBastian Köcher }, 1867aec89f78SBastian Köcher }; 1868aec89f78SBastian Köcher 18698c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 18708c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 18718c18b41bSKonrad Dybcio .clkr = { 18728c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 18738c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18758c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 18768c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18778c18b41bSKonrad Dybcio }, 18788c18b41bSKonrad Dybcio }, 18798c18b41bSKonrad Dybcio }; 18808c18b41bSKonrad Dybcio 1881aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1882aec89f78SBastian Köcher .halt_reg = 0x04c4, 1883aec89f78SBastian Köcher .clkr = { 1884aec89f78SBastian Köcher .enable_reg = 0x04c4, 1885aec89f78SBastian Köcher .enable_mask = BIT(0), 18860519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1887aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 18880519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1889aec89f78SBastian Köcher .num_parents = 1, 1890aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1891aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1892aec89f78SBastian Köcher }, 1893aec89f78SBastian Köcher }, 1894aec89f78SBastian Köcher }; 1895aec89f78SBastian Köcher 1896eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1897eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1898eaff16bcSJeremy McNicoll .clkr = { 1899eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1900eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 19010519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1902eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 1903eaff16bcSJeremy McNicoll .parent_names = (const char *[]){ 1904eaff16bcSJeremy McNicoll "periph_noc_clk_src", 1905eaff16bcSJeremy McNicoll }, 1906eaff16bcSJeremy McNicoll .num_parents = 1, 1907eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1908eaff16bcSJeremy McNicoll }, 1909eaff16bcSJeremy McNicoll }, 1910eaff16bcSJeremy McNicoll }; 1911eaff16bcSJeremy McNicoll 19128c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 19138c18b41bSKonrad Dybcio .halt_reg = 0x0508, 19148c18b41bSKonrad Dybcio .clkr = { 19158c18b41bSKonrad Dybcio .enable_reg = 0x0508, 19168c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19188c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 19198c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 19208c18b41bSKonrad Dybcio "periph_noc_clk_src", 19218c18b41bSKonrad Dybcio }, 19228c18b41bSKonrad Dybcio .num_parents = 1, 19238c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19248c18b41bSKonrad Dybcio }, 19258c18b41bSKonrad Dybcio }, 19268c18b41bSKonrad Dybcio }; 19278c18b41bSKonrad Dybcio 1928aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 1929aec89f78SBastian Köcher .halt_reg = 0x0504, 1930aec89f78SBastian Köcher .clkr = { 1931aec89f78SBastian Köcher .enable_reg = 0x0504, 1932aec89f78SBastian Köcher .enable_mask = BIT(0), 19330519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1934aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 19350519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_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_sdcc3_ahb_clk = { 19448c18b41bSKonrad Dybcio .halt_reg = 0x0548, 19458c18b41bSKonrad Dybcio .clkr = { 19468c18b41bSKonrad Dybcio .enable_reg = 0x0548, 19478c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19480519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19498c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 19508c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 19518c18b41bSKonrad Dybcio "periph_noc_clk_src", 19528c18b41bSKonrad Dybcio }, 19538c18b41bSKonrad Dybcio .num_parents = 1, 19548c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19558c18b41bSKonrad Dybcio }, 19568c18b41bSKonrad Dybcio }, 19578c18b41bSKonrad Dybcio }; 19588c18b41bSKonrad Dybcio 1959aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 1960aec89f78SBastian Köcher .halt_reg = 0x0544, 1961aec89f78SBastian Köcher .clkr = { 1962aec89f78SBastian Köcher .enable_reg = 0x0544, 1963aec89f78SBastian Köcher .enable_mask = BIT(0), 19640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1965aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 19660519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 1967aec89f78SBastian Köcher .num_parents = 1, 1968aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1969aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1970aec89f78SBastian Köcher }, 1971aec89f78SBastian Köcher }, 1972aec89f78SBastian Köcher }; 1973aec89f78SBastian Köcher 19748c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = { 19758c18b41bSKonrad Dybcio .halt_reg = 0x0588, 19768c18b41bSKonrad Dybcio .clkr = { 19778c18b41bSKonrad Dybcio .enable_reg = 0x0588, 19788c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19790519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19808c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 19818c18b41bSKonrad Dybcio .parent_names = (const char *[]){ 19828c18b41bSKonrad Dybcio "periph_noc_clk_src", 19838c18b41bSKonrad Dybcio }, 19848c18b41bSKonrad Dybcio .num_parents = 1, 19858c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19868c18b41bSKonrad Dybcio }, 19878c18b41bSKonrad Dybcio }, 19888c18b41bSKonrad Dybcio }; 19898c18b41bSKonrad Dybcio 1990aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 1991aec89f78SBastian Köcher .halt_reg = 0x0584, 1992aec89f78SBastian Köcher .clkr = { 1993aec89f78SBastian Köcher .enable_reg = 0x0584, 1994aec89f78SBastian Köcher .enable_mask = BIT(0), 19950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1996aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 19970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 1998aec89f78SBastian Köcher .num_parents = 1, 1999aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2000aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2001aec89f78SBastian Köcher }, 2002aec89f78SBastian Köcher }, 2003aec89f78SBastian Köcher }; 2004aec89f78SBastian Köcher 2005aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2006aec89f78SBastian Köcher .halt_reg = 0x1d7c, 2007aec89f78SBastian Köcher .clkr = { 2008aec89f78SBastian Köcher .enable_reg = 0x1d7c, 2009aec89f78SBastian Köcher .enable_mask = BIT(0), 20100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2011aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 20120519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2013aec89f78SBastian Köcher .num_parents = 1, 2014aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2015aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2016aec89f78SBastian Köcher }, 2017aec89f78SBastian Köcher }, 2018aec89f78SBastian Köcher }; 2019aec89f78SBastian Köcher 2020aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2021aec89f78SBastian Köcher .halt_reg = 0x03fc, 2022aec89f78SBastian Köcher .clkr = { 2023aec89f78SBastian Köcher .enable_reg = 0x03fc, 2024aec89f78SBastian Köcher .enable_mask = BIT(0), 20250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2026aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 20270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2028aec89f78SBastian Köcher .num_parents = 1, 2029aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2030aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2031aec89f78SBastian Köcher }, 2032aec89f78SBastian Köcher }, 2033aec89f78SBastian Köcher }; 2034aec89f78SBastian Köcher 20358c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 20368c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 20378c18b41bSKonrad Dybcio .clkr = { 20388c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 20398c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20418c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 20428c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20438c18b41bSKonrad Dybcio }, 20448c18b41bSKonrad Dybcio }, 20458c18b41bSKonrad Dybcio }; 20468c18b41bSKonrad Dybcio 2047aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 2048aec89f78SBastian Köcher .halt_reg = 0x0d88, 2049aec89f78SBastian Köcher .clkr = { 2050aec89f78SBastian Köcher .enable_reg = 0x0d88, 2051aec89f78SBastian Köcher .enable_mask = BIT(0), 20520519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2053aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 20540519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2055aec89f78SBastian Köcher .num_parents = 1, 2056aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2057aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2058aec89f78SBastian Köcher }, 2059aec89f78SBastian Köcher }, 2060aec89f78SBastian Köcher }; 2061aec89f78SBastian Köcher 20628c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 20638c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 20648c18b41bSKonrad Dybcio .clkr = { 20658c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 20668c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20688c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 20698c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20708c18b41bSKonrad Dybcio }, 20718c18b41bSKonrad Dybcio }, 20728c18b41bSKonrad Dybcio }; 20738c18b41bSKonrad Dybcio 2074aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2075aec89f78SBastian Köcher .halt_reg = 0x1d48, 2076aec89f78SBastian Köcher .clkr = { 2077aec89f78SBastian Köcher .enable_reg = 0x1d48, 2078aec89f78SBastian Köcher .enable_mask = BIT(0), 20790519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2080aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 20810519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2082aec89f78SBastian Köcher .num_parents = 1, 2083aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2084aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2085aec89f78SBastian Köcher }, 2086aec89f78SBastian Köcher }, 2087aec89f78SBastian Köcher }; 2088aec89f78SBastian Köcher 2089aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2090aec89f78SBastian Köcher .halt_reg = 0x1d54, 2091aec89f78SBastian Köcher .clkr = { 2092aec89f78SBastian Köcher .enable_reg = 0x1d54, 2093aec89f78SBastian Köcher .enable_mask = BIT(0), 20940519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2095aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 20960519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2097aec89f78SBastian Köcher .num_parents = 1, 2098aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2099aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2100aec89f78SBastian Köcher }, 2101aec89f78SBastian Köcher }, 2102aec89f78SBastian Köcher }; 2103aec89f78SBastian Köcher 21048c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 21058c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 21068c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21078c18b41bSKonrad Dybcio .clkr = { 21088c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 21098c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21118c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 21128c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21138c18b41bSKonrad Dybcio }, 21148c18b41bSKonrad Dybcio }, 21158c18b41bSKonrad Dybcio }; 21168c18b41bSKonrad Dybcio 21178c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 21188c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 21198c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21208c18b41bSKonrad Dybcio .clkr = { 21218c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 21228c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21230519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21248c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 21258c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21268c18b41bSKonrad Dybcio }, 21278c18b41bSKonrad Dybcio }, 21288c18b41bSKonrad Dybcio }; 21298c18b41bSKonrad Dybcio 2130aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2131aec89f78SBastian Köcher .halt_reg = 0x1d50, 2132aec89f78SBastian Köcher .clkr = { 2133aec89f78SBastian Köcher .enable_reg = 0x1d50, 2134aec89f78SBastian Köcher .enable_mask = BIT(0), 21350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2136aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 21370519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2138aec89f78SBastian Köcher .num_parents = 1, 2139aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2140aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2141aec89f78SBastian Köcher }, 2142aec89f78SBastian Köcher }, 2143aec89f78SBastian Köcher }; 2144aec89f78SBastian Köcher 21458c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 21468c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 21478c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21488c18b41bSKonrad Dybcio .clkr = { 21498c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 21508c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21510519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21528c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 21538c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21548c18b41bSKonrad Dybcio }, 21558c18b41bSKonrad Dybcio }, 21568c18b41bSKonrad Dybcio }; 21578c18b41bSKonrad Dybcio 21588c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 21598c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 21608c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21618c18b41bSKonrad Dybcio .clkr = { 21628c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 21638c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21658c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 21668c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21678c18b41bSKonrad Dybcio }, 21688c18b41bSKonrad Dybcio }, 21698c18b41bSKonrad Dybcio }; 21708c18b41bSKonrad Dybcio 21718c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 21728c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 21738c18b41bSKonrad Dybcio .clkr = { 21748c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 21758c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21778c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 21780519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 21790519d1d0SKonrad Dybcio .fw_name = "sleep", 21800519d1d0SKonrad Dybcio .name = "sleep" 21810519d1d0SKonrad Dybcio }, 21820519d1d0SKonrad Dybcio .num_parents = 1, 21838c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21848c18b41bSKonrad Dybcio }, 21858c18b41bSKonrad Dybcio }, 21868c18b41bSKonrad Dybcio }; 21878c18b41bSKonrad Dybcio 2188aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2189aec89f78SBastian Köcher .halt_reg = 0x03c8, 2190aec89f78SBastian Köcher .clkr = { 2191aec89f78SBastian Köcher .enable_reg = 0x03c8, 2192aec89f78SBastian Köcher .enable_mask = BIT(0), 21930519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2194aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 21950519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2196aec89f78SBastian Köcher .num_parents = 1, 2197aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2198aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2199aec89f78SBastian Köcher }, 2200aec89f78SBastian Köcher }, 2201aec89f78SBastian Köcher }; 2202aec89f78SBastian Köcher 2203aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2204aec89f78SBastian Köcher .halt_reg = 0x03d0, 2205aec89f78SBastian Köcher .clkr = { 2206aec89f78SBastian Köcher .enable_reg = 0x03d0, 2207aec89f78SBastian Köcher .enable_mask = BIT(0), 22080519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2209aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 22100519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2211aec89f78SBastian Köcher .num_parents = 1, 2212aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2213aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2214aec89f78SBastian Köcher }, 2215aec89f78SBastian Köcher }, 2216aec89f78SBastian Köcher }; 2217aec89f78SBastian Köcher 22188c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 22198c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 22208c18b41bSKonrad Dybcio .clkr = { 22218c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 22228c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22230519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22248c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 22250519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22260519d1d0SKonrad Dybcio .fw_name = "sleep", 22270519d1d0SKonrad Dybcio .name = "sleep" 22280519d1d0SKonrad Dybcio }, 22290519d1d0SKonrad Dybcio .num_parents = 1, 22308c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22318c18b41bSKonrad Dybcio }, 22328c18b41bSKonrad Dybcio }, 22338c18b41bSKonrad Dybcio }; 22348c18b41bSKonrad Dybcio 2235aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2236aec89f78SBastian Köcher .halt_reg = 0x1408, 2237aec89f78SBastian Köcher .clkr = { 2238aec89f78SBastian Köcher .enable_reg = 0x1408, 2239aec89f78SBastian Köcher .enable_mask = BIT(0), 22400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2241aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 22420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2243aec89f78SBastian Köcher .num_parents = 1, 2244aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2245aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2246aec89f78SBastian Köcher }, 2247aec89f78SBastian Köcher }, 2248aec89f78SBastian Köcher }; 2249aec89f78SBastian Köcher 22508c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 22518c18b41bSKonrad Dybcio .halt_reg = 0x0488, 22528c18b41bSKonrad Dybcio .clkr = { 22538c18b41bSKonrad Dybcio .enable_reg = 0x0488, 22548c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22568c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 22578c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22588c18b41bSKonrad Dybcio }, 22598c18b41bSKonrad Dybcio }, 22608c18b41bSKonrad Dybcio }; 22618c18b41bSKonrad Dybcio 2262aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2263aec89f78SBastian Köcher .halt_reg = 0x0484, 2264aec89f78SBastian Köcher .clkr = { 2265aec89f78SBastian Köcher .enable_reg = 0x0484, 2266aec89f78SBastian Köcher .enable_mask = BIT(0), 22670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2268aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 22690519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2270aec89f78SBastian Köcher .num_parents = 1, 2271aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2272aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2273aec89f78SBastian Köcher }, 2274aec89f78SBastian Köcher }, 2275aec89f78SBastian Köcher }; 2276aec89f78SBastian Köcher 22778c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 22788c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 22798c18b41bSKonrad Dybcio .clkr = { 22808c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 22818c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22820519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22838c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 22848c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22858c18b41bSKonrad Dybcio }, 22868c18b41bSKonrad Dybcio }, 22878c18b41bSKonrad Dybcio }; 22888c18b41bSKonrad Dybcio 22898c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = { 22908c18b41bSKonrad Dybcio .gdscr = 0x1e18, 22918c18b41bSKonrad Dybcio .pd = { 22928c18b41bSKonrad Dybcio .name = "pcie", 22938c18b41bSKonrad Dybcio }, 22948c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 22958c18b41bSKonrad Dybcio }; 22968c18b41bSKonrad Dybcio 22978c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 22988c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 22998c18b41bSKonrad Dybcio .pd = { 23008c18b41bSKonrad Dybcio .name = "pcie_0", 23018c18b41bSKonrad Dybcio }, 23028c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 23038c18b41bSKonrad Dybcio }; 23048c18b41bSKonrad Dybcio 23058c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 23068c18b41bSKonrad Dybcio .gdscr = 0x1b44, 23078c18b41bSKonrad Dybcio .pd = { 23088c18b41bSKonrad Dybcio .name = "pcie_1", 23098c18b41bSKonrad Dybcio }, 23108c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 23118c18b41bSKonrad Dybcio }; 23128c18b41bSKonrad Dybcio 23138c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 23148c18b41bSKonrad Dybcio .gdscr = 0x3c4, 23158c18b41bSKonrad Dybcio .pd = { 23168c18b41bSKonrad Dybcio .name = "usb30", 23178c18b41bSKonrad Dybcio }, 23188c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 23198c18b41bSKonrad Dybcio }; 23208c18b41bSKonrad Dybcio 23218c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 23228c18b41bSKonrad Dybcio .gdscr = 0x1d44, 23238c18b41bSKonrad Dybcio .pd = { 23248c18b41bSKonrad Dybcio .name = "ufs", 23258c18b41bSKonrad Dybcio }, 23268c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 23278c18b41bSKonrad Dybcio }; 23288c18b41bSKonrad Dybcio 2329aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2330aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2331aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2332aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2333aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 2334aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2335aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2336aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2337aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2338aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2339aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2340aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2341aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2342aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2343aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2344aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2345aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2346aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2347aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2348aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2349aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2350aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2351aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2352aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2353aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2354aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2355aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2356aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2357aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2358aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2359aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2360aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2361aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2362aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2363aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2364aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2365aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2366aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2367aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2368aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2369aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2370aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2371aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2372aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2373aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2374aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2375aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2376aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2377aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2378aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2379aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2380aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2381aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2382aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2383aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2384aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2385aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2386aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2387aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2388aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2389aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2390aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2391aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2392aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2393aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2394aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2395aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2396aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2397aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2398aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2399aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2400aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2401aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2402aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2403aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2404aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2405aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2406aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2407aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2408aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2409aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2410aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2411aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2412aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2413aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2414aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2415aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2416aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2417aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2418aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2419aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2420aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2421aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2422aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2423aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2424aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2425aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2426aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2427aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2428aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 24298c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 24308c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2431aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 24328c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 24338c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2434aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 24358c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2436aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 24378c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 24388c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2439aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 24408c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2441aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 24428c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2443eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 24448c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 24458c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 24468c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 24478c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 24488c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 24498c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 24508c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2451aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2452aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 24538c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2454aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 24558c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2456aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2457aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 24588c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 24598c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2460aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 24618c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 24628c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 24638c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2464aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2465aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 24668c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2467aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 24688c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2469aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 24708c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 24718c18b41bSKonrad Dybcio }; 24728c18b41bSKonrad Dybcio 24738c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 24748c18b41bSKonrad Dybcio [PCIE_GDSC] = &pcie_gdsc, 24758c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 24768c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 24778c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 24788c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 24798c18b41bSKonrad Dybcio }; 24808c18b41bSKonrad Dybcio 24818c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 24828c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 24838c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 24848c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 24858c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 24868c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2487aec89f78SBastian Köcher }; 2488aec89f78SBastian Köcher 2489aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2490aec89f78SBastian Köcher .reg_bits = 32, 2491aec89f78SBastian Köcher .reg_stride = 4, 2492aec89f78SBastian Köcher .val_bits = 32, 2493aec89f78SBastian Köcher .max_register = 0x2000, 2494aec89f78SBastian Köcher .fast_io = true, 2495aec89f78SBastian Köcher }; 2496aec89f78SBastian Köcher 2497aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2498aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2499aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2500aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 25018c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 25028c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 25038c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 25048c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2505aec89f78SBastian Köcher }; 2506aec89f78SBastian Köcher 2507aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2508aec89f78SBastian Köcher { .compatible = "qcom,gcc-msm8994" }, 2509aec89f78SBastian Köcher {} 2510aec89f78SBastian Köcher }; 2511aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2512aec89f78SBastian Köcher 2513aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2514aec89f78SBastian Köcher { 2515aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2516aec89f78SBastian Köcher } 2517aec89f78SBastian Köcher 2518aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2519aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2520aec89f78SBastian Köcher .driver = { 2521aec89f78SBastian Köcher .name = "gcc-msm8994", 2522aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2523aec89f78SBastian Köcher }, 2524aec89f78SBastian Köcher }; 2525aec89f78SBastian Köcher 2526aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2527aec89f78SBastian Köcher { 2528aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2529aec89f78SBastian Köcher } 2530aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2531aec89f78SBastian Köcher 2532aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2533aec89f78SBastian Köcher { 2534aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2535aec89f78SBastian Köcher } 2536aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2537aec89f78SBastian Köcher 2538aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2539aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2540aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2541