162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2013, The Linux Foundation. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/kernel.h> 762306a36Sopenharmony_ci#include <linux/bitops.h> 862306a36Sopenharmony_ci#include <linux/err.h> 962306a36Sopenharmony_ci#include <linux/platform_device.h> 1062306a36Sopenharmony_ci#include <linux/module.h> 1162306a36Sopenharmony_ci#include <linux/of.h> 1262306a36Sopenharmony_ci#include <linux/clk-provider.h> 1362306a36Sopenharmony_ci#include <linux/regmap.h> 1462306a36Sopenharmony_ci#include <linux/reset-controller.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <dt-bindings/clock/qcom,gcc-msm8660.h> 1762306a36Sopenharmony_ci#include <dt-bindings/reset/qcom,gcc-msm8660.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "common.h" 2062306a36Sopenharmony_ci#include "clk-regmap.h" 2162306a36Sopenharmony_ci#include "clk-pll.h" 2262306a36Sopenharmony_ci#include "clk-rcg.h" 2362306a36Sopenharmony_ci#include "clk-branch.h" 2462306a36Sopenharmony_ci#include "reset.h" 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistatic struct clk_pll pll8 = { 2762306a36Sopenharmony_ci .l_reg = 0x3144, 2862306a36Sopenharmony_ci .m_reg = 0x3148, 2962306a36Sopenharmony_ci .n_reg = 0x314c, 3062306a36Sopenharmony_ci .config_reg = 0x3154, 3162306a36Sopenharmony_ci .mode_reg = 0x3140, 3262306a36Sopenharmony_ci .status_reg = 0x3158, 3362306a36Sopenharmony_ci .status_bit = 16, 3462306a36Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3562306a36Sopenharmony_ci .name = "pll8", 3662306a36Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 3762306a36Sopenharmony_ci .fw_name = "pxo", .name = "pxo_board", 3862306a36Sopenharmony_ci }, 3962306a36Sopenharmony_ci .num_parents = 1, 4062306a36Sopenharmony_ci .ops = &clk_pll_ops, 4162306a36Sopenharmony_ci }, 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cistatic struct clk_regmap pll8_vote = { 4562306a36Sopenharmony_ci .enable_reg = 0x34c0, 4662306a36Sopenharmony_ci .enable_mask = BIT(8), 4762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 4862306a36Sopenharmony_ci .name = "pll8_vote", 4962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 5062306a36Sopenharmony_ci &pll8.clkr.hw 5162306a36Sopenharmony_ci }, 5262306a36Sopenharmony_ci .num_parents = 1, 5362306a36Sopenharmony_ci .ops = &clk_pll_vote_ops, 5462306a36Sopenharmony_ci }, 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cienum { 5862306a36Sopenharmony_ci P_PXO, 5962306a36Sopenharmony_ci P_PLL8, 6062306a36Sopenharmony_ci P_CXO, 6162306a36Sopenharmony_ci}; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cistatic const struct parent_map gcc_pxo_pll8_map[] = { 6462306a36Sopenharmony_ci { P_PXO, 0 }, 6562306a36Sopenharmony_ci { P_PLL8, 3 } 6662306a36Sopenharmony_ci}; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistatic const struct clk_parent_data gcc_pxo_pll8[] = { 6962306a36Sopenharmony_ci { .fw_name = "pxo", .name = "pxo_board" }, 7062306a36Sopenharmony_ci { .hw = &pll8_vote.hw }, 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cistatic const struct parent_map gcc_pxo_pll8_cxo_map[] = { 7462306a36Sopenharmony_ci { P_PXO, 0 }, 7562306a36Sopenharmony_ci { P_PLL8, 3 }, 7662306a36Sopenharmony_ci { P_CXO, 5 } 7762306a36Sopenharmony_ci}; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_cistatic const struct clk_parent_data gcc_pxo_pll8_cxo[] = { 8062306a36Sopenharmony_ci { .fw_name = "pxo", .name = "pxo_board" }, 8162306a36Sopenharmony_ci { .hw = &pll8_vote.hw }, 8262306a36Sopenharmony_ci { .fw_name = "cxo", .name = "cxo_board" }, 8362306a36Sopenharmony_ci}; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistatic struct freq_tbl clk_tbl_gsbi_uart[] = { 8662306a36Sopenharmony_ci { 1843200, P_PLL8, 2, 6, 625 }, 8762306a36Sopenharmony_ci { 3686400, P_PLL8, 2, 12, 625 }, 8862306a36Sopenharmony_ci { 7372800, P_PLL8, 2, 24, 625 }, 8962306a36Sopenharmony_ci { 14745600, P_PLL8, 2, 48, 625 }, 9062306a36Sopenharmony_ci { 16000000, P_PLL8, 4, 1, 6 }, 9162306a36Sopenharmony_ci { 24000000, P_PLL8, 4, 1, 4 }, 9262306a36Sopenharmony_ci { 32000000, P_PLL8, 4, 1, 3 }, 9362306a36Sopenharmony_ci { 40000000, P_PLL8, 1, 5, 48 }, 9462306a36Sopenharmony_ci { 46400000, P_PLL8, 1, 29, 240 }, 9562306a36Sopenharmony_ci { 48000000, P_PLL8, 4, 1, 2 }, 9662306a36Sopenharmony_ci { 51200000, P_PLL8, 1, 2, 15 }, 9762306a36Sopenharmony_ci { 56000000, P_PLL8, 1, 7, 48 }, 9862306a36Sopenharmony_ci { 58982400, P_PLL8, 1, 96, 625 }, 9962306a36Sopenharmony_ci { 64000000, P_PLL8, 2, 1, 3 }, 10062306a36Sopenharmony_ci { } 10162306a36Sopenharmony_ci}; 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_cistatic struct clk_rcg gsbi1_uart_src = { 10462306a36Sopenharmony_ci .ns_reg = 0x29d4, 10562306a36Sopenharmony_ci .md_reg = 0x29d0, 10662306a36Sopenharmony_ci .mn = { 10762306a36Sopenharmony_ci .mnctr_en_bit = 8, 10862306a36Sopenharmony_ci .mnctr_reset_bit = 7, 10962306a36Sopenharmony_ci .mnctr_mode_shift = 5, 11062306a36Sopenharmony_ci .n_val_shift = 16, 11162306a36Sopenharmony_ci .m_val_shift = 16, 11262306a36Sopenharmony_ci .width = 16, 11362306a36Sopenharmony_ci }, 11462306a36Sopenharmony_ci .p = { 11562306a36Sopenharmony_ci .pre_div_shift = 3, 11662306a36Sopenharmony_ci .pre_div_width = 2, 11762306a36Sopenharmony_ci }, 11862306a36Sopenharmony_ci .s = { 11962306a36Sopenharmony_ci .src_sel_shift = 0, 12062306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 12162306a36Sopenharmony_ci }, 12262306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 12362306a36Sopenharmony_ci .clkr = { 12462306a36Sopenharmony_ci .enable_reg = 0x29d4, 12562306a36Sopenharmony_ci .enable_mask = BIT(11), 12662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12762306a36Sopenharmony_ci .name = "gsbi1_uart_src", 12862306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 12962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 13062306a36Sopenharmony_ci .ops = &clk_rcg_ops, 13162306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 13262306a36Sopenharmony_ci }, 13362306a36Sopenharmony_ci }, 13462306a36Sopenharmony_ci}; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_cistatic struct clk_branch gsbi1_uart_clk = { 13762306a36Sopenharmony_ci .halt_reg = 0x2fcc, 13862306a36Sopenharmony_ci .halt_bit = 10, 13962306a36Sopenharmony_ci .clkr = { 14062306a36Sopenharmony_ci .enable_reg = 0x29d4, 14162306a36Sopenharmony_ci .enable_mask = BIT(9), 14262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14362306a36Sopenharmony_ci .name = "gsbi1_uart_clk", 14462306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 14562306a36Sopenharmony_ci &gsbi1_uart_src.clkr.hw 14662306a36Sopenharmony_ci }, 14762306a36Sopenharmony_ci .num_parents = 1, 14862306a36Sopenharmony_ci .ops = &clk_branch_ops, 14962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15062306a36Sopenharmony_ci }, 15162306a36Sopenharmony_ci }, 15262306a36Sopenharmony_ci}; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_cistatic struct clk_rcg gsbi2_uart_src = { 15562306a36Sopenharmony_ci .ns_reg = 0x29f4, 15662306a36Sopenharmony_ci .md_reg = 0x29f0, 15762306a36Sopenharmony_ci .mn = { 15862306a36Sopenharmony_ci .mnctr_en_bit = 8, 15962306a36Sopenharmony_ci .mnctr_reset_bit = 7, 16062306a36Sopenharmony_ci .mnctr_mode_shift = 5, 16162306a36Sopenharmony_ci .n_val_shift = 16, 16262306a36Sopenharmony_ci .m_val_shift = 16, 16362306a36Sopenharmony_ci .width = 16, 16462306a36Sopenharmony_ci }, 16562306a36Sopenharmony_ci .p = { 16662306a36Sopenharmony_ci .pre_div_shift = 3, 16762306a36Sopenharmony_ci .pre_div_width = 2, 16862306a36Sopenharmony_ci }, 16962306a36Sopenharmony_ci .s = { 17062306a36Sopenharmony_ci .src_sel_shift = 0, 17162306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 17262306a36Sopenharmony_ci }, 17362306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 17462306a36Sopenharmony_ci .clkr = { 17562306a36Sopenharmony_ci .enable_reg = 0x29f4, 17662306a36Sopenharmony_ci .enable_mask = BIT(11), 17762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17862306a36Sopenharmony_ci .name = "gsbi2_uart_src", 17962306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 18062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 18162306a36Sopenharmony_ci .ops = &clk_rcg_ops, 18262306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 18362306a36Sopenharmony_ci }, 18462306a36Sopenharmony_ci }, 18562306a36Sopenharmony_ci}; 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_cistatic struct clk_branch gsbi2_uart_clk = { 18862306a36Sopenharmony_ci .halt_reg = 0x2fcc, 18962306a36Sopenharmony_ci .halt_bit = 6, 19062306a36Sopenharmony_ci .clkr = { 19162306a36Sopenharmony_ci .enable_reg = 0x29f4, 19262306a36Sopenharmony_ci .enable_mask = BIT(9), 19362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19462306a36Sopenharmony_ci .name = "gsbi2_uart_clk", 19562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 19662306a36Sopenharmony_ci &gsbi2_uart_src.clkr.hw 19762306a36Sopenharmony_ci }, 19862306a36Sopenharmony_ci .num_parents = 1, 19962306a36Sopenharmony_ci .ops = &clk_branch_ops, 20062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20162306a36Sopenharmony_ci }, 20262306a36Sopenharmony_ci }, 20362306a36Sopenharmony_ci}; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_cistatic struct clk_rcg gsbi3_uart_src = { 20662306a36Sopenharmony_ci .ns_reg = 0x2a14, 20762306a36Sopenharmony_ci .md_reg = 0x2a10, 20862306a36Sopenharmony_ci .mn = { 20962306a36Sopenharmony_ci .mnctr_en_bit = 8, 21062306a36Sopenharmony_ci .mnctr_reset_bit = 7, 21162306a36Sopenharmony_ci .mnctr_mode_shift = 5, 21262306a36Sopenharmony_ci .n_val_shift = 16, 21362306a36Sopenharmony_ci .m_val_shift = 16, 21462306a36Sopenharmony_ci .width = 16, 21562306a36Sopenharmony_ci }, 21662306a36Sopenharmony_ci .p = { 21762306a36Sopenharmony_ci .pre_div_shift = 3, 21862306a36Sopenharmony_ci .pre_div_width = 2, 21962306a36Sopenharmony_ci }, 22062306a36Sopenharmony_ci .s = { 22162306a36Sopenharmony_ci .src_sel_shift = 0, 22262306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 22362306a36Sopenharmony_ci }, 22462306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 22562306a36Sopenharmony_ci .clkr = { 22662306a36Sopenharmony_ci .enable_reg = 0x2a14, 22762306a36Sopenharmony_ci .enable_mask = BIT(11), 22862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22962306a36Sopenharmony_ci .name = "gsbi3_uart_src", 23062306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 23162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 23262306a36Sopenharmony_ci .ops = &clk_rcg_ops, 23362306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 23462306a36Sopenharmony_ci }, 23562306a36Sopenharmony_ci }, 23662306a36Sopenharmony_ci}; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_cistatic struct clk_branch gsbi3_uart_clk = { 23962306a36Sopenharmony_ci .halt_reg = 0x2fcc, 24062306a36Sopenharmony_ci .halt_bit = 2, 24162306a36Sopenharmony_ci .clkr = { 24262306a36Sopenharmony_ci .enable_reg = 0x2a14, 24362306a36Sopenharmony_ci .enable_mask = BIT(9), 24462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24562306a36Sopenharmony_ci .name = "gsbi3_uart_clk", 24662306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 24762306a36Sopenharmony_ci &gsbi3_uart_src.clkr.hw 24862306a36Sopenharmony_ci }, 24962306a36Sopenharmony_ci .num_parents = 1, 25062306a36Sopenharmony_ci .ops = &clk_branch_ops, 25162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25262306a36Sopenharmony_ci }, 25362306a36Sopenharmony_ci }, 25462306a36Sopenharmony_ci}; 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_cistatic struct clk_rcg gsbi4_uart_src = { 25762306a36Sopenharmony_ci .ns_reg = 0x2a34, 25862306a36Sopenharmony_ci .md_reg = 0x2a30, 25962306a36Sopenharmony_ci .mn = { 26062306a36Sopenharmony_ci .mnctr_en_bit = 8, 26162306a36Sopenharmony_ci .mnctr_reset_bit = 7, 26262306a36Sopenharmony_ci .mnctr_mode_shift = 5, 26362306a36Sopenharmony_ci .n_val_shift = 16, 26462306a36Sopenharmony_ci .m_val_shift = 16, 26562306a36Sopenharmony_ci .width = 16, 26662306a36Sopenharmony_ci }, 26762306a36Sopenharmony_ci .p = { 26862306a36Sopenharmony_ci .pre_div_shift = 3, 26962306a36Sopenharmony_ci .pre_div_width = 2, 27062306a36Sopenharmony_ci }, 27162306a36Sopenharmony_ci .s = { 27262306a36Sopenharmony_ci .src_sel_shift = 0, 27362306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 27462306a36Sopenharmony_ci }, 27562306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 27662306a36Sopenharmony_ci .clkr = { 27762306a36Sopenharmony_ci .enable_reg = 0x2a34, 27862306a36Sopenharmony_ci .enable_mask = BIT(11), 27962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 28062306a36Sopenharmony_ci .name = "gsbi4_uart_src", 28162306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 28262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 28362306a36Sopenharmony_ci .ops = &clk_rcg_ops, 28462306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 28562306a36Sopenharmony_ci }, 28662306a36Sopenharmony_ci }, 28762306a36Sopenharmony_ci}; 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_cistatic struct clk_branch gsbi4_uart_clk = { 29062306a36Sopenharmony_ci .halt_reg = 0x2fd0, 29162306a36Sopenharmony_ci .halt_bit = 26, 29262306a36Sopenharmony_ci .clkr = { 29362306a36Sopenharmony_ci .enable_reg = 0x2a34, 29462306a36Sopenharmony_ci .enable_mask = BIT(9), 29562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 29662306a36Sopenharmony_ci .name = "gsbi4_uart_clk", 29762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 29862306a36Sopenharmony_ci &gsbi4_uart_src.clkr.hw 29962306a36Sopenharmony_ci }, 30062306a36Sopenharmony_ci .num_parents = 1, 30162306a36Sopenharmony_ci .ops = &clk_branch_ops, 30262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 30362306a36Sopenharmony_ci }, 30462306a36Sopenharmony_ci }, 30562306a36Sopenharmony_ci}; 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistatic struct clk_rcg gsbi5_uart_src = { 30862306a36Sopenharmony_ci .ns_reg = 0x2a54, 30962306a36Sopenharmony_ci .md_reg = 0x2a50, 31062306a36Sopenharmony_ci .mn = { 31162306a36Sopenharmony_ci .mnctr_en_bit = 8, 31262306a36Sopenharmony_ci .mnctr_reset_bit = 7, 31362306a36Sopenharmony_ci .mnctr_mode_shift = 5, 31462306a36Sopenharmony_ci .n_val_shift = 16, 31562306a36Sopenharmony_ci .m_val_shift = 16, 31662306a36Sopenharmony_ci .width = 16, 31762306a36Sopenharmony_ci }, 31862306a36Sopenharmony_ci .p = { 31962306a36Sopenharmony_ci .pre_div_shift = 3, 32062306a36Sopenharmony_ci .pre_div_width = 2, 32162306a36Sopenharmony_ci }, 32262306a36Sopenharmony_ci .s = { 32362306a36Sopenharmony_ci .src_sel_shift = 0, 32462306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 32562306a36Sopenharmony_ci }, 32662306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 32762306a36Sopenharmony_ci .clkr = { 32862306a36Sopenharmony_ci .enable_reg = 0x2a54, 32962306a36Sopenharmony_ci .enable_mask = BIT(11), 33062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 33162306a36Sopenharmony_ci .name = "gsbi5_uart_src", 33262306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 33362306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 33462306a36Sopenharmony_ci .ops = &clk_rcg_ops, 33562306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 33662306a36Sopenharmony_ci }, 33762306a36Sopenharmony_ci }, 33862306a36Sopenharmony_ci}; 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_cistatic struct clk_branch gsbi5_uart_clk = { 34162306a36Sopenharmony_ci .halt_reg = 0x2fd0, 34262306a36Sopenharmony_ci .halt_bit = 22, 34362306a36Sopenharmony_ci .clkr = { 34462306a36Sopenharmony_ci .enable_reg = 0x2a54, 34562306a36Sopenharmony_ci .enable_mask = BIT(9), 34662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 34762306a36Sopenharmony_ci .name = "gsbi5_uart_clk", 34862306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 34962306a36Sopenharmony_ci &gsbi5_uart_src.clkr.hw 35062306a36Sopenharmony_ci }, 35162306a36Sopenharmony_ci .num_parents = 1, 35262306a36Sopenharmony_ci .ops = &clk_branch_ops, 35362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 35462306a36Sopenharmony_ci }, 35562306a36Sopenharmony_ci }, 35662306a36Sopenharmony_ci}; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_cistatic struct clk_rcg gsbi6_uart_src = { 35962306a36Sopenharmony_ci .ns_reg = 0x2a74, 36062306a36Sopenharmony_ci .md_reg = 0x2a70, 36162306a36Sopenharmony_ci .mn = { 36262306a36Sopenharmony_ci .mnctr_en_bit = 8, 36362306a36Sopenharmony_ci .mnctr_reset_bit = 7, 36462306a36Sopenharmony_ci .mnctr_mode_shift = 5, 36562306a36Sopenharmony_ci .n_val_shift = 16, 36662306a36Sopenharmony_ci .m_val_shift = 16, 36762306a36Sopenharmony_ci .width = 16, 36862306a36Sopenharmony_ci }, 36962306a36Sopenharmony_ci .p = { 37062306a36Sopenharmony_ci .pre_div_shift = 3, 37162306a36Sopenharmony_ci .pre_div_width = 2, 37262306a36Sopenharmony_ci }, 37362306a36Sopenharmony_ci .s = { 37462306a36Sopenharmony_ci .src_sel_shift = 0, 37562306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 37662306a36Sopenharmony_ci }, 37762306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 37862306a36Sopenharmony_ci .clkr = { 37962306a36Sopenharmony_ci .enable_reg = 0x2a74, 38062306a36Sopenharmony_ci .enable_mask = BIT(11), 38162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 38262306a36Sopenharmony_ci .name = "gsbi6_uart_src", 38362306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 38462306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 38562306a36Sopenharmony_ci .ops = &clk_rcg_ops, 38662306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 38762306a36Sopenharmony_ci }, 38862306a36Sopenharmony_ci }, 38962306a36Sopenharmony_ci}; 39062306a36Sopenharmony_ci 39162306a36Sopenharmony_cistatic struct clk_branch gsbi6_uart_clk = { 39262306a36Sopenharmony_ci .halt_reg = 0x2fd0, 39362306a36Sopenharmony_ci .halt_bit = 18, 39462306a36Sopenharmony_ci .clkr = { 39562306a36Sopenharmony_ci .enable_reg = 0x2a74, 39662306a36Sopenharmony_ci .enable_mask = BIT(9), 39762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 39862306a36Sopenharmony_ci .name = "gsbi6_uart_clk", 39962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 40062306a36Sopenharmony_ci &gsbi6_uart_src.clkr.hw 40162306a36Sopenharmony_ci }, 40262306a36Sopenharmony_ci .num_parents = 1, 40362306a36Sopenharmony_ci .ops = &clk_branch_ops, 40462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 40562306a36Sopenharmony_ci }, 40662306a36Sopenharmony_ci }, 40762306a36Sopenharmony_ci}; 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_cistatic struct clk_rcg gsbi7_uart_src = { 41062306a36Sopenharmony_ci .ns_reg = 0x2a94, 41162306a36Sopenharmony_ci .md_reg = 0x2a90, 41262306a36Sopenharmony_ci .mn = { 41362306a36Sopenharmony_ci .mnctr_en_bit = 8, 41462306a36Sopenharmony_ci .mnctr_reset_bit = 7, 41562306a36Sopenharmony_ci .mnctr_mode_shift = 5, 41662306a36Sopenharmony_ci .n_val_shift = 16, 41762306a36Sopenharmony_ci .m_val_shift = 16, 41862306a36Sopenharmony_ci .width = 16, 41962306a36Sopenharmony_ci }, 42062306a36Sopenharmony_ci .p = { 42162306a36Sopenharmony_ci .pre_div_shift = 3, 42262306a36Sopenharmony_ci .pre_div_width = 2, 42362306a36Sopenharmony_ci }, 42462306a36Sopenharmony_ci .s = { 42562306a36Sopenharmony_ci .src_sel_shift = 0, 42662306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 42762306a36Sopenharmony_ci }, 42862306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 42962306a36Sopenharmony_ci .clkr = { 43062306a36Sopenharmony_ci .enable_reg = 0x2a94, 43162306a36Sopenharmony_ci .enable_mask = BIT(11), 43262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 43362306a36Sopenharmony_ci .name = "gsbi7_uart_src", 43462306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 43562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 43662306a36Sopenharmony_ci .ops = &clk_rcg_ops, 43762306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 43862306a36Sopenharmony_ci }, 43962306a36Sopenharmony_ci }, 44062306a36Sopenharmony_ci}; 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_cistatic struct clk_branch gsbi7_uart_clk = { 44362306a36Sopenharmony_ci .halt_reg = 0x2fd0, 44462306a36Sopenharmony_ci .halt_bit = 14, 44562306a36Sopenharmony_ci .clkr = { 44662306a36Sopenharmony_ci .enable_reg = 0x2a94, 44762306a36Sopenharmony_ci .enable_mask = BIT(9), 44862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 44962306a36Sopenharmony_ci .name = "gsbi7_uart_clk", 45062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 45162306a36Sopenharmony_ci &gsbi7_uart_src.clkr.hw 45262306a36Sopenharmony_ci }, 45362306a36Sopenharmony_ci .num_parents = 1, 45462306a36Sopenharmony_ci .ops = &clk_branch_ops, 45562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 45662306a36Sopenharmony_ci }, 45762306a36Sopenharmony_ci }, 45862306a36Sopenharmony_ci}; 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_cistatic struct clk_rcg gsbi8_uart_src = { 46162306a36Sopenharmony_ci .ns_reg = 0x2ab4, 46262306a36Sopenharmony_ci .md_reg = 0x2ab0, 46362306a36Sopenharmony_ci .mn = { 46462306a36Sopenharmony_ci .mnctr_en_bit = 8, 46562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 46662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 46762306a36Sopenharmony_ci .n_val_shift = 16, 46862306a36Sopenharmony_ci .m_val_shift = 16, 46962306a36Sopenharmony_ci .width = 16, 47062306a36Sopenharmony_ci }, 47162306a36Sopenharmony_ci .p = { 47262306a36Sopenharmony_ci .pre_div_shift = 3, 47362306a36Sopenharmony_ci .pre_div_width = 2, 47462306a36Sopenharmony_ci }, 47562306a36Sopenharmony_ci .s = { 47662306a36Sopenharmony_ci .src_sel_shift = 0, 47762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 47862306a36Sopenharmony_ci }, 47962306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 48062306a36Sopenharmony_ci .clkr = { 48162306a36Sopenharmony_ci .enable_reg = 0x2ab4, 48262306a36Sopenharmony_ci .enable_mask = BIT(11), 48362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 48462306a36Sopenharmony_ci .name = "gsbi8_uart_src", 48562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 48662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 48762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 48862306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 48962306a36Sopenharmony_ci }, 49062306a36Sopenharmony_ci }, 49162306a36Sopenharmony_ci}; 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_cistatic struct clk_branch gsbi8_uart_clk = { 49462306a36Sopenharmony_ci .halt_reg = 0x2fd0, 49562306a36Sopenharmony_ci .halt_bit = 10, 49662306a36Sopenharmony_ci .clkr = { 49762306a36Sopenharmony_ci .enable_reg = 0x2ab4, 49862306a36Sopenharmony_ci .enable_mask = BIT(9), 49962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 50062306a36Sopenharmony_ci .name = "gsbi8_uart_clk", 50162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 50262306a36Sopenharmony_ci &gsbi8_uart_src.clkr.hw 50362306a36Sopenharmony_ci }, 50462306a36Sopenharmony_ci .num_parents = 1, 50562306a36Sopenharmony_ci .ops = &clk_branch_ops, 50662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 50762306a36Sopenharmony_ci }, 50862306a36Sopenharmony_ci }, 50962306a36Sopenharmony_ci}; 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_cistatic struct clk_rcg gsbi9_uart_src = { 51262306a36Sopenharmony_ci .ns_reg = 0x2ad4, 51362306a36Sopenharmony_ci .md_reg = 0x2ad0, 51462306a36Sopenharmony_ci .mn = { 51562306a36Sopenharmony_ci .mnctr_en_bit = 8, 51662306a36Sopenharmony_ci .mnctr_reset_bit = 7, 51762306a36Sopenharmony_ci .mnctr_mode_shift = 5, 51862306a36Sopenharmony_ci .n_val_shift = 16, 51962306a36Sopenharmony_ci .m_val_shift = 16, 52062306a36Sopenharmony_ci .width = 16, 52162306a36Sopenharmony_ci }, 52262306a36Sopenharmony_ci .p = { 52362306a36Sopenharmony_ci .pre_div_shift = 3, 52462306a36Sopenharmony_ci .pre_div_width = 2, 52562306a36Sopenharmony_ci }, 52662306a36Sopenharmony_ci .s = { 52762306a36Sopenharmony_ci .src_sel_shift = 0, 52862306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 52962306a36Sopenharmony_ci }, 53062306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 53162306a36Sopenharmony_ci .clkr = { 53262306a36Sopenharmony_ci .enable_reg = 0x2ad4, 53362306a36Sopenharmony_ci .enable_mask = BIT(11), 53462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 53562306a36Sopenharmony_ci .name = "gsbi9_uart_src", 53662306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 53762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 53862306a36Sopenharmony_ci .ops = &clk_rcg_ops, 53962306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 54062306a36Sopenharmony_ci }, 54162306a36Sopenharmony_ci }, 54262306a36Sopenharmony_ci}; 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_cistatic struct clk_branch gsbi9_uart_clk = { 54562306a36Sopenharmony_ci .halt_reg = 0x2fd0, 54662306a36Sopenharmony_ci .halt_bit = 6, 54762306a36Sopenharmony_ci .clkr = { 54862306a36Sopenharmony_ci .enable_reg = 0x2ad4, 54962306a36Sopenharmony_ci .enable_mask = BIT(9), 55062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 55162306a36Sopenharmony_ci .name = "gsbi9_uart_clk", 55262306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 55362306a36Sopenharmony_ci &gsbi9_uart_src.clkr.hw 55462306a36Sopenharmony_ci }, 55562306a36Sopenharmony_ci .num_parents = 1, 55662306a36Sopenharmony_ci .ops = &clk_branch_ops, 55762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 55862306a36Sopenharmony_ci }, 55962306a36Sopenharmony_ci }, 56062306a36Sopenharmony_ci}; 56162306a36Sopenharmony_ci 56262306a36Sopenharmony_cistatic struct clk_rcg gsbi10_uart_src = { 56362306a36Sopenharmony_ci .ns_reg = 0x2af4, 56462306a36Sopenharmony_ci .md_reg = 0x2af0, 56562306a36Sopenharmony_ci .mn = { 56662306a36Sopenharmony_ci .mnctr_en_bit = 8, 56762306a36Sopenharmony_ci .mnctr_reset_bit = 7, 56862306a36Sopenharmony_ci .mnctr_mode_shift = 5, 56962306a36Sopenharmony_ci .n_val_shift = 16, 57062306a36Sopenharmony_ci .m_val_shift = 16, 57162306a36Sopenharmony_ci .width = 16, 57262306a36Sopenharmony_ci }, 57362306a36Sopenharmony_ci .p = { 57462306a36Sopenharmony_ci .pre_div_shift = 3, 57562306a36Sopenharmony_ci .pre_div_width = 2, 57662306a36Sopenharmony_ci }, 57762306a36Sopenharmony_ci .s = { 57862306a36Sopenharmony_ci .src_sel_shift = 0, 57962306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 58062306a36Sopenharmony_ci }, 58162306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 58262306a36Sopenharmony_ci .clkr = { 58362306a36Sopenharmony_ci .enable_reg = 0x2af4, 58462306a36Sopenharmony_ci .enable_mask = BIT(11), 58562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 58662306a36Sopenharmony_ci .name = "gsbi10_uart_src", 58762306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 58862306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 58962306a36Sopenharmony_ci .ops = &clk_rcg_ops, 59062306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 59162306a36Sopenharmony_ci }, 59262306a36Sopenharmony_ci }, 59362306a36Sopenharmony_ci}; 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_cistatic struct clk_branch gsbi10_uart_clk = { 59662306a36Sopenharmony_ci .halt_reg = 0x2fd0, 59762306a36Sopenharmony_ci .halt_bit = 2, 59862306a36Sopenharmony_ci .clkr = { 59962306a36Sopenharmony_ci .enable_reg = 0x2af4, 60062306a36Sopenharmony_ci .enable_mask = BIT(9), 60162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 60262306a36Sopenharmony_ci .name = "gsbi10_uart_clk", 60362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 60462306a36Sopenharmony_ci &gsbi10_uart_src.clkr.hw 60562306a36Sopenharmony_ci }, 60662306a36Sopenharmony_ci .num_parents = 1, 60762306a36Sopenharmony_ci .ops = &clk_branch_ops, 60862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 60962306a36Sopenharmony_ci }, 61062306a36Sopenharmony_ci }, 61162306a36Sopenharmony_ci}; 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_cistatic struct clk_rcg gsbi11_uart_src = { 61462306a36Sopenharmony_ci .ns_reg = 0x2b14, 61562306a36Sopenharmony_ci .md_reg = 0x2b10, 61662306a36Sopenharmony_ci .mn = { 61762306a36Sopenharmony_ci .mnctr_en_bit = 8, 61862306a36Sopenharmony_ci .mnctr_reset_bit = 7, 61962306a36Sopenharmony_ci .mnctr_mode_shift = 5, 62062306a36Sopenharmony_ci .n_val_shift = 16, 62162306a36Sopenharmony_ci .m_val_shift = 16, 62262306a36Sopenharmony_ci .width = 16, 62362306a36Sopenharmony_ci }, 62462306a36Sopenharmony_ci .p = { 62562306a36Sopenharmony_ci .pre_div_shift = 3, 62662306a36Sopenharmony_ci .pre_div_width = 2, 62762306a36Sopenharmony_ci }, 62862306a36Sopenharmony_ci .s = { 62962306a36Sopenharmony_ci .src_sel_shift = 0, 63062306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 63162306a36Sopenharmony_ci }, 63262306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 63362306a36Sopenharmony_ci .clkr = { 63462306a36Sopenharmony_ci .enable_reg = 0x2b14, 63562306a36Sopenharmony_ci .enable_mask = BIT(11), 63662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 63762306a36Sopenharmony_ci .name = "gsbi11_uart_src", 63862306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 63962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 64062306a36Sopenharmony_ci .ops = &clk_rcg_ops, 64162306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 64262306a36Sopenharmony_ci }, 64362306a36Sopenharmony_ci }, 64462306a36Sopenharmony_ci}; 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_cistatic struct clk_branch gsbi11_uart_clk = { 64762306a36Sopenharmony_ci .halt_reg = 0x2fd4, 64862306a36Sopenharmony_ci .halt_bit = 17, 64962306a36Sopenharmony_ci .clkr = { 65062306a36Sopenharmony_ci .enable_reg = 0x2b14, 65162306a36Sopenharmony_ci .enable_mask = BIT(9), 65262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 65362306a36Sopenharmony_ci .name = "gsbi11_uart_clk", 65462306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 65562306a36Sopenharmony_ci &gsbi11_uart_src.clkr.hw 65662306a36Sopenharmony_ci }, 65762306a36Sopenharmony_ci .num_parents = 1, 65862306a36Sopenharmony_ci .ops = &clk_branch_ops, 65962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 66062306a36Sopenharmony_ci }, 66162306a36Sopenharmony_ci }, 66262306a36Sopenharmony_ci}; 66362306a36Sopenharmony_ci 66462306a36Sopenharmony_cistatic struct clk_rcg gsbi12_uart_src = { 66562306a36Sopenharmony_ci .ns_reg = 0x2b34, 66662306a36Sopenharmony_ci .md_reg = 0x2b30, 66762306a36Sopenharmony_ci .mn = { 66862306a36Sopenharmony_ci .mnctr_en_bit = 8, 66962306a36Sopenharmony_ci .mnctr_reset_bit = 7, 67062306a36Sopenharmony_ci .mnctr_mode_shift = 5, 67162306a36Sopenharmony_ci .n_val_shift = 16, 67262306a36Sopenharmony_ci .m_val_shift = 16, 67362306a36Sopenharmony_ci .width = 16, 67462306a36Sopenharmony_ci }, 67562306a36Sopenharmony_ci .p = { 67662306a36Sopenharmony_ci .pre_div_shift = 3, 67762306a36Sopenharmony_ci .pre_div_width = 2, 67862306a36Sopenharmony_ci }, 67962306a36Sopenharmony_ci .s = { 68062306a36Sopenharmony_ci .src_sel_shift = 0, 68162306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 68262306a36Sopenharmony_ci }, 68362306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_uart, 68462306a36Sopenharmony_ci .clkr = { 68562306a36Sopenharmony_ci .enable_reg = 0x2b34, 68662306a36Sopenharmony_ci .enable_mask = BIT(11), 68762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 68862306a36Sopenharmony_ci .name = "gsbi12_uart_src", 68962306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 69062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 69162306a36Sopenharmony_ci .ops = &clk_rcg_ops, 69262306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 69362306a36Sopenharmony_ci }, 69462306a36Sopenharmony_ci }, 69562306a36Sopenharmony_ci}; 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_cistatic struct clk_branch gsbi12_uart_clk = { 69862306a36Sopenharmony_ci .halt_reg = 0x2fd4, 69962306a36Sopenharmony_ci .halt_bit = 13, 70062306a36Sopenharmony_ci .clkr = { 70162306a36Sopenharmony_ci .enable_reg = 0x2b34, 70262306a36Sopenharmony_ci .enable_mask = BIT(9), 70362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 70462306a36Sopenharmony_ci .name = "gsbi12_uart_clk", 70562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 70662306a36Sopenharmony_ci &gsbi12_uart_src.clkr.hw 70762306a36Sopenharmony_ci }, 70862306a36Sopenharmony_ci .num_parents = 1, 70962306a36Sopenharmony_ci .ops = &clk_branch_ops, 71062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 71162306a36Sopenharmony_ci }, 71262306a36Sopenharmony_ci }, 71362306a36Sopenharmony_ci}; 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_cistatic struct freq_tbl clk_tbl_gsbi_qup[] = { 71662306a36Sopenharmony_ci { 1100000, P_PXO, 1, 2, 49 }, 71762306a36Sopenharmony_ci { 5400000, P_PXO, 1, 1, 5 }, 71862306a36Sopenharmony_ci { 10800000, P_PXO, 1, 2, 5 }, 71962306a36Sopenharmony_ci { 15060000, P_PLL8, 1, 2, 51 }, 72062306a36Sopenharmony_ci { 24000000, P_PLL8, 4, 1, 4 }, 72162306a36Sopenharmony_ci { 25600000, P_PLL8, 1, 1, 15 }, 72262306a36Sopenharmony_ci { 27000000, P_PXO, 1, 0, 0 }, 72362306a36Sopenharmony_ci { 48000000, P_PLL8, 4, 1, 2 }, 72462306a36Sopenharmony_ci { 51200000, P_PLL8, 1, 2, 15 }, 72562306a36Sopenharmony_ci { } 72662306a36Sopenharmony_ci}; 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_cistatic struct clk_rcg gsbi1_qup_src = { 72962306a36Sopenharmony_ci .ns_reg = 0x29cc, 73062306a36Sopenharmony_ci .md_reg = 0x29c8, 73162306a36Sopenharmony_ci .mn = { 73262306a36Sopenharmony_ci .mnctr_en_bit = 8, 73362306a36Sopenharmony_ci .mnctr_reset_bit = 7, 73462306a36Sopenharmony_ci .mnctr_mode_shift = 5, 73562306a36Sopenharmony_ci .n_val_shift = 16, 73662306a36Sopenharmony_ci .m_val_shift = 16, 73762306a36Sopenharmony_ci .width = 8, 73862306a36Sopenharmony_ci }, 73962306a36Sopenharmony_ci .p = { 74062306a36Sopenharmony_ci .pre_div_shift = 3, 74162306a36Sopenharmony_ci .pre_div_width = 2, 74262306a36Sopenharmony_ci }, 74362306a36Sopenharmony_ci .s = { 74462306a36Sopenharmony_ci .src_sel_shift = 0, 74562306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 74662306a36Sopenharmony_ci }, 74762306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 74862306a36Sopenharmony_ci .clkr = { 74962306a36Sopenharmony_ci .enable_reg = 0x29cc, 75062306a36Sopenharmony_ci .enable_mask = BIT(11), 75162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 75262306a36Sopenharmony_ci .name = "gsbi1_qup_src", 75362306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 75462306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 75562306a36Sopenharmony_ci .ops = &clk_rcg_ops, 75662306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 75762306a36Sopenharmony_ci }, 75862306a36Sopenharmony_ci }, 75962306a36Sopenharmony_ci}; 76062306a36Sopenharmony_ci 76162306a36Sopenharmony_cistatic struct clk_branch gsbi1_qup_clk = { 76262306a36Sopenharmony_ci .halt_reg = 0x2fcc, 76362306a36Sopenharmony_ci .halt_bit = 9, 76462306a36Sopenharmony_ci .clkr = { 76562306a36Sopenharmony_ci .enable_reg = 0x29cc, 76662306a36Sopenharmony_ci .enable_mask = BIT(9), 76762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 76862306a36Sopenharmony_ci .name = "gsbi1_qup_clk", 76962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 77062306a36Sopenharmony_ci &gsbi1_qup_src.clkr.hw 77162306a36Sopenharmony_ci }, 77262306a36Sopenharmony_ci .num_parents = 1, 77362306a36Sopenharmony_ci .ops = &clk_branch_ops, 77462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 77562306a36Sopenharmony_ci }, 77662306a36Sopenharmony_ci }, 77762306a36Sopenharmony_ci}; 77862306a36Sopenharmony_ci 77962306a36Sopenharmony_cistatic struct clk_rcg gsbi2_qup_src = { 78062306a36Sopenharmony_ci .ns_reg = 0x29ec, 78162306a36Sopenharmony_ci .md_reg = 0x29e8, 78262306a36Sopenharmony_ci .mn = { 78362306a36Sopenharmony_ci .mnctr_en_bit = 8, 78462306a36Sopenharmony_ci .mnctr_reset_bit = 7, 78562306a36Sopenharmony_ci .mnctr_mode_shift = 5, 78662306a36Sopenharmony_ci .n_val_shift = 16, 78762306a36Sopenharmony_ci .m_val_shift = 16, 78862306a36Sopenharmony_ci .width = 8, 78962306a36Sopenharmony_ci }, 79062306a36Sopenharmony_ci .p = { 79162306a36Sopenharmony_ci .pre_div_shift = 3, 79262306a36Sopenharmony_ci .pre_div_width = 2, 79362306a36Sopenharmony_ci }, 79462306a36Sopenharmony_ci .s = { 79562306a36Sopenharmony_ci .src_sel_shift = 0, 79662306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 79762306a36Sopenharmony_ci }, 79862306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 79962306a36Sopenharmony_ci .clkr = { 80062306a36Sopenharmony_ci .enable_reg = 0x29ec, 80162306a36Sopenharmony_ci .enable_mask = BIT(11), 80262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 80362306a36Sopenharmony_ci .name = "gsbi2_qup_src", 80462306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 80562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 80662306a36Sopenharmony_ci .ops = &clk_rcg_ops, 80762306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 80862306a36Sopenharmony_ci }, 80962306a36Sopenharmony_ci }, 81062306a36Sopenharmony_ci}; 81162306a36Sopenharmony_ci 81262306a36Sopenharmony_cistatic struct clk_branch gsbi2_qup_clk = { 81362306a36Sopenharmony_ci .halt_reg = 0x2fcc, 81462306a36Sopenharmony_ci .halt_bit = 4, 81562306a36Sopenharmony_ci .clkr = { 81662306a36Sopenharmony_ci .enable_reg = 0x29ec, 81762306a36Sopenharmony_ci .enable_mask = BIT(9), 81862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 81962306a36Sopenharmony_ci .name = "gsbi2_qup_clk", 82062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 82162306a36Sopenharmony_ci &gsbi2_qup_src.clkr.hw 82262306a36Sopenharmony_ci }, 82362306a36Sopenharmony_ci .num_parents = 1, 82462306a36Sopenharmony_ci .ops = &clk_branch_ops, 82562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 82662306a36Sopenharmony_ci }, 82762306a36Sopenharmony_ci }, 82862306a36Sopenharmony_ci}; 82962306a36Sopenharmony_ci 83062306a36Sopenharmony_cistatic struct clk_rcg gsbi3_qup_src = { 83162306a36Sopenharmony_ci .ns_reg = 0x2a0c, 83262306a36Sopenharmony_ci .md_reg = 0x2a08, 83362306a36Sopenharmony_ci .mn = { 83462306a36Sopenharmony_ci .mnctr_en_bit = 8, 83562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 83662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 83762306a36Sopenharmony_ci .n_val_shift = 16, 83862306a36Sopenharmony_ci .m_val_shift = 16, 83962306a36Sopenharmony_ci .width = 8, 84062306a36Sopenharmony_ci }, 84162306a36Sopenharmony_ci .p = { 84262306a36Sopenharmony_ci .pre_div_shift = 3, 84362306a36Sopenharmony_ci .pre_div_width = 2, 84462306a36Sopenharmony_ci }, 84562306a36Sopenharmony_ci .s = { 84662306a36Sopenharmony_ci .src_sel_shift = 0, 84762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 84862306a36Sopenharmony_ci }, 84962306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 85062306a36Sopenharmony_ci .clkr = { 85162306a36Sopenharmony_ci .enable_reg = 0x2a0c, 85262306a36Sopenharmony_ci .enable_mask = BIT(11), 85362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 85462306a36Sopenharmony_ci .name = "gsbi3_qup_src", 85562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 85662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 85762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 85862306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 85962306a36Sopenharmony_ci }, 86062306a36Sopenharmony_ci }, 86162306a36Sopenharmony_ci}; 86262306a36Sopenharmony_ci 86362306a36Sopenharmony_cistatic struct clk_branch gsbi3_qup_clk = { 86462306a36Sopenharmony_ci .halt_reg = 0x2fcc, 86562306a36Sopenharmony_ci .halt_bit = 0, 86662306a36Sopenharmony_ci .clkr = { 86762306a36Sopenharmony_ci .enable_reg = 0x2a0c, 86862306a36Sopenharmony_ci .enable_mask = BIT(9), 86962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 87062306a36Sopenharmony_ci .name = "gsbi3_qup_clk", 87162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 87262306a36Sopenharmony_ci &gsbi3_qup_src.clkr.hw 87362306a36Sopenharmony_ci }, 87462306a36Sopenharmony_ci .num_parents = 1, 87562306a36Sopenharmony_ci .ops = &clk_branch_ops, 87662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 87762306a36Sopenharmony_ci }, 87862306a36Sopenharmony_ci }, 87962306a36Sopenharmony_ci}; 88062306a36Sopenharmony_ci 88162306a36Sopenharmony_cistatic struct clk_rcg gsbi4_qup_src = { 88262306a36Sopenharmony_ci .ns_reg = 0x2a2c, 88362306a36Sopenharmony_ci .md_reg = 0x2a28, 88462306a36Sopenharmony_ci .mn = { 88562306a36Sopenharmony_ci .mnctr_en_bit = 8, 88662306a36Sopenharmony_ci .mnctr_reset_bit = 7, 88762306a36Sopenharmony_ci .mnctr_mode_shift = 5, 88862306a36Sopenharmony_ci .n_val_shift = 16, 88962306a36Sopenharmony_ci .m_val_shift = 16, 89062306a36Sopenharmony_ci .width = 8, 89162306a36Sopenharmony_ci }, 89262306a36Sopenharmony_ci .p = { 89362306a36Sopenharmony_ci .pre_div_shift = 3, 89462306a36Sopenharmony_ci .pre_div_width = 2, 89562306a36Sopenharmony_ci }, 89662306a36Sopenharmony_ci .s = { 89762306a36Sopenharmony_ci .src_sel_shift = 0, 89862306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 89962306a36Sopenharmony_ci }, 90062306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 90162306a36Sopenharmony_ci .clkr = { 90262306a36Sopenharmony_ci .enable_reg = 0x2a2c, 90362306a36Sopenharmony_ci .enable_mask = BIT(11), 90462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 90562306a36Sopenharmony_ci .name = "gsbi4_qup_src", 90662306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 90762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 90862306a36Sopenharmony_ci .ops = &clk_rcg_ops, 90962306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 91062306a36Sopenharmony_ci }, 91162306a36Sopenharmony_ci }, 91262306a36Sopenharmony_ci}; 91362306a36Sopenharmony_ci 91462306a36Sopenharmony_cistatic struct clk_branch gsbi4_qup_clk = { 91562306a36Sopenharmony_ci .halt_reg = 0x2fd0, 91662306a36Sopenharmony_ci .halt_bit = 24, 91762306a36Sopenharmony_ci .clkr = { 91862306a36Sopenharmony_ci .enable_reg = 0x2a2c, 91962306a36Sopenharmony_ci .enable_mask = BIT(9), 92062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 92162306a36Sopenharmony_ci .name = "gsbi4_qup_clk", 92262306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 92362306a36Sopenharmony_ci &gsbi4_qup_src.clkr.hw 92462306a36Sopenharmony_ci }, 92562306a36Sopenharmony_ci .num_parents = 1, 92662306a36Sopenharmony_ci .ops = &clk_branch_ops, 92762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 92862306a36Sopenharmony_ci }, 92962306a36Sopenharmony_ci }, 93062306a36Sopenharmony_ci}; 93162306a36Sopenharmony_ci 93262306a36Sopenharmony_cistatic struct clk_rcg gsbi5_qup_src = { 93362306a36Sopenharmony_ci .ns_reg = 0x2a4c, 93462306a36Sopenharmony_ci .md_reg = 0x2a48, 93562306a36Sopenharmony_ci .mn = { 93662306a36Sopenharmony_ci .mnctr_en_bit = 8, 93762306a36Sopenharmony_ci .mnctr_reset_bit = 7, 93862306a36Sopenharmony_ci .mnctr_mode_shift = 5, 93962306a36Sopenharmony_ci .n_val_shift = 16, 94062306a36Sopenharmony_ci .m_val_shift = 16, 94162306a36Sopenharmony_ci .width = 8, 94262306a36Sopenharmony_ci }, 94362306a36Sopenharmony_ci .p = { 94462306a36Sopenharmony_ci .pre_div_shift = 3, 94562306a36Sopenharmony_ci .pre_div_width = 2, 94662306a36Sopenharmony_ci }, 94762306a36Sopenharmony_ci .s = { 94862306a36Sopenharmony_ci .src_sel_shift = 0, 94962306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 95062306a36Sopenharmony_ci }, 95162306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 95262306a36Sopenharmony_ci .clkr = { 95362306a36Sopenharmony_ci .enable_reg = 0x2a4c, 95462306a36Sopenharmony_ci .enable_mask = BIT(11), 95562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 95662306a36Sopenharmony_ci .name = "gsbi5_qup_src", 95762306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 95862306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 95962306a36Sopenharmony_ci .ops = &clk_rcg_ops, 96062306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 96162306a36Sopenharmony_ci }, 96262306a36Sopenharmony_ci }, 96362306a36Sopenharmony_ci}; 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_cistatic struct clk_branch gsbi5_qup_clk = { 96662306a36Sopenharmony_ci .halt_reg = 0x2fd0, 96762306a36Sopenharmony_ci .halt_bit = 20, 96862306a36Sopenharmony_ci .clkr = { 96962306a36Sopenharmony_ci .enable_reg = 0x2a4c, 97062306a36Sopenharmony_ci .enable_mask = BIT(9), 97162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 97262306a36Sopenharmony_ci .name = "gsbi5_qup_clk", 97362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 97462306a36Sopenharmony_ci &gsbi5_qup_src.clkr.hw 97562306a36Sopenharmony_ci }, 97662306a36Sopenharmony_ci .num_parents = 1, 97762306a36Sopenharmony_ci .ops = &clk_branch_ops, 97862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 97962306a36Sopenharmony_ci }, 98062306a36Sopenharmony_ci }, 98162306a36Sopenharmony_ci}; 98262306a36Sopenharmony_ci 98362306a36Sopenharmony_cistatic struct clk_rcg gsbi6_qup_src = { 98462306a36Sopenharmony_ci .ns_reg = 0x2a6c, 98562306a36Sopenharmony_ci .md_reg = 0x2a68, 98662306a36Sopenharmony_ci .mn = { 98762306a36Sopenharmony_ci .mnctr_en_bit = 8, 98862306a36Sopenharmony_ci .mnctr_reset_bit = 7, 98962306a36Sopenharmony_ci .mnctr_mode_shift = 5, 99062306a36Sopenharmony_ci .n_val_shift = 16, 99162306a36Sopenharmony_ci .m_val_shift = 16, 99262306a36Sopenharmony_ci .width = 8, 99362306a36Sopenharmony_ci }, 99462306a36Sopenharmony_ci .p = { 99562306a36Sopenharmony_ci .pre_div_shift = 3, 99662306a36Sopenharmony_ci .pre_div_width = 2, 99762306a36Sopenharmony_ci }, 99862306a36Sopenharmony_ci .s = { 99962306a36Sopenharmony_ci .src_sel_shift = 0, 100062306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 100162306a36Sopenharmony_ci }, 100262306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 100362306a36Sopenharmony_ci .clkr = { 100462306a36Sopenharmony_ci .enable_reg = 0x2a6c, 100562306a36Sopenharmony_ci .enable_mask = BIT(11), 100662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 100762306a36Sopenharmony_ci .name = "gsbi6_qup_src", 100862306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 100962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 101062306a36Sopenharmony_ci .ops = &clk_rcg_ops, 101162306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 101262306a36Sopenharmony_ci }, 101362306a36Sopenharmony_ci }, 101462306a36Sopenharmony_ci}; 101562306a36Sopenharmony_ci 101662306a36Sopenharmony_cistatic struct clk_branch gsbi6_qup_clk = { 101762306a36Sopenharmony_ci .halt_reg = 0x2fd0, 101862306a36Sopenharmony_ci .halt_bit = 16, 101962306a36Sopenharmony_ci .clkr = { 102062306a36Sopenharmony_ci .enable_reg = 0x2a6c, 102162306a36Sopenharmony_ci .enable_mask = BIT(9), 102262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 102362306a36Sopenharmony_ci .name = "gsbi6_qup_clk", 102462306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 102562306a36Sopenharmony_ci &gsbi6_qup_src.clkr.hw 102662306a36Sopenharmony_ci }, 102762306a36Sopenharmony_ci .num_parents = 1, 102862306a36Sopenharmony_ci .ops = &clk_branch_ops, 102962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 103062306a36Sopenharmony_ci }, 103162306a36Sopenharmony_ci }, 103262306a36Sopenharmony_ci}; 103362306a36Sopenharmony_ci 103462306a36Sopenharmony_cistatic struct clk_rcg gsbi7_qup_src = { 103562306a36Sopenharmony_ci .ns_reg = 0x2a8c, 103662306a36Sopenharmony_ci .md_reg = 0x2a88, 103762306a36Sopenharmony_ci .mn = { 103862306a36Sopenharmony_ci .mnctr_en_bit = 8, 103962306a36Sopenharmony_ci .mnctr_reset_bit = 7, 104062306a36Sopenharmony_ci .mnctr_mode_shift = 5, 104162306a36Sopenharmony_ci .n_val_shift = 16, 104262306a36Sopenharmony_ci .m_val_shift = 16, 104362306a36Sopenharmony_ci .width = 8, 104462306a36Sopenharmony_ci }, 104562306a36Sopenharmony_ci .p = { 104662306a36Sopenharmony_ci .pre_div_shift = 3, 104762306a36Sopenharmony_ci .pre_div_width = 2, 104862306a36Sopenharmony_ci }, 104962306a36Sopenharmony_ci .s = { 105062306a36Sopenharmony_ci .src_sel_shift = 0, 105162306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 105262306a36Sopenharmony_ci }, 105362306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 105462306a36Sopenharmony_ci .clkr = { 105562306a36Sopenharmony_ci .enable_reg = 0x2a8c, 105662306a36Sopenharmony_ci .enable_mask = BIT(11), 105762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 105862306a36Sopenharmony_ci .name = "gsbi7_qup_src", 105962306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 106062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 106162306a36Sopenharmony_ci .ops = &clk_rcg_ops, 106262306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 106362306a36Sopenharmony_ci }, 106462306a36Sopenharmony_ci }, 106562306a36Sopenharmony_ci}; 106662306a36Sopenharmony_ci 106762306a36Sopenharmony_cistatic struct clk_branch gsbi7_qup_clk = { 106862306a36Sopenharmony_ci .halt_reg = 0x2fd0, 106962306a36Sopenharmony_ci .halt_bit = 12, 107062306a36Sopenharmony_ci .clkr = { 107162306a36Sopenharmony_ci .enable_reg = 0x2a8c, 107262306a36Sopenharmony_ci .enable_mask = BIT(9), 107362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 107462306a36Sopenharmony_ci .name = "gsbi7_qup_clk", 107562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 107662306a36Sopenharmony_ci &gsbi7_qup_src.clkr.hw 107762306a36Sopenharmony_ci }, 107862306a36Sopenharmony_ci .num_parents = 1, 107962306a36Sopenharmony_ci .ops = &clk_branch_ops, 108062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 108162306a36Sopenharmony_ci }, 108262306a36Sopenharmony_ci }, 108362306a36Sopenharmony_ci}; 108462306a36Sopenharmony_ci 108562306a36Sopenharmony_cistatic struct clk_rcg gsbi8_qup_src = { 108662306a36Sopenharmony_ci .ns_reg = 0x2aac, 108762306a36Sopenharmony_ci .md_reg = 0x2aa8, 108862306a36Sopenharmony_ci .mn = { 108962306a36Sopenharmony_ci .mnctr_en_bit = 8, 109062306a36Sopenharmony_ci .mnctr_reset_bit = 7, 109162306a36Sopenharmony_ci .mnctr_mode_shift = 5, 109262306a36Sopenharmony_ci .n_val_shift = 16, 109362306a36Sopenharmony_ci .m_val_shift = 16, 109462306a36Sopenharmony_ci .width = 8, 109562306a36Sopenharmony_ci }, 109662306a36Sopenharmony_ci .p = { 109762306a36Sopenharmony_ci .pre_div_shift = 3, 109862306a36Sopenharmony_ci .pre_div_width = 2, 109962306a36Sopenharmony_ci }, 110062306a36Sopenharmony_ci .s = { 110162306a36Sopenharmony_ci .src_sel_shift = 0, 110262306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 110362306a36Sopenharmony_ci }, 110462306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 110562306a36Sopenharmony_ci .clkr = { 110662306a36Sopenharmony_ci .enable_reg = 0x2aac, 110762306a36Sopenharmony_ci .enable_mask = BIT(11), 110862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 110962306a36Sopenharmony_ci .name = "gsbi8_qup_src", 111062306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 111162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 111262306a36Sopenharmony_ci .ops = &clk_rcg_ops, 111362306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 111462306a36Sopenharmony_ci }, 111562306a36Sopenharmony_ci }, 111662306a36Sopenharmony_ci}; 111762306a36Sopenharmony_ci 111862306a36Sopenharmony_cistatic struct clk_branch gsbi8_qup_clk = { 111962306a36Sopenharmony_ci .halt_reg = 0x2fd0, 112062306a36Sopenharmony_ci .halt_bit = 8, 112162306a36Sopenharmony_ci .clkr = { 112262306a36Sopenharmony_ci .enable_reg = 0x2aac, 112362306a36Sopenharmony_ci .enable_mask = BIT(9), 112462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 112562306a36Sopenharmony_ci .name = "gsbi8_qup_clk", 112662306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 112762306a36Sopenharmony_ci &gsbi8_qup_src.clkr.hw 112862306a36Sopenharmony_ci }, 112962306a36Sopenharmony_ci .num_parents = 1, 113062306a36Sopenharmony_ci .ops = &clk_branch_ops, 113162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 113262306a36Sopenharmony_ci }, 113362306a36Sopenharmony_ci }, 113462306a36Sopenharmony_ci}; 113562306a36Sopenharmony_ci 113662306a36Sopenharmony_cistatic struct clk_rcg gsbi9_qup_src = { 113762306a36Sopenharmony_ci .ns_reg = 0x2acc, 113862306a36Sopenharmony_ci .md_reg = 0x2ac8, 113962306a36Sopenharmony_ci .mn = { 114062306a36Sopenharmony_ci .mnctr_en_bit = 8, 114162306a36Sopenharmony_ci .mnctr_reset_bit = 7, 114262306a36Sopenharmony_ci .mnctr_mode_shift = 5, 114362306a36Sopenharmony_ci .n_val_shift = 16, 114462306a36Sopenharmony_ci .m_val_shift = 16, 114562306a36Sopenharmony_ci .width = 8, 114662306a36Sopenharmony_ci }, 114762306a36Sopenharmony_ci .p = { 114862306a36Sopenharmony_ci .pre_div_shift = 3, 114962306a36Sopenharmony_ci .pre_div_width = 2, 115062306a36Sopenharmony_ci }, 115162306a36Sopenharmony_ci .s = { 115262306a36Sopenharmony_ci .src_sel_shift = 0, 115362306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 115462306a36Sopenharmony_ci }, 115562306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 115662306a36Sopenharmony_ci .clkr = { 115762306a36Sopenharmony_ci .enable_reg = 0x2acc, 115862306a36Sopenharmony_ci .enable_mask = BIT(11), 115962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 116062306a36Sopenharmony_ci .name = "gsbi9_qup_src", 116162306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 116262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 116362306a36Sopenharmony_ci .ops = &clk_rcg_ops, 116462306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 116562306a36Sopenharmony_ci }, 116662306a36Sopenharmony_ci }, 116762306a36Sopenharmony_ci}; 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_cistatic struct clk_branch gsbi9_qup_clk = { 117062306a36Sopenharmony_ci .halt_reg = 0x2fd0, 117162306a36Sopenharmony_ci .halt_bit = 4, 117262306a36Sopenharmony_ci .clkr = { 117362306a36Sopenharmony_ci .enable_reg = 0x2acc, 117462306a36Sopenharmony_ci .enable_mask = BIT(9), 117562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 117662306a36Sopenharmony_ci .name = "gsbi9_qup_clk", 117762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 117862306a36Sopenharmony_ci &gsbi9_qup_src.clkr.hw 117962306a36Sopenharmony_ci }, 118062306a36Sopenharmony_ci .num_parents = 1, 118162306a36Sopenharmony_ci .ops = &clk_branch_ops, 118262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 118362306a36Sopenharmony_ci }, 118462306a36Sopenharmony_ci }, 118562306a36Sopenharmony_ci}; 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_cistatic struct clk_rcg gsbi10_qup_src = { 118862306a36Sopenharmony_ci .ns_reg = 0x2aec, 118962306a36Sopenharmony_ci .md_reg = 0x2ae8, 119062306a36Sopenharmony_ci .mn = { 119162306a36Sopenharmony_ci .mnctr_en_bit = 8, 119262306a36Sopenharmony_ci .mnctr_reset_bit = 7, 119362306a36Sopenharmony_ci .mnctr_mode_shift = 5, 119462306a36Sopenharmony_ci .n_val_shift = 16, 119562306a36Sopenharmony_ci .m_val_shift = 16, 119662306a36Sopenharmony_ci .width = 8, 119762306a36Sopenharmony_ci }, 119862306a36Sopenharmony_ci .p = { 119962306a36Sopenharmony_ci .pre_div_shift = 3, 120062306a36Sopenharmony_ci .pre_div_width = 2, 120162306a36Sopenharmony_ci }, 120262306a36Sopenharmony_ci .s = { 120362306a36Sopenharmony_ci .src_sel_shift = 0, 120462306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 120562306a36Sopenharmony_ci }, 120662306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 120762306a36Sopenharmony_ci .clkr = { 120862306a36Sopenharmony_ci .enable_reg = 0x2aec, 120962306a36Sopenharmony_ci .enable_mask = BIT(11), 121062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 121162306a36Sopenharmony_ci .name = "gsbi10_qup_src", 121262306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 121362306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 121462306a36Sopenharmony_ci .ops = &clk_rcg_ops, 121562306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 121662306a36Sopenharmony_ci }, 121762306a36Sopenharmony_ci }, 121862306a36Sopenharmony_ci}; 121962306a36Sopenharmony_ci 122062306a36Sopenharmony_cistatic struct clk_branch gsbi10_qup_clk = { 122162306a36Sopenharmony_ci .halt_reg = 0x2fd0, 122262306a36Sopenharmony_ci .halt_bit = 0, 122362306a36Sopenharmony_ci .clkr = { 122462306a36Sopenharmony_ci .enable_reg = 0x2aec, 122562306a36Sopenharmony_ci .enable_mask = BIT(9), 122662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 122762306a36Sopenharmony_ci .name = "gsbi10_qup_clk", 122862306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 122962306a36Sopenharmony_ci &gsbi10_qup_src.clkr.hw 123062306a36Sopenharmony_ci }, 123162306a36Sopenharmony_ci .num_parents = 1, 123262306a36Sopenharmony_ci .ops = &clk_branch_ops, 123362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 123462306a36Sopenharmony_ci }, 123562306a36Sopenharmony_ci }, 123662306a36Sopenharmony_ci}; 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_cistatic struct clk_rcg gsbi11_qup_src = { 123962306a36Sopenharmony_ci .ns_reg = 0x2b0c, 124062306a36Sopenharmony_ci .md_reg = 0x2b08, 124162306a36Sopenharmony_ci .mn = { 124262306a36Sopenharmony_ci .mnctr_en_bit = 8, 124362306a36Sopenharmony_ci .mnctr_reset_bit = 7, 124462306a36Sopenharmony_ci .mnctr_mode_shift = 5, 124562306a36Sopenharmony_ci .n_val_shift = 16, 124662306a36Sopenharmony_ci .m_val_shift = 16, 124762306a36Sopenharmony_ci .width = 8, 124862306a36Sopenharmony_ci }, 124962306a36Sopenharmony_ci .p = { 125062306a36Sopenharmony_ci .pre_div_shift = 3, 125162306a36Sopenharmony_ci .pre_div_width = 2, 125262306a36Sopenharmony_ci }, 125362306a36Sopenharmony_ci .s = { 125462306a36Sopenharmony_ci .src_sel_shift = 0, 125562306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 125662306a36Sopenharmony_ci }, 125762306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 125862306a36Sopenharmony_ci .clkr = { 125962306a36Sopenharmony_ci .enable_reg = 0x2b0c, 126062306a36Sopenharmony_ci .enable_mask = BIT(11), 126162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 126262306a36Sopenharmony_ci .name = "gsbi11_qup_src", 126362306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 126462306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 126562306a36Sopenharmony_ci .ops = &clk_rcg_ops, 126662306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 126762306a36Sopenharmony_ci }, 126862306a36Sopenharmony_ci }, 126962306a36Sopenharmony_ci}; 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_cistatic struct clk_branch gsbi11_qup_clk = { 127262306a36Sopenharmony_ci .halt_reg = 0x2fd4, 127362306a36Sopenharmony_ci .halt_bit = 15, 127462306a36Sopenharmony_ci .clkr = { 127562306a36Sopenharmony_ci .enable_reg = 0x2b0c, 127662306a36Sopenharmony_ci .enable_mask = BIT(9), 127762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 127862306a36Sopenharmony_ci .name = "gsbi11_qup_clk", 127962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 128062306a36Sopenharmony_ci &gsbi11_qup_src.clkr.hw 128162306a36Sopenharmony_ci }, 128262306a36Sopenharmony_ci .num_parents = 1, 128362306a36Sopenharmony_ci .ops = &clk_branch_ops, 128462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 128562306a36Sopenharmony_ci }, 128662306a36Sopenharmony_ci }, 128762306a36Sopenharmony_ci}; 128862306a36Sopenharmony_ci 128962306a36Sopenharmony_cistatic struct clk_rcg gsbi12_qup_src = { 129062306a36Sopenharmony_ci .ns_reg = 0x2b2c, 129162306a36Sopenharmony_ci .md_reg = 0x2b28, 129262306a36Sopenharmony_ci .mn = { 129362306a36Sopenharmony_ci .mnctr_en_bit = 8, 129462306a36Sopenharmony_ci .mnctr_reset_bit = 7, 129562306a36Sopenharmony_ci .mnctr_mode_shift = 5, 129662306a36Sopenharmony_ci .n_val_shift = 16, 129762306a36Sopenharmony_ci .m_val_shift = 16, 129862306a36Sopenharmony_ci .width = 8, 129962306a36Sopenharmony_ci }, 130062306a36Sopenharmony_ci .p = { 130162306a36Sopenharmony_ci .pre_div_shift = 3, 130262306a36Sopenharmony_ci .pre_div_width = 2, 130362306a36Sopenharmony_ci }, 130462306a36Sopenharmony_ci .s = { 130562306a36Sopenharmony_ci .src_sel_shift = 0, 130662306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 130762306a36Sopenharmony_ci }, 130862306a36Sopenharmony_ci .freq_tbl = clk_tbl_gsbi_qup, 130962306a36Sopenharmony_ci .clkr = { 131062306a36Sopenharmony_ci .enable_reg = 0x2b2c, 131162306a36Sopenharmony_ci .enable_mask = BIT(11), 131262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 131362306a36Sopenharmony_ci .name = "gsbi12_qup_src", 131462306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 131562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 131662306a36Sopenharmony_ci .ops = &clk_rcg_ops, 131762306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 131862306a36Sopenharmony_ci }, 131962306a36Sopenharmony_ci }, 132062306a36Sopenharmony_ci}; 132162306a36Sopenharmony_ci 132262306a36Sopenharmony_cistatic struct clk_branch gsbi12_qup_clk = { 132362306a36Sopenharmony_ci .halt_reg = 0x2fd4, 132462306a36Sopenharmony_ci .halt_bit = 11, 132562306a36Sopenharmony_ci .clkr = { 132662306a36Sopenharmony_ci .enable_reg = 0x2b2c, 132762306a36Sopenharmony_ci .enable_mask = BIT(9), 132862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 132962306a36Sopenharmony_ci .name = "gsbi12_qup_clk", 133062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 133162306a36Sopenharmony_ci &gsbi12_qup_src.clkr.hw 133262306a36Sopenharmony_ci }, 133362306a36Sopenharmony_ci .num_parents = 1, 133462306a36Sopenharmony_ci .ops = &clk_branch_ops, 133562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 133662306a36Sopenharmony_ci }, 133762306a36Sopenharmony_ci }, 133862306a36Sopenharmony_ci}; 133962306a36Sopenharmony_ci 134062306a36Sopenharmony_cistatic const struct freq_tbl clk_tbl_gp[] = { 134162306a36Sopenharmony_ci { 9600000, P_CXO, 2, 0, 0 }, 134262306a36Sopenharmony_ci { 13500000, P_PXO, 2, 0, 0 }, 134362306a36Sopenharmony_ci { 19200000, P_CXO, 1, 0, 0 }, 134462306a36Sopenharmony_ci { 27000000, P_PXO, 1, 0, 0 }, 134562306a36Sopenharmony_ci { 64000000, P_PLL8, 2, 1, 3 }, 134662306a36Sopenharmony_ci { 76800000, P_PLL8, 1, 1, 5 }, 134762306a36Sopenharmony_ci { 96000000, P_PLL8, 4, 0, 0 }, 134862306a36Sopenharmony_ci { 128000000, P_PLL8, 3, 0, 0 }, 134962306a36Sopenharmony_ci { 192000000, P_PLL8, 2, 0, 0 }, 135062306a36Sopenharmony_ci { } 135162306a36Sopenharmony_ci}; 135262306a36Sopenharmony_ci 135362306a36Sopenharmony_cistatic struct clk_rcg gp0_src = { 135462306a36Sopenharmony_ci .ns_reg = 0x2d24, 135562306a36Sopenharmony_ci .md_reg = 0x2d00, 135662306a36Sopenharmony_ci .mn = { 135762306a36Sopenharmony_ci .mnctr_en_bit = 8, 135862306a36Sopenharmony_ci .mnctr_reset_bit = 7, 135962306a36Sopenharmony_ci .mnctr_mode_shift = 5, 136062306a36Sopenharmony_ci .n_val_shift = 16, 136162306a36Sopenharmony_ci .m_val_shift = 16, 136262306a36Sopenharmony_ci .width = 8, 136362306a36Sopenharmony_ci }, 136462306a36Sopenharmony_ci .p = { 136562306a36Sopenharmony_ci .pre_div_shift = 3, 136662306a36Sopenharmony_ci .pre_div_width = 2, 136762306a36Sopenharmony_ci }, 136862306a36Sopenharmony_ci .s = { 136962306a36Sopenharmony_ci .src_sel_shift = 0, 137062306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_cxo_map, 137162306a36Sopenharmony_ci }, 137262306a36Sopenharmony_ci .freq_tbl = clk_tbl_gp, 137362306a36Sopenharmony_ci .clkr = { 137462306a36Sopenharmony_ci .enable_reg = 0x2d24, 137562306a36Sopenharmony_ci .enable_mask = BIT(11), 137662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 137762306a36Sopenharmony_ci .name = "gp0_src", 137862306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8_cxo, 137962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8_cxo), 138062306a36Sopenharmony_ci .ops = &clk_rcg_ops, 138162306a36Sopenharmony_ci .flags = CLK_SET_PARENT_GATE, 138262306a36Sopenharmony_ci }, 138362306a36Sopenharmony_ci } 138462306a36Sopenharmony_ci}; 138562306a36Sopenharmony_ci 138662306a36Sopenharmony_cistatic struct clk_branch gp0_clk = { 138762306a36Sopenharmony_ci .halt_reg = 0x2fd8, 138862306a36Sopenharmony_ci .halt_bit = 7, 138962306a36Sopenharmony_ci .clkr = { 139062306a36Sopenharmony_ci .enable_reg = 0x2d24, 139162306a36Sopenharmony_ci .enable_mask = BIT(9), 139262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 139362306a36Sopenharmony_ci .name = "gp0_clk", 139462306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 139562306a36Sopenharmony_ci &gp0_src.clkr.hw 139662306a36Sopenharmony_ci }, 139762306a36Sopenharmony_ci .num_parents = 1, 139862306a36Sopenharmony_ci .ops = &clk_branch_ops, 139962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 140062306a36Sopenharmony_ci }, 140162306a36Sopenharmony_ci }, 140262306a36Sopenharmony_ci}; 140362306a36Sopenharmony_ci 140462306a36Sopenharmony_cistatic struct clk_rcg gp1_src = { 140562306a36Sopenharmony_ci .ns_reg = 0x2d44, 140662306a36Sopenharmony_ci .md_reg = 0x2d40, 140762306a36Sopenharmony_ci .mn = { 140862306a36Sopenharmony_ci .mnctr_en_bit = 8, 140962306a36Sopenharmony_ci .mnctr_reset_bit = 7, 141062306a36Sopenharmony_ci .mnctr_mode_shift = 5, 141162306a36Sopenharmony_ci .n_val_shift = 16, 141262306a36Sopenharmony_ci .m_val_shift = 16, 141362306a36Sopenharmony_ci .width = 8, 141462306a36Sopenharmony_ci }, 141562306a36Sopenharmony_ci .p = { 141662306a36Sopenharmony_ci .pre_div_shift = 3, 141762306a36Sopenharmony_ci .pre_div_width = 2, 141862306a36Sopenharmony_ci }, 141962306a36Sopenharmony_ci .s = { 142062306a36Sopenharmony_ci .src_sel_shift = 0, 142162306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_cxo_map, 142262306a36Sopenharmony_ci }, 142362306a36Sopenharmony_ci .freq_tbl = clk_tbl_gp, 142462306a36Sopenharmony_ci .clkr = { 142562306a36Sopenharmony_ci .enable_reg = 0x2d44, 142662306a36Sopenharmony_ci .enable_mask = BIT(11), 142762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 142862306a36Sopenharmony_ci .name = "gp1_src", 142962306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8_cxo, 143062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8_cxo), 143162306a36Sopenharmony_ci .ops = &clk_rcg_ops, 143262306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 143362306a36Sopenharmony_ci }, 143462306a36Sopenharmony_ci } 143562306a36Sopenharmony_ci}; 143662306a36Sopenharmony_ci 143762306a36Sopenharmony_cistatic struct clk_branch gp1_clk = { 143862306a36Sopenharmony_ci .halt_reg = 0x2fd8, 143962306a36Sopenharmony_ci .halt_bit = 6, 144062306a36Sopenharmony_ci .clkr = { 144162306a36Sopenharmony_ci .enable_reg = 0x2d44, 144262306a36Sopenharmony_ci .enable_mask = BIT(9), 144362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 144462306a36Sopenharmony_ci .name = "gp1_clk", 144562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 144662306a36Sopenharmony_ci &gp1_src.clkr.hw 144762306a36Sopenharmony_ci }, 144862306a36Sopenharmony_ci .num_parents = 1, 144962306a36Sopenharmony_ci .ops = &clk_branch_ops, 145062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 145162306a36Sopenharmony_ci }, 145262306a36Sopenharmony_ci }, 145362306a36Sopenharmony_ci}; 145462306a36Sopenharmony_ci 145562306a36Sopenharmony_cistatic struct clk_rcg gp2_src = { 145662306a36Sopenharmony_ci .ns_reg = 0x2d64, 145762306a36Sopenharmony_ci .md_reg = 0x2d60, 145862306a36Sopenharmony_ci .mn = { 145962306a36Sopenharmony_ci .mnctr_en_bit = 8, 146062306a36Sopenharmony_ci .mnctr_reset_bit = 7, 146162306a36Sopenharmony_ci .mnctr_mode_shift = 5, 146262306a36Sopenharmony_ci .n_val_shift = 16, 146362306a36Sopenharmony_ci .m_val_shift = 16, 146462306a36Sopenharmony_ci .width = 8, 146562306a36Sopenharmony_ci }, 146662306a36Sopenharmony_ci .p = { 146762306a36Sopenharmony_ci .pre_div_shift = 3, 146862306a36Sopenharmony_ci .pre_div_width = 2, 146962306a36Sopenharmony_ci }, 147062306a36Sopenharmony_ci .s = { 147162306a36Sopenharmony_ci .src_sel_shift = 0, 147262306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_cxo_map, 147362306a36Sopenharmony_ci }, 147462306a36Sopenharmony_ci .freq_tbl = clk_tbl_gp, 147562306a36Sopenharmony_ci .clkr = { 147662306a36Sopenharmony_ci .enable_reg = 0x2d64, 147762306a36Sopenharmony_ci .enable_mask = BIT(11), 147862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 147962306a36Sopenharmony_ci .name = "gp2_src", 148062306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8_cxo, 148162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8_cxo), 148262306a36Sopenharmony_ci .ops = &clk_rcg_ops, 148362306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 148462306a36Sopenharmony_ci }, 148562306a36Sopenharmony_ci } 148662306a36Sopenharmony_ci}; 148762306a36Sopenharmony_ci 148862306a36Sopenharmony_cistatic struct clk_branch gp2_clk = { 148962306a36Sopenharmony_ci .halt_reg = 0x2fd8, 149062306a36Sopenharmony_ci .halt_bit = 5, 149162306a36Sopenharmony_ci .clkr = { 149262306a36Sopenharmony_ci .enable_reg = 0x2d64, 149362306a36Sopenharmony_ci .enable_mask = BIT(9), 149462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 149562306a36Sopenharmony_ci .name = "gp2_clk", 149662306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 149762306a36Sopenharmony_ci &gp2_src.clkr.hw 149862306a36Sopenharmony_ci }, 149962306a36Sopenharmony_ci .num_parents = 1, 150062306a36Sopenharmony_ci .ops = &clk_branch_ops, 150162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 150262306a36Sopenharmony_ci }, 150362306a36Sopenharmony_ci }, 150462306a36Sopenharmony_ci}; 150562306a36Sopenharmony_ci 150662306a36Sopenharmony_cistatic struct clk_branch pmem_clk = { 150762306a36Sopenharmony_ci .hwcg_reg = 0x25a0, 150862306a36Sopenharmony_ci .hwcg_bit = 6, 150962306a36Sopenharmony_ci .halt_reg = 0x2fc8, 151062306a36Sopenharmony_ci .halt_bit = 20, 151162306a36Sopenharmony_ci .clkr = { 151262306a36Sopenharmony_ci .enable_reg = 0x25a0, 151362306a36Sopenharmony_ci .enable_mask = BIT(4), 151462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 151562306a36Sopenharmony_ci .name = "pmem_clk", 151662306a36Sopenharmony_ci .ops = &clk_branch_ops, 151762306a36Sopenharmony_ci }, 151862306a36Sopenharmony_ci }, 151962306a36Sopenharmony_ci}; 152062306a36Sopenharmony_ci 152162306a36Sopenharmony_cistatic struct clk_rcg prng_src = { 152262306a36Sopenharmony_ci .ns_reg = 0x2e80, 152362306a36Sopenharmony_ci .p = { 152462306a36Sopenharmony_ci .pre_div_shift = 3, 152562306a36Sopenharmony_ci .pre_div_width = 4, 152662306a36Sopenharmony_ci }, 152762306a36Sopenharmony_ci .s = { 152862306a36Sopenharmony_ci .src_sel_shift = 0, 152962306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 153062306a36Sopenharmony_ci }, 153162306a36Sopenharmony_ci .clkr.hw = { 153262306a36Sopenharmony_ci .init = &(struct clk_init_data){ 153362306a36Sopenharmony_ci .name = "prng_src", 153462306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 153562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 153662306a36Sopenharmony_ci .ops = &clk_rcg_ops, 153762306a36Sopenharmony_ci }, 153862306a36Sopenharmony_ci }, 153962306a36Sopenharmony_ci}; 154062306a36Sopenharmony_ci 154162306a36Sopenharmony_cistatic struct clk_branch prng_clk = { 154262306a36Sopenharmony_ci .halt_reg = 0x2fd8, 154362306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 154462306a36Sopenharmony_ci .halt_bit = 10, 154562306a36Sopenharmony_ci .clkr = { 154662306a36Sopenharmony_ci .enable_reg = 0x3080, 154762306a36Sopenharmony_ci .enable_mask = BIT(10), 154862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 154962306a36Sopenharmony_ci .name = "prng_clk", 155062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 155162306a36Sopenharmony_ci &prng_src.clkr.hw 155262306a36Sopenharmony_ci }, 155362306a36Sopenharmony_ci .num_parents = 1, 155462306a36Sopenharmony_ci .ops = &clk_branch_ops, 155562306a36Sopenharmony_ci }, 155662306a36Sopenharmony_ci }, 155762306a36Sopenharmony_ci}; 155862306a36Sopenharmony_ci 155962306a36Sopenharmony_cistatic const struct freq_tbl clk_tbl_sdc[] = { 156062306a36Sopenharmony_ci { 144000, P_PXO, 3, 2, 125 }, 156162306a36Sopenharmony_ci { 400000, P_PLL8, 4, 1, 240 }, 156262306a36Sopenharmony_ci { 16000000, P_PLL8, 4, 1, 6 }, 156362306a36Sopenharmony_ci { 17070000, P_PLL8, 1, 2, 45 }, 156462306a36Sopenharmony_ci { 20210000, P_PLL8, 1, 1, 19 }, 156562306a36Sopenharmony_ci { 24000000, P_PLL8, 4, 1, 4 }, 156662306a36Sopenharmony_ci { 48000000, P_PLL8, 4, 1, 2 }, 156762306a36Sopenharmony_ci { } 156862306a36Sopenharmony_ci}; 156962306a36Sopenharmony_ci 157062306a36Sopenharmony_cistatic struct clk_rcg sdc1_src = { 157162306a36Sopenharmony_ci .ns_reg = 0x282c, 157262306a36Sopenharmony_ci .md_reg = 0x2828, 157362306a36Sopenharmony_ci .mn = { 157462306a36Sopenharmony_ci .mnctr_en_bit = 8, 157562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 157662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 157762306a36Sopenharmony_ci .n_val_shift = 16, 157862306a36Sopenharmony_ci .m_val_shift = 16, 157962306a36Sopenharmony_ci .width = 8, 158062306a36Sopenharmony_ci }, 158162306a36Sopenharmony_ci .p = { 158262306a36Sopenharmony_ci .pre_div_shift = 3, 158362306a36Sopenharmony_ci .pre_div_width = 2, 158462306a36Sopenharmony_ci }, 158562306a36Sopenharmony_ci .s = { 158662306a36Sopenharmony_ci .src_sel_shift = 0, 158762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 158862306a36Sopenharmony_ci }, 158962306a36Sopenharmony_ci .freq_tbl = clk_tbl_sdc, 159062306a36Sopenharmony_ci .clkr = { 159162306a36Sopenharmony_ci .enable_reg = 0x282c, 159262306a36Sopenharmony_ci .enable_mask = BIT(11), 159362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 159462306a36Sopenharmony_ci .name = "sdc1_src", 159562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 159662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 159762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 159862306a36Sopenharmony_ci }, 159962306a36Sopenharmony_ci } 160062306a36Sopenharmony_ci}; 160162306a36Sopenharmony_ci 160262306a36Sopenharmony_cistatic struct clk_branch sdc1_clk = { 160362306a36Sopenharmony_ci .halt_reg = 0x2fc8, 160462306a36Sopenharmony_ci .halt_bit = 6, 160562306a36Sopenharmony_ci .clkr = { 160662306a36Sopenharmony_ci .enable_reg = 0x282c, 160762306a36Sopenharmony_ci .enable_mask = BIT(9), 160862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 160962306a36Sopenharmony_ci .name = "sdc1_clk", 161062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 161162306a36Sopenharmony_ci &sdc1_src.clkr.hw 161262306a36Sopenharmony_ci }, 161362306a36Sopenharmony_ci .num_parents = 1, 161462306a36Sopenharmony_ci .ops = &clk_branch_ops, 161562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 161662306a36Sopenharmony_ci }, 161762306a36Sopenharmony_ci }, 161862306a36Sopenharmony_ci}; 161962306a36Sopenharmony_ci 162062306a36Sopenharmony_cistatic struct clk_rcg sdc2_src = { 162162306a36Sopenharmony_ci .ns_reg = 0x284c, 162262306a36Sopenharmony_ci .md_reg = 0x2848, 162362306a36Sopenharmony_ci .mn = { 162462306a36Sopenharmony_ci .mnctr_en_bit = 8, 162562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 162662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 162762306a36Sopenharmony_ci .n_val_shift = 16, 162862306a36Sopenharmony_ci .m_val_shift = 16, 162962306a36Sopenharmony_ci .width = 8, 163062306a36Sopenharmony_ci }, 163162306a36Sopenharmony_ci .p = { 163262306a36Sopenharmony_ci .pre_div_shift = 3, 163362306a36Sopenharmony_ci .pre_div_width = 2, 163462306a36Sopenharmony_ci }, 163562306a36Sopenharmony_ci .s = { 163662306a36Sopenharmony_ci .src_sel_shift = 0, 163762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 163862306a36Sopenharmony_ci }, 163962306a36Sopenharmony_ci .freq_tbl = clk_tbl_sdc, 164062306a36Sopenharmony_ci .clkr = { 164162306a36Sopenharmony_ci .enable_reg = 0x284c, 164262306a36Sopenharmony_ci .enable_mask = BIT(11), 164362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 164462306a36Sopenharmony_ci .name = "sdc2_src", 164562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 164662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 164762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 164862306a36Sopenharmony_ci }, 164962306a36Sopenharmony_ci } 165062306a36Sopenharmony_ci}; 165162306a36Sopenharmony_ci 165262306a36Sopenharmony_cistatic struct clk_branch sdc2_clk = { 165362306a36Sopenharmony_ci .halt_reg = 0x2fc8, 165462306a36Sopenharmony_ci .halt_bit = 5, 165562306a36Sopenharmony_ci .clkr = { 165662306a36Sopenharmony_ci .enable_reg = 0x284c, 165762306a36Sopenharmony_ci .enable_mask = BIT(9), 165862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 165962306a36Sopenharmony_ci .name = "sdc2_clk", 166062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 166162306a36Sopenharmony_ci &sdc2_src.clkr.hw 166262306a36Sopenharmony_ci }, 166362306a36Sopenharmony_ci .num_parents = 1, 166462306a36Sopenharmony_ci .ops = &clk_branch_ops, 166562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 166662306a36Sopenharmony_ci }, 166762306a36Sopenharmony_ci }, 166862306a36Sopenharmony_ci}; 166962306a36Sopenharmony_ci 167062306a36Sopenharmony_cistatic struct clk_rcg sdc3_src = { 167162306a36Sopenharmony_ci .ns_reg = 0x286c, 167262306a36Sopenharmony_ci .md_reg = 0x2868, 167362306a36Sopenharmony_ci .mn = { 167462306a36Sopenharmony_ci .mnctr_en_bit = 8, 167562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 167662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 167762306a36Sopenharmony_ci .n_val_shift = 16, 167862306a36Sopenharmony_ci .m_val_shift = 16, 167962306a36Sopenharmony_ci .width = 8, 168062306a36Sopenharmony_ci }, 168162306a36Sopenharmony_ci .p = { 168262306a36Sopenharmony_ci .pre_div_shift = 3, 168362306a36Sopenharmony_ci .pre_div_width = 2, 168462306a36Sopenharmony_ci }, 168562306a36Sopenharmony_ci .s = { 168662306a36Sopenharmony_ci .src_sel_shift = 0, 168762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 168862306a36Sopenharmony_ci }, 168962306a36Sopenharmony_ci .freq_tbl = clk_tbl_sdc, 169062306a36Sopenharmony_ci .clkr = { 169162306a36Sopenharmony_ci .enable_reg = 0x286c, 169262306a36Sopenharmony_ci .enable_mask = BIT(11), 169362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 169462306a36Sopenharmony_ci .name = "sdc3_src", 169562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 169662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 169762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 169862306a36Sopenharmony_ci }, 169962306a36Sopenharmony_ci } 170062306a36Sopenharmony_ci}; 170162306a36Sopenharmony_ci 170262306a36Sopenharmony_cistatic struct clk_branch sdc3_clk = { 170362306a36Sopenharmony_ci .halt_reg = 0x2fc8, 170462306a36Sopenharmony_ci .halt_bit = 4, 170562306a36Sopenharmony_ci .clkr = { 170662306a36Sopenharmony_ci .enable_reg = 0x286c, 170762306a36Sopenharmony_ci .enable_mask = BIT(9), 170862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 170962306a36Sopenharmony_ci .name = "sdc3_clk", 171062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 171162306a36Sopenharmony_ci &sdc3_src.clkr.hw 171262306a36Sopenharmony_ci }, 171362306a36Sopenharmony_ci .num_parents = 1, 171462306a36Sopenharmony_ci .ops = &clk_branch_ops, 171562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 171662306a36Sopenharmony_ci }, 171762306a36Sopenharmony_ci }, 171862306a36Sopenharmony_ci}; 171962306a36Sopenharmony_ci 172062306a36Sopenharmony_cistatic struct clk_rcg sdc4_src = { 172162306a36Sopenharmony_ci .ns_reg = 0x288c, 172262306a36Sopenharmony_ci .md_reg = 0x2888, 172362306a36Sopenharmony_ci .mn = { 172462306a36Sopenharmony_ci .mnctr_en_bit = 8, 172562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 172662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 172762306a36Sopenharmony_ci .n_val_shift = 16, 172862306a36Sopenharmony_ci .m_val_shift = 16, 172962306a36Sopenharmony_ci .width = 8, 173062306a36Sopenharmony_ci }, 173162306a36Sopenharmony_ci .p = { 173262306a36Sopenharmony_ci .pre_div_shift = 3, 173362306a36Sopenharmony_ci .pre_div_width = 2, 173462306a36Sopenharmony_ci }, 173562306a36Sopenharmony_ci .s = { 173662306a36Sopenharmony_ci .src_sel_shift = 0, 173762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 173862306a36Sopenharmony_ci }, 173962306a36Sopenharmony_ci .freq_tbl = clk_tbl_sdc, 174062306a36Sopenharmony_ci .clkr = { 174162306a36Sopenharmony_ci .enable_reg = 0x288c, 174262306a36Sopenharmony_ci .enable_mask = BIT(11), 174362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 174462306a36Sopenharmony_ci .name = "sdc4_src", 174562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 174662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 174762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 174862306a36Sopenharmony_ci }, 174962306a36Sopenharmony_ci } 175062306a36Sopenharmony_ci}; 175162306a36Sopenharmony_ci 175262306a36Sopenharmony_cistatic struct clk_branch sdc4_clk = { 175362306a36Sopenharmony_ci .halt_reg = 0x2fc8, 175462306a36Sopenharmony_ci .halt_bit = 3, 175562306a36Sopenharmony_ci .clkr = { 175662306a36Sopenharmony_ci .enable_reg = 0x288c, 175762306a36Sopenharmony_ci .enable_mask = BIT(9), 175862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 175962306a36Sopenharmony_ci .name = "sdc4_clk", 176062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 176162306a36Sopenharmony_ci &sdc4_src.clkr.hw 176262306a36Sopenharmony_ci }, 176362306a36Sopenharmony_ci .num_parents = 1, 176462306a36Sopenharmony_ci .ops = &clk_branch_ops, 176562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 176662306a36Sopenharmony_ci }, 176762306a36Sopenharmony_ci }, 176862306a36Sopenharmony_ci}; 176962306a36Sopenharmony_ci 177062306a36Sopenharmony_cistatic struct clk_rcg sdc5_src = { 177162306a36Sopenharmony_ci .ns_reg = 0x28ac, 177262306a36Sopenharmony_ci .md_reg = 0x28a8, 177362306a36Sopenharmony_ci .mn = { 177462306a36Sopenharmony_ci .mnctr_en_bit = 8, 177562306a36Sopenharmony_ci .mnctr_reset_bit = 7, 177662306a36Sopenharmony_ci .mnctr_mode_shift = 5, 177762306a36Sopenharmony_ci .n_val_shift = 16, 177862306a36Sopenharmony_ci .m_val_shift = 16, 177962306a36Sopenharmony_ci .width = 8, 178062306a36Sopenharmony_ci }, 178162306a36Sopenharmony_ci .p = { 178262306a36Sopenharmony_ci .pre_div_shift = 3, 178362306a36Sopenharmony_ci .pre_div_width = 2, 178462306a36Sopenharmony_ci }, 178562306a36Sopenharmony_ci .s = { 178662306a36Sopenharmony_ci .src_sel_shift = 0, 178762306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 178862306a36Sopenharmony_ci }, 178962306a36Sopenharmony_ci .freq_tbl = clk_tbl_sdc, 179062306a36Sopenharmony_ci .clkr = { 179162306a36Sopenharmony_ci .enable_reg = 0x28ac, 179262306a36Sopenharmony_ci .enable_mask = BIT(11), 179362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 179462306a36Sopenharmony_ci .name = "sdc5_src", 179562306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 179662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 179762306a36Sopenharmony_ci .ops = &clk_rcg_ops, 179862306a36Sopenharmony_ci }, 179962306a36Sopenharmony_ci } 180062306a36Sopenharmony_ci}; 180162306a36Sopenharmony_ci 180262306a36Sopenharmony_cistatic struct clk_branch sdc5_clk = { 180362306a36Sopenharmony_ci .halt_reg = 0x2fc8, 180462306a36Sopenharmony_ci .halt_bit = 2, 180562306a36Sopenharmony_ci .clkr = { 180662306a36Sopenharmony_ci .enable_reg = 0x28ac, 180762306a36Sopenharmony_ci .enable_mask = BIT(9), 180862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 180962306a36Sopenharmony_ci .name = "sdc5_clk", 181062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 181162306a36Sopenharmony_ci &sdc5_src.clkr.hw 181262306a36Sopenharmony_ci }, 181362306a36Sopenharmony_ci .num_parents = 1, 181462306a36Sopenharmony_ci .ops = &clk_branch_ops, 181562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 181662306a36Sopenharmony_ci }, 181762306a36Sopenharmony_ci }, 181862306a36Sopenharmony_ci}; 181962306a36Sopenharmony_ci 182062306a36Sopenharmony_cistatic const struct freq_tbl clk_tbl_tsif_ref[] = { 182162306a36Sopenharmony_ci { 105000, P_PXO, 1, 1, 256 }, 182262306a36Sopenharmony_ci { } 182362306a36Sopenharmony_ci}; 182462306a36Sopenharmony_ci 182562306a36Sopenharmony_cistatic struct clk_rcg tsif_ref_src = { 182662306a36Sopenharmony_ci .ns_reg = 0x2710, 182762306a36Sopenharmony_ci .md_reg = 0x270c, 182862306a36Sopenharmony_ci .mn = { 182962306a36Sopenharmony_ci .mnctr_en_bit = 8, 183062306a36Sopenharmony_ci .mnctr_reset_bit = 7, 183162306a36Sopenharmony_ci .mnctr_mode_shift = 5, 183262306a36Sopenharmony_ci .n_val_shift = 16, 183362306a36Sopenharmony_ci .m_val_shift = 16, 183462306a36Sopenharmony_ci .width = 16, 183562306a36Sopenharmony_ci }, 183662306a36Sopenharmony_ci .p = { 183762306a36Sopenharmony_ci .pre_div_shift = 3, 183862306a36Sopenharmony_ci .pre_div_width = 2, 183962306a36Sopenharmony_ci }, 184062306a36Sopenharmony_ci .s = { 184162306a36Sopenharmony_ci .src_sel_shift = 0, 184262306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 184362306a36Sopenharmony_ci }, 184462306a36Sopenharmony_ci .freq_tbl = clk_tbl_tsif_ref, 184562306a36Sopenharmony_ci .clkr = { 184662306a36Sopenharmony_ci .enable_reg = 0x2710, 184762306a36Sopenharmony_ci .enable_mask = BIT(11), 184862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 184962306a36Sopenharmony_ci .name = "tsif_ref_src", 185062306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 185162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 185262306a36Sopenharmony_ci .ops = &clk_rcg_ops, 185362306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 185462306a36Sopenharmony_ci }, 185562306a36Sopenharmony_ci } 185662306a36Sopenharmony_ci}; 185762306a36Sopenharmony_ci 185862306a36Sopenharmony_cistatic struct clk_branch tsif_ref_clk = { 185962306a36Sopenharmony_ci .halt_reg = 0x2fd4, 186062306a36Sopenharmony_ci .halt_bit = 5, 186162306a36Sopenharmony_ci .clkr = { 186262306a36Sopenharmony_ci .enable_reg = 0x2710, 186362306a36Sopenharmony_ci .enable_mask = BIT(9), 186462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 186562306a36Sopenharmony_ci .name = "tsif_ref_clk", 186662306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 186762306a36Sopenharmony_ci &tsif_ref_src.clkr.hw 186862306a36Sopenharmony_ci }, 186962306a36Sopenharmony_ci .num_parents = 1, 187062306a36Sopenharmony_ci .ops = &clk_branch_ops, 187162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 187262306a36Sopenharmony_ci }, 187362306a36Sopenharmony_ci }, 187462306a36Sopenharmony_ci}; 187562306a36Sopenharmony_ci 187662306a36Sopenharmony_cistatic const struct freq_tbl clk_tbl_usb[] = { 187762306a36Sopenharmony_ci { 60000000, P_PLL8, 1, 5, 32 }, 187862306a36Sopenharmony_ci { } 187962306a36Sopenharmony_ci}; 188062306a36Sopenharmony_ci 188162306a36Sopenharmony_cistatic struct clk_rcg usb_hs1_xcvr_src = { 188262306a36Sopenharmony_ci .ns_reg = 0x290c, 188362306a36Sopenharmony_ci .md_reg = 0x2908, 188462306a36Sopenharmony_ci .mn = { 188562306a36Sopenharmony_ci .mnctr_en_bit = 8, 188662306a36Sopenharmony_ci .mnctr_reset_bit = 7, 188762306a36Sopenharmony_ci .mnctr_mode_shift = 5, 188862306a36Sopenharmony_ci .n_val_shift = 16, 188962306a36Sopenharmony_ci .m_val_shift = 16, 189062306a36Sopenharmony_ci .width = 8, 189162306a36Sopenharmony_ci }, 189262306a36Sopenharmony_ci .p = { 189362306a36Sopenharmony_ci .pre_div_shift = 3, 189462306a36Sopenharmony_ci .pre_div_width = 2, 189562306a36Sopenharmony_ci }, 189662306a36Sopenharmony_ci .s = { 189762306a36Sopenharmony_ci .src_sel_shift = 0, 189862306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 189962306a36Sopenharmony_ci }, 190062306a36Sopenharmony_ci .freq_tbl = clk_tbl_usb, 190162306a36Sopenharmony_ci .clkr = { 190262306a36Sopenharmony_ci .enable_reg = 0x290c, 190362306a36Sopenharmony_ci .enable_mask = BIT(11), 190462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 190562306a36Sopenharmony_ci .name = "usb_hs1_xcvr_src", 190662306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 190762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 190862306a36Sopenharmony_ci .ops = &clk_rcg_ops, 190962306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 191062306a36Sopenharmony_ci }, 191162306a36Sopenharmony_ci } 191262306a36Sopenharmony_ci}; 191362306a36Sopenharmony_ci 191462306a36Sopenharmony_cistatic struct clk_branch usb_hs1_xcvr_clk = { 191562306a36Sopenharmony_ci .halt_reg = 0x2fc8, 191662306a36Sopenharmony_ci .halt_bit = 0, 191762306a36Sopenharmony_ci .clkr = { 191862306a36Sopenharmony_ci .enable_reg = 0x290c, 191962306a36Sopenharmony_ci .enable_mask = BIT(9), 192062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 192162306a36Sopenharmony_ci .name = "usb_hs1_xcvr_clk", 192262306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 192362306a36Sopenharmony_ci &usb_hs1_xcvr_src.clkr.hw 192462306a36Sopenharmony_ci }, 192562306a36Sopenharmony_ci .num_parents = 1, 192662306a36Sopenharmony_ci .ops = &clk_branch_ops, 192762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 192862306a36Sopenharmony_ci }, 192962306a36Sopenharmony_ci }, 193062306a36Sopenharmony_ci}; 193162306a36Sopenharmony_ci 193262306a36Sopenharmony_cistatic struct clk_rcg usb_fs1_xcvr_fs_src = { 193362306a36Sopenharmony_ci .ns_reg = 0x2968, 193462306a36Sopenharmony_ci .md_reg = 0x2964, 193562306a36Sopenharmony_ci .mn = { 193662306a36Sopenharmony_ci .mnctr_en_bit = 8, 193762306a36Sopenharmony_ci .mnctr_reset_bit = 7, 193862306a36Sopenharmony_ci .mnctr_mode_shift = 5, 193962306a36Sopenharmony_ci .n_val_shift = 16, 194062306a36Sopenharmony_ci .m_val_shift = 16, 194162306a36Sopenharmony_ci .width = 8, 194262306a36Sopenharmony_ci }, 194362306a36Sopenharmony_ci .p = { 194462306a36Sopenharmony_ci .pre_div_shift = 3, 194562306a36Sopenharmony_ci .pre_div_width = 2, 194662306a36Sopenharmony_ci }, 194762306a36Sopenharmony_ci .s = { 194862306a36Sopenharmony_ci .src_sel_shift = 0, 194962306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 195062306a36Sopenharmony_ci }, 195162306a36Sopenharmony_ci .freq_tbl = clk_tbl_usb, 195262306a36Sopenharmony_ci .clkr = { 195362306a36Sopenharmony_ci .enable_reg = 0x2968, 195462306a36Sopenharmony_ci .enable_mask = BIT(11), 195562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 195662306a36Sopenharmony_ci .name = "usb_fs1_xcvr_fs_src", 195762306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 195862306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 195962306a36Sopenharmony_ci .ops = &clk_rcg_ops, 196062306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 196162306a36Sopenharmony_ci }, 196262306a36Sopenharmony_ci } 196362306a36Sopenharmony_ci}; 196462306a36Sopenharmony_ci 196562306a36Sopenharmony_cistatic struct clk_branch usb_fs1_xcvr_fs_clk = { 196662306a36Sopenharmony_ci .halt_reg = 0x2fcc, 196762306a36Sopenharmony_ci .halt_bit = 15, 196862306a36Sopenharmony_ci .clkr = { 196962306a36Sopenharmony_ci .enable_reg = 0x2968, 197062306a36Sopenharmony_ci .enable_mask = BIT(9), 197162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 197262306a36Sopenharmony_ci .name = "usb_fs1_xcvr_fs_clk", 197362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 197462306a36Sopenharmony_ci &usb_fs1_xcvr_fs_src.clkr.hw, 197562306a36Sopenharmony_ci }, 197662306a36Sopenharmony_ci .num_parents = 1, 197762306a36Sopenharmony_ci .ops = &clk_branch_ops, 197862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 197962306a36Sopenharmony_ci }, 198062306a36Sopenharmony_ci }, 198162306a36Sopenharmony_ci}; 198262306a36Sopenharmony_ci 198362306a36Sopenharmony_cistatic struct clk_branch usb_fs1_system_clk = { 198462306a36Sopenharmony_ci .halt_reg = 0x2fcc, 198562306a36Sopenharmony_ci .halt_bit = 16, 198662306a36Sopenharmony_ci .clkr = { 198762306a36Sopenharmony_ci .enable_reg = 0x296c, 198862306a36Sopenharmony_ci .enable_mask = BIT(4), 198962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 199062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 199162306a36Sopenharmony_ci &usb_fs1_xcvr_fs_src.clkr.hw, 199262306a36Sopenharmony_ci }, 199362306a36Sopenharmony_ci .num_parents = 1, 199462306a36Sopenharmony_ci .name = "usb_fs1_system_clk", 199562306a36Sopenharmony_ci .ops = &clk_branch_ops, 199662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 199762306a36Sopenharmony_ci }, 199862306a36Sopenharmony_ci }, 199962306a36Sopenharmony_ci}; 200062306a36Sopenharmony_ci 200162306a36Sopenharmony_cistatic struct clk_rcg usb_fs2_xcvr_fs_src = { 200262306a36Sopenharmony_ci .ns_reg = 0x2988, 200362306a36Sopenharmony_ci .md_reg = 0x2984, 200462306a36Sopenharmony_ci .mn = { 200562306a36Sopenharmony_ci .mnctr_en_bit = 8, 200662306a36Sopenharmony_ci .mnctr_reset_bit = 7, 200762306a36Sopenharmony_ci .mnctr_mode_shift = 5, 200862306a36Sopenharmony_ci .n_val_shift = 16, 200962306a36Sopenharmony_ci .m_val_shift = 16, 201062306a36Sopenharmony_ci .width = 8, 201162306a36Sopenharmony_ci }, 201262306a36Sopenharmony_ci .p = { 201362306a36Sopenharmony_ci .pre_div_shift = 3, 201462306a36Sopenharmony_ci .pre_div_width = 2, 201562306a36Sopenharmony_ci }, 201662306a36Sopenharmony_ci .s = { 201762306a36Sopenharmony_ci .src_sel_shift = 0, 201862306a36Sopenharmony_ci .parent_map = gcc_pxo_pll8_map, 201962306a36Sopenharmony_ci }, 202062306a36Sopenharmony_ci .freq_tbl = clk_tbl_usb, 202162306a36Sopenharmony_ci .clkr = { 202262306a36Sopenharmony_ci .enable_reg = 0x2988, 202362306a36Sopenharmony_ci .enable_mask = BIT(11), 202462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 202562306a36Sopenharmony_ci .name = "usb_fs2_xcvr_fs_src", 202662306a36Sopenharmony_ci .parent_data = gcc_pxo_pll8, 202762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(gcc_pxo_pll8), 202862306a36Sopenharmony_ci .ops = &clk_rcg_ops, 202962306a36Sopenharmony_ci .flags = CLK_SET_RATE_GATE, 203062306a36Sopenharmony_ci }, 203162306a36Sopenharmony_ci } 203262306a36Sopenharmony_ci}; 203362306a36Sopenharmony_ci 203462306a36Sopenharmony_cistatic struct clk_branch usb_fs2_xcvr_fs_clk = { 203562306a36Sopenharmony_ci .halt_reg = 0x2fcc, 203662306a36Sopenharmony_ci .halt_bit = 12, 203762306a36Sopenharmony_ci .clkr = { 203862306a36Sopenharmony_ci .enable_reg = 0x2988, 203962306a36Sopenharmony_ci .enable_mask = BIT(9), 204062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 204162306a36Sopenharmony_ci .name = "usb_fs2_xcvr_fs_clk", 204262306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 204362306a36Sopenharmony_ci &usb_fs2_xcvr_fs_src.clkr.hw, 204462306a36Sopenharmony_ci }, 204562306a36Sopenharmony_ci .num_parents = 1, 204662306a36Sopenharmony_ci .ops = &clk_branch_ops, 204762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 204862306a36Sopenharmony_ci }, 204962306a36Sopenharmony_ci }, 205062306a36Sopenharmony_ci}; 205162306a36Sopenharmony_ci 205262306a36Sopenharmony_cistatic struct clk_branch usb_fs2_system_clk = { 205362306a36Sopenharmony_ci .halt_reg = 0x2fcc, 205462306a36Sopenharmony_ci .halt_bit = 13, 205562306a36Sopenharmony_ci .clkr = { 205662306a36Sopenharmony_ci .enable_reg = 0x298c, 205762306a36Sopenharmony_ci .enable_mask = BIT(4), 205862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 205962306a36Sopenharmony_ci .name = "usb_fs2_system_clk", 206062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]){ 206162306a36Sopenharmony_ci &usb_fs2_xcvr_fs_src.clkr.hw, 206262306a36Sopenharmony_ci }, 206362306a36Sopenharmony_ci .num_parents = 1, 206462306a36Sopenharmony_ci .ops = &clk_branch_ops, 206562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 206662306a36Sopenharmony_ci }, 206762306a36Sopenharmony_ci }, 206862306a36Sopenharmony_ci}; 206962306a36Sopenharmony_ci 207062306a36Sopenharmony_cistatic struct clk_branch gsbi1_h_clk = { 207162306a36Sopenharmony_ci .halt_reg = 0x2fcc, 207262306a36Sopenharmony_ci .halt_bit = 11, 207362306a36Sopenharmony_ci .clkr = { 207462306a36Sopenharmony_ci .enable_reg = 0x29c0, 207562306a36Sopenharmony_ci .enable_mask = BIT(4), 207662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 207762306a36Sopenharmony_ci .name = "gsbi1_h_clk", 207862306a36Sopenharmony_ci .ops = &clk_branch_ops, 207962306a36Sopenharmony_ci }, 208062306a36Sopenharmony_ci }, 208162306a36Sopenharmony_ci}; 208262306a36Sopenharmony_ci 208362306a36Sopenharmony_cistatic struct clk_branch gsbi2_h_clk = { 208462306a36Sopenharmony_ci .halt_reg = 0x2fcc, 208562306a36Sopenharmony_ci .halt_bit = 7, 208662306a36Sopenharmony_ci .clkr = { 208762306a36Sopenharmony_ci .enable_reg = 0x29e0, 208862306a36Sopenharmony_ci .enable_mask = BIT(4), 208962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 209062306a36Sopenharmony_ci .name = "gsbi2_h_clk", 209162306a36Sopenharmony_ci .ops = &clk_branch_ops, 209262306a36Sopenharmony_ci }, 209362306a36Sopenharmony_ci }, 209462306a36Sopenharmony_ci}; 209562306a36Sopenharmony_ci 209662306a36Sopenharmony_cistatic struct clk_branch gsbi3_h_clk = { 209762306a36Sopenharmony_ci .halt_reg = 0x2fcc, 209862306a36Sopenharmony_ci .halt_bit = 3, 209962306a36Sopenharmony_ci .clkr = { 210062306a36Sopenharmony_ci .enable_reg = 0x2a00, 210162306a36Sopenharmony_ci .enable_mask = BIT(4), 210262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 210362306a36Sopenharmony_ci .name = "gsbi3_h_clk", 210462306a36Sopenharmony_ci .ops = &clk_branch_ops, 210562306a36Sopenharmony_ci }, 210662306a36Sopenharmony_ci }, 210762306a36Sopenharmony_ci}; 210862306a36Sopenharmony_ci 210962306a36Sopenharmony_cistatic struct clk_branch gsbi4_h_clk = { 211062306a36Sopenharmony_ci .halt_reg = 0x2fd0, 211162306a36Sopenharmony_ci .halt_bit = 27, 211262306a36Sopenharmony_ci .clkr = { 211362306a36Sopenharmony_ci .enable_reg = 0x2a20, 211462306a36Sopenharmony_ci .enable_mask = BIT(4), 211562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 211662306a36Sopenharmony_ci .name = "gsbi4_h_clk", 211762306a36Sopenharmony_ci .ops = &clk_branch_ops, 211862306a36Sopenharmony_ci }, 211962306a36Sopenharmony_ci }, 212062306a36Sopenharmony_ci}; 212162306a36Sopenharmony_ci 212262306a36Sopenharmony_cistatic struct clk_branch gsbi5_h_clk = { 212362306a36Sopenharmony_ci .halt_reg = 0x2fd0, 212462306a36Sopenharmony_ci .halt_bit = 23, 212562306a36Sopenharmony_ci .clkr = { 212662306a36Sopenharmony_ci .enable_reg = 0x2a40, 212762306a36Sopenharmony_ci .enable_mask = BIT(4), 212862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 212962306a36Sopenharmony_ci .name = "gsbi5_h_clk", 213062306a36Sopenharmony_ci .ops = &clk_branch_ops, 213162306a36Sopenharmony_ci }, 213262306a36Sopenharmony_ci }, 213362306a36Sopenharmony_ci}; 213462306a36Sopenharmony_ci 213562306a36Sopenharmony_cistatic struct clk_branch gsbi6_h_clk = { 213662306a36Sopenharmony_ci .halt_reg = 0x2fd0, 213762306a36Sopenharmony_ci .halt_bit = 19, 213862306a36Sopenharmony_ci .clkr = { 213962306a36Sopenharmony_ci .enable_reg = 0x2a60, 214062306a36Sopenharmony_ci .enable_mask = BIT(4), 214162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 214262306a36Sopenharmony_ci .name = "gsbi6_h_clk", 214362306a36Sopenharmony_ci .ops = &clk_branch_ops, 214462306a36Sopenharmony_ci }, 214562306a36Sopenharmony_ci }, 214662306a36Sopenharmony_ci}; 214762306a36Sopenharmony_ci 214862306a36Sopenharmony_cistatic struct clk_branch gsbi7_h_clk = { 214962306a36Sopenharmony_ci .halt_reg = 0x2fd0, 215062306a36Sopenharmony_ci .halt_bit = 15, 215162306a36Sopenharmony_ci .clkr = { 215262306a36Sopenharmony_ci .enable_reg = 0x2a80, 215362306a36Sopenharmony_ci .enable_mask = BIT(4), 215462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 215562306a36Sopenharmony_ci .name = "gsbi7_h_clk", 215662306a36Sopenharmony_ci .ops = &clk_branch_ops, 215762306a36Sopenharmony_ci }, 215862306a36Sopenharmony_ci }, 215962306a36Sopenharmony_ci}; 216062306a36Sopenharmony_ci 216162306a36Sopenharmony_cistatic struct clk_branch gsbi8_h_clk = { 216262306a36Sopenharmony_ci .halt_reg = 0x2fd0, 216362306a36Sopenharmony_ci .halt_bit = 11, 216462306a36Sopenharmony_ci .clkr = { 216562306a36Sopenharmony_ci .enable_reg = 0x2aa0, 216662306a36Sopenharmony_ci .enable_mask = BIT(4), 216762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 216862306a36Sopenharmony_ci .name = "gsbi8_h_clk", 216962306a36Sopenharmony_ci .ops = &clk_branch_ops, 217062306a36Sopenharmony_ci }, 217162306a36Sopenharmony_ci }, 217262306a36Sopenharmony_ci}; 217362306a36Sopenharmony_ci 217462306a36Sopenharmony_cistatic struct clk_branch gsbi9_h_clk = { 217562306a36Sopenharmony_ci .halt_reg = 0x2fd0, 217662306a36Sopenharmony_ci .halt_bit = 7, 217762306a36Sopenharmony_ci .clkr = { 217862306a36Sopenharmony_ci .enable_reg = 0x2ac0, 217962306a36Sopenharmony_ci .enable_mask = BIT(4), 218062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 218162306a36Sopenharmony_ci .name = "gsbi9_h_clk", 218262306a36Sopenharmony_ci .ops = &clk_branch_ops, 218362306a36Sopenharmony_ci }, 218462306a36Sopenharmony_ci }, 218562306a36Sopenharmony_ci}; 218662306a36Sopenharmony_ci 218762306a36Sopenharmony_cistatic struct clk_branch gsbi10_h_clk = { 218862306a36Sopenharmony_ci .halt_reg = 0x2fd0, 218962306a36Sopenharmony_ci .halt_bit = 3, 219062306a36Sopenharmony_ci .clkr = { 219162306a36Sopenharmony_ci .enable_reg = 0x2ae0, 219262306a36Sopenharmony_ci .enable_mask = BIT(4), 219362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 219462306a36Sopenharmony_ci .name = "gsbi10_h_clk", 219562306a36Sopenharmony_ci .ops = &clk_branch_ops, 219662306a36Sopenharmony_ci }, 219762306a36Sopenharmony_ci }, 219862306a36Sopenharmony_ci}; 219962306a36Sopenharmony_ci 220062306a36Sopenharmony_cistatic struct clk_branch gsbi11_h_clk = { 220162306a36Sopenharmony_ci .halt_reg = 0x2fd4, 220262306a36Sopenharmony_ci .halt_bit = 18, 220362306a36Sopenharmony_ci .clkr = { 220462306a36Sopenharmony_ci .enable_reg = 0x2b00, 220562306a36Sopenharmony_ci .enable_mask = BIT(4), 220662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 220762306a36Sopenharmony_ci .name = "gsbi11_h_clk", 220862306a36Sopenharmony_ci .ops = &clk_branch_ops, 220962306a36Sopenharmony_ci }, 221062306a36Sopenharmony_ci }, 221162306a36Sopenharmony_ci}; 221262306a36Sopenharmony_ci 221362306a36Sopenharmony_cistatic struct clk_branch gsbi12_h_clk = { 221462306a36Sopenharmony_ci .halt_reg = 0x2fd4, 221562306a36Sopenharmony_ci .halt_bit = 14, 221662306a36Sopenharmony_ci .clkr = { 221762306a36Sopenharmony_ci .enable_reg = 0x2b20, 221862306a36Sopenharmony_ci .enable_mask = BIT(4), 221962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 222062306a36Sopenharmony_ci .name = "gsbi12_h_clk", 222162306a36Sopenharmony_ci .ops = &clk_branch_ops, 222262306a36Sopenharmony_ci }, 222362306a36Sopenharmony_ci }, 222462306a36Sopenharmony_ci}; 222562306a36Sopenharmony_ci 222662306a36Sopenharmony_cistatic struct clk_branch tsif_h_clk = { 222762306a36Sopenharmony_ci .halt_reg = 0x2fd4, 222862306a36Sopenharmony_ci .halt_bit = 7, 222962306a36Sopenharmony_ci .clkr = { 223062306a36Sopenharmony_ci .enable_reg = 0x2700, 223162306a36Sopenharmony_ci .enable_mask = BIT(4), 223262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 223362306a36Sopenharmony_ci .name = "tsif_h_clk", 223462306a36Sopenharmony_ci .ops = &clk_branch_ops, 223562306a36Sopenharmony_ci }, 223662306a36Sopenharmony_ci }, 223762306a36Sopenharmony_ci}; 223862306a36Sopenharmony_ci 223962306a36Sopenharmony_cistatic struct clk_branch usb_fs1_h_clk = { 224062306a36Sopenharmony_ci .halt_reg = 0x2fcc, 224162306a36Sopenharmony_ci .halt_bit = 17, 224262306a36Sopenharmony_ci .clkr = { 224362306a36Sopenharmony_ci .enable_reg = 0x2960, 224462306a36Sopenharmony_ci .enable_mask = BIT(4), 224562306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 224662306a36Sopenharmony_ci .name = "usb_fs1_h_clk", 224762306a36Sopenharmony_ci .ops = &clk_branch_ops, 224862306a36Sopenharmony_ci }, 224962306a36Sopenharmony_ci }, 225062306a36Sopenharmony_ci}; 225162306a36Sopenharmony_ci 225262306a36Sopenharmony_cistatic struct clk_branch usb_fs2_h_clk = { 225362306a36Sopenharmony_ci .halt_reg = 0x2fcc, 225462306a36Sopenharmony_ci .halt_bit = 14, 225562306a36Sopenharmony_ci .clkr = { 225662306a36Sopenharmony_ci .enable_reg = 0x2980, 225762306a36Sopenharmony_ci .enable_mask = BIT(4), 225862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 225962306a36Sopenharmony_ci .name = "usb_fs2_h_clk", 226062306a36Sopenharmony_ci .ops = &clk_branch_ops, 226162306a36Sopenharmony_ci }, 226262306a36Sopenharmony_ci }, 226362306a36Sopenharmony_ci}; 226462306a36Sopenharmony_ci 226562306a36Sopenharmony_cistatic struct clk_branch usb_hs1_h_clk = { 226662306a36Sopenharmony_ci .halt_reg = 0x2fc8, 226762306a36Sopenharmony_ci .halt_bit = 1, 226862306a36Sopenharmony_ci .clkr = { 226962306a36Sopenharmony_ci .enable_reg = 0x2900, 227062306a36Sopenharmony_ci .enable_mask = BIT(4), 227162306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 227262306a36Sopenharmony_ci .name = "usb_hs1_h_clk", 227362306a36Sopenharmony_ci .ops = &clk_branch_ops, 227462306a36Sopenharmony_ci }, 227562306a36Sopenharmony_ci }, 227662306a36Sopenharmony_ci}; 227762306a36Sopenharmony_ci 227862306a36Sopenharmony_cistatic struct clk_branch sdc1_h_clk = { 227962306a36Sopenharmony_ci .halt_reg = 0x2fc8, 228062306a36Sopenharmony_ci .halt_bit = 11, 228162306a36Sopenharmony_ci .clkr = { 228262306a36Sopenharmony_ci .enable_reg = 0x2820, 228362306a36Sopenharmony_ci .enable_mask = BIT(4), 228462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 228562306a36Sopenharmony_ci .name = "sdc1_h_clk", 228662306a36Sopenharmony_ci .ops = &clk_branch_ops, 228762306a36Sopenharmony_ci }, 228862306a36Sopenharmony_ci }, 228962306a36Sopenharmony_ci}; 229062306a36Sopenharmony_ci 229162306a36Sopenharmony_cistatic struct clk_branch sdc2_h_clk = { 229262306a36Sopenharmony_ci .halt_reg = 0x2fc8, 229362306a36Sopenharmony_ci .halt_bit = 10, 229462306a36Sopenharmony_ci .clkr = { 229562306a36Sopenharmony_ci .enable_reg = 0x2840, 229662306a36Sopenharmony_ci .enable_mask = BIT(4), 229762306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 229862306a36Sopenharmony_ci .name = "sdc2_h_clk", 229962306a36Sopenharmony_ci .ops = &clk_branch_ops, 230062306a36Sopenharmony_ci }, 230162306a36Sopenharmony_ci }, 230262306a36Sopenharmony_ci}; 230362306a36Sopenharmony_ci 230462306a36Sopenharmony_cistatic struct clk_branch sdc3_h_clk = { 230562306a36Sopenharmony_ci .halt_reg = 0x2fc8, 230662306a36Sopenharmony_ci .halt_bit = 9, 230762306a36Sopenharmony_ci .clkr = { 230862306a36Sopenharmony_ci .enable_reg = 0x2860, 230962306a36Sopenharmony_ci .enable_mask = BIT(4), 231062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 231162306a36Sopenharmony_ci .name = "sdc3_h_clk", 231262306a36Sopenharmony_ci .ops = &clk_branch_ops, 231362306a36Sopenharmony_ci }, 231462306a36Sopenharmony_ci }, 231562306a36Sopenharmony_ci}; 231662306a36Sopenharmony_ci 231762306a36Sopenharmony_cistatic struct clk_branch sdc4_h_clk = { 231862306a36Sopenharmony_ci .halt_reg = 0x2fc8, 231962306a36Sopenharmony_ci .halt_bit = 8, 232062306a36Sopenharmony_ci .clkr = { 232162306a36Sopenharmony_ci .enable_reg = 0x2880, 232262306a36Sopenharmony_ci .enable_mask = BIT(4), 232362306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 232462306a36Sopenharmony_ci .name = "sdc4_h_clk", 232562306a36Sopenharmony_ci .ops = &clk_branch_ops, 232662306a36Sopenharmony_ci }, 232762306a36Sopenharmony_ci }, 232862306a36Sopenharmony_ci}; 232962306a36Sopenharmony_ci 233062306a36Sopenharmony_cistatic struct clk_branch sdc5_h_clk = { 233162306a36Sopenharmony_ci .halt_reg = 0x2fc8, 233262306a36Sopenharmony_ci .halt_bit = 7, 233362306a36Sopenharmony_ci .clkr = { 233462306a36Sopenharmony_ci .enable_reg = 0x28a0, 233562306a36Sopenharmony_ci .enable_mask = BIT(4), 233662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 233762306a36Sopenharmony_ci .name = "sdc5_h_clk", 233862306a36Sopenharmony_ci .ops = &clk_branch_ops, 233962306a36Sopenharmony_ci }, 234062306a36Sopenharmony_ci }, 234162306a36Sopenharmony_ci}; 234262306a36Sopenharmony_ci 234362306a36Sopenharmony_cistatic struct clk_branch ebi2_2x_clk = { 234462306a36Sopenharmony_ci .halt_reg = 0x2fcc, 234562306a36Sopenharmony_ci .halt_bit = 18, 234662306a36Sopenharmony_ci .clkr = { 234762306a36Sopenharmony_ci .enable_reg = 0x2660, 234862306a36Sopenharmony_ci .enable_mask = BIT(4), 234962306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 235062306a36Sopenharmony_ci .name = "ebi2_2x_clk", 235162306a36Sopenharmony_ci .ops = &clk_branch_ops, 235262306a36Sopenharmony_ci }, 235362306a36Sopenharmony_ci }, 235462306a36Sopenharmony_ci}; 235562306a36Sopenharmony_ci 235662306a36Sopenharmony_cistatic struct clk_branch ebi2_clk = { 235762306a36Sopenharmony_ci .halt_reg = 0x2fcc, 235862306a36Sopenharmony_ci .halt_bit = 19, 235962306a36Sopenharmony_ci .clkr = { 236062306a36Sopenharmony_ci .enable_reg = 0x2664, 236162306a36Sopenharmony_ci .enable_mask = BIT(4), 236262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 236362306a36Sopenharmony_ci .name = "ebi2_clk", 236462306a36Sopenharmony_ci .ops = &clk_branch_ops, 236562306a36Sopenharmony_ci }, 236662306a36Sopenharmony_ci }, 236762306a36Sopenharmony_ci}; 236862306a36Sopenharmony_ci 236962306a36Sopenharmony_cistatic struct clk_branch adm0_clk = { 237062306a36Sopenharmony_ci .halt_reg = 0x2fdc, 237162306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 237262306a36Sopenharmony_ci .halt_bit = 14, 237362306a36Sopenharmony_ci .clkr = { 237462306a36Sopenharmony_ci .enable_reg = 0x3080, 237562306a36Sopenharmony_ci .enable_mask = BIT(2), 237662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 237762306a36Sopenharmony_ci .name = "adm0_clk", 237862306a36Sopenharmony_ci .ops = &clk_branch_ops, 237962306a36Sopenharmony_ci }, 238062306a36Sopenharmony_ci }, 238162306a36Sopenharmony_ci}; 238262306a36Sopenharmony_ci 238362306a36Sopenharmony_cistatic struct clk_branch adm0_pbus_clk = { 238462306a36Sopenharmony_ci .halt_reg = 0x2fdc, 238562306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 238662306a36Sopenharmony_ci .halt_bit = 13, 238762306a36Sopenharmony_ci .clkr = { 238862306a36Sopenharmony_ci .enable_reg = 0x3080, 238962306a36Sopenharmony_ci .enable_mask = BIT(3), 239062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 239162306a36Sopenharmony_ci .name = "adm0_pbus_clk", 239262306a36Sopenharmony_ci .ops = &clk_branch_ops, 239362306a36Sopenharmony_ci }, 239462306a36Sopenharmony_ci }, 239562306a36Sopenharmony_ci}; 239662306a36Sopenharmony_ci 239762306a36Sopenharmony_cistatic struct clk_branch adm1_clk = { 239862306a36Sopenharmony_ci .halt_reg = 0x2fdc, 239962306a36Sopenharmony_ci .halt_bit = 12, 240062306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 240162306a36Sopenharmony_ci .clkr = { 240262306a36Sopenharmony_ci .enable_reg = 0x3080, 240362306a36Sopenharmony_ci .enable_mask = BIT(4), 240462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 240562306a36Sopenharmony_ci .name = "adm1_clk", 240662306a36Sopenharmony_ci .ops = &clk_branch_ops, 240762306a36Sopenharmony_ci }, 240862306a36Sopenharmony_ci }, 240962306a36Sopenharmony_ci}; 241062306a36Sopenharmony_ci 241162306a36Sopenharmony_cistatic struct clk_branch adm1_pbus_clk = { 241262306a36Sopenharmony_ci .halt_reg = 0x2fdc, 241362306a36Sopenharmony_ci .halt_bit = 11, 241462306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 241562306a36Sopenharmony_ci .clkr = { 241662306a36Sopenharmony_ci .enable_reg = 0x3080, 241762306a36Sopenharmony_ci .enable_mask = BIT(5), 241862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 241962306a36Sopenharmony_ci .name = "adm1_pbus_clk", 242062306a36Sopenharmony_ci .ops = &clk_branch_ops, 242162306a36Sopenharmony_ci }, 242262306a36Sopenharmony_ci }, 242362306a36Sopenharmony_ci}; 242462306a36Sopenharmony_ci 242562306a36Sopenharmony_cistatic struct clk_branch modem_ahb1_h_clk = { 242662306a36Sopenharmony_ci .halt_reg = 0x2fdc, 242762306a36Sopenharmony_ci .halt_bit = 8, 242862306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 242962306a36Sopenharmony_ci .clkr = { 243062306a36Sopenharmony_ci .enable_reg = 0x3080, 243162306a36Sopenharmony_ci .enable_mask = BIT(0), 243262306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 243362306a36Sopenharmony_ci .name = "modem_ahb1_h_clk", 243462306a36Sopenharmony_ci .ops = &clk_branch_ops, 243562306a36Sopenharmony_ci }, 243662306a36Sopenharmony_ci }, 243762306a36Sopenharmony_ci}; 243862306a36Sopenharmony_ci 243962306a36Sopenharmony_cistatic struct clk_branch modem_ahb2_h_clk = { 244062306a36Sopenharmony_ci .halt_reg = 0x2fdc, 244162306a36Sopenharmony_ci .halt_bit = 7, 244262306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 244362306a36Sopenharmony_ci .clkr = { 244462306a36Sopenharmony_ci .enable_reg = 0x3080, 244562306a36Sopenharmony_ci .enable_mask = BIT(1), 244662306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 244762306a36Sopenharmony_ci .name = "modem_ahb2_h_clk", 244862306a36Sopenharmony_ci .ops = &clk_branch_ops, 244962306a36Sopenharmony_ci }, 245062306a36Sopenharmony_ci }, 245162306a36Sopenharmony_ci}; 245262306a36Sopenharmony_ci 245362306a36Sopenharmony_cistatic struct clk_branch pmic_arb0_h_clk = { 245462306a36Sopenharmony_ci .halt_reg = 0x2fd8, 245562306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 245662306a36Sopenharmony_ci .halt_bit = 22, 245762306a36Sopenharmony_ci .clkr = { 245862306a36Sopenharmony_ci .enable_reg = 0x3080, 245962306a36Sopenharmony_ci .enable_mask = BIT(8), 246062306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 246162306a36Sopenharmony_ci .name = "pmic_arb0_h_clk", 246262306a36Sopenharmony_ci .ops = &clk_branch_ops, 246362306a36Sopenharmony_ci }, 246462306a36Sopenharmony_ci }, 246562306a36Sopenharmony_ci}; 246662306a36Sopenharmony_ci 246762306a36Sopenharmony_cistatic struct clk_branch pmic_arb1_h_clk = { 246862306a36Sopenharmony_ci .halt_reg = 0x2fd8, 246962306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 247062306a36Sopenharmony_ci .halt_bit = 21, 247162306a36Sopenharmony_ci .clkr = { 247262306a36Sopenharmony_ci .enable_reg = 0x3080, 247362306a36Sopenharmony_ci .enable_mask = BIT(9), 247462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 247562306a36Sopenharmony_ci .name = "pmic_arb1_h_clk", 247662306a36Sopenharmony_ci .ops = &clk_branch_ops, 247762306a36Sopenharmony_ci }, 247862306a36Sopenharmony_ci }, 247962306a36Sopenharmony_ci}; 248062306a36Sopenharmony_ci 248162306a36Sopenharmony_cistatic struct clk_branch pmic_ssbi2_clk = { 248262306a36Sopenharmony_ci .halt_reg = 0x2fd8, 248362306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 248462306a36Sopenharmony_ci .halt_bit = 23, 248562306a36Sopenharmony_ci .clkr = { 248662306a36Sopenharmony_ci .enable_reg = 0x3080, 248762306a36Sopenharmony_ci .enable_mask = BIT(7), 248862306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 248962306a36Sopenharmony_ci .name = "pmic_ssbi2_clk", 249062306a36Sopenharmony_ci .ops = &clk_branch_ops, 249162306a36Sopenharmony_ci }, 249262306a36Sopenharmony_ci }, 249362306a36Sopenharmony_ci}; 249462306a36Sopenharmony_ci 249562306a36Sopenharmony_cistatic struct clk_branch rpm_msg_ram_h_clk = { 249662306a36Sopenharmony_ci .hwcg_reg = 0x27e0, 249762306a36Sopenharmony_ci .hwcg_bit = 6, 249862306a36Sopenharmony_ci .halt_reg = 0x2fd8, 249962306a36Sopenharmony_ci .halt_check = BRANCH_HALT_VOTED, 250062306a36Sopenharmony_ci .halt_bit = 12, 250162306a36Sopenharmony_ci .clkr = { 250262306a36Sopenharmony_ci .enable_reg = 0x3080, 250362306a36Sopenharmony_ci .enable_mask = BIT(6), 250462306a36Sopenharmony_ci .hw.init = &(struct clk_init_data){ 250562306a36Sopenharmony_ci .name = "rpm_msg_ram_h_clk", 250662306a36Sopenharmony_ci .ops = &clk_branch_ops, 250762306a36Sopenharmony_ci }, 250862306a36Sopenharmony_ci }, 250962306a36Sopenharmony_ci}; 251062306a36Sopenharmony_ci 251162306a36Sopenharmony_cistatic struct clk_regmap *gcc_msm8660_clks[] = { 251262306a36Sopenharmony_ci [PLL8] = &pll8.clkr, 251362306a36Sopenharmony_ci [PLL8_VOTE] = &pll8_vote, 251462306a36Sopenharmony_ci [GSBI1_UART_SRC] = &gsbi1_uart_src.clkr, 251562306a36Sopenharmony_ci [GSBI1_UART_CLK] = &gsbi1_uart_clk.clkr, 251662306a36Sopenharmony_ci [GSBI2_UART_SRC] = &gsbi2_uart_src.clkr, 251762306a36Sopenharmony_ci [GSBI2_UART_CLK] = &gsbi2_uart_clk.clkr, 251862306a36Sopenharmony_ci [GSBI3_UART_SRC] = &gsbi3_uart_src.clkr, 251962306a36Sopenharmony_ci [GSBI3_UART_CLK] = &gsbi3_uart_clk.clkr, 252062306a36Sopenharmony_ci [GSBI4_UART_SRC] = &gsbi4_uart_src.clkr, 252162306a36Sopenharmony_ci [GSBI4_UART_CLK] = &gsbi4_uart_clk.clkr, 252262306a36Sopenharmony_ci [GSBI5_UART_SRC] = &gsbi5_uart_src.clkr, 252362306a36Sopenharmony_ci [GSBI5_UART_CLK] = &gsbi5_uart_clk.clkr, 252462306a36Sopenharmony_ci [GSBI6_UART_SRC] = &gsbi6_uart_src.clkr, 252562306a36Sopenharmony_ci [GSBI6_UART_CLK] = &gsbi6_uart_clk.clkr, 252662306a36Sopenharmony_ci [GSBI7_UART_SRC] = &gsbi7_uart_src.clkr, 252762306a36Sopenharmony_ci [GSBI7_UART_CLK] = &gsbi7_uart_clk.clkr, 252862306a36Sopenharmony_ci [GSBI8_UART_SRC] = &gsbi8_uart_src.clkr, 252962306a36Sopenharmony_ci [GSBI8_UART_CLK] = &gsbi8_uart_clk.clkr, 253062306a36Sopenharmony_ci [GSBI9_UART_SRC] = &gsbi9_uart_src.clkr, 253162306a36Sopenharmony_ci [GSBI9_UART_CLK] = &gsbi9_uart_clk.clkr, 253262306a36Sopenharmony_ci [GSBI10_UART_SRC] = &gsbi10_uart_src.clkr, 253362306a36Sopenharmony_ci [GSBI10_UART_CLK] = &gsbi10_uart_clk.clkr, 253462306a36Sopenharmony_ci [GSBI11_UART_SRC] = &gsbi11_uart_src.clkr, 253562306a36Sopenharmony_ci [GSBI11_UART_CLK] = &gsbi11_uart_clk.clkr, 253662306a36Sopenharmony_ci [GSBI12_UART_SRC] = &gsbi12_uart_src.clkr, 253762306a36Sopenharmony_ci [GSBI12_UART_CLK] = &gsbi12_uart_clk.clkr, 253862306a36Sopenharmony_ci [GSBI1_QUP_SRC] = &gsbi1_qup_src.clkr, 253962306a36Sopenharmony_ci [GSBI1_QUP_CLK] = &gsbi1_qup_clk.clkr, 254062306a36Sopenharmony_ci [GSBI2_QUP_SRC] = &gsbi2_qup_src.clkr, 254162306a36Sopenharmony_ci [GSBI2_QUP_CLK] = &gsbi2_qup_clk.clkr, 254262306a36Sopenharmony_ci [GSBI3_QUP_SRC] = &gsbi3_qup_src.clkr, 254362306a36Sopenharmony_ci [GSBI3_QUP_CLK] = &gsbi3_qup_clk.clkr, 254462306a36Sopenharmony_ci [GSBI4_QUP_SRC] = &gsbi4_qup_src.clkr, 254562306a36Sopenharmony_ci [GSBI4_QUP_CLK] = &gsbi4_qup_clk.clkr, 254662306a36Sopenharmony_ci [GSBI5_QUP_SRC] = &gsbi5_qup_src.clkr, 254762306a36Sopenharmony_ci [GSBI5_QUP_CLK] = &gsbi5_qup_clk.clkr, 254862306a36Sopenharmony_ci [GSBI6_QUP_SRC] = &gsbi6_qup_src.clkr, 254962306a36Sopenharmony_ci [GSBI6_QUP_CLK] = &gsbi6_qup_clk.clkr, 255062306a36Sopenharmony_ci [GSBI7_QUP_SRC] = &gsbi7_qup_src.clkr, 255162306a36Sopenharmony_ci [GSBI7_QUP_CLK] = &gsbi7_qup_clk.clkr, 255262306a36Sopenharmony_ci [GSBI8_QUP_SRC] = &gsbi8_qup_src.clkr, 255362306a36Sopenharmony_ci [GSBI8_QUP_CLK] = &gsbi8_qup_clk.clkr, 255462306a36Sopenharmony_ci [GSBI9_QUP_SRC] = &gsbi9_qup_src.clkr, 255562306a36Sopenharmony_ci [GSBI9_QUP_CLK] = &gsbi9_qup_clk.clkr, 255662306a36Sopenharmony_ci [GSBI10_QUP_SRC] = &gsbi10_qup_src.clkr, 255762306a36Sopenharmony_ci [GSBI10_QUP_CLK] = &gsbi10_qup_clk.clkr, 255862306a36Sopenharmony_ci [GSBI11_QUP_SRC] = &gsbi11_qup_src.clkr, 255962306a36Sopenharmony_ci [GSBI11_QUP_CLK] = &gsbi11_qup_clk.clkr, 256062306a36Sopenharmony_ci [GSBI12_QUP_SRC] = &gsbi12_qup_src.clkr, 256162306a36Sopenharmony_ci [GSBI12_QUP_CLK] = &gsbi12_qup_clk.clkr, 256262306a36Sopenharmony_ci [GP0_SRC] = &gp0_src.clkr, 256362306a36Sopenharmony_ci [GP0_CLK] = &gp0_clk.clkr, 256462306a36Sopenharmony_ci [GP1_SRC] = &gp1_src.clkr, 256562306a36Sopenharmony_ci [GP1_CLK] = &gp1_clk.clkr, 256662306a36Sopenharmony_ci [GP2_SRC] = &gp2_src.clkr, 256762306a36Sopenharmony_ci [GP2_CLK] = &gp2_clk.clkr, 256862306a36Sopenharmony_ci [PMEM_CLK] = &pmem_clk.clkr, 256962306a36Sopenharmony_ci [PRNG_SRC] = &prng_src.clkr, 257062306a36Sopenharmony_ci [PRNG_CLK] = &prng_clk.clkr, 257162306a36Sopenharmony_ci [SDC1_SRC] = &sdc1_src.clkr, 257262306a36Sopenharmony_ci [SDC1_CLK] = &sdc1_clk.clkr, 257362306a36Sopenharmony_ci [SDC2_SRC] = &sdc2_src.clkr, 257462306a36Sopenharmony_ci [SDC2_CLK] = &sdc2_clk.clkr, 257562306a36Sopenharmony_ci [SDC3_SRC] = &sdc3_src.clkr, 257662306a36Sopenharmony_ci [SDC3_CLK] = &sdc3_clk.clkr, 257762306a36Sopenharmony_ci [SDC4_SRC] = &sdc4_src.clkr, 257862306a36Sopenharmony_ci [SDC4_CLK] = &sdc4_clk.clkr, 257962306a36Sopenharmony_ci [SDC5_SRC] = &sdc5_src.clkr, 258062306a36Sopenharmony_ci [SDC5_CLK] = &sdc5_clk.clkr, 258162306a36Sopenharmony_ci [TSIF_REF_SRC] = &tsif_ref_src.clkr, 258262306a36Sopenharmony_ci [TSIF_REF_CLK] = &tsif_ref_clk.clkr, 258362306a36Sopenharmony_ci [USB_HS1_XCVR_SRC] = &usb_hs1_xcvr_src.clkr, 258462306a36Sopenharmony_ci [USB_HS1_XCVR_CLK] = &usb_hs1_xcvr_clk.clkr, 258562306a36Sopenharmony_ci [USB_FS1_XCVR_FS_SRC] = &usb_fs1_xcvr_fs_src.clkr, 258662306a36Sopenharmony_ci [USB_FS1_XCVR_FS_CLK] = &usb_fs1_xcvr_fs_clk.clkr, 258762306a36Sopenharmony_ci [USB_FS1_SYSTEM_CLK] = &usb_fs1_system_clk.clkr, 258862306a36Sopenharmony_ci [USB_FS2_XCVR_FS_SRC] = &usb_fs2_xcvr_fs_src.clkr, 258962306a36Sopenharmony_ci [USB_FS2_XCVR_FS_CLK] = &usb_fs2_xcvr_fs_clk.clkr, 259062306a36Sopenharmony_ci [USB_FS2_SYSTEM_CLK] = &usb_fs2_system_clk.clkr, 259162306a36Sopenharmony_ci [GSBI1_H_CLK] = &gsbi1_h_clk.clkr, 259262306a36Sopenharmony_ci [GSBI2_H_CLK] = &gsbi2_h_clk.clkr, 259362306a36Sopenharmony_ci [GSBI3_H_CLK] = &gsbi3_h_clk.clkr, 259462306a36Sopenharmony_ci [GSBI4_H_CLK] = &gsbi4_h_clk.clkr, 259562306a36Sopenharmony_ci [GSBI5_H_CLK] = &gsbi5_h_clk.clkr, 259662306a36Sopenharmony_ci [GSBI6_H_CLK] = &gsbi6_h_clk.clkr, 259762306a36Sopenharmony_ci [GSBI7_H_CLK] = &gsbi7_h_clk.clkr, 259862306a36Sopenharmony_ci [GSBI8_H_CLK] = &gsbi8_h_clk.clkr, 259962306a36Sopenharmony_ci [GSBI9_H_CLK] = &gsbi9_h_clk.clkr, 260062306a36Sopenharmony_ci [GSBI10_H_CLK] = &gsbi10_h_clk.clkr, 260162306a36Sopenharmony_ci [GSBI11_H_CLK] = &gsbi11_h_clk.clkr, 260262306a36Sopenharmony_ci [GSBI12_H_CLK] = &gsbi12_h_clk.clkr, 260362306a36Sopenharmony_ci [TSIF_H_CLK] = &tsif_h_clk.clkr, 260462306a36Sopenharmony_ci [USB_FS1_H_CLK] = &usb_fs1_h_clk.clkr, 260562306a36Sopenharmony_ci [USB_FS2_H_CLK] = &usb_fs2_h_clk.clkr, 260662306a36Sopenharmony_ci [USB_HS1_H_CLK] = &usb_hs1_h_clk.clkr, 260762306a36Sopenharmony_ci [SDC1_H_CLK] = &sdc1_h_clk.clkr, 260862306a36Sopenharmony_ci [SDC2_H_CLK] = &sdc2_h_clk.clkr, 260962306a36Sopenharmony_ci [SDC3_H_CLK] = &sdc3_h_clk.clkr, 261062306a36Sopenharmony_ci [SDC4_H_CLK] = &sdc4_h_clk.clkr, 261162306a36Sopenharmony_ci [SDC5_H_CLK] = &sdc5_h_clk.clkr, 261262306a36Sopenharmony_ci [EBI2_2X_CLK] = &ebi2_2x_clk.clkr, 261362306a36Sopenharmony_ci [EBI2_CLK] = &ebi2_clk.clkr, 261462306a36Sopenharmony_ci [ADM0_CLK] = &adm0_clk.clkr, 261562306a36Sopenharmony_ci [ADM0_PBUS_CLK] = &adm0_pbus_clk.clkr, 261662306a36Sopenharmony_ci [ADM1_CLK] = &adm1_clk.clkr, 261762306a36Sopenharmony_ci [ADM1_PBUS_CLK] = &adm1_pbus_clk.clkr, 261862306a36Sopenharmony_ci [MODEM_AHB1_H_CLK] = &modem_ahb1_h_clk.clkr, 261962306a36Sopenharmony_ci [MODEM_AHB2_H_CLK] = &modem_ahb2_h_clk.clkr, 262062306a36Sopenharmony_ci [PMIC_ARB0_H_CLK] = &pmic_arb0_h_clk.clkr, 262162306a36Sopenharmony_ci [PMIC_ARB1_H_CLK] = &pmic_arb1_h_clk.clkr, 262262306a36Sopenharmony_ci [PMIC_SSBI2_CLK] = &pmic_ssbi2_clk.clkr, 262362306a36Sopenharmony_ci [RPM_MSG_RAM_H_CLK] = &rpm_msg_ram_h_clk.clkr, 262462306a36Sopenharmony_ci}; 262562306a36Sopenharmony_ci 262662306a36Sopenharmony_cistatic const struct qcom_reset_map gcc_msm8660_resets[] = { 262762306a36Sopenharmony_ci [AFAB_CORE_RESET] = { 0x2080, 7 }, 262862306a36Sopenharmony_ci [SCSS_SYS_RESET] = { 0x20b4, 1 }, 262962306a36Sopenharmony_ci [SCSS_SYS_POR_RESET] = { 0x20b4 }, 263062306a36Sopenharmony_ci [AFAB_SMPSS_S_RESET] = { 0x20b8, 2 }, 263162306a36Sopenharmony_ci [AFAB_SMPSS_M1_RESET] = { 0x20b8, 1 }, 263262306a36Sopenharmony_ci [AFAB_SMPSS_M0_RESET] = { 0x20b8 }, 263362306a36Sopenharmony_ci [AFAB_EBI1_S_RESET] = { 0x20c0, 7 }, 263462306a36Sopenharmony_ci [SFAB_CORE_RESET] = { 0x2120, 7 }, 263562306a36Sopenharmony_ci [SFAB_ADM0_M0_RESET] = { 0x21e0, 7 }, 263662306a36Sopenharmony_ci [SFAB_ADM0_M1_RESET] = { 0x21e4, 7 }, 263762306a36Sopenharmony_ci [SFAB_ADM0_M2_RESET] = { 0x21e4, 7 }, 263862306a36Sopenharmony_ci [ADM0_C2_RESET] = { 0x220c, 4 }, 263962306a36Sopenharmony_ci [ADM0_C1_RESET] = { 0x220c, 3 }, 264062306a36Sopenharmony_ci [ADM0_C0_RESET] = { 0x220c, 2 }, 264162306a36Sopenharmony_ci [ADM0_PBUS_RESET] = { 0x220c, 1 }, 264262306a36Sopenharmony_ci [ADM0_RESET] = { 0x220c }, 264362306a36Sopenharmony_ci [SFAB_ADM1_M0_RESET] = { 0x2220, 7 }, 264462306a36Sopenharmony_ci [SFAB_ADM1_M1_RESET] = { 0x2224, 7 }, 264562306a36Sopenharmony_ci [SFAB_ADM1_M2_RESET] = { 0x2228, 7 }, 264662306a36Sopenharmony_ci [MMFAB_ADM1_M3_RESET] = { 0x2240, 7 }, 264762306a36Sopenharmony_ci [ADM1_C3_RESET] = { 0x226c, 5 }, 264862306a36Sopenharmony_ci [ADM1_C2_RESET] = { 0x226c, 4 }, 264962306a36Sopenharmony_ci [ADM1_C1_RESET] = { 0x226c, 3 }, 265062306a36Sopenharmony_ci [ADM1_C0_RESET] = { 0x226c, 2 }, 265162306a36Sopenharmony_ci [ADM1_PBUS_RESET] = { 0x226c, 1 }, 265262306a36Sopenharmony_ci [ADM1_RESET] = { 0x226c }, 265362306a36Sopenharmony_ci [IMEM0_RESET] = { 0x2280, 7 }, 265462306a36Sopenharmony_ci [SFAB_LPASS_Q6_RESET] = { 0x23a0, 7 }, 265562306a36Sopenharmony_ci [SFAB_AFAB_M_RESET] = { 0x23e0, 7 }, 265662306a36Sopenharmony_ci [AFAB_SFAB_M0_RESET] = { 0x2420, 7 }, 265762306a36Sopenharmony_ci [AFAB_SFAB_M1_RESET] = { 0x2424, 7 }, 265862306a36Sopenharmony_ci [DFAB_CORE_RESET] = { 0x24ac, 7 }, 265962306a36Sopenharmony_ci [SFAB_DFAB_M_RESET] = { 0x2500, 7 }, 266062306a36Sopenharmony_ci [DFAB_SFAB_M_RESET] = { 0x2520, 7 }, 266162306a36Sopenharmony_ci [DFAB_SWAY0_RESET] = { 0x2540, 7 }, 266262306a36Sopenharmony_ci [DFAB_SWAY1_RESET] = { 0x2544, 7 }, 266362306a36Sopenharmony_ci [DFAB_ARB0_RESET] = { 0x2560, 7 }, 266462306a36Sopenharmony_ci [DFAB_ARB1_RESET] = { 0x2564, 7 }, 266562306a36Sopenharmony_ci [PPSS_PROC_RESET] = { 0x2594, 1 }, 266662306a36Sopenharmony_ci [PPSS_RESET] = { 0x2594 }, 266762306a36Sopenharmony_ci [PMEM_RESET] = { 0x25a0, 7 }, 266862306a36Sopenharmony_ci [DMA_BAM_RESET] = { 0x25c0, 7 }, 266962306a36Sopenharmony_ci [SIC_RESET] = { 0x25e0, 7 }, 267062306a36Sopenharmony_ci [SPS_TIC_RESET] = { 0x2600, 7 }, 267162306a36Sopenharmony_ci [CFBP0_RESET] = { 0x2650, 7 }, 267262306a36Sopenharmony_ci [CFBP1_RESET] = { 0x2654, 7 }, 267362306a36Sopenharmony_ci [CFBP2_RESET] = { 0x2658, 7 }, 267462306a36Sopenharmony_ci [EBI2_RESET] = { 0x2664, 7 }, 267562306a36Sopenharmony_ci [SFAB_CFPB_M_RESET] = { 0x2680, 7 }, 267662306a36Sopenharmony_ci [CFPB_MASTER_RESET] = { 0x26a0, 7 }, 267762306a36Sopenharmony_ci [SFAB_CFPB_S_RESET] = { 0x26c0, 7 }, 267862306a36Sopenharmony_ci [CFPB_SPLITTER_RESET] = { 0x26e0, 7 }, 267962306a36Sopenharmony_ci [TSIF_RESET] = { 0x2700, 7 }, 268062306a36Sopenharmony_ci [CE1_RESET] = { 0x2720, 7 }, 268162306a36Sopenharmony_ci [CE2_RESET] = { 0x2740, 7 }, 268262306a36Sopenharmony_ci [SFAB_SFPB_M_RESET] = { 0x2780, 7 }, 268362306a36Sopenharmony_ci [SFAB_SFPB_S_RESET] = { 0x27a0, 7 }, 268462306a36Sopenharmony_ci [RPM_PROC_RESET] = { 0x27c0, 7 }, 268562306a36Sopenharmony_ci [RPM_BUS_RESET] = { 0x27c4, 7 }, 268662306a36Sopenharmony_ci [RPM_MSG_RAM_RESET] = { 0x27e0, 7 }, 268762306a36Sopenharmony_ci [PMIC_ARB0_RESET] = { 0x2800, 7 }, 268862306a36Sopenharmony_ci [PMIC_ARB1_RESET] = { 0x2804, 7 }, 268962306a36Sopenharmony_ci [PMIC_SSBI2_RESET] = { 0x280c, 12 }, 269062306a36Sopenharmony_ci [SDC1_RESET] = { 0x2830 }, 269162306a36Sopenharmony_ci [SDC2_RESET] = { 0x2850 }, 269262306a36Sopenharmony_ci [SDC3_RESET] = { 0x2870 }, 269362306a36Sopenharmony_ci [SDC4_RESET] = { 0x2890 }, 269462306a36Sopenharmony_ci [SDC5_RESET] = { 0x28b0 }, 269562306a36Sopenharmony_ci [USB_HS1_RESET] = { 0x2910 }, 269662306a36Sopenharmony_ci [USB_HS2_XCVR_RESET] = { 0x2934, 1 }, 269762306a36Sopenharmony_ci [USB_HS2_RESET] = { 0x2934 }, 269862306a36Sopenharmony_ci [USB_FS1_XCVR_RESET] = { 0x2974, 1 }, 269962306a36Sopenharmony_ci [USB_FS1_RESET] = { 0x2974 }, 270062306a36Sopenharmony_ci [USB_FS2_XCVR_RESET] = { 0x2994, 1 }, 270162306a36Sopenharmony_ci [USB_FS2_RESET] = { 0x2994 }, 270262306a36Sopenharmony_ci [GSBI1_RESET] = { 0x29dc }, 270362306a36Sopenharmony_ci [GSBI2_RESET] = { 0x29fc }, 270462306a36Sopenharmony_ci [GSBI3_RESET] = { 0x2a1c }, 270562306a36Sopenharmony_ci [GSBI4_RESET] = { 0x2a3c }, 270662306a36Sopenharmony_ci [GSBI5_RESET] = { 0x2a5c }, 270762306a36Sopenharmony_ci [GSBI6_RESET] = { 0x2a7c }, 270862306a36Sopenharmony_ci [GSBI7_RESET] = { 0x2a9c }, 270962306a36Sopenharmony_ci [GSBI8_RESET] = { 0x2abc }, 271062306a36Sopenharmony_ci [GSBI9_RESET] = { 0x2adc }, 271162306a36Sopenharmony_ci [GSBI10_RESET] = { 0x2afc }, 271262306a36Sopenharmony_ci [GSBI11_RESET] = { 0x2b1c }, 271362306a36Sopenharmony_ci [GSBI12_RESET] = { 0x2b3c }, 271462306a36Sopenharmony_ci [SPDM_RESET] = { 0x2b6c }, 271562306a36Sopenharmony_ci [SEC_CTRL_RESET] = { 0x2b80, 7 }, 271662306a36Sopenharmony_ci [TLMM_H_RESET] = { 0x2ba0, 7 }, 271762306a36Sopenharmony_ci [TLMM_RESET] = { 0x2ba4, 7 }, 271862306a36Sopenharmony_ci [MARRM_PWRON_RESET] = { 0x2bd4, 1 }, 271962306a36Sopenharmony_ci [MARM_RESET] = { 0x2bd4 }, 272062306a36Sopenharmony_ci [MAHB1_RESET] = { 0x2be4, 7 }, 272162306a36Sopenharmony_ci [SFAB_MSS_S_RESET] = { 0x2c00, 7 }, 272262306a36Sopenharmony_ci [MAHB2_RESET] = { 0x2c20, 7 }, 272362306a36Sopenharmony_ci [MODEM_SW_AHB_RESET] = { 0x2c48, 1 }, 272462306a36Sopenharmony_ci [MODEM_RESET] = { 0x2c48 }, 272562306a36Sopenharmony_ci [SFAB_MSS_MDM1_RESET] = { 0x2c4c, 1 }, 272662306a36Sopenharmony_ci [SFAB_MSS_MDM0_RESET] = { 0x2c4c }, 272762306a36Sopenharmony_ci [MSS_SLP_RESET] = { 0x2c60, 7 }, 272862306a36Sopenharmony_ci [MSS_MARM_SAW_RESET] = { 0x2c68, 1 }, 272962306a36Sopenharmony_ci [MSS_WDOG_RESET] = { 0x2c68 }, 273062306a36Sopenharmony_ci [TSSC_RESET] = { 0x2ca0, 7 }, 273162306a36Sopenharmony_ci [PDM_RESET] = { 0x2cc0, 12 }, 273262306a36Sopenharmony_ci [SCSS_CORE0_RESET] = { 0x2d60, 1 }, 273362306a36Sopenharmony_ci [SCSS_CORE0_POR_RESET] = { 0x2d60 }, 273462306a36Sopenharmony_ci [SCSS_CORE1_RESET] = { 0x2d80, 1 }, 273562306a36Sopenharmony_ci [SCSS_CORE1_POR_RESET] = { 0x2d80 }, 273662306a36Sopenharmony_ci [MPM_RESET] = { 0x2da4, 1 }, 273762306a36Sopenharmony_ci [EBI1_1X_DIV_RESET] = { 0x2dec, 9 }, 273862306a36Sopenharmony_ci [EBI1_RESET] = { 0x2dec, 7 }, 273962306a36Sopenharmony_ci [SFAB_SMPSS_S_RESET] = { 0x2e00, 7 }, 274062306a36Sopenharmony_ci [USB_PHY0_RESET] = { 0x2e20 }, 274162306a36Sopenharmony_ci [USB_PHY1_RESET] = { 0x2e40 }, 274262306a36Sopenharmony_ci [PRNG_RESET] = { 0x2e80, 12 }, 274362306a36Sopenharmony_ci}; 274462306a36Sopenharmony_ci 274562306a36Sopenharmony_cistatic const struct regmap_config gcc_msm8660_regmap_config = { 274662306a36Sopenharmony_ci .reg_bits = 32, 274762306a36Sopenharmony_ci .reg_stride = 4, 274862306a36Sopenharmony_ci .val_bits = 32, 274962306a36Sopenharmony_ci .max_register = 0x363c, 275062306a36Sopenharmony_ci .fast_io = true, 275162306a36Sopenharmony_ci}; 275262306a36Sopenharmony_ci 275362306a36Sopenharmony_cistatic const struct qcom_cc_desc gcc_msm8660_desc = { 275462306a36Sopenharmony_ci .config = &gcc_msm8660_regmap_config, 275562306a36Sopenharmony_ci .clks = gcc_msm8660_clks, 275662306a36Sopenharmony_ci .num_clks = ARRAY_SIZE(gcc_msm8660_clks), 275762306a36Sopenharmony_ci .resets = gcc_msm8660_resets, 275862306a36Sopenharmony_ci .num_resets = ARRAY_SIZE(gcc_msm8660_resets), 275962306a36Sopenharmony_ci}; 276062306a36Sopenharmony_ci 276162306a36Sopenharmony_cistatic const struct of_device_id gcc_msm8660_match_table[] = { 276262306a36Sopenharmony_ci { .compatible = "qcom,gcc-msm8660" }, 276362306a36Sopenharmony_ci { } 276462306a36Sopenharmony_ci}; 276562306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, gcc_msm8660_match_table); 276662306a36Sopenharmony_ci 276762306a36Sopenharmony_cistatic int gcc_msm8660_probe(struct platform_device *pdev) 276862306a36Sopenharmony_ci{ 276962306a36Sopenharmony_ci return qcom_cc_probe(pdev, &gcc_msm8660_desc); 277062306a36Sopenharmony_ci} 277162306a36Sopenharmony_ci 277262306a36Sopenharmony_cistatic struct platform_driver gcc_msm8660_driver = { 277362306a36Sopenharmony_ci .probe = gcc_msm8660_probe, 277462306a36Sopenharmony_ci .driver = { 277562306a36Sopenharmony_ci .name = "gcc-msm8660", 277662306a36Sopenharmony_ci .of_match_table = gcc_msm8660_match_table, 277762306a36Sopenharmony_ci }, 277862306a36Sopenharmony_ci}; 277962306a36Sopenharmony_ci 278062306a36Sopenharmony_cistatic int __init gcc_msm8660_init(void) 278162306a36Sopenharmony_ci{ 278262306a36Sopenharmony_ci return platform_driver_register(&gcc_msm8660_driver); 278362306a36Sopenharmony_ci} 278462306a36Sopenharmony_cicore_initcall(gcc_msm8660_init); 278562306a36Sopenharmony_ci 278662306a36Sopenharmony_cistatic void __exit gcc_msm8660_exit(void) 278762306a36Sopenharmony_ci{ 278862306a36Sopenharmony_ci platform_driver_unregister(&gcc_msm8660_driver); 278962306a36Sopenharmony_ci} 279062306a36Sopenharmony_cimodule_exit(gcc_msm8660_exit); 279162306a36Sopenharmony_ci 279262306a36Sopenharmony_ciMODULE_DESCRIPTION("GCC MSM 8660 Driver"); 279362306a36Sopenharmony_ciMODULE_LICENSE("GPL v2"); 279462306a36Sopenharmony_ciMODULE_ALIAS("platform:gcc-msm8660"); 2795