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