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 5d7a49c8dSVinod Koul #include <linux/clk-provider.h> 6aec89f78SBastian Köcher #include <linux/kernel.h> 7aec89f78SBastian Köcher #include <linux/init.h> 8aec89f78SBastian Köcher #include <linux/err.h> 9aec89f78SBastian Köcher #include <linux/ctype.h> 10aec89f78SBastian Köcher #include <linux/io.h> 11aec89f78SBastian Köcher #include <linux/of.h> 12c09b8023SKonrad Dybcio #include <linux/of_device.h> 13aec89f78SBastian Köcher #include <linux/platform_device.h> 14aec89f78SBastian Köcher #include <linux/module.h> 15aec89f78SBastian Köcher #include <linux/regmap.h> 16aec89f78SBastian Köcher 17aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h> 18aec89f78SBastian Köcher 19aec89f78SBastian Köcher #include "common.h" 20aec89f78SBastian Köcher #include "clk-regmap.h" 21aec89f78SBastian Köcher #include "clk-alpha-pll.h" 22aec89f78SBastian Köcher #include "clk-rcg.h" 23aec89f78SBastian Köcher #include "clk-branch.h" 24aec89f78SBastian Köcher #include "reset.h" 258c18b41bSKonrad Dybcio #include "gdsc.h" 26aec89f78SBastian Köcher 27aec89f78SBastian Köcher enum { 28aec89f78SBastian Köcher P_XO, 29aec89f78SBastian Köcher P_GPLL0, 30aec89f78SBastian Köcher P_GPLL4, 31aec89f78SBastian Köcher }; 32aec89f78SBastian Köcher 33aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = { 340519d1d0SKonrad Dybcio .offset = 0, 3528d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 36aec89f78SBastian Köcher .clkr = { 37aec89f78SBastian Köcher .enable_reg = 0x1480, 38aec89f78SBastian Köcher .enable_mask = BIT(0), 390519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 40aec89f78SBastian Köcher .name = "gpll0_early", 410519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 420519d1d0SKonrad Dybcio .fw_name = "xo", 430519d1d0SKonrad Dybcio }, 44aec89f78SBastian Köcher .num_parents = 1, 45aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 46aec89f78SBastian Köcher }, 47aec89f78SBastian Köcher }, 48aec89f78SBastian Köcher }; 49aec89f78SBastian Köcher 50aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = { 510519d1d0SKonrad Dybcio .offset = 0, 5228d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 530519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 54aec89f78SBastian Köcher .name = "gpll0", 55aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll0_early" }, 56aec89f78SBastian Köcher .num_parents = 1, 57aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 58aec89f78SBastian Köcher }, 59aec89f78SBastian Köcher }; 60aec89f78SBastian Köcher 61aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = { 62aec89f78SBastian Köcher .offset = 0x1dc0, 6328d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 64aec89f78SBastian Köcher .clkr = { 65aec89f78SBastian Köcher .enable_reg = 0x1480, 66aec89f78SBastian Köcher .enable_mask = BIT(4), 670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 68aec89f78SBastian Köcher .name = "gpll4_early", 690519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 700519d1d0SKonrad Dybcio .fw_name = "xo", 710519d1d0SKonrad Dybcio }, 72aec89f78SBastian Köcher .num_parents = 1, 73aec89f78SBastian Köcher .ops = &clk_alpha_pll_ops, 74aec89f78SBastian Köcher }, 75aec89f78SBastian Köcher }, 76aec89f78SBastian Köcher }; 77aec89f78SBastian Köcher 78aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = { 79aec89f78SBastian Köcher .offset = 0x1dc0, 80*71021db1SKonrad Dybcio .width = 4, 8128d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 820519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 83aec89f78SBastian Köcher .name = "gpll4", 84aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll4_early" }, 85aec89f78SBastian Köcher .num_parents = 1, 86aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 87aec89f78SBastian Köcher }, 88aec89f78SBastian Köcher }; 89aec89f78SBastian Köcher 900519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = { 910519d1d0SKonrad Dybcio { P_XO, 0 }, 920519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 930519d1d0SKonrad Dybcio }; 940519d1d0SKonrad Dybcio 950519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = { 960519d1d0SKonrad Dybcio { .fw_name = "xo" }, 970519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 980519d1d0SKonrad Dybcio }; 990519d1d0SKonrad Dybcio 1000519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 1010519d1d0SKonrad Dybcio { P_XO, 0 }, 1020519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 1030519d1d0SKonrad Dybcio { P_GPLL4, 5 }, 1040519d1d0SKonrad Dybcio }; 1050519d1d0SKonrad Dybcio 1060519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 1070519d1d0SKonrad Dybcio { .fw_name = "xo" }, 1080519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 1090519d1d0SKonrad Dybcio { .hw = &gpll4.clkr.hw }, 1100519d1d0SKonrad Dybcio }; 1110519d1d0SKonrad Dybcio 11274a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = { 11374a33facSKonrad Dybcio .cmd_rcgr = 0x0120, 11474a33facSKonrad Dybcio .hid_width = 5, 11574a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 11674a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 11774a33facSKonrad Dybcio .name = "system_noc_clk_src", 11874a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 11974a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 12074a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 12174a33facSKonrad Dybcio }, 12274a33facSKonrad Dybcio }; 12374a33facSKonrad Dybcio 12474a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = { 12574a33facSKonrad Dybcio .cmd_rcgr = 0x0150, 12674a33facSKonrad Dybcio .hid_width = 5, 12774a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 12874a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 12974a33facSKonrad Dybcio .name = "config_noc_clk_src", 13074a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 13174a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 13274a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 13374a33facSKonrad Dybcio }, 13474a33facSKonrad Dybcio }; 13574a33facSKonrad Dybcio 13674a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = { 13774a33facSKonrad Dybcio .cmd_rcgr = 0x0190, 13874a33facSKonrad Dybcio .hid_width = 5, 13974a33facSKonrad Dybcio .parent_map = gcc_xo_gpll0_map, 14074a33facSKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 14174a33facSKonrad Dybcio .name = "periph_noc_clk_src", 14274a33facSKonrad Dybcio .parent_data = gcc_xo_gpll0, 14374a33facSKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 14474a33facSKonrad Dybcio .ops = &clk_rcg2_ops, 14574a33facSKonrad Dybcio }, 14674a33facSKonrad Dybcio }; 14774a33facSKonrad Dybcio 148aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 149aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 150aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 151aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 152aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 153aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 154aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 155aec89f78SBastian Köcher { } 156aec89f78SBastian Köcher }; 157aec89f78SBastian Köcher 158aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 159aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 160aec89f78SBastian Köcher .mnd_width = 8, 161aec89f78SBastian Köcher .hid_width = 5, 162aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 163aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 1640519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 165aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 1660519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 167eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 168aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 169aec89f78SBastian Köcher }, 170aec89f78SBastian Köcher }; 171aec89f78SBastian Köcher 172aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 173aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 174aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 175aec89f78SBastian Köcher { } 176aec89f78SBastian Köcher }; 177aec89f78SBastian Köcher 178aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 179aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 180aec89f78SBastian Köcher .mnd_width = 8, 181aec89f78SBastian Köcher .hid_width = 5, 182aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 183aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 1840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 185aec89f78SBastian Köcher .name = "usb30_master_clk_src", 1860519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 187eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 188aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 189aec89f78SBastian Köcher }, 190aec89f78SBastian Köcher }; 191aec89f78SBastian Köcher 192aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 193aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 194aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 195aec89f78SBastian Köcher { } 196aec89f78SBastian Köcher }; 197aec89f78SBastian Köcher 198aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 199aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 200aec89f78SBastian Köcher .hid_width = 5, 201aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 202aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 204aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 2050519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 206eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 207aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 208aec89f78SBastian Köcher }, 209aec89f78SBastian Köcher }; 210aec89f78SBastian Köcher 21180863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = { 212aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 213aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 214aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 215aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 216aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 217aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 218aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 219aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 220aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 221aec89f78SBastian Köcher { } 222aec89f78SBastian Köcher }; 223aec89f78SBastian Köcher 224c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = { 225c09b8023SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 226c09b8023SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 227c09b8023SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 228c09b8023SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 229c09b8023SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 230c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 231c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 232c09b8023SKonrad Dybcio { } 233c09b8023SKonrad Dybcio }; 234c09b8023SKonrad Dybcio 235aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 236aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 237aec89f78SBastian Köcher .mnd_width = 8, 238aec89f78SBastian Köcher .hid_width = 5, 239aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 24080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 2410519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 242aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 2430519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 244eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 245aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 246aec89f78SBastian Köcher }, 247aec89f78SBastian Köcher }; 248aec89f78SBastian Köcher 249aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 250aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 251aec89f78SBastian Köcher .hid_width = 5, 252aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 253aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2540519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 255aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 2560519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 257eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 258aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 259aec89f78SBastian Köcher }, 260aec89f78SBastian Köcher }; 261aec89f78SBastian Köcher 26280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 26380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 26480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 26580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 26680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 26780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 26880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 26980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 27080863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 27180863521SKonrad Dybcio F(46150000, P_GPLL0, 13, 0, 0), 27280863521SKonrad Dybcio { } 27380863521SKonrad Dybcio }; 27480863521SKonrad Dybcio 275aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 276aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 277aec89f78SBastian Köcher .mnd_width = 8, 278aec89f78SBastian Köcher .hid_width = 5, 279aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 28080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 2810519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 282aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 2830519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 284eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 285aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 286aec89f78SBastian Köcher }, 287aec89f78SBastian Köcher }; 288aec89f78SBastian Köcher 289aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 290aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 291aec89f78SBastian Köcher .hid_width = 5, 292aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 293aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2940519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 295aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 2960519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 297eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 298aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 299aec89f78SBastian Köcher }, 300aec89f78SBastian Köcher }; 301aec89f78SBastian Köcher 30280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 30380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 30480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 30580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 30680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 30780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 30880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 30980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 31080863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 31180863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 31280863521SKonrad Dybcio { } 31380863521SKonrad Dybcio }; 31480863521SKonrad Dybcio 315aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 316aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 317aec89f78SBastian Köcher .mnd_width = 8, 318aec89f78SBastian Köcher .hid_width = 5, 319aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 32080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3210519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 322aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 3230519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 324eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 325aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 326aec89f78SBastian Köcher }, 327aec89f78SBastian Köcher }; 328aec89f78SBastian Köcher 329aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 330aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 331aec89f78SBastian Köcher .hid_width = 5, 332aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 333aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 335aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 3360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 337eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 338aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 339aec89f78SBastian Köcher }, 340aec89f78SBastian Köcher }; 341aec89f78SBastian Köcher 342aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 343aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 344aec89f78SBastian Köcher .mnd_width = 8, 345aec89f78SBastian Köcher .hid_width = 5, 346aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 34780863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3480519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 349aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 3500519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 351eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 352aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 353aec89f78SBastian Köcher }, 354aec89f78SBastian Köcher }; 355aec89f78SBastian Köcher 356aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 357aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 358aec89f78SBastian Köcher .hid_width = 5, 359aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 360aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 362aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 3630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 364eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 365aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 366aec89f78SBastian Köcher }, 367aec89f78SBastian Köcher }; 368aec89f78SBastian Köcher 36980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 37080863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 37180863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 37280863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 37380863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 37480863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 37580863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 37680863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 37780863521SKonrad Dybcio F(40000000, P_GPLL0, 15, 0, 0), 37880863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 37980863521SKonrad Dybcio { } 38080863521SKonrad Dybcio }; 38180863521SKonrad Dybcio 382aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 383aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 384aec89f78SBastian Köcher .mnd_width = 8, 385aec89f78SBastian Köcher .hid_width = 5, 386aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 38780863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 3880519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 389aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 3900519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 391eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 392aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 393aec89f78SBastian Köcher }, 394aec89f78SBastian Köcher }; 395aec89f78SBastian Köcher 396aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 397aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 398aec89f78SBastian Köcher .hid_width = 5, 399aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 400aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 4010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 402aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 4030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 404eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 405aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 406aec89f78SBastian Köcher }, 407aec89f78SBastian Köcher }; 408aec89f78SBastian Köcher 40980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 41080863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 41180863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 41280863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 41380863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 41480863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 41580863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 41680863521SKonrad Dybcio F(27906976, P_GPLL0, 1, 2, 43), 41780863521SKonrad Dybcio F(41380000, P_GPLL0, 15, 0, 0), 41880863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 41980863521SKonrad Dybcio { } 42080863521SKonrad Dybcio }; 42180863521SKonrad Dybcio 422aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 423aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 424aec89f78SBastian Köcher .mnd_width = 8, 425aec89f78SBastian Köcher .hid_width = 5, 426aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 42780863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 4280519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 429aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 4300519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 431eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 432aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 433aec89f78SBastian Köcher }, 434aec89f78SBastian Köcher }; 435aec89f78SBastian Köcher 436aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 437aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 438aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 439aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 440aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 441aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 442aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 443aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 444aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 445aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 446aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 447aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 448aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 449aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 450aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 451aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 452aec89f78SBastian Köcher { } 453aec89f78SBastian Köcher }; 454aec89f78SBastian Köcher 455aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 456aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 457aec89f78SBastian Köcher .mnd_width = 16, 458aec89f78SBastian Köcher .hid_width = 5, 459aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 460aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 462aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 4630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 464eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 465aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 466aec89f78SBastian Köcher }, 467aec89f78SBastian Köcher }; 468aec89f78SBastian Köcher 469aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 470aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 471aec89f78SBastian Köcher .mnd_width = 16, 472aec89f78SBastian Köcher .hid_width = 5, 473aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 474aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4750519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 476aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 4770519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 478eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 479aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 480aec89f78SBastian Köcher }, 481aec89f78SBastian Köcher }; 482aec89f78SBastian Köcher 483aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 484aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 485aec89f78SBastian Köcher .mnd_width = 16, 486aec89f78SBastian Köcher .hid_width = 5, 487aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 488aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4890519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 490aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 4910519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 492eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 493aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 494aec89f78SBastian Köcher }, 495aec89f78SBastian Köcher }; 496aec89f78SBastian Köcher 497aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 498aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 499aec89f78SBastian Köcher .mnd_width = 16, 500aec89f78SBastian Köcher .hid_width = 5, 501aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 502aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 504aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 5050519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 506eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 507aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 508aec89f78SBastian Köcher }, 509aec89f78SBastian Köcher }; 510aec89f78SBastian Köcher 511aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 512aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 513aec89f78SBastian Köcher .mnd_width = 16, 514aec89f78SBastian Köcher .hid_width = 5, 515aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 516aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5170519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 518aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 5190519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 520eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 521aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 522aec89f78SBastian Köcher }, 523aec89f78SBastian Köcher }; 524aec89f78SBastian Köcher 525aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 526aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 527aec89f78SBastian Köcher .mnd_width = 16, 528aec89f78SBastian Köcher .hid_width = 5, 529aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 530aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 5310519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 532aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 5330519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 534eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 535aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 536aec89f78SBastian Köcher }, 537aec89f78SBastian Köcher }; 538aec89f78SBastian Köcher 539aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 540aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 541aec89f78SBastian Köcher .hid_width = 5, 542aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 543aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5440519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 545aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 5460519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 547eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 548aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 549aec89f78SBastian Köcher }, 550aec89f78SBastian Köcher }; 551aec89f78SBastian Köcher 55280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 55380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 55480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 55580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 55680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 55780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 55880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 55980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 56080863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 56180863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 56280863521SKonrad Dybcio { } 56380863521SKonrad Dybcio }; 56480863521SKonrad Dybcio 565aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 566aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 567aec89f78SBastian Köcher .mnd_width = 8, 568aec89f78SBastian Köcher .hid_width = 5, 569aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 57080863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5710519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 572aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 5730519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 574eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 575aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 576aec89f78SBastian Köcher }, 577aec89f78SBastian Köcher }; 578aec89f78SBastian Köcher 579aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 580aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 581aec89f78SBastian Köcher .hid_width = 5, 582aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 583aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 585aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 5860519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 587eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 588aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 589aec89f78SBastian Köcher }, 590aec89f78SBastian Köcher }; 591aec89f78SBastian Köcher 592aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 593aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 594aec89f78SBastian Köcher .mnd_width = 8, 595aec89f78SBastian Köcher .hid_width = 5, 596aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 59780863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5980519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 599aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 6000519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 601eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 602aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 603aec89f78SBastian Köcher }, 604aec89f78SBastian Köcher }; 605aec89f78SBastian Köcher 60680863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 60780863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 60880863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 60980863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 61080863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 61180863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 61280863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 61380863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 61480863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 61580863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 61680863521SKonrad Dybcio { } 61780863521SKonrad Dybcio }; 61880863521SKonrad Dybcio 619aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 620aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 621aec89f78SBastian Köcher .hid_width = 5, 622aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 623aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 625aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 6260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 627eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 628aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 629aec89f78SBastian Köcher }, 630aec89f78SBastian Köcher }; 631aec89f78SBastian Köcher 632aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 633aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 634aec89f78SBastian Köcher .mnd_width = 8, 635aec89f78SBastian Köcher .hid_width = 5, 636aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 63780863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 639aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 6400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 641eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 642aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 643aec89f78SBastian Köcher }, 644aec89f78SBastian Köcher }; 645aec89f78SBastian Köcher 646aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 647aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 648aec89f78SBastian Köcher .hid_width = 5, 649aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 650aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6510519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 652aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 6530519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 654eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 655aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 656aec89f78SBastian Köcher }, 657aec89f78SBastian Köcher }; 658aec89f78SBastian Köcher 659aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 660aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 661aec89f78SBastian Köcher .mnd_width = 8, 662aec89f78SBastian Köcher .hid_width = 5, 663aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 66480863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6650519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 666aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 6670519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 668eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 669aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 670aec89f78SBastian Köcher }, 671aec89f78SBastian Köcher }; 672aec89f78SBastian Köcher 673aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 674aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 675aec89f78SBastian Köcher .hid_width = 5, 676aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 677aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6780519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 679aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 6800519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 681eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 682aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 683aec89f78SBastian Köcher }, 684aec89f78SBastian Köcher }; 685aec89f78SBastian Köcher 686aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 687aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 688aec89f78SBastian Köcher .mnd_width = 8, 689aec89f78SBastian Köcher .hid_width = 5, 690aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 69180863521SKonrad Dybcio /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 69280863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 6930519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 694aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 6950519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 696eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 697aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 698aec89f78SBastian Köcher }, 699aec89f78SBastian Köcher }; 700aec89f78SBastian Köcher 701aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 702aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 703aec89f78SBastian Köcher .hid_width = 5, 704aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 705aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 7060519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 707aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 7080519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 709eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 710aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 711aec89f78SBastian Köcher }, 712aec89f78SBastian Köcher }; 713aec89f78SBastian Köcher 71480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 71580863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 71680863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 71780863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 71880863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 71980863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 72080863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 72180863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 72280863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 72380863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 72480863521SKonrad Dybcio { } 72580863521SKonrad Dybcio }; 72680863521SKonrad Dybcio 727aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 728aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 729aec89f78SBastian Köcher .mnd_width = 8, 730aec89f78SBastian Köcher .hid_width = 5, 731aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 73280863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 7330519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 734aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 7350519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 736eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 737aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 738aec89f78SBastian Köcher }, 739aec89f78SBastian Köcher }; 740aec89f78SBastian Köcher 741aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 742aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 743aec89f78SBastian Köcher .mnd_width = 16, 744aec89f78SBastian Köcher .hid_width = 5, 745aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 746aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 748aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 7490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 750eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 751aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 752aec89f78SBastian Köcher }, 753aec89f78SBastian Köcher }; 754aec89f78SBastian Köcher 755aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 756aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 757aec89f78SBastian Köcher .mnd_width = 16, 758aec89f78SBastian Köcher .hid_width = 5, 759aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 760aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 762aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 7630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 764eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 765aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 766aec89f78SBastian Köcher }, 767aec89f78SBastian Köcher }; 768aec89f78SBastian Köcher 769aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 770aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 771aec89f78SBastian Köcher .mnd_width = 16, 772aec89f78SBastian Köcher .hid_width = 5, 773aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 774aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7750519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 776aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 7770519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 778eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 779aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 780aec89f78SBastian Köcher }, 781aec89f78SBastian Köcher }; 782aec89f78SBastian Köcher 783aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 784aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 785aec89f78SBastian Köcher .mnd_width = 16, 786aec89f78SBastian Köcher .hid_width = 5, 787aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 788aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7890519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 790aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 7910519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 792eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 793aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 794aec89f78SBastian Köcher }, 795aec89f78SBastian Köcher }; 796aec89f78SBastian Köcher 797aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 798aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 799aec89f78SBastian Köcher .mnd_width = 16, 800aec89f78SBastian Köcher .hid_width = 5, 801aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 802aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 8030519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 804aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 8050519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 806eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 807aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 808aec89f78SBastian Köcher }, 809aec89f78SBastian Köcher }; 810aec89f78SBastian Köcher 811aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 812aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 813aec89f78SBastian Köcher .mnd_width = 16, 814aec89f78SBastian Köcher .hid_width = 5, 815aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 816aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 8170519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 818aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 8190519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 820eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 821aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 822aec89f78SBastian Köcher }, 823aec89f78SBastian Köcher }; 824aec89f78SBastian Köcher 825aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 826aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 827aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 828aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 829aec89f78SBastian Köcher { } 830aec89f78SBastian Köcher }; 831aec89f78SBastian Köcher 832aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 833aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 834aec89f78SBastian Köcher .mnd_width = 8, 835aec89f78SBastian Köcher .hid_width = 5, 836aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 837aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 8380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 839aec89f78SBastian Köcher .name = "gp1_clk_src", 8400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 841eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 842aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 843aec89f78SBastian Köcher }, 844aec89f78SBastian Köcher }; 845aec89f78SBastian Köcher 846aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 847aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 848aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 849aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 850aec89f78SBastian Köcher { } 851aec89f78SBastian Köcher }; 852aec89f78SBastian Köcher 853aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 854aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 855aec89f78SBastian Köcher .mnd_width = 8, 856aec89f78SBastian Köcher .hid_width = 5, 857aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 858aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 8590519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 860aec89f78SBastian Köcher .name = "gp2_clk_src", 8610519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 862eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 863aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 864aec89f78SBastian Köcher }, 865aec89f78SBastian Köcher }; 866aec89f78SBastian Köcher 867aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 868aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 869aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 870aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 871aec89f78SBastian Köcher { } 872aec89f78SBastian Köcher }; 873aec89f78SBastian Köcher 874aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 875aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 876aec89f78SBastian Köcher .mnd_width = 8, 877aec89f78SBastian Köcher .hid_width = 5, 878aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 879aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 8800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 881aec89f78SBastian Köcher .name = "gp3_clk_src", 8820519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 883eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 884aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 885aec89f78SBastian Köcher }, 886aec89f78SBastian Köcher }; 887aec89f78SBastian Köcher 888aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 889aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 890aec89f78SBastian Köcher { } 891aec89f78SBastian Köcher }; 892aec89f78SBastian Köcher 893aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 894aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 895aec89f78SBastian Köcher .mnd_width = 8, 896aec89f78SBastian Köcher .hid_width = 5, 897aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 8980519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 899aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 9000519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9010519d1d0SKonrad Dybcio .fw_name = "xo", 9020519d1d0SKonrad Dybcio }, 903aec89f78SBastian Köcher .num_parents = 1, 904aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 905aec89f78SBastian Köcher }, 906aec89f78SBastian Köcher }; 907aec89f78SBastian Köcher 908aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 909aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 910aec89f78SBastian Köcher { } 911aec89f78SBastian Köcher }; 912aec89f78SBastian Köcher 913aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 914aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 915aec89f78SBastian Köcher .hid_width = 5, 916aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9170519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 918aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 9190519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9200519d1d0SKonrad Dybcio .fw_name = "xo", 9210519d1d0SKonrad Dybcio }, 922aec89f78SBastian Köcher .num_parents = 1, 923aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 924aec89f78SBastian Köcher }, 925aec89f78SBastian Köcher }; 926aec89f78SBastian Köcher 927aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 928aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 929aec89f78SBastian Köcher { } 930aec89f78SBastian Köcher }; 931aec89f78SBastian Köcher 932aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 933aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 934aec89f78SBastian Köcher .mnd_width = 8, 935aec89f78SBastian Köcher .hid_width = 5, 936aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 9370519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 938aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 9390519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9400519d1d0SKonrad Dybcio .fw_name = "xo", 9410519d1d0SKonrad Dybcio }, 942aec89f78SBastian Köcher .num_parents = 1, 943aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 944aec89f78SBastian Köcher }, 945aec89f78SBastian Köcher }; 946aec89f78SBastian Köcher 947aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 948aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 949aec89f78SBastian Köcher .hid_width = 5, 950aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9510519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 952aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 9530519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9540519d1d0SKonrad Dybcio .fw_name = "xo", 9550519d1d0SKonrad Dybcio }, 956aec89f78SBastian Köcher .num_parents = 1, 957aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 958aec89f78SBastian Köcher }, 959aec89f78SBastian Köcher }; 960aec89f78SBastian Köcher 961aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 962aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 963aec89f78SBastian Köcher { } 964aec89f78SBastian Köcher }; 965aec89f78SBastian Köcher 966aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 967aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 968aec89f78SBastian Köcher .hid_width = 5, 969aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 970aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 9710519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 972aec89f78SBastian Köcher .name = "pdm2_clk_src", 9730519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 974eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 975aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 976aec89f78SBastian Köcher }, 977aec89f78SBastian Köcher }; 978aec89f78SBastian Köcher 979aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 980aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 981aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 982aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 983aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 984aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 985aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 986aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 987aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 988aec89f78SBastian Köcher { } 989aec89f78SBastian Köcher }; 990aec89f78SBastian Köcher 991c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = { 992c09b8023SKonrad Dybcio F(144000, P_XO, 16, 3, 25), 993c09b8023SKonrad Dybcio F(400000, P_XO, 12, 1, 4), 994c09b8023SKonrad Dybcio F(20000000, P_GPLL0, 15, 1, 2), 995c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 996c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 997c09b8023SKonrad Dybcio F(100000000, P_GPLL0, 6, 0, 0), 998c09b8023SKonrad Dybcio F(172000000, P_GPLL4, 2, 0, 0), 999c09b8023SKonrad Dybcio F(344000000, P_GPLL4, 1, 0, 0), 1000c09b8023SKonrad Dybcio { } 1001c09b8023SKonrad Dybcio }; 1002c09b8023SKonrad Dybcio 1003aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 1004aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 1005aec89f78SBastian Köcher .mnd_width = 8, 1006aec89f78SBastian Köcher .hid_width = 5, 1007aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 1008aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 10090519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1010aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 10110519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 1012eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4), 10135f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1014aec89f78SBastian Köcher }, 1015aec89f78SBastian Köcher }; 1016aec89f78SBastian Köcher 1017aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 1018aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 1019aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 1020aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 1021aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 1022aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 1023aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 1024aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 1025aec89f78SBastian Köcher { } 1026aec89f78SBastian Köcher }; 1027aec89f78SBastian Köcher 1028aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 1029aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 1030aec89f78SBastian Köcher .mnd_width = 8, 1031aec89f78SBastian Köcher .hid_width = 5, 1032aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1033aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1035aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 10360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1037eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10385f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1039aec89f78SBastian Köcher }, 1040aec89f78SBastian Köcher }; 1041aec89f78SBastian Köcher 1042aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 1043aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 1044aec89f78SBastian Köcher .mnd_width = 8, 1045aec89f78SBastian Köcher .hid_width = 5, 1046aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1047aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10480519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1049aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 10500519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1051eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10525f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1053aec89f78SBastian Köcher }, 1054aec89f78SBastian Köcher }; 1055aec89f78SBastian Köcher 1056aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 1057aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 1058aec89f78SBastian Köcher .mnd_width = 8, 1059aec89f78SBastian Köcher .hid_width = 5, 1060aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1061aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10620519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1063aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 10640519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1065eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10665f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1067aec89f78SBastian Köcher }, 1068aec89f78SBastian Köcher }; 1069aec89f78SBastian Köcher 1070aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1071aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 1072aec89f78SBastian Köcher { } 1073aec89f78SBastian Köcher }; 1074aec89f78SBastian Köcher 1075aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 1076aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 1077aec89f78SBastian Köcher .mnd_width = 8, 1078aec89f78SBastian Köcher .hid_width = 5, 1079aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 10800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1081aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 10820519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10830519d1d0SKonrad Dybcio .fw_name = "xo", 10840519d1d0SKonrad Dybcio }, 1085aec89f78SBastian Köcher .num_parents = 1, 1086aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1087aec89f78SBastian Köcher }, 1088aec89f78SBastian Köcher }; 1089aec89f78SBastian Köcher 1090aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1091aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 1092aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 1093aec89f78SBastian Köcher { } 1094aec89f78SBastian Köcher }; 1095aec89f78SBastian Köcher 1096aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1097aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1098aec89f78SBastian Köcher .hid_width = 5, 1099aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1100aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 11010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1102aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 11030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1104eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 1105aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1106aec89f78SBastian Köcher }, 1107aec89f78SBastian Köcher }; 1108aec89f78SBastian Köcher 1109aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1110aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1111aec89f78SBastian Köcher { } 1112aec89f78SBastian Köcher }; 1113aec89f78SBastian Köcher 1114aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1115aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1116aec89f78SBastian Köcher .hid_width = 5, 1117aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 11180519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1119aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 11200519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 11210519d1d0SKonrad Dybcio .fw_name = "xo", 11220519d1d0SKonrad Dybcio }, 1123aec89f78SBastian Köcher .num_parents = 1, 1124aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1125aec89f78SBastian Köcher }, 1126aec89f78SBastian Köcher }; 1127aec89f78SBastian Köcher 1128aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1129aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1130aec89f78SBastian Köcher { } 1131aec89f78SBastian Köcher }; 1132aec89f78SBastian Köcher 1133aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1134aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1135aec89f78SBastian Köcher .hid_width = 5, 1136aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1137aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 11380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1139aec89f78SBastian Köcher .name = "usb_hs_system_clk_src", 11400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1141eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 1142aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1143aec89f78SBastian Köcher }, 1144aec89f78SBastian Köcher }; 1145aec89f78SBastian Köcher 1146aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = { 1147aec89f78SBastian Köcher .halt_reg = 0x05c4, 1148aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1149aec89f78SBastian Köcher .clkr = { 1150aec89f78SBastian Köcher .enable_reg = 0x1484, 1151aec89f78SBastian Köcher .enable_mask = BIT(17), 11520519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1153aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 115474a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 115574a33facSKonrad Dybcio .num_parents = 1, 1156aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1157aec89f78SBastian Köcher }, 1158aec89f78SBastian Köcher }, 1159aec89f78SBastian Köcher }; 1160aec89f78SBastian Köcher 1161aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1162aec89f78SBastian Köcher .halt_reg = 0x0648, 1163aec89f78SBastian Köcher .clkr = { 1164aec89f78SBastian Köcher .enable_reg = 0x0648, 1165aec89f78SBastian Köcher .enable_mask = BIT(0), 11660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1167aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 11680519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1169aec89f78SBastian Köcher .num_parents = 1, 1170aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1171aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1172aec89f78SBastian Köcher }, 1173aec89f78SBastian Köcher }, 1174aec89f78SBastian Köcher }; 1175aec89f78SBastian Köcher 1176aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1177aec89f78SBastian Köcher .halt_reg = 0x0644, 1178aec89f78SBastian Köcher .clkr = { 1179aec89f78SBastian Köcher .enable_reg = 0x0644, 1180aec89f78SBastian Köcher .enable_mask = BIT(0), 11810519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1182aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 11830519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1184aec89f78SBastian Köcher .num_parents = 1, 1185aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1186aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1187aec89f78SBastian Köcher }, 1188aec89f78SBastian Köcher }, 1189aec89f78SBastian Köcher }; 1190aec89f78SBastian Köcher 1191aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1192aec89f78SBastian Köcher .halt_reg = 0x06c8, 1193aec89f78SBastian Köcher .clkr = { 1194aec89f78SBastian Köcher .enable_reg = 0x06c8, 1195aec89f78SBastian Köcher .enable_mask = BIT(0), 11960519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1197aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 11980519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1199aec89f78SBastian Köcher .num_parents = 1, 1200aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1201aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1202aec89f78SBastian Köcher }, 1203aec89f78SBastian Köcher }, 1204aec89f78SBastian Köcher }; 1205aec89f78SBastian Köcher 1206aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1207aec89f78SBastian Köcher .halt_reg = 0x06c4, 1208aec89f78SBastian Köcher .clkr = { 1209aec89f78SBastian Köcher .enable_reg = 0x06c4, 1210aec89f78SBastian Köcher .enable_mask = BIT(0), 12110519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1212aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 12130519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1214aec89f78SBastian Köcher .num_parents = 1, 1215aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1216aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1217aec89f78SBastian Köcher }, 1218aec89f78SBastian Köcher }, 1219aec89f78SBastian Köcher }; 1220aec89f78SBastian Köcher 1221aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1222aec89f78SBastian Köcher .halt_reg = 0x0748, 1223aec89f78SBastian Köcher .clkr = { 1224aec89f78SBastian Köcher .enable_reg = 0x0748, 1225aec89f78SBastian Köcher .enable_mask = BIT(0), 12260519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1227aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 12280519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1229aec89f78SBastian Köcher .num_parents = 1, 1230aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1231aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1232aec89f78SBastian Köcher }, 1233aec89f78SBastian Köcher }, 1234aec89f78SBastian Köcher }; 1235aec89f78SBastian Köcher 1236aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1237aec89f78SBastian Köcher .halt_reg = 0x0744, 1238aec89f78SBastian Köcher .clkr = { 1239aec89f78SBastian Köcher .enable_reg = 0x0744, 1240aec89f78SBastian Köcher .enable_mask = BIT(0), 12410519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1242aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 12430519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1244aec89f78SBastian Köcher .num_parents = 1, 1245aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1246aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1247aec89f78SBastian Köcher }, 1248aec89f78SBastian Köcher }, 1249aec89f78SBastian Köcher }; 1250aec89f78SBastian Köcher 1251aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1252aec89f78SBastian Köcher .halt_reg = 0x07c8, 1253aec89f78SBastian Köcher .clkr = { 1254aec89f78SBastian Köcher .enable_reg = 0x07c8, 1255aec89f78SBastian Köcher .enable_mask = BIT(0), 12560519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1257aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 12580519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1259aec89f78SBastian Köcher .num_parents = 1, 1260aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1261aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1262aec89f78SBastian Köcher }, 1263aec89f78SBastian Köcher }, 1264aec89f78SBastian Köcher }; 1265aec89f78SBastian Köcher 1266aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1267aec89f78SBastian Köcher .halt_reg = 0x07c4, 1268aec89f78SBastian Köcher .clkr = { 1269aec89f78SBastian Köcher .enable_reg = 0x07c4, 1270aec89f78SBastian Köcher .enable_mask = BIT(0), 12710519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1272aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 12730519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1274aec89f78SBastian Köcher .num_parents = 1, 1275aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1276aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1277aec89f78SBastian Köcher }, 1278aec89f78SBastian Köcher }, 1279aec89f78SBastian Köcher }; 1280aec89f78SBastian Köcher 1281aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1282aec89f78SBastian Köcher .halt_reg = 0x0848, 1283aec89f78SBastian Köcher .clkr = { 1284aec89f78SBastian Köcher .enable_reg = 0x0848, 1285aec89f78SBastian Köcher .enable_mask = BIT(0), 12860519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1287aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 12880519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1289aec89f78SBastian Köcher .num_parents = 1, 1290aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1291aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1292aec89f78SBastian Köcher }, 1293aec89f78SBastian Köcher }, 1294aec89f78SBastian Köcher }; 1295aec89f78SBastian Köcher 1296aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1297aec89f78SBastian Köcher .halt_reg = 0x0844, 1298aec89f78SBastian Köcher .clkr = { 1299aec89f78SBastian Köcher .enable_reg = 0x0844, 1300aec89f78SBastian Köcher .enable_mask = BIT(0), 13010519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1302aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 13030519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1304aec89f78SBastian Köcher .num_parents = 1, 1305aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1306aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1307aec89f78SBastian Köcher }, 1308aec89f78SBastian Köcher }, 1309aec89f78SBastian Köcher }; 1310aec89f78SBastian Köcher 1311aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1312aec89f78SBastian Köcher .halt_reg = 0x08c8, 1313aec89f78SBastian Köcher .clkr = { 1314aec89f78SBastian Köcher .enable_reg = 0x08c8, 1315aec89f78SBastian Köcher .enable_mask = BIT(0), 13160519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1317aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 13180519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1319aec89f78SBastian Köcher .num_parents = 1, 1320aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1321aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1322aec89f78SBastian Köcher }, 1323aec89f78SBastian Köcher }, 1324aec89f78SBastian Köcher }; 1325aec89f78SBastian Köcher 1326aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1327aec89f78SBastian Köcher .halt_reg = 0x08c4, 1328aec89f78SBastian Köcher .clkr = { 1329aec89f78SBastian Köcher .enable_reg = 0x08c4, 1330aec89f78SBastian Köcher .enable_mask = BIT(0), 13310519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1332aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 13330519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1334aec89f78SBastian Köcher .num_parents = 1, 1335aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1336aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1337aec89f78SBastian Köcher }, 1338aec89f78SBastian Köcher }, 1339aec89f78SBastian Köcher }; 1340aec89f78SBastian Köcher 1341aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1342aec89f78SBastian Köcher .halt_reg = 0x0684, 1343aec89f78SBastian Köcher .clkr = { 1344aec89f78SBastian Köcher .enable_reg = 0x0684, 1345aec89f78SBastian Köcher .enable_mask = BIT(0), 13460519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1347aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 13480519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1349aec89f78SBastian Köcher .num_parents = 1, 1350aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1351aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1352aec89f78SBastian Köcher }, 1353aec89f78SBastian Köcher }, 1354aec89f78SBastian Köcher }; 1355aec89f78SBastian Köcher 1356aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1357aec89f78SBastian Köcher .halt_reg = 0x0704, 1358aec89f78SBastian Köcher .clkr = { 1359aec89f78SBastian Köcher .enable_reg = 0x0704, 1360aec89f78SBastian Köcher .enable_mask = BIT(0), 13610519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1362aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 13630519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1364aec89f78SBastian Köcher .num_parents = 1, 1365aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1366aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1367aec89f78SBastian Köcher }, 1368aec89f78SBastian Köcher }, 1369aec89f78SBastian Köcher }; 1370aec89f78SBastian Köcher 1371aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1372aec89f78SBastian Köcher .halt_reg = 0x0784, 1373aec89f78SBastian Köcher .clkr = { 1374aec89f78SBastian Köcher .enable_reg = 0x0784, 1375aec89f78SBastian Köcher .enable_mask = BIT(0), 13760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1377aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 13780519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1379aec89f78SBastian Köcher .num_parents = 1, 1380aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1381aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1382aec89f78SBastian Köcher }, 1383aec89f78SBastian Köcher }, 1384aec89f78SBastian Köcher }; 1385aec89f78SBastian Köcher 1386aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1387aec89f78SBastian Köcher .halt_reg = 0x0804, 1388aec89f78SBastian Köcher .clkr = { 1389aec89f78SBastian Köcher .enable_reg = 0x0804, 1390aec89f78SBastian Köcher .enable_mask = BIT(0), 13910519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1392aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 13930519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1394aec89f78SBastian Köcher .num_parents = 1, 1395aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1396aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1397aec89f78SBastian Köcher }, 1398aec89f78SBastian Köcher }, 1399aec89f78SBastian Köcher }; 1400aec89f78SBastian Köcher 1401aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1402aec89f78SBastian Köcher .halt_reg = 0x0884, 1403aec89f78SBastian Köcher .clkr = { 1404aec89f78SBastian Köcher .enable_reg = 0x0884, 1405aec89f78SBastian Köcher .enable_mask = BIT(0), 14060519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1407aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 14080519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1409aec89f78SBastian Köcher .num_parents = 1, 1410aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1411aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1412aec89f78SBastian Köcher }, 1413aec89f78SBastian Köcher }, 1414aec89f78SBastian Köcher }; 1415aec89f78SBastian Köcher 1416aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1417aec89f78SBastian Köcher .halt_reg = 0x0904, 1418aec89f78SBastian Köcher .clkr = { 1419aec89f78SBastian Köcher .enable_reg = 0x0904, 1420aec89f78SBastian Köcher .enable_mask = BIT(0), 14210519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1422aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 14230519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1424aec89f78SBastian Köcher .num_parents = 1, 1425aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1426aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1427aec89f78SBastian Köcher }, 1428aec89f78SBastian Köcher }, 1429aec89f78SBastian Köcher }; 1430aec89f78SBastian Köcher 1431aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1432aec89f78SBastian Köcher .halt_reg = 0x0944, 1433aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1434aec89f78SBastian Köcher .clkr = { 1435aec89f78SBastian Köcher .enable_reg = 0x1484, 1436aec89f78SBastian Köcher .enable_mask = BIT(15), 14370519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1438aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 143974a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 144074a33facSKonrad Dybcio .num_parents = 1, 1441aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1442aec89f78SBastian Köcher }, 1443aec89f78SBastian Köcher }, 1444aec89f78SBastian Köcher }; 1445aec89f78SBastian Köcher 1446aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1447aec89f78SBastian Köcher .halt_reg = 0x0988, 1448aec89f78SBastian Köcher .clkr = { 1449aec89f78SBastian Köcher .enable_reg = 0x0988, 1450aec89f78SBastian Köcher .enable_mask = BIT(0), 14510519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1452aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 14530519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1454aec89f78SBastian Köcher .num_parents = 1, 1455aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1456aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1457aec89f78SBastian Köcher }, 1458aec89f78SBastian Köcher }, 1459aec89f78SBastian Köcher }; 1460aec89f78SBastian Köcher 1461aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1462aec89f78SBastian Köcher .halt_reg = 0x0984, 1463aec89f78SBastian Köcher .clkr = { 1464aec89f78SBastian Köcher .enable_reg = 0x0984, 1465aec89f78SBastian Köcher .enable_mask = BIT(0), 14660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1467aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 14680519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1469aec89f78SBastian Köcher .num_parents = 1, 1470aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1471aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1472aec89f78SBastian Köcher }, 1473aec89f78SBastian Köcher }, 1474aec89f78SBastian Köcher }; 1475aec89f78SBastian Köcher 1476aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1477aec89f78SBastian Köcher .halt_reg = 0x0a08, 1478aec89f78SBastian Köcher .clkr = { 1479aec89f78SBastian Köcher .enable_reg = 0x0a08, 1480aec89f78SBastian Köcher .enable_mask = BIT(0), 14810519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1482aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 14830519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1484aec89f78SBastian Köcher .num_parents = 1, 1485aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1486aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1487aec89f78SBastian Köcher }, 1488aec89f78SBastian Köcher }, 1489aec89f78SBastian Köcher }; 1490aec89f78SBastian Köcher 1491aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1492aec89f78SBastian Köcher .halt_reg = 0x0a04, 1493aec89f78SBastian Köcher .clkr = { 1494aec89f78SBastian Köcher .enable_reg = 0x0a04, 1495aec89f78SBastian Köcher .enable_mask = BIT(0), 14960519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1497aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 14980519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1499aec89f78SBastian Köcher .num_parents = 1, 1500aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1501aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1502aec89f78SBastian Köcher }, 1503aec89f78SBastian Köcher }, 1504aec89f78SBastian Köcher }; 1505aec89f78SBastian Köcher 1506aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1507aec89f78SBastian Köcher .halt_reg = 0x0a88, 1508aec89f78SBastian Köcher .clkr = { 1509aec89f78SBastian Köcher .enable_reg = 0x0a88, 1510aec89f78SBastian Köcher .enable_mask = BIT(0), 15110519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1512aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 15130519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1514aec89f78SBastian Köcher .num_parents = 1, 1515aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1516aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1517aec89f78SBastian Köcher }, 1518aec89f78SBastian Köcher }, 1519aec89f78SBastian Köcher }; 1520aec89f78SBastian Köcher 1521aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1522aec89f78SBastian Köcher .halt_reg = 0x0a84, 1523aec89f78SBastian Köcher .clkr = { 1524aec89f78SBastian Köcher .enable_reg = 0x0a84, 1525aec89f78SBastian Köcher .enable_mask = BIT(0), 15260519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1527aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 15280519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1529aec89f78SBastian Köcher .num_parents = 1, 1530aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1531aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1532aec89f78SBastian Köcher }, 1533aec89f78SBastian Köcher }, 1534aec89f78SBastian Köcher }; 1535aec89f78SBastian Köcher 1536aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1537aec89f78SBastian Köcher .halt_reg = 0x0b08, 1538aec89f78SBastian Köcher .clkr = { 1539aec89f78SBastian Köcher .enable_reg = 0x0b08, 1540aec89f78SBastian Köcher .enable_mask = BIT(0), 15410519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1542aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 15430519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1544aec89f78SBastian Köcher .num_parents = 1, 1545aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1546aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1547aec89f78SBastian Köcher }, 1548aec89f78SBastian Köcher }, 1549aec89f78SBastian Köcher }; 1550aec89f78SBastian Köcher 1551aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1552aec89f78SBastian Köcher .halt_reg = 0x0b04, 1553aec89f78SBastian Köcher .clkr = { 1554aec89f78SBastian Köcher .enable_reg = 0x0b04, 1555aec89f78SBastian Köcher .enable_mask = BIT(0), 15560519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1557aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 15580519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1559aec89f78SBastian Köcher .num_parents = 1, 1560aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1561aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1562aec89f78SBastian Köcher }, 1563aec89f78SBastian Köcher }, 1564aec89f78SBastian Köcher }; 1565aec89f78SBastian Köcher 1566aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1567aec89f78SBastian Köcher .halt_reg = 0x0b88, 1568aec89f78SBastian Köcher .clkr = { 1569aec89f78SBastian Köcher .enable_reg = 0x0b88, 1570aec89f78SBastian Köcher .enable_mask = BIT(0), 15710519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1572aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 15730519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1574aec89f78SBastian Köcher .num_parents = 1, 1575aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1576aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1577aec89f78SBastian Köcher }, 1578aec89f78SBastian Köcher }, 1579aec89f78SBastian Köcher }; 1580aec89f78SBastian Köcher 1581aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1582aec89f78SBastian Köcher .halt_reg = 0x0b84, 1583aec89f78SBastian Köcher .clkr = { 1584aec89f78SBastian Köcher .enable_reg = 0x0b84, 1585aec89f78SBastian Köcher .enable_mask = BIT(0), 15860519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1587aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 15880519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1589aec89f78SBastian Köcher .num_parents = 1, 1590aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1591aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1592aec89f78SBastian Köcher }, 1593aec89f78SBastian Köcher }, 1594aec89f78SBastian Köcher }; 1595aec89f78SBastian Köcher 1596aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1597aec89f78SBastian Köcher .halt_reg = 0x0c08, 1598aec89f78SBastian Köcher .clkr = { 1599aec89f78SBastian Köcher .enable_reg = 0x0c08, 1600aec89f78SBastian Köcher .enable_mask = BIT(0), 16010519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1602aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 16030519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1604aec89f78SBastian Köcher .num_parents = 1, 1605aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1606aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1607aec89f78SBastian Köcher }, 1608aec89f78SBastian Köcher }, 1609aec89f78SBastian Köcher }; 1610aec89f78SBastian Köcher 1611aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1612aec89f78SBastian Köcher .halt_reg = 0x0c04, 1613aec89f78SBastian Köcher .clkr = { 1614aec89f78SBastian Köcher .enable_reg = 0x0c04, 1615aec89f78SBastian Köcher .enable_mask = BIT(0), 16160519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1617aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 16180519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1619aec89f78SBastian Köcher .num_parents = 1, 1620aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1621aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1622aec89f78SBastian Köcher }, 1623aec89f78SBastian Köcher }, 1624aec89f78SBastian Köcher }; 1625aec89f78SBastian Köcher 1626aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1627aec89f78SBastian Köcher .halt_reg = 0x09c4, 1628aec89f78SBastian Köcher .clkr = { 1629aec89f78SBastian Köcher .enable_reg = 0x09c4, 1630aec89f78SBastian Köcher .enable_mask = BIT(0), 16310519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1632aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 16330519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1634aec89f78SBastian Köcher .num_parents = 1, 1635aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1636aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1637aec89f78SBastian Köcher }, 1638aec89f78SBastian Köcher }, 1639aec89f78SBastian Köcher }; 1640aec89f78SBastian Köcher 1641aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1642aec89f78SBastian Köcher .halt_reg = 0x0a44, 1643aec89f78SBastian Köcher .clkr = { 1644aec89f78SBastian Köcher .enable_reg = 0x0a44, 1645aec89f78SBastian Köcher .enable_mask = BIT(0), 16460519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1647aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 16480519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1649aec89f78SBastian Köcher .num_parents = 1, 1650aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1651aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1652aec89f78SBastian Köcher }, 1653aec89f78SBastian Köcher }, 1654aec89f78SBastian Köcher }; 1655aec89f78SBastian Köcher 1656aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1657aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1658aec89f78SBastian Köcher .clkr = { 1659aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1660aec89f78SBastian Köcher .enable_mask = BIT(0), 16610519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1662aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 16630519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1664aec89f78SBastian Köcher .num_parents = 1, 1665aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1666aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1667aec89f78SBastian Köcher }, 1668aec89f78SBastian Köcher }, 1669aec89f78SBastian Köcher }; 1670aec89f78SBastian Köcher 1671aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1672aec89f78SBastian Köcher .halt_reg = 0x0b44, 1673aec89f78SBastian Köcher .clkr = { 1674aec89f78SBastian Köcher .enable_reg = 0x0b44, 1675aec89f78SBastian Köcher .enable_mask = BIT(0), 16760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1677aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 16780519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1679aec89f78SBastian Köcher .num_parents = 1, 1680aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1681aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1682aec89f78SBastian Köcher }, 1683aec89f78SBastian Köcher }, 1684aec89f78SBastian Köcher }; 1685aec89f78SBastian Köcher 1686aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1687aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1688aec89f78SBastian Köcher .clkr = { 1689aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1690aec89f78SBastian Köcher .enable_mask = BIT(0), 16910519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1692aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 16930519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1694aec89f78SBastian Köcher .num_parents = 1, 1695aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1696aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1697aec89f78SBastian Köcher }, 1698aec89f78SBastian Köcher }, 1699aec89f78SBastian Köcher }; 1700aec89f78SBastian Köcher 1701aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1702aec89f78SBastian Köcher .halt_reg = 0x0c44, 1703aec89f78SBastian Köcher .clkr = { 1704aec89f78SBastian Köcher .enable_reg = 0x0c44, 1705aec89f78SBastian Köcher .enable_mask = BIT(0), 17060519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1707aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 17080519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1709aec89f78SBastian Köcher .num_parents = 1, 1710aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1711aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1712aec89f78SBastian Köcher }, 1713aec89f78SBastian Köcher }, 1714aec89f78SBastian Köcher }; 1715aec89f78SBastian Köcher 1716aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1717aec89f78SBastian Köcher .halt_reg = 0x1900, 1718aec89f78SBastian Köcher .clkr = { 1719aec89f78SBastian Köcher .enable_reg = 0x1900, 1720aec89f78SBastian Köcher .enable_mask = BIT(0), 17210519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1722aec89f78SBastian Köcher .name = "gcc_gp1_clk", 17230519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1724aec89f78SBastian Köcher .num_parents = 1, 1725aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1726aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1727aec89f78SBastian Köcher }, 1728aec89f78SBastian Köcher }, 1729aec89f78SBastian Köcher }; 1730aec89f78SBastian Köcher 1731aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1732aec89f78SBastian Köcher .halt_reg = 0x1940, 1733aec89f78SBastian Köcher .clkr = { 1734aec89f78SBastian Köcher .enable_reg = 0x1940, 1735aec89f78SBastian Köcher .enable_mask = BIT(0), 17360519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1737aec89f78SBastian Köcher .name = "gcc_gp2_clk", 17380519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1739aec89f78SBastian Köcher .num_parents = 1, 1740aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1741aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1742aec89f78SBastian Köcher }, 1743aec89f78SBastian Köcher }, 1744aec89f78SBastian Köcher }; 1745aec89f78SBastian Köcher 1746aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1747aec89f78SBastian Köcher .halt_reg = 0x1980, 1748aec89f78SBastian Köcher .clkr = { 1749aec89f78SBastian Köcher .enable_reg = 0x1980, 1750aec89f78SBastian Köcher .enable_mask = BIT(0), 17510519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1752aec89f78SBastian Köcher .name = "gcc_gp3_clk", 17530519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1754aec89f78SBastian Köcher .num_parents = 1, 1755aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1756aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1757aec89f78SBastian Köcher }, 1758aec89f78SBastian Köcher }, 1759aec89f78SBastian Köcher }; 1760aec89f78SBastian Köcher 17618c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 17628c18b41bSKonrad Dybcio .halt_reg = 0x0280, 17638c18b41bSKonrad Dybcio .clkr = { 17648c18b41bSKonrad Dybcio .enable_reg = 0x0280, 17658c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17678c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 176874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 176974a33facSKonrad Dybcio .num_parents = 1, 17708c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17718c18b41bSKonrad Dybcio }, 17728c18b41bSKonrad Dybcio }, 17738c18b41bSKonrad Dybcio }; 17748c18b41bSKonrad Dybcio 17758c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 17768c18b41bSKonrad Dybcio .halt_reg = 0x0284, 17778c18b41bSKonrad Dybcio .clkr = { 17788c18b41bSKonrad Dybcio .enable_reg = 0x0284, 17798c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17818c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 178274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 178374a33facSKonrad Dybcio .num_parents = 1, 17848c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17858c18b41bSKonrad Dybcio }, 17868c18b41bSKonrad Dybcio }, 17878c18b41bSKonrad Dybcio }; 17888c18b41bSKonrad Dybcio 1789aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1790aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1791aec89f78SBastian Köcher .clkr = { 1792aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1793aec89f78SBastian Köcher .enable_mask = BIT(0), 17940519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1795aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 17960519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1797aec89f78SBastian Köcher .num_parents = 1, 1798aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1799aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1800aec89f78SBastian Köcher }, 1801aec89f78SBastian Köcher }, 1802aec89f78SBastian Köcher }; 1803aec89f78SBastian Köcher 18048c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 18058c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 18068c18b41bSKonrad Dybcio .clkr = { 18078c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 18088c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18090519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18108c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 181174a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 181274a33facSKonrad Dybcio .num_parents = 1, 181374a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18148c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18158c18b41bSKonrad Dybcio }, 18168c18b41bSKonrad Dybcio }, 18178c18b41bSKonrad Dybcio }; 18188c18b41bSKonrad Dybcio 18198c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 18208c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 18218c18b41bSKonrad Dybcio .clkr = { 18228c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 18238c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18240519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18258c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 182674a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 182774a33facSKonrad Dybcio .num_parents = 1, 182874a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18298c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18308c18b41bSKonrad Dybcio }, 18318c18b41bSKonrad Dybcio }, 18328c18b41bSKonrad Dybcio }; 18338c18b41bSKonrad Dybcio 1834aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1835aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1836aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1837aec89f78SBastian Köcher .clkr = { 1838aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1839aec89f78SBastian Köcher .enable_mask = BIT(0), 18400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1841aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 18420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1843aec89f78SBastian Köcher .num_parents = 1, 1844aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1845aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1846aec89f78SBastian Köcher }, 1847aec89f78SBastian Köcher }, 1848aec89f78SBastian Köcher }; 1849aec89f78SBastian Köcher 18508c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 18518c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 18528c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 18538c18b41bSKonrad Dybcio .clkr = { 18548c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 18558c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18560519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18578c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 185874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 185974a33facSKonrad Dybcio .num_parents = 1, 186074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18618c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18628c18b41bSKonrad Dybcio }, 18638c18b41bSKonrad Dybcio }, 18648c18b41bSKonrad Dybcio }; 18658c18b41bSKonrad Dybcio 1866aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1867aec89f78SBastian Köcher .halt_reg = 0x1b54, 1868aec89f78SBastian Köcher .clkr = { 1869aec89f78SBastian Köcher .enable_reg = 0x1b54, 1870aec89f78SBastian Köcher .enable_mask = BIT(0), 18710519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1872aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 18730519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1874aec89f78SBastian Köcher .num_parents = 1, 1875aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1876aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1877aec89f78SBastian Köcher }, 1878aec89f78SBastian Köcher }, 1879aec89f78SBastian Köcher }; 1880aec89f78SBastian Köcher 18818c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 18828c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 18838c18b41bSKonrad Dybcio .clkr = { 18848c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 18858c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18860519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18878c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 188874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 188974a33facSKonrad Dybcio .num_parents = 1, 189074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 18918c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18928c18b41bSKonrad Dybcio }, 18938c18b41bSKonrad Dybcio }, 18948c18b41bSKonrad Dybcio }; 18958c18b41bSKonrad Dybcio 18968c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 18978c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 18988c18b41bSKonrad Dybcio .clkr = { 18998c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 19008c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19010519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19028c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 190374a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 190474a33facSKonrad Dybcio .num_parents = 1, 190574a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19068c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19078c18b41bSKonrad Dybcio }, 19088c18b41bSKonrad Dybcio }, 19098c18b41bSKonrad Dybcio }; 19108c18b41bSKonrad Dybcio 1911aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1912aec89f78SBastian Köcher .halt_reg = 0x1b58, 1913aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1914aec89f78SBastian Köcher .clkr = { 1915aec89f78SBastian Köcher .enable_reg = 0x1b58, 1916aec89f78SBastian Köcher .enable_mask = BIT(0), 19170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1918aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 19190519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1920aec89f78SBastian Köcher .num_parents = 1, 1921aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1922aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1923aec89f78SBastian Köcher }, 1924aec89f78SBastian Köcher }, 1925aec89f78SBastian Köcher }; 1926aec89f78SBastian Köcher 19278c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 19288c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 19298c18b41bSKonrad Dybcio .clkr = { 19308c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 19318c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19338c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 193474a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 193574a33facSKonrad Dybcio .num_parents = 1, 193674a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 19378c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19388c18b41bSKonrad Dybcio }, 19398c18b41bSKonrad Dybcio }, 19408c18b41bSKonrad Dybcio }; 19418c18b41bSKonrad Dybcio 1942aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1943aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1944aec89f78SBastian Köcher .clkr = { 1945aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1946aec89f78SBastian Köcher .enable_mask = BIT(0), 19470519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1948aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 19490519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1950aec89f78SBastian Köcher .num_parents = 1, 1951aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1952aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1953aec89f78SBastian Köcher }, 1954aec89f78SBastian Köcher }, 1955aec89f78SBastian Köcher }; 1956aec89f78SBastian Köcher 19578c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 19588c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 19598c18b41bSKonrad Dybcio .clkr = { 19608c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 19618c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19620519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19638c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 196474a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 196574a33facSKonrad Dybcio .num_parents = 1, 19668c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19678c18b41bSKonrad Dybcio }, 19688c18b41bSKonrad Dybcio }, 19698c18b41bSKonrad Dybcio }; 19708c18b41bSKonrad Dybcio 1971aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1972aec89f78SBastian Köcher .halt_reg = 0x04c4, 1973aec89f78SBastian Köcher .clkr = { 1974aec89f78SBastian Köcher .enable_reg = 0x04c4, 1975aec89f78SBastian Köcher .enable_mask = BIT(0), 19760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1977aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 19780519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1979aec89f78SBastian Köcher .num_parents = 1, 1980aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1981aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1982aec89f78SBastian Köcher }, 1983aec89f78SBastian Köcher }, 1984aec89f78SBastian Köcher }; 1985aec89f78SBastian Köcher 1986eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1987eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1988eaff16bcSJeremy McNicoll .clkr = { 1989eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1990eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 19910519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1992eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 199374a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1994eaff16bcSJeremy McNicoll .num_parents = 1, 199574a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 1996eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1997eaff16bcSJeremy McNicoll }, 1998eaff16bcSJeremy McNicoll }, 1999eaff16bcSJeremy McNicoll }; 2000eaff16bcSJeremy McNicoll 20018c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 20028c18b41bSKonrad Dybcio .halt_reg = 0x0508, 20038c18b41bSKonrad Dybcio .clkr = { 20048c18b41bSKonrad Dybcio .enable_reg = 0x0508, 20058c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20060519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20078c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 200874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20098c18b41bSKonrad Dybcio .num_parents = 1, 201074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20118c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20128c18b41bSKonrad Dybcio }, 20138c18b41bSKonrad Dybcio }, 20148c18b41bSKonrad Dybcio }; 20158c18b41bSKonrad Dybcio 2016aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 2017aec89f78SBastian Köcher .halt_reg = 0x0504, 2018aec89f78SBastian Köcher .clkr = { 2019aec89f78SBastian Köcher .enable_reg = 0x0504, 2020aec89f78SBastian Köcher .enable_mask = BIT(0), 20210519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2022aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 20230519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw }, 2024aec89f78SBastian Köcher .num_parents = 1, 2025aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2026aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2027aec89f78SBastian Köcher }, 2028aec89f78SBastian Köcher }, 2029aec89f78SBastian Köcher }; 2030aec89f78SBastian Köcher 20318c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = { 20328c18b41bSKonrad Dybcio .halt_reg = 0x0548, 20338c18b41bSKonrad Dybcio .clkr = { 20348c18b41bSKonrad Dybcio .enable_reg = 0x0548, 20358c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20360519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20378c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 203874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20398c18b41bSKonrad Dybcio .num_parents = 1, 204074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20418c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20428c18b41bSKonrad Dybcio }, 20438c18b41bSKonrad Dybcio }, 20448c18b41bSKonrad Dybcio }; 20458c18b41bSKonrad Dybcio 2046aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 2047aec89f78SBastian Köcher .halt_reg = 0x0544, 2048aec89f78SBastian Köcher .clkr = { 2049aec89f78SBastian Köcher .enable_reg = 0x0544, 2050aec89f78SBastian Köcher .enable_mask = BIT(0), 20510519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2052aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 20530519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 2054aec89f78SBastian Köcher .num_parents = 1, 2055aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2056aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2057aec89f78SBastian Köcher }, 2058aec89f78SBastian Köcher }, 2059aec89f78SBastian Köcher }; 2060aec89f78SBastian Köcher 20618c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = { 20628c18b41bSKonrad Dybcio .halt_reg = 0x0588, 20638c18b41bSKonrad Dybcio .clkr = { 20648c18b41bSKonrad Dybcio .enable_reg = 0x0588, 20658c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20678c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 206874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 20698c18b41bSKonrad Dybcio .num_parents = 1, 207074a33facSKonrad Dybcio .flags = CLK_SET_RATE_PARENT, 20718c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20728c18b41bSKonrad Dybcio }, 20738c18b41bSKonrad Dybcio }, 20748c18b41bSKonrad Dybcio }; 20758c18b41bSKonrad Dybcio 2076aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 2077aec89f78SBastian Köcher .halt_reg = 0x0584, 2078aec89f78SBastian Köcher .clkr = { 2079aec89f78SBastian Köcher .enable_reg = 0x0584, 2080aec89f78SBastian Köcher .enable_mask = BIT(0), 20810519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2082aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 20830519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 2084aec89f78SBastian Köcher .num_parents = 1, 2085aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2086aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2087aec89f78SBastian Köcher }, 2088aec89f78SBastian Köcher }, 2089aec89f78SBastian Köcher }; 2090aec89f78SBastian Köcher 2091aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2092aec89f78SBastian Köcher .halt_reg = 0x1d7c, 2093aec89f78SBastian Köcher .clkr = { 2094aec89f78SBastian Köcher .enable_reg = 0x1d7c, 2095aec89f78SBastian Köcher .enable_mask = BIT(0), 20960519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2097aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 20980519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2099aec89f78SBastian Köcher .num_parents = 1, 2100aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2101aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2102aec89f78SBastian Köcher }, 2103aec89f78SBastian Köcher }, 2104aec89f78SBastian Köcher }; 2105aec89f78SBastian Köcher 2106aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2107aec89f78SBastian Köcher .halt_reg = 0x03fc, 2108aec89f78SBastian Köcher .clkr = { 2109aec89f78SBastian Köcher .enable_reg = 0x03fc, 2110aec89f78SBastian Köcher .enable_mask = BIT(0), 21110519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2112aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 21130519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2114aec89f78SBastian Köcher .num_parents = 1, 2115aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2116aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2117aec89f78SBastian Köcher }, 2118aec89f78SBastian Köcher }, 2119aec89f78SBastian Köcher }; 2120aec89f78SBastian Köcher 21218c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 21228c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 21238c18b41bSKonrad Dybcio .clkr = { 21248c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 21258c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21260519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21278c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 212874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 212974a33facSKonrad Dybcio .num_parents = 1, 21308c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21318c18b41bSKonrad Dybcio }, 21328c18b41bSKonrad Dybcio }, 21338c18b41bSKonrad Dybcio }; 21348c18b41bSKonrad Dybcio 2135aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 2136aec89f78SBastian Köcher .halt_reg = 0x0d88, 2137aec89f78SBastian Köcher .clkr = { 2138aec89f78SBastian Köcher .enable_reg = 0x0d88, 2139aec89f78SBastian Köcher .enable_mask = BIT(0), 21400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2141aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 21420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2143aec89f78SBastian Köcher .num_parents = 1, 2144aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2145aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2146aec89f78SBastian Köcher }, 2147aec89f78SBastian Köcher }, 2148aec89f78SBastian Köcher }; 2149aec89f78SBastian Köcher 21508c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 21518c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 21528c18b41bSKonrad Dybcio .clkr = { 21538c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 21548c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21568c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 215774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 215874a33facSKonrad Dybcio .num_parents = 1, 21598c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21608c18b41bSKonrad Dybcio }, 21618c18b41bSKonrad Dybcio }, 21628c18b41bSKonrad Dybcio }; 21638c18b41bSKonrad Dybcio 2164aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2165aec89f78SBastian Köcher .halt_reg = 0x1d48, 2166aec89f78SBastian Köcher .clkr = { 2167aec89f78SBastian Köcher .enable_reg = 0x1d48, 2168aec89f78SBastian Köcher .enable_mask = BIT(0), 21690519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2170aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 21710519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2172aec89f78SBastian Köcher .num_parents = 1, 2173aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2174aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2175aec89f78SBastian Köcher }, 2176aec89f78SBastian Köcher }, 2177aec89f78SBastian Köcher }; 2178aec89f78SBastian Köcher 2179aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2180aec89f78SBastian Köcher .halt_reg = 0x1d54, 2181aec89f78SBastian Köcher .clkr = { 2182aec89f78SBastian Köcher .enable_reg = 0x1d54, 2183aec89f78SBastian Köcher .enable_mask = BIT(0), 21840519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2185aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 21860519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2187aec89f78SBastian Köcher .num_parents = 1, 2188aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2189aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2190aec89f78SBastian Köcher }, 2191aec89f78SBastian Köcher }, 2192aec89f78SBastian Köcher }; 2193aec89f78SBastian Köcher 21948c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 21958c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 21968c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21978c18b41bSKonrad Dybcio .clkr = { 21988c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 21998c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22018c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 220274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 220374a33facSKonrad Dybcio .num_parents = 1, 22048c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22058c18b41bSKonrad Dybcio }, 22068c18b41bSKonrad Dybcio }, 22078c18b41bSKonrad Dybcio }; 22088c18b41bSKonrad Dybcio 22098c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 22108c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 22118c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22128c18b41bSKonrad Dybcio .clkr = { 22138c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 22148c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22168c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 221774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 221874a33facSKonrad Dybcio .num_parents = 1, 22198c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22208c18b41bSKonrad Dybcio }, 22218c18b41bSKonrad Dybcio }, 22228c18b41bSKonrad Dybcio }; 22238c18b41bSKonrad Dybcio 2224aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2225aec89f78SBastian Köcher .halt_reg = 0x1d50, 2226aec89f78SBastian Köcher .clkr = { 2227aec89f78SBastian Köcher .enable_reg = 0x1d50, 2228aec89f78SBastian Köcher .enable_mask = BIT(0), 22290519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2230aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 22310519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2232aec89f78SBastian Köcher .num_parents = 1, 2233aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2234aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2235aec89f78SBastian Köcher }, 2236aec89f78SBastian Köcher }, 2237aec89f78SBastian Köcher }; 2238aec89f78SBastian Köcher 22398c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 22408c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 22418c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22428c18b41bSKonrad Dybcio .clkr = { 22438c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 22448c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22468c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 224774a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 224874a33facSKonrad Dybcio .num_parents = 1, 22498c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22508c18b41bSKonrad Dybcio }, 22518c18b41bSKonrad Dybcio }, 22528c18b41bSKonrad Dybcio }; 22538c18b41bSKonrad Dybcio 22548c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 22558c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 22568c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 22578c18b41bSKonrad Dybcio .clkr = { 22588c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 22598c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22618c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 226274a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 226374a33facSKonrad Dybcio .num_parents = 1, 22648c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22658c18b41bSKonrad Dybcio }, 22668c18b41bSKonrad Dybcio }, 22678c18b41bSKonrad Dybcio }; 22688c18b41bSKonrad Dybcio 22698c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 22708c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 22718c18b41bSKonrad Dybcio .clkr = { 22728c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 22738c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22740519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22758c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 22760519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22770519d1d0SKonrad Dybcio .fw_name = "sleep", 22780519d1d0SKonrad Dybcio .name = "sleep" 22790519d1d0SKonrad Dybcio }, 22800519d1d0SKonrad Dybcio .num_parents = 1, 22818c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22828c18b41bSKonrad Dybcio }, 22838c18b41bSKonrad Dybcio }, 22848c18b41bSKonrad Dybcio }; 22858c18b41bSKonrad Dybcio 2286aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2287aec89f78SBastian Köcher .halt_reg = 0x03c8, 2288aec89f78SBastian Köcher .clkr = { 2289aec89f78SBastian Köcher .enable_reg = 0x03c8, 2290aec89f78SBastian Köcher .enable_mask = BIT(0), 22910519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2292aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 22930519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2294aec89f78SBastian Köcher .num_parents = 1, 2295aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2296aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2297aec89f78SBastian Köcher }, 2298aec89f78SBastian Köcher }, 2299aec89f78SBastian Köcher }; 2300aec89f78SBastian Köcher 2301aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2302aec89f78SBastian Köcher .halt_reg = 0x03d0, 2303aec89f78SBastian Köcher .clkr = { 2304aec89f78SBastian Köcher .enable_reg = 0x03d0, 2305aec89f78SBastian Köcher .enable_mask = BIT(0), 23060519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2307aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 23080519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2309aec89f78SBastian Köcher .num_parents = 1, 2310aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2311aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2312aec89f78SBastian Köcher }, 2313aec89f78SBastian Köcher }, 2314aec89f78SBastian Köcher }; 2315aec89f78SBastian Köcher 23168c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 23178c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 23188c18b41bSKonrad Dybcio .clkr = { 23198c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 23208c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23210519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23228c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 23230519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 23240519d1d0SKonrad Dybcio .fw_name = "sleep", 23250519d1d0SKonrad Dybcio .name = "sleep" 23260519d1d0SKonrad Dybcio }, 23270519d1d0SKonrad Dybcio .num_parents = 1, 23288c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23298c18b41bSKonrad Dybcio }, 23308c18b41bSKonrad Dybcio }, 23318c18b41bSKonrad Dybcio }; 23328c18b41bSKonrad Dybcio 2333aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2334aec89f78SBastian Köcher .halt_reg = 0x1408, 2335aec89f78SBastian Köcher .clkr = { 2336aec89f78SBastian Köcher .enable_reg = 0x1408, 2337aec89f78SBastian Köcher .enable_mask = BIT(0), 23380519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2339aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 23400519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2341aec89f78SBastian Köcher .num_parents = 1, 2342aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2343aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2344aec89f78SBastian Köcher }, 2345aec89f78SBastian Köcher }, 2346aec89f78SBastian Köcher }; 2347aec89f78SBastian Köcher 2348b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = { 2349b8f415c6SKonrad Dybcio .halt_reg = 0x140c, 2350b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2351b8f415c6SKonrad Dybcio .clkr = { 2352b8f415c6SKonrad Dybcio .enable_reg = 0x140c, 2353b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2354b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2355b8f415c6SKonrad Dybcio .name = "gcc_usb3_phy_pipe_clk", 2356b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2357b8f415c6SKonrad Dybcio }, 2358b8f415c6SKonrad Dybcio }, 2359b8f415c6SKonrad Dybcio }; 2360b8f415c6SKonrad Dybcio 23618c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 23628c18b41bSKonrad Dybcio .halt_reg = 0x0488, 23638c18b41bSKonrad Dybcio .clkr = { 23648c18b41bSKonrad Dybcio .enable_reg = 0x0488, 23658c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23660519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23678c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 236874a33facSKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 236974a33facSKonrad Dybcio .num_parents = 1, 23708c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23718c18b41bSKonrad Dybcio }, 23728c18b41bSKonrad Dybcio }, 23738c18b41bSKonrad Dybcio }; 23748c18b41bSKonrad Dybcio 2375aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2376aec89f78SBastian Köcher .halt_reg = 0x0484, 2377aec89f78SBastian Köcher .clkr = { 2378aec89f78SBastian Köcher .enable_reg = 0x0484, 2379aec89f78SBastian Köcher .enable_mask = BIT(0), 23800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2381aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 23820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2383aec89f78SBastian Köcher .num_parents = 1, 2384aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2385aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2386aec89f78SBastian Köcher }, 2387aec89f78SBastian Köcher }, 2388aec89f78SBastian Köcher }; 2389aec89f78SBastian Köcher 23908c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 23918c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 23928c18b41bSKonrad Dybcio .clkr = { 23938c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 23948c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23968c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 23978c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23988c18b41bSKonrad Dybcio }, 23998c18b41bSKonrad Dybcio }, 24008c18b41bSKonrad Dybcio }; 24018c18b41bSKonrad Dybcio 2402b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = { 2403b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2404b8f415c6SKonrad Dybcio .clkr = { 2405b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2406b8f415c6SKonrad Dybcio .enable_mask = BIT(26), 2407b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2408b8f415c6SKonrad Dybcio .name = "gpll0_out_mmsscc", 2409b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2410b8f415c6SKonrad Dybcio .num_parents = 1, 2411b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2412b8f415c6SKonrad Dybcio }, 2413b8f415c6SKonrad Dybcio }, 2414b8f415c6SKonrad Dybcio }; 2415b8f415c6SKonrad Dybcio 2416b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = { 2417b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2418b8f415c6SKonrad Dybcio .clkr = { 2419b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2420b8f415c6SKonrad Dybcio .enable_mask = BIT(27), 2421b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2422b8f415c6SKonrad Dybcio .name = "gpll0_out_msscc", 2423b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2424b8f415c6SKonrad Dybcio .num_parents = 1, 2425b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2426b8f415c6SKonrad Dybcio }, 2427b8f415c6SKonrad Dybcio }, 2428b8f415c6SKonrad Dybcio }; 2429b8f415c6SKonrad Dybcio 2430b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = { 2431b8f415c6SKonrad Dybcio .halt_reg = 0x1e00, 2432b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2433b8f415c6SKonrad Dybcio .clkr = { 2434b8f415c6SKonrad Dybcio .enable_reg = 0x1E00, 2435b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2436b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2437b8f415c6SKonrad Dybcio .name = "pcie_0_phy_ldo", 2438b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2439b8f415c6SKonrad Dybcio }, 2440b8f415c6SKonrad Dybcio }, 2441b8f415c6SKonrad Dybcio }; 2442b8f415c6SKonrad Dybcio 2443b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = { 2444b8f415c6SKonrad Dybcio .halt_reg = 0x1e04, 2445b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2446b8f415c6SKonrad Dybcio .clkr = { 2447b8f415c6SKonrad Dybcio .enable_reg = 0x1E04, 2448b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2449b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2450b8f415c6SKonrad Dybcio .name = "pcie_1_phy_ldo", 2451b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2452b8f415c6SKonrad Dybcio }, 2453b8f415c6SKonrad Dybcio }, 2454b8f415c6SKonrad Dybcio }; 2455b8f415c6SKonrad Dybcio 2456b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = { 2457b8f415c6SKonrad Dybcio .halt_reg = 0x1e0c, 2458b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2459b8f415c6SKonrad Dybcio .clkr = { 2460b8f415c6SKonrad Dybcio .enable_reg = 0x1E0C, 2461b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2462b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2463b8f415c6SKonrad Dybcio .name = "ufs_phy_ldo", 2464b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2465b8f415c6SKonrad Dybcio }, 2466b8f415c6SKonrad Dybcio }, 2467b8f415c6SKonrad Dybcio }; 2468b8f415c6SKonrad Dybcio 2469b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = { 2470b8f415c6SKonrad Dybcio .halt_reg = 0x1e08, 2471b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2472b8f415c6SKonrad Dybcio .clkr = { 2473b8f415c6SKonrad Dybcio .enable_reg = 0x1E08, 2474b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2475b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2476b8f415c6SKonrad Dybcio .name = "usb_ss_phy_ldo", 2477b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2478b8f415c6SKonrad Dybcio }, 2479b8f415c6SKonrad Dybcio }, 2480b8f415c6SKonrad Dybcio }; 2481b8f415c6SKonrad Dybcio 2482b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = { 2483b8f415c6SKonrad Dybcio .halt_reg = 0x0e04, 2484b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2485b8f415c6SKonrad Dybcio .hwcg_reg = 0x0e04, 2486b8f415c6SKonrad Dybcio .hwcg_bit = 1, 2487b8f415c6SKonrad Dybcio .clkr = { 2488b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2489b8f415c6SKonrad Dybcio .enable_mask = BIT(10), 2490b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2491b8f415c6SKonrad Dybcio .name = "gcc_boot_rom_ahb_clk", 2492b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 2493b8f415c6SKonrad Dybcio .num_parents = 1, 2494b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2495b8f415c6SKonrad Dybcio }, 2496b8f415c6SKonrad Dybcio }, 2497b8f415c6SKonrad Dybcio }; 2498b8f415c6SKonrad Dybcio 2499b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = { 2500b8f415c6SKonrad Dybcio .halt_reg = 0x0d04, 2501b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2502b8f415c6SKonrad Dybcio .clkr = { 2503b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2504b8f415c6SKonrad Dybcio .enable_mask = BIT(13), 2505b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2506b8f415c6SKonrad Dybcio .name = "gcc_prng_ahb_clk", 2507b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2508b8f415c6SKonrad Dybcio .num_parents = 1, 2509b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2510b8f415c6SKonrad Dybcio }, 2511b8f415c6SKonrad Dybcio }, 2512b8f415c6SKonrad Dybcio }; 2513b8f415c6SKonrad Dybcio 25148c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 25158c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 25168c18b41bSKonrad Dybcio .pd = { 25178c18b41bSKonrad Dybcio .name = "pcie_0", 25188c18b41bSKonrad Dybcio }, 25198c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25208c18b41bSKonrad Dybcio }; 25218c18b41bSKonrad Dybcio 25228c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 25238c18b41bSKonrad Dybcio .gdscr = 0x1b44, 25248c18b41bSKonrad Dybcio .pd = { 25258c18b41bSKonrad Dybcio .name = "pcie_1", 25268c18b41bSKonrad Dybcio }, 25278c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25288c18b41bSKonrad Dybcio }; 25298c18b41bSKonrad Dybcio 25308c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 25318c18b41bSKonrad Dybcio .gdscr = 0x3c4, 25328c18b41bSKonrad Dybcio .pd = { 25338c18b41bSKonrad Dybcio .name = "usb30", 25348c18b41bSKonrad Dybcio }, 25358c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25368c18b41bSKonrad Dybcio }; 25378c18b41bSKonrad Dybcio 25388c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 25398c18b41bSKonrad Dybcio .gdscr = 0x1d44, 25408c18b41bSKonrad Dybcio .pd = { 25418c18b41bSKonrad Dybcio .name = "ufs", 25428c18b41bSKonrad Dybcio }, 25438c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 25448c18b41bSKonrad Dybcio }; 25458c18b41bSKonrad Dybcio 2546aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2547aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2548aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2549aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2550aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 255174a33facSKonrad Dybcio [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 255274a33facSKonrad Dybcio [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 255374a33facSKonrad Dybcio [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 2554aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2555aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2556aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2557aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2558aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2559aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2560aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2561aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2562aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2563aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2564aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2565aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2566aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2567aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2568aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2569aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2570aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2571aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2572aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2573aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2574aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2575aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2576aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2577aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2578aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2579aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2580aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2581aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2582aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2583aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2584aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2585aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2586aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2587aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2588aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2589aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2590aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2591aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2592aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2593aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2594aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2595aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2596aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2597aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2598aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2599aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2600aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2601aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2602aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2603aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2604aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2605aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2606aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2607aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2608aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2609aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2610aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2611aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2612aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2613aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2614aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2615aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2616aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2617aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2618aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2619aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2620aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2621aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2622aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2623aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2624aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2625aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2626aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2627aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2628aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2629aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2630aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2631aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2632aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2633aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2634aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2635aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2636aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2637aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2638aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2639aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2640aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2641aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2642aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2643aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2644aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2645aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2646aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2647aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2648aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 26498c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 26508c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2651aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 26528c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 26538c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2654aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 26558c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2656aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 26578c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 26588c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2659aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 26608c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2661aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 26628c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2663eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 26648c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 26658c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 26668c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 26678c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 26688c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 26698c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 26708c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2671aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2672aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 26738c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2674aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 26758c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2676aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2677aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 26788c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 26798c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2680aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 26818c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 26828c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 26838c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2684aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2685aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 26868c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2687aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2688b8f415c6SKonrad Dybcio [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr, 26898c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2690aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 26918c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2692b8f415c6SKonrad Dybcio [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr, 2693b8f415c6SKonrad Dybcio [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr, 2694b8f415c6SKonrad Dybcio [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr, 2695b8f415c6SKonrad Dybcio [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr, 2696b8f415c6SKonrad Dybcio [UFS_PHY_LDO] = &ufs_phy_ldo.clkr, 2697b8f415c6SKonrad Dybcio [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr, 2698b8f415c6SKonrad Dybcio [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2699b8f415c6SKonrad Dybcio [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 27008c18b41bSKonrad Dybcio }; 27018c18b41bSKonrad Dybcio 27028c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 270335bb1e6eSKonrad Dybcio /* This GDSC does not exist, but ABI has to remain intact */ 270435bb1e6eSKonrad Dybcio [PCIE_GDSC] = NULL, 27058c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 27068c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 27078c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 27088c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 27098c18b41bSKonrad Dybcio }; 27108c18b41bSKonrad Dybcio 27118c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 27128c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 27138c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 2714a888dc4cSKonrad Dybcio [MSS_RESET] = { 0x1680 }, 27158c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 27168c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 27178c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2718aec89f78SBastian Köcher }; 2719aec89f78SBastian Köcher 2720aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2721aec89f78SBastian Köcher .reg_bits = 32, 2722aec89f78SBastian Köcher .reg_stride = 4, 2723aec89f78SBastian Köcher .val_bits = 32, 2724aec89f78SBastian Köcher .max_register = 0x2000, 2725aec89f78SBastian Köcher .fast_io = true, 2726aec89f78SBastian Köcher }; 2727aec89f78SBastian Köcher 2728aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2729aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2730aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2731aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 27328c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 27338c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 27348c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 27358c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2736aec89f78SBastian Köcher }; 2737aec89f78SBastian Köcher 2738aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2739c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8992" }, 2740c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */ 2741aec89f78SBastian Köcher {} 2742aec89f78SBastian Köcher }; 2743aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2744aec89f78SBastian Köcher 2745aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2746aec89f78SBastian Köcher { 2747c09b8023SKonrad Dybcio if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) { 2748c09b8023SKonrad Dybcio /* MSM8992 features less clocks and some have different freq tables */ 2749c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL; 2750c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL; 2751c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL; 2752c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL; 2753c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL; 2754c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL; 2755c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL; 2756c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL; 2757c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL; 2758c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL; 2759c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL; 2760c09b8023SKonrad Dybcio 2761c09b8023SKonrad Dybcio sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992; 2762c09b8023SKonrad Dybcio blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2763c09b8023SKonrad Dybcio blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2764c09b8023SKonrad Dybcio blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2765c09b8023SKonrad Dybcio blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2766c09b8023SKonrad Dybcio blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2767c09b8023SKonrad Dybcio blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2768c09b8023SKonrad Dybcio blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2769c09b8023SKonrad Dybcio blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2770c09b8023SKonrad Dybcio blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2771c09b8023SKonrad Dybcio blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2772c09b8023SKonrad Dybcio blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2773c09b8023SKonrad Dybcio blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2774c09b8023SKonrad Dybcio 2775c09b8023SKonrad Dybcio /* 2776c09b8023SKonrad Dybcio * Some 8992 boards might *possibly* use 2777c09b8023SKonrad Dybcio * PCIe1 clocks and controller, but it's not 2778c09b8023SKonrad Dybcio * standard and they should be disabled otherwise. 2779c09b8023SKonrad Dybcio */ 2780c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL; 2781c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL; 2782c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL; 2783c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL; 2784c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL; 2785c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL; 2786c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL; 2787c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL; 2788c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL; 2789c09b8023SKonrad Dybcio } 2790c09b8023SKonrad Dybcio 2791aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2792aec89f78SBastian Köcher } 2793aec89f78SBastian Köcher 2794aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2795aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2796aec89f78SBastian Köcher .driver = { 2797aec89f78SBastian Köcher .name = "gcc-msm8994", 2798aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2799aec89f78SBastian Köcher }, 2800aec89f78SBastian Köcher }; 2801aec89f78SBastian Köcher 2802aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2803aec89f78SBastian Köcher { 2804aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2805aec89f78SBastian Köcher } 2806aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2807aec89f78SBastian Köcher 2808aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2809aec89f78SBastian Köcher { 2810aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2811aec89f78SBastian Köcher } 2812aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2813aec89f78SBastian Köcher 2814aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2815aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2816aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2817