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 10974a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = { 11074a33facSKonrad Dybcio .cmd_rcgr = 0x0120, 11174a33facSKonrad Dybcio .hid_width = 5, 11274a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 11374a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 11474a33facSKonrad Dybcio .name = "system_noc_clk_src", 11574a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 11674a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 11774a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 11874a33facSKonrad Dybcio }, 11974a33facSKonrad Dybcio }; 12074a33facSKonrad Dybcio 12174a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = { 12274a33facSKonrad Dybcio .cmd_rcgr = 0x0150, 12374a33facSKonrad Dybcio .hid_width = 5, 12474a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 12574a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 12674a33facSKonrad Dybcio .name = "config_noc_clk_src", 12774a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 12874a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 12974a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 13074a33facSKonrad Dybcio }, 13174a33facSKonrad Dybcio }; 13274a33facSKonrad Dybcio 13374a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = { 13474a33facSKonrad Dybcio .cmd_rcgr = 0x0190, 13574a33facSKonrad Dybcio .hid_width = 5, 13674a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 13774a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 13874a33facSKonrad Dybcio .name = "periph_noc_clk_src", 13974a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 14074a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 14174a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 14274a33facSKonrad Dybcio }, 14374a33facSKonrad Dybcio }; 14474a33facSKonrad Dybcio 145aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 146aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 147aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 148aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 149aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 150aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 151aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 152aec89f78SBastian Köcher { } 153aec89f78SBastian Köcher }; 154aec89f78SBastian Köcher 155aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 156aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 157aec89f78SBastian Köcher .mnd_width = 8, 158aec89f78SBastian Köcher .hid_width = 5, 159aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 160aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 1610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 162aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 1630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 164aec89f78SBastian Köcher .num_parents = 2, 165aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 166aec89f78SBastian Köcher }, 167aec89f78SBastian Köcher }; 168aec89f78SBastian Köcher 169aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 170aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 171aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 172aec89f78SBastian Köcher { } 173aec89f78SBastian Köcher }; 174aec89f78SBastian Köcher 175aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 176aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 177aec89f78SBastian Köcher .mnd_width = 8, 178aec89f78SBastian Köcher .hid_width = 5, 179aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 180aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 1810519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 182aec89f78SBastian Köcher .name = "usb30_master_clk_src", 1830519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 184aec89f78SBastian Köcher .num_parents = 2, 185aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 186aec89f78SBastian Köcher }, 187aec89f78SBastian Köcher }; 188aec89f78SBastian Köcher 189aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 190aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 191aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 192aec89f78SBastian Köcher { } 193aec89f78SBastian Köcher }; 194aec89f78SBastian Köcher 195aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 196aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 197aec89f78SBastian Köcher .hid_width = 5, 198aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 199aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2000519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 201aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 2020519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 203aec89f78SBastian Köcher .num_parents = 2, 204aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 205aec89f78SBastian Köcher }, 206aec89f78SBastian Köcher }; 207aec89f78SBastian Köcher 20880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = { 209aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 210aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 211aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 212aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 213aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 214aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 215aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 216aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 217aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 218aec89f78SBastian Köcher { } 219aec89f78SBastian Köcher }; 220aec89f78SBastian Köcher 221aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 222aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 223aec89f78SBastian Köcher .mnd_width = 8, 224aec89f78SBastian Köcher .hid_width = 5, 225aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 22680863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 2270519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 228aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 2290519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 230aec89f78SBastian Köcher .num_parents = 2, 231aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 232aec89f78SBastian Köcher }, 233aec89f78SBastian Köcher }; 234aec89f78SBastian Köcher 235aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 236aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 237aec89f78SBastian Köcher .hid_width = 5, 238aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 239aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2400519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 241aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 2420519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 243aec89f78SBastian Köcher .num_parents = 2, 244aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 245aec89f78SBastian Köcher }, 246aec89f78SBastian Köcher }; 247aec89f78SBastian Köcher 24880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 24980863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 25080863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 25180863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 25280863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 25380863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 25480863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 25580863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 25680863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 25780863521SKonrad Dybcio F(46150000, P_GPLL0, 13, 0, 0), 25880863521SKonrad Dybcio { } 25980863521SKonrad Dybcio }; 26080863521SKonrad Dybcio 261aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 262aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 263aec89f78SBastian Köcher .mnd_width = 8, 264aec89f78SBastian Köcher .hid_width = 5, 265aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 26680863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 2670519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 268aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 2690519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 270aec89f78SBastian Köcher .num_parents = 2, 271aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 272aec89f78SBastian Köcher }, 273aec89f78SBastian Köcher }; 274aec89f78SBastian Köcher 275aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 276aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 277aec89f78SBastian Köcher .hid_width = 5, 278aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 279aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 281aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 2820519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 283aec89f78SBastian Köcher .num_parents = 2, 284aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 285aec89f78SBastian Köcher }, 286aec89f78SBastian Köcher }; 287aec89f78SBastian Köcher 28880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 28980863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 29080863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 29180863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 29280863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 29380863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 29480863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 29580863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 29680863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 29780863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 29880863521SKonrad Dybcio { } 29980863521SKonrad Dybcio }; 30080863521SKonrad Dybcio 301aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 302aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 303aec89f78SBastian Köcher .mnd_width = 8, 304aec89f78SBastian Köcher .hid_width = 5, 305aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 30680863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3070519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 308aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 3090519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 310aec89f78SBastian Köcher .num_parents = 2, 311aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 312aec89f78SBastian Köcher }, 313aec89f78SBastian Köcher }; 314aec89f78SBastian Köcher 315aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 316aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 317aec89f78SBastian Köcher .hid_width = 5, 318aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 319aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3200519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 321aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 3220519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 323aec89f78SBastian Köcher .num_parents = 2, 324aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 325aec89f78SBastian Köcher }, 326aec89f78SBastian Köcher }; 327aec89f78SBastian Köcher 328aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 329aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 330aec89f78SBastian Köcher .mnd_width = 8, 331aec89f78SBastian Köcher .hid_width = 5, 332aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 33380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 335aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 3360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 337aec89f78SBastian Köcher .num_parents = 2, 338aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 339aec89f78SBastian Köcher }, 340aec89f78SBastian Köcher }; 341aec89f78SBastian Köcher 342aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 343aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 344aec89f78SBastian Köcher .hid_width = 5, 345aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 346aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 348aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 3490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 350aec89f78SBastian Köcher .num_parents = 2, 351aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 352aec89f78SBastian Köcher }, 353aec89f78SBastian Köcher }; 354aec89f78SBastian Köcher 35580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 35680863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 35780863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 35880863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 35980863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 36080863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 36180863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 36280863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 36380863521SKonrad Dybcio F(40000000, P_GPLL0, 15, 0, 0), 36480863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 36580863521SKonrad Dybcio { } 36680863521SKonrad Dybcio }; 36780863521SKonrad Dybcio 368aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 369aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 370aec89f78SBastian Köcher .mnd_width = 8, 371aec89f78SBastian Köcher .hid_width = 5, 372aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 37380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 3740519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 375aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 3760519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 377aec89f78SBastian Köcher .num_parents = 2, 378aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 379aec89f78SBastian Köcher }, 380aec89f78SBastian Köcher }; 381aec89f78SBastian Köcher 382aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 383aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 384aec89f78SBastian Köcher .hid_width = 5, 385aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 386aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3870519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 388aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 3890519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 390aec89f78SBastian Köcher .num_parents = 2, 391aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 392aec89f78SBastian Köcher }, 393aec89f78SBastian Köcher }; 394aec89f78SBastian Köcher 39580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 39680863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 39780863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 39880863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 39980863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 40080863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 40180863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 40280863521SKonrad Dybcio F(27906976, P_GPLL0, 1, 2, 43), 40380863521SKonrad Dybcio F(41380000, P_GPLL0, 15, 0, 0), 40480863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 40580863521SKonrad Dybcio { } 40680863521SKonrad Dybcio }; 40780863521SKonrad Dybcio 408aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 409aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 410aec89f78SBastian Köcher .mnd_width = 8, 411aec89f78SBastian Köcher .hid_width = 5, 412aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 41380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 4140519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 415aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 4160519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 417aec89f78SBastian Köcher .num_parents = 2, 418aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 419aec89f78SBastian Köcher }, 420aec89f78SBastian Köcher }; 421aec89f78SBastian Köcher 422aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 423aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 424aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 425aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 426aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 427aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 428aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 429aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 430aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 431aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 432aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 433aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 434aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 435aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 436aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 437aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 438aec89f78SBastian Köcher { } 439aec89f78SBastian Köcher }; 440aec89f78SBastian Köcher 441aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 442aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 443aec89f78SBastian Köcher .mnd_width = 16, 444aec89f78SBastian Köcher .hid_width = 5, 445aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 446aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 448aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 4490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 450aec89f78SBastian Köcher .num_parents = 2, 451aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 452aec89f78SBastian Köcher }, 453aec89f78SBastian Köcher }; 454aec89f78SBastian Köcher 455aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 456aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 457aec89f78SBastian Köcher .mnd_width = 16, 458aec89f78SBastian Köcher .hid_width = 5, 459aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 460aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 462aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 4630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 464aec89f78SBastian Köcher .num_parents = 2, 465aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 466aec89f78SBastian Köcher }, 467aec89f78SBastian Köcher }; 468aec89f78SBastian Köcher 469aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 470aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 471aec89f78SBastian Köcher .mnd_width = 16, 472aec89f78SBastian Köcher .hid_width = 5, 473aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 474aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4750519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 476aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 4770519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 478aec89f78SBastian Köcher .num_parents = 2, 479aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 480aec89f78SBastian Köcher }, 481aec89f78SBastian Köcher }; 482aec89f78SBastian Köcher 483aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 484aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 485aec89f78SBastian Köcher .mnd_width = 16, 486aec89f78SBastian Köcher .hid_width = 5, 487aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 488aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4890519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 490aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 4910519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 492aec89f78SBastian Köcher .num_parents = 2, 493aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 494aec89f78SBastian Köcher }, 495aec89f78SBastian Köcher }; 496aec89f78SBastian Köcher 497aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 498aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 499aec89f78SBastian Köcher .mnd_width = 16, 500aec89f78SBastian Köcher .hid_width = 5, 501aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 502aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 504aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 5050519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 506aec89f78SBastian Köcher .num_parents = 2, 507aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 508aec89f78SBastian Köcher }, 509aec89f78SBastian Köcher }; 510aec89f78SBastian Köcher 511aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 512aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 513aec89f78SBastian Köcher .mnd_width = 16, 514aec89f78SBastian Köcher .hid_width = 5, 515aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 516aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5170519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 518aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 5190519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 520aec89f78SBastian Köcher .num_parents = 2, 521aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 522aec89f78SBastian Köcher }, 523aec89f78SBastian Köcher }; 524aec89f78SBastian Köcher 525aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 526aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 527aec89f78SBastian Köcher .hid_width = 5, 528aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 529aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5300519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 531aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 5320519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 533aec89f78SBastian Köcher .num_parents = 2, 534aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 535aec89f78SBastian Köcher }, 536aec89f78SBastian Köcher }; 537aec89f78SBastian Köcher 53880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 53980863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 54080863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 54180863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 54280863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 54380863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 54480863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 54580863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 54680863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 54780863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 54880863521SKonrad Dybcio { } 54980863521SKonrad Dybcio }; 55080863521SKonrad Dybcio 551aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 552aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 553aec89f78SBastian Köcher .mnd_width = 8, 554aec89f78SBastian Köcher .hid_width = 5, 555aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 55680863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5570519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 558aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 5590519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 560aec89f78SBastian Köcher .num_parents = 2, 561aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 562aec89f78SBastian Köcher }, 563aec89f78SBastian Köcher }; 564aec89f78SBastian Köcher 565aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 566aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 567aec89f78SBastian Köcher .hid_width = 5, 568aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 569aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5700519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 571aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 5720519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 573aec89f78SBastian Köcher .num_parents = 2, 574aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 575aec89f78SBastian Köcher }, 576aec89f78SBastian Köcher }; 577aec89f78SBastian Köcher 578aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 579aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 580aec89f78SBastian Köcher .mnd_width = 8, 581aec89f78SBastian Köcher .hid_width = 5, 582aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 58380863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 585aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 5860519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 587aec89f78SBastian Köcher .num_parents = 2, 588aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 589aec89f78SBastian Köcher }, 590aec89f78SBastian Köcher }; 591aec89f78SBastian Köcher 59280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 59380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 59480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 59580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 59680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 59780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 59880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 59980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 60080863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 60180863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 60280863521SKonrad Dybcio { } 60380863521SKonrad Dybcio }; 60480863521SKonrad Dybcio 605aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 606aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 607aec89f78SBastian Köcher .hid_width = 5, 608aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 609aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6100519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 611aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 6120519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 613aec89f78SBastian Köcher .num_parents = 2, 614aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 615aec89f78SBastian Köcher }, 616aec89f78SBastian Köcher }; 617aec89f78SBastian Köcher 618aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 619aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 620aec89f78SBastian Köcher .mnd_width = 8, 621aec89f78SBastian Köcher .hid_width = 5, 622aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 62380863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 625aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 6260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 627aec89f78SBastian Köcher .num_parents = 2, 628aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 629aec89f78SBastian Köcher }, 630aec89f78SBastian Köcher }; 631aec89f78SBastian Köcher 632aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 633aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 634aec89f78SBastian Köcher .hid_width = 5, 635aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 636aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6370519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 638aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 6390519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 640aec89f78SBastian Köcher .num_parents = 2, 641aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 642aec89f78SBastian Köcher }, 643aec89f78SBastian Köcher }; 644aec89f78SBastian Köcher 645aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 646aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 647aec89f78SBastian Köcher .mnd_width = 8, 648aec89f78SBastian Köcher .hid_width = 5, 649aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 65080863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6510519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 652aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 6530519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 654aec89f78SBastian Köcher .num_parents = 2, 655aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 656aec89f78SBastian Köcher }, 657aec89f78SBastian Köcher }; 658aec89f78SBastian Köcher 659aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 660aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 661aec89f78SBastian Köcher .hid_width = 5, 662aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 663aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6640519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 665aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 6660519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 667aec89f78SBastian Köcher .num_parents = 2, 668aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 669aec89f78SBastian Köcher }, 670aec89f78SBastian Köcher }; 671aec89f78SBastian Köcher 672aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 673aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 674aec89f78SBastian Köcher .mnd_width = 8, 675aec89f78SBastian Köcher .hid_width = 5, 676aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 67780863521SKonrad Dybcio /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 67880863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 6790519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 680aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 6810519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 682aec89f78SBastian Köcher .num_parents = 2, 683aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 684aec89f78SBastian Köcher }, 685aec89f78SBastian Köcher }; 686aec89f78SBastian Köcher 687aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 688aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 689aec89f78SBastian Köcher .hid_width = 5, 690aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 691aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6920519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 693aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 6940519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 695aec89f78SBastian Köcher .num_parents = 2, 696aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 697aec89f78SBastian Köcher }, 698aec89f78SBastian Köcher }; 699aec89f78SBastian Köcher 70080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 70180863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 70280863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 70380863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 70480863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 70580863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 70680863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 70780863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 70880863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 70980863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 71080863521SKonrad Dybcio { } 71180863521SKonrad Dybcio }; 71280863521SKonrad Dybcio 713aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 714aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 715aec89f78SBastian Köcher .mnd_width = 8, 716aec89f78SBastian Köcher .hid_width = 5, 717aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 71880863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 7190519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 720aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 7210519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 722aec89f78SBastian Köcher .num_parents = 2, 723aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 724aec89f78SBastian Köcher }, 725aec89f78SBastian Köcher }; 726aec89f78SBastian Köcher 727aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 728aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 729aec89f78SBastian Köcher .mnd_width = 16, 730aec89f78SBastian Köcher .hid_width = 5, 731aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 732aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7330519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 734aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 7350519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 736aec89f78SBastian Köcher .num_parents = 2, 737aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 738aec89f78SBastian Köcher }, 739aec89f78SBastian Köcher }; 740aec89f78SBastian Köcher 741aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 742aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 743aec89f78SBastian Köcher .mnd_width = 16, 744aec89f78SBastian Köcher .hid_width = 5, 745aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 746aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 748aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 7490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 750aec89f78SBastian Köcher .num_parents = 2, 751aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 752aec89f78SBastian Köcher }, 753aec89f78SBastian Köcher }; 754aec89f78SBastian Köcher 755aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 756aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 757aec89f78SBastian Köcher .mnd_width = 16, 758aec89f78SBastian Köcher .hid_width = 5, 759aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 760aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 762aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 7630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 764aec89f78SBastian Köcher .num_parents = 2, 765aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 766aec89f78SBastian Köcher }, 767aec89f78SBastian Köcher }; 768aec89f78SBastian Köcher 769aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 770aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 771aec89f78SBastian Köcher .mnd_width = 16, 772aec89f78SBastian Köcher .hid_width = 5, 773aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 774aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7750519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 776aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 7770519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 778aec89f78SBastian Köcher .num_parents = 2, 779aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 780aec89f78SBastian Köcher }, 781aec89f78SBastian Köcher }; 782aec89f78SBastian Köcher 783aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 784aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 785aec89f78SBastian Köcher .mnd_width = 16, 786aec89f78SBastian Köcher .hid_width = 5, 787aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 788aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7890519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 790aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 7910519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 792aec89f78SBastian Köcher .num_parents = 2, 793aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 794aec89f78SBastian Köcher }, 795aec89f78SBastian Köcher }; 796aec89f78SBastian Köcher 797aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 798aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 799aec89f78SBastian Köcher .mnd_width = 16, 800aec89f78SBastian Köcher .hid_width = 5, 801aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 802aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 8030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 804aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 8050519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 806aec89f78SBastian Köcher .num_parents = 2, 807aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 808aec89f78SBastian Köcher }, 809aec89f78SBastian Köcher }; 810aec89f78SBastian Köcher 811aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 812aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 813aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 814aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 815aec89f78SBastian Köcher { } 816aec89f78SBastian Köcher }; 817aec89f78SBastian Köcher 818aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 819aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 820aec89f78SBastian Köcher .mnd_width = 8, 821aec89f78SBastian Köcher .hid_width = 5, 822aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 823aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 8240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 825aec89f78SBastian Köcher .name = "gp1_clk_src", 8260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 827aec89f78SBastian Köcher .num_parents = 2, 828aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 829aec89f78SBastian Köcher }, 830aec89f78SBastian Köcher }; 831aec89f78SBastian Köcher 832aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 833aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 834aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 835aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 836aec89f78SBastian Köcher { } 837aec89f78SBastian Köcher }; 838aec89f78SBastian Köcher 839aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 840aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 841aec89f78SBastian Köcher .mnd_width = 8, 842aec89f78SBastian Köcher .hid_width = 5, 843aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 844aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 8450519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 846aec89f78SBastian Köcher .name = "gp2_clk_src", 8470519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 848aec89f78SBastian Köcher .num_parents = 2, 849aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 850aec89f78SBastian Köcher }, 851aec89f78SBastian Köcher }; 852aec89f78SBastian Köcher 853aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 854aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 855aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 856aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 857aec89f78SBastian Köcher { } 858aec89f78SBastian Köcher }; 859aec89f78SBastian Köcher 860aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 861aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 862aec89f78SBastian Köcher .mnd_width = 8, 863aec89f78SBastian Köcher .hid_width = 5, 864aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 865aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 8660519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 867aec89f78SBastian Köcher .name = "gp3_clk_src", 8680519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 869aec89f78SBastian Köcher .num_parents = 2, 870aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 871aec89f78SBastian Köcher }, 872aec89f78SBastian Köcher }; 873aec89f78SBastian Köcher 874aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 875aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 876aec89f78SBastian Köcher { } 877aec89f78SBastian Köcher }; 878aec89f78SBastian Köcher 879aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 880aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 881aec89f78SBastian Köcher .mnd_width = 8, 882aec89f78SBastian Köcher .hid_width = 5, 883aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 8840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 885aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 8860519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8870519d1d0SKonrad Dybcio .fw_name = "xo", 8880519d1d0SKonrad Dybcio }, 889aec89f78SBastian Köcher .num_parents = 1, 890aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 891aec89f78SBastian Köcher }, 892aec89f78SBastian Köcher }; 893aec89f78SBastian Köcher 894aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 895aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 896aec89f78SBastian Köcher { } 897aec89f78SBastian Köcher }; 898aec89f78SBastian Köcher 899aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 900aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 901aec89f78SBastian Köcher .hid_width = 5, 902aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 904aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 9050519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9060519d1d0SKonrad Dybcio .fw_name = "xo", 9070519d1d0SKonrad Dybcio }, 908aec89f78SBastian Köcher .num_parents = 1, 909aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 910aec89f78SBastian Köcher }, 911aec89f78SBastian Köcher }; 912aec89f78SBastian Köcher 913aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 914aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 915aec89f78SBastian Köcher { } 916aec89f78SBastian Köcher }; 917aec89f78SBastian Köcher 918aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 919aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 920aec89f78SBastian Köcher .mnd_width = 8, 921aec89f78SBastian Köcher .hid_width = 5, 922aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 9230519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 924aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 9250519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9260519d1d0SKonrad Dybcio .fw_name = "xo", 9270519d1d0SKonrad Dybcio }, 928aec89f78SBastian Köcher .num_parents = 1, 929aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 930aec89f78SBastian Köcher }, 931aec89f78SBastian Köcher }; 932aec89f78SBastian Köcher 933aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 934aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 935aec89f78SBastian Köcher .hid_width = 5, 936aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9370519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 938aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 9390519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9400519d1d0SKonrad Dybcio .fw_name = "xo", 9410519d1d0SKonrad Dybcio }, 942aec89f78SBastian Köcher .num_parents = 1, 943aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 944aec89f78SBastian Köcher }, 945aec89f78SBastian Köcher }; 946aec89f78SBastian Köcher 947aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 948aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 949aec89f78SBastian Köcher { } 950aec89f78SBastian Köcher }; 951aec89f78SBastian Köcher 952aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 953aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 954aec89f78SBastian Köcher .hid_width = 5, 955aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 956aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 9570519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 958aec89f78SBastian Köcher .name = "pdm2_clk_src", 9590519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 960aec89f78SBastian Köcher .num_parents = 2, 961aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 962aec89f78SBastian Köcher }, 963aec89f78SBastian Köcher }; 964aec89f78SBastian Köcher 965aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 966aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 967aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 968aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 969aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 970aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 971aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 972aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 973aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 974aec89f78SBastian Köcher { } 975aec89f78SBastian Köcher }; 976aec89f78SBastian Köcher 977aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 978aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 979aec89f78SBastian Köcher .mnd_width = 8, 980aec89f78SBastian Köcher .hid_width = 5, 981aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 982aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 9830519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 984aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 9850519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 986aec89f78SBastian Köcher .num_parents = 3, 9875f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 988aec89f78SBastian Köcher }, 989aec89f78SBastian Köcher }; 990aec89f78SBastian Köcher 991aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 992aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 993aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 994aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 995aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 996aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 997aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 998aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 999aec89f78SBastian Köcher { } 1000aec89f78SBastian Köcher }; 1001aec89f78SBastian Köcher 1002aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 1003aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 1004aec89f78SBastian Köcher .mnd_width = 8, 1005aec89f78SBastian Köcher .hid_width = 5, 1006aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1007aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10080519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1009aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 10100519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1011aec89f78SBastian Köcher .num_parents = 2, 10125f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1013aec89f78SBastian Köcher }, 1014aec89f78SBastian Köcher }; 1015aec89f78SBastian Köcher 1016aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 1017aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 1018aec89f78SBastian Köcher .mnd_width = 8, 1019aec89f78SBastian Köcher .hid_width = 5, 1020aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1021aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10220519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1023aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 10240519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1025aec89f78SBastian Köcher .num_parents = 2, 10265f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1027aec89f78SBastian Köcher }, 1028aec89f78SBastian Köcher }; 1029aec89f78SBastian Köcher 1030aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 1031aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 1032aec89f78SBastian Köcher .mnd_width = 8, 1033aec89f78SBastian Köcher .hid_width = 5, 1034aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1035aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10360519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1037aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 10380519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1039aec89f78SBastian Köcher .num_parents = 2, 10405f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1041aec89f78SBastian Köcher }, 1042aec89f78SBastian Köcher }; 1043aec89f78SBastian Köcher 1044aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1045aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 1046aec89f78SBastian Köcher { } 1047aec89f78SBastian Köcher }; 1048aec89f78SBastian Köcher 1049aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 1050aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 1051aec89f78SBastian Köcher .mnd_width = 8, 1052aec89f78SBastian Köcher .hid_width = 5, 1053aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 10540519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1055aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 10560519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10570519d1d0SKonrad Dybcio .fw_name = "xo", 10580519d1d0SKonrad Dybcio }, 1059aec89f78SBastian Köcher .num_parents = 1, 1060aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1061aec89f78SBastian Köcher }, 1062aec89f78SBastian Köcher }; 1063aec89f78SBastian Köcher 1064aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1065aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 1066aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 1067aec89f78SBastian Köcher { } 1068aec89f78SBastian Köcher }; 1069aec89f78SBastian Köcher 1070aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1071aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1072aec89f78SBastian Köcher .hid_width = 5, 1073aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1074aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 10750519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1076aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 10770519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1078aec89f78SBastian Köcher .num_parents = 2, 1079aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1080aec89f78SBastian Köcher }, 1081aec89f78SBastian Köcher }; 1082aec89f78SBastian Köcher 1083aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1084aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1085aec89f78SBastian Köcher { } 1086aec89f78SBastian Köcher }; 1087aec89f78SBastian Köcher 1088aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1089aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1090aec89f78SBastian Köcher .hid_width = 5, 1091aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 10920519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1093aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 10940519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10950519d1d0SKonrad Dybcio .fw_name = "xo", 10960519d1d0SKonrad Dybcio }, 1097aec89f78SBastian Köcher .num_parents = 1, 1098aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1099aec89f78SBastian Köcher }, 1100aec89f78SBastian Köcher }; 1101aec89f78SBastian Köcher 1102aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1103aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1104aec89f78SBastian Köcher { } 1105aec89f78SBastian Köcher }; 1106aec89f78SBastian Köcher 1107aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1108aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1109aec89f78SBastian Köcher .hid_width = 5, 1110aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1111aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 11120519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1113aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 11140519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1115aec89f78SBastian Köcher .num_parents = 2, 1116aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1117aec89f78SBastian Köcher }, 1118aec89f78SBastian Köcher }; 1119aec89f78SBastian Köcher 1120aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 1121aec89f78SBastian Köcher .halt_reg = 0x05c4, 1122aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1123aec89f78SBastian Köcher .clkr = { 1124aec89f78SBastian Köcher .enable_reg = 0x1484, 1125aec89f78SBastian Köcher .enable_mask = BIT(17), 11260519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1127aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 112874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 112974a33facSKonrad Dybcio .num_parents = 1, 1130aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1131aec89f78SBastian Köcher }, 1132aec89f78SBastian Köcher }, 1133aec89f78SBastian Köcher }; 1134aec89f78SBastian Köcher 1135aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1136aec89f78SBastian Köcher .halt_reg = 0x0648, 1137aec89f78SBastian Köcher .clkr = { 1138aec89f78SBastian Köcher .enable_reg = 0x0648, 1139aec89f78SBastian Köcher .enable_mask = BIT(0), 11400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1141aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 11420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1143aec89f78SBastian Köcher .num_parents = 1, 1144aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1145aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1146aec89f78SBastian Köcher }, 1147aec89f78SBastian Köcher }, 1148aec89f78SBastian Köcher }; 1149aec89f78SBastian Köcher 1150aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1151aec89f78SBastian Köcher .halt_reg = 0x0644, 1152aec89f78SBastian Köcher .clkr = { 1153aec89f78SBastian Köcher .enable_reg = 0x0644, 1154aec89f78SBastian Köcher .enable_mask = BIT(0), 11550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1156aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 11570519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1158aec89f78SBastian Köcher .num_parents = 1, 1159aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1160aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1161aec89f78SBastian Köcher }, 1162aec89f78SBastian Köcher }, 1163aec89f78SBastian Köcher }; 1164aec89f78SBastian Köcher 1165aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1166aec89f78SBastian Köcher .halt_reg = 0x06c8, 1167aec89f78SBastian Köcher .clkr = { 1168aec89f78SBastian Köcher .enable_reg = 0x06c8, 1169aec89f78SBastian Köcher .enable_mask = BIT(0), 11700519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1171aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 11720519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1173aec89f78SBastian Köcher .num_parents = 1, 1174aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1175aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1176aec89f78SBastian Köcher }, 1177aec89f78SBastian Köcher }, 1178aec89f78SBastian Köcher }; 1179aec89f78SBastian Köcher 1180aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1181aec89f78SBastian Köcher .halt_reg = 0x06c4, 1182aec89f78SBastian Köcher .clkr = { 1183aec89f78SBastian Köcher .enable_reg = 0x06c4, 1184aec89f78SBastian Köcher .enable_mask = BIT(0), 11850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1186aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 11870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1188aec89f78SBastian Köcher .num_parents = 1, 1189aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1190aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1191aec89f78SBastian Köcher }, 1192aec89f78SBastian Köcher }, 1193aec89f78SBastian Köcher }; 1194aec89f78SBastian Köcher 1195aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1196aec89f78SBastian Köcher .halt_reg = 0x0748, 1197aec89f78SBastian Köcher .clkr = { 1198aec89f78SBastian Köcher .enable_reg = 0x0748, 1199aec89f78SBastian Köcher .enable_mask = BIT(0), 12000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1201aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 12020519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1203aec89f78SBastian Köcher .num_parents = 1, 1204aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1205aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1206aec89f78SBastian Köcher }, 1207aec89f78SBastian Köcher }, 1208aec89f78SBastian Köcher }; 1209aec89f78SBastian Köcher 1210aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1211aec89f78SBastian Köcher .halt_reg = 0x0744, 1212aec89f78SBastian Köcher .clkr = { 1213aec89f78SBastian Köcher .enable_reg = 0x0744, 1214aec89f78SBastian Köcher .enable_mask = BIT(0), 12150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1216aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 12170519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1218aec89f78SBastian Köcher .num_parents = 1, 1219aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1220aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1221aec89f78SBastian Köcher }, 1222aec89f78SBastian Köcher }, 1223aec89f78SBastian Köcher }; 1224aec89f78SBastian Köcher 1225aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1226aec89f78SBastian Köcher .halt_reg = 0x07c8, 1227aec89f78SBastian Köcher .clkr = { 1228aec89f78SBastian Köcher .enable_reg = 0x07c8, 1229aec89f78SBastian Köcher .enable_mask = BIT(0), 12300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1231aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 12320519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1233aec89f78SBastian Köcher .num_parents = 1, 1234aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1235aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1236aec89f78SBastian Köcher }, 1237aec89f78SBastian Köcher }, 1238aec89f78SBastian Köcher }; 1239aec89f78SBastian Köcher 1240aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1241aec89f78SBastian Köcher .halt_reg = 0x07c4, 1242aec89f78SBastian Köcher .clkr = { 1243aec89f78SBastian Köcher .enable_reg = 0x07c4, 1244aec89f78SBastian Köcher .enable_mask = BIT(0), 12450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1246aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 12470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1248aec89f78SBastian Köcher .num_parents = 1, 1249aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1250aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1251aec89f78SBastian Köcher }, 1252aec89f78SBastian Köcher }, 1253aec89f78SBastian Köcher }; 1254aec89f78SBastian Köcher 1255aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1256aec89f78SBastian Köcher .halt_reg = 0x0848, 1257aec89f78SBastian Köcher .clkr = { 1258aec89f78SBastian Köcher .enable_reg = 0x0848, 1259aec89f78SBastian Köcher .enable_mask = BIT(0), 12600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1261aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 12620519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1263aec89f78SBastian Köcher .num_parents = 1, 1264aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1265aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1266aec89f78SBastian Köcher }, 1267aec89f78SBastian Köcher }, 1268aec89f78SBastian Köcher }; 1269aec89f78SBastian Köcher 1270aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1271aec89f78SBastian Köcher .halt_reg = 0x0844, 1272aec89f78SBastian Köcher .clkr = { 1273aec89f78SBastian Köcher .enable_reg = 0x0844, 1274aec89f78SBastian Köcher .enable_mask = BIT(0), 12750519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1276aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 12770519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1278aec89f78SBastian Köcher .num_parents = 1, 1279aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1280aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1281aec89f78SBastian Köcher }, 1282aec89f78SBastian Köcher }, 1283aec89f78SBastian Köcher }; 1284aec89f78SBastian Köcher 1285aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1286aec89f78SBastian Köcher .halt_reg = 0x08c8, 1287aec89f78SBastian Köcher .clkr = { 1288aec89f78SBastian Köcher .enable_reg = 0x08c8, 1289aec89f78SBastian Köcher .enable_mask = BIT(0), 12900519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1291aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 12920519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1293aec89f78SBastian Köcher .num_parents = 1, 1294aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1295aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1296aec89f78SBastian Köcher }, 1297aec89f78SBastian Köcher }, 1298aec89f78SBastian Köcher }; 1299aec89f78SBastian Köcher 1300aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1301aec89f78SBastian Köcher .halt_reg = 0x08c4, 1302aec89f78SBastian Köcher .clkr = { 1303aec89f78SBastian Köcher .enable_reg = 0x08c4, 1304aec89f78SBastian Köcher .enable_mask = BIT(0), 13050519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1306aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 13070519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1308aec89f78SBastian Köcher .num_parents = 1, 1309aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1310aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1311aec89f78SBastian Köcher }, 1312aec89f78SBastian Köcher }, 1313aec89f78SBastian Köcher }; 1314aec89f78SBastian Köcher 1315aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1316aec89f78SBastian Köcher .halt_reg = 0x0684, 1317aec89f78SBastian Köcher .clkr = { 1318aec89f78SBastian Köcher .enable_reg = 0x0684, 1319aec89f78SBastian Köcher .enable_mask = BIT(0), 13200519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1321aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 13220519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1323aec89f78SBastian Köcher .num_parents = 1, 1324aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1325aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1326aec89f78SBastian Köcher }, 1327aec89f78SBastian Köcher }, 1328aec89f78SBastian Köcher }; 1329aec89f78SBastian Köcher 1330aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1331aec89f78SBastian Köcher .halt_reg = 0x0704, 1332aec89f78SBastian Köcher .clkr = { 1333aec89f78SBastian Köcher .enable_reg = 0x0704, 1334aec89f78SBastian Köcher .enable_mask = BIT(0), 13350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1336aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 13370519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1338aec89f78SBastian Köcher .num_parents = 1, 1339aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1340aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1341aec89f78SBastian Köcher }, 1342aec89f78SBastian Köcher }, 1343aec89f78SBastian Köcher }; 1344aec89f78SBastian Köcher 1345aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1346aec89f78SBastian Köcher .halt_reg = 0x0784, 1347aec89f78SBastian Köcher .clkr = { 1348aec89f78SBastian Köcher .enable_reg = 0x0784, 1349aec89f78SBastian Köcher .enable_mask = BIT(0), 13500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1351aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 13520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1353aec89f78SBastian Köcher .num_parents = 1, 1354aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1355aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1356aec89f78SBastian Köcher }, 1357aec89f78SBastian Köcher }, 1358aec89f78SBastian Köcher }; 1359aec89f78SBastian Köcher 1360aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1361aec89f78SBastian Köcher .halt_reg = 0x0804, 1362aec89f78SBastian Köcher .clkr = { 1363aec89f78SBastian Köcher .enable_reg = 0x0804, 1364aec89f78SBastian Köcher .enable_mask = BIT(0), 13650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1366aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 13670519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1368aec89f78SBastian Köcher .num_parents = 1, 1369aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1370aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1371aec89f78SBastian Köcher }, 1372aec89f78SBastian Köcher }, 1373aec89f78SBastian Köcher }; 1374aec89f78SBastian Köcher 1375aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1376aec89f78SBastian Köcher .halt_reg = 0x0884, 1377aec89f78SBastian Köcher .clkr = { 1378aec89f78SBastian Köcher .enable_reg = 0x0884, 1379aec89f78SBastian Köcher .enable_mask = BIT(0), 13800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1381aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 13820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1383aec89f78SBastian Köcher .num_parents = 1, 1384aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1385aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1386aec89f78SBastian Köcher }, 1387aec89f78SBastian Köcher }, 1388aec89f78SBastian Köcher }; 1389aec89f78SBastian Köcher 1390aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1391aec89f78SBastian Köcher .halt_reg = 0x0904, 1392aec89f78SBastian Köcher .clkr = { 1393aec89f78SBastian Köcher .enable_reg = 0x0904, 1394aec89f78SBastian Köcher .enable_mask = BIT(0), 13950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1396aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 13970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1398aec89f78SBastian Köcher .num_parents = 1, 1399aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1400aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1401aec89f78SBastian Köcher }, 1402aec89f78SBastian Köcher }, 1403aec89f78SBastian Köcher }; 1404aec89f78SBastian Köcher 1405aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1406aec89f78SBastian Köcher .halt_reg = 0x0944, 1407aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1408aec89f78SBastian Köcher .clkr = { 1409aec89f78SBastian Köcher .enable_reg = 0x1484, 1410aec89f78SBastian Köcher .enable_mask = BIT(15), 14110519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1412aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 141374a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 141474a33facSKonrad Dybcio .num_parents = 1, 1415aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1416aec89f78SBastian Köcher }, 1417aec89f78SBastian Köcher }, 1418aec89f78SBastian Köcher }; 1419aec89f78SBastian Köcher 1420aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1421aec89f78SBastian Köcher .halt_reg = 0x0988, 1422aec89f78SBastian Köcher .clkr = { 1423aec89f78SBastian Köcher .enable_reg = 0x0988, 1424aec89f78SBastian Köcher .enable_mask = BIT(0), 14250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1426aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 14270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1428aec89f78SBastian Köcher .num_parents = 1, 1429aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1430aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1431aec89f78SBastian Köcher }, 1432aec89f78SBastian Köcher }, 1433aec89f78SBastian Köcher }; 1434aec89f78SBastian Köcher 1435aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1436aec89f78SBastian Köcher .halt_reg = 0x0984, 1437aec89f78SBastian Köcher .clkr = { 1438aec89f78SBastian Köcher .enable_reg = 0x0984, 1439aec89f78SBastian Köcher .enable_mask = BIT(0), 14400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1441aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 14420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1443aec89f78SBastian Köcher .num_parents = 1, 1444aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1445aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1446aec89f78SBastian Köcher }, 1447aec89f78SBastian Köcher }, 1448aec89f78SBastian Köcher }; 1449aec89f78SBastian Köcher 1450aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1451aec89f78SBastian Köcher .halt_reg = 0x0a08, 1452aec89f78SBastian Köcher .clkr = { 1453aec89f78SBastian Köcher .enable_reg = 0x0a08, 1454aec89f78SBastian Köcher .enable_mask = BIT(0), 14550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1456aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 14570519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1458aec89f78SBastian Köcher .num_parents = 1, 1459aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1460aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1461aec89f78SBastian Köcher }, 1462aec89f78SBastian Köcher }, 1463aec89f78SBastian Köcher }; 1464aec89f78SBastian Köcher 1465aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1466aec89f78SBastian Köcher .halt_reg = 0x0a04, 1467aec89f78SBastian Köcher .clkr = { 1468aec89f78SBastian Köcher .enable_reg = 0x0a04, 1469aec89f78SBastian Köcher .enable_mask = BIT(0), 14700519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1471aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 14720519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1473aec89f78SBastian Köcher .num_parents = 1, 1474aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1475aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1476aec89f78SBastian Köcher }, 1477aec89f78SBastian Köcher }, 1478aec89f78SBastian Köcher }; 1479aec89f78SBastian Köcher 1480aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1481aec89f78SBastian Köcher .halt_reg = 0x0a88, 1482aec89f78SBastian Köcher .clkr = { 1483aec89f78SBastian Köcher .enable_reg = 0x0a88, 1484aec89f78SBastian Köcher .enable_mask = BIT(0), 14850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1486aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 14870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1488aec89f78SBastian Köcher .num_parents = 1, 1489aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1490aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1491aec89f78SBastian Köcher }, 1492aec89f78SBastian Köcher }, 1493aec89f78SBastian Köcher }; 1494aec89f78SBastian Köcher 1495aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1496aec89f78SBastian Köcher .halt_reg = 0x0a84, 1497aec89f78SBastian Köcher .clkr = { 1498aec89f78SBastian Köcher .enable_reg = 0x0a84, 1499aec89f78SBastian Köcher .enable_mask = BIT(0), 15000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1501aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 15020519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1503aec89f78SBastian Köcher .num_parents = 1, 1504aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1505aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1506aec89f78SBastian Köcher }, 1507aec89f78SBastian Köcher }, 1508aec89f78SBastian Köcher }; 1509aec89f78SBastian Köcher 1510aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1511aec89f78SBastian Köcher .halt_reg = 0x0b08, 1512aec89f78SBastian Köcher .clkr = { 1513aec89f78SBastian Köcher .enable_reg = 0x0b08, 1514aec89f78SBastian Köcher .enable_mask = BIT(0), 15150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1516aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 15170519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1518aec89f78SBastian Köcher .num_parents = 1, 1519aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1520aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1521aec89f78SBastian Köcher }, 1522aec89f78SBastian Köcher }, 1523aec89f78SBastian Köcher }; 1524aec89f78SBastian Köcher 1525aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1526aec89f78SBastian Köcher .halt_reg = 0x0b04, 1527aec89f78SBastian Köcher .clkr = { 1528aec89f78SBastian Köcher .enable_reg = 0x0b04, 1529aec89f78SBastian Köcher .enable_mask = BIT(0), 15300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1531aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 15320519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1533aec89f78SBastian Köcher .num_parents = 1, 1534aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1535aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1536aec89f78SBastian Köcher }, 1537aec89f78SBastian Köcher }, 1538aec89f78SBastian Köcher }; 1539aec89f78SBastian Köcher 1540aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1541aec89f78SBastian Köcher .halt_reg = 0x0b88, 1542aec89f78SBastian Köcher .clkr = { 1543aec89f78SBastian Köcher .enable_reg = 0x0b88, 1544aec89f78SBastian Köcher .enable_mask = BIT(0), 15450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1546aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 15470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1548aec89f78SBastian Köcher .num_parents = 1, 1549aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1550aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1551aec89f78SBastian Köcher }, 1552aec89f78SBastian Köcher }, 1553aec89f78SBastian Köcher }; 1554aec89f78SBastian Köcher 1555aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1556aec89f78SBastian Köcher .halt_reg = 0x0b84, 1557aec89f78SBastian Köcher .clkr = { 1558aec89f78SBastian Köcher .enable_reg = 0x0b84, 1559aec89f78SBastian Köcher .enable_mask = BIT(0), 15600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1561aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 15620519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1563aec89f78SBastian Köcher .num_parents = 1, 1564aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1565aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1566aec89f78SBastian Köcher }, 1567aec89f78SBastian Köcher }, 1568aec89f78SBastian Köcher }; 1569aec89f78SBastian Köcher 1570aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1571aec89f78SBastian Köcher .halt_reg = 0x0c08, 1572aec89f78SBastian Köcher .clkr = { 1573aec89f78SBastian Köcher .enable_reg = 0x0c08, 1574aec89f78SBastian Köcher .enable_mask = BIT(0), 15750519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1576aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 15770519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1578aec89f78SBastian Köcher .num_parents = 1, 1579aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1580aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1581aec89f78SBastian Köcher }, 1582aec89f78SBastian Köcher }, 1583aec89f78SBastian Köcher }; 1584aec89f78SBastian Köcher 1585aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1586aec89f78SBastian Köcher .halt_reg = 0x0c04, 1587aec89f78SBastian Köcher .clkr = { 1588aec89f78SBastian Köcher .enable_reg = 0x0c04, 1589aec89f78SBastian Köcher .enable_mask = BIT(0), 15900519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1591aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 15920519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1593aec89f78SBastian Köcher .num_parents = 1, 1594aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1595aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1596aec89f78SBastian Köcher }, 1597aec89f78SBastian Köcher }, 1598aec89f78SBastian Köcher }; 1599aec89f78SBastian Köcher 1600aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1601aec89f78SBastian Köcher .halt_reg = 0x09c4, 1602aec89f78SBastian Köcher .clkr = { 1603aec89f78SBastian Köcher .enable_reg = 0x09c4, 1604aec89f78SBastian Köcher .enable_mask = BIT(0), 16050519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1606aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 16070519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1608aec89f78SBastian Köcher .num_parents = 1, 1609aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1610aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1611aec89f78SBastian Köcher }, 1612aec89f78SBastian Köcher }, 1613aec89f78SBastian Köcher }; 1614aec89f78SBastian Köcher 1615aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1616aec89f78SBastian Köcher .halt_reg = 0x0a44, 1617aec89f78SBastian Köcher .clkr = { 1618aec89f78SBastian Köcher .enable_reg = 0x0a44, 1619aec89f78SBastian Köcher .enable_mask = BIT(0), 16200519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1621aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 16220519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1623aec89f78SBastian Köcher .num_parents = 1, 1624aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1625aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1626aec89f78SBastian Köcher }, 1627aec89f78SBastian Köcher }, 1628aec89f78SBastian Köcher }; 1629aec89f78SBastian Köcher 1630aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1631aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1632aec89f78SBastian Köcher .clkr = { 1633aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1634aec89f78SBastian Köcher .enable_mask = BIT(0), 16350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1636aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 16370519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1638aec89f78SBastian Köcher .num_parents = 1, 1639aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1640aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1641aec89f78SBastian Köcher }, 1642aec89f78SBastian Köcher }, 1643aec89f78SBastian Köcher }; 1644aec89f78SBastian Köcher 1645aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1646aec89f78SBastian Köcher .halt_reg = 0x0b44, 1647aec89f78SBastian Köcher .clkr = { 1648aec89f78SBastian Köcher .enable_reg = 0x0b44, 1649aec89f78SBastian Köcher .enable_mask = BIT(0), 16500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1651aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 16520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1653aec89f78SBastian Köcher .num_parents = 1, 1654aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1655aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1656aec89f78SBastian Köcher }, 1657aec89f78SBastian Köcher }, 1658aec89f78SBastian Köcher }; 1659aec89f78SBastian Köcher 1660aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1661aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1662aec89f78SBastian Köcher .clkr = { 1663aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1664aec89f78SBastian Köcher .enable_mask = BIT(0), 16650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1666aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 16670519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1668aec89f78SBastian Köcher .num_parents = 1, 1669aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1670aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1671aec89f78SBastian Köcher }, 1672aec89f78SBastian Köcher }, 1673aec89f78SBastian Köcher }; 1674aec89f78SBastian Köcher 1675aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1676aec89f78SBastian Köcher .halt_reg = 0x0c44, 1677aec89f78SBastian Köcher .clkr = { 1678aec89f78SBastian Köcher .enable_reg = 0x0c44, 1679aec89f78SBastian Köcher .enable_mask = BIT(0), 16800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1681aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 16820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1683aec89f78SBastian Köcher .num_parents = 1, 1684aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1685aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1686aec89f78SBastian Köcher }, 1687aec89f78SBastian Köcher }, 1688aec89f78SBastian Köcher }; 1689aec89f78SBastian Köcher 1690aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1691aec89f78SBastian Köcher .halt_reg = 0x1900, 1692aec89f78SBastian Köcher .clkr = { 1693aec89f78SBastian Köcher .enable_reg = 0x1900, 1694aec89f78SBastian Köcher .enable_mask = BIT(0), 16950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1696aec89f78SBastian Köcher .name = "gcc_gp1_clk", 16970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1698aec89f78SBastian Köcher .num_parents = 1, 1699aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1700aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1701aec89f78SBastian Köcher }, 1702aec89f78SBastian Köcher }, 1703aec89f78SBastian Köcher }; 1704aec89f78SBastian Köcher 1705aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1706aec89f78SBastian Köcher .halt_reg = 0x1940, 1707aec89f78SBastian Köcher .clkr = { 1708aec89f78SBastian Köcher .enable_reg = 0x1940, 1709aec89f78SBastian Köcher .enable_mask = BIT(0), 17100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1711aec89f78SBastian Köcher .name = "gcc_gp2_clk", 17120519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1713aec89f78SBastian Köcher .num_parents = 1, 1714aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1715aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1716aec89f78SBastian Köcher }, 1717aec89f78SBastian Köcher }, 1718aec89f78SBastian Köcher }; 1719aec89f78SBastian Köcher 1720aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1721aec89f78SBastian Köcher .halt_reg = 0x1980, 1722aec89f78SBastian Köcher .clkr = { 1723aec89f78SBastian Köcher .enable_reg = 0x1980, 1724aec89f78SBastian Köcher .enable_mask = BIT(0), 17250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1726aec89f78SBastian Köcher .name = "gcc_gp3_clk", 17270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1728aec89f78SBastian Köcher .num_parents = 1, 1729aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1730aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1731aec89f78SBastian Köcher }, 1732aec89f78SBastian Köcher }, 1733aec89f78SBastian Köcher }; 1734aec89f78SBastian Köcher 17358c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 17368c18b41bSKonrad Dybcio .halt_reg = 0x0280, 17378c18b41bSKonrad Dybcio .clkr = { 17388c18b41bSKonrad Dybcio .enable_reg = 0x0280, 17398c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17418c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 174274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 174374a33facSKonrad Dybcio .num_parents = 1, 17448c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17458c18b41bSKonrad Dybcio }, 17468c18b41bSKonrad Dybcio }, 17478c18b41bSKonrad Dybcio }; 17488c18b41bSKonrad Dybcio 17498c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 17508c18b41bSKonrad Dybcio .halt_reg = 0x0284, 17518c18b41bSKonrad Dybcio .clkr = { 17528c18b41bSKonrad Dybcio .enable_reg = 0x0284, 17538c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17540519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17558c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 175674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 175774a33facSKonrad Dybcio .num_parents = 1, 17588c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17598c18b41bSKonrad Dybcio }, 17608c18b41bSKonrad Dybcio }, 17618c18b41bSKonrad Dybcio }; 17628c18b41bSKonrad Dybcio 1763aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1764aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1765aec89f78SBastian Köcher .clkr = { 1766aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1767aec89f78SBastian Köcher .enable_mask = BIT(0), 17680519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1769aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 17700519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1771aec89f78SBastian Köcher .num_parents = 1, 1772aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1773aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1774aec89f78SBastian Köcher }, 1775aec89f78SBastian Köcher }, 1776aec89f78SBastian Köcher }; 1777aec89f78SBastian Köcher 17788c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 17798c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 17808c18b41bSKonrad Dybcio .clkr = { 17818c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 17828c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17830519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17848c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 178574a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 178674a33facSKonrad Dybcio .num_parents = 1, 178774a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 17888c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17898c18b41bSKonrad Dybcio }, 17908c18b41bSKonrad Dybcio }, 17918c18b41bSKonrad Dybcio }; 17928c18b41bSKonrad Dybcio 17938c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 17948c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 17958c18b41bSKonrad Dybcio .clkr = { 17968c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 17978c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17980519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17998c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 180074a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 180174a33facSKonrad Dybcio .num_parents = 1, 180274a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18038c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18048c18b41bSKonrad Dybcio }, 18058c18b41bSKonrad Dybcio }, 18068c18b41bSKonrad Dybcio }; 18078c18b41bSKonrad Dybcio 1808aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1809aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1810aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1811aec89f78SBastian Köcher .clkr = { 1812aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1813aec89f78SBastian Köcher .enable_mask = BIT(0), 18140519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1815aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 18160519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1817aec89f78SBastian Köcher .num_parents = 1, 1818aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1819aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1820aec89f78SBastian Köcher }, 1821aec89f78SBastian Köcher }, 1822aec89f78SBastian Köcher }; 1823aec89f78SBastian Köcher 18248c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 18258c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 18268c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 18278c18b41bSKonrad Dybcio .clkr = { 18288c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 18298c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18318c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 183274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 183374a33facSKonrad Dybcio .num_parents = 1, 183474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18358c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18368c18b41bSKonrad Dybcio }, 18378c18b41bSKonrad Dybcio }, 18388c18b41bSKonrad Dybcio }; 18398c18b41bSKonrad Dybcio 1840aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1841aec89f78SBastian Köcher .halt_reg = 0x1b54, 1842aec89f78SBastian Köcher .clkr = { 1843aec89f78SBastian Köcher .enable_reg = 0x1b54, 1844aec89f78SBastian Köcher .enable_mask = BIT(0), 18450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1846aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 18470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1848aec89f78SBastian Köcher .num_parents = 1, 1849aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1850aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1851aec89f78SBastian Köcher }, 1852aec89f78SBastian Köcher }, 1853aec89f78SBastian Köcher }; 1854aec89f78SBastian Köcher 18558c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 18568c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 18578c18b41bSKonrad Dybcio .clkr = { 18588c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 18598c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18618c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 186274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 186374a33facSKonrad Dybcio .num_parents = 1, 186474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18658c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18668c18b41bSKonrad Dybcio }, 18678c18b41bSKonrad Dybcio }, 18688c18b41bSKonrad Dybcio }; 18698c18b41bSKonrad Dybcio 18708c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 18718c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 18728c18b41bSKonrad Dybcio .clkr = { 18738c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 18748c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18750519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18768c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 187774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 187874a33facSKonrad Dybcio .num_parents = 1, 187974a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18808c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18818c18b41bSKonrad Dybcio }, 18828c18b41bSKonrad Dybcio }, 18838c18b41bSKonrad Dybcio }; 18848c18b41bSKonrad Dybcio 1885aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1886aec89f78SBastian Köcher .halt_reg = 0x1b58, 1887aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1888aec89f78SBastian Köcher .clkr = { 1889aec89f78SBastian Köcher .enable_reg = 0x1b58, 1890aec89f78SBastian Köcher .enable_mask = BIT(0), 18910519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1892aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 18930519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1894aec89f78SBastian Köcher .num_parents = 1, 1895aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1896aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1897aec89f78SBastian Köcher }, 1898aec89f78SBastian Köcher }, 1899aec89f78SBastian Köcher }; 1900aec89f78SBastian Köcher 19018c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 19028c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 19038c18b41bSKonrad Dybcio .clkr = { 19048c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 19058c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19060519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19078c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 190874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 190974a33facSKonrad Dybcio .num_parents = 1, 191074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19118c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19128c18b41bSKonrad Dybcio }, 19138c18b41bSKonrad Dybcio }, 19148c18b41bSKonrad Dybcio }; 19158c18b41bSKonrad Dybcio 1916aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1917aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1918aec89f78SBastian Köcher .clkr = { 1919aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1920aec89f78SBastian Köcher .enable_mask = BIT(0), 19210519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1922aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 19230519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1924aec89f78SBastian Köcher .num_parents = 1, 1925aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1926aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1927aec89f78SBastian Köcher }, 1928aec89f78SBastian Köcher }, 1929aec89f78SBastian Köcher }; 1930aec89f78SBastian Köcher 19318c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 19328c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 19338c18b41bSKonrad Dybcio .clkr = { 19348c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 19358c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19360519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19378c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 193874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 193974a33facSKonrad Dybcio .num_parents = 1, 19408c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19418c18b41bSKonrad Dybcio }, 19428c18b41bSKonrad Dybcio }, 19438c18b41bSKonrad Dybcio }; 19448c18b41bSKonrad Dybcio 1945aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1946aec89f78SBastian Köcher .halt_reg = 0x04c4, 1947aec89f78SBastian Köcher .clkr = { 1948aec89f78SBastian Köcher .enable_reg = 0x04c4, 1949aec89f78SBastian Köcher .enable_mask = BIT(0), 19500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1951aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 19520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1953aec89f78SBastian Köcher .num_parents = 1, 1954aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1955aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1956aec89f78SBastian Köcher }, 1957aec89f78SBastian Köcher }, 1958aec89f78SBastian Köcher }; 1959aec89f78SBastian Köcher 1960eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1961eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1962eaff16bcSJeremy McNicoll .clkr = { 1963eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1964eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 19650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1966eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 196774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1968eaff16bcSJeremy McNicoll .num_parents = 1, 196974a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 1970eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1971eaff16bcSJeremy McNicoll }, 1972eaff16bcSJeremy McNicoll }, 1973eaff16bcSJeremy McNicoll }; 1974eaff16bcSJeremy McNicoll 19758c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 19768c18b41bSKonrad Dybcio .halt_reg = 0x0508, 19778c18b41bSKonrad Dybcio .clkr = { 19788c18b41bSKonrad Dybcio .enable_reg = 0x0508, 19798c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19818c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 198274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 19838c18b41bSKonrad Dybcio .num_parents = 1, 198474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19858c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19868c18b41bSKonrad Dybcio }, 19878c18b41bSKonrad Dybcio }, 19888c18b41bSKonrad Dybcio }; 19898c18b41bSKonrad Dybcio 1990aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 1991aec89f78SBastian Köcher .halt_reg = 0x0504, 1992aec89f78SBastian Köcher .clkr = { 1993aec89f78SBastian Köcher .enable_reg = 0x0504, 1994aec89f78SBastian Köcher .enable_mask = BIT(0), 19950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1996aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 19970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_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 20058c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = { 20068c18b41bSKonrad Dybcio .halt_reg = 0x0548, 20078c18b41bSKonrad Dybcio .clkr = { 20088c18b41bSKonrad Dybcio .enable_reg = 0x0548, 20098c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20118c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 201274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20138c18b41bSKonrad Dybcio .num_parents = 1, 201474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20158c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20168c18b41bSKonrad Dybcio }, 20178c18b41bSKonrad Dybcio }, 20188c18b41bSKonrad Dybcio }; 20198c18b41bSKonrad Dybcio 2020aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 2021aec89f78SBastian Köcher .halt_reg = 0x0544, 2022aec89f78SBastian Köcher .clkr = { 2023aec89f78SBastian Köcher .enable_reg = 0x0544, 2024aec89f78SBastian Köcher .enable_mask = BIT(0), 20250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2026aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 20270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_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_sdcc4_ahb_clk = { 20368c18b41bSKonrad Dybcio .halt_reg = 0x0588, 20378c18b41bSKonrad Dybcio .clkr = { 20388c18b41bSKonrad Dybcio .enable_reg = 0x0588, 20398c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20418c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 204274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20438c18b41bSKonrad Dybcio .num_parents = 1, 204474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20458c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20468c18b41bSKonrad Dybcio }, 20478c18b41bSKonrad Dybcio }, 20488c18b41bSKonrad Dybcio }; 20498c18b41bSKonrad Dybcio 2050aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 2051aec89f78SBastian Köcher .halt_reg = 0x0584, 2052aec89f78SBastian Köcher .clkr = { 2053aec89f78SBastian Köcher .enable_reg = 0x0584, 2054aec89f78SBastian Köcher .enable_mask = BIT(0), 20550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2056aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 20570519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 2058aec89f78SBastian Köcher .num_parents = 1, 2059aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2060aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2061aec89f78SBastian Köcher }, 2062aec89f78SBastian Köcher }, 2063aec89f78SBastian Köcher }; 2064aec89f78SBastian Köcher 2065aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2066aec89f78SBastian Köcher .halt_reg = 0x1d7c, 2067aec89f78SBastian Köcher .clkr = { 2068aec89f78SBastian Köcher .enable_reg = 0x1d7c, 2069aec89f78SBastian Köcher .enable_mask = BIT(0), 20700519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2071aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 20720519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2073aec89f78SBastian Köcher .num_parents = 1, 2074aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2075aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2076aec89f78SBastian Köcher }, 2077aec89f78SBastian Köcher }, 2078aec89f78SBastian Köcher }; 2079aec89f78SBastian Köcher 2080aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2081aec89f78SBastian Köcher .halt_reg = 0x03fc, 2082aec89f78SBastian Köcher .clkr = { 2083aec89f78SBastian Köcher .enable_reg = 0x03fc, 2084aec89f78SBastian Köcher .enable_mask = BIT(0), 20850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2086aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 20870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2088aec89f78SBastian Köcher .num_parents = 1, 2089aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2090aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2091aec89f78SBastian Köcher }, 2092aec89f78SBastian Köcher }, 2093aec89f78SBastian Köcher }; 2094aec89f78SBastian Köcher 20958c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 20968c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 20978c18b41bSKonrad Dybcio .clkr = { 20988c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 20998c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21018c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 210274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 210374a33facSKonrad Dybcio .num_parents = 1, 21048c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21058c18b41bSKonrad Dybcio }, 21068c18b41bSKonrad Dybcio }, 21078c18b41bSKonrad Dybcio }; 21088c18b41bSKonrad Dybcio 2109aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 2110aec89f78SBastian Köcher .halt_reg = 0x0d88, 2111aec89f78SBastian Köcher .clkr = { 2112aec89f78SBastian Köcher .enable_reg = 0x0d88, 2113aec89f78SBastian Köcher .enable_mask = BIT(0), 21140519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2115aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 21160519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2117aec89f78SBastian Köcher .num_parents = 1, 2118aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2119aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2120aec89f78SBastian Köcher }, 2121aec89f78SBastian Köcher }, 2122aec89f78SBastian Köcher }; 2123aec89f78SBastian Köcher 21248c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 21258c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 21268c18b41bSKonrad Dybcio .clkr = { 21278c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 21288c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21290519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21308c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 213174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 213274a33facSKonrad Dybcio .num_parents = 1, 21338c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21348c18b41bSKonrad Dybcio }, 21358c18b41bSKonrad Dybcio }, 21368c18b41bSKonrad Dybcio }; 21378c18b41bSKonrad Dybcio 2138aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2139aec89f78SBastian Köcher .halt_reg = 0x1d48, 2140aec89f78SBastian Köcher .clkr = { 2141aec89f78SBastian Köcher .enable_reg = 0x1d48, 2142aec89f78SBastian Köcher .enable_mask = BIT(0), 21430519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2144aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 21450519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2146aec89f78SBastian Köcher .num_parents = 1, 2147aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2148aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2149aec89f78SBastian Köcher }, 2150aec89f78SBastian Köcher }, 2151aec89f78SBastian Köcher }; 2152aec89f78SBastian Köcher 2153aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2154aec89f78SBastian Köcher .halt_reg = 0x1d54, 2155aec89f78SBastian Köcher .clkr = { 2156aec89f78SBastian Köcher .enable_reg = 0x1d54, 2157aec89f78SBastian Köcher .enable_mask = BIT(0), 21580519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2159aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 21600519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2161aec89f78SBastian Köcher .num_parents = 1, 2162aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2163aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2164aec89f78SBastian Köcher }, 2165aec89f78SBastian Köcher }, 2166aec89f78SBastian Köcher }; 2167aec89f78SBastian Köcher 21688c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 21698c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 21708c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21718c18b41bSKonrad Dybcio .clkr = { 21728c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 21738c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21758c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 217674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 217774a33facSKonrad Dybcio .num_parents = 1, 21788c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21798c18b41bSKonrad Dybcio }, 21808c18b41bSKonrad Dybcio }, 21818c18b41bSKonrad Dybcio }; 21828c18b41bSKonrad Dybcio 21838c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 21848c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 21858c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21868c18b41bSKonrad Dybcio .clkr = { 21878c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 21888c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21908c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 219174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 219274a33facSKonrad Dybcio .num_parents = 1, 21938c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21948c18b41bSKonrad Dybcio }, 21958c18b41bSKonrad Dybcio }, 21968c18b41bSKonrad Dybcio }; 21978c18b41bSKonrad Dybcio 2198aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2199aec89f78SBastian Köcher .halt_reg = 0x1d50, 2200aec89f78SBastian Köcher .clkr = { 2201aec89f78SBastian Köcher .enable_reg = 0x1d50, 2202aec89f78SBastian Köcher .enable_mask = BIT(0), 22030519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2204aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 22050519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2206aec89f78SBastian Köcher .num_parents = 1, 2207aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2208aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2209aec89f78SBastian Köcher }, 2210aec89f78SBastian Köcher }, 2211aec89f78SBastian Köcher }; 2212aec89f78SBastian Köcher 22138c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 22148c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 22158c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22168c18b41bSKonrad Dybcio .clkr = { 22178c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 22188c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22208c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 222174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 222274a33facSKonrad Dybcio .num_parents = 1, 22238c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22248c18b41bSKonrad Dybcio }, 22258c18b41bSKonrad Dybcio }, 22268c18b41bSKonrad Dybcio }; 22278c18b41bSKonrad Dybcio 22288c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 22298c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 22308c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22318c18b41bSKonrad Dybcio .clkr = { 22328c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 22338c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22340519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22358c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 223674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 223774a33facSKonrad Dybcio .num_parents = 1, 22388c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22398c18b41bSKonrad Dybcio }, 22408c18b41bSKonrad Dybcio }, 22418c18b41bSKonrad Dybcio }; 22428c18b41bSKonrad Dybcio 22438c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 22448c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 22458c18b41bSKonrad Dybcio .clkr = { 22468c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 22478c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22480519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22498c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 22500519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22510519d1d0SKonrad Dybcio .fw_name = "sleep", 22520519d1d0SKonrad Dybcio .name = "sleep" 22530519d1d0SKonrad Dybcio }, 22540519d1d0SKonrad Dybcio .num_parents = 1, 22558c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22568c18b41bSKonrad Dybcio }, 22578c18b41bSKonrad Dybcio }, 22588c18b41bSKonrad Dybcio }; 22598c18b41bSKonrad Dybcio 2260aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2261aec89f78SBastian Köcher .halt_reg = 0x03c8, 2262aec89f78SBastian Köcher .clkr = { 2263aec89f78SBastian Köcher .enable_reg = 0x03c8, 2264aec89f78SBastian Köcher .enable_mask = BIT(0), 22650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2266aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 22670519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2268aec89f78SBastian Köcher .num_parents = 1, 2269aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2270aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2271aec89f78SBastian Köcher }, 2272aec89f78SBastian Köcher }, 2273aec89f78SBastian Köcher }; 2274aec89f78SBastian Köcher 2275aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2276aec89f78SBastian Köcher .halt_reg = 0x03d0, 2277aec89f78SBastian Köcher .clkr = { 2278aec89f78SBastian Köcher .enable_reg = 0x03d0, 2279aec89f78SBastian Köcher .enable_mask = BIT(0), 22800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2281aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 22820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2283aec89f78SBastian Köcher .num_parents = 1, 2284aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2285aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2286aec89f78SBastian Köcher }, 2287aec89f78SBastian Köcher }, 2288aec89f78SBastian Köcher }; 2289aec89f78SBastian Köcher 22908c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 22918c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 22928c18b41bSKonrad Dybcio .clkr = { 22938c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 22948c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22968c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 22970519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22980519d1d0SKonrad Dybcio .fw_name = "sleep", 22990519d1d0SKonrad Dybcio .name = "sleep" 23000519d1d0SKonrad Dybcio }, 23010519d1d0SKonrad Dybcio .num_parents = 1, 23028c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23038c18b41bSKonrad Dybcio }, 23048c18b41bSKonrad Dybcio }, 23058c18b41bSKonrad Dybcio }; 23068c18b41bSKonrad Dybcio 2307aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2308aec89f78SBastian Köcher .halt_reg = 0x1408, 2309aec89f78SBastian Köcher .clkr = { 2310aec89f78SBastian Köcher .enable_reg = 0x1408, 2311aec89f78SBastian Köcher .enable_mask = BIT(0), 23120519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2313aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 23140519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2315aec89f78SBastian Köcher .num_parents = 1, 2316aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2317aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2318aec89f78SBastian Köcher }, 2319aec89f78SBastian Köcher }, 2320aec89f78SBastian Köcher }; 2321aec89f78SBastian Köcher 2322*b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = { 2323*b8f415c6SKonrad Dybcio .halt_reg = 0x140c, 2324*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2325*b8f415c6SKonrad Dybcio .clkr = { 2326*b8f415c6SKonrad Dybcio .enable_reg = 0x140c, 2327*b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2328*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2329*b8f415c6SKonrad Dybcio .name = "gcc_usb3_phy_pipe_clk", 2330*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2331*b8f415c6SKonrad Dybcio }, 2332*b8f415c6SKonrad Dybcio }, 2333*b8f415c6SKonrad Dybcio }; 2334*b8f415c6SKonrad Dybcio 23358c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 23368c18b41bSKonrad Dybcio .halt_reg = 0x0488, 23378c18b41bSKonrad Dybcio .clkr = { 23388c18b41bSKonrad Dybcio .enable_reg = 0x0488, 23398c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23418c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 234274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 234374a33facSKonrad Dybcio .num_parents = 1, 23448c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23458c18b41bSKonrad Dybcio }, 23468c18b41bSKonrad Dybcio }, 23478c18b41bSKonrad Dybcio }; 23488c18b41bSKonrad Dybcio 2349aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2350aec89f78SBastian Köcher .halt_reg = 0x0484, 2351aec89f78SBastian Köcher .clkr = { 2352aec89f78SBastian Köcher .enable_reg = 0x0484, 2353aec89f78SBastian Köcher .enable_mask = BIT(0), 23540519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2355aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 23560519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2357aec89f78SBastian Köcher .num_parents = 1, 2358aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2359aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2360aec89f78SBastian Köcher }, 2361aec89f78SBastian Köcher }, 2362aec89f78SBastian Köcher }; 2363aec89f78SBastian Köcher 23648c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 23658c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 23668c18b41bSKonrad Dybcio .clkr = { 23678c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 23688c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23690519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23708c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 23718c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23728c18b41bSKonrad Dybcio }, 23738c18b41bSKonrad Dybcio }, 23748c18b41bSKonrad Dybcio }; 23758c18b41bSKonrad Dybcio 2376*b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = { 2377*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2378*b8f415c6SKonrad Dybcio .clkr = { 2379*b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2380*b8f415c6SKonrad Dybcio .enable_mask = BIT(26), 2381*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2382*b8f415c6SKonrad Dybcio .name = "gpll0_out_mmsscc", 2383*b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2384*b8f415c6SKonrad Dybcio .num_parents = 1, 2385*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2386*b8f415c6SKonrad Dybcio }, 2387*b8f415c6SKonrad Dybcio }, 2388*b8f415c6SKonrad Dybcio }; 2389*b8f415c6SKonrad Dybcio 2390*b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = { 2391*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2392*b8f415c6SKonrad Dybcio .clkr = { 2393*b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2394*b8f415c6SKonrad Dybcio .enable_mask = BIT(27), 2395*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2396*b8f415c6SKonrad Dybcio .name = "gpll0_out_msscc", 2397*b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2398*b8f415c6SKonrad Dybcio .num_parents = 1, 2399*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2400*b8f415c6SKonrad Dybcio }, 2401*b8f415c6SKonrad Dybcio }, 2402*b8f415c6SKonrad Dybcio }; 2403*b8f415c6SKonrad Dybcio 2404*b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = { 2405*b8f415c6SKonrad Dybcio .halt_reg = 0x1e00, 2406*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2407*b8f415c6SKonrad Dybcio .clkr = { 2408*b8f415c6SKonrad Dybcio .enable_reg = 0x1E00, 2409*b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2410*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2411*b8f415c6SKonrad Dybcio .name = "pcie_0_phy_ldo", 2412*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2413*b8f415c6SKonrad Dybcio }, 2414*b8f415c6SKonrad Dybcio }, 2415*b8f415c6SKonrad Dybcio }; 2416*b8f415c6SKonrad Dybcio 2417*b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = { 2418*b8f415c6SKonrad Dybcio .halt_reg = 0x1e04, 2419*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2420*b8f415c6SKonrad Dybcio .clkr = { 2421*b8f415c6SKonrad Dybcio .enable_reg = 0x1E04, 2422*b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2423*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2424*b8f415c6SKonrad Dybcio .name = "pcie_1_phy_ldo", 2425*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2426*b8f415c6SKonrad Dybcio }, 2427*b8f415c6SKonrad Dybcio }, 2428*b8f415c6SKonrad Dybcio }; 2429*b8f415c6SKonrad Dybcio 2430*b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = { 2431*b8f415c6SKonrad Dybcio .halt_reg = 0x1e0c, 2432*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2433*b8f415c6SKonrad Dybcio .clkr = { 2434*b8f415c6SKonrad Dybcio .enable_reg = 0x1E0C, 2435*b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2436*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2437*b8f415c6SKonrad Dybcio .name = "ufs_phy_ldo", 2438*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2439*b8f415c6SKonrad Dybcio }, 2440*b8f415c6SKonrad Dybcio }, 2441*b8f415c6SKonrad Dybcio }; 2442*b8f415c6SKonrad Dybcio 2443*b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = { 2444*b8f415c6SKonrad Dybcio .halt_reg = 0x1e08, 2445*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2446*b8f415c6SKonrad Dybcio .clkr = { 2447*b8f415c6SKonrad Dybcio .enable_reg = 0x1E08, 2448*b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2449*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2450*b8f415c6SKonrad Dybcio .name = "usb_ss_phy_ldo", 2451*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2452*b8f415c6SKonrad Dybcio }, 2453*b8f415c6SKonrad Dybcio }, 2454*b8f415c6SKonrad Dybcio }; 2455*b8f415c6SKonrad Dybcio 2456*b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = { 2457*b8f415c6SKonrad Dybcio .halt_reg = 0x0e04, 2458*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2459*b8f415c6SKonrad Dybcio .hwcg_reg = 0x0e04, 2460*b8f415c6SKonrad Dybcio .hwcg_bit = 1, 2461*b8f415c6SKonrad Dybcio .clkr = { 2462*b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2463*b8f415c6SKonrad Dybcio .enable_mask = BIT(10), 2464*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2465*b8f415c6SKonrad Dybcio .name = "gcc_boot_rom_ahb_clk", 2466*b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 2467*b8f415c6SKonrad Dybcio .num_parents = 1, 2468*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2469*b8f415c6SKonrad Dybcio }, 2470*b8f415c6SKonrad Dybcio }, 2471*b8f415c6SKonrad Dybcio }; 2472*b8f415c6SKonrad Dybcio 2473*b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = { 2474*b8f415c6SKonrad Dybcio .halt_reg = 0x0d04, 2475*b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2476*b8f415c6SKonrad Dybcio .clkr = { 2477*b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2478*b8f415c6SKonrad Dybcio .enable_mask = BIT(13), 2479*b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2480*b8f415c6SKonrad Dybcio .name = "gcc_prng_ahb_clk", 2481*b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2482*b8f415c6SKonrad Dybcio .num_parents = 1, 2483*b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2484*b8f415c6SKonrad Dybcio }, 2485*b8f415c6SKonrad Dybcio }, 2486*b8f415c6SKonrad Dybcio }; 2487*b8f415c6SKonrad Dybcio 24888c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = { 24898c18b41bSKonrad Dybcio .gdscr = 0x1e18, 24908c18b41bSKonrad Dybcio .pd = { 24918c18b41bSKonrad Dybcio .name = "pcie", 24928c18b41bSKonrad Dybcio }, 24938c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 24948c18b41bSKonrad Dybcio }; 24958c18b41bSKonrad Dybcio 24968c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 24978c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 24988c18b41bSKonrad Dybcio .pd = { 24998c18b41bSKonrad Dybcio .name = "pcie_0", 25008c18b41bSKonrad Dybcio }, 25018c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25028c18b41bSKonrad Dybcio }; 25038c18b41bSKonrad Dybcio 25048c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 25058c18b41bSKonrad Dybcio .gdscr = 0x1b44, 25068c18b41bSKonrad Dybcio .pd = { 25078c18b41bSKonrad Dybcio .name = "pcie_1", 25088c18b41bSKonrad Dybcio }, 25098c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25108c18b41bSKonrad Dybcio }; 25118c18b41bSKonrad Dybcio 25128c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 25138c18b41bSKonrad Dybcio .gdscr = 0x3c4, 25148c18b41bSKonrad Dybcio .pd = { 25158c18b41bSKonrad Dybcio .name = "usb30", 25168c18b41bSKonrad Dybcio }, 25178c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25188c18b41bSKonrad Dybcio }; 25198c18b41bSKonrad Dybcio 25208c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 25218c18b41bSKonrad Dybcio .gdscr = 0x1d44, 25228c18b41bSKonrad Dybcio .pd = { 25238c18b41bSKonrad Dybcio .name = "ufs", 25248c18b41bSKonrad Dybcio }, 25258c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25268c18b41bSKonrad Dybcio }; 25278c18b41bSKonrad Dybcio 2528aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2529aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2530aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2531aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2532aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 253374a33facSKonrad Dybcio [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 253474a33facSKonrad Dybcio [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 253574a33facSKonrad Dybcio [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 2536aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2537aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2538aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2539aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2540aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2541aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2542aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2543aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2544aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2545aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2546aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2547aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2548aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2549aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2550aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2551aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2552aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2553aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2554aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2555aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2556aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2557aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2558aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2559aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2560aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2561aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2562aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2563aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2564aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2565aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2566aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2567aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2568aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2569aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2570aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2571aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2572aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2573aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2574aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2575aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2576aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2577aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2578aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2579aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2580aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2581aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2582aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2583aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2584aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2585aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2586aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2587aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2588aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2589aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2590aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2591aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2592aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2593aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2594aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2595aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2596aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2597aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2598aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2599aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2600aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2601aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2602aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2603aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2604aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2605aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2606aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2607aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2608aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2609aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2610aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2611aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2612aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2613aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2614aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2615aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2616aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2617aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2618aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2619aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2620aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2621aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2622aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2623aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2624aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2625aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2626aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2627aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2628aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2629aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2630aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 26318c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 26328c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2633aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 26348c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 26358c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2636aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 26378c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2638aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 26398c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 26408c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2641aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 26428c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2643aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 26448c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2645eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 26468c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 26478c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 26488c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 26498c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 26508c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 26518c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 26528c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2653aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2654aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 26558c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2656aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 26578c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2658aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2659aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 26608c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 26618c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2662aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 26638c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 26648c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 26658c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2666aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2667aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 26688c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2669aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2670*b8f415c6SKonrad Dybcio [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr, 26718c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2672aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 26738c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2674*b8f415c6SKonrad Dybcio [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr, 2675*b8f415c6SKonrad Dybcio [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr, 2676*b8f415c6SKonrad Dybcio [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr, 2677*b8f415c6SKonrad Dybcio [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr, 2678*b8f415c6SKonrad Dybcio [UFS_PHY_LDO] = &ufs_phy_ldo.clkr, 2679*b8f415c6SKonrad Dybcio [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr, 2680*b8f415c6SKonrad Dybcio [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2681*b8f415c6SKonrad Dybcio [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 26828c18b41bSKonrad Dybcio }; 26838c18b41bSKonrad Dybcio 26848c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 26858c18b41bSKonrad Dybcio [PCIE_GDSC] = &pcie_gdsc, 26868c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 26878c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 26888c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 26898c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 26908c18b41bSKonrad Dybcio }; 26918c18b41bSKonrad Dybcio 26928c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 26938c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 26948c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 26958c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 26968c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 26978c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2698aec89f78SBastian Köcher }; 2699aec89f78SBastian Köcher 2700aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2701aec89f78SBastian Köcher .reg_bits = 32, 2702aec89f78SBastian Köcher .reg_stride = 4, 2703aec89f78SBastian Köcher .val_bits = 32, 2704aec89f78SBastian Köcher .max_register = 0x2000, 2705aec89f78SBastian Köcher .fast_io = true, 2706aec89f78SBastian Köcher }; 2707aec89f78SBastian Köcher 2708aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2709aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2710aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2711aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 27128c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 27138c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 27148c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 27158c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2716aec89f78SBastian Köcher }; 2717aec89f78SBastian Köcher 2718aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2719aec89f78SBastian Köcher { .compatible = "qcom,gcc-msm8994" }, 2720aec89f78SBastian Köcher {} 2721aec89f78SBastian Köcher }; 2722aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2723aec89f78SBastian Köcher 2724aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2725aec89f78SBastian Köcher { 2726aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2727aec89f78SBastian Köcher } 2728aec89f78SBastian Köcher 2729aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2730aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2731aec89f78SBastian Köcher .driver = { 2732aec89f78SBastian Köcher .name = "gcc-msm8994", 2733aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2734aec89f78SBastian Köcher }, 2735aec89f78SBastian Köcher }; 2736aec89f78SBastian Köcher 2737aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2738aec89f78SBastian Köcher { 2739aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2740aec89f78SBastian Köcher } 2741aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2742aec89f78SBastian Köcher 2743aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2744aec89f78SBastian Köcher { 2745aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2746aec89f78SBastian Köcher } 2747aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2748aec89f78SBastian Köcher 2749aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2750aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2751aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2752