xref: /openbmc/linux/drivers/clk/qcom/mmcc-msm8998.c (revision 932d8c56)
1d14b15b5SJeffrey Hugo // SPDX-License-Identifier: GPL-2.0
2d14b15b5SJeffrey Hugo /*
3d14b15b5SJeffrey Hugo  * Copyright (c) 2019, The Linux Foundation. All rights reserved.
4d14b15b5SJeffrey Hugo  */
5d14b15b5SJeffrey Hugo 
6d14b15b5SJeffrey Hugo #include <linux/kernel.h>
7d14b15b5SJeffrey Hugo #include <linux/bitops.h>
8d14b15b5SJeffrey Hugo #include <linux/err.h>
9d14b15b5SJeffrey Hugo #include <linux/platform_device.h>
10d14b15b5SJeffrey Hugo #include <linux/module.h>
11d14b15b5SJeffrey Hugo #include <linux/of.h>
12d14b15b5SJeffrey Hugo #include <linux/of_device.h>
13d14b15b5SJeffrey Hugo #include <linux/clk-provider.h>
14d14b15b5SJeffrey Hugo #include <linux/regmap.h>
15d14b15b5SJeffrey Hugo #include <linux/reset-controller.h>
16d14b15b5SJeffrey Hugo 
17d14b15b5SJeffrey Hugo #include <dt-bindings/clock/qcom,mmcc-msm8998.h>
18d14b15b5SJeffrey Hugo 
19d14b15b5SJeffrey Hugo #include "common.h"
20d14b15b5SJeffrey Hugo #include "clk-regmap.h"
21d14b15b5SJeffrey Hugo #include "clk-regmap-divider.h"
22d14b15b5SJeffrey Hugo #include "clk-alpha-pll.h"
23d14b15b5SJeffrey Hugo #include "clk-rcg.h"
24d14b15b5SJeffrey Hugo #include "clk-branch.h"
25d14b15b5SJeffrey Hugo #include "reset.h"
26d14b15b5SJeffrey Hugo #include "gdsc.h"
27d14b15b5SJeffrey Hugo 
28d14b15b5SJeffrey Hugo enum {
29d14b15b5SJeffrey Hugo 	P_XO,
30d14b15b5SJeffrey Hugo 	P_GPLL0,
31d14b15b5SJeffrey Hugo 	P_GPLL0_DIV,
32d14b15b5SJeffrey Hugo 	P_MMPLL0_OUT_EVEN,
33d14b15b5SJeffrey Hugo 	P_MMPLL1_OUT_EVEN,
34d14b15b5SJeffrey Hugo 	P_MMPLL3_OUT_EVEN,
35d14b15b5SJeffrey Hugo 	P_MMPLL4_OUT_EVEN,
36d14b15b5SJeffrey Hugo 	P_MMPLL5_OUT_EVEN,
37d14b15b5SJeffrey Hugo 	P_MMPLL6_OUT_EVEN,
38d14b15b5SJeffrey Hugo 	P_MMPLL7_OUT_EVEN,
39d14b15b5SJeffrey Hugo 	P_MMPLL10_OUT_EVEN,
40d14b15b5SJeffrey Hugo 	P_DSI0PLL,
41d14b15b5SJeffrey Hugo 	P_DSI1PLL,
42d14b15b5SJeffrey Hugo 	P_DSI0PLL_BYTE,
43d14b15b5SJeffrey Hugo 	P_DSI1PLL_BYTE,
44d14b15b5SJeffrey Hugo 	P_HDMIPLL,
45d14b15b5SJeffrey Hugo 	P_DPVCO,
46d14b15b5SJeffrey Hugo 	P_DPLINK,
47d14b15b5SJeffrey Hugo };
48d14b15b5SJeffrey Hugo 
49d14b15b5SJeffrey Hugo static const struct clk_div_table post_div_table_fabia_even[] = {
50d14b15b5SJeffrey Hugo 	{ 0x0, 1 },
51d14b15b5SJeffrey Hugo 	{ 0x1, 2 },
52d14b15b5SJeffrey Hugo 	{ 0x3, 4 },
53d14b15b5SJeffrey Hugo 	{ 0x7, 8 },
54d14b15b5SJeffrey Hugo 	{ }
55d14b15b5SJeffrey Hugo };
56d14b15b5SJeffrey Hugo 
57d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll0 = {
58d14b15b5SJeffrey Hugo 	.offset = 0xc000,
59d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
60d14b15b5SJeffrey Hugo 	.clkr = {
61d14b15b5SJeffrey Hugo 		.enable_reg = 0x1e0,
62d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
63d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
64d14b15b5SJeffrey Hugo 			.name = "mmpll0",
65d14b15b5SJeffrey Hugo 			.parent_data = &(const struct clk_parent_data){
666d26bb22SMarijn Suijten 				.fw_name = "xo"
67d14b15b5SJeffrey Hugo 			},
68d14b15b5SJeffrey Hugo 			.num_parents = 1,
69d14b15b5SJeffrey Hugo 			.ops = &clk_alpha_pll_fixed_fabia_ops,
70d14b15b5SJeffrey Hugo 		},
71d14b15b5SJeffrey Hugo 	},
72d14b15b5SJeffrey Hugo };
73d14b15b5SJeffrey Hugo 
74d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll0_out_even = {
75d14b15b5SJeffrey Hugo 	.offset = 0xc000,
76d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
77d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
78d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
79d14b15b5SJeffrey Hugo 	.width = 4,
80d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
81d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
82d14b15b5SJeffrey Hugo 		.name = "mmpll0_out_even",
83d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll0.clkr.hw },
84d14b15b5SJeffrey Hugo 		.num_parents = 1,
85d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
86d14b15b5SJeffrey Hugo 	},
87d14b15b5SJeffrey Hugo };
88d14b15b5SJeffrey Hugo 
89d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll1 = {
90d14b15b5SJeffrey Hugo 	.offset = 0xc050,
91d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
92d14b15b5SJeffrey Hugo 	.clkr = {
93d14b15b5SJeffrey Hugo 		.enable_reg = 0x1e0,
94d14b15b5SJeffrey Hugo 		.enable_mask = BIT(1),
95d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
96d14b15b5SJeffrey Hugo 			.name = "mmpll1",
97d14b15b5SJeffrey Hugo 			.parent_data = &(const struct clk_parent_data){
986d26bb22SMarijn Suijten 				.fw_name = "xo"
99d14b15b5SJeffrey Hugo 			},
100d14b15b5SJeffrey Hugo 			.num_parents = 1,
101d14b15b5SJeffrey Hugo 			.ops = &clk_alpha_pll_fixed_fabia_ops,
102d14b15b5SJeffrey Hugo 		},
103d14b15b5SJeffrey Hugo 	},
104d14b15b5SJeffrey Hugo };
105d14b15b5SJeffrey Hugo 
106d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll1_out_even = {
107d14b15b5SJeffrey Hugo 	.offset = 0xc050,
108d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
109d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
110d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
111d14b15b5SJeffrey Hugo 	.width = 4,
112d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
113d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
114d14b15b5SJeffrey Hugo 		.name = "mmpll1_out_even",
115d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll1.clkr.hw },
116d14b15b5SJeffrey Hugo 		.num_parents = 1,
117d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
118d14b15b5SJeffrey Hugo 	},
119d14b15b5SJeffrey Hugo };
120d14b15b5SJeffrey Hugo 
121d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll3 = {
122d14b15b5SJeffrey Hugo 	.offset = 0x0,
123d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
124d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
125d14b15b5SJeffrey Hugo 		.name = "mmpll3",
126d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
1276d26bb22SMarijn Suijten 			.fw_name = "xo"
128d14b15b5SJeffrey Hugo 		},
129d14b15b5SJeffrey Hugo 		.num_parents = 1,
130d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
131d14b15b5SJeffrey Hugo 	},
132d14b15b5SJeffrey Hugo };
133d14b15b5SJeffrey Hugo 
134d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll3_out_even = {
135d14b15b5SJeffrey Hugo 	.offset = 0x0,
136d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
137d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
138d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
139d14b15b5SJeffrey Hugo 	.width = 4,
140d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
141d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
142d14b15b5SJeffrey Hugo 		.name = "mmpll3_out_even",
143d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll3.clkr.hw },
144d14b15b5SJeffrey Hugo 		.num_parents = 1,
145d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
146d14b15b5SJeffrey Hugo 	},
147d14b15b5SJeffrey Hugo };
148d14b15b5SJeffrey Hugo 
149d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll4 = {
150d14b15b5SJeffrey Hugo 	.offset = 0x50,
151d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
152d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
153d14b15b5SJeffrey Hugo 		.name = "mmpll4",
154d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
1556d26bb22SMarijn Suijten 			.fw_name = "xo"
156d14b15b5SJeffrey Hugo 		},
157d14b15b5SJeffrey Hugo 		.num_parents = 1,
158d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
159d14b15b5SJeffrey Hugo 	},
160d14b15b5SJeffrey Hugo };
161d14b15b5SJeffrey Hugo 
162d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll4_out_even = {
163d14b15b5SJeffrey Hugo 	.offset = 0x50,
164d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
165d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
166d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
167d14b15b5SJeffrey Hugo 	.width = 4,
168d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
169d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
170d14b15b5SJeffrey Hugo 		.name = "mmpll4_out_even",
171d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll4.clkr.hw },
172d14b15b5SJeffrey Hugo 		.num_parents = 1,
173d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
174d14b15b5SJeffrey Hugo 	},
175d14b15b5SJeffrey Hugo };
176d14b15b5SJeffrey Hugo 
177d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll5 = {
178d14b15b5SJeffrey Hugo 	.offset = 0xa0,
179d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
180d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
181d14b15b5SJeffrey Hugo 		.name = "mmpll5",
182d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
1836d26bb22SMarijn Suijten 			.fw_name = "xo"
184d14b15b5SJeffrey Hugo 		},
185d14b15b5SJeffrey Hugo 		.num_parents = 1,
186d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
187d14b15b5SJeffrey Hugo 	},
188d14b15b5SJeffrey Hugo };
189d14b15b5SJeffrey Hugo 
190d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll5_out_even = {
191d14b15b5SJeffrey Hugo 	.offset = 0xa0,
192d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
193d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
194d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
195d14b15b5SJeffrey Hugo 	.width = 4,
196d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
197d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
198d14b15b5SJeffrey Hugo 		.name = "mmpll5_out_even",
199d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll5.clkr.hw },
200d14b15b5SJeffrey Hugo 		.num_parents = 1,
201d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
202d14b15b5SJeffrey Hugo 	},
203d14b15b5SJeffrey Hugo };
204d14b15b5SJeffrey Hugo 
205d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll6 = {
206d14b15b5SJeffrey Hugo 	.offset = 0xf0,
207d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
208d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
209d14b15b5SJeffrey Hugo 		.name = "mmpll6",
210d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
2116d26bb22SMarijn Suijten 			.fw_name = "xo"
212d14b15b5SJeffrey Hugo 		},
213d14b15b5SJeffrey Hugo 		.num_parents = 1,
214d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
215d14b15b5SJeffrey Hugo 	},
216d14b15b5SJeffrey Hugo };
217d14b15b5SJeffrey Hugo 
218d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll6_out_even = {
219d14b15b5SJeffrey Hugo 	.offset = 0xf0,
220d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
221d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
222d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
223d14b15b5SJeffrey Hugo 	.width = 4,
224d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
225d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
226d14b15b5SJeffrey Hugo 		.name = "mmpll6_out_even",
227d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll6.clkr.hw },
228d14b15b5SJeffrey Hugo 		.num_parents = 1,
229d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
230d14b15b5SJeffrey Hugo 	},
231d14b15b5SJeffrey Hugo };
232d14b15b5SJeffrey Hugo 
233d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll7 = {
234d14b15b5SJeffrey Hugo 	.offset = 0x140,
235d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
236d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
237d14b15b5SJeffrey Hugo 		.name = "mmpll7",
238d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
2396d26bb22SMarijn Suijten 			.fw_name = "xo"
240d14b15b5SJeffrey Hugo 		},
241d14b15b5SJeffrey Hugo 		.num_parents = 1,
242d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
243d14b15b5SJeffrey Hugo 	},
244d14b15b5SJeffrey Hugo };
245d14b15b5SJeffrey Hugo 
246d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll7_out_even = {
247d14b15b5SJeffrey Hugo 	.offset = 0x140,
248d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
249d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
250d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
251d14b15b5SJeffrey Hugo 	.width = 4,
252d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
253d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
254d14b15b5SJeffrey Hugo 		.name = "mmpll7_out_even",
255d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll7.clkr.hw },
256d14b15b5SJeffrey Hugo 		.num_parents = 1,
257d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
258d14b15b5SJeffrey Hugo 	},
259d14b15b5SJeffrey Hugo };
260d14b15b5SJeffrey Hugo 
261d14b15b5SJeffrey Hugo static struct clk_alpha_pll mmpll10 = {
262d14b15b5SJeffrey Hugo 	.offset = 0x190,
263d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
264d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
265d14b15b5SJeffrey Hugo 		.name = "mmpll10",
266d14b15b5SJeffrey Hugo 		.parent_data = &(const struct clk_parent_data){
2676d26bb22SMarijn Suijten 			.fw_name = "xo"
268d14b15b5SJeffrey Hugo 		},
269d14b15b5SJeffrey Hugo 		.num_parents = 1,
270d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_fixed_fabia_ops,
271d14b15b5SJeffrey Hugo 	},
272d14b15b5SJeffrey Hugo };
273d14b15b5SJeffrey Hugo 
274d14b15b5SJeffrey Hugo static struct clk_alpha_pll_postdiv mmpll10_out_even = {
275d14b15b5SJeffrey Hugo 	.offset = 0x190,
276d14b15b5SJeffrey Hugo 	.post_div_shift = 8,
277d14b15b5SJeffrey Hugo 	.post_div_table = post_div_table_fabia_even,
278d14b15b5SJeffrey Hugo 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
279d14b15b5SJeffrey Hugo 	.width = 4,
280d14b15b5SJeffrey Hugo 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
281d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
282d14b15b5SJeffrey Hugo 		.name = "mmpll10_out_even",
283d14b15b5SJeffrey Hugo 		.parent_hws = (const struct clk_hw *[]){ &mmpll10.clkr.hw },
284d14b15b5SJeffrey Hugo 		.num_parents = 1,
285d14b15b5SJeffrey Hugo 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
286d14b15b5SJeffrey Hugo 	},
287d14b15b5SJeffrey Hugo };
288d14b15b5SJeffrey Hugo 
289d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_hdmi_map[] = {
290d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
291d14b15b5SJeffrey Hugo 	{ P_HDMIPLL, 1 },
292d14b15b5SJeffrey Hugo };
293d14b15b5SJeffrey Hugo 
294d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_hdmi[] = {
2956d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
2966d26bb22SMarijn Suijten 	{ .fw_name = "hdmipll" },
297d14b15b5SJeffrey Hugo };
298d14b15b5SJeffrey Hugo 
299d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_dsi0pll_dsi1pll_map[] = {
300d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
301d14b15b5SJeffrey Hugo 	{ P_DSI0PLL, 1 },
302d14b15b5SJeffrey Hugo 	{ P_DSI1PLL, 2 },
303d14b15b5SJeffrey Hugo };
304d14b15b5SJeffrey Hugo 
305d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_dsi0pll_dsi1pll[] = {
3066d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
3076d26bb22SMarijn Suijten 	{ .fw_name = "dsi0dsi" },
3086d26bb22SMarijn Suijten 	{ .fw_name = "dsi1dsi" },
309d14b15b5SJeffrey Hugo };
310d14b15b5SJeffrey Hugo 
311d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_dsibyte_map[] = {
312d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
313d14b15b5SJeffrey Hugo 	{ P_DSI0PLL_BYTE, 1 },
314d14b15b5SJeffrey Hugo 	{ P_DSI1PLL_BYTE, 2 },
315d14b15b5SJeffrey Hugo };
316d14b15b5SJeffrey Hugo 
317d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_dsibyte[] = {
3186d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
3196d26bb22SMarijn Suijten 	{ .fw_name = "dsi0byte" },
3206d26bb22SMarijn Suijten 	{ .fw_name = "dsi1byte" },
321d14b15b5SJeffrey Hugo };
322d14b15b5SJeffrey Hugo 
323d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_dp_map[] = {
324d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
325d14b15b5SJeffrey Hugo 	{ P_DPLINK, 1 },
326d14b15b5SJeffrey Hugo 	{ P_DPVCO, 2 },
327d14b15b5SJeffrey Hugo };
328d14b15b5SJeffrey Hugo 
329d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_dp[] = {
3306d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
3316d26bb22SMarijn Suijten 	{ .fw_name = "dplink" },
3326d26bb22SMarijn Suijten 	{ .fw_name = "dpvco" },
333d14b15b5SJeffrey Hugo };
334d14b15b5SJeffrey Hugo 
335d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_gpll0_gpll0_div_map[] = {
336d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
337d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
338d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
339d14b15b5SJeffrey Hugo };
340d14b15b5SJeffrey Hugo 
341d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_gpll0_gpll0_div[] = {
3426d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
3436d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
344*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
345d14b15b5SJeffrey Hugo };
346d14b15b5SJeffrey Hugo 
347d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_gpll0_gpll0_div_map[] = {
348d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
349d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
350d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
351d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
352d14b15b5SJeffrey Hugo };
353d14b15b5SJeffrey Hugo 
354d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_gpll0_gpll0_div[] = {
3556d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
356d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
3576d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
358*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
359d14b15b5SJeffrey Hugo };
360d14b15b5SJeffrey Hugo 
361d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map[] = {
362d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
363d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
364d14b15b5SJeffrey Hugo 	{ P_MMPLL1_OUT_EVEN, 2 },
365d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
366d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
367d14b15b5SJeffrey Hugo };
368d14b15b5SJeffrey Hugo 
369d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div[] = {
3706d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
371d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
372d14b15b5SJeffrey Hugo 	{ .hw = &mmpll1_out_even.clkr.hw },
3736d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
374*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
375d14b15b5SJeffrey Hugo };
376d14b15b5SJeffrey Hugo 
377d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map[] = {
378d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
379d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
380d14b15b5SJeffrey Hugo 	{ P_MMPLL5_OUT_EVEN, 2 },
381d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
382d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
383d14b15b5SJeffrey Hugo };
384d14b15b5SJeffrey Hugo 
385d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div[] = {
3866d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
387d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
388d14b15b5SJeffrey Hugo 	{ .hw = &mmpll5_out_even.clkr.hw },
3896d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
390*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
391d14b15b5SJeffrey Hugo };
392d14b15b5SJeffrey Hugo 
393d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map[] = {
394d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
395d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
396d14b15b5SJeffrey Hugo 	{ P_MMPLL3_OUT_EVEN, 3 },
397d14b15b5SJeffrey Hugo 	{ P_MMPLL6_OUT_EVEN, 4 },
398d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
399d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
400d14b15b5SJeffrey Hugo };
401d14b15b5SJeffrey Hugo 
402d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div[] = {
4036d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
404d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
405d14b15b5SJeffrey Hugo 	{ .hw = &mmpll3_out_even.clkr.hw },
406d14b15b5SJeffrey Hugo 	{ .hw = &mmpll6_out_even.clkr.hw },
4076d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
408*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
409d14b15b5SJeffrey Hugo };
410d14b15b5SJeffrey Hugo 
411d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map[] = {
412d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
413d14b15b5SJeffrey Hugo 	{ P_MMPLL4_OUT_EVEN, 1 },
414d14b15b5SJeffrey Hugo 	{ P_MMPLL7_OUT_EVEN, 2 },
415d14b15b5SJeffrey Hugo 	{ P_MMPLL10_OUT_EVEN, 3 },
416d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
417d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
418d14b15b5SJeffrey Hugo };
419d14b15b5SJeffrey Hugo 
420d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div[] = {
4216d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
422d14b15b5SJeffrey Hugo 	{ .hw = &mmpll4_out_even.clkr.hw },
423d14b15b5SJeffrey Hugo 	{ .hw = &mmpll7_out_even.clkr.hw },
424d14b15b5SJeffrey Hugo 	{ .hw = &mmpll10_out_even.clkr.hw },
4256d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
426*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
427d14b15b5SJeffrey Hugo };
428d14b15b5SJeffrey Hugo 
429d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div_map[] = {
430d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
431d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
432d14b15b5SJeffrey Hugo 	{ P_MMPLL7_OUT_EVEN, 2 },
433d14b15b5SJeffrey Hugo 	{ P_MMPLL10_OUT_EVEN, 3 },
434d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
435d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
436d14b15b5SJeffrey Hugo };
437d14b15b5SJeffrey Hugo 
438d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div[] = {
4396d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
440d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
441d14b15b5SJeffrey Hugo 	{ .hw = &mmpll7_out_even.clkr.hw },
442d14b15b5SJeffrey Hugo 	{ .hw = &mmpll10_out_even.clkr.hw },
4436d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
444*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
445d14b15b5SJeffrey Hugo };
446d14b15b5SJeffrey Hugo 
447d14b15b5SJeffrey Hugo static const struct parent_map mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map[] = {
448d14b15b5SJeffrey Hugo 	{ P_XO, 0 },
449d14b15b5SJeffrey Hugo 	{ P_MMPLL0_OUT_EVEN, 1 },
450d14b15b5SJeffrey Hugo 	{ P_MMPLL4_OUT_EVEN, 2 },
451d14b15b5SJeffrey Hugo 	{ P_MMPLL7_OUT_EVEN, 3 },
452d14b15b5SJeffrey Hugo 	{ P_MMPLL10_OUT_EVEN, 4 },
453d14b15b5SJeffrey Hugo 	{ P_GPLL0, 5 },
454d14b15b5SJeffrey Hugo 	{ P_GPLL0_DIV, 6 },
455d14b15b5SJeffrey Hugo };
456d14b15b5SJeffrey Hugo 
457d14b15b5SJeffrey Hugo static const struct clk_parent_data mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div[] = {
4586d26bb22SMarijn Suijten 	{ .fw_name = "xo" },
459d14b15b5SJeffrey Hugo 	{ .hw = &mmpll0_out_even.clkr.hw },
460d14b15b5SJeffrey Hugo 	{ .hw = &mmpll4_out_even.clkr.hw },
461d14b15b5SJeffrey Hugo 	{ .hw = &mmpll7_out_even.clkr.hw },
462d14b15b5SJeffrey Hugo 	{ .hw = &mmpll10_out_even.clkr.hw },
4636d26bb22SMarijn Suijten 	{ .fw_name = "gpll0" },
464*932d8c56SKonrad Dybcio 	{ .fw_name = "gpll0_div", .name = "gcc_mmss_gpll0_div_clk" },
465d14b15b5SJeffrey Hugo };
466d14b15b5SJeffrey Hugo 
467d14b15b5SJeffrey Hugo static struct clk_rcg2 byte0_clk_src = {
468d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2120,
469d14b15b5SJeffrey Hugo 	.hid_width = 5,
470d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsibyte_map,
471d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
472d14b15b5SJeffrey Hugo 		.name = "byte0_clk_src",
473d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsibyte,
4749ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsibyte),
475d14b15b5SJeffrey Hugo 		.ops = &clk_byte2_ops,
476d14b15b5SJeffrey Hugo 		.flags = CLK_SET_RATE_PARENT,
477d14b15b5SJeffrey Hugo 	},
478d14b15b5SJeffrey Hugo };
479d14b15b5SJeffrey Hugo 
480d14b15b5SJeffrey Hugo static struct clk_rcg2 byte1_clk_src = {
481d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2140,
482d14b15b5SJeffrey Hugo 	.hid_width = 5,
483d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsibyte_map,
484d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
485d14b15b5SJeffrey Hugo 		.name = "byte1_clk_src",
486d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsibyte,
4879ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsibyte),
488d14b15b5SJeffrey Hugo 		.ops = &clk_byte2_ops,
489d14b15b5SJeffrey Hugo 		.flags = CLK_SET_RATE_PARENT,
490d14b15b5SJeffrey Hugo 	},
491d14b15b5SJeffrey Hugo };
492d14b15b5SJeffrey Hugo 
493d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_cci_clk_src[] = {
494d14b15b5SJeffrey Hugo 	F(37500000, P_GPLL0, 16, 0, 0),
495d14b15b5SJeffrey Hugo 	F(50000000, P_GPLL0, 12, 0, 0),
496d14b15b5SJeffrey Hugo 	F(100000000, P_GPLL0, 6, 0, 0),
497d14b15b5SJeffrey Hugo 	{ }
498d14b15b5SJeffrey Hugo };
499d14b15b5SJeffrey Hugo 
500d14b15b5SJeffrey Hugo static struct clk_rcg2 cci_clk_src = {
501d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3300,
502d14b15b5SJeffrey Hugo 	.hid_width = 5,
503d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div_map,
504d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_cci_clk_src,
505d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
506d14b15b5SJeffrey Hugo 		.name = "cci_clk_src",
507d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div,
5089ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div),
509d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
510d14b15b5SJeffrey Hugo 	},
511d14b15b5SJeffrey Hugo };
512d14b15b5SJeffrey Hugo 
513d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_cpp_clk_src[] = {
514d14b15b5SJeffrey Hugo 	F(100000000, P_GPLL0, 6, 0, 0),
515d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
516d14b15b5SJeffrey Hugo 	F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0),
517d14b15b5SJeffrey Hugo 	F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0),
518d14b15b5SJeffrey Hugo 	F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0),
519d14b15b5SJeffrey Hugo 	F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0),
520d14b15b5SJeffrey Hugo 	F(600000000, P_GPLL0, 1, 0, 0),
521d14b15b5SJeffrey Hugo 	{ }
522d14b15b5SJeffrey Hugo };
523d14b15b5SJeffrey Hugo 
524d14b15b5SJeffrey Hugo static struct clk_rcg2 cpp_clk_src = {
525d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3640,
526d14b15b5SJeffrey Hugo 	.hid_width = 5,
527d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
528d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_cpp_clk_src,
529d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
530d14b15b5SJeffrey Hugo 		.name = "cpp_clk_src",
531d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
5329ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
533d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
534d14b15b5SJeffrey Hugo 	},
535d14b15b5SJeffrey Hugo };
536d14b15b5SJeffrey Hugo 
537d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_csi_clk_src[] = {
538d14b15b5SJeffrey Hugo 	F(164571429, P_MMPLL10_OUT_EVEN, 3.5, 0, 0),
539d14b15b5SJeffrey Hugo 	F(256000000, P_MMPLL4_OUT_EVEN, 3, 0, 0),
540d14b15b5SJeffrey Hugo 	F(274290000, P_MMPLL7_OUT_EVEN, 3.5, 0, 0),
541d14b15b5SJeffrey Hugo 	F(300000000, P_GPLL0, 2, 0, 0),
542d14b15b5SJeffrey Hugo 	F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0),
543d14b15b5SJeffrey Hugo 	F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0),
544d14b15b5SJeffrey Hugo 	{ }
545d14b15b5SJeffrey Hugo };
546d14b15b5SJeffrey Hugo 
547d14b15b5SJeffrey Hugo static struct clk_rcg2 csi0_clk_src = {
548d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3090,
549d14b15b5SJeffrey Hugo 	.hid_width = 5,
550d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
551d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csi_clk_src,
552d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
553d14b15b5SJeffrey Hugo 		.name = "csi0_clk_src",
554d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
5559ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
556d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
557d14b15b5SJeffrey Hugo 	},
558d14b15b5SJeffrey Hugo };
559d14b15b5SJeffrey Hugo 
560d14b15b5SJeffrey Hugo static struct clk_rcg2 csi1_clk_src = {
561d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3100,
562d14b15b5SJeffrey Hugo 	.hid_width = 5,
563d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
564d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csi_clk_src,
565d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
566d14b15b5SJeffrey Hugo 		.name = "csi1_clk_src",
567d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
5689ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
569d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
570d14b15b5SJeffrey Hugo 	},
571d14b15b5SJeffrey Hugo };
572d14b15b5SJeffrey Hugo 
573d14b15b5SJeffrey Hugo static struct clk_rcg2 csi2_clk_src = {
574d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3160,
575d14b15b5SJeffrey Hugo 	.hid_width = 5,
576d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
577d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csi_clk_src,
578d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
579d14b15b5SJeffrey Hugo 		.name = "csi2_clk_src",
580d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
5819ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
582d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
583d14b15b5SJeffrey Hugo 	},
584d14b15b5SJeffrey Hugo };
585d14b15b5SJeffrey Hugo 
586d14b15b5SJeffrey Hugo static struct clk_rcg2 csi3_clk_src = {
587d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x31c0,
588d14b15b5SJeffrey Hugo 	.hid_width = 5,
589d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
590d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csi_clk_src,
591d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
592d14b15b5SJeffrey Hugo 		.name = "csi3_clk_src",
593d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
5949ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
595d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
596d14b15b5SJeffrey Hugo 	},
597d14b15b5SJeffrey Hugo };
598d14b15b5SJeffrey Hugo 
599d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_csiphy_clk_src[] = {
600d14b15b5SJeffrey Hugo 	F(164571429, P_MMPLL10_OUT_EVEN, 3.5, 0, 0),
601d14b15b5SJeffrey Hugo 	F(256000000, P_MMPLL4_OUT_EVEN, 3, 0, 0),
602d14b15b5SJeffrey Hugo 	F(274290000, P_MMPLL7_OUT_EVEN, 3.5, 0, 0),
603d14b15b5SJeffrey Hugo 	F(300000000, P_GPLL0, 2, 0, 0),
604d14b15b5SJeffrey Hugo 	F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0),
605d14b15b5SJeffrey Hugo 	{ }
606d14b15b5SJeffrey Hugo };
607d14b15b5SJeffrey Hugo 
608d14b15b5SJeffrey Hugo static struct clk_rcg2 csiphy_clk_src = {
609d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3800,
610d14b15b5SJeffrey Hugo 	.hid_width = 5,
611d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
612d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csiphy_clk_src,
613d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
614d14b15b5SJeffrey Hugo 		.name = "csiphy_clk_src",
615d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
6169ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
617d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
618d14b15b5SJeffrey Hugo 	},
619d14b15b5SJeffrey Hugo };
620d14b15b5SJeffrey Hugo 
621d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_csiphytimer_clk_src[] = {
622d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
623d14b15b5SJeffrey Hugo 	F(269333333, P_MMPLL0_OUT_EVEN, 3, 0, 0),
624d14b15b5SJeffrey Hugo 	{ }
625d14b15b5SJeffrey Hugo };
626d14b15b5SJeffrey Hugo 
627d14b15b5SJeffrey Hugo static struct clk_rcg2 csi0phytimer_clk_src = {
628d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3000,
629d14b15b5SJeffrey Hugo 	.hid_width = 5,
630d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
631d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csiphytimer_clk_src,
632d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
633d14b15b5SJeffrey Hugo 		.name = "csi0phytimer_clk_src",
634d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
6359ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
636d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
637d14b15b5SJeffrey Hugo 	},
638d14b15b5SJeffrey Hugo };
639d14b15b5SJeffrey Hugo 
640d14b15b5SJeffrey Hugo static struct clk_rcg2 csi1phytimer_clk_src = {
641d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3030,
642d14b15b5SJeffrey Hugo 	.hid_width = 5,
643d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
644d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csiphytimer_clk_src,
645d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
646d14b15b5SJeffrey Hugo 		.name = "csi1phytimer_clk_src",
647d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
6489ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
649d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
650d14b15b5SJeffrey Hugo 	},
651d14b15b5SJeffrey Hugo };
652d14b15b5SJeffrey Hugo 
653d14b15b5SJeffrey Hugo static struct clk_rcg2 csi2phytimer_clk_src = {
654d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3060,
655d14b15b5SJeffrey Hugo 	.hid_width = 5,
656d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
657d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_csiphytimer_clk_src,
658d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
659d14b15b5SJeffrey Hugo 		.name = "csi2phytimer_clk_src",
660d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
6619ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
662d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
663d14b15b5SJeffrey Hugo 	},
664d14b15b5SJeffrey Hugo };
665d14b15b5SJeffrey Hugo 
666d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_dp_aux_clk_src[] = {
667d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
668d14b15b5SJeffrey Hugo 	{ }
669d14b15b5SJeffrey Hugo };
670d14b15b5SJeffrey Hugo 
671d14b15b5SJeffrey Hugo static struct clk_rcg2 dp_aux_clk_src = {
672d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2260,
673d14b15b5SJeffrey Hugo 	.hid_width = 5,
674d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_gpll0_gpll0_div_map,
675d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_dp_aux_clk_src,
676d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
677d14b15b5SJeffrey Hugo 		.name = "dp_aux_clk_src",
678d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_gpll0_gpll0_div,
6799ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_gpll0_gpll0_div),
680d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
681d14b15b5SJeffrey Hugo 	},
682d14b15b5SJeffrey Hugo };
683d14b15b5SJeffrey Hugo 
684d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_dp_crypto_clk_src[] = {
685d14b15b5SJeffrey Hugo 	F(101250, P_DPLINK, 1, 5, 16),
686d14b15b5SJeffrey Hugo 	F(168750, P_DPLINK, 1, 5, 16),
687d14b15b5SJeffrey Hugo 	F(337500, P_DPLINK, 1, 5, 16),
688d14b15b5SJeffrey Hugo 	{ }
689d14b15b5SJeffrey Hugo };
690d14b15b5SJeffrey Hugo 
691d14b15b5SJeffrey Hugo static struct clk_rcg2 dp_crypto_clk_src = {
692d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2220,
693d14b15b5SJeffrey Hugo 	.hid_width = 5,
694d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dp_map,
695d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_dp_crypto_clk_src,
696d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
697d14b15b5SJeffrey Hugo 		.name = "dp_crypto_clk_src",
698d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dp,
6999ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dp),
700d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
701d14b15b5SJeffrey Hugo 	},
702d14b15b5SJeffrey Hugo };
703d14b15b5SJeffrey Hugo 
704d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_dp_link_clk_src[] = {
705d14b15b5SJeffrey Hugo 	F(162000, P_DPLINK, 2, 0, 0),
706d14b15b5SJeffrey Hugo 	F(270000, P_DPLINK, 2, 0, 0),
707d14b15b5SJeffrey Hugo 	F(540000, P_DPLINK, 2, 0, 0),
708d14b15b5SJeffrey Hugo 	{ }
709d14b15b5SJeffrey Hugo };
710d14b15b5SJeffrey Hugo 
711d14b15b5SJeffrey Hugo static struct clk_rcg2 dp_link_clk_src = {
712d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2200,
713d14b15b5SJeffrey Hugo 	.hid_width = 5,
714d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dp_map,
715d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_dp_link_clk_src,
716d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
717d14b15b5SJeffrey Hugo 		.name = "dp_link_clk_src",
718d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dp,
7199ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dp),
720d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
721d14b15b5SJeffrey Hugo 	},
722d14b15b5SJeffrey Hugo };
723d14b15b5SJeffrey Hugo 
724d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_dp_pixel_clk_src[] = {
725d14b15b5SJeffrey Hugo 	F(154000000, P_DPVCO, 1, 0, 0),
726d14b15b5SJeffrey Hugo 	F(337500000, P_DPVCO, 2, 0, 0),
727d14b15b5SJeffrey Hugo 	F(675000000, P_DPVCO, 2, 0, 0),
728d14b15b5SJeffrey Hugo 	{ }
729d14b15b5SJeffrey Hugo };
730d14b15b5SJeffrey Hugo 
731d14b15b5SJeffrey Hugo static struct clk_rcg2 dp_pixel_clk_src = {
732d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2240,
733d14b15b5SJeffrey Hugo 	.hid_width = 5,
734d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dp_map,
735d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_dp_pixel_clk_src,
736d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
737d14b15b5SJeffrey Hugo 		.name = "dp_pixel_clk_src",
738d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dp,
7399ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dp),
740d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
741d14b15b5SJeffrey Hugo 	},
742d14b15b5SJeffrey Hugo };
743d14b15b5SJeffrey Hugo 
744d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_esc_clk_src[] = {
745d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
746d14b15b5SJeffrey Hugo 	{ }
747d14b15b5SJeffrey Hugo };
748d14b15b5SJeffrey Hugo 
749d14b15b5SJeffrey Hugo static struct clk_rcg2 esc0_clk_src = {
750d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2160,
751d14b15b5SJeffrey Hugo 	.hid_width = 5,
752d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsibyte_map,
753d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_esc_clk_src,
754d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
755d14b15b5SJeffrey Hugo 		.name = "esc0_clk_src",
756d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsibyte,
7579ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsibyte),
758d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
759d14b15b5SJeffrey Hugo 	},
760d14b15b5SJeffrey Hugo };
761d14b15b5SJeffrey Hugo 
762d14b15b5SJeffrey Hugo static struct clk_rcg2 esc1_clk_src = {
763d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2180,
764d14b15b5SJeffrey Hugo 	.hid_width = 5,
765d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsibyte_map,
766d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_esc_clk_src,
767d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
768d14b15b5SJeffrey Hugo 		.name = "esc1_clk_src",
769d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsibyte,
7709ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsibyte),
771d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
772d14b15b5SJeffrey Hugo 	},
773d14b15b5SJeffrey Hugo };
774d14b15b5SJeffrey Hugo 
775d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_extpclk_clk_src[] = {
776d14b15b5SJeffrey Hugo 	{ .src = P_HDMIPLL },
777d14b15b5SJeffrey Hugo 	{ }
778d14b15b5SJeffrey Hugo };
779d14b15b5SJeffrey Hugo 
780d14b15b5SJeffrey Hugo static struct clk_rcg2 extpclk_clk_src = {
781d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2060,
782d14b15b5SJeffrey Hugo 	.hid_width = 5,
783d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_hdmi_map,
784d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_extpclk_clk_src,
785d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
786d14b15b5SJeffrey Hugo 		.name = "extpclk_clk_src",
787d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_hdmi,
7889ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_hdmi),
789d14b15b5SJeffrey Hugo 		.ops = &clk_byte_ops,
790d14b15b5SJeffrey Hugo 		.flags = CLK_SET_RATE_PARENT,
791d14b15b5SJeffrey Hugo 	},
792d14b15b5SJeffrey Hugo };
793d14b15b5SJeffrey Hugo 
794d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_fd_core_clk_src[] = {
795d14b15b5SJeffrey Hugo 	F(100000000, P_GPLL0, 6, 0, 0),
796d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
797d14b15b5SJeffrey Hugo 	F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0),
798d14b15b5SJeffrey Hugo 	F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0),
799d14b15b5SJeffrey Hugo 	F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0),
800d14b15b5SJeffrey Hugo 	{ }
801d14b15b5SJeffrey Hugo };
802d14b15b5SJeffrey Hugo 
803d14b15b5SJeffrey Hugo static struct clk_rcg2 fd_core_clk_src = {
804d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3b00,
805d14b15b5SJeffrey Hugo 	.hid_width = 5,
806d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
807d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_fd_core_clk_src,
808d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
809d14b15b5SJeffrey Hugo 		.name = "fd_core_clk_src",
810d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
8119ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
812d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
813d14b15b5SJeffrey Hugo 	},
814d14b15b5SJeffrey Hugo };
815d14b15b5SJeffrey Hugo 
816d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_hdmi_clk_src[] = {
817d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
818d14b15b5SJeffrey Hugo 	{ }
819d14b15b5SJeffrey Hugo };
820d14b15b5SJeffrey Hugo 
821d14b15b5SJeffrey Hugo static struct clk_rcg2 hdmi_clk_src = {
822d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2100,
823d14b15b5SJeffrey Hugo 	.hid_width = 5,
824d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_gpll0_gpll0_div_map,
825d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_hdmi_clk_src,
826d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
827d14b15b5SJeffrey Hugo 		.name = "hdmi_clk_src",
828d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_gpll0_gpll0_div,
8299ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_gpll0_gpll0_div),
830d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
831d14b15b5SJeffrey Hugo 	},
832d14b15b5SJeffrey Hugo };
833d14b15b5SJeffrey Hugo 
834d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_jpeg0_clk_src[] = {
835d14b15b5SJeffrey Hugo 	F(75000000, P_GPLL0, 8, 0, 0),
836d14b15b5SJeffrey Hugo 	F(150000000, P_GPLL0, 4, 0, 0),
837d14b15b5SJeffrey Hugo 	F(320000000, P_MMPLL7_OUT_EVEN, 3, 0, 0),
838d14b15b5SJeffrey Hugo 	F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0),
839d14b15b5SJeffrey Hugo 	{ }
840d14b15b5SJeffrey Hugo };
841d14b15b5SJeffrey Hugo 
842d14b15b5SJeffrey Hugo static struct clk_rcg2 jpeg0_clk_src = {
843d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3500,
844d14b15b5SJeffrey Hugo 	.hid_width = 5,
845d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
846d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_jpeg0_clk_src,
847d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
848d14b15b5SJeffrey Hugo 		.name = "jpeg0_clk_src",
849d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
8509ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
851d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
852d14b15b5SJeffrey Hugo 	},
853d14b15b5SJeffrey Hugo };
854d14b15b5SJeffrey Hugo 
855d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_maxi_clk_src[] = {
856d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
857d14b15b5SJeffrey Hugo 	F(75000000, P_GPLL0_DIV, 4, 0, 0),
858d14b15b5SJeffrey Hugo 	F(171428571, P_GPLL0, 3.5, 0, 0),
859d14b15b5SJeffrey Hugo 	F(323200000, P_MMPLL0_OUT_EVEN, 2.5, 0, 0),
860d14b15b5SJeffrey Hugo 	F(406000000, P_MMPLL1_OUT_EVEN, 2, 0, 0),
861d14b15b5SJeffrey Hugo 	{ }
862d14b15b5SJeffrey Hugo };
863d14b15b5SJeffrey Hugo 
864d14b15b5SJeffrey Hugo static struct clk_rcg2 maxi_clk_src = {
865d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0xf020,
866d14b15b5SJeffrey Hugo 	.hid_width = 5,
867d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map,
868d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_maxi_clk_src,
869d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
870d14b15b5SJeffrey Hugo 		.name = "maxi_clk_src",
871d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div,
8729ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div),
873d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
874d14b15b5SJeffrey Hugo 	},
875d14b15b5SJeffrey Hugo };
876d14b15b5SJeffrey Hugo 
877d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_mclk_clk_src[] = {
878d14b15b5SJeffrey Hugo 	F(4800000, P_XO, 4, 0, 0),
879d14b15b5SJeffrey Hugo 	F(6000000, P_GPLL0_DIV, 10, 1, 5),
880d14b15b5SJeffrey Hugo 	F(8000000, P_GPLL0_DIV, 1, 2, 75),
881d14b15b5SJeffrey Hugo 	F(9600000, P_XO, 2, 0, 0),
882d14b15b5SJeffrey Hugo 	F(16666667, P_GPLL0_DIV, 2, 1, 9),
883d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
884d14b15b5SJeffrey Hugo 	F(24000000, P_GPLL0_DIV, 1, 2, 25),
885d14b15b5SJeffrey Hugo 	F(33333333, P_GPLL0_DIV, 1, 2, 9),
886d14b15b5SJeffrey Hugo 	F(48000000, P_GPLL0, 1, 2, 25),
887d14b15b5SJeffrey Hugo 	F(66666667, P_GPLL0, 1, 2, 9),
888d14b15b5SJeffrey Hugo 	{ }
889d14b15b5SJeffrey Hugo };
890d14b15b5SJeffrey Hugo 
891d14b15b5SJeffrey Hugo static struct clk_rcg2 mclk0_clk_src = {
892d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3360,
893d14b15b5SJeffrey Hugo 	.hid_width = 5,
894d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
895d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_mclk_clk_src,
896d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
897d14b15b5SJeffrey Hugo 		.name = "mclk0_clk_src",
898d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
8999ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
900d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
901d14b15b5SJeffrey Hugo 	},
902d14b15b5SJeffrey Hugo };
903d14b15b5SJeffrey Hugo 
904d14b15b5SJeffrey Hugo static struct clk_rcg2 mclk1_clk_src = {
905d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3390,
906d14b15b5SJeffrey Hugo 	.hid_width = 5,
907d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
908d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_mclk_clk_src,
909d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
910d14b15b5SJeffrey Hugo 		.name = "mclk1_clk_src",
911d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
9129ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
913d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
914d14b15b5SJeffrey Hugo 	},
915d14b15b5SJeffrey Hugo };
916d14b15b5SJeffrey Hugo 
917d14b15b5SJeffrey Hugo static struct clk_rcg2 mclk2_clk_src = {
918d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x33c0,
919d14b15b5SJeffrey Hugo 	.hid_width = 5,
920d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
921d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_mclk_clk_src,
922d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
923d14b15b5SJeffrey Hugo 		.name = "mclk2_clk_src",
924d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
9259ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
926d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
927d14b15b5SJeffrey Hugo 	},
928d14b15b5SJeffrey Hugo };
929d14b15b5SJeffrey Hugo 
930d14b15b5SJeffrey Hugo static struct clk_rcg2 mclk3_clk_src = {
931d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x33f0,
932d14b15b5SJeffrey Hugo 	.hid_width = 5,
933d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
934d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_mclk_clk_src,
935d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
936d14b15b5SJeffrey Hugo 		.name = "mclk3_clk_src",
937d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
9389ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
939d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
940d14b15b5SJeffrey Hugo 	},
941d14b15b5SJeffrey Hugo };
942d14b15b5SJeffrey Hugo 
943d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_mdp_clk_src[] = {
944d14b15b5SJeffrey Hugo 	F(85714286, P_GPLL0, 7, 0, 0),
945d14b15b5SJeffrey Hugo 	F(100000000, P_GPLL0, 6, 0, 0),
946d14b15b5SJeffrey Hugo 	F(150000000, P_GPLL0, 4, 0, 0),
947d14b15b5SJeffrey Hugo 	F(171428571, P_GPLL0, 3.5, 0, 0),
948d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
949d14b15b5SJeffrey Hugo 	F(275000000, P_MMPLL5_OUT_EVEN, 3, 0, 0),
950d14b15b5SJeffrey Hugo 	F(300000000, P_GPLL0, 2, 0, 0),
951d14b15b5SJeffrey Hugo 	F(330000000, P_MMPLL5_OUT_EVEN, 2.5, 0, 0),
952d14b15b5SJeffrey Hugo 	F(412500000, P_MMPLL5_OUT_EVEN, 2, 0, 0),
953d14b15b5SJeffrey Hugo 	{ }
954d14b15b5SJeffrey Hugo };
955d14b15b5SJeffrey Hugo 
956d14b15b5SJeffrey Hugo static struct clk_rcg2 mdp_clk_src = {
957d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2040,
958d14b15b5SJeffrey Hugo 	.hid_width = 5,
959d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map,
960d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_mdp_clk_src,
961d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
962d14b15b5SJeffrey Hugo 		.name = "mdp_clk_src",
963d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div,
9649ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div),
965d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
966d14b15b5SJeffrey Hugo 	},
967d14b15b5SJeffrey Hugo };
968d14b15b5SJeffrey Hugo 
969d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_vsync_clk_src[] = {
970d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
971d14b15b5SJeffrey Hugo 	{ }
972d14b15b5SJeffrey Hugo };
973d14b15b5SJeffrey Hugo 
974d14b15b5SJeffrey Hugo static struct clk_rcg2 vsync_clk_src = {
975d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2080,
976d14b15b5SJeffrey Hugo 	.hid_width = 5,
977d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_gpll0_gpll0_div_map,
978d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_vsync_clk_src,
979d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
980d14b15b5SJeffrey Hugo 		.name = "vsync_clk_src",
981d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_gpll0_gpll0_div,
9829ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_gpll0_gpll0_div),
983d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
984d14b15b5SJeffrey Hugo 	},
985d14b15b5SJeffrey Hugo };
986d14b15b5SJeffrey Hugo 
987d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_ahb_clk_src[] = {
988d14b15b5SJeffrey Hugo 	F(19200000, P_XO, 1, 0, 0),
989d14b15b5SJeffrey Hugo 	F(40000000, P_GPLL0, 15, 0, 0),
990d14b15b5SJeffrey Hugo 	F(80800000, P_MMPLL0_OUT_EVEN, 10, 0, 0),
991d14b15b5SJeffrey Hugo 	{ }
992d14b15b5SJeffrey Hugo };
993d14b15b5SJeffrey Hugo 
994d14b15b5SJeffrey Hugo static struct clk_rcg2 ahb_clk_src = {
995d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x5000,
996d14b15b5SJeffrey Hugo 	.hid_width = 5,
997d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_gpll0_gpll0_div_map,
998d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_ahb_clk_src,
999d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1000d14b15b5SJeffrey Hugo 		.name = "ahb_clk_src",
1001d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_gpll0_gpll0_div,
10029ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_gpll0_gpll0_div),
1003d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1004d14b15b5SJeffrey Hugo 	},
1005d14b15b5SJeffrey Hugo };
1006d14b15b5SJeffrey Hugo 
1007d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_axi_clk_src[] = {
1008d14b15b5SJeffrey Hugo 	F(75000000, P_GPLL0, 8, 0, 0),
1009d14b15b5SJeffrey Hugo 	F(171428571, P_GPLL0, 3.5, 0, 0),
1010d14b15b5SJeffrey Hugo 	F(240000000, P_GPLL0, 2.5, 0, 0),
1011d14b15b5SJeffrey Hugo 	F(323200000, P_MMPLL0_OUT_EVEN, 2.5, 0, 0),
1012d14b15b5SJeffrey Hugo 	F(406000000, P_MMPLL0_OUT_EVEN, 2, 0, 0),
1013d14b15b5SJeffrey Hugo 	{ }
1014d14b15b5SJeffrey Hugo };
1015d14b15b5SJeffrey Hugo 
1016d14b15b5SJeffrey Hugo /* RO to linux */
1017d14b15b5SJeffrey Hugo static struct clk_rcg2 axi_clk_src = {
1018d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0xd000,
1019d14b15b5SJeffrey Hugo 	.hid_width = 5,
1020d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map,
1021d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_axi_clk_src,
1022d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1023d14b15b5SJeffrey Hugo 		.name = "axi_clk_src",
1024d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div,
10259ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div),
1026d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1027d14b15b5SJeffrey Hugo 	},
1028d14b15b5SJeffrey Hugo };
1029d14b15b5SJeffrey Hugo 
1030d14b15b5SJeffrey Hugo static struct clk_rcg2 pclk0_clk_src = {
1031d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2000,
1032d14b15b5SJeffrey Hugo 	.mnd_width = 8,
1033d14b15b5SJeffrey Hugo 	.hid_width = 5,
1034d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsi0pll_dsi1pll_map,
1035d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1036d14b15b5SJeffrey Hugo 		.name = "pclk0_clk_src",
1037d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsi0pll_dsi1pll,
10389ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsi0pll_dsi1pll),
1039d14b15b5SJeffrey Hugo 		.ops = &clk_pixel_ops,
1040d14b15b5SJeffrey Hugo 		.flags = CLK_SET_RATE_PARENT,
1041d14b15b5SJeffrey Hugo 	},
1042d14b15b5SJeffrey Hugo };
1043d14b15b5SJeffrey Hugo 
1044d14b15b5SJeffrey Hugo static struct clk_rcg2 pclk1_clk_src = {
1045d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x2020,
1046d14b15b5SJeffrey Hugo 	.mnd_width = 8,
1047d14b15b5SJeffrey Hugo 	.hid_width = 5,
1048d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_dsi0pll_dsi1pll_map,
1049d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1050d14b15b5SJeffrey Hugo 		.name = "pclk1_clk_src",
1051d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_dsi0pll_dsi1pll,
10529ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_dsi0pll_dsi1pll),
1053d14b15b5SJeffrey Hugo 		.ops = &clk_pixel_ops,
1054d14b15b5SJeffrey Hugo 		.flags = CLK_SET_RATE_PARENT,
1055d14b15b5SJeffrey Hugo 	},
1056d14b15b5SJeffrey Hugo };
1057d14b15b5SJeffrey Hugo 
1058d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_rot_clk_src[] = {
1059d14b15b5SJeffrey Hugo 	F(171428571, P_GPLL0, 3.5, 0, 0),
1060d14b15b5SJeffrey Hugo 	F(275000000, P_MMPLL5_OUT_EVEN, 3, 0, 0),
1061d14b15b5SJeffrey Hugo 	F(330000000, P_MMPLL5_OUT_EVEN, 2.5, 0, 0),
1062d14b15b5SJeffrey Hugo 	F(412500000, P_MMPLL5_OUT_EVEN, 2, 0, 0),
1063d14b15b5SJeffrey Hugo 	{ }
1064d14b15b5SJeffrey Hugo };
1065d14b15b5SJeffrey Hugo 
1066d14b15b5SJeffrey Hugo static struct clk_rcg2 rot_clk_src = {
1067d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x21a0,
1068d14b15b5SJeffrey Hugo 	.hid_width = 5,
1069d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map,
1070d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_rot_clk_src,
1071d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1072d14b15b5SJeffrey Hugo 		.name = "rot_clk_src",
1073d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div,
10749ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div),
1075d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1076d14b15b5SJeffrey Hugo 	},
1077d14b15b5SJeffrey Hugo };
1078d14b15b5SJeffrey Hugo 
1079d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_video_core_clk_src[] = {
1080d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
1081d14b15b5SJeffrey Hugo 	F(269330000, P_MMPLL0_OUT_EVEN, 3, 0, 0),
1082d14b15b5SJeffrey Hugo 	F(355200000, P_MMPLL6_OUT_EVEN, 2.5, 0, 0),
1083d14b15b5SJeffrey Hugo 	F(444000000, P_MMPLL6_OUT_EVEN, 2, 0, 0),
1084d14b15b5SJeffrey Hugo 	F(533000000, P_MMPLL3_OUT_EVEN, 2, 0, 0),
1085d14b15b5SJeffrey Hugo 	{ }
1086d14b15b5SJeffrey Hugo };
1087d14b15b5SJeffrey Hugo 
1088d14b15b5SJeffrey Hugo static struct clk_rcg2 video_core_clk_src = {
1089d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x1000,
1090d14b15b5SJeffrey Hugo 	.hid_width = 5,
1091d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map,
1092d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_video_core_clk_src,
1093d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1094d14b15b5SJeffrey Hugo 		.name = "video_core_clk_src",
1095d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div,
10969ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div),
1097d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1098d14b15b5SJeffrey Hugo 	},
1099d14b15b5SJeffrey Hugo };
1100d14b15b5SJeffrey Hugo 
1101d14b15b5SJeffrey Hugo static struct clk_rcg2 video_subcore0_clk_src = {
1102d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x1060,
1103d14b15b5SJeffrey Hugo 	.hid_width = 5,
1104d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map,
1105d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_video_core_clk_src,
1106d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1107d14b15b5SJeffrey Hugo 		.name = "video_subcore0_clk_src",
1108d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div,
11099ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div),
1110d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1111d14b15b5SJeffrey Hugo 	},
1112d14b15b5SJeffrey Hugo };
1113d14b15b5SJeffrey Hugo 
1114d14b15b5SJeffrey Hugo static struct clk_rcg2 video_subcore1_clk_src = {
1115d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x1080,
1116d14b15b5SJeffrey Hugo 	.hid_width = 5,
1117d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map,
1118d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_video_core_clk_src,
1119d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1120d14b15b5SJeffrey Hugo 		.name = "video_subcore1_clk_src",
1121d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div,
11229ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div),
1123d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1124d14b15b5SJeffrey Hugo 	},
1125d14b15b5SJeffrey Hugo };
1126d14b15b5SJeffrey Hugo 
1127d14b15b5SJeffrey Hugo static const struct freq_tbl ftbl_vfe_clk_src[] = {
1128d14b15b5SJeffrey Hugo 	F(200000000, P_GPLL0, 3, 0, 0),
1129d14b15b5SJeffrey Hugo 	F(300000000, P_GPLL0, 2, 0, 0),
1130d14b15b5SJeffrey Hugo 	F(320000000, P_MMPLL7_OUT_EVEN, 3, 0, 0),
1131d14b15b5SJeffrey Hugo 	F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0),
1132d14b15b5SJeffrey Hugo 	F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0),
1133d14b15b5SJeffrey Hugo 	F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0),
1134d14b15b5SJeffrey Hugo 	F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0),
1135d14b15b5SJeffrey Hugo 	F(600000000, P_GPLL0, 1, 0, 0),
1136d14b15b5SJeffrey Hugo 	{ }
1137d14b15b5SJeffrey Hugo };
1138d14b15b5SJeffrey Hugo 
1139d14b15b5SJeffrey Hugo static struct clk_rcg2 vfe0_clk_src = {
1140d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3600,
1141d14b15b5SJeffrey Hugo 	.hid_width = 5,
1142d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
1143d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_vfe_clk_src,
1144d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1145d14b15b5SJeffrey Hugo 		.name = "vfe0_clk_src",
1146d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
11479ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
1148d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1149d14b15b5SJeffrey Hugo 	},
1150d14b15b5SJeffrey Hugo };
1151d14b15b5SJeffrey Hugo 
1152d14b15b5SJeffrey Hugo static struct clk_rcg2 vfe1_clk_src = {
1153d14b15b5SJeffrey Hugo 	.cmd_rcgr = 0x3620,
1154d14b15b5SJeffrey Hugo 	.hid_width = 5,
1155d14b15b5SJeffrey Hugo 	.parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
1156d14b15b5SJeffrey Hugo 	.freq_tbl = ftbl_vfe_clk_src,
1157d14b15b5SJeffrey Hugo 	.clkr.hw.init = &(struct clk_init_data){
1158d14b15b5SJeffrey Hugo 		.name = "vfe1_clk_src",
1159d14b15b5SJeffrey Hugo 		.parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
11609ee049ebSMarijn Suijten 		.num_parents = ARRAY_SIZE(mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
1161d14b15b5SJeffrey Hugo 		.ops = &clk_rcg2_ops,
1162d14b15b5SJeffrey Hugo 	},
1163d14b15b5SJeffrey Hugo };
1164d14b15b5SJeffrey Hugo 
1165d14b15b5SJeffrey Hugo static struct clk_branch misc_ahb_clk = {
1166d14b15b5SJeffrey Hugo 	.halt_reg = 0x328,
1167fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_reg = 0x328,
1168fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_bit = 1,
1169d14b15b5SJeffrey Hugo 	.clkr = {
1170d14b15b5SJeffrey Hugo 		.enable_reg = 0x328,
1171d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1172d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1173d14b15b5SJeffrey Hugo 			.name = "misc_ahb_clk",
1174d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1175d14b15b5SJeffrey Hugo 			.num_parents = 1,
1176d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1177d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1178d14b15b5SJeffrey Hugo 		},
1179d14b15b5SJeffrey Hugo 	},
1180d14b15b5SJeffrey Hugo };
1181d14b15b5SJeffrey Hugo 
1182d14b15b5SJeffrey Hugo static struct clk_branch video_core_clk = {
1183d14b15b5SJeffrey Hugo 	.halt_reg = 0x1028,
1184d14b15b5SJeffrey Hugo 	.clkr = {
1185d14b15b5SJeffrey Hugo 		.enable_reg = 0x1028,
1186d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1187d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1188d14b15b5SJeffrey Hugo 			.name = "video_core_clk",
1189d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &video_core_clk_src.clkr.hw },
1190d14b15b5SJeffrey Hugo 			.num_parents = 1,
1191d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1192d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1193d14b15b5SJeffrey Hugo 		},
1194d14b15b5SJeffrey Hugo 	},
1195d14b15b5SJeffrey Hugo };
1196d14b15b5SJeffrey Hugo 
1197d14b15b5SJeffrey Hugo static struct clk_branch video_ahb_clk = {
1198d14b15b5SJeffrey Hugo 	.halt_reg = 0x1030,
1199fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_reg = 0x1030,
1200fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_bit = 1,
1201d14b15b5SJeffrey Hugo 	.clkr = {
1202d14b15b5SJeffrey Hugo 		.enable_reg = 0x1030,
1203d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1204d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1205d14b15b5SJeffrey Hugo 			.name = "video_ahb_clk",
1206d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1207d14b15b5SJeffrey Hugo 			.num_parents = 1,
1208d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1209d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1210d14b15b5SJeffrey Hugo 		},
1211d14b15b5SJeffrey Hugo 	},
1212d14b15b5SJeffrey Hugo };
1213d14b15b5SJeffrey Hugo 
1214d14b15b5SJeffrey Hugo static struct clk_branch video_axi_clk = {
1215d14b15b5SJeffrey Hugo 	.halt_reg = 0x1034,
1216d14b15b5SJeffrey Hugo 	.clkr = {
1217d14b15b5SJeffrey Hugo 		.enable_reg = 0x1034,
1218d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1219d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1220d14b15b5SJeffrey Hugo 			.name = "video_axi_clk",
1221d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
1222d14b15b5SJeffrey Hugo 			.num_parents = 1,
1223d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1224d14b15b5SJeffrey Hugo 		},
1225d14b15b5SJeffrey Hugo 	},
1226d14b15b5SJeffrey Hugo };
1227d14b15b5SJeffrey Hugo 
1228d14b15b5SJeffrey Hugo static struct clk_branch video_maxi_clk = {
1229d14b15b5SJeffrey Hugo 	.halt_reg = 0x1038,
1230d14b15b5SJeffrey Hugo 	.clkr = {
1231d14b15b5SJeffrey Hugo 		.enable_reg = 0x1038,
1232d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1233d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1234d14b15b5SJeffrey Hugo 			.name = "video_maxi_clk",
1235d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw },
1236d14b15b5SJeffrey Hugo 			.num_parents = 1,
1237d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1238d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1239d14b15b5SJeffrey Hugo 		},
1240d14b15b5SJeffrey Hugo 	},
1241d14b15b5SJeffrey Hugo };
1242d14b15b5SJeffrey Hugo 
1243d14b15b5SJeffrey Hugo static struct clk_branch video_subcore0_clk = {
1244d14b15b5SJeffrey Hugo 	.halt_reg = 0x1048,
1245d14b15b5SJeffrey Hugo 	.clkr = {
1246d14b15b5SJeffrey Hugo 		.enable_reg = 0x1048,
1247d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1248d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1249d14b15b5SJeffrey Hugo 			.name = "video_subcore0_clk",
1250d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &video_subcore0_clk_src.clkr.hw },
1251d14b15b5SJeffrey Hugo 			.num_parents = 1,
1252d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1253d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1254d14b15b5SJeffrey Hugo 		},
1255d14b15b5SJeffrey Hugo 	},
1256d14b15b5SJeffrey Hugo };
1257d14b15b5SJeffrey Hugo 
1258d14b15b5SJeffrey Hugo static struct clk_branch video_subcore1_clk = {
1259d14b15b5SJeffrey Hugo 	.halt_reg = 0x104c,
1260d14b15b5SJeffrey Hugo 	.clkr = {
1261d14b15b5SJeffrey Hugo 		.enable_reg = 0x104c,
1262d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1263d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1264d14b15b5SJeffrey Hugo 			.name = "video_subcore1_clk",
1265d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &video_subcore1_clk_src.clkr.hw },
1266d14b15b5SJeffrey Hugo 			.num_parents = 1,
1267d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1268d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1269d14b15b5SJeffrey Hugo 		},
1270d14b15b5SJeffrey Hugo 	},
1271d14b15b5SJeffrey Hugo };
1272d14b15b5SJeffrey Hugo 
1273d14b15b5SJeffrey Hugo static struct clk_branch mdss_ahb_clk = {
1274d14b15b5SJeffrey Hugo 	.halt_reg = 0x2308,
1275fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_reg = 0x2308,
1276fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_bit = 1,
1277d14b15b5SJeffrey Hugo 	.clkr = {
1278d14b15b5SJeffrey Hugo 		.enable_reg = 0x2308,
1279d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1280d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1281d14b15b5SJeffrey Hugo 			.name = "mdss_ahb_clk",
1282d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1283d14b15b5SJeffrey Hugo 			.num_parents = 1,
1284d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1285d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1286d14b15b5SJeffrey Hugo 		},
1287d14b15b5SJeffrey Hugo 	},
1288d14b15b5SJeffrey Hugo };
1289d14b15b5SJeffrey Hugo 
1290d14b15b5SJeffrey Hugo static struct clk_branch mdss_hdmi_dp_ahb_clk = {
1291d14b15b5SJeffrey Hugo 	.halt_reg = 0x230c,
1292d14b15b5SJeffrey Hugo 	.clkr = {
1293d14b15b5SJeffrey Hugo 		.enable_reg = 0x230c,
1294d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1295d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1296d14b15b5SJeffrey Hugo 			.name = "mdss_hdmi_dp_ahb_clk",
1297d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1298d14b15b5SJeffrey Hugo 			.num_parents = 1,
1299d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1300d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1301d14b15b5SJeffrey Hugo 		},
1302d14b15b5SJeffrey Hugo 	},
1303d14b15b5SJeffrey Hugo };
1304d14b15b5SJeffrey Hugo 
1305d14b15b5SJeffrey Hugo static struct clk_branch mdss_axi_clk = {
1306d14b15b5SJeffrey Hugo 	.halt_reg = 0x2310,
1307d14b15b5SJeffrey Hugo 	.clkr = {
1308d14b15b5SJeffrey Hugo 		.enable_reg = 0x2310,
1309d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1310d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1311d14b15b5SJeffrey Hugo 			.name = "mdss_axi_clk",
1312d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
1313d14b15b5SJeffrey Hugo 			.num_parents = 1,
1314d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1315d14b15b5SJeffrey Hugo 		},
1316d14b15b5SJeffrey Hugo 	},
1317d14b15b5SJeffrey Hugo };
1318d14b15b5SJeffrey Hugo 
1319d14b15b5SJeffrey Hugo static struct clk_branch mdss_pclk0_clk = {
1320d14b15b5SJeffrey Hugo 	.halt_reg = 0x2314,
1321d14b15b5SJeffrey Hugo 	.clkr = {
1322d14b15b5SJeffrey Hugo 		.enable_reg = 0x2314,
1323d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1324d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1325d14b15b5SJeffrey Hugo 			.name = "mdss_pclk0_clk",
1326d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &pclk0_clk_src.clkr.hw },
1327d14b15b5SJeffrey Hugo 			.num_parents = 1,
1328d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1329d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1330d14b15b5SJeffrey Hugo 		},
1331d14b15b5SJeffrey Hugo 	},
1332d14b15b5SJeffrey Hugo };
1333d14b15b5SJeffrey Hugo 
1334d14b15b5SJeffrey Hugo static struct clk_branch mdss_pclk1_clk = {
1335d14b15b5SJeffrey Hugo 	.halt_reg = 0x2318,
1336d14b15b5SJeffrey Hugo 	.clkr = {
1337d14b15b5SJeffrey Hugo 		.enable_reg = 0x2318,
1338d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1339d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1340d14b15b5SJeffrey Hugo 			.name = "mdss_pclk1_clk",
1341d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &pclk1_clk_src.clkr.hw },
1342d14b15b5SJeffrey Hugo 			.num_parents = 1,
1343d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1344d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1345d14b15b5SJeffrey Hugo 		},
1346d14b15b5SJeffrey Hugo 	},
1347d14b15b5SJeffrey Hugo };
1348d14b15b5SJeffrey Hugo 
1349d14b15b5SJeffrey Hugo static struct clk_branch mdss_mdp_clk = {
1350d14b15b5SJeffrey Hugo 	.halt_reg = 0x231c,
1351d14b15b5SJeffrey Hugo 	.clkr = {
1352d14b15b5SJeffrey Hugo 		.enable_reg = 0x231c,
1353d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1354d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1355d14b15b5SJeffrey Hugo 			.name = "mdss_mdp_clk",
1356d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw },
1357d14b15b5SJeffrey Hugo 			.num_parents = 1,
1358d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1359d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1360d14b15b5SJeffrey Hugo 		},
1361d14b15b5SJeffrey Hugo 	},
1362d14b15b5SJeffrey Hugo };
1363d14b15b5SJeffrey Hugo 
1364d14b15b5SJeffrey Hugo static struct clk_branch mdss_mdp_lut_clk = {
1365d14b15b5SJeffrey Hugo 	.halt_reg = 0x2320,
1366d14b15b5SJeffrey Hugo 	.clkr = {
1367d14b15b5SJeffrey Hugo 		.enable_reg = 0x2320,
1368d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1369d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1370d14b15b5SJeffrey Hugo 			.name = "mdss_mdp_lut_clk",
1371d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw },
1372d14b15b5SJeffrey Hugo 			.num_parents = 1,
1373d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1374d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1375d14b15b5SJeffrey Hugo 		},
1376d14b15b5SJeffrey Hugo 	},
1377d14b15b5SJeffrey Hugo };
1378d14b15b5SJeffrey Hugo 
1379d14b15b5SJeffrey Hugo static struct clk_branch mdss_extpclk_clk = {
1380d14b15b5SJeffrey Hugo 	.halt_reg = 0x2324,
1381d14b15b5SJeffrey Hugo 	.clkr = {
1382d14b15b5SJeffrey Hugo 		.enable_reg = 0x2324,
1383d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1384d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1385d14b15b5SJeffrey Hugo 			.name = "mdss_extpclk_clk",
1386d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &extpclk_clk_src.clkr.hw },
1387d14b15b5SJeffrey Hugo 			.num_parents = 1,
1388d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1389d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1390d14b15b5SJeffrey Hugo 		},
1391d14b15b5SJeffrey Hugo 	},
1392d14b15b5SJeffrey Hugo };
1393d14b15b5SJeffrey Hugo 
1394d14b15b5SJeffrey Hugo static struct clk_branch mdss_vsync_clk = {
1395d14b15b5SJeffrey Hugo 	.halt_reg = 0x2328,
1396d14b15b5SJeffrey Hugo 	.clkr = {
1397d14b15b5SJeffrey Hugo 		.enable_reg = 0x2328,
1398d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1399d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1400d14b15b5SJeffrey Hugo 			.name = "mdss_vsync_clk",
1401d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vsync_clk_src.clkr.hw },
1402d14b15b5SJeffrey Hugo 			.num_parents = 1,
1403d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1404d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1405d14b15b5SJeffrey Hugo 		},
1406d14b15b5SJeffrey Hugo 	},
1407d14b15b5SJeffrey Hugo };
1408d14b15b5SJeffrey Hugo 
1409d14b15b5SJeffrey Hugo static struct clk_branch mdss_hdmi_clk = {
1410d14b15b5SJeffrey Hugo 	.halt_reg = 0x2338,
1411d14b15b5SJeffrey Hugo 	.clkr = {
1412d14b15b5SJeffrey Hugo 		.enable_reg = 0x2338,
1413d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1414d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1415d14b15b5SJeffrey Hugo 			.name = "mdss_hdmi_clk",
1416d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &hdmi_clk_src.clkr.hw },
1417d14b15b5SJeffrey Hugo 			.num_parents = 1,
1418d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1419d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1420d14b15b5SJeffrey Hugo 		},
1421d14b15b5SJeffrey Hugo 	},
1422d14b15b5SJeffrey Hugo };
1423d14b15b5SJeffrey Hugo 
1424d14b15b5SJeffrey Hugo static struct clk_branch mdss_byte0_clk = {
1425d14b15b5SJeffrey Hugo 	.halt_reg = 0x233c,
1426d14b15b5SJeffrey Hugo 	.clkr = {
1427d14b15b5SJeffrey Hugo 		.enable_reg = 0x233c,
1428d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1429d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1430d14b15b5SJeffrey Hugo 			.name = "mdss_byte0_clk",
1431d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw },
1432d14b15b5SJeffrey Hugo 			.num_parents = 1,
1433d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1434d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1435d14b15b5SJeffrey Hugo 		},
1436d14b15b5SJeffrey Hugo 	},
1437d14b15b5SJeffrey Hugo };
1438d14b15b5SJeffrey Hugo 
1439d14b15b5SJeffrey Hugo static struct clk_branch mdss_byte1_clk = {
1440d14b15b5SJeffrey Hugo 	.halt_reg = 0x2340,
1441d14b15b5SJeffrey Hugo 	.clkr = {
1442d14b15b5SJeffrey Hugo 		.enable_reg = 0x2340,
1443d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1444d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1445d14b15b5SJeffrey Hugo 			.name = "mdss_byte1_clk",
1446d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw },
1447d14b15b5SJeffrey Hugo 			.num_parents = 1,
1448d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1449d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1450d14b15b5SJeffrey Hugo 		},
1451d14b15b5SJeffrey Hugo 	},
1452d14b15b5SJeffrey Hugo };
1453d14b15b5SJeffrey Hugo 
1454d14b15b5SJeffrey Hugo static struct clk_branch mdss_esc0_clk = {
1455d14b15b5SJeffrey Hugo 	.halt_reg = 0x2344,
1456d14b15b5SJeffrey Hugo 	.clkr = {
1457d14b15b5SJeffrey Hugo 		.enable_reg = 0x2344,
1458d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1459d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1460d14b15b5SJeffrey Hugo 			.name = "mdss_esc0_clk",
1461d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &esc0_clk_src.clkr.hw },
1462d14b15b5SJeffrey Hugo 			.num_parents = 1,
1463d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1464d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1465d14b15b5SJeffrey Hugo 		},
1466d14b15b5SJeffrey Hugo 	},
1467d14b15b5SJeffrey Hugo };
1468d14b15b5SJeffrey Hugo 
1469d14b15b5SJeffrey Hugo static struct clk_branch mdss_esc1_clk = {
1470d14b15b5SJeffrey Hugo 	.halt_reg = 0x2348,
1471d14b15b5SJeffrey Hugo 	.clkr = {
1472d14b15b5SJeffrey Hugo 		.enable_reg = 0x2348,
1473d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1474d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1475d14b15b5SJeffrey Hugo 			.name = "mdss_esc1_clk",
1476d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &esc1_clk_src.clkr.hw },
1477d14b15b5SJeffrey Hugo 			.num_parents = 1,
1478d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1479d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1480d14b15b5SJeffrey Hugo 		},
1481d14b15b5SJeffrey Hugo 	},
1482d14b15b5SJeffrey Hugo };
1483d14b15b5SJeffrey Hugo 
1484d14b15b5SJeffrey Hugo static struct clk_branch mdss_rot_clk = {
1485d14b15b5SJeffrey Hugo 	.halt_reg = 0x2350,
1486d14b15b5SJeffrey Hugo 	.clkr = {
1487d14b15b5SJeffrey Hugo 		.enable_reg = 0x2350,
1488d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1489d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1490d14b15b5SJeffrey Hugo 			.name = "mdss_rot_clk",
1491d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &rot_clk_src.clkr.hw },
1492d14b15b5SJeffrey Hugo 			.num_parents = 1,
1493d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1494d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1495d14b15b5SJeffrey Hugo 		},
1496d14b15b5SJeffrey Hugo 	},
1497d14b15b5SJeffrey Hugo };
1498d14b15b5SJeffrey Hugo 
1499d14b15b5SJeffrey Hugo static struct clk_branch mdss_dp_link_clk = {
1500d14b15b5SJeffrey Hugo 	.halt_reg = 0x2354,
1501d14b15b5SJeffrey Hugo 	.clkr = {
1502d14b15b5SJeffrey Hugo 		.enable_reg = 0x2354,
1503d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1504d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1505d14b15b5SJeffrey Hugo 			.name = "mdss_dp_link_clk",
1506d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw },
1507d14b15b5SJeffrey Hugo 			.num_parents = 1,
1508d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1509d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1510d14b15b5SJeffrey Hugo 		},
1511d14b15b5SJeffrey Hugo 	},
1512d14b15b5SJeffrey Hugo };
1513d14b15b5SJeffrey Hugo 
1514d14b15b5SJeffrey Hugo static struct clk_branch mdss_dp_link_intf_clk = {
1515d14b15b5SJeffrey Hugo 	.halt_reg = 0x2358,
1516d14b15b5SJeffrey Hugo 	.clkr = {
1517d14b15b5SJeffrey Hugo 		.enable_reg = 0x2358,
1518d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1519d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1520d14b15b5SJeffrey Hugo 			.name = "mdss_dp_link_intf_clk",
1521d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw },
1522d14b15b5SJeffrey Hugo 			.num_parents = 1,
1523d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1524d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1525d14b15b5SJeffrey Hugo 		},
1526d14b15b5SJeffrey Hugo 	},
1527d14b15b5SJeffrey Hugo };
1528d14b15b5SJeffrey Hugo 
1529d14b15b5SJeffrey Hugo static struct clk_branch mdss_dp_crypto_clk = {
1530d14b15b5SJeffrey Hugo 	.halt_reg = 0x235c,
1531d14b15b5SJeffrey Hugo 	.clkr = {
1532d14b15b5SJeffrey Hugo 		.enable_reg = 0x235c,
1533d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1534d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1535d14b15b5SJeffrey Hugo 			.name = "mdss_dp_crypto_clk",
1536d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &dp_crypto_clk_src.clkr.hw },
1537d14b15b5SJeffrey Hugo 			.num_parents = 1,
1538d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1539d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1540d14b15b5SJeffrey Hugo 		},
1541d14b15b5SJeffrey Hugo 	},
1542d14b15b5SJeffrey Hugo };
1543d14b15b5SJeffrey Hugo 
1544d14b15b5SJeffrey Hugo static struct clk_branch mdss_dp_pixel_clk = {
1545d14b15b5SJeffrey Hugo 	.halt_reg = 0x2360,
1546d14b15b5SJeffrey Hugo 	.clkr = {
1547d14b15b5SJeffrey Hugo 		.enable_reg = 0x2360,
1548d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1549d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1550d14b15b5SJeffrey Hugo 			.name = "mdss_dp_pixel_clk",
1551d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &dp_pixel_clk_src.clkr.hw },
1552d14b15b5SJeffrey Hugo 			.num_parents = 1,
1553d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1554d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1555d14b15b5SJeffrey Hugo 		},
1556d14b15b5SJeffrey Hugo 	},
1557d14b15b5SJeffrey Hugo };
1558d14b15b5SJeffrey Hugo 
1559d14b15b5SJeffrey Hugo static struct clk_branch mdss_dp_aux_clk = {
1560d14b15b5SJeffrey Hugo 	.halt_reg = 0x2364,
1561d14b15b5SJeffrey Hugo 	.clkr = {
1562d14b15b5SJeffrey Hugo 		.enable_reg = 0x2364,
1563d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1564d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1565d14b15b5SJeffrey Hugo 			.name = "mdss_dp_aux_clk",
1566d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &dp_aux_clk_src.clkr.hw },
1567d14b15b5SJeffrey Hugo 			.num_parents = 1,
1568d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1569d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1570d14b15b5SJeffrey Hugo 		},
1571d14b15b5SJeffrey Hugo 	},
1572d14b15b5SJeffrey Hugo };
1573d14b15b5SJeffrey Hugo 
1574d14b15b5SJeffrey Hugo static struct clk_branch mdss_byte0_intf_clk = {
1575d14b15b5SJeffrey Hugo 	.halt_reg = 0x2374,
1576d14b15b5SJeffrey Hugo 	.clkr = {
1577d14b15b5SJeffrey Hugo 		.enable_reg = 0x2374,
1578d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1579d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1580d14b15b5SJeffrey Hugo 			.name = "mdss_byte0_intf_clk",
1581d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw },
1582d14b15b5SJeffrey Hugo 			.num_parents = 1,
1583d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1584d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1585d14b15b5SJeffrey Hugo 		},
1586d14b15b5SJeffrey Hugo 	},
1587d14b15b5SJeffrey Hugo };
1588d14b15b5SJeffrey Hugo 
1589d14b15b5SJeffrey Hugo static struct clk_branch mdss_byte1_intf_clk = {
1590d14b15b5SJeffrey Hugo 	.halt_reg = 0x2378,
1591d14b15b5SJeffrey Hugo 	.clkr = {
1592d14b15b5SJeffrey Hugo 		.enable_reg = 0x2378,
1593d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1594d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1595d14b15b5SJeffrey Hugo 			.name = "mdss_byte1_intf_clk",
1596d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw },
1597d14b15b5SJeffrey Hugo 			.num_parents = 1,
1598d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1599d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1600d14b15b5SJeffrey Hugo 		},
1601d14b15b5SJeffrey Hugo 	},
1602d14b15b5SJeffrey Hugo };
1603d14b15b5SJeffrey Hugo 
1604d14b15b5SJeffrey Hugo static struct clk_branch camss_csi0phytimer_clk = {
1605d14b15b5SJeffrey Hugo 	.halt_reg = 0x3024,
1606d14b15b5SJeffrey Hugo 	.clkr = {
1607d14b15b5SJeffrey Hugo 		.enable_reg = 0x3024,
1608d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1609d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1610d14b15b5SJeffrey Hugo 			.name = "camss_csi0phytimer_clk",
1611d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi0phytimer_clk_src.clkr.hw },
1612d14b15b5SJeffrey Hugo 			.num_parents = 1,
1613d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1614d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1615d14b15b5SJeffrey Hugo 		},
1616d14b15b5SJeffrey Hugo 	},
1617d14b15b5SJeffrey Hugo };
1618d14b15b5SJeffrey Hugo 
1619d14b15b5SJeffrey Hugo static struct clk_branch camss_csi1phytimer_clk = {
1620d14b15b5SJeffrey Hugo 	.halt_reg = 0x3054,
1621d14b15b5SJeffrey Hugo 	.clkr = {
1622d14b15b5SJeffrey Hugo 		.enable_reg = 0x3054,
1623d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1624d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1625d14b15b5SJeffrey Hugo 			.name = "camss_csi1phytimer_clk",
1626d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi1phytimer_clk_src.clkr.hw },
1627d14b15b5SJeffrey Hugo 			.num_parents = 1,
1628d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1629d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1630d14b15b5SJeffrey Hugo 		},
1631d14b15b5SJeffrey Hugo 	},
1632d14b15b5SJeffrey Hugo };
1633d14b15b5SJeffrey Hugo 
1634d14b15b5SJeffrey Hugo static struct clk_branch camss_csi2phytimer_clk = {
1635d14b15b5SJeffrey Hugo 	.halt_reg = 0x3084,
1636d14b15b5SJeffrey Hugo 	.clkr = {
1637d14b15b5SJeffrey Hugo 		.enable_reg = 0x3084,
1638d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1639d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1640d14b15b5SJeffrey Hugo 			.name = "camss_csi2phytimer_clk",
1641d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi2phytimer_clk_src.clkr.hw },
1642d14b15b5SJeffrey Hugo 			.num_parents = 1,
1643d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1644d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1645d14b15b5SJeffrey Hugo 		},
1646d14b15b5SJeffrey Hugo 	},
1647d14b15b5SJeffrey Hugo };
1648d14b15b5SJeffrey Hugo 
1649d14b15b5SJeffrey Hugo static struct clk_branch camss_csi0_clk = {
1650d14b15b5SJeffrey Hugo 	.halt_reg = 0x30b4,
1651d14b15b5SJeffrey Hugo 	.clkr = {
1652d14b15b5SJeffrey Hugo 		.enable_reg = 0x30b4,
1653d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1654d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1655d14b15b5SJeffrey Hugo 			.name = "camss_csi0_clk",
1656d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
1657d14b15b5SJeffrey Hugo 			.num_parents = 1,
1658d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1659d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1660d14b15b5SJeffrey Hugo 		},
1661d14b15b5SJeffrey Hugo 	},
1662d14b15b5SJeffrey Hugo };
1663d14b15b5SJeffrey Hugo 
1664d14b15b5SJeffrey Hugo static struct clk_branch camss_csi0_ahb_clk = {
1665d14b15b5SJeffrey Hugo 	.halt_reg = 0x30bc,
1666d14b15b5SJeffrey Hugo 	.clkr = {
1667d14b15b5SJeffrey Hugo 		.enable_reg = 0x30bc,
1668d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1669d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1670d14b15b5SJeffrey Hugo 			.name = "camss_csi0_ahb_clk",
1671d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1672d14b15b5SJeffrey Hugo 			.num_parents = 1,
1673d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1674d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1675d14b15b5SJeffrey Hugo 		},
1676d14b15b5SJeffrey Hugo 	},
1677d14b15b5SJeffrey Hugo };
1678d14b15b5SJeffrey Hugo 
1679d14b15b5SJeffrey Hugo static struct clk_branch camss_csi0rdi_clk = {
1680d14b15b5SJeffrey Hugo 	.halt_reg = 0x30d4,
1681d14b15b5SJeffrey Hugo 	.clkr = {
1682d14b15b5SJeffrey Hugo 		.enable_reg = 0x30d4,
1683d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1684d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1685d14b15b5SJeffrey Hugo 			.name = "camss_csi0rdi_clk",
1686d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
1687d14b15b5SJeffrey Hugo 			.num_parents = 1,
1688d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1689d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1690d14b15b5SJeffrey Hugo 		},
1691d14b15b5SJeffrey Hugo 	},
1692d14b15b5SJeffrey Hugo };
1693d14b15b5SJeffrey Hugo 
1694d14b15b5SJeffrey Hugo static struct clk_branch camss_csi0pix_clk = {
1695d14b15b5SJeffrey Hugo 	.halt_reg = 0x30e4,
1696d14b15b5SJeffrey Hugo 	.clkr = {
1697d14b15b5SJeffrey Hugo 		.enable_reg = 0x30e4,
1698d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1699d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1700d14b15b5SJeffrey Hugo 			.name = "camss_csi0pix_clk",
1701d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
1702d14b15b5SJeffrey Hugo 			.num_parents = 1,
1703d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1704d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1705d14b15b5SJeffrey Hugo 		},
1706d14b15b5SJeffrey Hugo 	},
1707d14b15b5SJeffrey Hugo };
1708d14b15b5SJeffrey Hugo 
1709d14b15b5SJeffrey Hugo static struct clk_branch camss_csi1_clk = {
1710d14b15b5SJeffrey Hugo 	.halt_reg = 0x3124,
1711d14b15b5SJeffrey Hugo 	.clkr = {
1712d14b15b5SJeffrey Hugo 		.enable_reg = 0x3124,
1713d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1714d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1715d14b15b5SJeffrey Hugo 			.name = "camss_csi1_clk",
1716d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
1717d14b15b5SJeffrey Hugo 			.num_parents = 1,
1718d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1719d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1720d14b15b5SJeffrey Hugo 		},
1721d14b15b5SJeffrey Hugo 	},
1722d14b15b5SJeffrey Hugo };
1723d14b15b5SJeffrey Hugo 
1724d14b15b5SJeffrey Hugo static struct clk_branch camss_csi1_ahb_clk = {
1725d14b15b5SJeffrey Hugo 	.halt_reg = 0x3128,
1726d14b15b5SJeffrey Hugo 	.clkr = {
1727d14b15b5SJeffrey Hugo 		.enable_reg = 0x3128,
1728d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1729d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1730d14b15b5SJeffrey Hugo 			.name = "camss_csi1_ahb_clk",
1731d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1732d14b15b5SJeffrey Hugo 			.num_parents = 1,
1733d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1734d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1735d14b15b5SJeffrey Hugo 		},
1736d14b15b5SJeffrey Hugo 	},
1737d14b15b5SJeffrey Hugo };
1738d14b15b5SJeffrey Hugo 
1739d14b15b5SJeffrey Hugo static struct clk_branch camss_csi1rdi_clk = {
1740d14b15b5SJeffrey Hugo 	.halt_reg = 0x3144,
1741d14b15b5SJeffrey Hugo 	.clkr = {
1742d14b15b5SJeffrey Hugo 		.enable_reg = 0x3144,
1743d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1744d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1745d14b15b5SJeffrey Hugo 			.name = "camss_csi1rdi_clk",
1746d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
1747d14b15b5SJeffrey Hugo 			.num_parents = 1,
1748d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1749d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1750d14b15b5SJeffrey Hugo 		},
1751d14b15b5SJeffrey Hugo 	},
1752d14b15b5SJeffrey Hugo };
1753d14b15b5SJeffrey Hugo 
1754d14b15b5SJeffrey Hugo static struct clk_branch camss_csi1pix_clk = {
1755d14b15b5SJeffrey Hugo 	.halt_reg = 0x3154,
1756d14b15b5SJeffrey Hugo 	.clkr = {
1757d14b15b5SJeffrey Hugo 		.enable_reg = 0x3154,
1758d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1759d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1760d14b15b5SJeffrey Hugo 			.name = "camss_csi1pix_clk",
1761d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
1762d14b15b5SJeffrey Hugo 			.num_parents = 1,
1763d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1764d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1765d14b15b5SJeffrey Hugo 		},
1766d14b15b5SJeffrey Hugo 	},
1767d14b15b5SJeffrey Hugo };
1768d14b15b5SJeffrey Hugo 
1769d14b15b5SJeffrey Hugo static struct clk_branch camss_csi2_clk = {
1770d14b15b5SJeffrey Hugo 	.halt_reg = 0x3184,
1771d14b15b5SJeffrey Hugo 	.clkr = {
1772d14b15b5SJeffrey Hugo 		.enable_reg = 0x3184,
1773d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1774d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1775d14b15b5SJeffrey Hugo 			.name = "camss_csi2_clk",
1776d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
1777d14b15b5SJeffrey Hugo 			.num_parents = 1,
1778d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1779d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1780d14b15b5SJeffrey Hugo 		},
1781d14b15b5SJeffrey Hugo 	},
1782d14b15b5SJeffrey Hugo };
1783d14b15b5SJeffrey Hugo 
1784d14b15b5SJeffrey Hugo static struct clk_branch camss_csi2_ahb_clk = {
1785d14b15b5SJeffrey Hugo 	.halt_reg = 0x3188,
1786d14b15b5SJeffrey Hugo 	.clkr = {
1787d14b15b5SJeffrey Hugo 		.enable_reg = 0x3188,
1788d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1789d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1790d14b15b5SJeffrey Hugo 			.name = "camss_csi2_ahb_clk",
1791d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1792d14b15b5SJeffrey Hugo 			.num_parents = 1,
1793d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1794d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1795d14b15b5SJeffrey Hugo 		},
1796d14b15b5SJeffrey Hugo 	},
1797d14b15b5SJeffrey Hugo };
1798d14b15b5SJeffrey Hugo 
1799d14b15b5SJeffrey Hugo static struct clk_branch camss_csi2rdi_clk = {
1800d14b15b5SJeffrey Hugo 	.halt_reg = 0x31a4,
1801d14b15b5SJeffrey Hugo 	.clkr = {
1802d14b15b5SJeffrey Hugo 		.enable_reg = 0x31a4,
1803d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1804d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1805d14b15b5SJeffrey Hugo 			.name = "camss_csi2rdi_clk",
1806d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
1807d14b15b5SJeffrey Hugo 			.num_parents = 1,
1808d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1809d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1810d14b15b5SJeffrey Hugo 		},
1811d14b15b5SJeffrey Hugo 	},
1812d14b15b5SJeffrey Hugo };
1813d14b15b5SJeffrey Hugo 
1814d14b15b5SJeffrey Hugo static struct clk_branch camss_csi2pix_clk = {
1815d14b15b5SJeffrey Hugo 	.halt_reg = 0x31b4,
1816d14b15b5SJeffrey Hugo 	.clkr = {
1817d14b15b5SJeffrey Hugo 		.enable_reg = 0x31b4,
1818d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1819d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1820d14b15b5SJeffrey Hugo 			.name = "camss_csi2pix_clk",
1821d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
1822d14b15b5SJeffrey Hugo 			.num_parents = 1,
1823d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1824d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1825d14b15b5SJeffrey Hugo 		},
1826d14b15b5SJeffrey Hugo 	},
1827d14b15b5SJeffrey Hugo };
1828d14b15b5SJeffrey Hugo 
1829d14b15b5SJeffrey Hugo static struct clk_branch camss_csi3_clk = {
1830d14b15b5SJeffrey Hugo 	.halt_reg = 0x31e4,
1831d14b15b5SJeffrey Hugo 	.clkr = {
1832d14b15b5SJeffrey Hugo 		.enable_reg = 0x31e4,
1833d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1834d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1835d14b15b5SJeffrey Hugo 			.name = "camss_csi3_clk",
1836d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
1837d14b15b5SJeffrey Hugo 			.num_parents = 1,
1838d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1839d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1840d14b15b5SJeffrey Hugo 		},
1841d14b15b5SJeffrey Hugo 	},
1842d14b15b5SJeffrey Hugo };
1843d14b15b5SJeffrey Hugo 
1844d14b15b5SJeffrey Hugo static struct clk_branch camss_csi3_ahb_clk = {
1845d14b15b5SJeffrey Hugo 	.halt_reg = 0x31e8,
1846d14b15b5SJeffrey Hugo 	.clkr = {
1847d14b15b5SJeffrey Hugo 		.enable_reg = 0x31e8,
1848d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1849d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1850d14b15b5SJeffrey Hugo 			.name = "camss_csi3_ahb_clk",
1851d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1852d14b15b5SJeffrey Hugo 			.num_parents = 1,
1853d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1854d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1855d14b15b5SJeffrey Hugo 		},
1856d14b15b5SJeffrey Hugo 	},
1857d14b15b5SJeffrey Hugo };
1858d14b15b5SJeffrey Hugo 
1859d14b15b5SJeffrey Hugo static struct clk_branch camss_csi3rdi_clk = {
1860d14b15b5SJeffrey Hugo 	.halt_reg = 0x3204,
1861d14b15b5SJeffrey Hugo 	.clkr = {
1862d14b15b5SJeffrey Hugo 		.enable_reg = 0x3204,
1863d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1864d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1865d14b15b5SJeffrey Hugo 			.name = "camss_csi3rdi_clk",
1866d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
1867d14b15b5SJeffrey Hugo 			.num_parents = 1,
1868d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1869d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1870d14b15b5SJeffrey Hugo 		},
1871d14b15b5SJeffrey Hugo 	},
1872d14b15b5SJeffrey Hugo };
1873d14b15b5SJeffrey Hugo 
1874d14b15b5SJeffrey Hugo static struct clk_branch camss_csi3pix_clk = {
1875d14b15b5SJeffrey Hugo 	.halt_reg = 0x3214,
1876d14b15b5SJeffrey Hugo 	.clkr = {
1877d14b15b5SJeffrey Hugo 		.enable_reg = 0x3214,
1878d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1879d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1880d14b15b5SJeffrey Hugo 			.name = "camss_csi3pix_clk",
1881d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
1882d14b15b5SJeffrey Hugo 			.num_parents = 1,
1883d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1884d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1885d14b15b5SJeffrey Hugo 		},
1886d14b15b5SJeffrey Hugo 	},
1887d14b15b5SJeffrey Hugo };
1888d14b15b5SJeffrey Hugo 
1889d14b15b5SJeffrey Hugo static struct clk_branch camss_ispif_ahb_clk = {
1890d14b15b5SJeffrey Hugo 	.halt_reg = 0x3224,
1891d14b15b5SJeffrey Hugo 	.clkr = {
1892d14b15b5SJeffrey Hugo 		.enable_reg = 0x3224,
1893d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1894d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1895d14b15b5SJeffrey Hugo 			.name = "camss_ispif_ahb_clk",
1896d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1897d14b15b5SJeffrey Hugo 			.num_parents = 1,
1898d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1899d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1900d14b15b5SJeffrey Hugo 		},
1901d14b15b5SJeffrey Hugo 	},
1902d14b15b5SJeffrey Hugo };
1903d14b15b5SJeffrey Hugo 
1904d14b15b5SJeffrey Hugo static struct clk_branch camss_cci_clk = {
1905d14b15b5SJeffrey Hugo 	.halt_reg = 0x3344,
1906d14b15b5SJeffrey Hugo 	.clkr = {
1907d14b15b5SJeffrey Hugo 		.enable_reg = 0x3344,
1908d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1909d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1910d14b15b5SJeffrey Hugo 			.name = "camss_cci_clk",
1911d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &cci_clk_src.clkr.hw },
1912d14b15b5SJeffrey Hugo 			.num_parents = 1,
1913d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1914d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1915d14b15b5SJeffrey Hugo 		},
1916d14b15b5SJeffrey Hugo 	},
1917d14b15b5SJeffrey Hugo };
1918d14b15b5SJeffrey Hugo 
1919d14b15b5SJeffrey Hugo static struct clk_branch camss_cci_ahb_clk = {
1920d14b15b5SJeffrey Hugo 	.halt_reg = 0x3348,
1921d14b15b5SJeffrey Hugo 	.clkr = {
1922d14b15b5SJeffrey Hugo 		.enable_reg = 0x3348,
1923d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1924d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1925d14b15b5SJeffrey Hugo 			.name = "camss_cci_ahb_clk",
1926d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
1927d14b15b5SJeffrey Hugo 			.num_parents = 1,
1928d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1929d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1930d14b15b5SJeffrey Hugo 		},
1931d14b15b5SJeffrey Hugo 	},
1932d14b15b5SJeffrey Hugo };
1933d14b15b5SJeffrey Hugo 
1934d14b15b5SJeffrey Hugo static struct clk_branch camss_mclk0_clk = {
1935d14b15b5SJeffrey Hugo 	.halt_reg = 0x3384,
1936d14b15b5SJeffrey Hugo 	.clkr = {
1937d14b15b5SJeffrey Hugo 		.enable_reg = 0x3384,
1938d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1939d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1940d14b15b5SJeffrey Hugo 			.name = "camss_mclk0_clk",
1941d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mclk0_clk_src.clkr.hw },
1942d14b15b5SJeffrey Hugo 			.num_parents = 1,
1943d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1944d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1945d14b15b5SJeffrey Hugo 		},
1946d14b15b5SJeffrey Hugo 	},
1947d14b15b5SJeffrey Hugo };
1948d14b15b5SJeffrey Hugo 
1949d14b15b5SJeffrey Hugo static struct clk_branch camss_mclk1_clk = {
1950d14b15b5SJeffrey Hugo 	.halt_reg = 0x33b4,
1951d14b15b5SJeffrey Hugo 	.clkr = {
1952d14b15b5SJeffrey Hugo 		.enable_reg = 0x33b4,
1953d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1954d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1955d14b15b5SJeffrey Hugo 			.name = "camss_mclk1_clk",
1956d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mclk1_clk_src.clkr.hw },
1957d14b15b5SJeffrey Hugo 			.num_parents = 1,
1958d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1959d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1960d14b15b5SJeffrey Hugo 		},
1961d14b15b5SJeffrey Hugo 	},
1962d14b15b5SJeffrey Hugo };
1963d14b15b5SJeffrey Hugo 
1964d14b15b5SJeffrey Hugo static struct clk_branch camss_mclk2_clk = {
1965d14b15b5SJeffrey Hugo 	.halt_reg = 0x33e4,
1966d14b15b5SJeffrey Hugo 	.clkr = {
1967d14b15b5SJeffrey Hugo 		.enable_reg = 0x33e4,
1968d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1969d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1970d14b15b5SJeffrey Hugo 			.name = "camss_mclk2_clk",
1971d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mclk2_clk_src.clkr.hw },
1972d14b15b5SJeffrey Hugo 			.num_parents = 1,
1973d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1974d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1975d14b15b5SJeffrey Hugo 		},
1976d14b15b5SJeffrey Hugo 	},
1977d14b15b5SJeffrey Hugo };
1978d14b15b5SJeffrey Hugo 
1979d14b15b5SJeffrey Hugo static struct clk_branch camss_mclk3_clk = {
1980d14b15b5SJeffrey Hugo 	.halt_reg = 0x3414,
1981d14b15b5SJeffrey Hugo 	.clkr = {
1982d14b15b5SJeffrey Hugo 		.enable_reg = 0x3414,
1983d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1984d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
1985d14b15b5SJeffrey Hugo 			.name = "camss_mclk3_clk",
1986d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &mclk3_clk_src.clkr.hw },
1987d14b15b5SJeffrey Hugo 			.num_parents = 1,
1988d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
1989d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
1990d14b15b5SJeffrey Hugo 		},
1991d14b15b5SJeffrey Hugo 	},
1992d14b15b5SJeffrey Hugo };
1993d14b15b5SJeffrey Hugo 
1994d14b15b5SJeffrey Hugo static struct clk_branch camss_top_ahb_clk = {
1995d14b15b5SJeffrey Hugo 	.halt_reg = 0x3484,
1996d14b15b5SJeffrey Hugo 	.clkr = {
1997d14b15b5SJeffrey Hugo 		.enable_reg = 0x3484,
1998d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
1999d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2000d14b15b5SJeffrey Hugo 			.name = "camss_top_ahb_clk",
2001d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2002d14b15b5SJeffrey Hugo 			.num_parents = 1,
2003d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2004d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2005d14b15b5SJeffrey Hugo 		},
2006d14b15b5SJeffrey Hugo 	},
2007d14b15b5SJeffrey Hugo };
2008d14b15b5SJeffrey Hugo 
2009d14b15b5SJeffrey Hugo static struct clk_branch camss_ahb_clk = {
2010d14b15b5SJeffrey Hugo 	.halt_reg = 0x348c,
2011d14b15b5SJeffrey Hugo 	.clkr = {
2012d14b15b5SJeffrey Hugo 		.enable_reg = 0x348c,
2013d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2014d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2015d14b15b5SJeffrey Hugo 			.name = "camss_ahb_clk",
2016d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2017d14b15b5SJeffrey Hugo 			.num_parents = 1,
2018d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2019d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2020d14b15b5SJeffrey Hugo 		},
2021d14b15b5SJeffrey Hugo 	},
2022d14b15b5SJeffrey Hugo };
2023d14b15b5SJeffrey Hugo 
2024d14b15b5SJeffrey Hugo static struct clk_branch camss_micro_ahb_clk = {
2025d14b15b5SJeffrey Hugo 	.halt_reg = 0x3494,
2026d14b15b5SJeffrey Hugo 	.clkr = {
2027d14b15b5SJeffrey Hugo 		.enable_reg = 0x3494,
2028d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2029d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2030d14b15b5SJeffrey Hugo 			.name = "camss_micro_ahb_clk",
2031d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2032d14b15b5SJeffrey Hugo 			.num_parents = 1,
2033d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2034d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2035d14b15b5SJeffrey Hugo 		},
2036d14b15b5SJeffrey Hugo 	},
2037d14b15b5SJeffrey Hugo };
2038d14b15b5SJeffrey Hugo 
2039d14b15b5SJeffrey Hugo static struct clk_branch camss_jpeg0_clk = {
2040d14b15b5SJeffrey Hugo 	.halt_reg = 0x35a8,
2041d14b15b5SJeffrey Hugo 	.clkr = {
2042d14b15b5SJeffrey Hugo 		.enable_reg = 0x35a8,
2043d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2044d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2045d14b15b5SJeffrey Hugo 			.name = "camss_jpeg0_clk",
2046d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &jpeg0_clk_src.clkr.hw },
2047d14b15b5SJeffrey Hugo 			.num_parents = 1,
2048d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2049d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2050d14b15b5SJeffrey Hugo 		},
2051d14b15b5SJeffrey Hugo 	},
2052d14b15b5SJeffrey Hugo };
2053d14b15b5SJeffrey Hugo 
2054d14b15b5SJeffrey Hugo static struct clk_branch camss_jpeg_ahb_clk = {
2055d14b15b5SJeffrey Hugo 	.halt_reg = 0x35b4,
2056d14b15b5SJeffrey Hugo 	.clkr = {
2057d14b15b5SJeffrey Hugo 		.enable_reg = 0x35b4,
2058d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2059d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2060d14b15b5SJeffrey Hugo 			.name = "camss_jpeg_ahb_clk",
2061d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2062d14b15b5SJeffrey Hugo 			.num_parents = 1,
2063d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2064d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2065d14b15b5SJeffrey Hugo 		},
2066d14b15b5SJeffrey Hugo 	},
2067d14b15b5SJeffrey Hugo };
2068d14b15b5SJeffrey Hugo 
2069d14b15b5SJeffrey Hugo static struct clk_branch camss_jpeg_axi_clk = {
2070d14b15b5SJeffrey Hugo 	.halt_reg = 0x35b8,
2071d14b15b5SJeffrey Hugo 	.clkr = {
2072d14b15b5SJeffrey Hugo 		.enable_reg = 0x35b8,
2073d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2074d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2075d14b15b5SJeffrey Hugo 			.name = "camss_jpeg_axi_clk",
2076d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
2077d14b15b5SJeffrey Hugo 			.num_parents = 1,
2078d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2079d14b15b5SJeffrey Hugo 		},
2080d14b15b5SJeffrey Hugo 	},
2081d14b15b5SJeffrey Hugo };
2082d14b15b5SJeffrey Hugo 
2083d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe0_ahb_clk = {
2084d14b15b5SJeffrey Hugo 	.halt_reg = 0x3668,
2085d14b15b5SJeffrey Hugo 	.clkr = {
2086d14b15b5SJeffrey Hugo 		.enable_reg = 0x3668,
2087d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2088d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2089d14b15b5SJeffrey Hugo 			.name = "camss_vfe0_ahb_clk",
2090d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2091d14b15b5SJeffrey Hugo 			.num_parents = 1,
2092d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2093d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2094d14b15b5SJeffrey Hugo 		},
2095d14b15b5SJeffrey Hugo 	},
2096d14b15b5SJeffrey Hugo };
2097d14b15b5SJeffrey Hugo 
2098d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe1_ahb_clk = {
2099d14b15b5SJeffrey Hugo 	.halt_reg = 0x3678,
2100d14b15b5SJeffrey Hugo 	.clkr = {
2101d14b15b5SJeffrey Hugo 		.enable_reg = 0x3678,
2102d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2103d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2104d14b15b5SJeffrey Hugo 			.name = "camss_vfe1_ahb_clk",
2105d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2106d14b15b5SJeffrey Hugo 			.num_parents = 1,
2107d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2108d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2109d14b15b5SJeffrey Hugo 		},
2110d14b15b5SJeffrey Hugo 	},
2111d14b15b5SJeffrey Hugo };
2112d14b15b5SJeffrey Hugo 
2113d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe0_clk = {
2114d14b15b5SJeffrey Hugo 	.halt_reg = 0x36a8,
2115d14b15b5SJeffrey Hugo 	.clkr = {
2116d14b15b5SJeffrey Hugo 		.enable_reg = 0x36a8,
2117d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2118d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2119d14b15b5SJeffrey Hugo 			.name = "camss_vfe0_clk",
2120d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
2121d14b15b5SJeffrey Hugo 			.num_parents = 1,
2122d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2123d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2124d14b15b5SJeffrey Hugo 		},
2125d14b15b5SJeffrey Hugo 	},
2126d14b15b5SJeffrey Hugo };
2127d14b15b5SJeffrey Hugo 
2128d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe1_clk = {
2129d14b15b5SJeffrey Hugo 	.halt_reg = 0x36ac,
2130d14b15b5SJeffrey Hugo 	.clkr = {
2131d14b15b5SJeffrey Hugo 		.enable_reg = 0x36ac,
2132d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2133d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2134d14b15b5SJeffrey Hugo 			.name = "camss_vfe1_clk",
2135d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
2136d14b15b5SJeffrey Hugo 			.num_parents = 1,
2137d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2138d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2139d14b15b5SJeffrey Hugo 		},
2140d14b15b5SJeffrey Hugo 	},
2141d14b15b5SJeffrey Hugo };
2142d14b15b5SJeffrey Hugo 
2143d14b15b5SJeffrey Hugo static struct clk_branch camss_cpp_clk = {
2144d14b15b5SJeffrey Hugo 	.halt_reg = 0x36b0,
2145d14b15b5SJeffrey Hugo 	.clkr = {
2146d14b15b5SJeffrey Hugo 		.enable_reg = 0x36b0,
2147d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2148d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2149d14b15b5SJeffrey Hugo 			.name = "camss_cpp_clk",
2150d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &cpp_clk_src.clkr.hw },
2151d14b15b5SJeffrey Hugo 			.num_parents = 1,
2152d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2153d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2154d14b15b5SJeffrey Hugo 		},
2155d14b15b5SJeffrey Hugo 	},
2156d14b15b5SJeffrey Hugo };
2157d14b15b5SJeffrey Hugo 
2158d14b15b5SJeffrey Hugo static struct clk_branch camss_cpp_ahb_clk = {
2159d14b15b5SJeffrey Hugo 	.halt_reg = 0x36b4,
2160d14b15b5SJeffrey Hugo 	.clkr = {
2161d14b15b5SJeffrey Hugo 		.enable_reg = 0x36b4,
2162d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2163d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2164d14b15b5SJeffrey Hugo 			.name = "camss_cpp_ahb_clk",
2165d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2166d14b15b5SJeffrey Hugo 			.num_parents = 1,
2167d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2168d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2169d14b15b5SJeffrey Hugo 		},
2170d14b15b5SJeffrey Hugo 	},
2171d14b15b5SJeffrey Hugo };
2172d14b15b5SJeffrey Hugo 
2173d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe_vbif_ahb_clk = {
2174d14b15b5SJeffrey Hugo 	.halt_reg = 0x36b8,
2175d14b15b5SJeffrey Hugo 	.clkr = {
2176d14b15b5SJeffrey Hugo 		.enable_reg = 0x36b8,
2177d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2178d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2179d14b15b5SJeffrey Hugo 			.name = "camss_vfe_vbif_ahb_clk",
2180d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2181d14b15b5SJeffrey Hugo 			.num_parents = 1,
2182d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2183d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2184d14b15b5SJeffrey Hugo 		},
2185d14b15b5SJeffrey Hugo 	},
2186d14b15b5SJeffrey Hugo };
2187d14b15b5SJeffrey Hugo 
2188d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe_vbif_axi_clk = {
2189d14b15b5SJeffrey Hugo 	.halt_reg = 0x36bc,
2190d14b15b5SJeffrey Hugo 	.clkr = {
2191d14b15b5SJeffrey Hugo 		.enable_reg = 0x36bc,
2192d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2193d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2194d14b15b5SJeffrey Hugo 			.name = "camss_vfe_vbif_axi_clk",
2195d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
2196d14b15b5SJeffrey Hugo 			.num_parents = 1,
2197d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2198d14b15b5SJeffrey Hugo 		},
2199d14b15b5SJeffrey Hugo 	},
2200d14b15b5SJeffrey Hugo };
2201d14b15b5SJeffrey Hugo 
2202d14b15b5SJeffrey Hugo static struct clk_branch camss_cpp_axi_clk = {
2203d14b15b5SJeffrey Hugo 	.halt_reg = 0x36c4,
2204d14b15b5SJeffrey Hugo 	.clkr = {
2205d14b15b5SJeffrey Hugo 		.enable_reg = 0x36c4,
2206d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2207d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2208d14b15b5SJeffrey Hugo 			.name = "camss_cpp_axi_clk",
2209d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
2210d14b15b5SJeffrey Hugo 			.num_parents = 1,
2211d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2212d14b15b5SJeffrey Hugo 		},
2213d14b15b5SJeffrey Hugo 	},
2214d14b15b5SJeffrey Hugo };
2215d14b15b5SJeffrey Hugo 
2216d14b15b5SJeffrey Hugo static struct clk_branch camss_cpp_vbif_ahb_clk = {
2217d14b15b5SJeffrey Hugo 	.halt_reg = 0x36c8,
2218d14b15b5SJeffrey Hugo 	.clkr = {
2219d14b15b5SJeffrey Hugo 		.enable_reg = 0x36c8,
2220d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2221d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2222d14b15b5SJeffrey Hugo 			.name = "camss_cpp_vbif_ahb_clk",
2223d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2224d14b15b5SJeffrey Hugo 			.num_parents = 1,
2225d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2226d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2227d14b15b5SJeffrey Hugo 		},
2228d14b15b5SJeffrey Hugo 	},
2229d14b15b5SJeffrey Hugo };
2230d14b15b5SJeffrey Hugo 
2231d14b15b5SJeffrey Hugo static struct clk_branch camss_csi_vfe0_clk = {
2232d14b15b5SJeffrey Hugo 	.halt_reg = 0x3704,
2233d14b15b5SJeffrey Hugo 	.clkr = {
2234d14b15b5SJeffrey Hugo 		.enable_reg = 0x3704,
2235d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2236d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2237d14b15b5SJeffrey Hugo 			.name = "camss_csi_vfe0_clk",
2238d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
2239d14b15b5SJeffrey Hugo 			.num_parents = 1,
2240d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2241d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2242d14b15b5SJeffrey Hugo 		},
2243d14b15b5SJeffrey Hugo 	},
2244d14b15b5SJeffrey Hugo };
2245d14b15b5SJeffrey Hugo 
2246d14b15b5SJeffrey Hugo static struct clk_branch camss_csi_vfe1_clk = {
2247d14b15b5SJeffrey Hugo 	.halt_reg = 0x3714,
2248d14b15b5SJeffrey Hugo 	.clkr = {
2249d14b15b5SJeffrey Hugo 		.enable_reg = 0x3714,
2250d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2251d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2252d14b15b5SJeffrey Hugo 			.name = "camss_csi_vfe1_clk",
2253d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
2254d14b15b5SJeffrey Hugo 			.num_parents = 1,
2255d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2256d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2257d14b15b5SJeffrey Hugo 		},
2258d14b15b5SJeffrey Hugo 	},
2259d14b15b5SJeffrey Hugo };
2260d14b15b5SJeffrey Hugo 
2261d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe0_stream_clk = {
2262d14b15b5SJeffrey Hugo 	.halt_reg = 0x3720,
2263d14b15b5SJeffrey Hugo 	.clkr = {
2264d14b15b5SJeffrey Hugo 		.enable_reg = 0x3720,
2265d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2266d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2267d14b15b5SJeffrey Hugo 			.name = "camss_vfe0_stream_clk",
2268d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
2269d14b15b5SJeffrey Hugo 			.num_parents = 1,
2270d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2271d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2272d14b15b5SJeffrey Hugo 		},
2273d14b15b5SJeffrey Hugo 	},
2274d14b15b5SJeffrey Hugo };
2275d14b15b5SJeffrey Hugo 
2276d14b15b5SJeffrey Hugo static struct clk_branch camss_vfe1_stream_clk = {
2277d14b15b5SJeffrey Hugo 	.halt_reg = 0x3724,
2278d14b15b5SJeffrey Hugo 	.clkr = {
2279d14b15b5SJeffrey Hugo 		.enable_reg = 0x3724,
2280d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2281d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2282d14b15b5SJeffrey Hugo 			.name = "camss_vfe1_stream_clk",
2283d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
2284d14b15b5SJeffrey Hugo 			.num_parents = 1,
2285d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2286d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2287d14b15b5SJeffrey Hugo 		},
2288d14b15b5SJeffrey Hugo 	},
2289d14b15b5SJeffrey Hugo };
2290d14b15b5SJeffrey Hugo 
2291d14b15b5SJeffrey Hugo static struct clk_branch camss_cphy_csid0_clk = {
2292d14b15b5SJeffrey Hugo 	.halt_reg = 0x3730,
2293d14b15b5SJeffrey Hugo 	.clkr = {
2294d14b15b5SJeffrey Hugo 		.enable_reg = 0x3730,
2295d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2296d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2297d14b15b5SJeffrey Hugo 			.name = "camss_cphy_csid0_clk",
2298d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2299d14b15b5SJeffrey Hugo 			.num_parents = 1,
2300d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2301d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2302d14b15b5SJeffrey Hugo 		},
2303d14b15b5SJeffrey Hugo 	},
2304d14b15b5SJeffrey Hugo };
2305d14b15b5SJeffrey Hugo 
2306d14b15b5SJeffrey Hugo static struct clk_branch camss_cphy_csid1_clk = {
2307d14b15b5SJeffrey Hugo 	.halt_reg = 0x3734,
2308d14b15b5SJeffrey Hugo 	.clkr = {
2309d14b15b5SJeffrey Hugo 		.enable_reg = 0x3734,
2310d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2311d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2312d14b15b5SJeffrey Hugo 			.name = "camss_cphy_csid1_clk",
2313d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2314d14b15b5SJeffrey Hugo 			.num_parents = 1,
2315d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2316d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2317d14b15b5SJeffrey Hugo 		},
2318d14b15b5SJeffrey Hugo 	},
2319d14b15b5SJeffrey Hugo };
2320d14b15b5SJeffrey Hugo 
2321d14b15b5SJeffrey Hugo static struct clk_branch camss_cphy_csid2_clk = {
2322d14b15b5SJeffrey Hugo 	.halt_reg = 0x3738,
2323d14b15b5SJeffrey Hugo 	.clkr = {
2324d14b15b5SJeffrey Hugo 		.enable_reg = 0x3738,
2325d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2326d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2327d14b15b5SJeffrey Hugo 			.name = "camss_cphy_csid2_clk",
2328d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2329d14b15b5SJeffrey Hugo 			.num_parents = 1,
2330d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2331d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2332d14b15b5SJeffrey Hugo 		},
2333d14b15b5SJeffrey Hugo 	},
2334d14b15b5SJeffrey Hugo };
2335d14b15b5SJeffrey Hugo 
2336d14b15b5SJeffrey Hugo static struct clk_branch camss_cphy_csid3_clk = {
2337d14b15b5SJeffrey Hugo 	.halt_reg = 0x373c,
2338d14b15b5SJeffrey Hugo 	.clkr = {
2339d14b15b5SJeffrey Hugo 		.enable_reg = 0x373c,
2340d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2341d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2342d14b15b5SJeffrey Hugo 			.name = "camss_cphy_csid3_clk",
2343d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2344d14b15b5SJeffrey Hugo 			.num_parents = 1,
2345d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2346d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2347d14b15b5SJeffrey Hugo 		},
2348d14b15b5SJeffrey Hugo 	},
2349d14b15b5SJeffrey Hugo };
2350d14b15b5SJeffrey Hugo 
2351d14b15b5SJeffrey Hugo static struct clk_branch camss_csiphy0_clk = {
2352d14b15b5SJeffrey Hugo 	.halt_reg = 0x3740,
2353d14b15b5SJeffrey Hugo 	.clkr = {
2354d14b15b5SJeffrey Hugo 		.enable_reg = 0x3740,
2355d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2356d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2357d14b15b5SJeffrey Hugo 			.name = "camss_csiphy0_clk",
2358d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2359d14b15b5SJeffrey Hugo 			.num_parents = 1,
2360d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2361d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2362d14b15b5SJeffrey Hugo 		},
2363d14b15b5SJeffrey Hugo 	},
2364d14b15b5SJeffrey Hugo };
2365d14b15b5SJeffrey Hugo 
2366d14b15b5SJeffrey Hugo static struct clk_branch camss_csiphy1_clk = {
2367d14b15b5SJeffrey Hugo 	.halt_reg = 0x3744,
2368d14b15b5SJeffrey Hugo 	.clkr = {
2369d14b15b5SJeffrey Hugo 		.enable_reg = 0x3744,
2370d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2371d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2372d14b15b5SJeffrey Hugo 			.name = "camss_csiphy1_clk",
2373d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2374d14b15b5SJeffrey Hugo 			.num_parents = 1,
2375d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2376d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2377d14b15b5SJeffrey Hugo 		},
2378d14b15b5SJeffrey Hugo 	},
2379d14b15b5SJeffrey Hugo };
2380d14b15b5SJeffrey Hugo 
2381d14b15b5SJeffrey Hugo static struct clk_branch camss_csiphy2_clk = {
2382d14b15b5SJeffrey Hugo 	.halt_reg = 0x3748,
2383d14b15b5SJeffrey Hugo 	.clkr = {
2384d14b15b5SJeffrey Hugo 		.enable_reg = 0x3748,
2385d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2386d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2387d14b15b5SJeffrey Hugo 			.name = "camss_csiphy2_clk",
2388d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
2389d14b15b5SJeffrey Hugo 			.num_parents = 1,
2390d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2391d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2392d14b15b5SJeffrey Hugo 		},
2393d14b15b5SJeffrey Hugo 	},
2394d14b15b5SJeffrey Hugo };
2395d14b15b5SJeffrey Hugo 
2396d14b15b5SJeffrey Hugo static struct clk_branch fd_core_clk = {
2397d14b15b5SJeffrey Hugo 	.halt_reg = 0x3b68,
2398d14b15b5SJeffrey Hugo 	.clkr = {
2399d14b15b5SJeffrey Hugo 		.enable_reg = 0x3b68,
2400d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2401d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2402d14b15b5SJeffrey Hugo 			.name = "fd_core_clk",
2403d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw },
2404d14b15b5SJeffrey Hugo 			.num_parents = 1,
2405d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2406d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2407d14b15b5SJeffrey Hugo 		},
2408d14b15b5SJeffrey Hugo 	},
2409d14b15b5SJeffrey Hugo };
2410d14b15b5SJeffrey Hugo 
2411d14b15b5SJeffrey Hugo static struct clk_branch fd_core_uar_clk = {
2412d14b15b5SJeffrey Hugo 	.halt_reg = 0x3b6c,
2413d14b15b5SJeffrey Hugo 	.clkr = {
2414d14b15b5SJeffrey Hugo 		.enable_reg = 0x3b6c,
2415d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2416d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2417d14b15b5SJeffrey Hugo 			.name = "fd_core_uar_clk",
2418d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw },
2419d14b15b5SJeffrey Hugo 			.num_parents = 1,
2420d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2421d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2422d14b15b5SJeffrey Hugo 		},
2423d14b15b5SJeffrey Hugo 	},
2424d14b15b5SJeffrey Hugo };
2425d14b15b5SJeffrey Hugo 
2426d14b15b5SJeffrey Hugo static struct clk_branch fd_ahb_clk = {
2427d14b15b5SJeffrey Hugo 	.halt_reg = 0x3b74,
2428d14b15b5SJeffrey Hugo 	.clkr = {
2429d14b15b5SJeffrey Hugo 		.enable_reg = 0x3b74,
2430d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2431d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2432d14b15b5SJeffrey Hugo 			.name = "fd_ahb_clk",
2433d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2434d14b15b5SJeffrey Hugo 			.num_parents = 1,
2435d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2436d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2437d14b15b5SJeffrey Hugo 		},
2438d14b15b5SJeffrey Hugo 	},
2439d14b15b5SJeffrey Hugo };
2440d14b15b5SJeffrey Hugo 
2441d14b15b5SJeffrey Hugo static struct clk_branch mnoc_ahb_clk = {
2442d14b15b5SJeffrey Hugo 	.halt_reg = 0x5024,
2443d14b15b5SJeffrey Hugo 	.clkr = {
2444d14b15b5SJeffrey Hugo 		.enable_reg = 0x5024,
2445d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2446d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2447d14b15b5SJeffrey Hugo 			.name = "mnoc_ahb_clk",
2448d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2449d14b15b5SJeffrey Hugo 			.num_parents = 1,
2450d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2451d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2452d14b15b5SJeffrey Hugo 		},
2453d14b15b5SJeffrey Hugo 	},
2454d14b15b5SJeffrey Hugo };
2455d14b15b5SJeffrey Hugo 
2456d14b15b5SJeffrey Hugo static struct clk_branch bimc_smmu_ahb_clk = {
2457d14b15b5SJeffrey Hugo 	.halt_reg = 0xe004,
2458fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_reg = 0xe004,
2459fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_bit = 1,
2460d14b15b5SJeffrey Hugo 	.clkr = {
2461d14b15b5SJeffrey Hugo 		.enable_reg = 0xe004,
2462d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2463d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2464d14b15b5SJeffrey Hugo 			.name = "bimc_smmu_ahb_clk",
2465d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2466d14b15b5SJeffrey Hugo 			.num_parents = 1,
2467d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2468d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2469d14b15b5SJeffrey Hugo 		},
2470d14b15b5SJeffrey Hugo 	},
2471d14b15b5SJeffrey Hugo };
2472d14b15b5SJeffrey Hugo 
2473d14b15b5SJeffrey Hugo static struct clk_branch bimc_smmu_axi_clk = {
2474d14b15b5SJeffrey Hugo 	.halt_reg = 0xe008,
2475fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_reg = 0xe008,
2476fa92f3b0SAngeloGioacchino Del Regno 	.hwcg_bit = 1,
2477d14b15b5SJeffrey Hugo 	.clkr = {
2478d14b15b5SJeffrey Hugo 		.enable_reg = 0xe008,
2479d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2480d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2481d14b15b5SJeffrey Hugo 			.name = "bimc_smmu_axi_clk",
2482d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
2483d14b15b5SJeffrey Hugo 			.num_parents = 1,
2484d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2485d14b15b5SJeffrey Hugo 		},
2486d14b15b5SJeffrey Hugo 	},
2487d14b15b5SJeffrey Hugo };
2488d14b15b5SJeffrey Hugo 
2489d14b15b5SJeffrey Hugo static struct clk_branch mnoc_maxi_clk = {
2490d14b15b5SJeffrey Hugo 	.halt_reg = 0xf004,
2491d14b15b5SJeffrey Hugo 	.clkr = {
2492d14b15b5SJeffrey Hugo 		.enable_reg = 0xf004,
2493d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2494d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2495d14b15b5SJeffrey Hugo 			.name = "mnoc_maxi_clk",
2496d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw },
2497d14b15b5SJeffrey Hugo 			.num_parents = 1,
2498d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2499d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2500d14b15b5SJeffrey Hugo 		},
2501d14b15b5SJeffrey Hugo 	},
2502d14b15b5SJeffrey Hugo };
2503d14b15b5SJeffrey Hugo 
2504d14b15b5SJeffrey Hugo static struct clk_branch vmem_maxi_clk = {
2505d14b15b5SJeffrey Hugo 	.halt_reg = 0xf064,
2506d14b15b5SJeffrey Hugo 	.clkr = {
2507d14b15b5SJeffrey Hugo 		.enable_reg = 0xf064,
2508d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2509d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2510d14b15b5SJeffrey Hugo 			.name = "vmem_maxi_clk",
2511d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw },
2512d14b15b5SJeffrey Hugo 			.num_parents = 1,
2513d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2514d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2515d14b15b5SJeffrey Hugo 		},
2516d14b15b5SJeffrey Hugo 	},
2517d14b15b5SJeffrey Hugo };
2518d14b15b5SJeffrey Hugo 
2519d14b15b5SJeffrey Hugo static struct clk_branch vmem_ahb_clk = {
2520d14b15b5SJeffrey Hugo 	.halt_reg = 0xf068,
2521d14b15b5SJeffrey Hugo 	.clkr = {
2522d14b15b5SJeffrey Hugo 		.enable_reg = 0xf068,
2523d14b15b5SJeffrey Hugo 		.enable_mask = BIT(0),
2524d14b15b5SJeffrey Hugo 		.hw.init = &(struct clk_init_data){
2525d14b15b5SJeffrey Hugo 			.name = "vmem_ahb_clk",
2526d14b15b5SJeffrey Hugo 			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
2527d14b15b5SJeffrey Hugo 			.num_parents = 1,
2528d14b15b5SJeffrey Hugo 			.ops = &clk_branch2_ops,
2529d14b15b5SJeffrey Hugo 			.flags = CLK_SET_RATE_PARENT,
2530d14b15b5SJeffrey Hugo 		},
2531d14b15b5SJeffrey Hugo 	},
2532d14b15b5SJeffrey Hugo };
2533d14b15b5SJeffrey Hugo 
2534d14b15b5SJeffrey Hugo static struct gdsc video_top_gdsc = {
2535d14b15b5SJeffrey Hugo 	.gdscr = 0x1024,
2536d14b15b5SJeffrey Hugo 	.pd = {
2537d14b15b5SJeffrey Hugo 		.name = "video_top",
2538d14b15b5SJeffrey Hugo 	},
2539d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2540d14b15b5SJeffrey Hugo };
2541d14b15b5SJeffrey Hugo 
2542d14b15b5SJeffrey Hugo static struct gdsc video_subcore0_gdsc = {
2543d14b15b5SJeffrey Hugo 	.gdscr = 0x1040,
2544d14b15b5SJeffrey Hugo 	.pd = {
2545d14b15b5SJeffrey Hugo 		.name = "video_subcore0",
2546d14b15b5SJeffrey Hugo 	},
2547d14b15b5SJeffrey Hugo 	.parent = &video_top_gdsc.pd,
2548d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2549d14b15b5SJeffrey Hugo };
2550d14b15b5SJeffrey Hugo 
2551d14b15b5SJeffrey Hugo static struct gdsc video_subcore1_gdsc = {
2552d14b15b5SJeffrey Hugo 	.gdscr = 0x1044,
2553d14b15b5SJeffrey Hugo 	.pd = {
2554d14b15b5SJeffrey Hugo 		.name = "video_subcore1",
2555d14b15b5SJeffrey Hugo 	},
2556d14b15b5SJeffrey Hugo 	.parent = &video_top_gdsc.pd,
2557d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2558d14b15b5SJeffrey Hugo };
2559d14b15b5SJeffrey Hugo 
2560d14b15b5SJeffrey Hugo static struct gdsc mdss_gdsc = {
2561d14b15b5SJeffrey Hugo 	.gdscr = 0x2304,
2562d14b15b5SJeffrey Hugo 	.cxcs = (unsigned int []){ 0x2310, 0x2350, 0x231c, 0x2320 },
2563d14b15b5SJeffrey Hugo 	.cxc_count = 4,
2564d14b15b5SJeffrey Hugo 	.pd = {
2565d14b15b5SJeffrey Hugo 		.name = "mdss",
2566d14b15b5SJeffrey Hugo 	},
2567d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2568d14b15b5SJeffrey Hugo };
2569d14b15b5SJeffrey Hugo 
2570d14b15b5SJeffrey Hugo static struct gdsc camss_top_gdsc = {
2571d14b15b5SJeffrey Hugo 	.gdscr = 0x34a0,
2572d14b15b5SJeffrey Hugo 	.cxcs = (unsigned int []){ 0x35b8, 0x36c4, 0x3704, 0x3714, 0x3494,
2573d14b15b5SJeffrey Hugo 				   0x35a8, 0x3868 },
2574d14b15b5SJeffrey Hugo 	.cxc_count = 7,
2575d14b15b5SJeffrey Hugo 	.pd = {
2576d14b15b5SJeffrey Hugo 		.name = "camss_top",
2577d14b15b5SJeffrey Hugo 	},
2578d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2579d14b15b5SJeffrey Hugo };
2580d14b15b5SJeffrey Hugo 
2581d14b15b5SJeffrey Hugo static struct gdsc camss_vfe0_gdsc = {
2582d14b15b5SJeffrey Hugo 	.gdscr = 0x3664,
2583d14b15b5SJeffrey Hugo 	.pd = {
2584d14b15b5SJeffrey Hugo 		.name = "camss_vfe0",
2585d14b15b5SJeffrey Hugo 	},
2586d14b15b5SJeffrey Hugo 	.parent = &camss_top_gdsc.pd,
2587d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2588d14b15b5SJeffrey Hugo };
2589d14b15b5SJeffrey Hugo 
2590d14b15b5SJeffrey Hugo static struct gdsc camss_vfe1_gdsc = {
2591d14b15b5SJeffrey Hugo 	.gdscr = 0x3674,
2592d14b15b5SJeffrey Hugo 	.pd = {
2593d14b15b5SJeffrey Hugo 		.name = "camss_vfe1_gdsc",
2594d14b15b5SJeffrey Hugo 	},
2595d14b15b5SJeffrey Hugo 	.parent = &camss_top_gdsc.pd,
2596d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2597d14b15b5SJeffrey Hugo };
2598d14b15b5SJeffrey Hugo 
2599d14b15b5SJeffrey Hugo static struct gdsc camss_cpp_gdsc = {
2600d14b15b5SJeffrey Hugo 	.gdscr = 0x36d4,
2601d14b15b5SJeffrey Hugo 	.pd = {
2602d14b15b5SJeffrey Hugo 		.name = "camss_cpp",
2603d14b15b5SJeffrey Hugo 	},
2604d14b15b5SJeffrey Hugo 	.parent = &camss_top_gdsc.pd,
2605d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
2606d14b15b5SJeffrey Hugo };
2607d14b15b5SJeffrey Hugo 
2608d14b15b5SJeffrey Hugo static struct gdsc bimc_smmu_gdsc = {
2609d14b15b5SJeffrey Hugo 	.gdscr = 0xe020,
2610d14b15b5SJeffrey Hugo 	.gds_hw_ctrl = 0xe024,
2611d14b15b5SJeffrey Hugo 	.pd = {
2612d14b15b5SJeffrey Hugo 		.name = "bimc_smmu",
2613d14b15b5SJeffrey Hugo 	},
2614d14b15b5SJeffrey Hugo 	.pwrsts = PWRSTS_OFF_ON,
261568e1d106SAngeloGioacchino Del Regno 	.flags = HW_CTRL | ALWAYS_ON,
2616d14b15b5SJeffrey Hugo };
2617d14b15b5SJeffrey Hugo 
2618d14b15b5SJeffrey Hugo static struct clk_regmap *mmcc_msm8998_clocks[] = {
2619d14b15b5SJeffrey Hugo 	[MMPLL0] = &mmpll0.clkr,
2620d14b15b5SJeffrey Hugo 	[MMPLL0_OUT_EVEN] = &mmpll0_out_even.clkr,
2621d14b15b5SJeffrey Hugo 	[MMPLL1] = &mmpll1.clkr,
2622d14b15b5SJeffrey Hugo 	[MMPLL1_OUT_EVEN] = &mmpll1_out_even.clkr,
2623d14b15b5SJeffrey Hugo 	[MMPLL3] = &mmpll3.clkr,
2624d14b15b5SJeffrey Hugo 	[MMPLL3_OUT_EVEN] = &mmpll3_out_even.clkr,
2625d14b15b5SJeffrey Hugo 	[MMPLL4] = &mmpll4.clkr,
2626d14b15b5SJeffrey Hugo 	[MMPLL4_OUT_EVEN] = &mmpll4_out_even.clkr,
2627d14b15b5SJeffrey Hugo 	[MMPLL5] = &mmpll5.clkr,
2628d14b15b5SJeffrey Hugo 	[MMPLL5_OUT_EVEN] = &mmpll5_out_even.clkr,
2629d14b15b5SJeffrey Hugo 	[MMPLL6] = &mmpll6.clkr,
2630d14b15b5SJeffrey Hugo 	[MMPLL6_OUT_EVEN] = &mmpll6_out_even.clkr,
2631d14b15b5SJeffrey Hugo 	[MMPLL7] = &mmpll7.clkr,
2632d14b15b5SJeffrey Hugo 	[MMPLL7_OUT_EVEN] = &mmpll7_out_even.clkr,
2633d14b15b5SJeffrey Hugo 	[MMPLL10] = &mmpll10.clkr,
2634d14b15b5SJeffrey Hugo 	[MMPLL10_OUT_EVEN] = &mmpll10_out_even.clkr,
2635d14b15b5SJeffrey Hugo 	[BYTE0_CLK_SRC] = &byte0_clk_src.clkr,
2636d14b15b5SJeffrey Hugo 	[BYTE1_CLK_SRC] = &byte1_clk_src.clkr,
2637d14b15b5SJeffrey Hugo 	[CCI_CLK_SRC] = &cci_clk_src.clkr,
2638d14b15b5SJeffrey Hugo 	[CPP_CLK_SRC] = &cpp_clk_src.clkr,
2639d14b15b5SJeffrey Hugo 	[CSI0_CLK_SRC] = &csi0_clk_src.clkr,
2640d14b15b5SJeffrey Hugo 	[CSI1_CLK_SRC] = &csi1_clk_src.clkr,
2641d14b15b5SJeffrey Hugo 	[CSI2_CLK_SRC] = &csi2_clk_src.clkr,
2642d14b15b5SJeffrey Hugo 	[CSI3_CLK_SRC] = &csi3_clk_src.clkr,
2643d14b15b5SJeffrey Hugo 	[CSIPHY_CLK_SRC] = &csiphy_clk_src.clkr,
2644d14b15b5SJeffrey Hugo 	[CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr,
2645d14b15b5SJeffrey Hugo 	[CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr,
2646d14b15b5SJeffrey Hugo 	[CSI2PHYTIMER_CLK_SRC] = &csi2phytimer_clk_src.clkr,
2647d14b15b5SJeffrey Hugo 	[DP_AUX_CLK_SRC] = &dp_aux_clk_src.clkr,
2648d14b15b5SJeffrey Hugo 	[DP_CRYPTO_CLK_SRC] = &dp_crypto_clk_src.clkr,
2649d14b15b5SJeffrey Hugo 	[DP_LINK_CLK_SRC] = &dp_link_clk_src.clkr,
2650d14b15b5SJeffrey Hugo 	[DP_PIXEL_CLK_SRC] = &dp_pixel_clk_src.clkr,
2651d14b15b5SJeffrey Hugo 	[ESC0_CLK_SRC] = &esc0_clk_src.clkr,
2652d14b15b5SJeffrey Hugo 	[ESC1_CLK_SRC] = &esc1_clk_src.clkr,
2653d14b15b5SJeffrey Hugo 	[EXTPCLK_CLK_SRC] = &extpclk_clk_src.clkr,
2654d14b15b5SJeffrey Hugo 	[FD_CORE_CLK_SRC] = &fd_core_clk_src.clkr,
2655d14b15b5SJeffrey Hugo 	[HDMI_CLK_SRC] = &hdmi_clk_src.clkr,
2656d14b15b5SJeffrey Hugo 	[JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr,
2657d14b15b5SJeffrey Hugo 	[MAXI_CLK_SRC] = &maxi_clk_src.clkr,
2658d14b15b5SJeffrey Hugo 	[MCLK0_CLK_SRC] = &mclk0_clk_src.clkr,
2659d14b15b5SJeffrey Hugo 	[MCLK1_CLK_SRC] = &mclk1_clk_src.clkr,
2660d14b15b5SJeffrey Hugo 	[MCLK2_CLK_SRC] = &mclk2_clk_src.clkr,
2661d14b15b5SJeffrey Hugo 	[MCLK3_CLK_SRC] = &mclk3_clk_src.clkr,
2662d14b15b5SJeffrey Hugo 	[MDP_CLK_SRC] = &mdp_clk_src.clkr,
2663d14b15b5SJeffrey Hugo 	[VSYNC_CLK_SRC] = &vsync_clk_src.clkr,
2664d14b15b5SJeffrey Hugo 	[AHB_CLK_SRC] = &ahb_clk_src.clkr,
2665d14b15b5SJeffrey Hugo 	[AXI_CLK_SRC] = &axi_clk_src.clkr,
2666d14b15b5SJeffrey Hugo 	[PCLK0_CLK_SRC] = &pclk0_clk_src.clkr,
2667d14b15b5SJeffrey Hugo 	[PCLK1_CLK_SRC] = &pclk1_clk_src.clkr,
2668d14b15b5SJeffrey Hugo 	[ROT_CLK_SRC] = &rot_clk_src.clkr,
2669d14b15b5SJeffrey Hugo 	[VIDEO_CORE_CLK_SRC] = &video_core_clk_src.clkr,
2670d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE0_CLK_SRC] = &video_subcore0_clk_src.clkr,
2671d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE1_CLK_SRC] = &video_subcore1_clk_src.clkr,
2672d14b15b5SJeffrey Hugo 	[VFE0_CLK_SRC] = &vfe0_clk_src.clkr,
2673d14b15b5SJeffrey Hugo 	[VFE1_CLK_SRC] = &vfe1_clk_src.clkr,
2674d14b15b5SJeffrey Hugo 	[MISC_AHB_CLK] = &misc_ahb_clk.clkr,
2675d14b15b5SJeffrey Hugo 	[VIDEO_CORE_CLK] = &video_core_clk.clkr,
2676d14b15b5SJeffrey Hugo 	[VIDEO_AHB_CLK] = &video_ahb_clk.clkr,
2677d14b15b5SJeffrey Hugo 	[VIDEO_AXI_CLK] = &video_axi_clk.clkr,
2678d14b15b5SJeffrey Hugo 	[VIDEO_MAXI_CLK] = &video_maxi_clk.clkr,
2679d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE0_CLK] = &video_subcore0_clk.clkr,
2680d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE1_CLK] = &video_subcore1_clk.clkr,
2681d14b15b5SJeffrey Hugo 	[MDSS_AHB_CLK] = &mdss_ahb_clk.clkr,
2682d14b15b5SJeffrey Hugo 	[MDSS_HDMI_DP_AHB_CLK] = &mdss_hdmi_dp_ahb_clk.clkr,
2683d14b15b5SJeffrey Hugo 	[MDSS_AXI_CLK] = &mdss_axi_clk.clkr,
2684d14b15b5SJeffrey Hugo 	[MDSS_PCLK0_CLK] = &mdss_pclk0_clk.clkr,
2685d14b15b5SJeffrey Hugo 	[MDSS_PCLK1_CLK] = &mdss_pclk1_clk.clkr,
2686d14b15b5SJeffrey Hugo 	[MDSS_MDP_CLK] = &mdss_mdp_clk.clkr,
2687d14b15b5SJeffrey Hugo 	[MDSS_MDP_LUT_CLK] = &mdss_mdp_lut_clk.clkr,
2688d14b15b5SJeffrey Hugo 	[MDSS_EXTPCLK_CLK] = &mdss_extpclk_clk.clkr,
2689d14b15b5SJeffrey Hugo 	[MDSS_VSYNC_CLK] = &mdss_vsync_clk.clkr,
2690d14b15b5SJeffrey Hugo 	[MDSS_HDMI_CLK] = &mdss_hdmi_clk.clkr,
2691d14b15b5SJeffrey Hugo 	[MDSS_BYTE0_CLK] = &mdss_byte0_clk.clkr,
2692d14b15b5SJeffrey Hugo 	[MDSS_BYTE1_CLK] = &mdss_byte1_clk.clkr,
2693d14b15b5SJeffrey Hugo 	[MDSS_ESC0_CLK] = &mdss_esc0_clk.clkr,
2694d14b15b5SJeffrey Hugo 	[MDSS_ESC1_CLK] = &mdss_esc1_clk.clkr,
2695d14b15b5SJeffrey Hugo 	[MDSS_ROT_CLK] = &mdss_rot_clk.clkr,
2696d14b15b5SJeffrey Hugo 	[MDSS_DP_LINK_CLK] = &mdss_dp_link_clk.clkr,
2697d14b15b5SJeffrey Hugo 	[MDSS_DP_LINK_INTF_CLK] = &mdss_dp_link_intf_clk.clkr,
2698d14b15b5SJeffrey Hugo 	[MDSS_DP_CRYPTO_CLK] = &mdss_dp_crypto_clk.clkr,
2699d14b15b5SJeffrey Hugo 	[MDSS_DP_PIXEL_CLK] = &mdss_dp_pixel_clk.clkr,
2700d14b15b5SJeffrey Hugo 	[MDSS_DP_AUX_CLK] = &mdss_dp_aux_clk.clkr,
2701d14b15b5SJeffrey Hugo 	[MDSS_BYTE0_INTF_CLK] = &mdss_byte0_intf_clk.clkr,
2702d14b15b5SJeffrey Hugo 	[MDSS_BYTE1_INTF_CLK] = &mdss_byte1_intf_clk.clkr,
2703d14b15b5SJeffrey Hugo 	[CAMSS_CSI0PHYTIMER_CLK] = &camss_csi0phytimer_clk.clkr,
2704d14b15b5SJeffrey Hugo 	[CAMSS_CSI1PHYTIMER_CLK] = &camss_csi1phytimer_clk.clkr,
2705d14b15b5SJeffrey Hugo 	[CAMSS_CSI2PHYTIMER_CLK] = &camss_csi2phytimer_clk.clkr,
2706d14b15b5SJeffrey Hugo 	[CAMSS_CSI0_CLK] = &camss_csi0_clk.clkr,
2707d14b15b5SJeffrey Hugo 	[CAMSS_CSI0_AHB_CLK] = &camss_csi0_ahb_clk.clkr,
2708d14b15b5SJeffrey Hugo 	[CAMSS_CSI0RDI_CLK] = &camss_csi0rdi_clk.clkr,
2709d14b15b5SJeffrey Hugo 	[CAMSS_CSI0PIX_CLK] = &camss_csi0pix_clk.clkr,
2710d14b15b5SJeffrey Hugo 	[CAMSS_CSI1_CLK] = &camss_csi1_clk.clkr,
2711d14b15b5SJeffrey Hugo 	[CAMSS_CSI1_AHB_CLK] = &camss_csi1_ahb_clk.clkr,
2712d14b15b5SJeffrey Hugo 	[CAMSS_CSI1RDI_CLK] = &camss_csi1rdi_clk.clkr,
2713d14b15b5SJeffrey Hugo 	[CAMSS_CSI1PIX_CLK] = &camss_csi1pix_clk.clkr,
2714d14b15b5SJeffrey Hugo 	[CAMSS_CSI2_CLK] = &camss_csi2_clk.clkr,
2715d14b15b5SJeffrey Hugo 	[CAMSS_CSI2_AHB_CLK] = &camss_csi2_ahb_clk.clkr,
2716d14b15b5SJeffrey Hugo 	[CAMSS_CSI2RDI_CLK] = &camss_csi2rdi_clk.clkr,
2717d14b15b5SJeffrey Hugo 	[CAMSS_CSI2PIX_CLK] = &camss_csi2pix_clk.clkr,
2718d14b15b5SJeffrey Hugo 	[CAMSS_CSI3_CLK] = &camss_csi3_clk.clkr,
2719d14b15b5SJeffrey Hugo 	[CAMSS_CSI3_AHB_CLK] = &camss_csi3_ahb_clk.clkr,
2720d14b15b5SJeffrey Hugo 	[CAMSS_CSI3RDI_CLK] = &camss_csi3rdi_clk.clkr,
2721d14b15b5SJeffrey Hugo 	[CAMSS_CSI3PIX_CLK] = &camss_csi3pix_clk.clkr,
2722d14b15b5SJeffrey Hugo 	[CAMSS_ISPIF_AHB_CLK] = &camss_ispif_ahb_clk.clkr,
2723d14b15b5SJeffrey Hugo 	[CAMSS_CCI_CLK] = &camss_cci_clk.clkr,
2724d14b15b5SJeffrey Hugo 	[CAMSS_CCI_AHB_CLK] = &camss_cci_ahb_clk.clkr,
2725d14b15b5SJeffrey Hugo 	[CAMSS_MCLK0_CLK] = &camss_mclk0_clk.clkr,
2726d14b15b5SJeffrey Hugo 	[CAMSS_MCLK1_CLK] = &camss_mclk1_clk.clkr,
2727d14b15b5SJeffrey Hugo 	[CAMSS_MCLK2_CLK] = &camss_mclk2_clk.clkr,
2728d14b15b5SJeffrey Hugo 	[CAMSS_MCLK3_CLK] = &camss_mclk3_clk.clkr,
2729d14b15b5SJeffrey Hugo 	[CAMSS_TOP_AHB_CLK] = &camss_top_ahb_clk.clkr,
2730d14b15b5SJeffrey Hugo 	[CAMSS_AHB_CLK] = &camss_ahb_clk.clkr,
2731d14b15b5SJeffrey Hugo 	[CAMSS_MICRO_AHB_CLK] = &camss_micro_ahb_clk.clkr,
2732d14b15b5SJeffrey Hugo 	[CAMSS_JPEG0_CLK] = &camss_jpeg0_clk.clkr,
2733d14b15b5SJeffrey Hugo 	[CAMSS_JPEG_AHB_CLK] = &camss_jpeg_ahb_clk.clkr,
2734d14b15b5SJeffrey Hugo 	[CAMSS_JPEG_AXI_CLK] = &camss_jpeg_axi_clk.clkr,
2735d14b15b5SJeffrey Hugo 	[CAMSS_VFE0_AHB_CLK] = &camss_vfe0_ahb_clk.clkr,
2736d14b15b5SJeffrey Hugo 	[CAMSS_VFE1_AHB_CLK] = &camss_vfe1_ahb_clk.clkr,
2737d14b15b5SJeffrey Hugo 	[CAMSS_VFE0_CLK] = &camss_vfe0_clk.clkr,
2738d14b15b5SJeffrey Hugo 	[CAMSS_VFE1_CLK] = &camss_vfe1_clk.clkr,
2739d14b15b5SJeffrey Hugo 	[CAMSS_CPP_CLK] = &camss_cpp_clk.clkr,
2740d14b15b5SJeffrey Hugo 	[CAMSS_CPP_AHB_CLK] = &camss_cpp_ahb_clk.clkr,
2741d14b15b5SJeffrey Hugo 	[CAMSS_VFE_VBIF_AHB_CLK] = &camss_vfe_vbif_ahb_clk.clkr,
2742d14b15b5SJeffrey Hugo 	[CAMSS_VFE_VBIF_AXI_CLK] = &camss_vfe_vbif_axi_clk.clkr,
2743d14b15b5SJeffrey Hugo 	[CAMSS_CPP_AXI_CLK] = &camss_cpp_axi_clk.clkr,
2744d14b15b5SJeffrey Hugo 	[CAMSS_CPP_VBIF_AHB_CLK] = &camss_cpp_vbif_ahb_clk.clkr,
2745d14b15b5SJeffrey Hugo 	[CAMSS_CSI_VFE0_CLK] = &camss_csi_vfe0_clk.clkr,
2746d14b15b5SJeffrey Hugo 	[CAMSS_CSI_VFE1_CLK] = &camss_csi_vfe1_clk.clkr,
2747d14b15b5SJeffrey Hugo 	[CAMSS_VFE0_STREAM_CLK] = &camss_vfe0_stream_clk.clkr,
2748d14b15b5SJeffrey Hugo 	[CAMSS_VFE1_STREAM_CLK] = &camss_vfe1_stream_clk.clkr,
2749d14b15b5SJeffrey Hugo 	[CAMSS_CPHY_CSID0_CLK] = &camss_cphy_csid0_clk.clkr,
2750d14b15b5SJeffrey Hugo 	[CAMSS_CPHY_CSID1_CLK] = &camss_cphy_csid1_clk.clkr,
2751d14b15b5SJeffrey Hugo 	[CAMSS_CPHY_CSID2_CLK] = &camss_cphy_csid2_clk.clkr,
2752d14b15b5SJeffrey Hugo 	[CAMSS_CPHY_CSID3_CLK] = &camss_cphy_csid3_clk.clkr,
2753d14b15b5SJeffrey Hugo 	[CAMSS_CSIPHY0_CLK] = &camss_csiphy0_clk.clkr,
2754d14b15b5SJeffrey Hugo 	[CAMSS_CSIPHY1_CLK] = &camss_csiphy1_clk.clkr,
2755d14b15b5SJeffrey Hugo 	[CAMSS_CSIPHY2_CLK] = &camss_csiphy2_clk.clkr,
2756d14b15b5SJeffrey Hugo 	[FD_CORE_CLK] = &fd_core_clk.clkr,
2757d14b15b5SJeffrey Hugo 	[FD_CORE_UAR_CLK] = &fd_core_uar_clk.clkr,
2758d14b15b5SJeffrey Hugo 	[FD_AHB_CLK] = &fd_ahb_clk.clkr,
2759d14b15b5SJeffrey Hugo 	[MNOC_AHB_CLK] = &mnoc_ahb_clk.clkr,
2760d14b15b5SJeffrey Hugo 	[BIMC_SMMU_AHB_CLK] = &bimc_smmu_ahb_clk.clkr,
2761d14b15b5SJeffrey Hugo 	[BIMC_SMMU_AXI_CLK] = &bimc_smmu_axi_clk.clkr,
2762d14b15b5SJeffrey Hugo 	[MNOC_MAXI_CLK] = &mnoc_maxi_clk.clkr,
2763d14b15b5SJeffrey Hugo 	[VMEM_MAXI_CLK] = &vmem_maxi_clk.clkr,
2764d14b15b5SJeffrey Hugo 	[VMEM_AHB_CLK] = &vmem_ahb_clk.clkr,
2765d14b15b5SJeffrey Hugo };
2766d14b15b5SJeffrey Hugo 
2767d14b15b5SJeffrey Hugo static struct gdsc *mmcc_msm8998_gdscs[] = {
2768d14b15b5SJeffrey Hugo 	[VIDEO_TOP_GDSC] = &video_top_gdsc,
2769d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE0_GDSC] = &video_subcore0_gdsc,
2770d14b15b5SJeffrey Hugo 	[VIDEO_SUBCORE1_GDSC] = &video_subcore1_gdsc,
2771d14b15b5SJeffrey Hugo 	[MDSS_GDSC] = &mdss_gdsc,
2772d14b15b5SJeffrey Hugo 	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
2773d14b15b5SJeffrey Hugo 	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,
2774d14b15b5SJeffrey Hugo 	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,
2775d14b15b5SJeffrey Hugo 	[CAMSS_CPP_GDSC] = &camss_cpp_gdsc,
2776d14b15b5SJeffrey Hugo 	[BIMC_SMMU_GDSC] = &bimc_smmu_gdsc,
2777d14b15b5SJeffrey Hugo };
2778d14b15b5SJeffrey Hugo 
2779d14b15b5SJeffrey Hugo static const struct qcom_reset_map mmcc_msm8998_resets[] = {
2780d14b15b5SJeffrey Hugo 	[SPDM_BCR] = { 0x200 },
2781d14b15b5SJeffrey Hugo 	[SPDM_RM_BCR] = { 0x300 },
2782d14b15b5SJeffrey Hugo 	[MISC_BCR] = { 0x320 },
2783d14b15b5SJeffrey Hugo 	[VIDEO_TOP_BCR] = { 0x1020 },
2784d14b15b5SJeffrey Hugo 	[THROTTLE_VIDEO_BCR] = { 0x1180 },
2785d14b15b5SJeffrey Hugo 	[MDSS_BCR] = { 0x2300 },
2786d14b15b5SJeffrey Hugo 	[THROTTLE_MDSS_BCR] = { 0x2460 },
2787d14b15b5SJeffrey Hugo 	[CAMSS_PHY0_BCR] = { 0x3020 },
2788d14b15b5SJeffrey Hugo 	[CAMSS_PHY1_BCR] = { 0x3050 },
2789d14b15b5SJeffrey Hugo 	[CAMSS_PHY2_BCR] = { 0x3080 },
2790d14b15b5SJeffrey Hugo 	[CAMSS_CSI0_BCR] = { 0x30b0 },
2791d14b15b5SJeffrey Hugo 	[CAMSS_CSI0RDI_BCR] = { 0x30d0 },
2792d14b15b5SJeffrey Hugo 	[CAMSS_CSI0PIX_BCR] = { 0x30e0 },
2793d14b15b5SJeffrey Hugo 	[CAMSS_CSI1_BCR] = { 0x3120 },
2794d14b15b5SJeffrey Hugo 	[CAMSS_CSI1RDI_BCR] = { 0x3140 },
2795d14b15b5SJeffrey Hugo 	[CAMSS_CSI1PIX_BCR] = { 0x3150 },
2796d14b15b5SJeffrey Hugo 	[CAMSS_CSI2_BCR] = { 0x3180 },
2797d14b15b5SJeffrey Hugo 	[CAMSS_CSI2RDI_BCR] = { 0x31a0 },
2798d14b15b5SJeffrey Hugo 	[CAMSS_CSI2PIX_BCR] = { 0x31b0 },
2799d14b15b5SJeffrey Hugo 	[CAMSS_CSI3_BCR] = { 0x31e0 },
2800d14b15b5SJeffrey Hugo 	[CAMSS_CSI3RDI_BCR] = { 0x3200 },
2801d14b15b5SJeffrey Hugo 	[CAMSS_CSI3PIX_BCR] = { 0x3210 },
2802d14b15b5SJeffrey Hugo 	[CAMSS_ISPIF_BCR] = { 0x3220 },
2803d14b15b5SJeffrey Hugo 	[CAMSS_CCI_BCR] = { 0x3340 },
2804d14b15b5SJeffrey Hugo 	[CAMSS_TOP_BCR] = { 0x3480 },
2805d14b15b5SJeffrey Hugo 	[CAMSS_AHB_BCR] = { 0x3488 },
2806d14b15b5SJeffrey Hugo 	[CAMSS_MICRO_BCR] = { 0x3490 },
2807d14b15b5SJeffrey Hugo 	[CAMSS_JPEG_BCR] = { 0x35a0 },
2808d14b15b5SJeffrey Hugo 	[CAMSS_VFE0_BCR] = { 0x3660 },
2809d14b15b5SJeffrey Hugo 	[CAMSS_VFE1_BCR] = { 0x3670 },
2810d14b15b5SJeffrey Hugo 	[CAMSS_VFE_VBIF_BCR] = { 0x36a0 },
2811d14b15b5SJeffrey Hugo 	[CAMSS_CPP_TOP_BCR] = { 0x36c0 },
2812d14b15b5SJeffrey Hugo 	[CAMSS_CPP_BCR] = { 0x36d0 },
2813d14b15b5SJeffrey Hugo 	[CAMSS_CSI_VFE0_BCR] = { 0x3700 },
2814d14b15b5SJeffrey Hugo 	[CAMSS_CSI_VFE1_BCR] = { 0x3710 },
2815d14b15b5SJeffrey Hugo 	[CAMSS_FD_BCR] = { 0x3b60 },
2816d14b15b5SJeffrey Hugo 	[THROTTLE_CAMSS_BCR] = { 0x3c30 },
2817d14b15b5SJeffrey Hugo 	[MNOCAHB_BCR] = { 0x5020 },
2818d14b15b5SJeffrey Hugo 	[MNOCAXI_BCR] = { 0xd020 },
2819d14b15b5SJeffrey Hugo 	[BMIC_SMMU_BCR] = { 0xe000 },
2820d14b15b5SJeffrey Hugo 	[MNOC_MAXI_BCR] = { 0xf000 },
2821d14b15b5SJeffrey Hugo 	[VMEM_BCR] = { 0xf060 },
2822d14b15b5SJeffrey Hugo 	[BTO_BCR] = { 0x10004 },
2823d14b15b5SJeffrey Hugo };
2824d14b15b5SJeffrey Hugo 
2825d14b15b5SJeffrey Hugo static const struct regmap_config mmcc_msm8998_regmap_config = {
2826d14b15b5SJeffrey Hugo 	.reg_bits	= 32,
2827d14b15b5SJeffrey Hugo 	.reg_stride	= 4,
2828d14b15b5SJeffrey Hugo 	.val_bits	= 32,
2829d14b15b5SJeffrey Hugo 	.max_register	= 0x10004,
2830d14b15b5SJeffrey Hugo 	.fast_io	= true,
2831d14b15b5SJeffrey Hugo };
2832d14b15b5SJeffrey Hugo 
2833d14b15b5SJeffrey Hugo static const struct qcom_cc_desc mmcc_msm8998_desc = {
2834d14b15b5SJeffrey Hugo 	.config = &mmcc_msm8998_regmap_config,
2835d14b15b5SJeffrey Hugo 	.clks = mmcc_msm8998_clocks,
2836d14b15b5SJeffrey Hugo 	.num_clks = ARRAY_SIZE(mmcc_msm8998_clocks),
2837d14b15b5SJeffrey Hugo 	.resets = mmcc_msm8998_resets,
2838d14b15b5SJeffrey Hugo 	.num_resets = ARRAY_SIZE(mmcc_msm8998_resets),
2839d14b15b5SJeffrey Hugo 	.gdscs = mmcc_msm8998_gdscs,
2840d14b15b5SJeffrey Hugo 	.num_gdscs = ARRAY_SIZE(mmcc_msm8998_gdscs),
2841d14b15b5SJeffrey Hugo };
2842d14b15b5SJeffrey Hugo 
2843d14b15b5SJeffrey Hugo static const struct of_device_id mmcc_msm8998_match_table[] = {
2844d14b15b5SJeffrey Hugo 	{ .compatible = "qcom,mmcc-msm8998" },
2845d14b15b5SJeffrey Hugo 	{ }
2846d14b15b5SJeffrey Hugo };
2847d14b15b5SJeffrey Hugo MODULE_DEVICE_TABLE(of, mmcc_msm8998_match_table);
2848d14b15b5SJeffrey Hugo 
2849d14b15b5SJeffrey Hugo static int mmcc_msm8998_probe(struct platform_device *pdev)
2850d14b15b5SJeffrey Hugo {
2851d14b15b5SJeffrey Hugo 	struct regmap *regmap;
2852d14b15b5SJeffrey Hugo 
2853d14b15b5SJeffrey Hugo 	regmap = qcom_cc_map(pdev, &mmcc_msm8998_desc);
2854d14b15b5SJeffrey Hugo 	if (IS_ERR(regmap))
2855d14b15b5SJeffrey Hugo 		return PTR_ERR(regmap);
2856d14b15b5SJeffrey Hugo 
2857d14b15b5SJeffrey Hugo 	return qcom_cc_really_probe(pdev, &mmcc_msm8998_desc, regmap);
2858d14b15b5SJeffrey Hugo }
2859d14b15b5SJeffrey Hugo 
2860d14b15b5SJeffrey Hugo static struct platform_driver mmcc_msm8998_driver = {
2861d14b15b5SJeffrey Hugo 	.probe		= mmcc_msm8998_probe,
2862d14b15b5SJeffrey Hugo 	.driver		= {
2863d14b15b5SJeffrey Hugo 		.name	= "mmcc-msm8998",
2864d14b15b5SJeffrey Hugo 		.of_match_table = mmcc_msm8998_match_table,
2865d14b15b5SJeffrey Hugo 	},
2866d14b15b5SJeffrey Hugo };
2867d14b15b5SJeffrey Hugo module_platform_driver(mmcc_msm8998_driver);
2868d14b15b5SJeffrey Hugo 
2869d14b15b5SJeffrey Hugo MODULE_DESCRIPTION("QCOM MMCC MSM8998 Driver");
2870d14b15b5SJeffrey Hugo MODULE_LICENSE("GPL v2");
2871