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, 8028d3f06eSAbhishek Sahu .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 810519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 82aec89f78SBastian Köcher .name = "gpll4", 83aec89f78SBastian Köcher .parent_names = (const char *[]) { "gpll4_early" }, 84aec89f78SBastian Köcher .num_parents = 1, 85aec89f78SBastian Köcher .ops = &clk_alpha_pll_postdiv_ops, 86aec89f78SBastian Köcher }, 87aec89f78SBastian Köcher }; 88aec89f78SBastian Köcher 890519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = { 900519d1d0SKonrad Dybcio { P_XO, 0 }, 910519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 920519d1d0SKonrad Dybcio }; 930519d1d0SKonrad Dybcio 940519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = { 950519d1d0SKonrad Dybcio { .fw_name = "xo" }, 960519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 970519d1d0SKonrad Dybcio }; 980519d1d0SKonrad Dybcio 990519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 1000519d1d0SKonrad Dybcio { P_XO, 0 }, 1010519d1d0SKonrad Dybcio { P_GPLL0, 1 }, 1020519d1d0SKonrad Dybcio { P_GPLL4, 5 }, 1030519d1d0SKonrad Dybcio }; 1040519d1d0SKonrad Dybcio 1050519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 1060519d1d0SKonrad Dybcio { .fw_name = "xo" }, 1070519d1d0SKonrad Dybcio { .hw = &gpll0.clkr.hw }, 1080519d1d0SKonrad Dybcio { .hw = &gpll4.clkr.hw }, 1090519d1d0SKonrad Dybcio }; 1100519d1d0SKonrad Dybcio 111aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 112aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 113aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 114aec89f78SBastian Köcher F(150000000, P_GPLL0, 4, 0, 0), 115aec89f78SBastian Köcher F(171430000, P_GPLL0, 3.5, 0, 0), 116aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 117aec89f78SBastian Köcher F(240000000, P_GPLL0, 2.5, 0, 0), 118aec89f78SBastian Köcher { } 119aec89f78SBastian Köcher }; 120aec89f78SBastian Köcher 121aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = { 122aec89f78SBastian Köcher .cmd_rcgr = 0x1d68, 123aec89f78SBastian Köcher .mnd_width = 8, 124aec89f78SBastian Köcher .hid_width = 5, 125aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 126aec89f78SBastian Köcher .freq_tbl = ftbl_ufs_axi_clk_src, 1270519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 128aec89f78SBastian Köcher .name = "ufs_axi_clk_src", 1290519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 130eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 131aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 132aec89f78SBastian Köcher }, 133aec89f78SBastian Köcher }; 134aec89f78SBastian Köcher 135aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = { 136aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 137aec89f78SBastian Köcher F(125000000, P_GPLL0, 1, 5, 24), 138aec89f78SBastian Köcher { } 139aec89f78SBastian Köcher }; 140aec89f78SBastian Köcher 141aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = { 142aec89f78SBastian Köcher .cmd_rcgr = 0x03d4, 143aec89f78SBastian Köcher .mnd_width = 8, 144aec89f78SBastian Köcher .hid_width = 5, 145aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 146aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_master_clk_src, 1470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 148aec89f78SBastian Köcher .name = "usb30_master_clk_src", 1490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 150eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 151aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 152aec89f78SBastian Köcher }, 153aec89f78SBastian Köcher }; 154aec89f78SBastian Köcher 155aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 156aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 157aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 158aec89f78SBastian Köcher { } 159aec89f78SBastian Köcher }; 160aec89f78SBastian Köcher 161aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 162aec89f78SBastian Köcher .cmd_rcgr = 0x0660, 163aec89f78SBastian Köcher .hid_width = 5, 164aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 165aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 1660519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 167aec89f78SBastian Köcher .name = "blsp1_qup1_i2c_apps_clk_src", 1680519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 169eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 170aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 171aec89f78SBastian Köcher }, 172aec89f78SBastian Köcher }; 173aec89f78SBastian Köcher 17480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = { 175aec89f78SBastian Köcher F(960000, P_XO, 10, 1, 2), 176aec89f78SBastian Köcher F(4800000, P_XO, 4, 0, 0), 177aec89f78SBastian Köcher F(9600000, P_XO, 2, 0, 0), 178aec89f78SBastian Köcher F(15000000, P_GPLL0, 10, 1, 4), 179aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 180aec89f78SBastian Köcher F(24000000, P_GPLL0, 12.5, 1, 2), 181aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 182aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 183aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 184aec89f78SBastian Köcher { } 185aec89f78SBastian Köcher }; 186aec89f78SBastian Köcher 187c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = { 188c09b8023SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 189c09b8023SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 190c09b8023SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 191c09b8023SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 192c09b8023SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 193c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 194c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 195c09b8023SKonrad Dybcio { } 196c09b8023SKonrad Dybcio }; 197c09b8023SKonrad Dybcio 198aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 199aec89f78SBastian Köcher .cmd_rcgr = 0x064c, 200aec89f78SBastian Köcher .mnd_width = 8, 201aec89f78SBastian Köcher .hid_width = 5, 202aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 20380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 2040519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 205aec89f78SBastian Köcher .name = "blsp1_qup1_spi_apps_clk_src", 2060519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 207eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 208aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 209aec89f78SBastian Köcher }, 210aec89f78SBastian Köcher }; 211aec89f78SBastian Köcher 212aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 213aec89f78SBastian Köcher .cmd_rcgr = 0x06e0, 214aec89f78SBastian Köcher .hid_width = 5, 215aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 216aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2170519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 218aec89f78SBastian Köcher .name = "blsp1_qup2_i2c_apps_clk_src", 2190519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 220eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 221aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 222aec89f78SBastian Köcher }, 223aec89f78SBastian Köcher }; 224aec89f78SBastian Köcher 22580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 22680863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 22780863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 22880863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 22980863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 23080863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 23180863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 23280863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 23380863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 23480863521SKonrad Dybcio F(46150000, P_GPLL0, 13, 0, 0), 23580863521SKonrad Dybcio { } 23680863521SKonrad Dybcio }; 23780863521SKonrad Dybcio 238aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 239aec89f78SBastian Köcher .cmd_rcgr = 0x06cc, 240aec89f78SBastian Köcher .mnd_width = 8, 241aec89f78SBastian Köcher .hid_width = 5, 242aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 24380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 2440519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 245aec89f78SBastian Köcher .name = "blsp1_qup2_spi_apps_clk_src", 2460519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 247eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 248aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 249aec89f78SBastian Köcher }, 250aec89f78SBastian Köcher }; 251aec89f78SBastian Köcher 252aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 253aec89f78SBastian Köcher .cmd_rcgr = 0x0760, 254aec89f78SBastian Köcher .hid_width = 5, 255aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 256aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2570519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 258aec89f78SBastian Köcher .name = "blsp1_qup3_i2c_apps_clk_src", 2590519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 260eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 261aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 262aec89f78SBastian Köcher }, 263aec89f78SBastian Köcher }; 264aec89f78SBastian Köcher 26580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 26680863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 26780863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 26880863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 26980863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 27080863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 27180863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 27280863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 27380863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 27480863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 27580863521SKonrad Dybcio { } 27680863521SKonrad Dybcio }; 27780863521SKonrad Dybcio 278aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 279aec89f78SBastian Köcher .cmd_rcgr = 0x074c, 280aec89f78SBastian Köcher .mnd_width = 8, 281aec89f78SBastian Köcher .hid_width = 5, 282aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 28380863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 2840519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 285aec89f78SBastian Köcher .name = "blsp1_qup3_spi_apps_clk_src", 2860519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 287eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 288aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 289aec89f78SBastian Köcher }, 290aec89f78SBastian Köcher }; 291aec89f78SBastian Köcher 292aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 293aec89f78SBastian Köcher .cmd_rcgr = 0x07e0, 294aec89f78SBastian Köcher .hid_width = 5, 295aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 296aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 2970519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 298aec89f78SBastian Köcher .name = "blsp1_qup4_i2c_apps_clk_src", 2990519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 300eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 301aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 302aec89f78SBastian Köcher }, 303aec89f78SBastian Köcher }; 304aec89f78SBastian Köcher 305aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 306aec89f78SBastian Köcher .cmd_rcgr = 0x07cc, 307aec89f78SBastian Köcher .mnd_width = 8, 308aec89f78SBastian Köcher .hid_width = 5, 309aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 31080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 3110519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 312aec89f78SBastian Köcher .name = "blsp1_qup4_spi_apps_clk_src", 3130519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 314eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 315aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 316aec89f78SBastian Köcher }, 317aec89f78SBastian Köcher }; 318aec89f78SBastian Köcher 319aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 320aec89f78SBastian Köcher .cmd_rcgr = 0x0860, 321aec89f78SBastian Köcher .hid_width = 5, 322aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 323aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 325aec89f78SBastian Köcher .name = "blsp1_qup5_i2c_apps_clk_src", 3260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 327eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 328aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 329aec89f78SBastian Köcher }, 330aec89f78SBastian Köcher }; 331aec89f78SBastian Köcher 33280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 33380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 33480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 33580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 33680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 33780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 33880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 33980863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 34080863521SKonrad Dybcio F(40000000, P_GPLL0, 15, 0, 0), 34180863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 34280863521SKonrad Dybcio { } 34380863521SKonrad Dybcio }; 34480863521SKonrad Dybcio 345aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 346aec89f78SBastian Köcher .cmd_rcgr = 0x084c, 347aec89f78SBastian Köcher .mnd_width = 8, 348aec89f78SBastian Köcher .hid_width = 5, 349aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 35080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 3510519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 352aec89f78SBastian Köcher .name = "blsp1_qup5_spi_apps_clk_src", 3530519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 354eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 355aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 356aec89f78SBastian Köcher }, 357aec89f78SBastian Köcher }; 358aec89f78SBastian Köcher 359aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 360aec89f78SBastian Köcher .cmd_rcgr = 0x08e0, 361aec89f78SBastian Köcher .hid_width = 5, 362aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 363aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 3640519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 365aec89f78SBastian Köcher .name = "blsp1_qup6_i2c_apps_clk_src", 3660519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 367eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 368aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 369aec89f78SBastian Köcher }, 370aec89f78SBastian Köcher }; 371aec89f78SBastian Köcher 37280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 37380863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 37480863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 37580863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 37680863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 37780863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 37880863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 37980863521SKonrad Dybcio F(27906976, P_GPLL0, 1, 2, 43), 38080863521SKonrad Dybcio F(41380000, P_GPLL0, 15, 0, 0), 38180863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 38280863521SKonrad Dybcio { } 38380863521SKonrad Dybcio }; 38480863521SKonrad Dybcio 385aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 386aec89f78SBastian Köcher .cmd_rcgr = 0x08cc, 387aec89f78SBastian Köcher .mnd_width = 8, 388aec89f78SBastian Köcher .hid_width = 5, 389aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 39080863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 3910519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 392aec89f78SBastian Köcher .name = "blsp1_qup6_spi_apps_clk_src", 3930519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 394eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 395aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 396aec89f78SBastian Köcher }, 397aec89f78SBastian Köcher }; 398aec89f78SBastian Köcher 399aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 400aec89f78SBastian Köcher F(3686400, P_GPLL0, 1, 96, 15625), 401aec89f78SBastian Köcher F(7372800, P_GPLL0, 1, 192, 15625), 402aec89f78SBastian Köcher F(14745600, P_GPLL0, 1, 384, 15625), 403aec89f78SBastian Köcher F(16000000, P_GPLL0, 5, 2, 15), 404aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 405aec89f78SBastian Köcher F(24000000, P_GPLL0, 5, 1, 5), 406aec89f78SBastian Köcher F(32000000, P_GPLL0, 1, 4, 75), 407aec89f78SBastian Köcher F(40000000, P_GPLL0, 15, 0, 0), 408aec89f78SBastian Köcher F(46400000, P_GPLL0, 1, 29, 375), 409aec89f78SBastian Köcher F(48000000, P_GPLL0, 12.5, 0, 0), 410aec89f78SBastian Köcher F(51200000, P_GPLL0, 1, 32, 375), 411aec89f78SBastian Köcher F(56000000, P_GPLL0, 1, 7, 75), 412aec89f78SBastian Köcher F(58982400, P_GPLL0, 1, 1536, 15625), 413aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 414aec89f78SBastian Köcher F(63160000, P_GPLL0, 9.5, 0, 0), 415aec89f78SBastian Köcher { } 416aec89f78SBastian Köcher }; 417aec89f78SBastian Köcher 418aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 419aec89f78SBastian Köcher .cmd_rcgr = 0x068c, 420aec89f78SBastian Köcher .mnd_width = 16, 421aec89f78SBastian Köcher .hid_width = 5, 422aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 423aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 425aec89f78SBastian Köcher .name = "blsp1_uart1_apps_clk_src", 4260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 427eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 428aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 429aec89f78SBastian Köcher }, 430aec89f78SBastian Köcher }; 431aec89f78SBastian Köcher 432aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 433aec89f78SBastian Köcher .cmd_rcgr = 0x070c, 434aec89f78SBastian Köcher .mnd_width = 16, 435aec89f78SBastian Köcher .hid_width = 5, 436aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 437aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 439aec89f78SBastian Köcher .name = "blsp1_uart2_apps_clk_src", 4400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 441eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 442aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 443aec89f78SBastian Köcher }, 444aec89f78SBastian Köcher }; 445aec89f78SBastian Köcher 446aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 447aec89f78SBastian Köcher .cmd_rcgr = 0x078c, 448aec89f78SBastian Köcher .mnd_width = 16, 449aec89f78SBastian Köcher .hid_width = 5, 450aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 451aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4520519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 453aec89f78SBastian Köcher .name = "blsp1_uart3_apps_clk_src", 4540519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 455eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 456aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 457aec89f78SBastian Köcher }, 458aec89f78SBastian Köcher }; 459aec89f78SBastian Köcher 460aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 461aec89f78SBastian Köcher .cmd_rcgr = 0x080c, 462aec89f78SBastian Köcher .mnd_width = 16, 463aec89f78SBastian Köcher .hid_width = 5, 464aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 465aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4660519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 467aec89f78SBastian Köcher .name = "blsp1_uart4_apps_clk_src", 4680519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 469eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 470aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 471aec89f78SBastian Köcher }, 472aec89f78SBastian Köcher }; 473aec89f78SBastian Köcher 474aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 475aec89f78SBastian Köcher .cmd_rcgr = 0x088c, 476aec89f78SBastian Köcher .mnd_width = 16, 477aec89f78SBastian Köcher .hid_width = 5, 478aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 479aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 481aec89f78SBastian Köcher .name = "blsp1_uart5_apps_clk_src", 4820519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 483eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 484aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 485aec89f78SBastian Köcher }, 486aec89f78SBastian Köcher }; 487aec89f78SBastian Köcher 488aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 489aec89f78SBastian Köcher .cmd_rcgr = 0x090c, 490aec89f78SBastian Köcher .mnd_width = 16, 491aec89f78SBastian Köcher .hid_width = 5, 492aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 493aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 4940519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 495aec89f78SBastian Köcher .name = "blsp1_uart6_apps_clk_src", 4960519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 497eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 498aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 499aec89f78SBastian Köcher }, 500aec89f78SBastian Köcher }; 501aec89f78SBastian Köcher 502aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 503aec89f78SBastian Köcher .cmd_rcgr = 0x09a0, 504aec89f78SBastian Köcher .hid_width = 5, 505aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 506aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5070519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 508aec89f78SBastian Köcher .name = "blsp2_qup1_i2c_apps_clk_src", 5090519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 510eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 511aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 512aec89f78SBastian Köcher }, 513aec89f78SBastian Köcher }; 514aec89f78SBastian Köcher 51580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 51680863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 51780863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 51880863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 51980863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 52080863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 52180863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 52280863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 52380863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 52480863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 52580863521SKonrad Dybcio { } 52680863521SKonrad Dybcio }; 52780863521SKonrad Dybcio 528aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 529aec89f78SBastian Köcher .cmd_rcgr = 0x098c, 530aec89f78SBastian Köcher .mnd_width = 8, 531aec89f78SBastian Köcher .hid_width = 5, 532aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 53380863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 535aec89f78SBastian Köcher .name = "blsp2_qup1_spi_apps_clk_src", 5360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 537eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 538aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 539aec89f78SBastian Köcher }, 540aec89f78SBastian Köcher }; 541aec89f78SBastian Köcher 542aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 543aec89f78SBastian Köcher .cmd_rcgr = 0x0a20, 544aec89f78SBastian Köcher .hid_width = 5, 545aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 546aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5470519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 548aec89f78SBastian Köcher .name = "blsp2_qup2_i2c_apps_clk_src", 5490519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 550eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 551aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 552aec89f78SBastian Köcher }, 553aec89f78SBastian Köcher }; 554aec89f78SBastian Köcher 555aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 556aec89f78SBastian Köcher .cmd_rcgr = 0x0a0c, 557aec89f78SBastian Köcher .mnd_width = 8, 558aec89f78SBastian Köcher .hid_width = 5, 559aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 56080863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 5610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 562aec89f78SBastian Köcher .name = "blsp2_qup2_spi_apps_clk_src", 5630519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 564eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 565aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 566aec89f78SBastian Köcher }, 567aec89f78SBastian Köcher }; 568aec89f78SBastian Köcher 56980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 57080863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 57180863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 57280863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 57380863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 57480863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 57580863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 57680863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 57780863521SKonrad Dybcio F(42860000, P_GPLL0, 14, 0, 0), 57880863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 57980863521SKonrad Dybcio { } 58080863521SKonrad Dybcio }; 58180863521SKonrad Dybcio 582aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 583aec89f78SBastian Köcher .cmd_rcgr = 0x0aa0, 584aec89f78SBastian Köcher .hid_width = 5, 585aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 586aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 5870519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 588aec89f78SBastian Köcher .name = "blsp2_qup3_i2c_apps_clk_src", 5890519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 590eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 591aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 592aec89f78SBastian Köcher }, 593aec89f78SBastian Köcher }; 594aec89f78SBastian Köcher 595aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 596aec89f78SBastian Köcher .cmd_rcgr = 0x0a8c, 597aec89f78SBastian Köcher .mnd_width = 8, 598aec89f78SBastian Köcher .hid_width = 5, 599aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 60080863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 602aec89f78SBastian Köcher .name = "blsp2_qup3_spi_apps_clk_src", 6030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 604eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 605aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 606aec89f78SBastian Köcher }, 607aec89f78SBastian Köcher }; 608aec89f78SBastian Köcher 609aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 610aec89f78SBastian Köcher .cmd_rcgr = 0x0b20, 611aec89f78SBastian Köcher .hid_width = 5, 612aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 613aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6140519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 615aec89f78SBastian Köcher .name = "blsp2_qup4_i2c_apps_clk_src", 6160519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 617eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 618aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 619aec89f78SBastian Köcher }, 620aec89f78SBastian Köcher }; 621aec89f78SBastian Köcher 622aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 623aec89f78SBastian Köcher .cmd_rcgr = 0x0b0c, 624aec89f78SBastian Köcher .mnd_width = 8, 625aec89f78SBastian Köcher .hid_width = 5, 626aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 62780863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 6280519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 629aec89f78SBastian Köcher .name = "blsp2_qup4_spi_apps_clk_src", 6300519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 631eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 632aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 633aec89f78SBastian Köcher }, 634aec89f78SBastian Köcher }; 635aec89f78SBastian Köcher 636aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 637aec89f78SBastian Köcher .cmd_rcgr = 0x0ba0, 638aec89f78SBastian Köcher .hid_width = 5, 639aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 640aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6410519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 642aec89f78SBastian Köcher .name = "blsp2_qup5_i2c_apps_clk_src", 6430519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 644eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 645aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 646aec89f78SBastian Köcher }, 647aec89f78SBastian Köcher }; 648aec89f78SBastian Köcher 649aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 650aec89f78SBastian Köcher .cmd_rcgr = 0x0b8c, 651aec89f78SBastian Köcher .mnd_width = 8, 652aec89f78SBastian Köcher .hid_width = 5, 653aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 65480863521SKonrad Dybcio /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 65580863521SKonrad Dybcio .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 6560519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 657aec89f78SBastian Köcher .name = "blsp2_qup5_spi_apps_clk_src", 6580519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 659eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 660aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 661aec89f78SBastian Köcher }, 662aec89f78SBastian Köcher }; 663aec89f78SBastian Köcher 664aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 665aec89f78SBastian Köcher .cmd_rcgr = 0x0c20, 666aec89f78SBastian Köcher .hid_width = 5, 667aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 668aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 6690519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 670aec89f78SBastian Köcher .name = "blsp2_qup6_i2c_apps_clk_src", 6710519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 672eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 673aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 674aec89f78SBastian Köcher }, 675aec89f78SBastian Köcher }; 676aec89f78SBastian Köcher 67780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 67880863521SKonrad Dybcio F(960000, P_XO, 10, 1, 2), 67980863521SKonrad Dybcio F(4800000, P_XO, 4, 0, 0), 68080863521SKonrad Dybcio F(9600000, P_XO, 2, 0, 0), 68180863521SKonrad Dybcio F(15000000, P_GPLL0, 10, 1, 4), 68280863521SKonrad Dybcio F(19200000, P_XO, 1, 0, 0), 68380863521SKonrad Dybcio F(24000000, P_GPLL0, 12.5, 1, 2), 68480863521SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 68580863521SKonrad Dybcio F(44440000, P_GPLL0, 13.5, 0, 0), 68680863521SKonrad Dybcio F(48000000, P_GPLL0, 12.5, 0, 0), 68780863521SKonrad Dybcio { } 68880863521SKonrad Dybcio }; 68980863521SKonrad Dybcio 690aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 691aec89f78SBastian Köcher .cmd_rcgr = 0x0c0c, 692aec89f78SBastian Köcher .mnd_width = 8, 693aec89f78SBastian Köcher .hid_width = 5, 694aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 69580863521SKonrad Dybcio .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 6960519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 697aec89f78SBastian Köcher .name = "blsp2_qup6_spi_apps_clk_src", 6980519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 699eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 700aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 701aec89f78SBastian Köcher }, 702aec89f78SBastian Köcher }; 703aec89f78SBastian Köcher 704aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 705aec89f78SBastian Köcher .cmd_rcgr = 0x09cc, 706aec89f78SBastian Köcher .mnd_width = 16, 707aec89f78SBastian Köcher .hid_width = 5, 708aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 709aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7100519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 711aec89f78SBastian Köcher .name = "blsp2_uart1_apps_clk_src", 7120519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 713eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 714aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 715aec89f78SBastian Köcher }, 716aec89f78SBastian Köcher }; 717aec89f78SBastian Köcher 718aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 719aec89f78SBastian Köcher .cmd_rcgr = 0x0a4c, 720aec89f78SBastian Köcher .mnd_width = 16, 721aec89f78SBastian Köcher .hid_width = 5, 722aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 723aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7240519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 725aec89f78SBastian Köcher .name = "blsp2_uart2_apps_clk_src", 7260519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 727eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 728aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 729aec89f78SBastian Köcher }, 730aec89f78SBastian Köcher }; 731aec89f78SBastian Köcher 732aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 733aec89f78SBastian Köcher .cmd_rcgr = 0x0acc, 734aec89f78SBastian Köcher .mnd_width = 16, 735aec89f78SBastian Köcher .hid_width = 5, 736aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 737aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7380519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 739aec89f78SBastian Köcher .name = "blsp2_uart3_apps_clk_src", 7400519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 741eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 742aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 743aec89f78SBastian Köcher }, 744aec89f78SBastian Köcher }; 745aec89f78SBastian Köcher 746aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 747aec89f78SBastian Köcher .cmd_rcgr = 0x0b4c, 748aec89f78SBastian Köcher .mnd_width = 16, 749aec89f78SBastian Köcher .hid_width = 5, 750aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 751aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7520519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 753aec89f78SBastian Köcher .name = "blsp2_uart4_apps_clk_src", 7540519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 755eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 756aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 757aec89f78SBastian Köcher }, 758aec89f78SBastian Köcher }; 759aec89f78SBastian Köcher 760aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 761aec89f78SBastian Köcher .cmd_rcgr = 0x0bcc, 762aec89f78SBastian Köcher .mnd_width = 16, 763aec89f78SBastian Köcher .hid_width = 5, 764aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 765aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7660519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 767aec89f78SBastian Köcher .name = "blsp2_uart5_apps_clk_src", 7680519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 769eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 770aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 771aec89f78SBastian Köcher }, 772aec89f78SBastian Köcher }; 773aec89f78SBastian Köcher 774aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 775aec89f78SBastian Köcher .cmd_rcgr = 0x0c4c, 776aec89f78SBastian Köcher .mnd_width = 16, 777aec89f78SBastian Köcher .hid_width = 5, 778aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 779aec89f78SBastian Köcher .freq_tbl = ftbl_blsp_uart_apps_clk_src, 7800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 781aec89f78SBastian Köcher .name = "blsp2_uart6_apps_clk_src", 7820519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 783eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 784aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 785aec89f78SBastian Köcher }, 786aec89f78SBastian Köcher }; 787aec89f78SBastian Köcher 788aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = { 789aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 790aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 791aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 792aec89f78SBastian Köcher { } 793aec89f78SBastian Köcher }; 794aec89f78SBastian Köcher 795aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = { 796aec89f78SBastian Köcher .cmd_rcgr = 0x1904, 797aec89f78SBastian Köcher .mnd_width = 8, 798aec89f78SBastian Köcher .hid_width = 5, 799aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 800aec89f78SBastian Köcher .freq_tbl = ftbl_gp1_clk_src, 8010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 802aec89f78SBastian Köcher .name = "gp1_clk_src", 8030519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 804eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 805aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 806aec89f78SBastian Köcher }, 807aec89f78SBastian Köcher }; 808aec89f78SBastian Köcher 809aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = { 810aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 811aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 812aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 813aec89f78SBastian Köcher { } 814aec89f78SBastian Köcher }; 815aec89f78SBastian Köcher 816aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = { 817aec89f78SBastian Köcher .cmd_rcgr = 0x1944, 818aec89f78SBastian Köcher .mnd_width = 8, 819aec89f78SBastian Köcher .hid_width = 5, 820aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 821aec89f78SBastian Köcher .freq_tbl = ftbl_gp2_clk_src, 8220519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 823aec89f78SBastian Köcher .name = "gp2_clk_src", 8240519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 825eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 826aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 827aec89f78SBastian Köcher }, 828aec89f78SBastian Köcher }; 829aec89f78SBastian Köcher 830aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = { 831aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 832aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 833aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 834aec89f78SBastian Köcher { } 835aec89f78SBastian Köcher }; 836aec89f78SBastian Köcher 837aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = { 838aec89f78SBastian Köcher .cmd_rcgr = 0x1984, 839aec89f78SBastian Köcher .mnd_width = 8, 840aec89f78SBastian Köcher .hid_width = 5, 841aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 842aec89f78SBastian Köcher .freq_tbl = ftbl_gp3_clk_src, 8430519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 844aec89f78SBastian Köcher .name = "gp3_clk_src", 8450519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 846eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 847aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 848aec89f78SBastian Köcher }, 849aec89f78SBastian Köcher }; 850aec89f78SBastian Köcher 851aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 852aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 853aec89f78SBastian Köcher { } 854aec89f78SBastian Köcher }; 855aec89f78SBastian Köcher 856aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = { 857aec89f78SBastian Köcher .cmd_rcgr = 0x1b00, 858aec89f78SBastian Köcher .mnd_width = 8, 859aec89f78SBastian Köcher .hid_width = 5, 860aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_0_aux_clk_src, 8610519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 862aec89f78SBastian Köcher .name = "pcie_0_aux_clk_src", 8630519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8640519d1d0SKonrad Dybcio .fw_name = "xo", 8650519d1d0SKonrad Dybcio }, 866aec89f78SBastian Köcher .num_parents = 1, 867aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 868aec89f78SBastian Köcher }, 869aec89f78SBastian Köcher }; 870aec89f78SBastian Köcher 871aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 872aec89f78SBastian Köcher F(125000000, P_XO, 1, 0, 0), 873aec89f78SBastian Köcher { } 874aec89f78SBastian Köcher }; 875aec89f78SBastian Köcher 876aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = { 877aec89f78SBastian Köcher .cmd_rcgr = 0x1adc, 878aec89f78SBastian Köcher .hid_width = 5, 879aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 8800519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 881aec89f78SBastian Köcher .name = "pcie_0_pipe_clk_src", 8820519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 8830519d1d0SKonrad Dybcio .fw_name = "xo", 8840519d1d0SKonrad Dybcio }, 885aec89f78SBastian Köcher .num_parents = 1, 886aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 887aec89f78SBastian Köcher }, 888aec89f78SBastian Köcher }; 889aec89f78SBastian Köcher 890aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 891aec89f78SBastian Köcher F(1011000, P_XO, 1, 1, 19), 892aec89f78SBastian Köcher { } 893aec89f78SBastian Köcher }; 894aec89f78SBastian Köcher 895aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = { 896aec89f78SBastian Köcher .cmd_rcgr = 0x1b80, 897aec89f78SBastian Köcher .mnd_width = 8, 898aec89f78SBastian Köcher .hid_width = 5, 899aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_1_aux_clk_src, 9000519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 901aec89f78SBastian Köcher .name = "pcie_1_aux_clk_src", 9020519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9030519d1d0SKonrad Dybcio .fw_name = "xo", 9040519d1d0SKonrad Dybcio }, 905aec89f78SBastian Köcher .num_parents = 1, 906aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 907aec89f78SBastian Köcher }, 908aec89f78SBastian Köcher }; 909aec89f78SBastian Köcher 910aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = { 911aec89f78SBastian Köcher .cmd_rcgr = 0x1b5c, 912aec89f78SBastian Köcher .hid_width = 5, 913aec89f78SBastian Köcher .freq_tbl = ftbl_pcie_pipe_clk_src, 9140519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 915aec89f78SBastian Köcher .name = "pcie_1_pipe_clk_src", 9160519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 9170519d1d0SKonrad Dybcio .fw_name = "xo", 9180519d1d0SKonrad Dybcio }, 919aec89f78SBastian Köcher .num_parents = 1, 920aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 921aec89f78SBastian Köcher }, 922aec89f78SBastian Köcher }; 923aec89f78SBastian Köcher 924aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = { 925aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 926aec89f78SBastian Köcher { } 927aec89f78SBastian Köcher }; 928aec89f78SBastian Köcher 929aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = { 930aec89f78SBastian Köcher .cmd_rcgr = 0x0cd0, 931aec89f78SBastian Köcher .hid_width = 5, 932aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 933aec89f78SBastian Köcher .freq_tbl = ftbl_pdm2_clk_src, 9340519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 935aec89f78SBastian Köcher .name = "pdm2_clk_src", 9360519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 937eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 938aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 939aec89f78SBastian Köcher }, 940aec89f78SBastian Köcher }; 941aec89f78SBastian Köcher 942aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 943aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 944aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 945aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 946aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 947aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 948aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 949aec89f78SBastian Köcher F(192000000, P_GPLL4, 2, 0, 0), 950aec89f78SBastian Köcher F(384000000, P_GPLL4, 1, 0, 0), 951aec89f78SBastian Köcher { } 952aec89f78SBastian Köcher }; 953aec89f78SBastian Köcher 954c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = { 955c09b8023SKonrad Dybcio F(144000, P_XO, 16, 3, 25), 956c09b8023SKonrad Dybcio F(400000, P_XO, 12, 1, 4), 957c09b8023SKonrad Dybcio F(20000000, P_GPLL0, 15, 1, 2), 958c09b8023SKonrad Dybcio F(25000000, P_GPLL0, 12, 1, 2), 959c09b8023SKonrad Dybcio F(50000000, P_GPLL0, 12, 0, 0), 960c09b8023SKonrad Dybcio F(100000000, P_GPLL0, 6, 0, 0), 961c09b8023SKonrad Dybcio F(172000000, P_GPLL4, 2, 0, 0), 962c09b8023SKonrad Dybcio F(344000000, P_GPLL4, 1, 0, 0), 963c09b8023SKonrad Dybcio { } 964c09b8023SKonrad Dybcio }; 965c09b8023SKonrad Dybcio 966aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = { 967aec89f78SBastian Köcher .cmd_rcgr = 0x04d0, 968aec89f78SBastian Köcher .mnd_width = 8, 969aec89f78SBastian Köcher .hid_width = 5, 970aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_gpll4_map, 971aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc1_apps_clk_src, 9720519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 973aec89f78SBastian Köcher .name = "sdcc1_apps_clk_src", 9740519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0_gpll4, 975eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4), 9765f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 977aec89f78SBastian Köcher }, 978aec89f78SBastian Köcher }; 979aec89f78SBastian Köcher 980aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 981aec89f78SBastian Köcher F(144000, P_XO, 16, 3, 25), 982aec89f78SBastian Köcher F(400000, P_XO, 12, 1, 4), 983aec89f78SBastian Köcher F(20000000, P_GPLL0, 15, 1, 2), 984aec89f78SBastian Köcher F(25000000, P_GPLL0, 12, 1, 2), 985aec89f78SBastian Köcher F(50000000, P_GPLL0, 12, 0, 0), 986aec89f78SBastian Köcher F(100000000, P_GPLL0, 6, 0, 0), 987aec89f78SBastian Köcher F(200000000, P_GPLL0, 3, 0, 0), 988aec89f78SBastian Köcher { } 989aec89f78SBastian Köcher }; 990aec89f78SBastian Köcher 991aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = { 992aec89f78SBastian Köcher .cmd_rcgr = 0x0510, 993aec89f78SBastian Köcher .mnd_width = 8, 994aec89f78SBastian Köcher .hid_width = 5, 995aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 996aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 9970519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 998aec89f78SBastian Köcher .name = "sdcc2_apps_clk_src", 9990519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1000eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10015f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1002aec89f78SBastian Köcher }, 1003aec89f78SBastian Köcher }; 1004aec89f78SBastian Köcher 1005aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = { 1006aec89f78SBastian Köcher .cmd_rcgr = 0x0550, 1007aec89f78SBastian Köcher .mnd_width = 8, 1008aec89f78SBastian Köcher .hid_width = 5, 1009aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1010aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10110519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1012aec89f78SBastian Köcher .name = "sdcc3_apps_clk_src", 10130519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1014eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10155f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1016aec89f78SBastian Köcher }, 1017aec89f78SBastian Köcher }; 1018aec89f78SBastian Köcher 1019aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = { 1020aec89f78SBastian Köcher .cmd_rcgr = 0x0590, 1021aec89f78SBastian Köcher .mnd_width = 8, 1022aec89f78SBastian Köcher .hid_width = 5, 1023aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1024aec89f78SBastian Köcher .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 10250519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1026aec89f78SBastian Köcher .name = "sdcc4_apps_clk_src", 10270519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1028eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 10295f5001a9SRajendra Nayak .ops = &clk_rcg2_floor_ops, 1030aec89f78SBastian Köcher }, 1031aec89f78SBastian Köcher }; 1032aec89f78SBastian Köcher 1033aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1034aec89f78SBastian Köcher F(105500, P_XO, 1, 1, 182), 1035aec89f78SBastian Köcher { } 1036aec89f78SBastian Köcher }; 1037aec89f78SBastian Köcher 1038aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = { 1039aec89f78SBastian Köcher .cmd_rcgr = 0x0d90, 1040aec89f78SBastian Köcher .mnd_width = 8, 1041aec89f78SBastian Köcher .hid_width = 5, 1042aec89f78SBastian Köcher .freq_tbl = ftbl_tsif_ref_clk_src, 10430519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1044aec89f78SBastian Köcher .name = "tsif_ref_clk_src", 10450519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10460519d1d0SKonrad Dybcio .fw_name = "xo", 10470519d1d0SKonrad Dybcio }, 1048aec89f78SBastian Köcher .num_parents = 1, 1049aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1050aec89f78SBastian Köcher }, 1051aec89f78SBastian Köcher }; 1052aec89f78SBastian Köcher 1053aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1054aec89f78SBastian Köcher F(19200000, P_XO, 1, 0, 0), 1055aec89f78SBastian Köcher F(60000000, P_GPLL0, 10, 0, 0), 1056aec89f78SBastian Köcher { } 1057aec89f78SBastian Köcher }; 1058aec89f78SBastian Köcher 1059aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1060aec89f78SBastian Köcher .cmd_rcgr = 0x03e8, 1061aec89f78SBastian Köcher .hid_width = 5, 1062aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1063aec89f78SBastian Köcher .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 10640519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1065aec89f78SBastian Köcher .name = "usb30_mock_utmi_clk_src", 10660519d1d0SKonrad Dybcio .parent_data = gcc_xo_gpll0, 1067eb2d5058SKonrad Dybcio .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 1068aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1069aec89f78SBastian Köcher }, 1070aec89f78SBastian Köcher }; 1071aec89f78SBastian Köcher 1072aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1073aec89f78SBastian Köcher F(1200000, P_XO, 16, 0, 0), 1074aec89f78SBastian Köcher { } 1075aec89f78SBastian Köcher }; 1076aec89f78SBastian Köcher 1077aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = { 1078aec89f78SBastian Köcher .cmd_rcgr = 0x1414, 1079aec89f78SBastian Köcher .hid_width = 5, 1080aec89f78SBastian Köcher .freq_tbl = ftbl_usb3_phy_aux_clk_src, 10810519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1082aec89f78SBastian Köcher .name = "usb3_phy_aux_clk_src", 10830519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 10840519d1d0SKonrad Dybcio .fw_name = "xo", 10850519d1d0SKonrad Dybcio }, 1086aec89f78SBastian Köcher .num_parents = 1, 1087aec89f78SBastian Köcher .ops = &clk_rcg2_ops, 1088aec89f78SBastian Köcher }, 1089aec89f78SBastian Köcher }; 1090aec89f78SBastian Köcher 1091aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1092aec89f78SBastian Köcher F(75000000, P_GPLL0, 8, 0, 0), 1093aec89f78SBastian Köcher { } 1094aec89f78SBastian Köcher }; 1095aec89f78SBastian Köcher 1096aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = { 1097aec89f78SBastian Köcher .cmd_rcgr = 0x0490, 1098aec89f78SBastian Köcher .hid_width = 5, 1099aec89f78SBastian Köcher .parent_map = gcc_xo_gpll0_map, 1100aec89f78SBastian Köcher .freq_tbl = ftbl_usb_hs_system_clk_src, 11010519d1d0SKonrad Dybcio .clkr.hw.init = &(struct clk_init_data){ 1102aec89f78SBastian Köcher .name = "usb_hs_system_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 clk_branch gcc_blsp1_ahb_clk = { 1110aec89f78SBastian Köcher .halt_reg = 0x05c4, 1111aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1112aec89f78SBastian Köcher .clkr = { 1113aec89f78SBastian Köcher .enable_reg = 0x1484, 1114aec89f78SBastian Köcher .enable_mask = BIT(17), 11150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1116aec89f78SBastian Köcher .name = "gcc_blsp1_ahb_clk", 1117aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1118aec89f78SBastian Köcher }, 1119aec89f78SBastian Köcher }, 1120aec89f78SBastian Köcher }; 1121aec89f78SBastian Köcher 1122aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1123aec89f78SBastian Köcher .halt_reg = 0x0648, 1124aec89f78SBastian Köcher .clkr = { 1125aec89f78SBastian Köcher .enable_reg = 0x0648, 1126aec89f78SBastian Köcher .enable_mask = BIT(0), 11270519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1128aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_i2c_apps_clk", 11290519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1130aec89f78SBastian Köcher .num_parents = 1, 1131aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1132aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1133aec89f78SBastian Köcher }, 1134aec89f78SBastian Köcher }, 1135aec89f78SBastian Köcher }; 1136aec89f78SBastian Köcher 1137aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1138aec89f78SBastian Köcher .halt_reg = 0x0644, 1139aec89f78SBastian Köcher .clkr = { 1140aec89f78SBastian Köcher .enable_reg = 0x0644, 1141aec89f78SBastian Köcher .enable_mask = BIT(0), 11420519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1143aec89f78SBastian Köcher .name = "gcc_blsp1_qup1_spi_apps_clk", 11440519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1145aec89f78SBastian Köcher .num_parents = 1, 1146aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1147aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1148aec89f78SBastian Köcher }, 1149aec89f78SBastian Köcher }, 1150aec89f78SBastian Köcher }; 1151aec89f78SBastian Köcher 1152aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1153aec89f78SBastian Köcher .halt_reg = 0x06c8, 1154aec89f78SBastian Köcher .clkr = { 1155aec89f78SBastian Köcher .enable_reg = 0x06c8, 1156aec89f78SBastian Köcher .enable_mask = BIT(0), 11570519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1158aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_i2c_apps_clk", 11590519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1160aec89f78SBastian Köcher .num_parents = 1, 1161aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1162aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1163aec89f78SBastian Köcher }, 1164aec89f78SBastian Köcher }, 1165aec89f78SBastian Köcher }; 1166aec89f78SBastian Köcher 1167aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1168aec89f78SBastian Köcher .halt_reg = 0x06c4, 1169aec89f78SBastian Köcher .clkr = { 1170aec89f78SBastian Köcher .enable_reg = 0x06c4, 1171aec89f78SBastian Köcher .enable_mask = BIT(0), 11720519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1173aec89f78SBastian Köcher .name = "gcc_blsp1_qup2_spi_apps_clk", 11740519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1175aec89f78SBastian Köcher .num_parents = 1, 1176aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1177aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1178aec89f78SBastian Köcher }, 1179aec89f78SBastian Köcher }, 1180aec89f78SBastian Köcher }; 1181aec89f78SBastian Köcher 1182aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1183aec89f78SBastian Köcher .halt_reg = 0x0748, 1184aec89f78SBastian Köcher .clkr = { 1185aec89f78SBastian Köcher .enable_reg = 0x0748, 1186aec89f78SBastian Köcher .enable_mask = BIT(0), 11870519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1188aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_i2c_apps_clk", 11890519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1190aec89f78SBastian Köcher .num_parents = 1, 1191aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1192aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1193aec89f78SBastian Köcher }, 1194aec89f78SBastian Köcher }, 1195aec89f78SBastian Köcher }; 1196aec89f78SBastian Köcher 1197aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1198aec89f78SBastian Köcher .halt_reg = 0x0744, 1199aec89f78SBastian Köcher .clkr = { 1200aec89f78SBastian Köcher .enable_reg = 0x0744, 1201aec89f78SBastian Köcher .enable_mask = BIT(0), 12020519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1203aec89f78SBastian Köcher .name = "gcc_blsp1_qup3_spi_apps_clk", 12040519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1205aec89f78SBastian Köcher .num_parents = 1, 1206aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1207aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1208aec89f78SBastian Köcher }, 1209aec89f78SBastian Köcher }, 1210aec89f78SBastian Köcher }; 1211aec89f78SBastian Köcher 1212aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1213aec89f78SBastian Köcher .halt_reg = 0x07c8, 1214aec89f78SBastian Köcher .clkr = { 1215aec89f78SBastian Köcher .enable_reg = 0x07c8, 1216aec89f78SBastian Köcher .enable_mask = BIT(0), 12170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1218aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_i2c_apps_clk", 12190519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1220aec89f78SBastian Köcher .num_parents = 1, 1221aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1222aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1223aec89f78SBastian Köcher }, 1224aec89f78SBastian Köcher }, 1225aec89f78SBastian Köcher }; 1226aec89f78SBastian Köcher 1227aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1228aec89f78SBastian Köcher .halt_reg = 0x07c4, 1229aec89f78SBastian Köcher .clkr = { 1230aec89f78SBastian Köcher .enable_reg = 0x07c4, 1231aec89f78SBastian Köcher .enable_mask = BIT(0), 12320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1233aec89f78SBastian Köcher .name = "gcc_blsp1_qup4_spi_apps_clk", 12340519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1235aec89f78SBastian Köcher .num_parents = 1, 1236aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1237aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1238aec89f78SBastian Köcher }, 1239aec89f78SBastian Köcher }, 1240aec89f78SBastian Köcher }; 1241aec89f78SBastian Köcher 1242aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1243aec89f78SBastian Köcher .halt_reg = 0x0848, 1244aec89f78SBastian Köcher .clkr = { 1245aec89f78SBastian Köcher .enable_reg = 0x0848, 1246aec89f78SBastian Köcher .enable_mask = BIT(0), 12470519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1248aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_i2c_apps_clk", 12490519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1250aec89f78SBastian Köcher .num_parents = 1, 1251aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1252aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1253aec89f78SBastian Köcher }, 1254aec89f78SBastian Köcher }, 1255aec89f78SBastian Köcher }; 1256aec89f78SBastian Köcher 1257aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1258aec89f78SBastian Köcher .halt_reg = 0x0844, 1259aec89f78SBastian Köcher .clkr = { 1260aec89f78SBastian Köcher .enable_reg = 0x0844, 1261aec89f78SBastian Köcher .enable_mask = BIT(0), 12620519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1263aec89f78SBastian Köcher .name = "gcc_blsp1_qup5_spi_apps_clk", 12640519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1265aec89f78SBastian Köcher .num_parents = 1, 1266aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1267aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1268aec89f78SBastian Köcher }, 1269aec89f78SBastian Köcher }, 1270aec89f78SBastian Köcher }; 1271aec89f78SBastian Köcher 1272aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1273aec89f78SBastian Köcher .halt_reg = 0x08c8, 1274aec89f78SBastian Köcher .clkr = { 1275aec89f78SBastian Köcher .enable_reg = 0x08c8, 1276aec89f78SBastian Köcher .enable_mask = BIT(0), 12770519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1278aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_i2c_apps_clk", 12790519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1280aec89f78SBastian Köcher .num_parents = 1, 1281aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1282aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1283aec89f78SBastian Köcher }, 1284aec89f78SBastian Köcher }, 1285aec89f78SBastian Köcher }; 1286aec89f78SBastian Köcher 1287aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1288aec89f78SBastian Köcher .halt_reg = 0x08c4, 1289aec89f78SBastian Köcher .clkr = { 1290aec89f78SBastian Köcher .enable_reg = 0x08c4, 1291aec89f78SBastian Köcher .enable_mask = BIT(0), 12920519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1293aec89f78SBastian Köcher .name = "gcc_blsp1_qup6_spi_apps_clk", 12940519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1295aec89f78SBastian Köcher .num_parents = 1, 1296aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1297aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1298aec89f78SBastian Köcher }, 1299aec89f78SBastian Köcher }, 1300aec89f78SBastian Köcher }; 1301aec89f78SBastian Köcher 1302aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1303aec89f78SBastian Köcher .halt_reg = 0x0684, 1304aec89f78SBastian Köcher .clkr = { 1305aec89f78SBastian Köcher .enable_reg = 0x0684, 1306aec89f78SBastian Köcher .enable_mask = BIT(0), 13070519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1308aec89f78SBastian Köcher .name = "gcc_blsp1_uart1_apps_clk", 13090519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1310aec89f78SBastian Köcher .num_parents = 1, 1311aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1312aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1313aec89f78SBastian Köcher }, 1314aec89f78SBastian Köcher }, 1315aec89f78SBastian Köcher }; 1316aec89f78SBastian Köcher 1317aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1318aec89f78SBastian Köcher .halt_reg = 0x0704, 1319aec89f78SBastian Köcher .clkr = { 1320aec89f78SBastian Köcher .enable_reg = 0x0704, 1321aec89f78SBastian Köcher .enable_mask = BIT(0), 13220519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1323aec89f78SBastian Köcher .name = "gcc_blsp1_uart2_apps_clk", 13240519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1325aec89f78SBastian Köcher .num_parents = 1, 1326aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1327aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1328aec89f78SBastian Köcher }, 1329aec89f78SBastian Köcher }, 1330aec89f78SBastian Köcher }; 1331aec89f78SBastian Köcher 1332aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1333aec89f78SBastian Köcher .halt_reg = 0x0784, 1334aec89f78SBastian Köcher .clkr = { 1335aec89f78SBastian Köcher .enable_reg = 0x0784, 1336aec89f78SBastian Köcher .enable_mask = BIT(0), 13370519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1338aec89f78SBastian Köcher .name = "gcc_blsp1_uart3_apps_clk", 13390519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1340aec89f78SBastian Köcher .num_parents = 1, 1341aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1342aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1343aec89f78SBastian Köcher }, 1344aec89f78SBastian Köcher }, 1345aec89f78SBastian Köcher }; 1346aec89f78SBastian Köcher 1347aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1348aec89f78SBastian Köcher .halt_reg = 0x0804, 1349aec89f78SBastian Köcher .clkr = { 1350aec89f78SBastian Köcher .enable_reg = 0x0804, 1351aec89f78SBastian Köcher .enable_mask = BIT(0), 13520519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1353aec89f78SBastian Köcher .name = "gcc_blsp1_uart4_apps_clk", 13540519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1355aec89f78SBastian Köcher .num_parents = 1, 1356aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1357aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1358aec89f78SBastian Köcher }, 1359aec89f78SBastian Köcher }, 1360aec89f78SBastian Köcher }; 1361aec89f78SBastian Köcher 1362aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1363aec89f78SBastian Köcher .halt_reg = 0x0884, 1364aec89f78SBastian Köcher .clkr = { 1365aec89f78SBastian Köcher .enable_reg = 0x0884, 1366aec89f78SBastian Köcher .enable_mask = BIT(0), 13670519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1368aec89f78SBastian Köcher .name = "gcc_blsp1_uart5_apps_clk", 13690519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1370aec89f78SBastian Köcher .num_parents = 1, 1371aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1372aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1373aec89f78SBastian Köcher }, 1374aec89f78SBastian Köcher }, 1375aec89f78SBastian Köcher }; 1376aec89f78SBastian Köcher 1377aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1378aec89f78SBastian Köcher .halt_reg = 0x0904, 1379aec89f78SBastian Köcher .clkr = { 1380aec89f78SBastian Köcher .enable_reg = 0x0904, 1381aec89f78SBastian Köcher .enable_mask = BIT(0), 13820519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1383aec89f78SBastian Köcher .name = "gcc_blsp1_uart6_apps_clk", 13840519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1385aec89f78SBastian Köcher .num_parents = 1, 1386aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1387aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1388aec89f78SBastian Köcher }, 1389aec89f78SBastian Köcher }, 1390aec89f78SBastian Köcher }; 1391aec89f78SBastian Köcher 1392aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = { 1393aec89f78SBastian Köcher .halt_reg = 0x0944, 1394aec89f78SBastian Köcher .halt_check = BRANCH_HALT_VOTED, 1395aec89f78SBastian Köcher .clkr = { 1396aec89f78SBastian Köcher .enable_reg = 0x1484, 1397aec89f78SBastian Köcher .enable_mask = BIT(15), 13980519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1399aec89f78SBastian Köcher .name = "gcc_blsp2_ahb_clk", 1400aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1401aec89f78SBastian Köcher }, 1402aec89f78SBastian Köcher }, 1403aec89f78SBastian Köcher }; 1404aec89f78SBastian Köcher 1405aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1406aec89f78SBastian Köcher .halt_reg = 0x0988, 1407aec89f78SBastian Köcher .clkr = { 1408aec89f78SBastian Köcher .enable_reg = 0x0988, 1409aec89f78SBastian Köcher .enable_mask = BIT(0), 14100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1411aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_i2c_apps_clk", 14120519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1413aec89f78SBastian Köcher .num_parents = 1, 1414aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1415aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1416aec89f78SBastian Köcher }, 1417aec89f78SBastian Köcher }, 1418aec89f78SBastian Köcher }; 1419aec89f78SBastian Köcher 1420aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1421aec89f78SBastian Köcher .halt_reg = 0x0984, 1422aec89f78SBastian Köcher .clkr = { 1423aec89f78SBastian Köcher .enable_reg = 0x0984, 1424aec89f78SBastian Köcher .enable_mask = BIT(0), 14250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1426aec89f78SBastian Köcher .name = "gcc_blsp2_qup1_spi_apps_clk", 14270519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1428aec89f78SBastian Köcher .num_parents = 1, 1429aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1430aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1431aec89f78SBastian Köcher }, 1432aec89f78SBastian Köcher }, 1433aec89f78SBastian Köcher }; 1434aec89f78SBastian Köcher 1435aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1436aec89f78SBastian Köcher .halt_reg = 0x0a08, 1437aec89f78SBastian Köcher .clkr = { 1438aec89f78SBastian Köcher .enable_reg = 0x0a08, 1439aec89f78SBastian Köcher .enable_mask = BIT(0), 14400519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1441aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_i2c_apps_clk", 14420519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1443aec89f78SBastian Köcher .num_parents = 1, 1444aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1445aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1446aec89f78SBastian Köcher }, 1447aec89f78SBastian Köcher }, 1448aec89f78SBastian Köcher }; 1449aec89f78SBastian Köcher 1450aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1451aec89f78SBastian Köcher .halt_reg = 0x0a04, 1452aec89f78SBastian Köcher .clkr = { 1453aec89f78SBastian Köcher .enable_reg = 0x0a04, 1454aec89f78SBastian Köcher .enable_mask = BIT(0), 14550519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1456aec89f78SBastian Köcher .name = "gcc_blsp2_qup2_spi_apps_clk", 14570519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1458aec89f78SBastian Köcher .num_parents = 1, 1459aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1460aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1461aec89f78SBastian Köcher }, 1462aec89f78SBastian Köcher }, 1463aec89f78SBastian Köcher }; 1464aec89f78SBastian Köcher 1465aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1466aec89f78SBastian Köcher .halt_reg = 0x0a88, 1467aec89f78SBastian Köcher .clkr = { 1468aec89f78SBastian Köcher .enable_reg = 0x0a88, 1469aec89f78SBastian Köcher .enable_mask = BIT(0), 14700519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1471aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_i2c_apps_clk", 14720519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1473aec89f78SBastian Köcher .num_parents = 1, 1474aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1475aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1476aec89f78SBastian Köcher }, 1477aec89f78SBastian Köcher }, 1478aec89f78SBastian Köcher }; 1479aec89f78SBastian Köcher 1480aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1481aec89f78SBastian Köcher .halt_reg = 0x0a84, 1482aec89f78SBastian Köcher .clkr = { 1483aec89f78SBastian Köcher .enable_reg = 0x0a84, 1484aec89f78SBastian Köcher .enable_mask = BIT(0), 14850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1486aec89f78SBastian Köcher .name = "gcc_blsp2_qup3_spi_apps_clk", 14870519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1488aec89f78SBastian Köcher .num_parents = 1, 1489aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1490aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1491aec89f78SBastian Köcher }, 1492aec89f78SBastian Köcher }, 1493aec89f78SBastian Köcher }; 1494aec89f78SBastian Köcher 1495aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1496aec89f78SBastian Köcher .halt_reg = 0x0b08, 1497aec89f78SBastian Köcher .clkr = { 1498aec89f78SBastian Köcher .enable_reg = 0x0b08, 1499aec89f78SBastian Köcher .enable_mask = BIT(0), 15000519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1501aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_i2c_apps_clk", 15020519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1503aec89f78SBastian Köcher .num_parents = 1, 1504aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1505aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1506aec89f78SBastian Köcher }, 1507aec89f78SBastian Köcher }, 1508aec89f78SBastian Köcher }; 1509aec89f78SBastian Köcher 1510aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1511aec89f78SBastian Köcher .halt_reg = 0x0b04, 1512aec89f78SBastian Köcher .clkr = { 1513aec89f78SBastian Köcher .enable_reg = 0x0b04, 1514aec89f78SBastian Köcher .enable_mask = BIT(0), 15150519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1516aec89f78SBastian Köcher .name = "gcc_blsp2_qup4_spi_apps_clk", 15170519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1518aec89f78SBastian Köcher .num_parents = 1, 1519aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1520aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1521aec89f78SBastian Köcher }, 1522aec89f78SBastian Köcher }, 1523aec89f78SBastian Köcher }; 1524aec89f78SBastian Köcher 1525aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1526aec89f78SBastian Köcher .halt_reg = 0x0b88, 1527aec89f78SBastian Köcher .clkr = { 1528aec89f78SBastian Köcher .enable_reg = 0x0b88, 1529aec89f78SBastian Köcher .enable_mask = BIT(0), 15300519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1531aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_i2c_apps_clk", 15320519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1533aec89f78SBastian Köcher .num_parents = 1, 1534aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1535aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1536aec89f78SBastian Köcher }, 1537aec89f78SBastian Köcher }, 1538aec89f78SBastian Köcher }; 1539aec89f78SBastian Köcher 1540aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1541aec89f78SBastian Köcher .halt_reg = 0x0b84, 1542aec89f78SBastian Köcher .clkr = { 1543aec89f78SBastian Köcher .enable_reg = 0x0b84, 1544aec89f78SBastian Köcher .enable_mask = BIT(0), 15450519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1546aec89f78SBastian Köcher .name = "gcc_blsp2_qup5_spi_apps_clk", 15470519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1548aec89f78SBastian Köcher .num_parents = 1, 1549aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1550aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1551aec89f78SBastian Köcher }, 1552aec89f78SBastian Köcher }, 1553aec89f78SBastian Köcher }; 1554aec89f78SBastian Köcher 1555aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1556aec89f78SBastian Köcher .halt_reg = 0x0c08, 1557aec89f78SBastian Köcher .clkr = { 1558aec89f78SBastian Köcher .enable_reg = 0x0c08, 1559aec89f78SBastian Köcher .enable_mask = BIT(0), 15600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1561aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_i2c_apps_clk", 15620519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1563aec89f78SBastian Köcher .num_parents = 1, 1564aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1565aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1566aec89f78SBastian Köcher }, 1567aec89f78SBastian Köcher }, 1568aec89f78SBastian Köcher }; 1569aec89f78SBastian Köcher 1570aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1571aec89f78SBastian Köcher .halt_reg = 0x0c04, 1572aec89f78SBastian Köcher .clkr = { 1573aec89f78SBastian Köcher .enable_reg = 0x0c04, 1574aec89f78SBastian Köcher .enable_mask = BIT(0), 15750519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1576aec89f78SBastian Köcher .name = "gcc_blsp2_qup6_spi_apps_clk", 15770519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1578aec89f78SBastian Köcher .num_parents = 1, 1579aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1580aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1581aec89f78SBastian Köcher }, 1582aec89f78SBastian Köcher }, 1583aec89f78SBastian Köcher }; 1584aec89f78SBastian Köcher 1585aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1586aec89f78SBastian Köcher .halt_reg = 0x09c4, 1587aec89f78SBastian Köcher .clkr = { 1588aec89f78SBastian Köcher .enable_reg = 0x09c4, 1589aec89f78SBastian Köcher .enable_mask = BIT(0), 15900519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1591aec89f78SBastian Köcher .name = "gcc_blsp2_uart1_apps_clk", 15920519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1593aec89f78SBastian Köcher .num_parents = 1, 1594aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1595aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1596aec89f78SBastian Köcher }, 1597aec89f78SBastian Köcher }, 1598aec89f78SBastian Köcher }; 1599aec89f78SBastian Köcher 1600aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1601aec89f78SBastian Köcher .halt_reg = 0x0a44, 1602aec89f78SBastian Köcher .clkr = { 1603aec89f78SBastian Köcher .enable_reg = 0x0a44, 1604aec89f78SBastian Köcher .enable_mask = BIT(0), 16050519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1606aec89f78SBastian Köcher .name = "gcc_blsp2_uart2_apps_clk", 16070519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1608aec89f78SBastian Köcher .num_parents = 1, 1609aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1610aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1611aec89f78SBastian Köcher }, 1612aec89f78SBastian Köcher }, 1613aec89f78SBastian Köcher }; 1614aec89f78SBastian Köcher 1615aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1616aec89f78SBastian Köcher .halt_reg = 0x0ac4, 1617aec89f78SBastian Köcher .clkr = { 1618aec89f78SBastian Köcher .enable_reg = 0x0ac4, 1619aec89f78SBastian Köcher .enable_mask = BIT(0), 16200519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1621aec89f78SBastian Köcher .name = "gcc_blsp2_uart3_apps_clk", 16220519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1623aec89f78SBastian Köcher .num_parents = 1, 1624aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1625aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1626aec89f78SBastian Köcher }, 1627aec89f78SBastian Köcher }, 1628aec89f78SBastian Köcher }; 1629aec89f78SBastian Köcher 1630aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1631aec89f78SBastian Köcher .halt_reg = 0x0b44, 1632aec89f78SBastian Köcher .clkr = { 1633aec89f78SBastian Köcher .enable_reg = 0x0b44, 1634aec89f78SBastian Köcher .enable_mask = BIT(0), 16350519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1636aec89f78SBastian Köcher .name = "gcc_blsp2_uart4_apps_clk", 16370519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1638aec89f78SBastian Köcher .num_parents = 1, 1639aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1640aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1641aec89f78SBastian Köcher }, 1642aec89f78SBastian Köcher }, 1643aec89f78SBastian Köcher }; 1644aec89f78SBastian Köcher 1645aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1646aec89f78SBastian Köcher .halt_reg = 0x0bc4, 1647aec89f78SBastian Köcher .clkr = { 1648aec89f78SBastian Köcher .enable_reg = 0x0bc4, 1649aec89f78SBastian Köcher .enable_mask = BIT(0), 16500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1651aec89f78SBastian Köcher .name = "gcc_blsp2_uart5_apps_clk", 16520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1653aec89f78SBastian Köcher .num_parents = 1, 1654aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1655aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1656aec89f78SBastian Köcher }, 1657aec89f78SBastian Köcher }, 1658aec89f78SBastian Köcher }; 1659aec89f78SBastian Köcher 1660aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1661aec89f78SBastian Köcher .halt_reg = 0x0c44, 1662aec89f78SBastian Köcher .clkr = { 1663aec89f78SBastian Köcher .enable_reg = 0x0c44, 1664aec89f78SBastian Köcher .enable_mask = BIT(0), 16650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1666aec89f78SBastian Köcher .name = "gcc_blsp2_uart6_apps_clk", 16670519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1668aec89f78SBastian Köcher .num_parents = 1, 1669aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1670aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1671aec89f78SBastian Köcher }, 1672aec89f78SBastian Köcher }, 1673aec89f78SBastian Köcher }; 1674aec89f78SBastian Köcher 1675aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = { 1676aec89f78SBastian Köcher .halt_reg = 0x1900, 1677aec89f78SBastian Köcher .clkr = { 1678aec89f78SBastian Köcher .enable_reg = 0x1900, 1679aec89f78SBastian Köcher .enable_mask = BIT(0), 16800519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1681aec89f78SBastian Köcher .name = "gcc_gp1_clk", 16820519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1683aec89f78SBastian Köcher .num_parents = 1, 1684aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1685aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1686aec89f78SBastian Köcher }, 1687aec89f78SBastian Köcher }, 1688aec89f78SBastian Köcher }; 1689aec89f78SBastian Köcher 1690aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = { 1691aec89f78SBastian Köcher .halt_reg = 0x1940, 1692aec89f78SBastian Köcher .clkr = { 1693aec89f78SBastian Köcher .enable_reg = 0x1940, 1694aec89f78SBastian Köcher .enable_mask = BIT(0), 16950519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1696aec89f78SBastian Köcher .name = "gcc_gp2_clk", 16970519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1698aec89f78SBastian Köcher .num_parents = 1, 1699aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1700aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1701aec89f78SBastian Köcher }, 1702aec89f78SBastian Köcher }, 1703aec89f78SBastian Köcher }; 1704aec89f78SBastian Köcher 1705aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = { 1706aec89f78SBastian Köcher .halt_reg = 0x1980, 1707aec89f78SBastian Köcher .clkr = { 1708aec89f78SBastian Köcher .enable_reg = 0x1980, 1709aec89f78SBastian Köcher .enable_mask = BIT(0), 17100519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1711aec89f78SBastian Köcher .name = "gcc_gp3_clk", 17120519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1713aec89f78SBastian Köcher .num_parents = 1, 1714aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1715aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1716aec89f78SBastian Köcher }, 1717aec89f78SBastian Köcher }, 1718aec89f78SBastian Köcher }; 1719aec89f78SBastian Köcher 17208c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = { 17218c18b41bSKonrad Dybcio .halt_reg = 0x0280, 17228c18b41bSKonrad Dybcio .clkr = { 17238c18b41bSKonrad Dybcio .enable_reg = 0x0280, 17248c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17250519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17268c18b41bSKonrad Dybcio .name = "gcc_lpass_q6_axi_clk", 17278c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17288c18b41bSKonrad Dybcio }, 17298c18b41bSKonrad Dybcio }, 17308c18b41bSKonrad Dybcio }; 17318c18b41bSKonrad Dybcio 17328c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 17338c18b41bSKonrad Dybcio .halt_reg = 0x0284, 17348c18b41bSKonrad Dybcio .clkr = { 17358c18b41bSKonrad Dybcio .enable_reg = 0x0284, 17368c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17370519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17388c18b41bSKonrad Dybcio .name = "gcc_mss_q6_bimc_axi_clk", 17398c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17408c18b41bSKonrad Dybcio }, 17418c18b41bSKonrad Dybcio }, 17428c18b41bSKonrad Dybcio }; 17438c18b41bSKonrad Dybcio 1744aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = { 1745aec89f78SBastian Köcher .halt_reg = 0x1ad4, 1746aec89f78SBastian Köcher .clkr = { 1747aec89f78SBastian Köcher .enable_reg = 0x1ad4, 1748aec89f78SBastian Köcher .enable_mask = BIT(0), 17490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1750aec89f78SBastian Köcher .name = "gcc_pcie_0_aux_clk", 17510519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1752aec89f78SBastian Köcher .num_parents = 1, 1753aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1754aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1755aec89f78SBastian Köcher }, 1756aec89f78SBastian Köcher }, 1757aec89f78SBastian Köcher }; 1758aec89f78SBastian Köcher 17598c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 17608c18b41bSKonrad Dybcio .halt_reg = 0x1ad0, 17618c18b41bSKonrad Dybcio .clkr = { 17628c18b41bSKonrad Dybcio .enable_reg = 0x1ad0, 17638c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17640519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17658c18b41bSKonrad Dybcio .name = "gcc_pcie_0_cfg_ahb_clk", 17668c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17678c18b41bSKonrad Dybcio }, 17688c18b41bSKonrad Dybcio }, 17698c18b41bSKonrad Dybcio }; 17708c18b41bSKonrad Dybcio 17718c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 17728c18b41bSKonrad Dybcio .halt_reg = 0x1acc, 17738c18b41bSKonrad Dybcio .clkr = { 17748c18b41bSKonrad Dybcio .enable_reg = 0x1acc, 17758c18b41bSKonrad Dybcio .enable_mask = BIT(0), 17760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 17778c18b41bSKonrad Dybcio .name = "gcc_pcie_0_mstr_axi_clk", 17788c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 17798c18b41bSKonrad Dybcio }, 17808c18b41bSKonrad Dybcio }, 17818c18b41bSKonrad Dybcio }; 17828c18b41bSKonrad Dybcio 1783aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = { 1784aec89f78SBastian Köcher .halt_reg = 0x1ad8, 1785aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1786aec89f78SBastian Köcher .clkr = { 1787aec89f78SBastian Köcher .enable_reg = 0x1ad8, 1788aec89f78SBastian Köcher .enable_mask = BIT(0), 17890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1790aec89f78SBastian Köcher .name = "gcc_pcie_0_pipe_clk", 17910519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1792aec89f78SBastian Köcher .num_parents = 1, 1793aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1794aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1795aec89f78SBastian Köcher }, 1796aec89f78SBastian Köcher }, 1797aec89f78SBastian Köcher }; 1798aec89f78SBastian Köcher 17998c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = { 18008c18b41bSKonrad Dybcio .halt_reg = 0x1ac8, 18018c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 18028c18b41bSKonrad Dybcio .clkr = { 18038c18b41bSKonrad Dybcio .enable_reg = 0x1ac8, 18048c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18050519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18068c18b41bSKonrad Dybcio .name = "gcc_pcie_0_slv_axi_clk", 18078c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18088c18b41bSKonrad Dybcio }, 18098c18b41bSKonrad Dybcio }, 18108c18b41bSKonrad Dybcio }; 18118c18b41bSKonrad Dybcio 1812aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = { 1813aec89f78SBastian Köcher .halt_reg = 0x1b54, 1814aec89f78SBastian Köcher .clkr = { 1815aec89f78SBastian Köcher .enable_reg = 0x1b54, 1816aec89f78SBastian Köcher .enable_mask = BIT(0), 18170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1818aec89f78SBastian Köcher .name = "gcc_pcie_1_aux_clk", 18190519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1820aec89f78SBastian Köcher .num_parents = 1, 1821aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1822aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1823aec89f78SBastian Köcher }, 1824aec89f78SBastian Köcher }, 1825aec89f78SBastian Köcher }; 1826aec89f78SBastian Köcher 18278c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 18288c18b41bSKonrad Dybcio .halt_reg = 0x1b54, 18298c18b41bSKonrad Dybcio .clkr = { 18308c18b41bSKonrad Dybcio .enable_reg = 0x1b54, 18318c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18338c18b41bSKonrad Dybcio .name = "gcc_pcie_1_cfg_ahb_clk", 18348c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18358c18b41bSKonrad Dybcio }, 18368c18b41bSKonrad Dybcio }, 18378c18b41bSKonrad Dybcio }; 18388c18b41bSKonrad Dybcio 18398c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 18408c18b41bSKonrad Dybcio .halt_reg = 0x1b50, 18418c18b41bSKonrad Dybcio .clkr = { 18428c18b41bSKonrad Dybcio .enable_reg = 0x1b50, 18438c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18440519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18458c18b41bSKonrad Dybcio .name = "gcc_pcie_1_mstr_axi_clk", 18468c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18478c18b41bSKonrad Dybcio }, 18488c18b41bSKonrad Dybcio }, 18498c18b41bSKonrad Dybcio }; 18508c18b41bSKonrad Dybcio 1851aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = { 1852aec89f78SBastian Köcher .halt_reg = 0x1b58, 1853aec89f78SBastian Köcher .halt_check = BRANCH_HALT_DELAY, 1854aec89f78SBastian Köcher .clkr = { 1855aec89f78SBastian Köcher .enable_reg = 0x1b58, 1856aec89f78SBastian Köcher .enable_mask = BIT(0), 18570519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1858aec89f78SBastian Köcher .name = "gcc_pcie_1_pipe_clk", 18590519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1860aec89f78SBastian Köcher .num_parents = 1, 1861aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1862aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1863aec89f78SBastian Köcher }, 1864aec89f78SBastian Köcher }, 1865aec89f78SBastian Köcher }; 1866aec89f78SBastian Köcher 18678c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = { 18688c18b41bSKonrad Dybcio .halt_reg = 0x1b48, 18698c18b41bSKonrad Dybcio .clkr = { 18708c18b41bSKonrad Dybcio .enable_reg = 0x1b48, 18718c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18720519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 18738c18b41bSKonrad Dybcio .name = "gcc_pcie_1_slv_axi_clk", 18748c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 18758c18b41bSKonrad Dybcio }, 18768c18b41bSKonrad Dybcio }, 18778c18b41bSKonrad Dybcio }; 18788c18b41bSKonrad Dybcio 1879aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = { 1880aec89f78SBastian Köcher .halt_reg = 0x0ccc, 1881aec89f78SBastian Köcher .clkr = { 1882aec89f78SBastian Köcher .enable_reg = 0x0ccc, 1883aec89f78SBastian Köcher .enable_mask = BIT(0), 18840519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1885aec89f78SBastian Köcher .name = "gcc_pdm2_clk", 18860519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1887aec89f78SBastian Köcher .num_parents = 1, 1888aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1889aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1890aec89f78SBastian Köcher }, 1891aec89f78SBastian Köcher }, 1892aec89f78SBastian Köcher }; 1893aec89f78SBastian Köcher 18948c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = { 18958c18b41bSKonrad Dybcio .halt_reg = 0x0cc4, 18968c18b41bSKonrad Dybcio .clkr = { 18978c18b41bSKonrad Dybcio .enable_reg = 0x0cc4, 18988c18b41bSKonrad Dybcio .enable_mask = BIT(0), 18990519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19008c18b41bSKonrad Dybcio .name = "gcc_pdm_ahb_clk", 19018c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19028c18b41bSKonrad Dybcio }, 19038c18b41bSKonrad Dybcio }, 19048c18b41bSKonrad Dybcio }; 19058c18b41bSKonrad Dybcio 1906aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = { 1907aec89f78SBastian Köcher .halt_reg = 0x04c4, 1908aec89f78SBastian Köcher .clkr = { 1909aec89f78SBastian Köcher .enable_reg = 0x04c4, 1910aec89f78SBastian Köcher .enable_mask = BIT(0), 19110519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1912aec89f78SBastian Köcher .name = "gcc_sdcc1_apps_clk", 19130519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1914aec89f78SBastian Köcher .num_parents = 1, 1915aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1916aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1917aec89f78SBastian Köcher }, 1918aec89f78SBastian Köcher }, 1919aec89f78SBastian Köcher }; 1920aec89f78SBastian Köcher 1921eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = { 1922eaff16bcSJeremy McNicoll .halt_reg = 0x04c8, 1923eaff16bcSJeremy McNicoll .clkr = { 1924eaff16bcSJeremy McNicoll .enable_reg = 0x04c8, 1925eaff16bcSJeremy McNicoll .enable_mask = BIT(0), 19260519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1927eaff16bcSJeremy McNicoll .name = "gcc_sdcc1_ahb_clk", 1928eaff16bcSJeremy McNicoll .ops = &clk_branch2_ops, 1929eaff16bcSJeremy McNicoll }, 1930eaff16bcSJeremy McNicoll }, 1931eaff16bcSJeremy McNicoll }; 1932eaff16bcSJeremy McNicoll 19338c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = { 19348c18b41bSKonrad Dybcio .halt_reg = 0x0508, 19358c18b41bSKonrad Dybcio .clkr = { 19368c18b41bSKonrad Dybcio .enable_reg = 0x0508, 19378c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19380519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19398c18b41bSKonrad Dybcio .name = "gcc_sdcc2_ahb_clk", 19408c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19418c18b41bSKonrad Dybcio }, 19428c18b41bSKonrad Dybcio }, 19438c18b41bSKonrad Dybcio }; 19448c18b41bSKonrad Dybcio 1945aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = { 1946aec89f78SBastian Köcher .halt_reg = 0x0504, 1947aec89f78SBastian Köcher .clkr = { 1948aec89f78SBastian Köcher .enable_reg = 0x0504, 1949aec89f78SBastian Köcher .enable_mask = BIT(0), 19500519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1951aec89f78SBastian Köcher .name = "gcc_sdcc2_apps_clk", 19520519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw }, 1953aec89f78SBastian Köcher .num_parents = 1, 1954aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1955aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1956aec89f78SBastian Köcher }, 1957aec89f78SBastian Köcher }, 1958aec89f78SBastian Köcher }; 1959aec89f78SBastian Köcher 19608c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = { 19618c18b41bSKonrad Dybcio .halt_reg = 0x0548, 19628c18b41bSKonrad Dybcio .clkr = { 19638c18b41bSKonrad Dybcio .enable_reg = 0x0548, 19648c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19650519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19668c18b41bSKonrad Dybcio .name = "gcc_sdcc3_ahb_clk", 19678c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19688c18b41bSKonrad Dybcio }, 19698c18b41bSKonrad Dybcio }, 19708c18b41bSKonrad Dybcio }; 19718c18b41bSKonrad Dybcio 1972aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = { 1973aec89f78SBastian Köcher .halt_reg = 0x0544, 1974aec89f78SBastian Köcher .clkr = { 1975aec89f78SBastian Köcher .enable_reg = 0x0544, 1976aec89f78SBastian Köcher .enable_mask = BIT(0), 19770519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 1978aec89f78SBastian Köcher .name = "gcc_sdcc3_apps_clk", 19790519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 1980aec89f78SBastian Köcher .num_parents = 1, 1981aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 1982aec89f78SBastian Köcher .ops = &clk_branch2_ops, 1983aec89f78SBastian Köcher }, 1984aec89f78SBastian Köcher }, 1985aec89f78SBastian Köcher }; 1986aec89f78SBastian Köcher 19878c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = { 19888c18b41bSKonrad Dybcio .halt_reg = 0x0588, 19898c18b41bSKonrad Dybcio .clkr = { 19908c18b41bSKonrad Dybcio .enable_reg = 0x0588, 19918c18b41bSKonrad Dybcio .enable_mask = BIT(0), 19920519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 19938c18b41bSKonrad Dybcio .name = "gcc_sdcc4_ahb_clk", 19948c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 19958c18b41bSKonrad Dybcio }, 19968c18b41bSKonrad Dybcio }, 19978c18b41bSKonrad Dybcio }; 19988c18b41bSKonrad Dybcio 1999aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = { 2000aec89f78SBastian Köcher .halt_reg = 0x0584, 2001aec89f78SBastian Köcher .clkr = { 2002aec89f78SBastian Köcher .enable_reg = 0x0584, 2003aec89f78SBastian Köcher .enable_mask = BIT(0), 20040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2005aec89f78SBastian Köcher .name = "gcc_sdcc4_apps_clk", 20060519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 2007aec89f78SBastian Köcher .num_parents = 1, 2008aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2009aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2010aec89f78SBastian Köcher }, 2011aec89f78SBastian Köcher }, 2012aec89f78SBastian Köcher }; 2013aec89f78SBastian Köcher 2014aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2015aec89f78SBastian Köcher .halt_reg = 0x1d7c, 2016aec89f78SBastian Köcher .clkr = { 2017aec89f78SBastian Köcher .enable_reg = 0x1d7c, 2018aec89f78SBastian Köcher .enable_mask = BIT(0), 20190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2020aec89f78SBastian Köcher .name = "gcc_sys_noc_ufs_axi_clk", 20210519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2022aec89f78SBastian Köcher .num_parents = 1, 2023aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2024aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2025aec89f78SBastian Köcher }, 2026aec89f78SBastian Köcher }, 2027aec89f78SBastian Köcher }; 2028aec89f78SBastian Köcher 2029aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2030aec89f78SBastian Köcher .halt_reg = 0x03fc, 2031aec89f78SBastian Köcher .clkr = { 2032aec89f78SBastian Köcher .enable_reg = 0x03fc, 2033aec89f78SBastian Köcher .enable_mask = BIT(0), 20340519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2035aec89f78SBastian Köcher .name = "gcc_sys_noc_usb3_axi_clk", 20360519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2037aec89f78SBastian Köcher .num_parents = 1, 2038aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2039aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2040aec89f78SBastian Köcher }, 2041aec89f78SBastian Köcher }, 2042aec89f78SBastian Köcher }; 2043aec89f78SBastian Köcher 20448c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = { 20458c18b41bSKonrad Dybcio .halt_reg = 0x0d84, 20468c18b41bSKonrad Dybcio .clkr = { 20478c18b41bSKonrad Dybcio .enable_reg = 0x0d84, 20488c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20508c18b41bSKonrad Dybcio .name = "gcc_tsif_ahb_clk", 20518c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20528c18b41bSKonrad Dybcio }, 20538c18b41bSKonrad Dybcio }, 20548c18b41bSKonrad Dybcio }; 20558c18b41bSKonrad Dybcio 2056aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = { 2057aec89f78SBastian Köcher .halt_reg = 0x0d88, 2058aec89f78SBastian Köcher .clkr = { 2059aec89f78SBastian Köcher .enable_reg = 0x0d88, 2060aec89f78SBastian Köcher .enable_mask = BIT(0), 20610519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2062aec89f78SBastian Köcher .name = "gcc_tsif_ref_clk", 20630519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2064aec89f78SBastian Köcher .num_parents = 1, 2065aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2066aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2067aec89f78SBastian Köcher }, 2068aec89f78SBastian Köcher }, 2069aec89f78SBastian Köcher }; 2070aec89f78SBastian Köcher 20718c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = { 20728c18b41bSKonrad Dybcio .halt_reg = 0x1d4c, 20738c18b41bSKonrad Dybcio .clkr = { 20748c18b41bSKonrad Dybcio .enable_reg = 0x1d4c, 20758c18b41bSKonrad Dybcio .enable_mask = BIT(0), 20760519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 20778c18b41bSKonrad Dybcio .name = "gcc_ufs_ahb_clk", 20788c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 20798c18b41bSKonrad Dybcio }, 20808c18b41bSKonrad Dybcio }, 20818c18b41bSKonrad Dybcio }; 20828c18b41bSKonrad Dybcio 2083aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = { 2084aec89f78SBastian Köcher .halt_reg = 0x1d48, 2085aec89f78SBastian Köcher .clkr = { 2086aec89f78SBastian Köcher .enable_reg = 0x1d48, 2087aec89f78SBastian Köcher .enable_mask = BIT(0), 20880519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2089aec89f78SBastian Köcher .name = "gcc_ufs_axi_clk", 20900519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2091aec89f78SBastian Köcher .num_parents = 1, 2092aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2093aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2094aec89f78SBastian Köcher }, 2095aec89f78SBastian Köcher }, 2096aec89f78SBastian Köcher }; 2097aec89f78SBastian Köcher 2098aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = { 2099aec89f78SBastian Köcher .halt_reg = 0x1d54, 2100aec89f78SBastian Köcher .clkr = { 2101aec89f78SBastian Köcher .enable_reg = 0x1d54, 2102aec89f78SBastian Köcher .enable_mask = BIT(0), 21030519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2104aec89f78SBastian Köcher .name = "gcc_ufs_rx_cfg_clk", 21050519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2106aec89f78SBastian Köcher .num_parents = 1, 2107aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2108aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2109aec89f78SBastian Köcher }, 2110aec89f78SBastian Köcher }, 2111aec89f78SBastian Köcher }; 2112aec89f78SBastian Köcher 21138c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 21148c18b41bSKonrad Dybcio .halt_reg = 0x1d60, 21158c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21168c18b41bSKonrad Dybcio .clkr = { 21178c18b41bSKonrad Dybcio .enable_reg = 0x1d60, 21188c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21190519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21208c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_0_clk", 21218c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21228c18b41bSKonrad Dybcio }, 21238c18b41bSKonrad Dybcio }, 21248c18b41bSKonrad Dybcio }; 21258c18b41bSKonrad Dybcio 21268c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 21278c18b41bSKonrad Dybcio .halt_reg = 0x1d64, 21288c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21298c18b41bSKonrad Dybcio .clkr = { 21308c18b41bSKonrad Dybcio .enable_reg = 0x1d64, 21318c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21338c18b41bSKonrad Dybcio .name = "gcc_ufs_rx_symbol_1_clk", 21348c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21358c18b41bSKonrad Dybcio }, 21368c18b41bSKonrad Dybcio }, 21378c18b41bSKonrad Dybcio }; 21388c18b41bSKonrad Dybcio 2139aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = { 2140aec89f78SBastian Köcher .halt_reg = 0x1d50, 2141aec89f78SBastian Köcher .clkr = { 2142aec89f78SBastian Köcher .enable_reg = 0x1d50, 2143aec89f78SBastian Köcher .enable_mask = BIT(0), 21440519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2145aec89f78SBastian Köcher .name = "gcc_ufs_tx_cfg_clk", 21460519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2147aec89f78SBastian Köcher .num_parents = 1, 2148aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2149aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2150aec89f78SBastian Köcher }, 2151aec89f78SBastian Köcher }, 2152aec89f78SBastian Köcher }; 2153aec89f78SBastian Köcher 21548c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 21558c18b41bSKonrad Dybcio .halt_reg = 0x1d58, 21568c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21578c18b41bSKonrad Dybcio .clkr = { 21588c18b41bSKonrad Dybcio .enable_reg = 0x1d58, 21598c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21600519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21618c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_0_clk", 21628c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21638c18b41bSKonrad Dybcio }, 21648c18b41bSKonrad Dybcio }, 21658c18b41bSKonrad Dybcio }; 21668c18b41bSKonrad Dybcio 21678c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 21688c18b41bSKonrad Dybcio .halt_reg = 0x1d5c, 21698c18b41bSKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 21708c18b41bSKonrad Dybcio .clkr = { 21718c18b41bSKonrad Dybcio .enable_reg = 0x1d5c, 21728c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21730519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21748c18b41bSKonrad Dybcio .name = "gcc_ufs_tx_symbol_1_clk", 21758c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21768c18b41bSKonrad Dybcio }, 21778c18b41bSKonrad Dybcio }, 21788c18b41bSKonrad Dybcio }; 21798c18b41bSKonrad Dybcio 21808c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 21818c18b41bSKonrad Dybcio .halt_reg = 0x04ac, 21828c18b41bSKonrad Dybcio .clkr = { 21838c18b41bSKonrad Dybcio .enable_reg = 0x04ac, 21848c18b41bSKonrad Dybcio .enable_mask = BIT(0), 21850519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 21868c18b41bSKonrad Dybcio .name = "gcc_usb2_hs_phy_sleep_clk", 21870519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 21880519d1d0SKonrad Dybcio .fw_name = "sleep", 21890519d1d0SKonrad Dybcio .name = "sleep" 21900519d1d0SKonrad Dybcio }, 21910519d1d0SKonrad Dybcio .num_parents = 1, 21928c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 21938c18b41bSKonrad Dybcio }, 21948c18b41bSKonrad Dybcio }, 21958c18b41bSKonrad Dybcio }; 21968c18b41bSKonrad Dybcio 2197aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = { 2198aec89f78SBastian Köcher .halt_reg = 0x03c8, 2199aec89f78SBastian Köcher .clkr = { 2200aec89f78SBastian Köcher .enable_reg = 0x03c8, 2201aec89f78SBastian Köcher .enable_mask = BIT(0), 22020519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2203aec89f78SBastian Köcher .name = "gcc_usb30_master_clk", 22040519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2205aec89f78SBastian Köcher .num_parents = 1, 2206aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2207aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2208aec89f78SBastian Köcher }, 2209aec89f78SBastian Köcher }, 2210aec89f78SBastian Köcher }; 2211aec89f78SBastian Köcher 2212aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = { 2213aec89f78SBastian Köcher .halt_reg = 0x03d0, 2214aec89f78SBastian Köcher .clkr = { 2215aec89f78SBastian Köcher .enable_reg = 0x03d0, 2216aec89f78SBastian Köcher .enable_mask = BIT(0), 22170519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2218aec89f78SBastian Köcher .name = "gcc_usb30_mock_utmi_clk", 22190519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2220aec89f78SBastian Köcher .num_parents = 1, 2221aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2222aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2223aec89f78SBastian Köcher }, 2224aec89f78SBastian Köcher }, 2225aec89f78SBastian Köcher }; 2226aec89f78SBastian Köcher 22278c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = { 22288c18b41bSKonrad Dybcio .halt_reg = 0x03cc, 22298c18b41bSKonrad Dybcio .clkr = { 22308c18b41bSKonrad Dybcio .enable_reg = 0x03cc, 22318c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22320519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22338c18b41bSKonrad Dybcio .name = "gcc_usb30_sleep_clk", 22340519d1d0SKonrad Dybcio .parent_data = &(const struct clk_parent_data){ 22350519d1d0SKonrad Dybcio .fw_name = "sleep", 22360519d1d0SKonrad Dybcio .name = "sleep" 22370519d1d0SKonrad Dybcio }, 22380519d1d0SKonrad Dybcio .num_parents = 1, 22398c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22408c18b41bSKonrad Dybcio }, 22418c18b41bSKonrad Dybcio }, 22428c18b41bSKonrad Dybcio }; 22438c18b41bSKonrad Dybcio 2244aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = { 2245aec89f78SBastian Köcher .halt_reg = 0x1408, 2246aec89f78SBastian Köcher .clkr = { 2247aec89f78SBastian Köcher .enable_reg = 0x1408, 2248aec89f78SBastian Köcher .enable_mask = BIT(0), 22490519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2250aec89f78SBastian Köcher .name = "gcc_usb3_phy_aux_clk", 22510519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2252aec89f78SBastian Köcher .num_parents = 1, 2253aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2254aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2255aec89f78SBastian Köcher }, 2256aec89f78SBastian Köcher }, 2257aec89f78SBastian Köcher }; 2258aec89f78SBastian Köcher 2259b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = { 2260b8f415c6SKonrad Dybcio .halt_reg = 0x140c, 2261b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2262b8f415c6SKonrad Dybcio .clkr = { 2263b8f415c6SKonrad Dybcio .enable_reg = 0x140c, 2264b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2265b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2266b8f415c6SKonrad Dybcio .name = "gcc_usb3_phy_pipe_clk", 2267b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2268b8f415c6SKonrad Dybcio }, 2269b8f415c6SKonrad Dybcio }, 2270b8f415c6SKonrad Dybcio }; 2271b8f415c6SKonrad Dybcio 22728c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = { 22738c18b41bSKonrad Dybcio .halt_reg = 0x0488, 22748c18b41bSKonrad Dybcio .clkr = { 22758c18b41bSKonrad Dybcio .enable_reg = 0x0488, 22768c18b41bSKonrad Dybcio .enable_mask = BIT(0), 22770519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 22788c18b41bSKonrad Dybcio .name = "gcc_usb_hs_ahb_clk", 22798c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 22808c18b41bSKonrad Dybcio }, 22818c18b41bSKonrad Dybcio }, 22828c18b41bSKonrad Dybcio }; 22838c18b41bSKonrad Dybcio 2284aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = { 2285aec89f78SBastian Köcher .halt_reg = 0x0484, 2286aec89f78SBastian Köcher .clkr = { 2287aec89f78SBastian Köcher .enable_reg = 0x0484, 2288aec89f78SBastian Köcher .enable_mask = BIT(0), 22890519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2290aec89f78SBastian Köcher .name = "gcc_usb_hs_system_clk", 22910519d1d0SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2292aec89f78SBastian Köcher .num_parents = 1, 2293aec89f78SBastian Köcher .flags = CLK_SET_RATE_PARENT, 2294aec89f78SBastian Köcher .ops = &clk_branch2_ops, 2295aec89f78SBastian Köcher }, 2296aec89f78SBastian Köcher }, 2297aec89f78SBastian Köcher }; 2298aec89f78SBastian Köcher 22998c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 23008c18b41bSKonrad Dybcio .halt_reg = 0x1a84, 23018c18b41bSKonrad Dybcio .clkr = { 23028c18b41bSKonrad Dybcio .enable_reg = 0x1a84, 23038c18b41bSKonrad Dybcio .enable_mask = BIT(0), 23040519d1d0SKonrad Dybcio .hw.init = &(struct clk_init_data){ 23058c18b41bSKonrad Dybcio .name = "gcc_usb_phy_cfg_ahb2phy_clk", 23068c18b41bSKonrad Dybcio .ops = &clk_branch2_ops, 23078c18b41bSKonrad Dybcio }, 23088c18b41bSKonrad Dybcio }, 23098c18b41bSKonrad Dybcio }; 23108c18b41bSKonrad Dybcio 2311b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = { 2312b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2313b8f415c6SKonrad Dybcio .clkr = { 2314b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2315b8f415c6SKonrad Dybcio .enable_mask = BIT(26), 2316b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2317b8f415c6SKonrad Dybcio .name = "gpll0_out_mmsscc", 2318b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2319b8f415c6SKonrad Dybcio .num_parents = 1, 2320b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2321b8f415c6SKonrad Dybcio }, 2322b8f415c6SKonrad Dybcio }, 2323b8f415c6SKonrad Dybcio }; 2324b8f415c6SKonrad Dybcio 2325b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = { 2326b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_DELAY, 2327b8f415c6SKonrad Dybcio .clkr = { 2328b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2329b8f415c6SKonrad Dybcio .enable_mask = BIT(27), 2330b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2331b8f415c6SKonrad Dybcio .name = "gpll0_out_msscc", 2332b8f415c6SKonrad Dybcio .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2333b8f415c6SKonrad Dybcio .num_parents = 1, 2334b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2335b8f415c6SKonrad Dybcio }, 2336b8f415c6SKonrad Dybcio }, 2337b8f415c6SKonrad Dybcio }; 2338b8f415c6SKonrad Dybcio 2339b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = { 2340b8f415c6SKonrad Dybcio .halt_reg = 0x1e00, 2341b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2342b8f415c6SKonrad Dybcio .clkr = { 2343b8f415c6SKonrad Dybcio .enable_reg = 0x1E00, 2344b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2345b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2346b8f415c6SKonrad Dybcio .name = "pcie_0_phy_ldo", 2347b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2348b8f415c6SKonrad Dybcio }, 2349b8f415c6SKonrad Dybcio }, 2350b8f415c6SKonrad Dybcio }; 2351b8f415c6SKonrad Dybcio 2352b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = { 2353b8f415c6SKonrad Dybcio .halt_reg = 0x1e04, 2354b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2355b8f415c6SKonrad Dybcio .clkr = { 2356b8f415c6SKonrad Dybcio .enable_reg = 0x1E04, 2357b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2358b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2359b8f415c6SKonrad Dybcio .name = "pcie_1_phy_ldo", 2360b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2361b8f415c6SKonrad Dybcio }, 2362b8f415c6SKonrad Dybcio }, 2363b8f415c6SKonrad Dybcio }; 2364b8f415c6SKonrad Dybcio 2365b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = { 2366b8f415c6SKonrad Dybcio .halt_reg = 0x1e0c, 2367b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2368b8f415c6SKonrad Dybcio .clkr = { 2369b8f415c6SKonrad Dybcio .enable_reg = 0x1E0C, 2370b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2371b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2372b8f415c6SKonrad Dybcio .name = "ufs_phy_ldo", 2373b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2374b8f415c6SKonrad Dybcio }, 2375b8f415c6SKonrad Dybcio }, 2376b8f415c6SKonrad Dybcio }; 2377b8f415c6SKonrad Dybcio 2378b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = { 2379b8f415c6SKonrad Dybcio .halt_reg = 0x1e08, 2380b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_SKIP, 2381b8f415c6SKonrad Dybcio .clkr = { 2382b8f415c6SKonrad Dybcio .enable_reg = 0x1E08, 2383b8f415c6SKonrad Dybcio .enable_mask = BIT(0), 2384b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2385b8f415c6SKonrad Dybcio .name = "usb_ss_phy_ldo", 2386b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2387b8f415c6SKonrad Dybcio }, 2388b8f415c6SKonrad Dybcio }, 2389b8f415c6SKonrad Dybcio }; 2390b8f415c6SKonrad Dybcio 2391b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = { 2392b8f415c6SKonrad Dybcio .halt_reg = 0x0e04, 2393b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2394b8f415c6SKonrad Dybcio .hwcg_reg = 0x0e04, 2395b8f415c6SKonrad Dybcio .hwcg_bit = 1, 2396b8f415c6SKonrad Dybcio .clkr = { 2397b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2398b8f415c6SKonrad Dybcio .enable_mask = BIT(10), 2399b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2400b8f415c6SKonrad Dybcio .name = "gcc_boot_rom_ahb_clk", 2401b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2402b8f415c6SKonrad Dybcio }, 2403b8f415c6SKonrad Dybcio }, 2404b8f415c6SKonrad Dybcio }; 2405b8f415c6SKonrad Dybcio 2406b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = { 2407b8f415c6SKonrad Dybcio .halt_reg = 0x0d04, 2408b8f415c6SKonrad Dybcio .halt_check = BRANCH_HALT_VOTED, 2409b8f415c6SKonrad Dybcio .clkr = { 2410b8f415c6SKonrad Dybcio .enable_reg = 0x1484, 2411b8f415c6SKonrad Dybcio .enable_mask = BIT(13), 2412b8f415c6SKonrad Dybcio .hw.init = &(struct clk_init_data){ 2413b8f415c6SKonrad Dybcio .name = "gcc_prng_ahb_clk", 2414b8f415c6SKonrad Dybcio .ops = &clk_branch2_ops, 2415b8f415c6SKonrad Dybcio }, 2416b8f415c6SKonrad Dybcio }, 2417b8f415c6SKonrad Dybcio }; 2418b8f415c6SKonrad Dybcio 24198c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = { 24208c18b41bSKonrad Dybcio .gdscr = 0x1ac4, 24218c18b41bSKonrad Dybcio .pd = { 24228c18b41bSKonrad Dybcio .name = "pcie_0", 24238c18b41bSKonrad Dybcio }, 24248c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 24258c18b41bSKonrad Dybcio }; 24268c18b41bSKonrad Dybcio 24278c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = { 24288c18b41bSKonrad Dybcio .gdscr = 0x1b44, 24298c18b41bSKonrad Dybcio .pd = { 24308c18b41bSKonrad Dybcio .name = "pcie_1", 24318c18b41bSKonrad Dybcio }, 24328c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 24338c18b41bSKonrad Dybcio }; 24348c18b41bSKonrad Dybcio 24358c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = { 24368c18b41bSKonrad Dybcio .gdscr = 0x3c4, 24378c18b41bSKonrad Dybcio .pd = { 24388c18b41bSKonrad Dybcio .name = "usb30", 24398c18b41bSKonrad Dybcio }, 24408c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 24418c18b41bSKonrad Dybcio }; 24428c18b41bSKonrad Dybcio 24438c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = { 24448c18b41bSKonrad Dybcio .gdscr = 0x1d44, 24458c18b41bSKonrad Dybcio .pd = { 24468c18b41bSKonrad Dybcio .name = "ufs", 24478c18b41bSKonrad Dybcio }, 24488c18b41bSKonrad Dybcio .pwrsts = PWRSTS_OFF_ON, 24498c18b41bSKonrad Dybcio }; 24508c18b41bSKonrad Dybcio 2451aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = { 2452aec89f78SBastian Köcher [GPLL0_EARLY] = &gpll0_early.clkr, 2453aec89f78SBastian Köcher [GPLL0] = &gpll0.clkr, 2454aec89f78SBastian Köcher [GPLL4_EARLY] = &gpll4_early.clkr, 2455aec89f78SBastian Köcher [GPLL4] = &gpll4.clkr, 2456aec89f78SBastian Köcher [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2457aec89f78SBastian Köcher [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2458aec89f78SBastian Köcher [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2459aec89f78SBastian Köcher [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2460aec89f78SBastian Köcher [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2461aec89f78SBastian Köcher [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2462aec89f78SBastian Köcher [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2463aec89f78SBastian Köcher [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2464aec89f78SBastian Köcher [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2465aec89f78SBastian Köcher [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2466aec89f78SBastian Köcher [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2467aec89f78SBastian Köcher [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2468aec89f78SBastian Köcher [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2469aec89f78SBastian Köcher [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2470aec89f78SBastian Köcher [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2471aec89f78SBastian Köcher [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2472aec89f78SBastian Köcher [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2473aec89f78SBastian Köcher [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2474aec89f78SBastian Köcher [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2475aec89f78SBastian Köcher [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2476aec89f78SBastian Köcher [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2477aec89f78SBastian Köcher [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2478aec89f78SBastian Köcher [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2479aec89f78SBastian Köcher [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2480aec89f78SBastian Köcher [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2481aec89f78SBastian Köcher [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2482aec89f78SBastian Köcher [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2483aec89f78SBastian Köcher [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2484aec89f78SBastian Köcher [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2485aec89f78SBastian Köcher [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2486aec89f78SBastian Köcher [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2487aec89f78SBastian Köcher [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2488aec89f78SBastian Köcher [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2489aec89f78SBastian Köcher [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2490aec89f78SBastian Köcher [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2491aec89f78SBastian Köcher [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2492aec89f78SBastian Köcher [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2493aec89f78SBastian Köcher [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2494aec89f78SBastian Köcher [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2495aec89f78SBastian Köcher [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2496aec89f78SBastian Köcher [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2497aec89f78SBastian Köcher [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2498aec89f78SBastian Köcher [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2499aec89f78SBastian Köcher [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2500aec89f78SBastian Köcher [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2501aec89f78SBastian Köcher [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2502aec89f78SBastian Köcher [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2503aec89f78SBastian Köcher [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2504aec89f78SBastian Köcher [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2505aec89f78SBastian Köcher [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2506aec89f78SBastian Köcher [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2507aec89f78SBastian Köcher [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2508aec89f78SBastian Köcher [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2509aec89f78SBastian Köcher [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2510aec89f78SBastian Köcher [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2511aec89f78SBastian Köcher [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2512aec89f78SBastian Köcher [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2513aec89f78SBastian Köcher [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2514aec89f78SBastian Köcher [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2515aec89f78SBastian Köcher [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2516aec89f78SBastian Köcher [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2517aec89f78SBastian Köcher [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2518aec89f78SBastian Köcher [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2519aec89f78SBastian Köcher [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2520aec89f78SBastian Köcher [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2521aec89f78SBastian Köcher [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2522aec89f78SBastian Köcher [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2523aec89f78SBastian Köcher [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2524aec89f78SBastian Köcher [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2525aec89f78SBastian Köcher [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2526aec89f78SBastian Köcher [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2527aec89f78SBastian Köcher [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2528aec89f78SBastian Köcher [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2529aec89f78SBastian Köcher [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2530aec89f78SBastian Köcher [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2531aec89f78SBastian Köcher [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2532aec89f78SBastian Köcher [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2533aec89f78SBastian Köcher [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2534aec89f78SBastian Köcher [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2535aec89f78SBastian Köcher [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2536aec89f78SBastian Köcher [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2537aec89f78SBastian Köcher [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2538aec89f78SBastian Köcher [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2539aec89f78SBastian Köcher [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2540aec89f78SBastian Köcher [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2541aec89f78SBastian Köcher [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2542aec89f78SBastian Köcher [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2543aec89f78SBastian Köcher [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2544aec89f78SBastian Köcher [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2545aec89f78SBastian Köcher [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2546aec89f78SBastian Köcher [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2547aec89f78SBastian Köcher [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2548aec89f78SBastian Köcher [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2549aec89f78SBastian Köcher [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2550aec89f78SBastian Köcher [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 25518c18b41bSKonrad Dybcio [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 25528c18b41bSKonrad Dybcio [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2553aec89f78SBastian Köcher [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 25548c18b41bSKonrad Dybcio [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 25558c18b41bSKonrad Dybcio [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2556aec89f78SBastian Köcher [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 25578c18b41bSKonrad Dybcio [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2558aec89f78SBastian Köcher [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 25598c18b41bSKonrad Dybcio [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 25608c18b41bSKonrad Dybcio [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2561aec89f78SBastian Köcher [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 25628c18b41bSKonrad Dybcio [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2563aec89f78SBastian Köcher [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 25648c18b41bSKonrad Dybcio [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2565eaff16bcSJeremy McNicoll [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 25668c18b41bSKonrad Dybcio [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 25678c18b41bSKonrad Dybcio [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 25688c18b41bSKonrad Dybcio [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 25698c18b41bSKonrad Dybcio [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 25708c18b41bSKonrad Dybcio [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 25718c18b41bSKonrad Dybcio [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 25728c18b41bSKonrad Dybcio [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2573aec89f78SBastian Köcher [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2574aec89f78SBastian Köcher [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 25758c18b41bSKonrad Dybcio [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2576aec89f78SBastian Köcher [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 25778c18b41bSKonrad Dybcio [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2578aec89f78SBastian Köcher [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2579aec89f78SBastian Köcher [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 25808c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 25818c18b41bSKonrad Dybcio [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2582aec89f78SBastian Köcher [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 25838c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 25848c18b41bSKonrad Dybcio [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 25858c18b41bSKonrad Dybcio [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2586aec89f78SBastian Köcher [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2587aec89f78SBastian Köcher [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 25888c18b41bSKonrad Dybcio [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2589aec89f78SBastian Köcher [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2590b8f415c6SKonrad Dybcio [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr, 25918c18b41bSKonrad Dybcio [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2592aec89f78SBastian Köcher [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 25938c18b41bSKonrad Dybcio [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2594b8f415c6SKonrad Dybcio [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr, 2595b8f415c6SKonrad Dybcio [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr, 2596b8f415c6SKonrad Dybcio [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr, 2597b8f415c6SKonrad Dybcio [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr, 2598b8f415c6SKonrad Dybcio [UFS_PHY_LDO] = &ufs_phy_ldo.clkr, 2599b8f415c6SKonrad Dybcio [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr, 2600b8f415c6SKonrad Dybcio [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2601b8f415c6SKonrad Dybcio [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 2602*3494894aSKonrad Dybcio 2603*3494894aSKonrad Dybcio /* 2604*3494894aSKonrad Dybcio * The following clocks should NOT be managed by this driver, but they once were 2605*3494894aSKonrad Dybcio * mistakengly added. Now they are only here to indicate that they are not defined 2606*3494894aSKonrad Dybcio * on purpose, even though the names will stay in the header file (for ABI sanity). 2607*3494894aSKonrad Dybcio */ 2608*3494894aSKonrad Dybcio [CONFIG_NOC_CLK_SRC] = NULL, 2609*3494894aSKonrad Dybcio [PERIPH_NOC_CLK_SRC] = NULL, 2610*3494894aSKonrad Dybcio [SYSTEM_NOC_CLK_SRC] = NULL, 26118c18b41bSKonrad Dybcio }; 26128c18b41bSKonrad Dybcio 26138c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = { 261435bb1e6eSKonrad Dybcio /* This GDSC does not exist, but ABI has to remain intact */ 261535bb1e6eSKonrad Dybcio [PCIE_GDSC] = NULL, 26168c18b41bSKonrad Dybcio [PCIE_0_GDSC] = &pcie_0_gdsc, 26178c18b41bSKonrad Dybcio [PCIE_1_GDSC] = &pcie_1_gdsc, 26188c18b41bSKonrad Dybcio [USB30_GDSC] = &usb30_gdsc, 26198c18b41bSKonrad Dybcio [UFS_GDSC] = &ufs_gdsc, 26208c18b41bSKonrad Dybcio }; 26218c18b41bSKonrad Dybcio 26228c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = { 26238c18b41bSKonrad Dybcio [USB3_PHY_RESET] = { 0x1400 }, 26248c18b41bSKonrad Dybcio [USB3PHY_PHY_RESET] = { 0x1404 }, 2625a888dc4cSKonrad Dybcio [MSS_RESET] = { 0x1680 }, 26268c18b41bSKonrad Dybcio [PCIE_PHY_0_RESET] = { 0x1b18 }, 26278c18b41bSKonrad Dybcio [PCIE_PHY_1_RESET] = { 0x1b98 }, 26288c18b41bSKonrad Dybcio [QUSB2_PHY_RESET] = { 0x04b8 }, 2629aec89f78SBastian Köcher }; 2630aec89f78SBastian Köcher 2631aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = { 2632aec89f78SBastian Köcher .reg_bits = 32, 2633aec89f78SBastian Köcher .reg_stride = 4, 2634aec89f78SBastian Köcher .val_bits = 32, 2635aec89f78SBastian Köcher .max_register = 0x2000, 2636aec89f78SBastian Köcher .fast_io = true, 2637aec89f78SBastian Köcher }; 2638aec89f78SBastian Köcher 2639aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = { 2640aec89f78SBastian Köcher .config = &gcc_msm8994_regmap_config, 2641aec89f78SBastian Köcher .clks = gcc_msm8994_clocks, 2642aec89f78SBastian Köcher .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 26438c18b41bSKonrad Dybcio .resets = gcc_msm8994_resets, 26448c18b41bSKonrad Dybcio .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 26458c18b41bSKonrad Dybcio .gdscs = gcc_msm8994_gdscs, 26468c18b41bSKonrad Dybcio .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2647aec89f78SBastian Köcher }; 2648aec89f78SBastian Köcher 2649aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = { 2650c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8992" }, 2651c09b8023SKonrad Dybcio { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */ 2652aec89f78SBastian Köcher {} 2653aec89f78SBastian Köcher }; 2654aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2655aec89f78SBastian Köcher 2656aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev) 2657aec89f78SBastian Köcher { 2658c09b8023SKonrad Dybcio if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) { 2659c09b8023SKonrad Dybcio /* MSM8992 features less clocks and some have different freq tables */ 2660c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL; 2661c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL; 2662c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL; 2663c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL; 2664c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL; 2665c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL; 2666c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL; 2667c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL; 2668c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL; 2669c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL; 2670c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL; 2671c09b8023SKonrad Dybcio 2672c09b8023SKonrad Dybcio sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992; 2673c09b8023SKonrad Dybcio blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2674c09b8023SKonrad Dybcio blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2675c09b8023SKonrad Dybcio blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2676c09b8023SKonrad Dybcio blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2677c09b8023SKonrad Dybcio blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2678c09b8023SKonrad Dybcio blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2679c09b8023SKonrad Dybcio blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2680c09b8023SKonrad Dybcio blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2681c09b8023SKonrad Dybcio blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2682c09b8023SKonrad Dybcio blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2683c09b8023SKonrad Dybcio blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2684c09b8023SKonrad Dybcio blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992; 2685c09b8023SKonrad Dybcio 2686c09b8023SKonrad Dybcio /* 2687c09b8023SKonrad Dybcio * Some 8992 boards might *possibly* use 2688c09b8023SKonrad Dybcio * PCIe1 clocks and controller, but it's not 2689c09b8023SKonrad Dybcio * standard and they should be disabled otherwise. 2690c09b8023SKonrad Dybcio */ 2691c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL; 2692c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL; 2693c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL; 2694c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL; 2695c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL; 2696c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL; 2697c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL; 2698c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL; 2699c09b8023SKonrad Dybcio gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL; 2700c09b8023SKonrad Dybcio } 2701c09b8023SKonrad Dybcio 2702aec89f78SBastian Köcher return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2703aec89f78SBastian Köcher } 2704aec89f78SBastian Köcher 2705aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = { 2706aec89f78SBastian Köcher .probe = gcc_msm8994_probe, 2707aec89f78SBastian Köcher .driver = { 2708aec89f78SBastian Köcher .name = "gcc-msm8994", 2709aec89f78SBastian Köcher .of_match_table = gcc_msm8994_match_table, 2710aec89f78SBastian Köcher }, 2711aec89f78SBastian Köcher }; 2712aec89f78SBastian Köcher 2713aec89f78SBastian Köcher static int __init gcc_msm8994_init(void) 2714aec89f78SBastian Köcher { 2715aec89f78SBastian Köcher return platform_driver_register(&gcc_msm8994_driver); 2716aec89f78SBastian Köcher } 2717aec89f78SBastian Köcher core_initcall(gcc_msm8994_init); 2718aec89f78SBastian Köcher 2719aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void) 2720aec89f78SBastian Köcher { 2721aec89f78SBastian Köcher platform_driver_unregister(&gcc_msm8994_driver); 2722aec89f78SBastian Köcher } 2723aec89f78SBastian Köcher module_exit(gcc_msm8994_exit); 2724aec89f78SBastian Köcher 2725aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2726aec89f78SBastian Köcher MODULE_LICENSE("GPL v2"); 2727aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994"); 2728