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> 11*c09b8023SKonrad Dybcio #include <linux/of_device.h> 12aec89f78SBastian Köcher #include <linux/platform_device.h> 13aec89f78SBastian Köcher #include <linux/module.h> 14aec89f78SBastian Köcher #include <linux/regmap.h> 15aec89f78SBastian Köcher 16aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h> 17aec89f78SBastian Köcher 18aec89f78SBastian Köcher #include "common.h" 19aec89f78SBastian Köcher #include "clk-regmap.h" 20aec89f78SBastian Köcher #include "clk-alpha-pll.h" 21aec89f78SBastian Köcher #include "clk-rcg.h" 22aec89f78SBastian Köcher #include "clk-branch.h" 23aec89f78SBastian Köcher #include "reset.h" 248c18b41bSKonrad Dybcio #include "gdsc.h" 25aec89f78SBastian Köcher 26aec89f78SBastian Köcher enum { 27aec89f78SBastian Köcher P_XO, 28aec89f78SBastian Köcher P_GPLL0, 29aec89f78SBastian Köcher P_GPLL4, 30aec89f78SBastian Köcher }; 31aec89f78SBastian Köcher 32aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = { 330519d1d0SKonrad Dybcio .offset = 0, 3428d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 35aec89f78SBastian Köcher .clkr = { 36aec89f78SBastian Köcher .enable_reg = 0x1480, 37aec89f78SBastian Köcher .enable_mask = BIT(0), 380519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 39aec89f78SBastian Köcher .name = "gpll0_early", 400519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 410519d1d0SKonrad Dybcio .fw_name = "xo", 420519d1d0SKonrad Dybcio }, 43aec89f78SBastian Köcher .num_parents = 1, 44aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 45aec89f78SBastian Köcher }, 46aec89f78SBastian Köcher }, 47aec89f78SBastian Köcher }; 48aec89f78SBastian Köcher 49aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = { 500519d1d0SKonrad Dybcio .offset = 0, 5128d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 520519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 53aec89f78SBastian Köcher .name = "gpll0", 54aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll0_early" }, 55aec89f78SBastian Köcher .num_parents = 1, 56aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 57aec89f78SBastian Köcher }, 58aec89f78SBastian Köcher }; 59aec89f78SBastian Köcher 60aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = { 61aec89f78SBastian Köcher .offset = 0x1dc0, 6228d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 63aec89f78SBastian Köcher .clkr = { 64aec89f78SBastian Köcher .enable_reg = 0x1480, 65aec89f78SBastian Köcher .enable_mask = BIT(4), 660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 67aec89f78SBastian Köcher .name = "gpll4_early", 680519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 690519d1d0SKonrad Dybcio .fw_name = "xo", 700519d1d0SKonrad Dybcio }, 71aec89f78SBastian Köcher .num_parents = 1, 72aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 73aec89f78SBastian Köcher }, 74aec89f78SBastian Köcher }, 75aec89f78SBastian Köcher }; 76aec89f78SBastian Köcher 77aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = { 78aec89f78SBastian Köcher .offset = 0x1dc0, 7928d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 81aec89f78SBastian Köcher .name = "gpll4", 82aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll4_early" }, 83aec89f78SBastian Köcher .num_parents = 1, 84aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 85aec89f78SBastian Köcher }, 86aec89f78SBastian Köcher }; 87aec89f78SBastian Köcher 880519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = { 890519d1d0SKonrad Dybcio { P_XO, 0 }, 900519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 910519d1d0SKonrad Dybcio }; 920519d1d0SKonrad Dybcio 930519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = { 940519d1d0SKonrad Dybcio { .fw_name = "xo" }, 950519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 960519d1d0SKonrad Dybcio }; 970519d1d0SKonrad Dybcio 980519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 990519d1d0SKonrad Dybcio { P_XO, 0 }, 1000519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 1010519d1d0SKonrad Dybcio { P_GPLL4, 5 }, 1020519d1d0SKonrad Dybcio }; 1030519d1d0SKonrad Dybcio 1040519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 1050519d1d0SKonrad Dybcio { .fw_name = "xo" }, 1060519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 1070519d1d0SKonrad Dybcio { .hw = &gpll4.clkr.hw }, 1080519d1d0SKonrad Dybcio }; 1090519d1d0SKonrad Dybcio 11074a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = { 11174a33facSKonrad Dybcio .cmd_rcgr = 0x0120, 11274a33facSKonrad Dybcio .hid_width = 5, 11374a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 11474a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 11574a33facSKonrad Dybcio .name = "system_noc_clk_src", 11674a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 11774a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 11874a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 11974a33facSKonrad Dybcio }, 12074a33facSKonrad Dybcio }; 12174a33facSKonrad Dybcio 12274a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = { 12374a33facSKonrad Dybcio .cmd_rcgr = 0x0150, 12474a33facSKonrad Dybcio .hid_width = 5, 12574a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 12674a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 12774a33facSKonrad Dybcio .name = "config_noc_clk_src", 12874a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 12974a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 13074a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 13174a33facSKonrad Dybcio }, 13274a33facSKonrad Dybcio }; 13374a33facSKonrad Dybcio 13474a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = { 13574a33facSKonrad Dybcio .cmd_rcgr = 0x0190, 13674a33facSKonrad Dybcio .hid_width = 5, 13774a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 13874a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 13974a33facSKonrad Dybcio .name = "periph_noc_clk_src", 14074a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 14174a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 14274a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 14374a33facSKonrad Dybcio }, 14474a33facSKonrad Dybcio }; 14574a33facSKonrad Dybcio 146aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 147aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 148aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 149aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 150aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 151aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 152aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 153aec89f78SBastian Köcher { } 154aec89f78SBastian Köcher }; 155aec89f78SBastian Köcher 156aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 157aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 158aec89f78SBastian Köcher .mnd_width = 8, 159aec89f78SBastian Köcher .hid_width = 5, 160aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 161aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 1620519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 163aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 1640519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 165aec89f78SBastian Köcher .num_parents = 2, 166aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 167aec89f78SBastian Köcher }, 168aec89f78SBastian Köcher }; 169aec89f78SBastian Köcher 170aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 171aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 172aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 173aec89f78SBastian Köcher { } 174aec89f78SBastian Köcher }; 175aec89f78SBastian Köcher 176aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 177aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 178aec89f78SBastian Köcher .mnd_width = 8, 179aec89f78SBastian Köcher .hid_width = 5, 180aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 181aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 1820519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 183aec89f78SBastian Köcher .name = "usb30_master_clk_src", 1840519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 185aec89f78SBastian Köcher .num_parents = 2, 186aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 187aec89f78SBastian Köcher }, 188aec89f78SBastian Köcher }; 189aec89f78SBastian Köcher 190aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 191aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 192aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 193aec89f78SBastian Köcher { } 194aec89f78SBastian Köcher }; 195aec89f78SBastian Köcher 196aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 197aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 198aec89f78SBastian Köcher .hid_width = 5, 199aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 200aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 202aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 2030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 204aec89f78SBastian Köcher .num_parents = 2, 205aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 206aec89f78SBastian Köcher }, 207aec89f78SBastian Köcher }; 208aec89f78SBastian Köcher 20980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = { 210aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 211aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 212aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 213aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 214aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 215aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 216aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 217aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 218aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 219aec89f78SBastian Köcher { } 220aec89f78SBastian Köcher }; 221aec89f78SBastian Köcher 222*c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = { 223*c09b8023SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 224*c09b8023SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 225*c09b8023SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 226*c09b8023SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 227*c09b8023SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 228*c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 229*c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 230*c09b8023SKonrad Dybcio { } 231*c09b8023SKonrad Dybcio }; 232*c09b8023SKonrad Dybcio 233aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 234aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 235aec89f78SBastian Köcher .mnd_width = 8, 236aec89f78SBastian Köcher .hid_width = 5, 237aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 23880863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 2390519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 240aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 2410519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 242aec89f78SBastian Köcher .num_parents = 2, 243aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 244aec89f78SBastian Köcher }, 245aec89f78SBastian Köcher }; 246aec89f78SBastian Köcher 247aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 248aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 249aec89f78SBastian Köcher .hid_width = 5, 250aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 251aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2520519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 253aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 2540519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 255aec89f78SBastian Köcher .num_parents = 2, 256aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 257aec89f78SBastian Köcher }, 258aec89f78SBastian Köcher }; 259aec89f78SBastian Köcher 26080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 26180863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 26280863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 26380863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 26480863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 26580863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 26680863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 26780863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 26880863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 26980863521SKonrad Dybcio F(46150000, P_GPLL0, 13, 0, 0), 27080863521SKonrad Dybcio { } 27180863521SKonrad Dybcio }; 27280863521SKonrad Dybcio 273aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 274aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 275aec89f78SBastian Köcher .mnd_width = 8, 276aec89f78SBastian Köcher .hid_width = 5, 277aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 27880863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 2790519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 280aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 2810519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 282aec89f78SBastian Köcher .num_parents = 2, 283aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 284aec89f78SBastian Köcher }, 285aec89f78SBastian Köcher }; 286aec89f78SBastian Köcher 287aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 288aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 289aec89f78SBastian Köcher .hid_width = 5, 290aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 291aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2920519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 293aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 2940519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 295aec89f78SBastian Köcher .num_parents = 2, 296aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 297aec89f78SBastian Köcher }, 298aec89f78SBastian Köcher }; 299aec89f78SBastian Köcher 30080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 30180863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 30280863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 30380863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 30480863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 30580863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 30680863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 30780863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 30880863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 30980863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 31080863521SKonrad Dybcio { } 31180863521SKonrad Dybcio }; 31280863521SKonrad Dybcio 313aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 314aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 315aec89f78SBastian Köcher .mnd_width = 8, 316aec89f78SBastian Köcher .hid_width = 5, 317aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 31880863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3190519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 320aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 3210519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 322aec89f78SBastian Köcher .num_parents = 2, 323aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 324aec89f78SBastian Köcher }, 325aec89f78SBastian Köcher }; 326aec89f78SBastian Köcher 327aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 328aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 329aec89f78SBastian Köcher .hid_width = 5, 330aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 331aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3320519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 333aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 3340519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 335aec89f78SBastian Köcher .num_parents = 2, 336aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 337aec89f78SBastian Köcher }, 338aec89f78SBastian Köcher }; 339aec89f78SBastian Köcher 340aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 341aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 342aec89f78SBastian Köcher .mnd_width = 8, 343aec89f78SBastian Köcher .hid_width = 5, 344aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 34580863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3460519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 347aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 3480519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 349aec89f78SBastian Köcher .num_parents = 2, 350aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 351aec89f78SBastian Köcher }, 352aec89f78SBastian Köcher }; 353aec89f78SBastian Köcher 354aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 355aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 356aec89f78SBastian Köcher .hid_width = 5, 357aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 358aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3590519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 360aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 3610519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 362aec89f78SBastian Köcher .num_parents = 2, 363aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 364aec89f78SBastian Köcher }, 365aec89f78SBastian Köcher }; 366aec89f78SBastian Köcher 36780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 36880863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 36980863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 37080863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 37180863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 37280863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 37380863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 37480863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 37580863521SKonrad Dybcio F(40000000, P_GPLL0, 15, 0, 0), 37680863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 37780863521SKonrad Dybcio { } 37880863521SKonrad Dybcio }; 37980863521SKonrad Dybcio 380aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 381aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 382aec89f78SBastian Köcher .mnd_width = 8, 383aec89f78SBastian Köcher .hid_width = 5, 384aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 38580863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 3860519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 387aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 3880519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 389aec89f78SBastian Köcher .num_parents = 2, 390aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 391aec89f78SBastian Köcher }, 392aec89f78SBastian Köcher }; 393aec89f78SBastian Köcher 394aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 395aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 396aec89f78SBastian Köcher .hid_width = 5, 397aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 398aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3990519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 400aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 4010519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 402aec89f78SBastian Köcher .num_parents = 2, 403aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 404aec89f78SBastian Köcher }, 405aec89f78SBastian Köcher }; 406aec89f78SBastian Köcher 40780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 40880863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 40980863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 41080863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 41180863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 41280863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 41380863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 41480863521SKonrad Dybcio F(27906976, P_GPLL0, 1, 2, 43), 41580863521SKonrad Dybcio F(41380000, P_GPLL0, 15, 0, 0), 41680863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 41780863521SKonrad Dybcio { } 41880863521SKonrad Dybcio }; 41980863521SKonrad Dybcio 420aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 421aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 422aec89f78SBastian Köcher .mnd_width = 8, 423aec89f78SBastian Köcher .hid_width = 5, 424aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 42580863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 4260519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 427aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 4280519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 429aec89f78SBastian Köcher .num_parents = 2, 430aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 431aec89f78SBastian Köcher }, 432aec89f78SBastian Köcher }; 433aec89f78SBastian Köcher 434aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 435aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 436aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 437aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 438aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 439aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 440aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 441aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 442aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 443aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 444aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 445aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 446aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 447aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 448aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 449aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 450aec89f78SBastian Köcher { } 451aec89f78SBastian Köcher }; 452aec89f78SBastian Köcher 453aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 454aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 455aec89f78SBastian Köcher .mnd_width = 16, 456aec89f78SBastian Köcher .hid_width = 5, 457aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 458aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4590519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 460aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 4610519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 462aec89f78SBastian Köcher .num_parents = 2, 463aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 464aec89f78SBastian Köcher }, 465aec89f78SBastian Köcher }; 466aec89f78SBastian Köcher 467aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 468aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 469aec89f78SBastian Köcher .mnd_width = 16, 470aec89f78SBastian Köcher .hid_width = 5, 471aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 472aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4730519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 474aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 4750519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 476aec89f78SBastian Köcher .num_parents = 2, 477aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 478aec89f78SBastian Köcher }, 479aec89f78SBastian Köcher }; 480aec89f78SBastian Köcher 481aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 482aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 483aec89f78SBastian Köcher .mnd_width = 16, 484aec89f78SBastian Köcher .hid_width = 5, 485aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 486aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4870519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 488aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 4890519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 490aec89f78SBastian Köcher .num_parents = 2, 491aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 492aec89f78SBastian Köcher }, 493aec89f78SBastian Köcher }; 494aec89f78SBastian Köcher 495aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 496aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 497aec89f78SBastian Köcher .mnd_width = 16, 498aec89f78SBastian Köcher .hid_width = 5, 499aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 500aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 502aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 5030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 504aec89f78SBastian Köcher .num_parents = 2, 505aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 506aec89f78SBastian Köcher }, 507aec89f78SBastian Köcher }; 508aec89f78SBastian Köcher 509aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 510aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 511aec89f78SBastian Köcher .mnd_width = 16, 512aec89f78SBastian Köcher .hid_width = 5, 513aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 514aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5150519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 516aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 5170519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 518aec89f78SBastian Köcher .num_parents = 2, 519aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 520aec89f78SBastian Köcher }, 521aec89f78SBastian Köcher }; 522aec89f78SBastian Köcher 523aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 524aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 525aec89f78SBastian Köcher .mnd_width = 16, 526aec89f78SBastian Köcher .hid_width = 5, 527aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 528aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5290519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 530aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 5310519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 532aec89f78SBastian Köcher .num_parents = 2, 533aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 534aec89f78SBastian Köcher }, 535aec89f78SBastian Köcher }; 536aec89f78SBastian Köcher 537aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 538aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 539aec89f78SBastian Köcher .hid_width = 5, 540aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 541aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5420519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 543aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 5440519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 545aec89f78SBastian Köcher .num_parents = 2, 546aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 547aec89f78SBastian Köcher }, 548aec89f78SBastian Köcher }; 549aec89f78SBastian Köcher 55080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 55180863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 55280863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 55380863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 55480863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 55580863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 55680863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 55780863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 55880863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 55980863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 56080863521SKonrad Dybcio { } 56180863521SKonrad Dybcio }; 56280863521SKonrad Dybcio 563aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 564aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 565aec89f78SBastian Köcher .mnd_width = 8, 566aec89f78SBastian Köcher .hid_width = 5, 567aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 56880863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5690519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 570aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 5710519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 572aec89f78SBastian Köcher .num_parents = 2, 573aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 574aec89f78SBastian Köcher }, 575aec89f78SBastian Köcher }; 576aec89f78SBastian Köcher 577aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 578aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 579aec89f78SBastian Köcher .hid_width = 5, 580aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 581aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5820519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 583aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 5840519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 585aec89f78SBastian Köcher .num_parents = 2, 586aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 587aec89f78SBastian Köcher }, 588aec89f78SBastian Köcher }; 589aec89f78SBastian Köcher 590aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 591aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 592aec89f78SBastian Köcher .mnd_width = 8, 593aec89f78SBastian Köcher .hid_width = 5, 594aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 59580863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5960519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 597aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 5980519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 599aec89f78SBastian Köcher .num_parents = 2, 600aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 601aec89f78SBastian Köcher }, 602aec89f78SBastian Köcher }; 603aec89f78SBastian Köcher 60480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 60580863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 60680863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 60780863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 60880863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 60980863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 61080863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 61180863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 61280863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 61380863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 61480863521SKonrad Dybcio { } 61580863521SKonrad Dybcio }; 61680863521SKonrad Dybcio 617aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 618aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 619aec89f78SBastian Köcher .hid_width = 5, 620aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 621aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6220519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 623aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 6240519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 625aec89f78SBastian Köcher .num_parents = 2, 626aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 627aec89f78SBastian Köcher }, 628aec89f78SBastian Köcher }; 629aec89f78SBastian Köcher 630aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 631aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 632aec89f78SBastian Köcher .mnd_width = 8, 633aec89f78SBastian Köcher .hid_width = 5, 634aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 63580863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6360519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 637aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 6380519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 639aec89f78SBastian Köcher .num_parents = 2, 640aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 641aec89f78SBastian Köcher }, 642aec89f78SBastian Köcher }; 643aec89f78SBastian Köcher 644aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 645aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 646aec89f78SBastian Köcher .hid_width = 5, 647aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 648aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6490519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 650aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 6510519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 652aec89f78SBastian Köcher .num_parents = 2, 653aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 654aec89f78SBastian Köcher }, 655aec89f78SBastian Köcher }; 656aec89f78SBastian Köcher 657aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 658aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 659aec89f78SBastian Köcher .mnd_width = 8, 660aec89f78SBastian Köcher .hid_width = 5, 661aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 66280863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6630519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 664aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 6650519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 666aec89f78SBastian Köcher .num_parents = 2, 667aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 668aec89f78SBastian Köcher }, 669aec89f78SBastian Köcher }; 670aec89f78SBastian Köcher 671aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 672aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 673aec89f78SBastian Köcher .hid_width = 5, 674aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 675aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6760519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 677aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 6780519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 679aec89f78SBastian Köcher .num_parents = 2, 680aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 681aec89f78SBastian Köcher }, 682aec89f78SBastian Köcher }; 683aec89f78SBastian Köcher 684aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 685aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 686aec89f78SBastian Köcher .mnd_width = 8, 687aec89f78SBastian Köcher .hid_width = 5, 688aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 68980863521SKonrad Dybcio /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 69080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 6910519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 692aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 6930519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 694aec89f78SBastian Köcher .num_parents = 2, 695aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 696aec89f78SBastian Köcher }, 697aec89f78SBastian Köcher }; 698aec89f78SBastian Köcher 699aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 700aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 701aec89f78SBastian Köcher .hid_width = 5, 702aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 703aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 7040519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 705aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 7060519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 707aec89f78SBastian Köcher .num_parents = 2, 708aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 709aec89f78SBastian Köcher }, 710aec89f78SBastian Köcher }; 711aec89f78SBastian Köcher 71280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 71380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 71480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 71580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 71680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 71780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 71880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 71980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 72080863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 72180863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 72280863521SKonrad Dybcio { } 72380863521SKonrad Dybcio }; 72480863521SKonrad Dybcio 725aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 726aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 727aec89f78SBastian Köcher .mnd_width = 8, 728aec89f78SBastian Köcher .hid_width = 5, 729aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 73080863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 7310519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 732aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 7330519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 734aec89f78SBastian Köcher .num_parents = 2, 735aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 736aec89f78SBastian Köcher }, 737aec89f78SBastian Köcher }; 738aec89f78SBastian Köcher 739aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 740aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 741aec89f78SBastian Köcher .mnd_width = 16, 742aec89f78SBastian Köcher .hid_width = 5, 743aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 744aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7450519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 746aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 7470519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 748aec89f78SBastian Köcher .num_parents = 2, 749aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 750aec89f78SBastian Köcher }, 751aec89f78SBastian Köcher }; 752aec89f78SBastian Köcher 753aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 754aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 755aec89f78SBastian Köcher .mnd_width = 16, 756aec89f78SBastian Köcher .hid_width = 5, 757aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 758aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7590519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 760aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 7610519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 762aec89f78SBastian Köcher .num_parents = 2, 763aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 764aec89f78SBastian Köcher }, 765aec89f78SBastian Köcher }; 766aec89f78SBastian Köcher 767aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 768aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 769aec89f78SBastian Köcher .mnd_width = 16, 770aec89f78SBastian Köcher .hid_width = 5, 771aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 772aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7730519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 774aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 7750519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 776aec89f78SBastian Köcher .num_parents = 2, 777aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 778aec89f78SBastian Köcher }, 779aec89f78SBastian Köcher }; 780aec89f78SBastian Köcher 781aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 782aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 783aec89f78SBastian Köcher .mnd_width = 16, 784aec89f78SBastian Köcher .hid_width = 5, 785aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 786aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7870519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 788aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 7890519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 790aec89f78SBastian Köcher .num_parents = 2, 791aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 792aec89f78SBastian Köcher }, 793aec89f78SBastian Köcher }; 794aec89f78SBastian Köcher 795aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 796aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 797aec89f78SBastian Köcher .mnd_width = 16, 798aec89f78SBastian Köcher .hid_width = 5, 799aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 800aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 8010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 802aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 8030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 804aec89f78SBastian Köcher .num_parents = 2, 805aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 806aec89f78SBastian Köcher }, 807aec89f78SBastian Köcher }; 808aec89f78SBastian Köcher 809aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 810aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 811aec89f78SBastian Köcher .mnd_width = 16, 812aec89f78SBastian Köcher .hid_width = 5, 813aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 814aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 8150519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 816aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 8170519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 818aec89f78SBastian Köcher .num_parents = 2, 819aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 820aec89f78SBastian Köcher }, 821aec89f78SBastian Köcher }; 822aec89f78SBastian Köcher 823aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 824aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 825aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 826aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 827aec89f78SBastian Köcher { } 828aec89f78SBastian Köcher }; 829aec89f78SBastian Köcher 830aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 831aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 832aec89f78SBastian Köcher .mnd_width = 8, 833aec89f78SBastian Köcher .hid_width = 5, 834aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 835aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 8360519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 837aec89f78SBastian Köcher .name = "gp1_clk_src", 8380519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 839aec89f78SBastian Köcher .num_parents = 2, 840aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 841aec89f78SBastian Köcher }, 842aec89f78SBastian Köcher }; 843aec89f78SBastian Köcher 844aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 845aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 846aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 847aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 848aec89f78SBastian Köcher { } 849aec89f78SBastian Köcher }; 850aec89f78SBastian Köcher 851aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 852aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 853aec89f78SBastian Köcher .mnd_width = 8, 854aec89f78SBastian Köcher .hid_width = 5, 855aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 856aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 8570519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 858aec89f78SBastian Köcher .name = "gp2_clk_src", 8590519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 860aec89f78SBastian Köcher .num_parents = 2, 861aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 862aec89f78SBastian Köcher }, 863aec89f78SBastian Köcher }; 864aec89f78SBastian Köcher 865aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 866aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 867aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 868aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 869aec89f78SBastian Köcher { } 870aec89f78SBastian Köcher }; 871aec89f78SBastian Köcher 872aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 873aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 874aec89f78SBastian Köcher .mnd_width = 8, 875aec89f78SBastian Köcher .hid_width = 5, 876aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 877aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 8780519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 879aec89f78SBastian Köcher .name = "gp3_clk_src", 8800519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 881aec89f78SBastian Köcher .num_parents = 2, 882aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 883aec89f78SBastian Köcher }, 884aec89f78SBastian Köcher }; 885aec89f78SBastian Köcher 886aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 887aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 888aec89f78SBastian Köcher { } 889aec89f78SBastian Köcher }; 890aec89f78SBastian Köcher 891aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 892aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 893aec89f78SBastian Köcher .mnd_width = 8, 894aec89f78SBastian Köcher .hid_width = 5, 895aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 8960519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 897aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 8980519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8990519d1d0SKonrad Dybcio .fw_name = "xo", 9000519d1d0SKonrad Dybcio }, 901aec89f78SBastian Köcher .num_parents = 1, 902aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 903aec89f78SBastian Köcher }, 904aec89f78SBastian Köcher }; 905aec89f78SBastian Köcher 906aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 907aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 908aec89f78SBastian Köcher { } 909aec89f78SBastian Köcher }; 910aec89f78SBastian Köcher 911aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 912aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 913aec89f78SBastian Köcher .hid_width = 5, 914aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9150519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 916aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 9170519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9180519d1d0SKonrad Dybcio .fw_name = "xo", 9190519d1d0SKonrad Dybcio }, 920aec89f78SBastian Köcher .num_parents = 1, 921aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 922aec89f78SBastian Köcher }, 923aec89f78SBastian Köcher }; 924aec89f78SBastian Köcher 925aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 926aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 927aec89f78SBastian Köcher { } 928aec89f78SBastian Köcher }; 929aec89f78SBastian Köcher 930aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 931aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 932aec89f78SBastian Köcher .mnd_width = 8, 933aec89f78SBastian Köcher .hid_width = 5, 934aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 9350519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 936aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 9370519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9380519d1d0SKonrad Dybcio .fw_name = "xo", 9390519d1d0SKonrad Dybcio }, 940aec89f78SBastian Köcher .num_parents = 1, 941aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 942aec89f78SBastian Köcher }, 943aec89f78SBastian Köcher }; 944aec89f78SBastian Köcher 945aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 946aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 947aec89f78SBastian Köcher .hid_width = 5, 948aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9490519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 950aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 9510519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9520519d1d0SKonrad Dybcio .fw_name = "xo", 9530519d1d0SKonrad Dybcio }, 954aec89f78SBastian Köcher .num_parents = 1, 955aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 956aec89f78SBastian Köcher }, 957aec89f78SBastian Köcher }; 958aec89f78SBastian Köcher 959aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 960aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 961aec89f78SBastian Köcher { } 962aec89f78SBastian Köcher }; 963aec89f78SBastian Köcher 964aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 965aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 966aec89f78SBastian Köcher .hid_width = 5, 967aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 968aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 9690519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 970aec89f78SBastian Köcher .name = "pdm2_clk_src", 9710519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 972aec89f78SBastian Köcher .num_parents = 2, 973aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 974aec89f78SBastian Köcher }, 975aec89f78SBastian Köcher }; 976aec89f78SBastian Köcher 977aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 978aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 979aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 980aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 981aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 982aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 983aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 984aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 985aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 986aec89f78SBastian Köcher { } 987aec89f78SBastian Köcher }; 988aec89f78SBastian Köcher 989*c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = { 990*c09b8023SKonrad Dybcio F(144000, P_XO, 16, 3, 25), 991*c09b8023SKonrad Dybcio F(400000, P_XO, 12, 1, 4), 992*c09b8023SKonrad Dybcio F(20000000, P_GPLL0, 15, 1, 2), 993*c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 994*c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 995*c09b8023SKonrad Dybcio F(100000000, P_GPLL0, 6, 0, 0), 996*c09b8023SKonrad Dybcio F(172000000, P_GPLL4, 2, 0, 0), 997*c09b8023SKonrad Dybcio F(344000000, P_GPLL4, 1, 0, 0), 998*c09b8023SKonrad Dybcio { } 999*c09b8023SKonrad Dybcio }; 1000*c09b8023SKonrad Dybcio 1001aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 1002aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 1003aec89f78SBastian Köcher .mnd_width = 8, 1004aec89f78SBastian Köcher .hid_width = 5, 1005aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 1006aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 10070519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1008aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 10090519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 1010aec89f78SBastian Köcher .num_parents = 3, 10115f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1012aec89f78SBastian Köcher }, 1013aec89f78SBastian Köcher }; 1014aec89f78SBastian Köcher 1015aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 1016aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 1017aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 1018aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 1019aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 1020aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 1021aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 1022aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 1023aec89f78SBastian Köcher { } 1024aec89f78SBastian Köcher }; 1025aec89f78SBastian Köcher 1026aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 1027aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 1028aec89f78SBastian Köcher .mnd_width = 8, 1029aec89f78SBastian Köcher .hid_width = 5, 1030aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1031aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10320519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1033aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 10340519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1035aec89f78SBastian Köcher .num_parents = 2, 10365f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1037aec89f78SBastian Köcher }, 1038aec89f78SBastian Köcher }; 1039aec89f78SBastian Köcher 1040aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 1041aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 1042aec89f78SBastian Köcher .mnd_width = 8, 1043aec89f78SBastian Köcher .hid_width = 5, 1044aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1045aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10460519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1047aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 10480519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1049aec89f78SBastian Köcher .num_parents = 2, 10505f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1051aec89f78SBastian Köcher }, 1052aec89f78SBastian Köcher }; 1053aec89f78SBastian Köcher 1054aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 1055aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 1056aec89f78SBastian Köcher .mnd_width = 8, 1057aec89f78SBastian Köcher .hid_width = 5, 1058aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1059aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10600519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1061aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 10620519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1063aec89f78SBastian Köcher .num_parents = 2, 10645f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1065aec89f78SBastian Köcher }, 1066aec89f78SBastian Köcher }; 1067aec89f78SBastian Köcher 1068aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1069aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 1070aec89f78SBastian Köcher { } 1071aec89f78SBastian Köcher }; 1072aec89f78SBastian Köcher 1073aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 1074aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 1075aec89f78SBastian Köcher .mnd_width = 8, 1076aec89f78SBastian Köcher .hid_width = 5, 1077aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 10780519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1079aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 10800519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10810519d1d0SKonrad Dybcio .fw_name = "xo", 10820519d1d0SKonrad Dybcio }, 1083aec89f78SBastian Köcher .num_parents = 1, 1084aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1085aec89f78SBastian Köcher }, 1086aec89f78SBastian Köcher }; 1087aec89f78SBastian Köcher 1088aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1089aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 1090aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 1091aec89f78SBastian Köcher { } 1092aec89f78SBastian Köcher }; 1093aec89f78SBastian Köcher 1094aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1095aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1096aec89f78SBastian Köcher .hid_width = 5, 1097aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1098aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 10990519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1100aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 11010519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1102aec89f78SBastian Köcher .num_parents = 2, 1103aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1104aec89f78SBastian Köcher }, 1105aec89f78SBastian Köcher }; 1106aec89f78SBastian Köcher 1107aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1108aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1109aec89f78SBastian Köcher { } 1110aec89f78SBastian Köcher }; 1111aec89f78SBastian Köcher 1112aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1113aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1114aec89f78SBastian Köcher .hid_width = 5, 1115aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 11160519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1117aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 11180519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 11190519d1d0SKonrad Dybcio .fw_name = "xo", 11200519d1d0SKonrad Dybcio }, 1121aec89f78SBastian Köcher .num_parents = 1, 1122aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1123aec89f78SBastian Köcher }, 1124aec89f78SBastian Köcher }; 1125aec89f78SBastian Köcher 1126aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1127aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1128aec89f78SBastian Köcher { } 1129aec89f78SBastian Köcher }; 1130aec89f78SBastian Köcher 1131aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1132aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1133aec89f78SBastian Köcher .hid_width = 5, 1134aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1135aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 11360519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1137aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 11380519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1139aec89f78SBastian Köcher .num_parents = 2, 1140aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1141aec89f78SBastian Köcher }, 1142aec89f78SBastian Köcher }; 1143aec89f78SBastian Köcher 1144aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 1145aec89f78SBastian Köcher .halt_reg = 0x05c4, 1146aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1147aec89f78SBastian Köcher .clkr = { 1148aec89f78SBastian Köcher .enable_reg = 0x1484, 1149aec89f78SBastian Köcher .enable_mask = BIT(17), 11500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1151aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 115274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 115374a33facSKonrad Dybcio .num_parents = 1, 1154aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1155aec89f78SBastian Köcher }, 1156aec89f78SBastian Köcher }, 1157aec89f78SBastian Köcher }; 1158aec89f78SBastian Köcher 1159aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1160aec89f78SBastian Köcher .halt_reg = 0x0648, 1161aec89f78SBastian Köcher .clkr = { 1162aec89f78SBastian Köcher .enable_reg = 0x0648, 1163aec89f78SBastian Köcher .enable_mask = BIT(0), 11640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1165aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 11660519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1167aec89f78SBastian Köcher .num_parents = 1, 1168aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1169aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1170aec89f78SBastian Köcher }, 1171aec89f78SBastian Köcher }, 1172aec89f78SBastian Köcher }; 1173aec89f78SBastian Köcher 1174aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1175aec89f78SBastian Köcher .halt_reg = 0x0644, 1176aec89f78SBastian Köcher .clkr = { 1177aec89f78SBastian Köcher .enable_reg = 0x0644, 1178aec89f78SBastian Köcher .enable_mask = BIT(0), 11790519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1180aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 11810519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1182aec89f78SBastian Köcher .num_parents = 1, 1183aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1184aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1185aec89f78SBastian Köcher }, 1186aec89f78SBastian Köcher }, 1187aec89f78SBastian Köcher }; 1188aec89f78SBastian Köcher 1189aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1190aec89f78SBastian Köcher .halt_reg = 0x06c8, 1191aec89f78SBastian Köcher .clkr = { 1192aec89f78SBastian Köcher .enable_reg = 0x06c8, 1193aec89f78SBastian Köcher .enable_mask = BIT(0), 11940519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1195aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 11960519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1197aec89f78SBastian Köcher .num_parents = 1, 1198aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1199aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1200aec89f78SBastian Köcher }, 1201aec89f78SBastian Köcher }, 1202aec89f78SBastian Köcher }; 1203aec89f78SBastian Köcher 1204aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1205aec89f78SBastian Köcher .halt_reg = 0x06c4, 1206aec89f78SBastian Köcher .clkr = { 1207aec89f78SBastian Köcher .enable_reg = 0x06c4, 1208aec89f78SBastian Köcher .enable_mask = BIT(0), 12090519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1210aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 12110519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1212aec89f78SBastian Köcher .num_parents = 1, 1213aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1214aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1215aec89f78SBastian Köcher }, 1216aec89f78SBastian Köcher }, 1217aec89f78SBastian Köcher }; 1218aec89f78SBastian Köcher 1219aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1220aec89f78SBastian Köcher .halt_reg = 0x0748, 1221aec89f78SBastian Köcher .clkr = { 1222aec89f78SBastian Köcher .enable_reg = 0x0748, 1223aec89f78SBastian Köcher .enable_mask = BIT(0), 12240519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1225aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 12260519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1227aec89f78SBastian Köcher .num_parents = 1, 1228aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1229aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1230aec89f78SBastian Köcher }, 1231aec89f78SBastian Köcher }, 1232aec89f78SBastian Köcher }; 1233aec89f78SBastian Köcher 1234aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1235aec89f78SBastian Köcher .halt_reg = 0x0744, 1236aec89f78SBastian Köcher .clkr = { 1237aec89f78SBastian Köcher .enable_reg = 0x0744, 1238aec89f78SBastian Köcher .enable_mask = BIT(0), 12390519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1240aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 12410519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1242aec89f78SBastian Köcher .num_parents = 1, 1243aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1244aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1245aec89f78SBastian Köcher }, 1246aec89f78SBastian Köcher }, 1247aec89f78SBastian Köcher }; 1248aec89f78SBastian Köcher 1249aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1250aec89f78SBastian Köcher .halt_reg = 0x07c8, 1251aec89f78SBastian Köcher .clkr = { 1252aec89f78SBastian Köcher .enable_reg = 0x07c8, 1253aec89f78SBastian Köcher .enable_mask = BIT(0), 12540519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1255aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 12560519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1257aec89f78SBastian Köcher .num_parents = 1, 1258aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1259aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1260aec89f78SBastian Köcher }, 1261aec89f78SBastian Köcher }, 1262aec89f78SBastian Köcher }; 1263aec89f78SBastian Köcher 1264aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1265aec89f78SBastian Köcher .halt_reg = 0x07c4, 1266aec89f78SBastian Köcher .clkr = { 1267aec89f78SBastian Köcher .enable_reg = 0x07c4, 1268aec89f78SBastian Köcher .enable_mask = BIT(0), 12690519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1270aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 12710519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1272aec89f78SBastian Köcher .num_parents = 1, 1273aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1274aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1275aec89f78SBastian Köcher }, 1276aec89f78SBastian Köcher }, 1277aec89f78SBastian Köcher }; 1278aec89f78SBastian Köcher 1279aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1280aec89f78SBastian Köcher .halt_reg = 0x0848, 1281aec89f78SBastian Köcher .clkr = { 1282aec89f78SBastian Köcher .enable_reg = 0x0848, 1283aec89f78SBastian Köcher .enable_mask = BIT(0), 12840519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1285aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 12860519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1287aec89f78SBastian Köcher .num_parents = 1, 1288aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1289aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1290aec89f78SBastian Köcher }, 1291aec89f78SBastian Köcher }, 1292aec89f78SBastian Köcher }; 1293aec89f78SBastian Köcher 1294aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1295aec89f78SBastian Köcher .halt_reg = 0x0844, 1296aec89f78SBastian Köcher .clkr = { 1297aec89f78SBastian Köcher .enable_reg = 0x0844, 1298aec89f78SBastian Köcher .enable_mask = BIT(0), 12990519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1300aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 13010519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1302aec89f78SBastian Köcher .num_parents = 1, 1303aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1304aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1305aec89f78SBastian Köcher }, 1306aec89f78SBastian Köcher }, 1307aec89f78SBastian Köcher }; 1308aec89f78SBastian Köcher 1309aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1310aec89f78SBastian Köcher .halt_reg = 0x08c8, 1311aec89f78SBastian Köcher .clkr = { 1312aec89f78SBastian Köcher .enable_reg = 0x08c8, 1313aec89f78SBastian Köcher .enable_mask = BIT(0), 13140519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1315aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 13160519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1317aec89f78SBastian Köcher .num_parents = 1, 1318aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1319aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1320aec89f78SBastian Köcher }, 1321aec89f78SBastian Köcher }, 1322aec89f78SBastian Köcher }; 1323aec89f78SBastian Köcher 1324aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1325aec89f78SBastian Köcher .halt_reg = 0x08c4, 1326aec89f78SBastian Köcher .clkr = { 1327aec89f78SBastian Köcher .enable_reg = 0x08c4, 1328aec89f78SBastian Köcher .enable_mask = BIT(0), 13290519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1330aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 13310519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1332aec89f78SBastian Köcher .num_parents = 1, 1333aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1334aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1335aec89f78SBastian Köcher }, 1336aec89f78SBastian Köcher }, 1337aec89f78SBastian Köcher }; 1338aec89f78SBastian Köcher 1339aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1340aec89f78SBastian Köcher .halt_reg = 0x0684, 1341aec89f78SBastian Köcher .clkr = { 1342aec89f78SBastian Köcher .enable_reg = 0x0684, 1343aec89f78SBastian Köcher .enable_mask = BIT(0), 13440519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1345aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 13460519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1347aec89f78SBastian Köcher .num_parents = 1, 1348aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1349aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1350aec89f78SBastian Köcher }, 1351aec89f78SBastian Köcher }, 1352aec89f78SBastian Köcher }; 1353aec89f78SBastian Köcher 1354aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1355aec89f78SBastian Köcher .halt_reg = 0x0704, 1356aec89f78SBastian Köcher .clkr = { 1357aec89f78SBastian Köcher .enable_reg = 0x0704, 1358aec89f78SBastian Köcher .enable_mask = BIT(0), 13590519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1360aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 13610519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1362aec89f78SBastian Köcher .num_parents = 1, 1363aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1364aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1365aec89f78SBastian Köcher }, 1366aec89f78SBastian Köcher }, 1367aec89f78SBastian Köcher }; 1368aec89f78SBastian Köcher 1369aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1370aec89f78SBastian Köcher .halt_reg = 0x0784, 1371aec89f78SBastian Köcher .clkr = { 1372aec89f78SBastian Köcher .enable_reg = 0x0784, 1373aec89f78SBastian Köcher .enable_mask = BIT(0), 13740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1375aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 13760519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1377aec89f78SBastian Köcher .num_parents = 1, 1378aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1379aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1380aec89f78SBastian Köcher }, 1381aec89f78SBastian Köcher }, 1382aec89f78SBastian Köcher }; 1383aec89f78SBastian Köcher 1384aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1385aec89f78SBastian Köcher .halt_reg = 0x0804, 1386aec89f78SBastian Köcher .clkr = { 1387aec89f78SBastian Köcher .enable_reg = 0x0804, 1388aec89f78SBastian Köcher .enable_mask = BIT(0), 13890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1390aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 13910519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1392aec89f78SBastian Köcher .num_parents = 1, 1393aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1394aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1395aec89f78SBastian Köcher }, 1396aec89f78SBastian Köcher }, 1397aec89f78SBastian Köcher }; 1398aec89f78SBastian Köcher 1399aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1400aec89f78SBastian Köcher .halt_reg = 0x0884, 1401aec89f78SBastian Köcher .clkr = { 1402aec89f78SBastian Köcher .enable_reg = 0x0884, 1403aec89f78SBastian Köcher .enable_mask = BIT(0), 14040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1405aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 14060519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1407aec89f78SBastian Köcher .num_parents = 1, 1408aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1409aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1410aec89f78SBastian Köcher }, 1411aec89f78SBastian Köcher }, 1412aec89f78SBastian Köcher }; 1413aec89f78SBastian Köcher 1414aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1415aec89f78SBastian Köcher .halt_reg = 0x0904, 1416aec89f78SBastian Köcher .clkr = { 1417aec89f78SBastian Köcher .enable_reg = 0x0904, 1418aec89f78SBastian Köcher .enable_mask = BIT(0), 14190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1420aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 14210519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1422aec89f78SBastian Köcher .num_parents = 1, 1423aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1424aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1425aec89f78SBastian Köcher }, 1426aec89f78SBastian Köcher }, 1427aec89f78SBastian Köcher }; 1428aec89f78SBastian Köcher 1429aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1430aec89f78SBastian Köcher .halt_reg = 0x0944, 1431aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1432aec89f78SBastian Köcher .clkr = { 1433aec89f78SBastian Köcher .enable_reg = 0x1484, 1434aec89f78SBastian Köcher .enable_mask = BIT(15), 14350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1436aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 143774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 143874a33facSKonrad Dybcio .num_parents = 1, 1439aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1440aec89f78SBastian Köcher }, 1441aec89f78SBastian Köcher }, 1442aec89f78SBastian Köcher }; 1443aec89f78SBastian Köcher 1444aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1445aec89f78SBastian Köcher .halt_reg = 0x0988, 1446aec89f78SBastian Köcher .clkr = { 1447aec89f78SBastian Köcher .enable_reg = 0x0988, 1448aec89f78SBastian Köcher .enable_mask = BIT(0), 14490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1450aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 14510519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1452aec89f78SBastian Köcher .num_parents = 1, 1453aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1454aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1455aec89f78SBastian Köcher }, 1456aec89f78SBastian Köcher }, 1457aec89f78SBastian Köcher }; 1458aec89f78SBastian Köcher 1459aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1460aec89f78SBastian Köcher .halt_reg = 0x0984, 1461aec89f78SBastian Köcher .clkr = { 1462aec89f78SBastian Köcher .enable_reg = 0x0984, 1463aec89f78SBastian Köcher .enable_mask = BIT(0), 14640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1465aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 14660519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1467aec89f78SBastian Köcher .num_parents = 1, 1468aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1469aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1470aec89f78SBastian Köcher }, 1471aec89f78SBastian Köcher }, 1472aec89f78SBastian Köcher }; 1473aec89f78SBastian Köcher 1474aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1475aec89f78SBastian Köcher .halt_reg = 0x0a08, 1476aec89f78SBastian Köcher .clkr = { 1477aec89f78SBastian Köcher .enable_reg = 0x0a08, 1478aec89f78SBastian Köcher .enable_mask = BIT(0), 14790519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1480aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 14810519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1482aec89f78SBastian Köcher .num_parents = 1, 1483aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1484aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1485aec89f78SBastian Köcher }, 1486aec89f78SBastian Köcher }, 1487aec89f78SBastian Köcher }; 1488aec89f78SBastian Köcher 1489aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1490aec89f78SBastian Köcher .halt_reg = 0x0a04, 1491aec89f78SBastian Köcher .clkr = { 1492aec89f78SBastian Köcher .enable_reg = 0x0a04, 1493aec89f78SBastian Köcher .enable_mask = BIT(0), 14940519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1495aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 14960519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1497aec89f78SBastian Köcher .num_parents = 1, 1498aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1499aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1500aec89f78SBastian Köcher }, 1501aec89f78SBastian Köcher }, 1502aec89f78SBastian Köcher }; 1503aec89f78SBastian Köcher 1504aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1505aec89f78SBastian Köcher .halt_reg = 0x0a88, 1506aec89f78SBastian Köcher .clkr = { 1507aec89f78SBastian Köcher .enable_reg = 0x0a88, 1508aec89f78SBastian Köcher .enable_mask = BIT(0), 15090519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1510aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 15110519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1512aec89f78SBastian Köcher .num_parents = 1, 1513aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1514aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1515aec89f78SBastian Köcher }, 1516aec89f78SBastian Köcher }, 1517aec89f78SBastian Köcher }; 1518aec89f78SBastian Köcher 1519aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1520aec89f78SBastian Köcher .halt_reg = 0x0a84, 1521aec89f78SBastian Köcher .clkr = { 1522aec89f78SBastian Köcher .enable_reg = 0x0a84, 1523aec89f78SBastian Köcher .enable_mask = BIT(0), 15240519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1525aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 15260519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1527aec89f78SBastian Köcher .num_parents = 1, 1528aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1529aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1530aec89f78SBastian Köcher }, 1531aec89f78SBastian Köcher }, 1532aec89f78SBastian Köcher }; 1533aec89f78SBastian Köcher 1534aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1535aec89f78SBastian Köcher .halt_reg = 0x0b08, 1536aec89f78SBastian Köcher .clkr = { 1537aec89f78SBastian Köcher .enable_reg = 0x0b08, 1538aec89f78SBastian Köcher .enable_mask = BIT(0), 15390519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1540aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 15410519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1542aec89f78SBastian Köcher .num_parents = 1, 1543aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1544aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1545aec89f78SBastian Köcher }, 1546aec89f78SBastian Köcher }, 1547aec89f78SBastian Köcher }; 1548aec89f78SBastian Köcher 1549aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1550aec89f78SBastian Köcher .halt_reg = 0x0b04, 1551aec89f78SBastian Köcher .clkr = { 1552aec89f78SBastian Köcher .enable_reg = 0x0b04, 1553aec89f78SBastian Köcher .enable_mask = BIT(0), 15540519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1555aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 15560519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1557aec89f78SBastian Köcher .num_parents = 1, 1558aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1559aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1560aec89f78SBastian Köcher }, 1561aec89f78SBastian Köcher }, 1562aec89f78SBastian Köcher }; 1563aec89f78SBastian Köcher 1564aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1565aec89f78SBastian Köcher .halt_reg = 0x0b88, 1566aec89f78SBastian Köcher .clkr = { 1567aec89f78SBastian Köcher .enable_reg = 0x0b88, 1568aec89f78SBastian Köcher .enable_mask = BIT(0), 15690519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1570aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 15710519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1572aec89f78SBastian Köcher .num_parents = 1, 1573aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1574aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1575aec89f78SBastian Köcher }, 1576aec89f78SBastian Köcher }, 1577aec89f78SBastian Köcher }; 1578aec89f78SBastian Köcher 1579aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1580aec89f78SBastian Köcher .halt_reg = 0x0b84, 1581aec89f78SBastian Köcher .clkr = { 1582aec89f78SBastian Köcher .enable_reg = 0x0b84, 1583aec89f78SBastian Köcher .enable_mask = BIT(0), 15840519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1585aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 15860519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1587aec89f78SBastian Köcher .num_parents = 1, 1588aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1589aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1590aec89f78SBastian Köcher }, 1591aec89f78SBastian Köcher }, 1592aec89f78SBastian Köcher }; 1593aec89f78SBastian Köcher 1594aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1595aec89f78SBastian Köcher .halt_reg = 0x0c08, 1596aec89f78SBastian Köcher .clkr = { 1597aec89f78SBastian Köcher .enable_reg = 0x0c08, 1598aec89f78SBastian Köcher .enable_mask = BIT(0), 15990519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1600aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 16010519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1602aec89f78SBastian Köcher .num_parents = 1, 1603aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1604aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1605aec89f78SBastian Köcher }, 1606aec89f78SBastian Köcher }, 1607aec89f78SBastian Köcher }; 1608aec89f78SBastian Köcher 1609aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1610aec89f78SBastian Köcher .halt_reg = 0x0c04, 1611aec89f78SBastian Köcher .clkr = { 1612aec89f78SBastian Köcher .enable_reg = 0x0c04, 1613aec89f78SBastian Köcher .enable_mask = BIT(0), 16140519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1615aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 16160519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1617aec89f78SBastian Köcher .num_parents = 1, 1618aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1619aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1620aec89f78SBastian Köcher }, 1621aec89f78SBastian Köcher }, 1622aec89f78SBastian Köcher }; 1623aec89f78SBastian Köcher 1624aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1625aec89f78SBastian Köcher .halt_reg = 0x09c4, 1626aec89f78SBastian Köcher .clkr = { 1627aec89f78SBastian Köcher .enable_reg = 0x09c4, 1628aec89f78SBastian Köcher .enable_mask = BIT(0), 16290519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1630aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 16310519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1632aec89f78SBastian Köcher .num_parents = 1, 1633aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1634aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1635aec89f78SBastian Köcher }, 1636aec89f78SBastian Köcher }, 1637aec89f78SBastian Köcher }; 1638aec89f78SBastian Köcher 1639aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1640aec89f78SBastian Köcher .halt_reg = 0x0a44, 1641aec89f78SBastian Köcher .clkr = { 1642aec89f78SBastian Köcher .enable_reg = 0x0a44, 1643aec89f78SBastian Köcher .enable_mask = BIT(0), 16440519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1645aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 16460519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1647aec89f78SBastian Köcher .num_parents = 1, 1648aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1649aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1650aec89f78SBastian Köcher }, 1651aec89f78SBastian Köcher }, 1652aec89f78SBastian Köcher }; 1653aec89f78SBastian Köcher 1654aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1655aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1656aec89f78SBastian Köcher .clkr = { 1657aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1658aec89f78SBastian Köcher .enable_mask = BIT(0), 16590519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1660aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 16610519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1662aec89f78SBastian Köcher .num_parents = 1, 1663aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1664aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1665aec89f78SBastian Köcher }, 1666aec89f78SBastian Köcher }, 1667aec89f78SBastian Köcher }; 1668aec89f78SBastian Köcher 1669aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1670aec89f78SBastian Köcher .halt_reg = 0x0b44, 1671aec89f78SBastian Köcher .clkr = { 1672aec89f78SBastian Köcher .enable_reg = 0x0b44, 1673aec89f78SBastian Köcher .enable_mask = BIT(0), 16740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1675aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 16760519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1677aec89f78SBastian Köcher .num_parents = 1, 1678aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1679aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1680aec89f78SBastian Köcher }, 1681aec89f78SBastian Köcher }, 1682aec89f78SBastian Köcher }; 1683aec89f78SBastian Köcher 1684aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1685aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1686aec89f78SBastian Köcher .clkr = { 1687aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1688aec89f78SBastian Köcher .enable_mask = BIT(0), 16890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1690aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 16910519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1692aec89f78SBastian Köcher .num_parents = 1, 1693aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1694aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1695aec89f78SBastian Köcher }, 1696aec89f78SBastian Köcher }, 1697aec89f78SBastian Köcher }; 1698aec89f78SBastian Köcher 1699aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1700aec89f78SBastian Köcher .halt_reg = 0x0c44, 1701aec89f78SBastian Köcher .clkr = { 1702aec89f78SBastian Köcher .enable_reg = 0x0c44, 1703aec89f78SBastian Köcher .enable_mask = BIT(0), 17040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1705aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 17060519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1707aec89f78SBastian Köcher .num_parents = 1, 1708aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1709aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1710aec89f78SBastian Köcher }, 1711aec89f78SBastian Köcher }, 1712aec89f78SBastian Köcher }; 1713aec89f78SBastian Köcher 1714aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1715aec89f78SBastian Köcher .halt_reg = 0x1900, 1716aec89f78SBastian Köcher .clkr = { 1717aec89f78SBastian Köcher .enable_reg = 0x1900, 1718aec89f78SBastian Köcher .enable_mask = BIT(0), 17190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1720aec89f78SBastian Köcher .name = "gcc_gp1_clk", 17210519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1722aec89f78SBastian Köcher .num_parents = 1, 1723aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1724aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1725aec89f78SBastian Köcher }, 1726aec89f78SBastian Köcher }, 1727aec89f78SBastian Köcher }; 1728aec89f78SBastian Köcher 1729aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1730aec89f78SBastian Köcher .halt_reg = 0x1940, 1731aec89f78SBastian Köcher .clkr = { 1732aec89f78SBastian Köcher .enable_reg = 0x1940, 1733aec89f78SBastian Köcher .enable_mask = BIT(0), 17340519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1735aec89f78SBastian Köcher .name = "gcc_gp2_clk", 17360519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1737aec89f78SBastian Köcher .num_parents = 1, 1738aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1739aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1740aec89f78SBastian Köcher }, 1741aec89f78SBastian Köcher }, 1742aec89f78SBastian Köcher }; 1743aec89f78SBastian Köcher 1744aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1745aec89f78SBastian Köcher .halt_reg = 0x1980, 1746aec89f78SBastian Köcher .clkr = { 1747aec89f78SBastian Köcher .enable_reg = 0x1980, 1748aec89f78SBastian Köcher .enable_mask = BIT(0), 17490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1750aec89f78SBastian Köcher .name = "gcc_gp3_clk", 17510519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1752aec89f78SBastian Köcher .num_parents = 1, 1753aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1754aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1755aec89f78SBastian Köcher }, 1756aec89f78SBastian Köcher }, 1757aec89f78SBastian Köcher }; 1758aec89f78SBastian Köcher 17598c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 17608c18b41bSKonrad Dybcio .halt_reg = 0x0280, 17618c18b41bSKonrad Dybcio .clkr = { 17628c18b41bSKonrad Dybcio .enable_reg = 0x0280, 17638c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17658c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 176674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 176774a33facSKonrad Dybcio .num_parents = 1, 17688c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17698c18b41bSKonrad Dybcio }, 17708c18b41bSKonrad Dybcio }, 17718c18b41bSKonrad Dybcio }; 17728c18b41bSKonrad Dybcio 17738c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 17748c18b41bSKonrad Dybcio .halt_reg = 0x0284, 17758c18b41bSKonrad Dybcio .clkr = { 17768c18b41bSKonrad Dybcio .enable_reg = 0x0284, 17778c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17780519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17798c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 178074a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 178174a33facSKonrad Dybcio .num_parents = 1, 17828c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17838c18b41bSKonrad Dybcio }, 17848c18b41bSKonrad Dybcio }, 17858c18b41bSKonrad Dybcio }; 17868c18b41bSKonrad Dybcio 1787aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1788aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1789aec89f78SBastian Köcher .clkr = { 1790aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1791aec89f78SBastian Köcher .enable_mask = BIT(0), 17920519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1793aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 17940519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1795aec89f78SBastian Köcher .num_parents = 1, 1796aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1797aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1798aec89f78SBastian Köcher }, 1799aec89f78SBastian Köcher }, 1800aec89f78SBastian Köcher }; 1801aec89f78SBastian Köcher 18028c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 18038c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 18048c18b41bSKonrad Dybcio .clkr = { 18058c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 18068c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18070519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18088c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 180974a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 181074a33facSKonrad Dybcio .num_parents = 1, 181174a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18128c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18138c18b41bSKonrad Dybcio }, 18148c18b41bSKonrad Dybcio }, 18158c18b41bSKonrad Dybcio }; 18168c18b41bSKonrad Dybcio 18178c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 18188c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 18198c18b41bSKonrad Dybcio .clkr = { 18208c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 18218c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18220519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18238c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 182474a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 182574a33facSKonrad Dybcio .num_parents = 1, 182674a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18278c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18288c18b41bSKonrad Dybcio }, 18298c18b41bSKonrad Dybcio }, 18308c18b41bSKonrad Dybcio }; 18318c18b41bSKonrad Dybcio 1832aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1833aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1834aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1835aec89f78SBastian Köcher .clkr = { 1836aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1837aec89f78SBastian Köcher .enable_mask = BIT(0), 18380519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1839aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 18400519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1841aec89f78SBastian Köcher .num_parents = 1, 1842aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1843aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1844aec89f78SBastian Köcher }, 1845aec89f78SBastian Köcher }, 1846aec89f78SBastian Köcher }; 1847aec89f78SBastian Köcher 18488c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 18498c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 18508c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 18518c18b41bSKonrad Dybcio .clkr = { 18528c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 18538c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18540519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18558c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 185674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 185774a33facSKonrad Dybcio .num_parents = 1, 185874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18598c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18608c18b41bSKonrad Dybcio }, 18618c18b41bSKonrad Dybcio }, 18628c18b41bSKonrad Dybcio }; 18638c18b41bSKonrad Dybcio 1864aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1865aec89f78SBastian Köcher .halt_reg = 0x1b54, 1866aec89f78SBastian Köcher .clkr = { 1867aec89f78SBastian Köcher .enable_reg = 0x1b54, 1868aec89f78SBastian Köcher .enable_mask = BIT(0), 18690519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1870aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 18710519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1872aec89f78SBastian Köcher .num_parents = 1, 1873aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1874aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1875aec89f78SBastian Köcher }, 1876aec89f78SBastian Köcher }, 1877aec89f78SBastian Köcher }; 1878aec89f78SBastian Köcher 18798c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 18808c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 18818c18b41bSKonrad Dybcio .clkr = { 18828c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 18838c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18840519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18858c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 188674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 188774a33facSKonrad Dybcio .num_parents = 1, 188874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18898c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18908c18b41bSKonrad Dybcio }, 18918c18b41bSKonrad Dybcio }, 18928c18b41bSKonrad Dybcio }; 18938c18b41bSKonrad Dybcio 18948c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 18958c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 18968c18b41bSKonrad Dybcio .clkr = { 18978c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 18988c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18990519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19008c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 190174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 190274a33facSKonrad Dybcio .num_parents = 1, 190374a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19048c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19058c18b41bSKonrad Dybcio }, 19068c18b41bSKonrad Dybcio }, 19078c18b41bSKonrad Dybcio }; 19088c18b41bSKonrad Dybcio 1909aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1910aec89f78SBastian Köcher .halt_reg = 0x1b58, 1911aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1912aec89f78SBastian Köcher .clkr = { 1913aec89f78SBastian Köcher .enable_reg = 0x1b58, 1914aec89f78SBastian Köcher .enable_mask = BIT(0), 19150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1916aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 19170519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1918aec89f78SBastian Köcher .num_parents = 1, 1919aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1920aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1921aec89f78SBastian Köcher }, 1922aec89f78SBastian Köcher }, 1923aec89f78SBastian Köcher }; 1924aec89f78SBastian Köcher 19258c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 19268c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 19278c18b41bSKonrad Dybcio .clkr = { 19288c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 19298c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19318c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 193274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 193374a33facSKonrad Dybcio .num_parents = 1, 193474a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19358c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19368c18b41bSKonrad Dybcio }, 19378c18b41bSKonrad Dybcio }, 19388c18b41bSKonrad Dybcio }; 19398c18b41bSKonrad Dybcio 1940aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1941aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1942aec89f78SBastian Köcher .clkr = { 1943aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1944aec89f78SBastian Köcher .enable_mask = BIT(0), 19450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1946aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 19470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1948aec89f78SBastian Köcher .num_parents = 1, 1949aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1950aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1951aec89f78SBastian Köcher }, 1952aec89f78SBastian Köcher }, 1953aec89f78SBastian Köcher }; 1954aec89f78SBastian Köcher 19558c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 19568c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 19578c18b41bSKonrad Dybcio .clkr = { 19588c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 19598c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19618c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 196274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 196374a33facSKonrad Dybcio .num_parents = 1, 19648c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19658c18b41bSKonrad Dybcio }, 19668c18b41bSKonrad Dybcio }, 19678c18b41bSKonrad Dybcio }; 19688c18b41bSKonrad Dybcio 1969aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1970aec89f78SBastian Köcher .halt_reg = 0x04c4, 1971aec89f78SBastian Köcher .clkr = { 1972aec89f78SBastian Köcher .enable_reg = 0x04c4, 1973aec89f78SBastian Köcher .enable_mask = BIT(0), 19740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1975aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 19760519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1977aec89f78SBastian Köcher .num_parents = 1, 1978aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1979aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1980aec89f78SBastian Köcher }, 1981aec89f78SBastian Köcher }, 1982aec89f78SBastian Köcher }; 1983aec89f78SBastian Köcher 1984eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1985eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1986eaff16bcSJeremy McNicoll .clkr = { 1987eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1988eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 19890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1990eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 199174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1992eaff16bcSJeremy McNicoll .num_parents = 1, 199374a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 1994eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1995eaff16bcSJeremy McNicoll }, 1996eaff16bcSJeremy McNicoll }, 1997eaff16bcSJeremy McNicoll }; 1998eaff16bcSJeremy McNicoll 19998c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 20008c18b41bSKonrad Dybcio .halt_reg = 0x0508, 20018c18b41bSKonrad Dybcio .clkr = { 20028c18b41bSKonrad Dybcio .enable_reg = 0x0508, 20038c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20058c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 200674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20078c18b41bSKonrad Dybcio .num_parents = 1, 200874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20098c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20108c18b41bSKonrad Dybcio }, 20118c18b41bSKonrad Dybcio }, 20128c18b41bSKonrad Dybcio }; 20138c18b41bSKonrad Dybcio 2014aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 2015aec89f78SBastian Köcher .halt_reg = 0x0504, 2016aec89f78SBastian Köcher .clkr = { 2017aec89f78SBastian Köcher .enable_reg = 0x0504, 2018aec89f78SBastian Köcher .enable_mask = BIT(0), 20190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2020aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 20210519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw }, 2022aec89f78SBastian Köcher .num_parents = 1, 2023aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2024aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2025aec89f78SBastian Köcher }, 2026aec89f78SBastian Köcher }, 2027aec89f78SBastian Köcher }; 2028aec89f78SBastian Köcher 20298c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = { 20308c18b41bSKonrad Dybcio .halt_reg = 0x0548, 20318c18b41bSKonrad Dybcio .clkr = { 20328c18b41bSKonrad Dybcio .enable_reg = 0x0548, 20338c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20340519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20358c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 203674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20378c18b41bSKonrad Dybcio .num_parents = 1, 203874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20398c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20408c18b41bSKonrad Dybcio }, 20418c18b41bSKonrad Dybcio }, 20428c18b41bSKonrad Dybcio }; 20438c18b41bSKonrad Dybcio 2044aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 2045aec89f78SBastian Köcher .halt_reg = 0x0544, 2046aec89f78SBastian Köcher .clkr = { 2047aec89f78SBastian Köcher .enable_reg = 0x0544, 2048aec89f78SBastian Köcher .enable_mask = BIT(0), 20490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2050aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 20510519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 2052aec89f78SBastian Köcher .num_parents = 1, 2053aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2054aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2055aec89f78SBastian Köcher }, 2056aec89f78SBastian Köcher }, 2057aec89f78SBastian Köcher }; 2058aec89f78SBastian Köcher 20598c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = { 20608c18b41bSKonrad Dybcio .halt_reg = 0x0588, 20618c18b41bSKonrad Dybcio .clkr = { 20628c18b41bSKonrad Dybcio .enable_reg = 0x0588, 20638c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20658c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 206674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20678c18b41bSKonrad Dybcio .num_parents = 1, 206874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20698c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20708c18b41bSKonrad Dybcio }, 20718c18b41bSKonrad Dybcio }, 20728c18b41bSKonrad Dybcio }; 20738c18b41bSKonrad Dybcio 2074aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 2075aec89f78SBastian Köcher .halt_reg = 0x0584, 2076aec89f78SBastian Köcher .clkr = { 2077aec89f78SBastian Köcher .enable_reg = 0x0584, 2078aec89f78SBastian Köcher .enable_mask = BIT(0), 20790519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2080aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 20810519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 2082aec89f78SBastian Köcher .num_parents = 1, 2083aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2084aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2085aec89f78SBastian Köcher }, 2086aec89f78SBastian Köcher }, 2087aec89f78SBastian Köcher }; 2088aec89f78SBastian Köcher 2089aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2090aec89f78SBastian Köcher .halt_reg = 0x1d7c, 2091aec89f78SBastian Köcher .clkr = { 2092aec89f78SBastian Köcher .enable_reg = 0x1d7c, 2093aec89f78SBastian Köcher .enable_mask = BIT(0), 20940519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2095aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 20960519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2097aec89f78SBastian Köcher .num_parents = 1, 2098aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2099aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2100aec89f78SBastian Köcher }, 2101aec89f78SBastian Köcher }, 2102aec89f78SBastian Köcher }; 2103aec89f78SBastian Köcher 2104aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2105aec89f78SBastian Köcher .halt_reg = 0x03fc, 2106aec89f78SBastian Köcher .clkr = { 2107aec89f78SBastian Köcher .enable_reg = 0x03fc, 2108aec89f78SBastian Köcher .enable_mask = BIT(0), 21090519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2110aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 21110519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2112aec89f78SBastian Köcher .num_parents = 1, 2113aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2114aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2115aec89f78SBastian Köcher }, 2116aec89f78SBastian Köcher }, 2117aec89f78SBastian Köcher }; 2118aec89f78SBastian Köcher 21198c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 21208c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 21218c18b41bSKonrad Dybcio .clkr = { 21228c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 21238c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21240519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21258c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 212674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 212774a33facSKonrad Dybcio .num_parents = 1, 21288c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21298c18b41bSKonrad Dybcio }, 21308c18b41bSKonrad Dybcio }, 21318c18b41bSKonrad Dybcio }; 21328c18b41bSKonrad Dybcio 2133aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 2134aec89f78SBastian Köcher .halt_reg = 0x0d88, 2135aec89f78SBastian Köcher .clkr = { 2136aec89f78SBastian Köcher .enable_reg = 0x0d88, 2137aec89f78SBastian Köcher .enable_mask = BIT(0), 21380519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2139aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 21400519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2141aec89f78SBastian Köcher .num_parents = 1, 2142aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2143aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2144aec89f78SBastian Köcher }, 2145aec89f78SBastian Köcher }, 2146aec89f78SBastian Köcher }; 2147aec89f78SBastian Köcher 21488c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 21498c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 21508c18b41bSKonrad Dybcio .clkr = { 21518c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 21528c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21530519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21548c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 215574a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 215674a33facSKonrad Dybcio .num_parents = 1, 21578c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21588c18b41bSKonrad Dybcio }, 21598c18b41bSKonrad Dybcio }, 21608c18b41bSKonrad Dybcio }; 21618c18b41bSKonrad Dybcio 2162aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2163aec89f78SBastian Köcher .halt_reg = 0x1d48, 2164aec89f78SBastian Köcher .clkr = { 2165aec89f78SBastian Köcher .enable_reg = 0x1d48, 2166aec89f78SBastian Köcher .enable_mask = BIT(0), 21670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2168aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 21690519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2170aec89f78SBastian Köcher .num_parents = 1, 2171aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2172aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2173aec89f78SBastian Köcher }, 2174aec89f78SBastian Köcher }, 2175aec89f78SBastian Köcher }; 2176aec89f78SBastian Köcher 2177aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2178aec89f78SBastian Köcher .halt_reg = 0x1d54, 2179aec89f78SBastian Köcher .clkr = { 2180aec89f78SBastian Köcher .enable_reg = 0x1d54, 2181aec89f78SBastian Köcher .enable_mask = BIT(0), 21820519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2183aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 21840519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2185aec89f78SBastian Köcher .num_parents = 1, 2186aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2187aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2188aec89f78SBastian Köcher }, 2189aec89f78SBastian Köcher }, 2190aec89f78SBastian Köcher }; 2191aec89f78SBastian Köcher 21928c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 21938c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 21948c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21958c18b41bSKonrad Dybcio .clkr = { 21968c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 21978c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21980519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21998c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 220074a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 220174a33facSKonrad Dybcio .num_parents = 1, 22028c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22038c18b41bSKonrad Dybcio }, 22048c18b41bSKonrad Dybcio }, 22058c18b41bSKonrad Dybcio }; 22068c18b41bSKonrad Dybcio 22078c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 22088c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 22098c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22108c18b41bSKonrad Dybcio .clkr = { 22118c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 22128c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22130519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22148c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 221574a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 221674a33facSKonrad Dybcio .num_parents = 1, 22178c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22188c18b41bSKonrad Dybcio }, 22198c18b41bSKonrad Dybcio }, 22208c18b41bSKonrad Dybcio }; 22218c18b41bSKonrad Dybcio 2222aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2223aec89f78SBastian Köcher .halt_reg = 0x1d50, 2224aec89f78SBastian Köcher .clkr = { 2225aec89f78SBastian Köcher .enable_reg = 0x1d50, 2226aec89f78SBastian Köcher .enable_mask = BIT(0), 22270519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2228aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 22290519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2230aec89f78SBastian Köcher .num_parents = 1, 2231aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2232aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2233aec89f78SBastian Köcher }, 2234aec89f78SBastian Köcher }, 2235aec89f78SBastian Köcher }; 2236aec89f78SBastian Köcher 22378c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 22388c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 22398c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22408c18b41bSKonrad Dybcio .clkr = { 22418c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 22428c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22430519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22448c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 224574a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 224674a33facSKonrad Dybcio .num_parents = 1, 22478c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22488c18b41bSKonrad Dybcio }, 22498c18b41bSKonrad Dybcio }, 22508c18b41bSKonrad Dybcio }; 22518c18b41bSKonrad Dybcio 22528c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 22538c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 22548c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22558c18b41bSKonrad Dybcio .clkr = { 22568c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 22578c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22580519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22598c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 226074a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 226174a33facSKonrad Dybcio .num_parents = 1, 22628c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22638c18b41bSKonrad Dybcio }, 22648c18b41bSKonrad Dybcio }, 22658c18b41bSKonrad Dybcio }; 22668c18b41bSKonrad Dybcio 22678c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 22688c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 22698c18b41bSKonrad Dybcio .clkr = { 22708c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 22718c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22720519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22738c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 22740519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22750519d1d0SKonrad Dybcio .fw_name = "sleep", 22760519d1d0SKonrad Dybcio .name = "sleep" 22770519d1d0SKonrad Dybcio }, 22780519d1d0SKonrad Dybcio .num_parents = 1, 22798c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22808c18b41bSKonrad Dybcio }, 22818c18b41bSKonrad Dybcio }, 22828c18b41bSKonrad Dybcio }; 22838c18b41bSKonrad Dybcio 2284aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2285aec89f78SBastian Köcher .halt_reg = 0x03c8, 2286aec89f78SBastian Köcher .clkr = { 2287aec89f78SBastian Köcher .enable_reg = 0x03c8, 2288aec89f78SBastian Köcher .enable_mask = BIT(0), 22890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2290aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 22910519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2292aec89f78SBastian Köcher .num_parents = 1, 2293aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2294aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2295aec89f78SBastian Köcher }, 2296aec89f78SBastian Köcher }, 2297aec89f78SBastian Köcher }; 2298aec89f78SBastian Köcher 2299aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2300aec89f78SBastian Köcher .halt_reg = 0x03d0, 2301aec89f78SBastian Köcher .clkr = { 2302aec89f78SBastian Köcher .enable_reg = 0x03d0, 2303aec89f78SBastian Köcher .enable_mask = BIT(0), 23040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2305aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 23060519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2307aec89f78SBastian Köcher .num_parents = 1, 2308aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2309aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2310aec89f78SBastian Köcher }, 2311aec89f78SBastian Köcher }, 2312aec89f78SBastian Köcher }; 2313aec89f78SBastian Köcher 23148c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 23158c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 23168c18b41bSKonrad Dybcio .clkr = { 23178c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 23188c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23208c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 23210519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 23220519d1d0SKonrad Dybcio .fw_name = "sleep", 23230519d1d0SKonrad Dybcio .name = "sleep" 23240519d1d0SKonrad Dybcio }, 23250519d1d0SKonrad Dybcio .num_parents = 1, 23268c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23278c18b41bSKonrad Dybcio }, 23288c18b41bSKonrad Dybcio }, 23298c18b41bSKonrad Dybcio }; 23308c18b41bSKonrad Dybcio 2331aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2332aec89f78SBastian Köcher .halt_reg = 0x1408, 2333aec89f78SBastian Köcher .clkr = { 2334aec89f78SBastian Köcher .enable_reg = 0x1408, 2335aec89f78SBastian Köcher .enable_mask = BIT(0), 23360519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2337aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 23380519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2339aec89f78SBastian Köcher .num_parents = 1, 2340aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2341aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2342aec89f78SBastian Köcher }, 2343aec89f78SBastian Köcher }, 2344aec89f78SBastian Köcher }; 2345aec89f78SBastian Köcher 2346b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = { 2347b8f415c6SKonrad Dybcio .halt_reg = 0x140c, 2348b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2349b8f415c6SKonrad Dybcio .clkr = { 2350b8f415c6SKonrad Dybcio .enable_reg = 0x140c, 2351b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2352b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2353b8f415c6SKonrad Dybcio .name = "gcc_usb3_phy_pipe_clk", 2354b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2355b8f415c6SKonrad Dybcio }, 2356b8f415c6SKonrad Dybcio }, 2357b8f415c6SKonrad Dybcio }; 2358b8f415c6SKonrad Dybcio 23598c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 23608c18b41bSKonrad Dybcio .halt_reg = 0x0488, 23618c18b41bSKonrad Dybcio .clkr = { 23628c18b41bSKonrad Dybcio .enable_reg = 0x0488, 23638c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23658c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 236674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 236774a33facSKonrad Dybcio .num_parents = 1, 23688c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23698c18b41bSKonrad Dybcio }, 23708c18b41bSKonrad Dybcio }, 23718c18b41bSKonrad Dybcio }; 23728c18b41bSKonrad Dybcio 2373aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2374aec89f78SBastian Köcher .halt_reg = 0x0484, 2375aec89f78SBastian Köcher .clkr = { 2376aec89f78SBastian Köcher .enable_reg = 0x0484, 2377aec89f78SBastian Köcher .enable_mask = BIT(0), 23780519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2379aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 23800519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2381aec89f78SBastian Köcher .num_parents = 1, 2382aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2383aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2384aec89f78SBastian Köcher }, 2385aec89f78SBastian Köcher }, 2386aec89f78SBastian Köcher }; 2387aec89f78SBastian Köcher 23888c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 23898c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 23908c18b41bSKonrad Dybcio .clkr = { 23918c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 23928c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23930519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23948c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 23958c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23968c18b41bSKonrad Dybcio }, 23978c18b41bSKonrad Dybcio }, 23988c18b41bSKonrad Dybcio }; 23998c18b41bSKonrad Dybcio 2400b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = { 2401b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2402b8f415c6SKonrad Dybcio .clkr = { 2403b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2404b8f415c6SKonrad Dybcio .enable_mask = BIT(26), 2405b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2406b8f415c6SKonrad Dybcio .name = "gpll0_out_mmsscc", 2407b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2408b8f415c6SKonrad Dybcio .num_parents = 1, 2409b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2410b8f415c6SKonrad Dybcio }, 2411b8f415c6SKonrad Dybcio }, 2412b8f415c6SKonrad Dybcio }; 2413b8f415c6SKonrad Dybcio 2414b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = { 2415b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2416b8f415c6SKonrad Dybcio .clkr = { 2417b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2418b8f415c6SKonrad Dybcio .enable_mask = BIT(27), 2419b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2420b8f415c6SKonrad Dybcio .name = "gpll0_out_msscc", 2421b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2422b8f415c6SKonrad Dybcio .num_parents = 1, 2423b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2424b8f415c6SKonrad Dybcio }, 2425b8f415c6SKonrad Dybcio }, 2426b8f415c6SKonrad Dybcio }; 2427b8f415c6SKonrad Dybcio 2428b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = { 2429b8f415c6SKonrad Dybcio .halt_reg = 0x1e00, 2430b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2431b8f415c6SKonrad Dybcio .clkr = { 2432b8f415c6SKonrad Dybcio .enable_reg = 0x1E00, 2433b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2434b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2435b8f415c6SKonrad Dybcio .name = "pcie_0_phy_ldo", 2436b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2437b8f415c6SKonrad Dybcio }, 2438b8f415c6SKonrad Dybcio }, 2439b8f415c6SKonrad Dybcio }; 2440b8f415c6SKonrad Dybcio 2441b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = { 2442b8f415c6SKonrad Dybcio .halt_reg = 0x1e04, 2443b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2444b8f415c6SKonrad Dybcio .clkr = { 2445b8f415c6SKonrad Dybcio .enable_reg = 0x1E04, 2446b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2447b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2448b8f415c6SKonrad Dybcio .name = "pcie_1_phy_ldo", 2449b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2450b8f415c6SKonrad Dybcio }, 2451b8f415c6SKonrad Dybcio }, 2452b8f415c6SKonrad Dybcio }; 2453b8f415c6SKonrad Dybcio 2454b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = { 2455b8f415c6SKonrad Dybcio .halt_reg = 0x1e0c, 2456b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2457b8f415c6SKonrad Dybcio .clkr = { 2458b8f415c6SKonrad Dybcio .enable_reg = 0x1E0C, 2459b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2460b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2461b8f415c6SKonrad Dybcio .name = "ufs_phy_ldo", 2462b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2463b8f415c6SKonrad Dybcio }, 2464b8f415c6SKonrad Dybcio }, 2465b8f415c6SKonrad Dybcio }; 2466b8f415c6SKonrad Dybcio 2467b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = { 2468b8f415c6SKonrad Dybcio .halt_reg = 0x1e08, 2469b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2470b8f415c6SKonrad Dybcio .clkr = { 2471b8f415c6SKonrad Dybcio .enable_reg = 0x1E08, 2472b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2473b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2474b8f415c6SKonrad Dybcio .name = "usb_ss_phy_ldo", 2475b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2476b8f415c6SKonrad Dybcio }, 2477b8f415c6SKonrad Dybcio }, 2478b8f415c6SKonrad Dybcio }; 2479b8f415c6SKonrad Dybcio 2480b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = { 2481b8f415c6SKonrad Dybcio .halt_reg = 0x0e04, 2482b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2483b8f415c6SKonrad Dybcio .hwcg_reg = 0x0e04, 2484b8f415c6SKonrad Dybcio .hwcg_bit = 1, 2485b8f415c6SKonrad Dybcio .clkr = { 2486b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2487b8f415c6SKonrad Dybcio .enable_mask = BIT(10), 2488b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2489b8f415c6SKonrad Dybcio .name = "gcc_boot_rom_ahb_clk", 2490b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 2491b8f415c6SKonrad Dybcio .num_parents = 1, 2492b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2493b8f415c6SKonrad Dybcio }, 2494b8f415c6SKonrad Dybcio }, 2495b8f415c6SKonrad Dybcio }; 2496b8f415c6SKonrad Dybcio 2497b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = { 2498b8f415c6SKonrad Dybcio .halt_reg = 0x0d04, 2499b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2500b8f415c6SKonrad Dybcio .clkr = { 2501b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2502b8f415c6SKonrad Dybcio .enable_mask = BIT(13), 2503b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2504b8f415c6SKonrad Dybcio .name = "gcc_prng_ahb_clk", 2505b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2506b8f415c6SKonrad Dybcio .num_parents = 1, 2507b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2508b8f415c6SKonrad Dybcio }, 2509b8f415c6SKonrad Dybcio }, 2510b8f415c6SKonrad Dybcio }; 2511b8f415c6SKonrad Dybcio 25128c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 25138c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 25148c18b41bSKonrad Dybcio .pd = { 25158c18b41bSKonrad Dybcio .name = "pcie_0", 25168c18b41bSKonrad Dybcio }, 25178c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25188c18b41bSKonrad Dybcio }; 25198c18b41bSKonrad Dybcio 25208c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 25218c18b41bSKonrad Dybcio .gdscr = 0x1b44, 25228c18b41bSKonrad Dybcio .pd = { 25238c18b41bSKonrad Dybcio .name = "pcie_1", 25248c18b41bSKonrad Dybcio }, 25258c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25268c18b41bSKonrad Dybcio }; 25278c18b41bSKonrad Dybcio 25288c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 25298c18b41bSKonrad Dybcio .gdscr = 0x3c4, 25308c18b41bSKonrad Dybcio .pd = { 25318c18b41bSKonrad Dybcio .name = "usb30", 25328c18b41bSKonrad Dybcio }, 25338c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25348c18b41bSKonrad Dybcio }; 25358c18b41bSKonrad Dybcio 25368c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 25378c18b41bSKonrad Dybcio .gdscr = 0x1d44, 25388c18b41bSKonrad Dybcio .pd = { 25398c18b41bSKonrad Dybcio .name = "ufs", 25408c18b41bSKonrad Dybcio }, 25418c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25428c18b41bSKonrad Dybcio }; 25438c18b41bSKonrad Dybcio 2544aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2545aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2546aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2547aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2548aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 254974a33facSKonrad Dybcio [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 255074a33facSKonrad Dybcio [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 255174a33facSKonrad Dybcio [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 2552aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2553aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2554aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2555aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2556aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2557aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2558aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2559aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2560aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2561aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2562aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2563aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2564aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2565aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2566aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2567aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2568aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2569aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2570aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2571aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2572aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2573aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2574aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2575aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2576aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2577aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2578aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2579aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2580aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2581aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2582aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2583aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2584aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2585aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2586aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2587aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2588aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2589aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2590aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2591aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2592aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2593aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2594aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2595aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2596aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2597aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2598aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2599aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2600aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2601aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2602aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2603aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2604aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2605aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2606aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2607aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2608aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2609aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2610aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2611aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2612aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2613aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2614aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2615aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2616aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2617aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2618aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2619aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2620aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2621aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2622aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2623aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2624aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2625aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2626aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2627aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2628aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2629aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2630aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2631aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2632aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2633aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2634aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2635aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2636aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2637aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2638aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2639aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2640aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2641aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2642aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2643aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2644aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2645aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2646aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 26478c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 26488c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2649aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 26508c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 26518c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2652aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 26538c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2654aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 26558c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 26568c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2657aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 26588c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2659aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 26608c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2661eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 26628c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 26638c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 26648c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 26658c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 26668c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 26678c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 26688c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2669aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2670aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 26718c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2672aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 26738c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2674aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2675aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 26768c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 26778c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2678aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 26798c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 26808c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 26818c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2682aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2683aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 26848c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2685aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2686b8f415c6SKonrad Dybcio [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr, 26878c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2688aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 26898c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2690b8f415c6SKonrad Dybcio [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr, 2691b8f415c6SKonrad Dybcio [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr, 2692b8f415c6SKonrad Dybcio [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr, 2693b8f415c6SKonrad Dybcio [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr, 2694b8f415c6SKonrad Dybcio [UFS_PHY_LDO] = &ufs_phy_ldo.clkr, 2695b8f415c6SKonrad Dybcio [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr, 2696b8f415c6SKonrad Dybcio [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2697b8f415c6SKonrad Dybcio [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 26988c18b41bSKonrad Dybcio }; 26998c18b41bSKonrad Dybcio 27008c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 270135bb1e6eSKonrad Dybcio /* This GDSC does not exist, but ABI has to remain intact */ 270235bb1e6eSKonrad Dybcio [PCIE_GDSC] = NULL, 27038c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 27048c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 27058c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 27068c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 27078c18b41bSKonrad Dybcio }; 27088c18b41bSKonrad Dybcio 27098c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 27108c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 27118c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 2712a888dc4cSKonrad Dybcio [MSS_RESET] = { 0x1680 }, 27138c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 27148c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 27158c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2716aec89f78SBastian Köcher }; 2717aec89f78SBastian Köcher 2718aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2719aec89f78SBastian Köcher .reg_bits = 32, 2720aec89f78SBastian Köcher .reg_stride = 4, 2721aec89f78SBastian Köcher .val_bits = 32, 2722aec89f78SBastian Köcher .max_register = 0x2000, 2723aec89f78SBastian Köcher .fast_io = true, 2724aec89f78SBastian Köcher }; 2725aec89f78SBastian Köcher 2726aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2727aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2728aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2729aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 27308c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 27318c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 27328c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 27338c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2734aec89f78SBastian Köcher }; 2735aec89f78SBastian Köcher 2736aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2737*c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8992" }, 2738*c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */ 2739aec89f78SBastian Köcher {} 2740aec89f78SBastian Köcher }; 2741aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2742aec89f78SBastian Köcher 2743aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2744aec89f78SBastian Köcher { 2745*c09b8023SKonrad Dybcio if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) { 2746*c09b8023SKonrad Dybcio /* MSM8992 features less clocks and some have different freq tables */ 2747*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL; 2748*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL; 2749*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL; 2750*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL; 2751*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL; 2752*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL; 2753*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL; 2754*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL; 2755*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL; 2756*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL; 2757*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL; 2758*c09b8023SKonrad Dybcio 2759*c09b8023SKonrad Dybcio sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992; 2760*c09b8023SKonrad Dybcio blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2761*c09b8023SKonrad Dybcio blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2762*c09b8023SKonrad Dybcio blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2763*c09b8023SKonrad Dybcio blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2764*c09b8023SKonrad Dybcio blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2765*c09b8023SKonrad Dybcio blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2766*c09b8023SKonrad Dybcio blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2767*c09b8023SKonrad Dybcio blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2768*c09b8023SKonrad Dybcio blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2769*c09b8023SKonrad Dybcio blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2770*c09b8023SKonrad Dybcio blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2771*c09b8023SKonrad Dybcio blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2772*c09b8023SKonrad Dybcio 2773*c09b8023SKonrad Dybcio /* 2774*c09b8023SKonrad Dybcio * Some 8992 boards might *possibly* use 2775*c09b8023SKonrad Dybcio * PCIe1 clocks and controller, but it's not 2776*c09b8023SKonrad Dybcio * standard and they should be disabled otherwise. 2777*c09b8023SKonrad Dybcio */ 2778*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL; 2779*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL; 2780*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL; 2781*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL; 2782*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL; 2783*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL; 2784*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL; 2785*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL; 2786*c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL; 2787*c09b8023SKonrad Dybcio } 2788*c09b8023SKonrad Dybcio 2789aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2790aec89f78SBastian Köcher } 2791aec89f78SBastian Köcher 2792aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2793aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2794aec89f78SBastian Köcher .driver = { 2795aec89f78SBastian Köcher .name = "gcc-msm8994", 2796aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2797aec89f78SBastian Köcher }, 2798aec89f78SBastian Köcher }; 2799aec89f78SBastian Köcher 2800aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2801aec89f78SBastian Köcher { 2802aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2803aec89f78SBastian Köcher } 2804aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2805aec89f78SBastian Köcher 2806aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2807aec89f78SBastian Köcher { 2808aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2809aec89f78SBastian Köcher } 2810aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2811aec89f78SBastian Köcher 2812aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2813aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2814aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2815