162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2013 Broadcom Corporation
462306a36Sopenharmony_ci * Copyright 2013 Linaro Limited
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include "clk-kona.h"
862306a36Sopenharmony_ci#include "dt-bindings/clock/bcm281xx.h"
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define BCM281XX_CCU_COMMON(_name, _ucase_name) \
1162306a36Sopenharmony_ci	KONA_CCU_COMMON(BCM281XX, _name, _ucase_name)
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* Root CCU */
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistatic struct peri_clk_data frac_1m_data = {
1662306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x214, 16, 0, 1),
1762306a36Sopenharmony_ci	.trig		= TRIGGER(0x0e04, 0),
1862306a36Sopenharmony_ci	.div		= FRAC_DIVIDER(0x0e00, 0, 22, 16),
1962306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal"),
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_cistatic struct ccu_data root_ccu_data = {
2362306a36Sopenharmony_ci	BCM281XX_CCU_COMMON(root, ROOT),
2462306a36Sopenharmony_ci	.kona_clks	= {
2562306a36Sopenharmony_ci		[BCM281XX_ROOT_CCU_FRAC_1M] =
2662306a36Sopenharmony_ci			KONA_CLK(root, frac_1m, peri),
2762306a36Sopenharmony_ci		[BCM281XX_ROOT_CCU_CLOCK_COUNT] = LAST_KONA_CLK,
2862306a36Sopenharmony_ci	},
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/* AON CCU */
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistatic struct peri_clk_data hub_timer_data = {
3462306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0414, 16, 0, 1),
3562306a36Sopenharmony_ci	.clocks		= CLOCKS("bbl_32k",
3662306a36Sopenharmony_ci				 "frac_1m",
3762306a36Sopenharmony_ci				 "dft_19_5m"),
3862306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a10, 0, 2),
3962306a36Sopenharmony_ci	.trig		= TRIGGER(0x0a40, 4),
4062306a36Sopenharmony_ci};
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cistatic struct peri_clk_data pmu_bsc_data = {
4362306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0418, 16, 0, 1),
4462306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
4562306a36Sopenharmony_ci				 "pmu_bsc_var",
4662306a36Sopenharmony_ci				 "bbl_32k"),
4762306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a04, 0, 2),
4862306a36Sopenharmony_ci	.div		= DIVIDER(0x0a04, 3, 4),
4962306a36Sopenharmony_ci	.trig		= TRIGGER(0x0a40, 0),
5062306a36Sopenharmony_ci};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistatic struct peri_clk_data pmu_bsc_var_data = {
5362306a36Sopenharmony_ci	.clocks		= CLOCKS("var_312m",
5462306a36Sopenharmony_ci				 "ref_312m"),
5562306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a00, 0, 2),
5662306a36Sopenharmony_ci	.div		= DIVIDER(0x0a00, 4, 5),
5762306a36Sopenharmony_ci	.trig		= TRIGGER(0x0a40, 2),
5862306a36Sopenharmony_ci};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cistatic struct ccu_data aon_ccu_data = {
6162306a36Sopenharmony_ci	BCM281XX_CCU_COMMON(aon, AON),
6262306a36Sopenharmony_ci	.kona_clks	= {
6362306a36Sopenharmony_ci		[BCM281XX_AON_CCU_HUB_TIMER] =
6462306a36Sopenharmony_ci			KONA_CLK(aon, hub_timer, peri),
6562306a36Sopenharmony_ci		[BCM281XX_AON_CCU_PMU_BSC] =
6662306a36Sopenharmony_ci			KONA_CLK(aon, pmu_bsc, peri),
6762306a36Sopenharmony_ci		[BCM281XX_AON_CCU_PMU_BSC_VAR] =
6862306a36Sopenharmony_ci			KONA_CLK(aon, pmu_bsc_var, peri),
6962306a36Sopenharmony_ci		[BCM281XX_AON_CCU_CLOCK_COUNT] = LAST_KONA_CLK,
7062306a36Sopenharmony_ci	},
7162306a36Sopenharmony_ci};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci/* Hub CCU */
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cistatic struct peri_clk_data tmon_1m_data = {
7662306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x04a4, 18, 2, 3),
7762306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
7862306a36Sopenharmony_ci				 "frac_1m"),
7962306a36Sopenharmony_ci	.sel		= SELECTOR(0x0e74, 0, 2),
8062306a36Sopenharmony_ci	.trig		= TRIGGER(0x0e84, 1),
8162306a36Sopenharmony_ci};
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_cistatic struct ccu_data hub_ccu_data = {
8462306a36Sopenharmony_ci	BCM281XX_CCU_COMMON(hub, HUB),
8562306a36Sopenharmony_ci	.kona_clks	= {
8662306a36Sopenharmony_ci		[BCM281XX_HUB_CCU_TMON_1M] =
8762306a36Sopenharmony_ci			KONA_CLK(hub, tmon_1m, peri),
8862306a36Sopenharmony_ci		[BCM281XX_HUB_CCU_CLOCK_COUNT] = LAST_KONA_CLK,
8962306a36Sopenharmony_ci	},
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci/* Master CCU */
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_cistatic struct peri_clk_data sdio1_data = {
9562306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0358, 18, 2, 3),
9662306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
9762306a36Sopenharmony_ci				 "var_52m",
9862306a36Sopenharmony_ci				 "ref_52m",
9962306a36Sopenharmony_ci				 "var_96m",
10062306a36Sopenharmony_ci				 "ref_96m"),
10162306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a28, 0, 3),
10262306a36Sopenharmony_ci	.div		= DIVIDER(0x0a28, 4, 14),
10362306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 9),
10462306a36Sopenharmony_ci};
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_cistatic struct peri_clk_data sdio2_data = {
10762306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x035c, 18, 2, 3),
10862306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
10962306a36Sopenharmony_ci				 "var_52m",
11062306a36Sopenharmony_ci				 "ref_52m",
11162306a36Sopenharmony_ci				 "var_96m",
11262306a36Sopenharmony_ci				 "ref_96m"),
11362306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a2c, 0, 3),
11462306a36Sopenharmony_ci	.div		= DIVIDER(0x0a2c, 4, 14),
11562306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 10),
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_cistatic struct peri_clk_data sdio3_data = {
11962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0364, 18, 2, 3),
12062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
12162306a36Sopenharmony_ci				 "var_52m",
12262306a36Sopenharmony_ci				 "ref_52m",
12362306a36Sopenharmony_ci				 "var_96m",
12462306a36Sopenharmony_ci				 "ref_96m"),
12562306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a34, 0, 3),
12662306a36Sopenharmony_ci	.div		= DIVIDER(0x0a34, 4, 14),
12762306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 12),
12862306a36Sopenharmony_ci};
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_cistatic struct peri_clk_data sdio4_data = {
13162306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0360, 18, 2, 3),
13262306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
13362306a36Sopenharmony_ci				 "var_52m",
13462306a36Sopenharmony_ci				 "ref_52m",
13562306a36Sopenharmony_ci				 "var_96m",
13662306a36Sopenharmony_ci				 "ref_96m"),
13762306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a30, 0, 3),
13862306a36Sopenharmony_ci	.div		= DIVIDER(0x0a30, 4, 14),
13962306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 11),
14062306a36Sopenharmony_ci};
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_cistatic struct peri_clk_data usb_ic_data = {
14362306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0354, 18, 2, 3),
14462306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
14562306a36Sopenharmony_ci				 "var_96m",
14662306a36Sopenharmony_ci				 "ref_96m"),
14762306a36Sopenharmony_ci	.div		= FIXED_DIVIDER(2),
14862306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a24, 0, 2),
14962306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 7),
15062306a36Sopenharmony_ci};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci/* also called usbh_48m */
15362306a36Sopenharmony_cistatic struct peri_clk_data hsic2_48m_data = {
15462306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0370, 18, 2, 3),
15562306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
15662306a36Sopenharmony_ci				 "var_96m",
15762306a36Sopenharmony_ci				 "ref_96m"),
15862306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a38, 0, 2),
15962306a36Sopenharmony_ci	.div		= FIXED_DIVIDER(2),
16062306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 5),
16162306a36Sopenharmony_ci};
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci/* also called usbh_12m */
16462306a36Sopenharmony_cistatic struct peri_clk_data hsic2_12m_data = {
16562306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0370, 20, 4, 5),
16662306a36Sopenharmony_ci	.div		= DIVIDER(0x0a38, 12, 2),
16762306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
16862306a36Sopenharmony_ci				 "var_96m",
16962306a36Sopenharmony_ci				 "ref_96m"),
17062306a36Sopenharmony_ci	.pre_div	= FIXED_DIVIDER(2),
17162306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a38, 0, 2),
17262306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 5),
17362306a36Sopenharmony_ci};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_cistatic struct ccu_data master_ccu_data = {
17662306a36Sopenharmony_ci	BCM281XX_CCU_COMMON(master, MASTER),
17762306a36Sopenharmony_ci	.kona_clks	= {
17862306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_SDIO1] =
17962306a36Sopenharmony_ci			KONA_CLK(master, sdio1, peri),
18062306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_SDIO2] =
18162306a36Sopenharmony_ci			KONA_CLK(master, sdio2, peri),
18262306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_SDIO3] =
18362306a36Sopenharmony_ci			KONA_CLK(master, sdio3, peri),
18462306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_SDIO4] =
18562306a36Sopenharmony_ci			KONA_CLK(master, sdio4, peri),
18662306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_USB_IC] =
18762306a36Sopenharmony_ci			KONA_CLK(master, usb_ic, peri),
18862306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_HSIC2_48M] =
18962306a36Sopenharmony_ci			KONA_CLK(master, hsic2_48m, peri),
19062306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_HSIC2_12M] =
19162306a36Sopenharmony_ci			KONA_CLK(master, hsic2_12m, peri),
19262306a36Sopenharmony_ci		[BCM281XX_MASTER_CCU_CLOCK_COUNT] = LAST_KONA_CLK,
19362306a36Sopenharmony_ci	},
19462306a36Sopenharmony_ci};
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci/* Slave CCU */
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_cistatic struct peri_clk_data uartb_data = {
19962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0400, 18, 2, 3),
20062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
20162306a36Sopenharmony_ci				 "var_156m",
20262306a36Sopenharmony_ci				 "ref_156m"),
20362306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a10, 0, 2),
20462306a36Sopenharmony_ci	.div		= FRAC_DIVIDER(0x0a10, 4, 12, 8),
20562306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 2),
20662306a36Sopenharmony_ci};
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_cistatic struct peri_clk_data uartb2_data = {
20962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0404, 18, 2, 3),
21062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
21162306a36Sopenharmony_ci				 "var_156m",
21262306a36Sopenharmony_ci				 "ref_156m"),
21362306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a14, 0, 2),
21462306a36Sopenharmony_ci	.div		= FRAC_DIVIDER(0x0a14, 4, 12, 8),
21562306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 3),
21662306a36Sopenharmony_ci};
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_cistatic struct peri_clk_data uartb3_data = {
21962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0408, 18, 2, 3),
22062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
22162306a36Sopenharmony_ci				 "var_156m",
22262306a36Sopenharmony_ci				 "ref_156m"),
22362306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a18, 0, 2),
22462306a36Sopenharmony_ci	.div		= FRAC_DIVIDER(0x0a18, 4, 12, 8),
22562306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 4),
22662306a36Sopenharmony_ci};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_cistatic struct peri_clk_data uartb4_data = {
22962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0408, 18, 2, 3),
23062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
23162306a36Sopenharmony_ci				 "var_156m",
23262306a36Sopenharmony_ci				 "ref_156m"),
23362306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a1c, 0, 2),
23462306a36Sopenharmony_ci	.div		= FRAC_DIVIDER(0x0a1c, 4, 12, 8),
23562306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 5),
23662306a36Sopenharmony_ci};
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_cistatic struct peri_clk_data ssp0_data = {
23962306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0410, 18, 2, 3),
24062306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
24162306a36Sopenharmony_ci				 "var_104m",
24262306a36Sopenharmony_ci				 "ref_104m",
24362306a36Sopenharmony_ci				 "var_96m",
24462306a36Sopenharmony_ci				 "ref_96m"),
24562306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a20, 0, 3),
24662306a36Sopenharmony_ci	.div		= DIVIDER(0x0a20, 4, 14),
24762306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 6),
24862306a36Sopenharmony_ci};
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_cistatic struct peri_clk_data ssp2_data = {
25162306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0418, 18, 2, 3),
25262306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
25362306a36Sopenharmony_ci				 "var_104m",
25462306a36Sopenharmony_ci				 "ref_104m",
25562306a36Sopenharmony_ci				 "var_96m",
25662306a36Sopenharmony_ci				 "ref_96m"),
25762306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a28, 0, 3),
25862306a36Sopenharmony_ci	.div		= DIVIDER(0x0a28, 4, 14),
25962306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 8),
26062306a36Sopenharmony_ci};
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_cistatic struct peri_clk_data bsc1_data = {
26362306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0458, 18, 2, 3),
26462306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
26562306a36Sopenharmony_ci				 "var_104m",
26662306a36Sopenharmony_ci				 "ref_104m",
26762306a36Sopenharmony_ci				 "var_13m",
26862306a36Sopenharmony_ci				 "ref_13m"),
26962306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a64, 0, 3),
27062306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 23),
27162306a36Sopenharmony_ci};
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_cistatic struct peri_clk_data bsc2_data = {
27462306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x045c, 18, 2, 3),
27562306a36Sopenharmony_ci	.clocks	= CLOCKS("ref_crystal",
27662306a36Sopenharmony_ci				 "var_104m",
27762306a36Sopenharmony_ci				 "ref_104m",
27862306a36Sopenharmony_ci				 "var_13m",
27962306a36Sopenharmony_ci				 "ref_13m"),
28062306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a68, 0, 3),
28162306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 24),
28262306a36Sopenharmony_ci};
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_cistatic struct peri_clk_data bsc3_data = {
28562306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0484, 18, 2, 3),
28662306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
28762306a36Sopenharmony_ci				 "var_104m",
28862306a36Sopenharmony_ci				 "ref_104m",
28962306a36Sopenharmony_ci				 "var_13m",
29062306a36Sopenharmony_ci				 "ref_13m"),
29162306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a84, 0, 3),
29262306a36Sopenharmony_ci	.trig		= TRIGGER(0x0b00, 2),
29362306a36Sopenharmony_ci};
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_cistatic struct peri_clk_data pwm_data = {
29662306a36Sopenharmony_ci	.gate		= HW_SW_GATE(0x0468, 18, 2, 3),
29762306a36Sopenharmony_ci	.clocks		= CLOCKS("ref_crystal",
29862306a36Sopenharmony_ci				 "var_104m"),
29962306a36Sopenharmony_ci	.sel		= SELECTOR(0x0a70, 0, 2),
30062306a36Sopenharmony_ci	.div		= DIVIDER(0x0a70, 4, 3),
30162306a36Sopenharmony_ci	.trig		= TRIGGER(0x0afc, 15),
30262306a36Sopenharmony_ci};
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_cistatic struct ccu_data slave_ccu_data = {
30562306a36Sopenharmony_ci	BCM281XX_CCU_COMMON(slave, SLAVE),
30662306a36Sopenharmony_ci	.kona_clks	= {
30762306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_UARTB] =
30862306a36Sopenharmony_ci			KONA_CLK(slave, uartb, peri),
30962306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_UARTB2] =
31062306a36Sopenharmony_ci			KONA_CLK(slave, uartb2, peri),
31162306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_UARTB3] =
31262306a36Sopenharmony_ci			KONA_CLK(slave, uartb3, peri),
31362306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_UARTB4] =
31462306a36Sopenharmony_ci			KONA_CLK(slave, uartb4, peri),
31562306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_SSP0] =
31662306a36Sopenharmony_ci			KONA_CLK(slave, ssp0, peri),
31762306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_SSP2] =
31862306a36Sopenharmony_ci			KONA_CLK(slave, ssp2, peri),
31962306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_BSC1] =
32062306a36Sopenharmony_ci			KONA_CLK(slave, bsc1, peri),
32162306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_BSC2] =
32262306a36Sopenharmony_ci			KONA_CLK(slave, bsc2, peri),
32362306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_BSC3] =
32462306a36Sopenharmony_ci			KONA_CLK(slave, bsc3, peri),
32562306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_PWM] =
32662306a36Sopenharmony_ci			KONA_CLK(slave, pwm, peri),
32762306a36Sopenharmony_ci		[BCM281XX_SLAVE_CCU_CLOCK_COUNT] = LAST_KONA_CLK,
32862306a36Sopenharmony_ci	},
32962306a36Sopenharmony_ci};
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci/* Device tree match table callback functions */
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_cistatic void __init kona_dt_root_ccu_setup(struct device_node *node)
33462306a36Sopenharmony_ci{
33562306a36Sopenharmony_ci	kona_dt_ccu_setup(&root_ccu_data, node);
33662306a36Sopenharmony_ci}
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_cistatic void __init kona_dt_aon_ccu_setup(struct device_node *node)
33962306a36Sopenharmony_ci{
34062306a36Sopenharmony_ci	kona_dt_ccu_setup(&aon_ccu_data, node);
34162306a36Sopenharmony_ci}
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_cistatic void __init kona_dt_hub_ccu_setup(struct device_node *node)
34462306a36Sopenharmony_ci{
34562306a36Sopenharmony_ci	kona_dt_ccu_setup(&hub_ccu_data, node);
34662306a36Sopenharmony_ci}
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_cistatic void __init kona_dt_master_ccu_setup(struct device_node *node)
34962306a36Sopenharmony_ci{
35062306a36Sopenharmony_ci	kona_dt_ccu_setup(&master_ccu_data, node);
35162306a36Sopenharmony_ci}
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_cistatic void __init kona_dt_slave_ccu_setup(struct device_node *node)
35462306a36Sopenharmony_ci{
35562306a36Sopenharmony_ci	kona_dt_ccu_setup(&slave_ccu_data, node);
35662306a36Sopenharmony_ci}
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ciCLK_OF_DECLARE(bcm281xx_root_ccu, BCM281XX_DT_ROOT_CCU_COMPAT,
35962306a36Sopenharmony_ci			kona_dt_root_ccu_setup);
36062306a36Sopenharmony_ciCLK_OF_DECLARE(bcm281xx_aon_ccu, BCM281XX_DT_AON_CCU_COMPAT,
36162306a36Sopenharmony_ci			kona_dt_aon_ccu_setup);
36262306a36Sopenharmony_ciCLK_OF_DECLARE(bcm281xx_hub_ccu, BCM281XX_DT_HUB_CCU_COMPAT,
36362306a36Sopenharmony_ci			kona_dt_hub_ccu_setup);
36462306a36Sopenharmony_ciCLK_OF_DECLARE(bcm281xx_master_ccu, BCM281XX_DT_MASTER_CCU_COMPAT,
36562306a36Sopenharmony_ci			kona_dt_master_ccu_setup);
36662306a36Sopenharmony_ciCLK_OF_DECLARE(bcm281xx_slave_ccu, BCM281XX_DT_SLAVE_CCU_COMPAT,
36762306a36Sopenharmony_ci			kona_dt_slave_ccu_setup);
368