18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
48c2ecf20Sopenharmony_ci * Copyright (c) BayLibre, SAS.
58c2ecf20Sopenharmony_ci * Author : Neil Armstrong <narmstrong@baylibre.com>
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include <linux/kernel.h>
98c2ecf20Sopenharmony_ci#include <linux/bitops.h>
108c2ecf20Sopenharmony_ci#include <linux/err.h>
118c2ecf20Sopenharmony_ci#include <linux/platform_device.h>
128c2ecf20Sopenharmony_ci#include <linux/module.h>
138c2ecf20Sopenharmony_ci#include <linux/of.h>
148c2ecf20Sopenharmony_ci#include <linux/of_device.h>
158c2ecf20Sopenharmony_ci#include <linux/clk-provider.h>
168c2ecf20Sopenharmony_ci#include <linux/regmap.h>
178c2ecf20Sopenharmony_ci#include <linux/reset-controller.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#include <dt-bindings/clock/qcom,gcc-mdm9615.h>
208c2ecf20Sopenharmony_ci#include <dt-bindings/reset/qcom,gcc-mdm9615.h>
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci#include "common.h"
238c2ecf20Sopenharmony_ci#include "clk-regmap.h"
248c2ecf20Sopenharmony_ci#include "clk-pll.h"
258c2ecf20Sopenharmony_ci#include "clk-rcg.h"
268c2ecf20Sopenharmony_ci#include "clk-branch.h"
278c2ecf20Sopenharmony_ci#include "reset.h"
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_cistatic struct clk_fixed_factor cxo = {
308c2ecf20Sopenharmony_ci	.mult = 1,
318c2ecf20Sopenharmony_ci	.div = 1,
328c2ecf20Sopenharmony_ci	.hw.init = &(struct clk_init_data){
338c2ecf20Sopenharmony_ci		.name = "cxo",
348c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "cxo_board" },
358c2ecf20Sopenharmony_ci		.num_parents = 1,
368c2ecf20Sopenharmony_ci		.ops = &clk_fixed_factor_ops,
378c2ecf20Sopenharmony_ci	},
388c2ecf20Sopenharmony_ci};
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_cistatic struct clk_pll pll0 = {
418c2ecf20Sopenharmony_ci	.l_reg = 0x30c4,
428c2ecf20Sopenharmony_ci	.m_reg = 0x30c8,
438c2ecf20Sopenharmony_ci	.n_reg = 0x30cc,
448c2ecf20Sopenharmony_ci	.config_reg = 0x30d4,
458c2ecf20Sopenharmony_ci	.mode_reg = 0x30c0,
468c2ecf20Sopenharmony_ci	.status_reg = 0x30d8,
478c2ecf20Sopenharmony_ci	.status_bit = 16,
488c2ecf20Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
498c2ecf20Sopenharmony_ci		.name = "pll0",
508c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "cxo" },
518c2ecf20Sopenharmony_ci		.num_parents = 1,
528c2ecf20Sopenharmony_ci		.ops = &clk_pll_ops,
538c2ecf20Sopenharmony_ci	},
548c2ecf20Sopenharmony_ci};
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_cistatic struct clk_regmap pll0_vote = {
578c2ecf20Sopenharmony_ci	.enable_reg = 0x34c0,
588c2ecf20Sopenharmony_ci	.enable_mask = BIT(0),
598c2ecf20Sopenharmony_ci	.hw.init = &(struct clk_init_data){
608c2ecf20Sopenharmony_ci		.name = "pll0_vote",
618c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "pll0" },
628c2ecf20Sopenharmony_ci		.num_parents = 1,
638c2ecf20Sopenharmony_ci		.ops = &clk_pll_vote_ops,
648c2ecf20Sopenharmony_ci	},
658c2ecf20Sopenharmony_ci};
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_cistatic struct clk_regmap pll4_vote = {
688c2ecf20Sopenharmony_ci	.enable_reg = 0x34c0,
698c2ecf20Sopenharmony_ci	.enable_mask = BIT(4),
708c2ecf20Sopenharmony_ci	.hw.init = &(struct clk_init_data){
718c2ecf20Sopenharmony_ci		.name = "pll4_vote",
728c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "pll4" },
738c2ecf20Sopenharmony_ci		.num_parents = 1,
748c2ecf20Sopenharmony_ci		.ops = &clk_pll_vote_ops,
758c2ecf20Sopenharmony_ci	},
768c2ecf20Sopenharmony_ci};
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_cistatic struct clk_pll pll8 = {
798c2ecf20Sopenharmony_ci	.l_reg = 0x3144,
808c2ecf20Sopenharmony_ci	.m_reg = 0x3148,
818c2ecf20Sopenharmony_ci	.n_reg = 0x314c,
828c2ecf20Sopenharmony_ci	.config_reg = 0x3154,
838c2ecf20Sopenharmony_ci	.mode_reg = 0x3140,
848c2ecf20Sopenharmony_ci	.status_reg = 0x3158,
858c2ecf20Sopenharmony_ci	.status_bit = 16,
868c2ecf20Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
878c2ecf20Sopenharmony_ci		.name = "pll8",
888c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "cxo" },
898c2ecf20Sopenharmony_ci		.num_parents = 1,
908c2ecf20Sopenharmony_ci		.ops = &clk_pll_ops,
918c2ecf20Sopenharmony_ci	},
928c2ecf20Sopenharmony_ci};
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_cistatic struct clk_regmap pll8_vote = {
958c2ecf20Sopenharmony_ci	.enable_reg = 0x34c0,
968c2ecf20Sopenharmony_ci	.enable_mask = BIT(8),
978c2ecf20Sopenharmony_ci	.hw.init = &(struct clk_init_data){
988c2ecf20Sopenharmony_ci		.name = "pll8_vote",
998c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "pll8" },
1008c2ecf20Sopenharmony_ci		.num_parents = 1,
1018c2ecf20Sopenharmony_ci		.ops = &clk_pll_vote_ops,
1028c2ecf20Sopenharmony_ci	},
1038c2ecf20Sopenharmony_ci};
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_cistatic struct clk_pll pll14 = {
1068c2ecf20Sopenharmony_ci	.l_reg = 0x31c4,
1078c2ecf20Sopenharmony_ci	.m_reg = 0x31c8,
1088c2ecf20Sopenharmony_ci	.n_reg = 0x31cc,
1098c2ecf20Sopenharmony_ci	.config_reg = 0x31d4,
1108c2ecf20Sopenharmony_ci	.mode_reg = 0x31c0,
1118c2ecf20Sopenharmony_ci	.status_reg = 0x31d8,
1128c2ecf20Sopenharmony_ci	.status_bit = 16,
1138c2ecf20Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
1148c2ecf20Sopenharmony_ci		.name = "pll14",
1158c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "cxo" },
1168c2ecf20Sopenharmony_ci		.num_parents = 1,
1178c2ecf20Sopenharmony_ci		.ops = &clk_pll_ops,
1188c2ecf20Sopenharmony_ci	},
1198c2ecf20Sopenharmony_ci};
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_cistatic struct clk_regmap pll14_vote = {
1228c2ecf20Sopenharmony_ci	.enable_reg = 0x34c0,
1238c2ecf20Sopenharmony_ci	.enable_mask = BIT(11),
1248c2ecf20Sopenharmony_ci	.hw.init = &(struct clk_init_data){
1258c2ecf20Sopenharmony_ci		.name = "pll14_vote",
1268c2ecf20Sopenharmony_ci		.parent_names = (const char *[]){ "pll14" },
1278c2ecf20Sopenharmony_ci		.num_parents = 1,
1288c2ecf20Sopenharmony_ci		.ops = &clk_pll_vote_ops,
1298c2ecf20Sopenharmony_ci	},
1308c2ecf20Sopenharmony_ci};
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_cienum {
1338c2ecf20Sopenharmony_ci	P_CXO,
1348c2ecf20Sopenharmony_ci	P_PLL8,
1358c2ecf20Sopenharmony_ci	P_PLL14,
1368c2ecf20Sopenharmony_ci};
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_cistatic const struct parent_map gcc_cxo_pll8_map[] = {
1398c2ecf20Sopenharmony_ci	{ P_CXO, 0 },
1408c2ecf20Sopenharmony_ci	{ P_PLL8, 3 }
1418c2ecf20Sopenharmony_ci};
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_cistatic const char * const gcc_cxo_pll8[] = {
1448c2ecf20Sopenharmony_ci	"cxo",
1458c2ecf20Sopenharmony_ci	"pll8_vote",
1468c2ecf20Sopenharmony_ci};
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_cistatic const struct parent_map gcc_cxo_pll14_map[] = {
1498c2ecf20Sopenharmony_ci	{ P_CXO, 0 },
1508c2ecf20Sopenharmony_ci	{ P_PLL14, 4 }
1518c2ecf20Sopenharmony_ci};
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_cistatic const char * const gcc_cxo_pll14[] = {
1548c2ecf20Sopenharmony_ci	"cxo",
1558c2ecf20Sopenharmony_ci	"pll14_vote",
1568c2ecf20Sopenharmony_ci};
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_cistatic const struct parent_map gcc_cxo_map[] = {
1598c2ecf20Sopenharmony_ci	{ P_CXO, 0 },
1608c2ecf20Sopenharmony_ci};
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_cistatic const char * const gcc_cxo[] = {
1638c2ecf20Sopenharmony_ci	"cxo",
1648c2ecf20Sopenharmony_ci};
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_cistatic struct freq_tbl clk_tbl_gsbi_uart[] = {
1678c2ecf20Sopenharmony_ci	{  1843200, P_PLL8, 2,  6, 625 },
1688c2ecf20Sopenharmony_ci	{  3686400, P_PLL8, 2, 12, 625 },
1698c2ecf20Sopenharmony_ci	{  7372800, P_PLL8, 2, 24, 625 },
1708c2ecf20Sopenharmony_ci	{ 14745600, P_PLL8, 2, 48, 625 },
1718c2ecf20Sopenharmony_ci	{ 16000000, P_PLL8, 4,  1,   6 },
1728c2ecf20Sopenharmony_ci	{ 24000000, P_PLL8, 4,  1,   4 },
1738c2ecf20Sopenharmony_ci	{ 32000000, P_PLL8, 4,  1,   3 },
1748c2ecf20Sopenharmony_ci	{ 40000000, P_PLL8, 1,  5,  48 },
1758c2ecf20Sopenharmony_ci	{ 46400000, P_PLL8, 1, 29, 240 },
1768c2ecf20Sopenharmony_ci	{ 48000000, P_PLL8, 4,  1,   2 },
1778c2ecf20Sopenharmony_ci	{ 51200000, P_PLL8, 1,  2,  15 },
1788c2ecf20Sopenharmony_ci	{ 56000000, P_PLL8, 1,  7,  48 },
1798c2ecf20Sopenharmony_ci	{ 58982400, P_PLL8, 1, 96, 625 },
1808c2ecf20Sopenharmony_ci	{ 64000000, P_PLL8, 2,  1,   3 },
1818c2ecf20Sopenharmony_ci	{ }
1828c2ecf20Sopenharmony_ci};
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi1_uart_src = {
1858c2ecf20Sopenharmony_ci	.ns_reg = 0x29d4,
1868c2ecf20Sopenharmony_ci	.md_reg = 0x29d0,
1878c2ecf20Sopenharmony_ci	.mn = {
1888c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
1898c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
1908c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
1918c2ecf20Sopenharmony_ci		.n_val_shift = 16,
1928c2ecf20Sopenharmony_ci		.m_val_shift = 16,
1938c2ecf20Sopenharmony_ci		.width = 16,
1948c2ecf20Sopenharmony_ci	},
1958c2ecf20Sopenharmony_ci	.p = {
1968c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
1978c2ecf20Sopenharmony_ci		.pre_div_width = 2,
1988c2ecf20Sopenharmony_ci	},
1998c2ecf20Sopenharmony_ci	.s = {
2008c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
2018c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
2028c2ecf20Sopenharmony_ci	},
2038c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_uart,
2048c2ecf20Sopenharmony_ci	.clkr = {
2058c2ecf20Sopenharmony_ci		.enable_reg = 0x29d4,
2068c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
2078c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
2088c2ecf20Sopenharmony_ci			.name = "gsbi1_uart_src",
2098c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
2108c2ecf20Sopenharmony_ci			.num_parents = 2,
2118c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
2128c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
2138c2ecf20Sopenharmony_ci		},
2148c2ecf20Sopenharmony_ci	},
2158c2ecf20Sopenharmony_ci};
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_cistatic struct clk_branch gsbi1_uart_clk = {
2188c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
2198c2ecf20Sopenharmony_ci	.halt_bit = 10,
2208c2ecf20Sopenharmony_ci	.clkr = {
2218c2ecf20Sopenharmony_ci		.enable_reg = 0x29d4,
2228c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
2238c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
2248c2ecf20Sopenharmony_ci			.name = "gsbi1_uart_clk",
2258c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){
2268c2ecf20Sopenharmony_ci				"gsbi1_uart_src",
2278c2ecf20Sopenharmony_ci			},
2288c2ecf20Sopenharmony_ci			.num_parents = 1,
2298c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
2308c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
2318c2ecf20Sopenharmony_ci		},
2328c2ecf20Sopenharmony_ci	},
2338c2ecf20Sopenharmony_ci};
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi2_uart_src = {
2368c2ecf20Sopenharmony_ci	.ns_reg = 0x29f4,
2378c2ecf20Sopenharmony_ci	.md_reg = 0x29f0,
2388c2ecf20Sopenharmony_ci	.mn = {
2398c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
2408c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
2418c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
2428c2ecf20Sopenharmony_ci		.n_val_shift = 16,
2438c2ecf20Sopenharmony_ci		.m_val_shift = 16,
2448c2ecf20Sopenharmony_ci		.width = 16,
2458c2ecf20Sopenharmony_ci	},
2468c2ecf20Sopenharmony_ci	.p = {
2478c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
2488c2ecf20Sopenharmony_ci		.pre_div_width = 2,
2498c2ecf20Sopenharmony_ci	},
2508c2ecf20Sopenharmony_ci	.s = {
2518c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
2528c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
2538c2ecf20Sopenharmony_ci	},
2548c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_uart,
2558c2ecf20Sopenharmony_ci	.clkr = {
2568c2ecf20Sopenharmony_ci		.enable_reg = 0x29f4,
2578c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
2588c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
2598c2ecf20Sopenharmony_ci			.name = "gsbi2_uart_src",
2608c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
2618c2ecf20Sopenharmony_ci			.num_parents = 2,
2628c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
2638c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
2648c2ecf20Sopenharmony_ci		},
2658c2ecf20Sopenharmony_ci	},
2668c2ecf20Sopenharmony_ci};
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_cistatic struct clk_branch gsbi2_uart_clk = {
2698c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
2708c2ecf20Sopenharmony_ci	.halt_bit = 6,
2718c2ecf20Sopenharmony_ci	.clkr = {
2728c2ecf20Sopenharmony_ci		.enable_reg = 0x29f4,
2738c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
2748c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
2758c2ecf20Sopenharmony_ci			.name = "gsbi2_uart_clk",
2768c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){
2778c2ecf20Sopenharmony_ci				"gsbi2_uart_src",
2788c2ecf20Sopenharmony_ci			},
2798c2ecf20Sopenharmony_ci			.num_parents = 1,
2808c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
2818c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
2828c2ecf20Sopenharmony_ci		},
2838c2ecf20Sopenharmony_ci	},
2848c2ecf20Sopenharmony_ci};
2858c2ecf20Sopenharmony_ci
2868c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi3_uart_src = {
2878c2ecf20Sopenharmony_ci	.ns_reg = 0x2a14,
2888c2ecf20Sopenharmony_ci	.md_reg = 0x2a10,
2898c2ecf20Sopenharmony_ci	.mn = {
2908c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
2918c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
2928c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
2938c2ecf20Sopenharmony_ci		.n_val_shift = 16,
2948c2ecf20Sopenharmony_ci		.m_val_shift = 16,
2958c2ecf20Sopenharmony_ci		.width = 16,
2968c2ecf20Sopenharmony_ci	},
2978c2ecf20Sopenharmony_ci	.p = {
2988c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
2998c2ecf20Sopenharmony_ci		.pre_div_width = 2,
3008c2ecf20Sopenharmony_ci	},
3018c2ecf20Sopenharmony_ci	.s = {
3028c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
3038c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
3048c2ecf20Sopenharmony_ci	},
3058c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_uart,
3068c2ecf20Sopenharmony_ci	.clkr = {
3078c2ecf20Sopenharmony_ci		.enable_reg = 0x2a14,
3088c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
3098c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
3108c2ecf20Sopenharmony_ci			.name = "gsbi3_uart_src",
3118c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
3128c2ecf20Sopenharmony_ci			.num_parents = 2,
3138c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
3148c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
3158c2ecf20Sopenharmony_ci		},
3168c2ecf20Sopenharmony_ci	},
3178c2ecf20Sopenharmony_ci};
3188c2ecf20Sopenharmony_ci
3198c2ecf20Sopenharmony_cistatic struct clk_branch gsbi3_uart_clk = {
3208c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
3218c2ecf20Sopenharmony_ci	.halt_bit = 2,
3228c2ecf20Sopenharmony_ci	.clkr = {
3238c2ecf20Sopenharmony_ci		.enable_reg = 0x2a14,
3248c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
3258c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
3268c2ecf20Sopenharmony_ci			.name = "gsbi3_uart_clk",
3278c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){
3288c2ecf20Sopenharmony_ci				"gsbi3_uart_src",
3298c2ecf20Sopenharmony_ci			},
3308c2ecf20Sopenharmony_ci			.num_parents = 1,
3318c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
3328c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
3338c2ecf20Sopenharmony_ci		},
3348c2ecf20Sopenharmony_ci	},
3358c2ecf20Sopenharmony_ci};
3368c2ecf20Sopenharmony_ci
3378c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi4_uart_src = {
3388c2ecf20Sopenharmony_ci	.ns_reg = 0x2a34,
3398c2ecf20Sopenharmony_ci	.md_reg = 0x2a30,
3408c2ecf20Sopenharmony_ci	.mn = {
3418c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
3428c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
3438c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
3448c2ecf20Sopenharmony_ci		.n_val_shift = 16,
3458c2ecf20Sopenharmony_ci		.m_val_shift = 16,
3468c2ecf20Sopenharmony_ci		.width = 16,
3478c2ecf20Sopenharmony_ci	},
3488c2ecf20Sopenharmony_ci	.p = {
3498c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
3508c2ecf20Sopenharmony_ci		.pre_div_width = 2,
3518c2ecf20Sopenharmony_ci	},
3528c2ecf20Sopenharmony_ci	.s = {
3538c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
3548c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
3558c2ecf20Sopenharmony_ci	},
3568c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_uart,
3578c2ecf20Sopenharmony_ci	.clkr = {
3588c2ecf20Sopenharmony_ci		.enable_reg = 0x2a34,
3598c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
3608c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
3618c2ecf20Sopenharmony_ci			.name = "gsbi4_uart_src",
3628c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
3638c2ecf20Sopenharmony_ci			.num_parents = 2,
3648c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
3658c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
3668c2ecf20Sopenharmony_ci		},
3678c2ecf20Sopenharmony_ci	},
3688c2ecf20Sopenharmony_ci};
3698c2ecf20Sopenharmony_ci
3708c2ecf20Sopenharmony_cistatic struct clk_branch gsbi4_uart_clk = {
3718c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
3728c2ecf20Sopenharmony_ci	.halt_bit = 26,
3738c2ecf20Sopenharmony_ci	.clkr = {
3748c2ecf20Sopenharmony_ci		.enable_reg = 0x2a34,
3758c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
3768c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
3778c2ecf20Sopenharmony_ci			.name = "gsbi4_uart_clk",
3788c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){
3798c2ecf20Sopenharmony_ci				"gsbi4_uart_src",
3808c2ecf20Sopenharmony_ci			},
3818c2ecf20Sopenharmony_ci			.num_parents = 1,
3828c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
3838c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
3848c2ecf20Sopenharmony_ci		},
3858c2ecf20Sopenharmony_ci	},
3868c2ecf20Sopenharmony_ci};
3878c2ecf20Sopenharmony_ci
3888c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi5_uart_src = {
3898c2ecf20Sopenharmony_ci	.ns_reg = 0x2a54,
3908c2ecf20Sopenharmony_ci	.md_reg = 0x2a50,
3918c2ecf20Sopenharmony_ci	.mn = {
3928c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
3938c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
3948c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
3958c2ecf20Sopenharmony_ci		.n_val_shift = 16,
3968c2ecf20Sopenharmony_ci		.m_val_shift = 16,
3978c2ecf20Sopenharmony_ci		.width = 16,
3988c2ecf20Sopenharmony_ci	},
3998c2ecf20Sopenharmony_ci	.p = {
4008c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
4018c2ecf20Sopenharmony_ci		.pre_div_width = 2,
4028c2ecf20Sopenharmony_ci	},
4038c2ecf20Sopenharmony_ci	.s = {
4048c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
4058c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
4068c2ecf20Sopenharmony_ci	},
4078c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_uart,
4088c2ecf20Sopenharmony_ci	.clkr = {
4098c2ecf20Sopenharmony_ci		.enable_reg = 0x2a54,
4108c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
4118c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
4128c2ecf20Sopenharmony_ci			.name = "gsbi5_uart_src",
4138c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
4148c2ecf20Sopenharmony_ci			.num_parents = 2,
4158c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
4168c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
4178c2ecf20Sopenharmony_ci		},
4188c2ecf20Sopenharmony_ci	},
4198c2ecf20Sopenharmony_ci};
4208c2ecf20Sopenharmony_ci
4218c2ecf20Sopenharmony_cistatic struct clk_branch gsbi5_uart_clk = {
4228c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
4238c2ecf20Sopenharmony_ci	.halt_bit = 22,
4248c2ecf20Sopenharmony_ci	.clkr = {
4258c2ecf20Sopenharmony_ci		.enable_reg = 0x2a54,
4268c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
4278c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
4288c2ecf20Sopenharmony_ci			.name = "gsbi5_uart_clk",
4298c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){
4308c2ecf20Sopenharmony_ci				"gsbi5_uart_src",
4318c2ecf20Sopenharmony_ci			},
4328c2ecf20Sopenharmony_ci			.num_parents = 1,
4338c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
4348c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
4358c2ecf20Sopenharmony_ci		},
4368c2ecf20Sopenharmony_ci	},
4378c2ecf20Sopenharmony_ci};
4388c2ecf20Sopenharmony_ci
4398c2ecf20Sopenharmony_cistatic struct freq_tbl clk_tbl_gsbi_qup[] = {
4408c2ecf20Sopenharmony_ci	{   960000, P_CXO,  4, 1,  5 },
4418c2ecf20Sopenharmony_ci	{  4800000, P_CXO,  4, 0,  1 },
4428c2ecf20Sopenharmony_ci	{  9600000, P_CXO,  2, 0,  1 },
4438c2ecf20Sopenharmony_ci	{ 15060000, P_PLL8, 1, 2, 51 },
4448c2ecf20Sopenharmony_ci	{ 24000000, P_PLL8, 4, 1,  4 },
4458c2ecf20Sopenharmony_ci	{ 25600000, P_PLL8, 1, 1, 15 },
4468c2ecf20Sopenharmony_ci	{ 48000000, P_PLL8, 4, 1,  2 },
4478c2ecf20Sopenharmony_ci	{ 51200000, P_PLL8, 1, 2, 15 },
4488c2ecf20Sopenharmony_ci	{ }
4498c2ecf20Sopenharmony_ci};
4508c2ecf20Sopenharmony_ci
4518c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi1_qup_src = {
4528c2ecf20Sopenharmony_ci	.ns_reg = 0x29cc,
4538c2ecf20Sopenharmony_ci	.md_reg = 0x29c8,
4548c2ecf20Sopenharmony_ci	.mn = {
4558c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
4568c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
4578c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
4588c2ecf20Sopenharmony_ci		.n_val_shift = 16,
4598c2ecf20Sopenharmony_ci		.m_val_shift = 16,
4608c2ecf20Sopenharmony_ci		.width = 8,
4618c2ecf20Sopenharmony_ci	},
4628c2ecf20Sopenharmony_ci	.p = {
4638c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
4648c2ecf20Sopenharmony_ci		.pre_div_width = 2,
4658c2ecf20Sopenharmony_ci	},
4668c2ecf20Sopenharmony_ci	.s = {
4678c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
4688c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
4698c2ecf20Sopenharmony_ci	},
4708c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_qup,
4718c2ecf20Sopenharmony_ci	.clkr = {
4728c2ecf20Sopenharmony_ci		.enable_reg = 0x29cc,
4738c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
4748c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
4758c2ecf20Sopenharmony_ci			.name = "gsbi1_qup_src",
4768c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
4778c2ecf20Sopenharmony_ci			.num_parents = 2,
4788c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
4798c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
4808c2ecf20Sopenharmony_ci		},
4818c2ecf20Sopenharmony_ci	},
4828c2ecf20Sopenharmony_ci};
4838c2ecf20Sopenharmony_ci
4848c2ecf20Sopenharmony_cistatic struct clk_branch gsbi1_qup_clk = {
4858c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
4868c2ecf20Sopenharmony_ci	.halt_bit = 9,
4878c2ecf20Sopenharmony_ci	.clkr = {
4888c2ecf20Sopenharmony_ci		.enable_reg = 0x29cc,
4898c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
4908c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
4918c2ecf20Sopenharmony_ci			.name = "gsbi1_qup_clk",
4928c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gsbi1_qup_src" },
4938c2ecf20Sopenharmony_ci			.num_parents = 1,
4948c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
4958c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
4968c2ecf20Sopenharmony_ci		},
4978c2ecf20Sopenharmony_ci	},
4988c2ecf20Sopenharmony_ci};
4998c2ecf20Sopenharmony_ci
5008c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi2_qup_src = {
5018c2ecf20Sopenharmony_ci	.ns_reg = 0x29ec,
5028c2ecf20Sopenharmony_ci	.md_reg = 0x29e8,
5038c2ecf20Sopenharmony_ci	.mn = {
5048c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
5058c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
5068c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
5078c2ecf20Sopenharmony_ci		.n_val_shift = 16,
5088c2ecf20Sopenharmony_ci		.m_val_shift = 16,
5098c2ecf20Sopenharmony_ci		.width = 8,
5108c2ecf20Sopenharmony_ci	},
5118c2ecf20Sopenharmony_ci	.p = {
5128c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
5138c2ecf20Sopenharmony_ci		.pre_div_width = 2,
5148c2ecf20Sopenharmony_ci	},
5158c2ecf20Sopenharmony_ci	.s = {
5168c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
5178c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
5188c2ecf20Sopenharmony_ci	},
5198c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_qup,
5208c2ecf20Sopenharmony_ci	.clkr = {
5218c2ecf20Sopenharmony_ci		.enable_reg = 0x29ec,
5228c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
5238c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
5248c2ecf20Sopenharmony_ci			.name = "gsbi2_qup_src",
5258c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
5268c2ecf20Sopenharmony_ci			.num_parents = 2,
5278c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
5288c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
5298c2ecf20Sopenharmony_ci		},
5308c2ecf20Sopenharmony_ci	},
5318c2ecf20Sopenharmony_ci};
5328c2ecf20Sopenharmony_ci
5338c2ecf20Sopenharmony_cistatic struct clk_branch gsbi2_qup_clk = {
5348c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
5358c2ecf20Sopenharmony_ci	.halt_bit = 4,
5368c2ecf20Sopenharmony_ci	.clkr = {
5378c2ecf20Sopenharmony_ci		.enable_reg = 0x29ec,
5388c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
5398c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
5408c2ecf20Sopenharmony_ci			.name = "gsbi2_qup_clk",
5418c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gsbi2_qup_src" },
5428c2ecf20Sopenharmony_ci			.num_parents = 1,
5438c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
5448c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
5458c2ecf20Sopenharmony_ci		},
5468c2ecf20Sopenharmony_ci	},
5478c2ecf20Sopenharmony_ci};
5488c2ecf20Sopenharmony_ci
5498c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi3_qup_src = {
5508c2ecf20Sopenharmony_ci	.ns_reg = 0x2a0c,
5518c2ecf20Sopenharmony_ci	.md_reg = 0x2a08,
5528c2ecf20Sopenharmony_ci	.mn = {
5538c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
5548c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
5558c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
5568c2ecf20Sopenharmony_ci		.n_val_shift = 16,
5578c2ecf20Sopenharmony_ci		.m_val_shift = 16,
5588c2ecf20Sopenharmony_ci		.width = 8,
5598c2ecf20Sopenharmony_ci	},
5608c2ecf20Sopenharmony_ci	.p = {
5618c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
5628c2ecf20Sopenharmony_ci		.pre_div_width = 2,
5638c2ecf20Sopenharmony_ci	},
5648c2ecf20Sopenharmony_ci	.s = {
5658c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
5668c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
5678c2ecf20Sopenharmony_ci	},
5688c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_qup,
5698c2ecf20Sopenharmony_ci	.clkr = {
5708c2ecf20Sopenharmony_ci		.enable_reg = 0x2a0c,
5718c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
5728c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
5738c2ecf20Sopenharmony_ci			.name = "gsbi3_qup_src",
5748c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
5758c2ecf20Sopenharmony_ci			.num_parents = 2,
5768c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
5778c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
5788c2ecf20Sopenharmony_ci		},
5798c2ecf20Sopenharmony_ci	},
5808c2ecf20Sopenharmony_ci};
5818c2ecf20Sopenharmony_ci
5828c2ecf20Sopenharmony_cistatic struct clk_branch gsbi3_qup_clk = {
5838c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
5848c2ecf20Sopenharmony_ci	.halt_bit = 0,
5858c2ecf20Sopenharmony_ci	.clkr = {
5868c2ecf20Sopenharmony_ci		.enable_reg = 0x2a0c,
5878c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
5888c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
5898c2ecf20Sopenharmony_ci			.name = "gsbi3_qup_clk",
5908c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gsbi3_qup_src" },
5918c2ecf20Sopenharmony_ci			.num_parents = 1,
5928c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
5938c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
5948c2ecf20Sopenharmony_ci		},
5958c2ecf20Sopenharmony_ci	},
5968c2ecf20Sopenharmony_ci};
5978c2ecf20Sopenharmony_ci
5988c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi4_qup_src = {
5998c2ecf20Sopenharmony_ci	.ns_reg = 0x2a2c,
6008c2ecf20Sopenharmony_ci	.md_reg = 0x2a28,
6018c2ecf20Sopenharmony_ci	.mn = {
6028c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
6038c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
6048c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
6058c2ecf20Sopenharmony_ci		.n_val_shift = 16,
6068c2ecf20Sopenharmony_ci		.m_val_shift = 16,
6078c2ecf20Sopenharmony_ci		.width = 8,
6088c2ecf20Sopenharmony_ci	},
6098c2ecf20Sopenharmony_ci	.p = {
6108c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
6118c2ecf20Sopenharmony_ci		.pre_div_width = 2,
6128c2ecf20Sopenharmony_ci	},
6138c2ecf20Sopenharmony_ci	.s = {
6148c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
6158c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
6168c2ecf20Sopenharmony_ci	},
6178c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_qup,
6188c2ecf20Sopenharmony_ci	.clkr = {
6198c2ecf20Sopenharmony_ci		.enable_reg = 0x2a2c,
6208c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
6218c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
6228c2ecf20Sopenharmony_ci			.name = "gsbi4_qup_src",
6238c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
6248c2ecf20Sopenharmony_ci			.num_parents = 2,
6258c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
6268c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
6278c2ecf20Sopenharmony_ci		},
6288c2ecf20Sopenharmony_ci	},
6298c2ecf20Sopenharmony_ci};
6308c2ecf20Sopenharmony_ci
6318c2ecf20Sopenharmony_cistatic struct clk_branch gsbi4_qup_clk = {
6328c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
6338c2ecf20Sopenharmony_ci	.halt_bit = 24,
6348c2ecf20Sopenharmony_ci	.clkr = {
6358c2ecf20Sopenharmony_ci		.enable_reg = 0x2a2c,
6368c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
6378c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
6388c2ecf20Sopenharmony_ci			.name = "gsbi4_qup_clk",
6398c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gsbi4_qup_src" },
6408c2ecf20Sopenharmony_ci			.num_parents = 1,
6418c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
6428c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
6438c2ecf20Sopenharmony_ci		},
6448c2ecf20Sopenharmony_ci	},
6458c2ecf20Sopenharmony_ci};
6468c2ecf20Sopenharmony_ci
6478c2ecf20Sopenharmony_cistatic struct clk_rcg gsbi5_qup_src = {
6488c2ecf20Sopenharmony_ci	.ns_reg = 0x2a4c,
6498c2ecf20Sopenharmony_ci	.md_reg = 0x2a48,
6508c2ecf20Sopenharmony_ci	.mn = {
6518c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
6528c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
6538c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
6548c2ecf20Sopenharmony_ci		.n_val_shift = 16,
6558c2ecf20Sopenharmony_ci		.m_val_shift = 16,
6568c2ecf20Sopenharmony_ci		.width = 8,
6578c2ecf20Sopenharmony_ci	},
6588c2ecf20Sopenharmony_ci	.p = {
6598c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
6608c2ecf20Sopenharmony_ci		.pre_div_width = 2,
6618c2ecf20Sopenharmony_ci	},
6628c2ecf20Sopenharmony_ci	.s = {
6638c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
6648c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
6658c2ecf20Sopenharmony_ci	},
6668c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gsbi_qup,
6678c2ecf20Sopenharmony_ci	.clkr = {
6688c2ecf20Sopenharmony_ci		.enable_reg = 0x2a4c,
6698c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
6708c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
6718c2ecf20Sopenharmony_ci			.name = "gsbi5_qup_src",
6728c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
6738c2ecf20Sopenharmony_ci			.num_parents = 2,
6748c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
6758c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
6768c2ecf20Sopenharmony_ci		},
6778c2ecf20Sopenharmony_ci	},
6788c2ecf20Sopenharmony_ci};
6798c2ecf20Sopenharmony_ci
6808c2ecf20Sopenharmony_cistatic struct clk_branch gsbi5_qup_clk = {
6818c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
6828c2ecf20Sopenharmony_ci	.halt_bit = 20,
6838c2ecf20Sopenharmony_ci	.clkr = {
6848c2ecf20Sopenharmony_ci		.enable_reg = 0x2a4c,
6858c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
6868c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
6878c2ecf20Sopenharmony_ci			.name = "gsbi5_qup_clk",
6888c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gsbi5_qup_src" },
6898c2ecf20Sopenharmony_ci			.num_parents = 1,
6908c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
6918c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
6928c2ecf20Sopenharmony_ci		},
6938c2ecf20Sopenharmony_ci	},
6948c2ecf20Sopenharmony_ci};
6958c2ecf20Sopenharmony_ci
6968c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_gp[] = {
6978c2ecf20Sopenharmony_ci	{ 9600000, P_CXO,  2, 0, 0 },
6988c2ecf20Sopenharmony_ci	{ 19200000, P_CXO,  1, 0, 0 },
6998c2ecf20Sopenharmony_ci	{ }
7008c2ecf20Sopenharmony_ci};
7018c2ecf20Sopenharmony_ci
7028c2ecf20Sopenharmony_cistatic struct clk_rcg gp0_src = {
7038c2ecf20Sopenharmony_ci	.ns_reg = 0x2d24,
7048c2ecf20Sopenharmony_ci	.md_reg = 0x2d00,
7058c2ecf20Sopenharmony_ci	.mn = {
7068c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
7078c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
7088c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
7098c2ecf20Sopenharmony_ci		.n_val_shift = 16,
7108c2ecf20Sopenharmony_ci		.m_val_shift = 16,
7118c2ecf20Sopenharmony_ci		.width = 8,
7128c2ecf20Sopenharmony_ci	},
7138c2ecf20Sopenharmony_ci	.p = {
7148c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
7158c2ecf20Sopenharmony_ci		.pre_div_width = 2,
7168c2ecf20Sopenharmony_ci	},
7178c2ecf20Sopenharmony_ci	.s = {
7188c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
7198c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_map,
7208c2ecf20Sopenharmony_ci	},
7218c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gp,
7228c2ecf20Sopenharmony_ci	.clkr = {
7238c2ecf20Sopenharmony_ci		.enable_reg = 0x2d24,
7248c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
7258c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
7268c2ecf20Sopenharmony_ci			.name = "gp0_src",
7278c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo,
7288c2ecf20Sopenharmony_ci			.num_parents = 1,
7298c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
7308c2ecf20Sopenharmony_ci			.flags = CLK_SET_PARENT_GATE,
7318c2ecf20Sopenharmony_ci		},
7328c2ecf20Sopenharmony_ci	}
7338c2ecf20Sopenharmony_ci};
7348c2ecf20Sopenharmony_ci
7358c2ecf20Sopenharmony_cistatic struct clk_branch gp0_clk = {
7368c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
7378c2ecf20Sopenharmony_ci	.halt_bit = 7,
7388c2ecf20Sopenharmony_ci	.clkr = {
7398c2ecf20Sopenharmony_ci		.enable_reg = 0x2d24,
7408c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
7418c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
7428c2ecf20Sopenharmony_ci			.name = "gp0_clk",
7438c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gp0_src" },
7448c2ecf20Sopenharmony_ci			.num_parents = 1,
7458c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
7468c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
7478c2ecf20Sopenharmony_ci		},
7488c2ecf20Sopenharmony_ci	},
7498c2ecf20Sopenharmony_ci};
7508c2ecf20Sopenharmony_ci
7518c2ecf20Sopenharmony_cistatic struct clk_rcg gp1_src = {
7528c2ecf20Sopenharmony_ci	.ns_reg = 0x2d44,
7538c2ecf20Sopenharmony_ci	.md_reg = 0x2d40,
7548c2ecf20Sopenharmony_ci	.mn = {
7558c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
7568c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
7578c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
7588c2ecf20Sopenharmony_ci		.n_val_shift = 16,
7598c2ecf20Sopenharmony_ci		.m_val_shift = 16,
7608c2ecf20Sopenharmony_ci		.width = 8,
7618c2ecf20Sopenharmony_ci	},
7628c2ecf20Sopenharmony_ci	.p = {
7638c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
7648c2ecf20Sopenharmony_ci		.pre_div_width = 2,
7658c2ecf20Sopenharmony_ci	},
7668c2ecf20Sopenharmony_ci	.s = {
7678c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
7688c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_map,
7698c2ecf20Sopenharmony_ci	},
7708c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gp,
7718c2ecf20Sopenharmony_ci	.clkr = {
7728c2ecf20Sopenharmony_ci		.enable_reg = 0x2d44,
7738c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
7748c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
7758c2ecf20Sopenharmony_ci			.name = "gp1_src",
7768c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo,
7778c2ecf20Sopenharmony_ci			.num_parents = 1,
7788c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
7798c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
7808c2ecf20Sopenharmony_ci		},
7818c2ecf20Sopenharmony_ci	}
7828c2ecf20Sopenharmony_ci};
7838c2ecf20Sopenharmony_ci
7848c2ecf20Sopenharmony_cistatic struct clk_branch gp1_clk = {
7858c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
7868c2ecf20Sopenharmony_ci	.halt_bit = 6,
7878c2ecf20Sopenharmony_ci	.clkr = {
7888c2ecf20Sopenharmony_ci		.enable_reg = 0x2d44,
7898c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
7908c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
7918c2ecf20Sopenharmony_ci			.name = "gp1_clk",
7928c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gp1_src" },
7938c2ecf20Sopenharmony_ci			.num_parents = 1,
7948c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
7958c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
7968c2ecf20Sopenharmony_ci		},
7978c2ecf20Sopenharmony_ci	},
7988c2ecf20Sopenharmony_ci};
7998c2ecf20Sopenharmony_ci
8008c2ecf20Sopenharmony_cistatic struct clk_rcg gp2_src = {
8018c2ecf20Sopenharmony_ci	.ns_reg = 0x2d64,
8028c2ecf20Sopenharmony_ci	.md_reg = 0x2d60,
8038c2ecf20Sopenharmony_ci	.mn = {
8048c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
8058c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
8068c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
8078c2ecf20Sopenharmony_ci		.n_val_shift = 16,
8088c2ecf20Sopenharmony_ci		.m_val_shift = 16,
8098c2ecf20Sopenharmony_ci		.width = 8,
8108c2ecf20Sopenharmony_ci	},
8118c2ecf20Sopenharmony_ci	.p = {
8128c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
8138c2ecf20Sopenharmony_ci		.pre_div_width = 2,
8148c2ecf20Sopenharmony_ci	},
8158c2ecf20Sopenharmony_ci	.s = {
8168c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
8178c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_map,
8188c2ecf20Sopenharmony_ci	},
8198c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_gp,
8208c2ecf20Sopenharmony_ci	.clkr = {
8218c2ecf20Sopenharmony_ci		.enable_reg = 0x2d64,
8228c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
8238c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8248c2ecf20Sopenharmony_ci			.name = "gp2_src",
8258c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo,
8268c2ecf20Sopenharmony_ci			.num_parents = 1,
8278c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
8288c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
8298c2ecf20Sopenharmony_ci		},
8308c2ecf20Sopenharmony_ci	}
8318c2ecf20Sopenharmony_ci};
8328c2ecf20Sopenharmony_ci
8338c2ecf20Sopenharmony_cistatic struct clk_branch gp2_clk = {
8348c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
8358c2ecf20Sopenharmony_ci	.halt_bit = 5,
8368c2ecf20Sopenharmony_ci	.clkr = {
8378c2ecf20Sopenharmony_ci		.enable_reg = 0x2d64,
8388c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
8398c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8408c2ecf20Sopenharmony_ci			.name = "gp2_clk",
8418c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "gp2_src" },
8428c2ecf20Sopenharmony_ci			.num_parents = 1,
8438c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
8448c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
8458c2ecf20Sopenharmony_ci		},
8468c2ecf20Sopenharmony_ci	},
8478c2ecf20Sopenharmony_ci};
8488c2ecf20Sopenharmony_ci
8498c2ecf20Sopenharmony_cistatic struct clk_branch pmem_clk = {
8508c2ecf20Sopenharmony_ci	.hwcg_reg = 0x25a0,
8518c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
8528c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
8538c2ecf20Sopenharmony_ci	.halt_bit = 20,
8548c2ecf20Sopenharmony_ci	.clkr = {
8558c2ecf20Sopenharmony_ci		.enable_reg = 0x25a0,
8568c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
8578c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8588c2ecf20Sopenharmony_ci			.name = "pmem_clk",
8598c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
8608c2ecf20Sopenharmony_ci		},
8618c2ecf20Sopenharmony_ci	},
8628c2ecf20Sopenharmony_ci};
8638c2ecf20Sopenharmony_ci
8648c2ecf20Sopenharmony_cistatic struct clk_rcg prng_src = {
8658c2ecf20Sopenharmony_ci	.ns_reg = 0x2e80,
8668c2ecf20Sopenharmony_ci	.p = {
8678c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
8688c2ecf20Sopenharmony_ci		.pre_div_width = 4,
8698c2ecf20Sopenharmony_ci	},
8708c2ecf20Sopenharmony_ci	.s = {
8718c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
8728c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
8738c2ecf20Sopenharmony_ci	},
8748c2ecf20Sopenharmony_ci	.clkr = {
8758c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8768c2ecf20Sopenharmony_ci			.name = "prng_src",
8778c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
8788c2ecf20Sopenharmony_ci			.num_parents = 2,
8798c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
8808c2ecf20Sopenharmony_ci		},
8818c2ecf20Sopenharmony_ci	},
8828c2ecf20Sopenharmony_ci};
8838c2ecf20Sopenharmony_ci
8848c2ecf20Sopenharmony_cistatic struct clk_branch prng_clk = {
8858c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
8868c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
8878c2ecf20Sopenharmony_ci	.halt_bit = 10,
8888c2ecf20Sopenharmony_ci	.clkr = {
8898c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
8908c2ecf20Sopenharmony_ci		.enable_mask = BIT(10),
8918c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8928c2ecf20Sopenharmony_ci			.name = "prng_clk",
8938c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "prng_src" },
8948c2ecf20Sopenharmony_ci			.num_parents = 1,
8958c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
8968c2ecf20Sopenharmony_ci		},
8978c2ecf20Sopenharmony_ci	},
8988c2ecf20Sopenharmony_ci};
8998c2ecf20Sopenharmony_ci
9008c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_sdc[] = {
9018c2ecf20Sopenharmony_ci	{    144000, P_CXO,   1, 1, 133 },
9028c2ecf20Sopenharmony_ci	{    400000, P_PLL8,  4, 1, 240 },
9038c2ecf20Sopenharmony_ci	{  16000000, P_PLL8,  4, 1,   6 },
9048c2ecf20Sopenharmony_ci	{  17070000, P_PLL8,  1, 2,  45 },
9058c2ecf20Sopenharmony_ci	{  20210000, P_PLL8,  1, 1,  19 },
9068c2ecf20Sopenharmony_ci	{  24000000, P_PLL8,  4, 1,   4 },
9078c2ecf20Sopenharmony_ci	{  38400000, P_PLL8,  2, 1,   5 },
9088c2ecf20Sopenharmony_ci	{  48000000, P_PLL8,  4, 1,   2 },
9098c2ecf20Sopenharmony_ci	{  64000000, P_PLL8,  3, 1,   2 },
9108c2ecf20Sopenharmony_ci	{  76800000, P_PLL8,  1, 1,   5 },
9118c2ecf20Sopenharmony_ci	{ }
9128c2ecf20Sopenharmony_ci};
9138c2ecf20Sopenharmony_ci
9148c2ecf20Sopenharmony_cistatic struct clk_rcg sdc1_src = {
9158c2ecf20Sopenharmony_ci	.ns_reg = 0x282c,
9168c2ecf20Sopenharmony_ci	.md_reg = 0x2828,
9178c2ecf20Sopenharmony_ci	.mn = {
9188c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
9198c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
9208c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
9218c2ecf20Sopenharmony_ci		.n_val_shift = 16,
9228c2ecf20Sopenharmony_ci		.m_val_shift = 16,
9238c2ecf20Sopenharmony_ci		.width = 8,
9248c2ecf20Sopenharmony_ci	},
9258c2ecf20Sopenharmony_ci	.p = {
9268c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
9278c2ecf20Sopenharmony_ci		.pre_div_width = 2,
9288c2ecf20Sopenharmony_ci	},
9298c2ecf20Sopenharmony_ci	.s = {
9308c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
9318c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
9328c2ecf20Sopenharmony_ci	},
9338c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_sdc,
9348c2ecf20Sopenharmony_ci	.clkr = {
9358c2ecf20Sopenharmony_ci		.enable_reg = 0x282c,
9368c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
9378c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
9388c2ecf20Sopenharmony_ci			.name = "sdc1_src",
9398c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
9408c2ecf20Sopenharmony_ci			.num_parents = 2,
9418c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
9428c2ecf20Sopenharmony_ci		},
9438c2ecf20Sopenharmony_ci	}
9448c2ecf20Sopenharmony_ci};
9458c2ecf20Sopenharmony_ci
9468c2ecf20Sopenharmony_cistatic struct clk_branch sdc1_clk = {
9478c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
9488c2ecf20Sopenharmony_ci	.halt_bit = 6,
9498c2ecf20Sopenharmony_ci	.clkr = {
9508c2ecf20Sopenharmony_ci		.enable_reg = 0x282c,
9518c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
9528c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
9538c2ecf20Sopenharmony_ci			.name = "sdc1_clk",
9548c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "sdc1_src" },
9558c2ecf20Sopenharmony_ci			.num_parents = 1,
9568c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
9578c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
9588c2ecf20Sopenharmony_ci		},
9598c2ecf20Sopenharmony_ci	},
9608c2ecf20Sopenharmony_ci};
9618c2ecf20Sopenharmony_ci
9628c2ecf20Sopenharmony_cistatic struct clk_rcg sdc2_src = {
9638c2ecf20Sopenharmony_ci	.ns_reg = 0x284c,
9648c2ecf20Sopenharmony_ci	.md_reg = 0x2848,
9658c2ecf20Sopenharmony_ci	.mn = {
9668c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
9678c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
9688c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
9698c2ecf20Sopenharmony_ci		.n_val_shift = 16,
9708c2ecf20Sopenharmony_ci		.m_val_shift = 16,
9718c2ecf20Sopenharmony_ci		.width = 8,
9728c2ecf20Sopenharmony_ci	},
9738c2ecf20Sopenharmony_ci	.p = {
9748c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
9758c2ecf20Sopenharmony_ci		.pre_div_width = 2,
9768c2ecf20Sopenharmony_ci	},
9778c2ecf20Sopenharmony_ci	.s = {
9788c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
9798c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
9808c2ecf20Sopenharmony_ci	},
9818c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_sdc,
9828c2ecf20Sopenharmony_ci	.clkr = {
9838c2ecf20Sopenharmony_ci		.enable_reg = 0x284c,
9848c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
9858c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
9868c2ecf20Sopenharmony_ci			.name = "sdc2_src",
9878c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
9888c2ecf20Sopenharmony_ci			.num_parents = 2,
9898c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
9908c2ecf20Sopenharmony_ci		},
9918c2ecf20Sopenharmony_ci	}
9928c2ecf20Sopenharmony_ci};
9938c2ecf20Sopenharmony_ci
9948c2ecf20Sopenharmony_cistatic struct clk_branch sdc2_clk = {
9958c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
9968c2ecf20Sopenharmony_ci	.halt_bit = 5,
9978c2ecf20Sopenharmony_ci	.clkr = {
9988c2ecf20Sopenharmony_ci		.enable_reg = 0x284c,
9998c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
10008c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
10018c2ecf20Sopenharmony_ci			.name = "sdc2_clk",
10028c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "sdc2_src" },
10038c2ecf20Sopenharmony_ci			.num_parents = 1,
10048c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
10058c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
10068c2ecf20Sopenharmony_ci		},
10078c2ecf20Sopenharmony_ci	},
10088c2ecf20Sopenharmony_ci};
10098c2ecf20Sopenharmony_ci
10108c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_usb[] = {
10118c2ecf20Sopenharmony_ci	{ 60000000, P_PLL8, 1, 5, 32 },
10128c2ecf20Sopenharmony_ci	{ }
10138c2ecf20Sopenharmony_ci};
10148c2ecf20Sopenharmony_ci
10158c2ecf20Sopenharmony_cistatic struct clk_rcg usb_hs1_xcvr_src = {
10168c2ecf20Sopenharmony_ci	.ns_reg = 0x290c,
10178c2ecf20Sopenharmony_ci	.md_reg = 0x2908,
10188c2ecf20Sopenharmony_ci	.mn = {
10198c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
10208c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
10218c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
10228c2ecf20Sopenharmony_ci		.n_val_shift = 16,
10238c2ecf20Sopenharmony_ci		.m_val_shift = 16,
10248c2ecf20Sopenharmony_ci		.width = 8,
10258c2ecf20Sopenharmony_ci	},
10268c2ecf20Sopenharmony_ci	.p = {
10278c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
10288c2ecf20Sopenharmony_ci		.pre_div_width = 2,
10298c2ecf20Sopenharmony_ci	},
10308c2ecf20Sopenharmony_ci	.s = {
10318c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
10328c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
10338c2ecf20Sopenharmony_ci	},
10348c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_usb,
10358c2ecf20Sopenharmony_ci	.clkr = {
10368c2ecf20Sopenharmony_ci		.enable_reg = 0x290c,
10378c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
10388c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
10398c2ecf20Sopenharmony_ci			.name = "usb_hs1_xcvr_src",
10408c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
10418c2ecf20Sopenharmony_ci			.num_parents = 2,
10428c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
10438c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
10448c2ecf20Sopenharmony_ci		},
10458c2ecf20Sopenharmony_ci	}
10468c2ecf20Sopenharmony_ci};
10478c2ecf20Sopenharmony_ci
10488c2ecf20Sopenharmony_cistatic struct clk_branch usb_hs1_xcvr_clk = {
10498c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
10508c2ecf20Sopenharmony_ci	.halt_bit = 0,
10518c2ecf20Sopenharmony_ci	.clkr = {
10528c2ecf20Sopenharmony_ci		.enable_reg = 0x290c,
10538c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
10548c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
10558c2ecf20Sopenharmony_ci			.name = "usb_hs1_xcvr_clk",
10568c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "usb_hs1_xcvr_src" },
10578c2ecf20Sopenharmony_ci			.num_parents = 1,
10588c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
10598c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
10608c2ecf20Sopenharmony_ci		},
10618c2ecf20Sopenharmony_ci	},
10628c2ecf20Sopenharmony_ci};
10638c2ecf20Sopenharmony_ci
10648c2ecf20Sopenharmony_cistatic struct clk_rcg usb_hsic_xcvr_fs_src = {
10658c2ecf20Sopenharmony_ci	.ns_reg = 0x2928,
10668c2ecf20Sopenharmony_ci	.md_reg = 0x2924,
10678c2ecf20Sopenharmony_ci	.mn = {
10688c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
10698c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
10708c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
10718c2ecf20Sopenharmony_ci		.n_val_shift = 16,
10728c2ecf20Sopenharmony_ci		.m_val_shift = 16,
10738c2ecf20Sopenharmony_ci		.width = 8,
10748c2ecf20Sopenharmony_ci	},
10758c2ecf20Sopenharmony_ci	.p = {
10768c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
10778c2ecf20Sopenharmony_ci		.pre_div_width = 2,
10788c2ecf20Sopenharmony_ci	},
10798c2ecf20Sopenharmony_ci	.s = {
10808c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
10818c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
10828c2ecf20Sopenharmony_ci	},
10838c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_usb,
10848c2ecf20Sopenharmony_ci	.clkr = {
10858c2ecf20Sopenharmony_ci		.enable_reg = 0x2928,
10868c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
10878c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
10888c2ecf20Sopenharmony_ci			.name = "usb_hsic_xcvr_fs_src",
10898c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
10908c2ecf20Sopenharmony_ci			.num_parents = 2,
10918c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
10928c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
10938c2ecf20Sopenharmony_ci		},
10948c2ecf20Sopenharmony_ci	}
10958c2ecf20Sopenharmony_ci};
10968c2ecf20Sopenharmony_ci
10978c2ecf20Sopenharmony_cistatic struct clk_branch usb_hsic_xcvr_fs_clk = {
10988c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
10998c2ecf20Sopenharmony_ci	.halt_bit = 9,
11008c2ecf20Sopenharmony_ci	.clkr = {
11018c2ecf20Sopenharmony_ci		.enable_reg = 0x2928,
11028c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
11038c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
11048c2ecf20Sopenharmony_ci			.name = "usb_hsic_xcvr_fs_clk",
11058c2ecf20Sopenharmony_ci			.parent_names =
11068c2ecf20Sopenharmony_ci				(const char *[]){ "usb_hsic_xcvr_fs_src" },
11078c2ecf20Sopenharmony_ci			.num_parents = 1,
11088c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
11098c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
11108c2ecf20Sopenharmony_ci		},
11118c2ecf20Sopenharmony_ci	},
11128c2ecf20Sopenharmony_ci};
11138c2ecf20Sopenharmony_ci
11148c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_usb_hs1_system[] = {
11158c2ecf20Sopenharmony_ci	{ 60000000, P_PLL8, 1, 5, 32 },
11168c2ecf20Sopenharmony_ci	{ }
11178c2ecf20Sopenharmony_ci};
11188c2ecf20Sopenharmony_ci
11198c2ecf20Sopenharmony_cistatic struct clk_rcg usb_hs1_system_src = {
11208c2ecf20Sopenharmony_ci	.ns_reg = 0x36a4,
11218c2ecf20Sopenharmony_ci	.md_reg = 0x36a0,
11228c2ecf20Sopenharmony_ci	.mn = {
11238c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
11248c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
11258c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
11268c2ecf20Sopenharmony_ci		.n_val_shift = 16,
11278c2ecf20Sopenharmony_ci		.m_val_shift = 16,
11288c2ecf20Sopenharmony_ci		.width = 8,
11298c2ecf20Sopenharmony_ci	},
11308c2ecf20Sopenharmony_ci	.p = {
11318c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
11328c2ecf20Sopenharmony_ci		.pre_div_width = 2,
11338c2ecf20Sopenharmony_ci	},
11348c2ecf20Sopenharmony_ci	.s = {
11358c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
11368c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
11378c2ecf20Sopenharmony_ci	},
11388c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_usb_hs1_system,
11398c2ecf20Sopenharmony_ci	.clkr = {
11408c2ecf20Sopenharmony_ci		.enable_reg = 0x36a4,
11418c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
11428c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
11438c2ecf20Sopenharmony_ci			.name = "usb_hs1_system_src",
11448c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
11458c2ecf20Sopenharmony_ci			.num_parents = 2,
11468c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
11478c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
11488c2ecf20Sopenharmony_ci		},
11498c2ecf20Sopenharmony_ci	}
11508c2ecf20Sopenharmony_ci};
11518c2ecf20Sopenharmony_ci
11528c2ecf20Sopenharmony_cistatic struct clk_branch usb_hs1_system_clk = {
11538c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
11548c2ecf20Sopenharmony_ci	.halt_bit = 4,
11558c2ecf20Sopenharmony_ci	.clkr = {
11568c2ecf20Sopenharmony_ci		.enable_reg = 0x36a4,
11578c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
11588c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
11598c2ecf20Sopenharmony_ci			.parent_names =
11608c2ecf20Sopenharmony_ci				(const char *[]){ "usb_hs1_system_src" },
11618c2ecf20Sopenharmony_ci			.num_parents = 1,
11628c2ecf20Sopenharmony_ci			.name = "usb_hs1_system_clk",
11638c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
11648c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
11658c2ecf20Sopenharmony_ci		},
11668c2ecf20Sopenharmony_ci	},
11678c2ecf20Sopenharmony_ci};
11688c2ecf20Sopenharmony_ci
11698c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_usb_hsic_system[] = {
11708c2ecf20Sopenharmony_ci	{ 64000000, P_PLL8, 1, 1, 6 },
11718c2ecf20Sopenharmony_ci	{ }
11728c2ecf20Sopenharmony_ci};
11738c2ecf20Sopenharmony_ci
11748c2ecf20Sopenharmony_cistatic struct clk_rcg usb_hsic_system_src = {
11758c2ecf20Sopenharmony_ci	.ns_reg = 0x2b58,
11768c2ecf20Sopenharmony_ci	.md_reg = 0x2b54,
11778c2ecf20Sopenharmony_ci	.mn = {
11788c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
11798c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
11808c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
11818c2ecf20Sopenharmony_ci		.n_val_shift = 16,
11828c2ecf20Sopenharmony_ci		.m_val_shift = 16,
11838c2ecf20Sopenharmony_ci		.width = 8,
11848c2ecf20Sopenharmony_ci	},
11858c2ecf20Sopenharmony_ci	.p = {
11868c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
11878c2ecf20Sopenharmony_ci		.pre_div_width = 2,
11888c2ecf20Sopenharmony_ci	},
11898c2ecf20Sopenharmony_ci	.s = {
11908c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
11918c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll8_map,
11928c2ecf20Sopenharmony_ci	},
11938c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_usb_hsic_system,
11948c2ecf20Sopenharmony_ci	.clkr = {
11958c2ecf20Sopenharmony_ci		.enable_reg = 0x2b58,
11968c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
11978c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
11988c2ecf20Sopenharmony_ci			.name = "usb_hsic_system_src",
11998c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll8,
12008c2ecf20Sopenharmony_ci			.num_parents = 2,
12018c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
12028c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
12038c2ecf20Sopenharmony_ci		},
12048c2ecf20Sopenharmony_ci	}
12058c2ecf20Sopenharmony_ci};
12068c2ecf20Sopenharmony_ci
12078c2ecf20Sopenharmony_cistatic struct clk_branch usb_hsic_system_clk = {
12088c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
12098c2ecf20Sopenharmony_ci	.halt_bit = 7,
12108c2ecf20Sopenharmony_ci	.clkr = {
12118c2ecf20Sopenharmony_ci		.enable_reg = 0x2b58,
12128c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
12138c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
12148c2ecf20Sopenharmony_ci			.parent_names =
12158c2ecf20Sopenharmony_ci				(const char *[]){ "usb_hsic_system_src" },
12168c2ecf20Sopenharmony_ci			.num_parents = 1,
12178c2ecf20Sopenharmony_ci			.name = "usb_hsic_system_clk",
12188c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
12198c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
12208c2ecf20Sopenharmony_ci		},
12218c2ecf20Sopenharmony_ci	},
12228c2ecf20Sopenharmony_ci};
12238c2ecf20Sopenharmony_ci
12248c2ecf20Sopenharmony_cistatic const struct freq_tbl clk_tbl_usb_hsic_hsic[] = {
12258c2ecf20Sopenharmony_ci	{ 48000000, P_PLL14, 1, 0, 0 },
12268c2ecf20Sopenharmony_ci	{ }
12278c2ecf20Sopenharmony_ci};
12288c2ecf20Sopenharmony_ci
12298c2ecf20Sopenharmony_cistatic struct clk_rcg usb_hsic_hsic_src = {
12308c2ecf20Sopenharmony_ci	.ns_reg = 0x2b50,
12318c2ecf20Sopenharmony_ci	.md_reg = 0x2b4c,
12328c2ecf20Sopenharmony_ci	.mn = {
12338c2ecf20Sopenharmony_ci		.mnctr_en_bit = 8,
12348c2ecf20Sopenharmony_ci		.mnctr_reset_bit = 7,
12358c2ecf20Sopenharmony_ci		.mnctr_mode_shift = 5,
12368c2ecf20Sopenharmony_ci		.n_val_shift = 16,
12378c2ecf20Sopenharmony_ci		.m_val_shift = 16,
12388c2ecf20Sopenharmony_ci		.width = 8,
12398c2ecf20Sopenharmony_ci	},
12408c2ecf20Sopenharmony_ci	.p = {
12418c2ecf20Sopenharmony_ci		.pre_div_shift = 3,
12428c2ecf20Sopenharmony_ci		.pre_div_width = 2,
12438c2ecf20Sopenharmony_ci	},
12448c2ecf20Sopenharmony_ci	.s = {
12458c2ecf20Sopenharmony_ci		.src_sel_shift = 0,
12468c2ecf20Sopenharmony_ci		.parent_map = gcc_cxo_pll14_map,
12478c2ecf20Sopenharmony_ci	},
12488c2ecf20Sopenharmony_ci	.freq_tbl = clk_tbl_usb_hsic_hsic,
12498c2ecf20Sopenharmony_ci	.clkr = {
12508c2ecf20Sopenharmony_ci		.enable_reg = 0x2b50,
12518c2ecf20Sopenharmony_ci		.enable_mask = BIT(11),
12528c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
12538c2ecf20Sopenharmony_ci			.name = "usb_hsic_hsic_src",
12548c2ecf20Sopenharmony_ci			.parent_names = gcc_cxo_pll14,
12558c2ecf20Sopenharmony_ci			.num_parents = 2,
12568c2ecf20Sopenharmony_ci			.ops = &clk_rcg_ops,
12578c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_GATE,
12588c2ecf20Sopenharmony_ci		},
12598c2ecf20Sopenharmony_ci	}
12608c2ecf20Sopenharmony_ci};
12618c2ecf20Sopenharmony_ci
12628c2ecf20Sopenharmony_cistatic struct clk_branch usb_hsic_hsic_clk = {
12638c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_DELAY,
12648c2ecf20Sopenharmony_ci	.clkr = {
12658c2ecf20Sopenharmony_ci		.enable_reg = 0x2b50,
12668c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
12678c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
12688c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "usb_hsic_hsic_src" },
12698c2ecf20Sopenharmony_ci			.num_parents = 1,
12708c2ecf20Sopenharmony_ci			.name = "usb_hsic_hsic_clk",
12718c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
12728c2ecf20Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
12738c2ecf20Sopenharmony_ci		},
12748c2ecf20Sopenharmony_ci	},
12758c2ecf20Sopenharmony_ci};
12768c2ecf20Sopenharmony_ci
12778c2ecf20Sopenharmony_cistatic struct clk_branch usb_hsic_hsio_cal_clk = {
12788c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
12798c2ecf20Sopenharmony_ci	.halt_bit = 8,
12808c2ecf20Sopenharmony_ci	.clkr = {
12818c2ecf20Sopenharmony_ci		.enable_reg = 0x2b48,
12828c2ecf20Sopenharmony_ci		.enable_mask = BIT(0),
12838c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
12848c2ecf20Sopenharmony_ci			.parent_names = (const char *[]){ "cxo" },
12858c2ecf20Sopenharmony_ci			.num_parents = 1,
12868c2ecf20Sopenharmony_ci			.name = "usb_hsic_hsio_cal_clk",
12878c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
12888c2ecf20Sopenharmony_ci		},
12898c2ecf20Sopenharmony_ci	},
12908c2ecf20Sopenharmony_ci};
12918c2ecf20Sopenharmony_ci
12928c2ecf20Sopenharmony_cistatic struct clk_branch ce1_core_clk = {
12938c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2724,
12948c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
12958c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd4,
12968c2ecf20Sopenharmony_ci	.halt_bit = 27,
12978c2ecf20Sopenharmony_ci	.clkr = {
12988c2ecf20Sopenharmony_ci		.enable_reg = 0x2724,
12998c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13008c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13018c2ecf20Sopenharmony_ci			.name = "ce1_core_clk",
13028c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13038c2ecf20Sopenharmony_ci		},
13048c2ecf20Sopenharmony_ci	},
13058c2ecf20Sopenharmony_ci};
13068c2ecf20Sopenharmony_ci
13078c2ecf20Sopenharmony_cistatic struct clk_branch ce1_h_clk = {
13088c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd4,
13098c2ecf20Sopenharmony_ci	.halt_bit = 1,
13108c2ecf20Sopenharmony_ci	.clkr = {
13118c2ecf20Sopenharmony_ci		.enable_reg = 0x2720,
13128c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13138c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13148c2ecf20Sopenharmony_ci			.name = "ce1_h_clk",
13158c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13168c2ecf20Sopenharmony_ci		},
13178c2ecf20Sopenharmony_ci	},
13188c2ecf20Sopenharmony_ci};
13198c2ecf20Sopenharmony_ci
13208c2ecf20Sopenharmony_cistatic struct clk_branch dma_bam_h_clk = {
13218c2ecf20Sopenharmony_ci	.hwcg_reg = 0x25c0,
13228c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13238c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
13248c2ecf20Sopenharmony_ci	.halt_bit = 12,
13258c2ecf20Sopenharmony_ci	.clkr = {
13268c2ecf20Sopenharmony_ci		.enable_reg = 0x25c0,
13278c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13288c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13298c2ecf20Sopenharmony_ci			.name = "dma_bam_h_clk",
13308c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13318c2ecf20Sopenharmony_ci		},
13328c2ecf20Sopenharmony_ci	},
13338c2ecf20Sopenharmony_ci};
13348c2ecf20Sopenharmony_ci
13358c2ecf20Sopenharmony_cistatic struct clk_branch gsbi1_h_clk = {
13368c2ecf20Sopenharmony_ci	.hwcg_reg = 0x29c0,
13378c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13388c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
13398c2ecf20Sopenharmony_ci	.halt_bit = 11,
13408c2ecf20Sopenharmony_ci	.clkr = {
13418c2ecf20Sopenharmony_ci		.enable_reg = 0x29c0,
13428c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13438c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13448c2ecf20Sopenharmony_ci			.name = "gsbi1_h_clk",
13458c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13468c2ecf20Sopenharmony_ci		},
13478c2ecf20Sopenharmony_ci	},
13488c2ecf20Sopenharmony_ci};
13498c2ecf20Sopenharmony_ci
13508c2ecf20Sopenharmony_cistatic struct clk_branch gsbi2_h_clk = {
13518c2ecf20Sopenharmony_ci	.hwcg_reg = 0x29e0,
13528c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13538c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
13548c2ecf20Sopenharmony_ci	.halt_bit = 7,
13558c2ecf20Sopenharmony_ci	.clkr = {
13568c2ecf20Sopenharmony_ci		.enable_reg = 0x29e0,
13578c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13588c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13598c2ecf20Sopenharmony_ci			.name = "gsbi2_h_clk",
13608c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13618c2ecf20Sopenharmony_ci		},
13628c2ecf20Sopenharmony_ci	},
13638c2ecf20Sopenharmony_ci};
13648c2ecf20Sopenharmony_ci
13658c2ecf20Sopenharmony_cistatic struct clk_branch gsbi3_h_clk = {
13668c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2a00,
13678c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13688c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
13698c2ecf20Sopenharmony_ci	.halt_bit = 3,
13708c2ecf20Sopenharmony_ci	.clkr = {
13718c2ecf20Sopenharmony_ci		.enable_reg = 0x2a00,
13728c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13738c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13748c2ecf20Sopenharmony_ci			.name = "gsbi3_h_clk",
13758c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13768c2ecf20Sopenharmony_ci		},
13778c2ecf20Sopenharmony_ci	},
13788c2ecf20Sopenharmony_ci};
13798c2ecf20Sopenharmony_ci
13808c2ecf20Sopenharmony_cistatic struct clk_branch gsbi4_h_clk = {
13818c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2a20,
13828c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13838c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
13848c2ecf20Sopenharmony_ci	.halt_bit = 27,
13858c2ecf20Sopenharmony_ci	.clkr = {
13868c2ecf20Sopenharmony_ci		.enable_reg = 0x2a20,
13878c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
13888c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
13898c2ecf20Sopenharmony_ci			.name = "gsbi4_h_clk",
13908c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
13918c2ecf20Sopenharmony_ci		},
13928c2ecf20Sopenharmony_ci	},
13938c2ecf20Sopenharmony_ci};
13948c2ecf20Sopenharmony_ci
13958c2ecf20Sopenharmony_cistatic struct clk_branch gsbi5_h_clk = {
13968c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2a40,
13978c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
13988c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd0,
13998c2ecf20Sopenharmony_ci	.halt_bit = 23,
14008c2ecf20Sopenharmony_ci	.clkr = {
14018c2ecf20Sopenharmony_ci		.enable_reg = 0x2a40,
14028c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
14038c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14048c2ecf20Sopenharmony_ci			.name = "gsbi5_h_clk",
14058c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14068c2ecf20Sopenharmony_ci		},
14078c2ecf20Sopenharmony_ci	},
14088c2ecf20Sopenharmony_ci};
14098c2ecf20Sopenharmony_ci
14108c2ecf20Sopenharmony_cistatic struct clk_branch usb_hs1_h_clk = {
14118c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2900,
14128c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
14138c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
14148c2ecf20Sopenharmony_ci	.halt_bit = 1,
14158c2ecf20Sopenharmony_ci	.clkr = {
14168c2ecf20Sopenharmony_ci		.enable_reg = 0x2900,
14178c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
14188c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14198c2ecf20Sopenharmony_ci			.name = "usb_hs1_h_clk",
14208c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14218c2ecf20Sopenharmony_ci		},
14228c2ecf20Sopenharmony_ci	},
14238c2ecf20Sopenharmony_ci};
14248c2ecf20Sopenharmony_ci
14258c2ecf20Sopenharmony_cistatic struct clk_branch usb_hsic_h_clk = {
14268c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
14278c2ecf20Sopenharmony_ci	.halt_bit = 28,
14288c2ecf20Sopenharmony_ci	.clkr = {
14298c2ecf20Sopenharmony_ci		.enable_reg = 0x2920,
14308c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
14318c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14328c2ecf20Sopenharmony_ci			.name = "usb_hsic_h_clk",
14338c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14348c2ecf20Sopenharmony_ci		},
14358c2ecf20Sopenharmony_ci	},
14368c2ecf20Sopenharmony_ci};
14378c2ecf20Sopenharmony_ci
14388c2ecf20Sopenharmony_cistatic struct clk_branch sdc1_h_clk = {
14398c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2820,
14408c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
14418c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
14428c2ecf20Sopenharmony_ci	.halt_bit = 11,
14438c2ecf20Sopenharmony_ci	.clkr = {
14448c2ecf20Sopenharmony_ci		.enable_reg = 0x2820,
14458c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
14468c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14478c2ecf20Sopenharmony_ci			.name = "sdc1_h_clk",
14488c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14498c2ecf20Sopenharmony_ci		},
14508c2ecf20Sopenharmony_ci	},
14518c2ecf20Sopenharmony_ci};
14528c2ecf20Sopenharmony_ci
14538c2ecf20Sopenharmony_cistatic struct clk_branch sdc2_h_clk = {
14548c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2840,
14558c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
14568c2ecf20Sopenharmony_ci	.halt_reg = 0x2fc8,
14578c2ecf20Sopenharmony_ci	.halt_bit = 10,
14588c2ecf20Sopenharmony_ci	.clkr = {
14598c2ecf20Sopenharmony_ci		.enable_reg = 0x2840,
14608c2ecf20Sopenharmony_ci		.enable_mask = BIT(4),
14618c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14628c2ecf20Sopenharmony_ci			.name = "sdc2_h_clk",
14638c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14648c2ecf20Sopenharmony_ci		},
14658c2ecf20Sopenharmony_ci	},
14668c2ecf20Sopenharmony_ci};
14678c2ecf20Sopenharmony_ci
14688c2ecf20Sopenharmony_cistatic struct clk_branch adm0_clk = {
14698c2ecf20Sopenharmony_ci	.halt_reg = 0x2fdc,
14708c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
14718c2ecf20Sopenharmony_ci	.halt_bit = 14,
14728c2ecf20Sopenharmony_ci	.clkr = {
14738c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
14748c2ecf20Sopenharmony_ci		.enable_mask = BIT(2),
14758c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14768c2ecf20Sopenharmony_ci			.name = "adm0_clk",
14778c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14788c2ecf20Sopenharmony_ci		},
14798c2ecf20Sopenharmony_ci	},
14808c2ecf20Sopenharmony_ci};
14818c2ecf20Sopenharmony_ci
14828c2ecf20Sopenharmony_cistatic struct clk_branch adm0_pbus_clk = {
14838c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2208,
14848c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
14858c2ecf20Sopenharmony_ci	.halt_reg = 0x2fdc,
14868c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
14878c2ecf20Sopenharmony_ci	.halt_bit = 13,
14888c2ecf20Sopenharmony_ci	.clkr = {
14898c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
14908c2ecf20Sopenharmony_ci		.enable_mask = BIT(3),
14918c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14928c2ecf20Sopenharmony_ci			.name = "adm0_pbus_clk",
14938c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
14948c2ecf20Sopenharmony_ci		},
14958c2ecf20Sopenharmony_ci	},
14968c2ecf20Sopenharmony_ci};
14978c2ecf20Sopenharmony_ci
14988c2ecf20Sopenharmony_cistatic struct clk_branch pmic_arb0_h_clk = {
14998c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
15008c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
15018c2ecf20Sopenharmony_ci	.halt_bit = 22,
15028c2ecf20Sopenharmony_ci	.clkr = {
15038c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
15048c2ecf20Sopenharmony_ci		.enable_mask = BIT(8),
15058c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15068c2ecf20Sopenharmony_ci			.name = "pmic_arb0_h_clk",
15078c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15088c2ecf20Sopenharmony_ci		},
15098c2ecf20Sopenharmony_ci	},
15108c2ecf20Sopenharmony_ci};
15118c2ecf20Sopenharmony_ci
15128c2ecf20Sopenharmony_cistatic struct clk_branch pmic_arb1_h_clk = {
15138c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
15148c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
15158c2ecf20Sopenharmony_ci	.halt_bit = 21,
15168c2ecf20Sopenharmony_ci	.clkr = {
15178c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
15188c2ecf20Sopenharmony_ci		.enable_mask = BIT(9),
15198c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15208c2ecf20Sopenharmony_ci			.name = "pmic_arb1_h_clk",
15218c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15228c2ecf20Sopenharmony_ci		},
15238c2ecf20Sopenharmony_ci	},
15248c2ecf20Sopenharmony_ci};
15258c2ecf20Sopenharmony_ci
15268c2ecf20Sopenharmony_cistatic struct clk_branch pmic_ssbi2_clk = {
15278c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
15288c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
15298c2ecf20Sopenharmony_ci	.halt_bit = 23,
15308c2ecf20Sopenharmony_ci	.clkr = {
15318c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
15328c2ecf20Sopenharmony_ci		.enable_mask = BIT(7),
15338c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15348c2ecf20Sopenharmony_ci			.name = "pmic_ssbi2_clk",
15358c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15368c2ecf20Sopenharmony_ci		},
15378c2ecf20Sopenharmony_ci	},
15388c2ecf20Sopenharmony_ci};
15398c2ecf20Sopenharmony_ci
15408c2ecf20Sopenharmony_cistatic struct clk_branch rpm_msg_ram_h_clk = {
15418c2ecf20Sopenharmony_ci	.hwcg_reg = 0x27e0,
15428c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
15438c2ecf20Sopenharmony_ci	.halt_reg = 0x2fd8,
15448c2ecf20Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
15458c2ecf20Sopenharmony_ci	.halt_bit = 12,
15468c2ecf20Sopenharmony_ci	.clkr = {
15478c2ecf20Sopenharmony_ci		.enable_reg = 0x3080,
15488c2ecf20Sopenharmony_ci		.enable_mask = BIT(6),
15498c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15508c2ecf20Sopenharmony_ci			.name = "rpm_msg_ram_h_clk",
15518c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15528c2ecf20Sopenharmony_ci		},
15538c2ecf20Sopenharmony_ci	},
15548c2ecf20Sopenharmony_ci};
15558c2ecf20Sopenharmony_ci
15568c2ecf20Sopenharmony_cistatic struct clk_branch ebi2_clk = {
15578c2ecf20Sopenharmony_ci	.hwcg_reg = 0x2664,
15588c2ecf20Sopenharmony_ci	.hwcg_bit = 6,
15598c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
15608c2ecf20Sopenharmony_ci	.halt_bit = 24,
15618c2ecf20Sopenharmony_ci	.clkr = {
15628c2ecf20Sopenharmony_ci		.enable_reg = 0x2664,
15638c2ecf20Sopenharmony_ci		.enable_mask = BIT(6) | BIT(4),
15648c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15658c2ecf20Sopenharmony_ci			.name = "ebi2_clk",
15668c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15678c2ecf20Sopenharmony_ci		},
15688c2ecf20Sopenharmony_ci	},
15698c2ecf20Sopenharmony_ci};
15708c2ecf20Sopenharmony_ci
15718c2ecf20Sopenharmony_cistatic struct clk_branch ebi2_aon_clk = {
15728c2ecf20Sopenharmony_ci	.halt_reg = 0x2fcc,
15738c2ecf20Sopenharmony_ci	.halt_bit = 23,
15748c2ecf20Sopenharmony_ci	.clkr = {
15758c2ecf20Sopenharmony_ci		.enable_reg = 0x2664,
15768c2ecf20Sopenharmony_ci		.enable_mask = BIT(8),
15778c2ecf20Sopenharmony_ci		.hw.init = &(struct clk_init_data){
15788c2ecf20Sopenharmony_ci			.name = "ebi2_aon_clk",
15798c2ecf20Sopenharmony_ci			.ops = &clk_branch_ops,
15808c2ecf20Sopenharmony_ci		},
15818c2ecf20Sopenharmony_ci	},
15828c2ecf20Sopenharmony_ci};
15838c2ecf20Sopenharmony_ci
15848c2ecf20Sopenharmony_cistatic struct clk_hw *gcc_mdm9615_hws[] = {
15858c2ecf20Sopenharmony_ci	&cxo.hw,
15868c2ecf20Sopenharmony_ci};
15878c2ecf20Sopenharmony_ci
15888c2ecf20Sopenharmony_cistatic struct clk_regmap *gcc_mdm9615_clks[] = {
15898c2ecf20Sopenharmony_ci	[PLL0] = &pll0.clkr,
15908c2ecf20Sopenharmony_ci	[PLL0_VOTE] = &pll0_vote,
15918c2ecf20Sopenharmony_ci	[PLL4_VOTE] = &pll4_vote,
15928c2ecf20Sopenharmony_ci	[PLL8] = &pll8.clkr,
15938c2ecf20Sopenharmony_ci	[PLL8_VOTE] = &pll8_vote,
15948c2ecf20Sopenharmony_ci	[PLL14] = &pll14.clkr,
15958c2ecf20Sopenharmony_ci	[PLL14_VOTE] = &pll14_vote,
15968c2ecf20Sopenharmony_ci	[GSBI1_UART_SRC] = &gsbi1_uart_src.clkr,
15978c2ecf20Sopenharmony_ci	[GSBI1_UART_CLK] = &gsbi1_uart_clk.clkr,
15988c2ecf20Sopenharmony_ci	[GSBI2_UART_SRC] = &gsbi2_uart_src.clkr,
15998c2ecf20Sopenharmony_ci	[GSBI2_UART_CLK] = &gsbi2_uart_clk.clkr,
16008c2ecf20Sopenharmony_ci	[GSBI3_UART_SRC] = &gsbi3_uart_src.clkr,
16018c2ecf20Sopenharmony_ci	[GSBI3_UART_CLK] = &gsbi3_uart_clk.clkr,
16028c2ecf20Sopenharmony_ci	[GSBI4_UART_SRC] = &gsbi4_uart_src.clkr,
16038c2ecf20Sopenharmony_ci	[GSBI4_UART_CLK] = &gsbi4_uart_clk.clkr,
16048c2ecf20Sopenharmony_ci	[GSBI5_UART_SRC] = &gsbi5_uart_src.clkr,
16058c2ecf20Sopenharmony_ci	[GSBI5_UART_CLK] = &gsbi5_uart_clk.clkr,
16068c2ecf20Sopenharmony_ci	[GSBI1_QUP_SRC] = &gsbi1_qup_src.clkr,
16078c2ecf20Sopenharmony_ci	[GSBI1_QUP_CLK] = &gsbi1_qup_clk.clkr,
16088c2ecf20Sopenharmony_ci	[GSBI2_QUP_SRC] = &gsbi2_qup_src.clkr,
16098c2ecf20Sopenharmony_ci	[GSBI2_QUP_CLK] = &gsbi2_qup_clk.clkr,
16108c2ecf20Sopenharmony_ci	[GSBI3_QUP_SRC] = &gsbi3_qup_src.clkr,
16118c2ecf20Sopenharmony_ci	[GSBI3_QUP_CLK] = &gsbi3_qup_clk.clkr,
16128c2ecf20Sopenharmony_ci	[GSBI4_QUP_SRC] = &gsbi4_qup_src.clkr,
16138c2ecf20Sopenharmony_ci	[GSBI4_QUP_CLK] = &gsbi4_qup_clk.clkr,
16148c2ecf20Sopenharmony_ci	[GSBI5_QUP_SRC] = &gsbi5_qup_src.clkr,
16158c2ecf20Sopenharmony_ci	[GSBI5_QUP_CLK] = &gsbi5_qup_clk.clkr,
16168c2ecf20Sopenharmony_ci	[GP0_SRC] = &gp0_src.clkr,
16178c2ecf20Sopenharmony_ci	[GP0_CLK] = &gp0_clk.clkr,
16188c2ecf20Sopenharmony_ci	[GP1_SRC] = &gp1_src.clkr,
16198c2ecf20Sopenharmony_ci	[GP1_CLK] = &gp1_clk.clkr,
16208c2ecf20Sopenharmony_ci	[GP2_SRC] = &gp2_src.clkr,
16218c2ecf20Sopenharmony_ci	[GP2_CLK] = &gp2_clk.clkr,
16228c2ecf20Sopenharmony_ci	[PMEM_A_CLK] = &pmem_clk.clkr,
16238c2ecf20Sopenharmony_ci	[PRNG_SRC] = &prng_src.clkr,
16248c2ecf20Sopenharmony_ci	[PRNG_CLK] = &prng_clk.clkr,
16258c2ecf20Sopenharmony_ci	[SDC1_SRC] = &sdc1_src.clkr,
16268c2ecf20Sopenharmony_ci	[SDC1_CLK] = &sdc1_clk.clkr,
16278c2ecf20Sopenharmony_ci	[SDC2_SRC] = &sdc2_src.clkr,
16288c2ecf20Sopenharmony_ci	[SDC2_CLK] = &sdc2_clk.clkr,
16298c2ecf20Sopenharmony_ci	[USB_HS1_XCVR_SRC] = &usb_hs1_xcvr_src.clkr,
16308c2ecf20Sopenharmony_ci	[USB_HS1_XCVR_CLK] = &usb_hs1_xcvr_clk.clkr,
16318c2ecf20Sopenharmony_ci	[USB_HS1_SYSTEM_CLK_SRC] = &usb_hs1_system_src.clkr,
16328c2ecf20Sopenharmony_ci	[USB_HS1_SYSTEM_CLK] = &usb_hs1_system_clk.clkr,
16338c2ecf20Sopenharmony_ci	[USB_HSIC_XCVR_FS_SRC] = &usb_hsic_xcvr_fs_src.clkr,
16348c2ecf20Sopenharmony_ci	[USB_HSIC_XCVR_FS_CLK] = &usb_hsic_xcvr_fs_clk.clkr,
16358c2ecf20Sopenharmony_ci	[USB_HSIC_SYSTEM_CLK_SRC] = &usb_hsic_system_src.clkr,
16368c2ecf20Sopenharmony_ci	[USB_HSIC_SYSTEM_CLK] = &usb_hsic_system_clk.clkr,
16378c2ecf20Sopenharmony_ci	[USB_HSIC_HSIC_CLK_SRC] = &usb_hsic_hsic_src.clkr,
16388c2ecf20Sopenharmony_ci	[USB_HSIC_HSIC_CLK] = &usb_hsic_hsic_clk.clkr,
16398c2ecf20Sopenharmony_ci	[USB_HSIC_HSIO_CAL_CLK] = &usb_hsic_hsio_cal_clk.clkr,
16408c2ecf20Sopenharmony_ci	[CE1_CORE_CLK] = &ce1_core_clk.clkr,
16418c2ecf20Sopenharmony_ci	[CE1_H_CLK] = &ce1_h_clk.clkr,
16428c2ecf20Sopenharmony_ci	[DMA_BAM_H_CLK] = &dma_bam_h_clk.clkr,
16438c2ecf20Sopenharmony_ci	[GSBI1_H_CLK] = &gsbi1_h_clk.clkr,
16448c2ecf20Sopenharmony_ci	[GSBI2_H_CLK] = &gsbi2_h_clk.clkr,
16458c2ecf20Sopenharmony_ci	[GSBI3_H_CLK] = &gsbi3_h_clk.clkr,
16468c2ecf20Sopenharmony_ci	[GSBI4_H_CLK] = &gsbi4_h_clk.clkr,
16478c2ecf20Sopenharmony_ci	[GSBI5_H_CLK] = &gsbi5_h_clk.clkr,
16488c2ecf20Sopenharmony_ci	[USB_HS1_H_CLK] = &usb_hs1_h_clk.clkr,
16498c2ecf20Sopenharmony_ci	[USB_HSIC_H_CLK] = &usb_hsic_h_clk.clkr,
16508c2ecf20Sopenharmony_ci	[SDC1_H_CLK] = &sdc1_h_clk.clkr,
16518c2ecf20Sopenharmony_ci	[SDC2_H_CLK] = &sdc2_h_clk.clkr,
16528c2ecf20Sopenharmony_ci	[ADM0_CLK] = &adm0_clk.clkr,
16538c2ecf20Sopenharmony_ci	[ADM0_PBUS_CLK] = &adm0_pbus_clk.clkr,
16548c2ecf20Sopenharmony_ci	[PMIC_ARB0_H_CLK] = &pmic_arb0_h_clk.clkr,
16558c2ecf20Sopenharmony_ci	[PMIC_ARB1_H_CLK] = &pmic_arb1_h_clk.clkr,
16568c2ecf20Sopenharmony_ci	[PMIC_SSBI2_CLK] = &pmic_ssbi2_clk.clkr,
16578c2ecf20Sopenharmony_ci	[RPM_MSG_RAM_H_CLK] = &rpm_msg_ram_h_clk.clkr,
16588c2ecf20Sopenharmony_ci	[EBI2_CLK] = &ebi2_clk.clkr,
16598c2ecf20Sopenharmony_ci	[EBI2_AON_CLK] = &ebi2_aon_clk.clkr,
16608c2ecf20Sopenharmony_ci};
16618c2ecf20Sopenharmony_ci
16628c2ecf20Sopenharmony_cistatic const struct qcom_reset_map gcc_mdm9615_resets[] = {
16638c2ecf20Sopenharmony_ci	[DMA_BAM_RESET] = { 0x25c0, 7 },
16648c2ecf20Sopenharmony_ci	[CE1_H_RESET] = { 0x2720, 7 },
16658c2ecf20Sopenharmony_ci	[CE1_CORE_RESET] = { 0x2724, 7 },
16668c2ecf20Sopenharmony_ci	[SDC1_RESET] = { 0x2830 },
16678c2ecf20Sopenharmony_ci	[SDC2_RESET] = { 0x2850 },
16688c2ecf20Sopenharmony_ci	[ADM0_C2_RESET] = { 0x220c, 4 },
16698c2ecf20Sopenharmony_ci	[ADM0_C1_RESET] = { 0x220c, 3 },
16708c2ecf20Sopenharmony_ci	[ADM0_C0_RESET] = { 0x220c, 2 },
16718c2ecf20Sopenharmony_ci	[ADM0_PBUS_RESET] = { 0x220c, 1 },
16728c2ecf20Sopenharmony_ci	[ADM0_RESET] = { 0x220c },
16738c2ecf20Sopenharmony_ci	[USB_HS1_RESET] = { 0x2910 },
16748c2ecf20Sopenharmony_ci	[USB_HSIC_RESET] = { 0x2934 },
16758c2ecf20Sopenharmony_ci	[GSBI1_RESET] = { 0x29dc },
16768c2ecf20Sopenharmony_ci	[GSBI2_RESET] = { 0x29fc },
16778c2ecf20Sopenharmony_ci	[GSBI3_RESET] = { 0x2a1c },
16788c2ecf20Sopenharmony_ci	[GSBI4_RESET] = { 0x2a3c },
16798c2ecf20Sopenharmony_ci	[GSBI5_RESET] = { 0x2a5c },
16808c2ecf20Sopenharmony_ci	[PDM_RESET] = { 0x2CC0, 12 },
16818c2ecf20Sopenharmony_ci};
16828c2ecf20Sopenharmony_ci
16838c2ecf20Sopenharmony_cistatic const struct regmap_config gcc_mdm9615_regmap_config = {
16848c2ecf20Sopenharmony_ci	.reg_bits	= 32,
16858c2ecf20Sopenharmony_ci	.reg_stride	= 4,
16868c2ecf20Sopenharmony_ci	.val_bits	= 32,
16878c2ecf20Sopenharmony_ci	.max_register	= 0x3660,
16888c2ecf20Sopenharmony_ci	.fast_io	= true,
16898c2ecf20Sopenharmony_ci};
16908c2ecf20Sopenharmony_ci
16918c2ecf20Sopenharmony_cistatic const struct qcom_cc_desc gcc_mdm9615_desc = {
16928c2ecf20Sopenharmony_ci	.config = &gcc_mdm9615_regmap_config,
16938c2ecf20Sopenharmony_ci	.clks = gcc_mdm9615_clks,
16948c2ecf20Sopenharmony_ci	.num_clks = ARRAY_SIZE(gcc_mdm9615_clks),
16958c2ecf20Sopenharmony_ci	.resets = gcc_mdm9615_resets,
16968c2ecf20Sopenharmony_ci	.num_resets = ARRAY_SIZE(gcc_mdm9615_resets),
16978c2ecf20Sopenharmony_ci	.clk_hws = gcc_mdm9615_hws,
16988c2ecf20Sopenharmony_ci	.num_clk_hws = ARRAY_SIZE(gcc_mdm9615_hws),
16998c2ecf20Sopenharmony_ci};
17008c2ecf20Sopenharmony_ci
17018c2ecf20Sopenharmony_cistatic const struct of_device_id gcc_mdm9615_match_table[] = {
17028c2ecf20Sopenharmony_ci	{ .compatible = "qcom,gcc-mdm9615" },
17038c2ecf20Sopenharmony_ci	{ }
17048c2ecf20Sopenharmony_ci};
17058c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, gcc_mdm9615_match_table);
17068c2ecf20Sopenharmony_ci
17078c2ecf20Sopenharmony_cistatic int gcc_mdm9615_probe(struct platform_device *pdev)
17088c2ecf20Sopenharmony_ci{
17098c2ecf20Sopenharmony_ci	struct regmap *regmap;
17108c2ecf20Sopenharmony_ci
17118c2ecf20Sopenharmony_ci	regmap = qcom_cc_map(pdev, &gcc_mdm9615_desc);
17128c2ecf20Sopenharmony_ci	if (IS_ERR(regmap))
17138c2ecf20Sopenharmony_ci		return PTR_ERR(regmap);
17148c2ecf20Sopenharmony_ci
17158c2ecf20Sopenharmony_ci	return qcom_cc_really_probe(pdev, &gcc_mdm9615_desc, regmap);
17168c2ecf20Sopenharmony_ci}
17178c2ecf20Sopenharmony_ci
17188c2ecf20Sopenharmony_cistatic struct platform_driver gcc_mdm9615_driver = {
17198c2ecf20Sopenharmony_ci	.probe		= gcc_mdm9615_probe,
17208c2ecf20Sopenharmony_ci	.driver		= {
17218c2ecf20Sopenharmony_ci		.name	= "gcc-mdm9615",
17228c2ecf20Sopenharmony_ci		.of_match_table = gcc_mdm9615_match_table,
17238c2ecf20Sopenharmony_ci	},
17248c2ecf20Sopenharmony_ci};
17258c2ecf20Sopenharmony_ci
17268c2ecf20Sopenharmony_cistatic int __init gcc_mdm9615_init(void)
17278c2ecf20Sopenharmony_ci{
17288c2ecf20Sopenharmony_ci	return platform_driver_register(&gcc_mdm9615_driver);
17298c2ecf20Sopenharmony_ci}
17308c2ecf20Sopenharmony_cicore_initcall(gcc_mdm9615_init);
17318c2ecf20Sopenharmony_ci
17328c2ecf20Sopenharmony_cistatic void __exit gcc_mdm9615_exit(void)
17338c2ecf20Sopenharmony_ci{
17348c2ecf20Sopenharmony_ci	platform_driver_unregister(&gcc_mdm9615_driver);
17358c2ecf20Sopenharmony_ci}
17368c2ecf20Sopenharmony_cimodule_exit(gcc_mdm9615_exit);
17378c2ecf20Sopenharmony_ci
17388c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("QCOM GCC MDM9615 Driver");
17398c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2");
17408c2ecf20Sopenharmony_ciMODULE_ALIAS("platform:gcc-mdm9615");
1741