162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * OMAP4 Clock init 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2013 Texas Instruments, Inc. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Tero Kristo (t-kristo@ti.com) 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/kernel.h> 1162306a36Sopenharmony_ci#include <linux/list.h> 1262306a36Sopenharmony_ci#include <linux/clk.h> 1362306a36Sopenharmony_ci#include <linux/clkdev.h> 1462306a36Sopenharmony_ci#include <linux/clk/ti.h> 1562306a36Sopenharmony_ci#include <dt-bindings/clock/omap4.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#include "clock.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/* 2062306a36Sopenharmony_ci * OMAP4 ABE DPLL default frequency. In OMAP4460 TRM version V, section 2162306a36Sopenharmony_ci * "3.6.3.2.3 CM1_ABE Clock Generator" states that the "DPLL_ABE_X2_CLK 2262306a36Sopenharmony_ci * must be set to 196.608 MHz" and hence, the DPLL locked frequency is 2362306a36Sopenharmony_ci * half of this value. 2462306a36Sopenharmony_ci */ 2562306a36Sopenharmony_ci#define OMAP4_DPLL_ABE_DEFFREQ 98304000 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* 2862306a36Sopenharmony_ci * OMAP4 USB DPLL default frequency. In OMAP4430 TRM version V, section 2962306a36Sopenharmony_ci * "3.6.3.9.5 DPLL_USB Preferred Settings" shows that the preferred 3062306a36Sopenharmony_ci * locked frequency for the USB DPLL is 960MHz. 3162306a36Sopenharmony_ci */ 3262306a36Sopenharmony_ci#define OMAP4_DPLL_USB_DEFFREQ 960000000 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_mpuss_clkctrl_regs[] __initconst = { 3562306a36Sopenharmony_ci { OMAP4_MPU_CLKCTRL, NULL, 0, "dpll_mpu_m2_ck" }, 3662306a36Sopenharmony_ci { 0 }, 3762306a36Sopenharmony_ci}; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_tesla_clkctrl_regs[] __initconst = { 4062306a36Sopenharmony_ci { OMAP4_DSP_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_iva_m4x2_ck" }, 4162306a36Sopenharmony_ci { 0 }, 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cistatic const char * const omap4_aess_fclk_parents[] __initconst = { 4562306a36Sopenharmony_ci "abe_clk", 4662306a36Sopenharmony_ci NULL, 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap4_aess_fclk_data __initconst = { 5062306a36Sopenharmony_ci .max_div = 2, 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_aess_bit_data[] __initconst = { 5462306a36Sopenharmony_ci { 24, TI_CLK_DIVIDER, omap4_aess_fclk_parents, &omap4_aess_fclk_data }, 5562306a36Sopenharmony_ci { 0 }, 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_cistatic const char * const omap4_func_dmic_abe_gfclk_parents[] __initconst = { 5962306a36Sopenharmony_ci "abe-clkctrl:0018:26", 6062306a36Sopenharmony_ci "pad_clks_ck", 6162306a36Sopenharmony_ci "slimbus_clk", 6262306a36Sopenharmony_ci NULL, 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistatic const char * const omap4_dmic_sync_mux_ck_parents[] __initconst = { 6662306a36Sopenharmony_ci "abe_24m_fclk", 6762306a36Sopenharmony_ci "syc_clk_div_ck", 6862306a36Sopenharmony_ci "func_24m_clk", 6962306a36Sopenharmony_ci NULL, 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_dmic_bit_data[] __initconst = { 7362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_func_dmic_abe_gfclk_parents, NULL }, 7462306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_dmic_sync_mux_ck_parents, NULL }, 7562306a36Sopenharmony_ci { 0 }, 7662306a36Sopenharmony_ci}; 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_cistatic const char * const omap4_func_mcasp_abe_gfclk_parents[] __initconst = { 7962306a36Sopenharmony_ci "abe-clkctrl:0020:26", 8062306a36Sopenharmony_ci "pad_clks_ck", 8162306a36Sopenharmony_ci "slimbus_clk", 8262306a36Sopenharmony_ci NULL, 8362306a36Sopenharmony_ci}; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mcasp_bit_data[] __initconst = { 8662306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_func_mcasp_abe_gfclk_parents, NULL }, 8762306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_dmic_sync_mux_ck_parents, NULL }, 8862306a36Sopenharmony_ci { 0 }, 8962306a36Sopenharmony_ci}; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_cistatic const char * const omap4_func_mcbsp1_gfclk_parents[] __initconst = { 9262306a36Sopenharmony_ci "abe-clkctrl:0028:26", 9362306a36Sopenharmony_ci "pad_clks_ck", 9462306a36Sopenharmony_ci "slimbus_clk", 9562306a36Sopenharmony_ci NULL, 9662306a36Sopenharmony_ci}; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mcbsp1_bit_data[] __initconst = { 9962306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_func_mcbsp1_gfclk_parents, NULL }, 10062306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_dmic_sync_mux_ck_parents, NULL }, 10162306a36Sopenharmony_ci { 0 }, 10262306a36Sopenharmony_ci}; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cistatic const char * const omap4_func_mcbsp2_gfclk_parents[] __initconst = { 10562306a36Sopenharmony_ci "abe-clkctrl:0030:26", 10662306a36Sopenharmony_ci "pad_clks_ck", 10762306a36Sopenharmony_ci "slimbus_clk", 10862306a36Sopenharmony_ci NULL, 10962306a36Sopenharmony_ci}; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mcbsp2_bit_data[] __initconst = { 11262306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_func_mcbsp2_gfclk_parents, NULL }, 11362306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_dmic_sync_mux_ck_parents, NULL }, 11462306a36Sopenharmony_ci { 0 }, 11562306a36Sopenharmony_ci}; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_cistatic const char * const omap4_func_mcbsp3_gfclk_parents[] __initconst = { 11862306a36Sopenharmony_ci "abe-clkctrl:0038:26", 11962306a36Sopenharmony_ci "pad_clks_ck", 12062306a36Sopenharmony_ci "slimbus_clk", 12162306a36Sopenharmony_ci NULL, 12262306a36Sopenharmony_ci}; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mcbsp3_bit_data[] __initconst = { 12562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_func_mcbsp3_gfclk_parents, NULL }, 12662306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_dmic_sync_mux_ck_parents, NULL }, 12762306a36Sopenharmony_ci { 0 }, 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_cistatic const char * const omap4_slimbus1_fclk_0_parents[] __initconst = { 13162306a36Sopenharmony_ci "abe_24m_fclk", 13262306a36Sopenharmony_ci NULL, 13362306a36Sopenharmony_ci}; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_cistatic const char * const omap4_slimbus1_fclk_1_parents[] __initconst = { 13662306a36Sopenharmony_ci "func_24m_clk", 13762306a36Sopenharmony_ci NULL, 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistatic const char * const omap4_slimbus1_fclk_2_parents[] __initconst = { 14162306a36Sopenharmony_ci "pad_clks_ck", 14262306a36Sopenharmony_ci NULL, 14362306a36Sopenharmony_ci}; 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_cistatic const char * const omap4_slimbus1_slimbus_clk_parents[] __initconst = { 14662306a36Sopenharmony_ci "slimbus_clk", 14762306a36Sopenharmony_ci NULL, 14862306a36Sopenharmony_ci}; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_slimbus1_bit_data[] __initconst = { 15162306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_slimbus1_fclk_0_parents, NULL }, 15262306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap4_slimbus1_fclk_1_parents, NULL }, 15362306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap4_slimbus1_fclk_2_parents, NULL }, 15462306a36Sopenharmony_ci { 11, TI_CLK_GATE, omap4_slimbus1_slimbus_clk_parents, NULL }, 15562306a36Sopenharmony_ci { 0 }, 15662306a36Sopenharmony_ci}; 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_cistatic const char * const omap4_timer5_sync_mux_parents[] __initconst = { 15962306a36Sopenharmony_ci "syc_clk_div_ck", 16062306a36Sopenharmony_ci "sys_32k_ck", 16162306a36Sopenharmony_ci NULL, 16262306a36Sopenharmony_ci}; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer5_bit_data[] __initconst = { 16562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_timer5_sync_mux_parents, NULL }, 16662306a36Sopenharmony_ci { 0 }, 16762306a36Sopenharmony_ci}; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer6_bit_data[] __initconst = { 17062306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_timer5_sync_mux_parents, NULL }, 17162306a36Sopenharmony_ci { 0 }, 17262306a36Sopenharmony_ci}; 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer7_bit_data[] __initconst = { 17562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_timer5_sync_mux_parents, NULL }, 17662306a36Sopenharmony_ci { 0 }, 17762306a36Sopenharmony_ci}; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer8_bit_data[] __initconst = { 18062306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_timer5_sync_mux_parents, NULL }, 18162306a36Sopenharmony_ci { 0 }, 18262306a36Sopenharmony_ci}; 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_abe_clkctrl_regs[] __initconst = { 18562306a36Sopenharmony_ci { OMAP4_L4_ABE_CLKCTRL, NULL, 0, "ocp_abe_iclk" }, 18662306a36Sopenharmony_ci { OMAP4_AESS_CLKCTRL, omap4_aess_bit_data, CLKF_SW_SUP, "abe-clkctrl:0008:24" }, 18762306a36Sopenharmony_ci { OMAP4_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" }, 18862306a36Sopenharmony_ci { OMAP4_DMIC_CLKCTRL, omap4_dmic_bit_data, CLKF_SW_SUP, "abe-clkctrl:0018:24" }, 18962306a36Sopenharmony_ci { OMAP4_MCASP_CLKCTRL, omap4_mcasp_bit_data, CLKF_SW_SUP, "abe-clkctrl:0020:24" }, 19062306a36Sopenharmony_ci { OMAP4_MCBSP1_CLKCTRL, omap4_mcbsp1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0028:24" }, 19162306a36Sopenharmony_ci { OMAP4_MCBSP2_CLKCTRL, omap4_mcbsp2_bit_data, CLKF_SW_SUP, "abe-clkctrl:0030:24" }, 19262306a36Sopenharmony_ci { OMAP4_MCBSP3_CLKCTRL, omap4_mcbsp3_bit_data, CLKF_SW_SUP, "abe-clkctrl:0038:24" }, 19362306a36Sopenharmony_ci { OMAP4_SLIMBUS1_CLKCTRL, omap4_slimbus1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0040:8" }, 19462306a36Sopenharmony_ci { OMAP4_TIMER5_CLKCTRL, omap4_timer5_bit_data, CLKF_SW_SUP, "abe-clkctrl:0048:24" }, 19562306a36Sopenharmony_ci { OMAP4_TIMER6_CLKCTRL, omap4_timer6_bit_data, CLKF_SW_SUP, "abe-clkctrl:0050:24" }, 19662306a36Sopenharmony_ci { OMAP4_TIMER7_CLKCTRL, omap4_timer7_bit_data, CLKF_SW_SUP, "abe-clkctrl:0058:24" }, 19762306a36Sopenharmony_ci { OMAP4_TIMER8_CLKCTRL, omap4_timer8_bit_data, CLKF_SW_SUP, "abe-clkctrl:0060:24" }, 19862306a36Sopenharmony_ci { OMAP4_WD_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 19962306a36Sopenharmony_ci { 0 }, 20062306a36Sopenharmony_ci}; 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l4_ao_clkctrl_regs[] __initconst = { 20362306a36Sopenharmony_ci { OMAP4_SMARTREFLEX_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "l4_wkup_clk_mux_ck" }, 20462306a36Sopenharmony_ci { OMAP4_SMARTREFLEX_IVA_CLKCTRL, NULL, CLKF_SW_SUP, "l4_wkup_clk_mux_ck" }, 20562306a36Sopenharmony_ci { OMAP4_SMARTREFLEX_CORE_CLKCTRL, NULL, CLKF_SW_SUP, "l4_wkup_clk_mux_ck" }, 20662306a36Sopenharmony_ci { 0 }, 20762306a36Sopenharmony_ci}; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_1_clkctrl_regs[] __initconst = { 21062306a36Sopenharmony_ci { OMAP4_L3_MAIN_1_CLKCTRL, NULL, 0, "l3_div_ck" }, 21162306a36Sopenharmony_ci { 0 }, 21262306a36Sopenharmony_ci}; 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_2_clkctrl_regs[] __initconst = { 21562306a36Sopenharmony_ci { OMAP4_L3_MAIN_2_CLKCTRL, NULL, 0, "l3_div_ck" }, 21662306a36Sopenharmony_ci { OMAP4_GPMC_CLKCTRL, NULL, CLKF_HW_SUP, "l3_div_ck" }, 21762306a36Sopenharmony_ci { OMAP4_OCMC_RAM_CLKCTRL, NULL, 0, "l3_div_ck" }, 21862306a36Sopenharmony_ci { 0 }, 21962306a36Sopenharmony_ci}; 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_ducati_clkctrl_regs[] __initconst = { 22262306a36Sopenharmony_ci { OMAP4_IPU_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "ducati_clk_mux_ck" }, 22362306a36Sopenharmony_ci { 0 }, 22462306a36Sopenharmony_ci}; 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_dma_clkctrl_regs[] __initconst = { 22762306a36Sopenharmony_ci { OMAP4_DMA_SYSTEM_CLKCTRL, NULL, 0, "l3_div_ck" }, 22862306a36Sopenharmony_ci { 0 }, 22962306a36Sopenharmony_ci}; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_emif_clkctrl_regs[] __initconst = { 23262306a36Sopenharmony_ci { OMAP4_DMM_CLKCTRL, NULL, 0, "l3_div_ck" }, 23362306a36Sopenharmony_ci { OMAP4_EMIF1_CLKCTRL, NULL, CLKF_HW_SUP, "ddrphy_ck" }, 23462306a36Sopenharmony_ci { OMAP4_EMIF2_CLKCTRL, NULL, CLKF_HW_SUP, "ddrphy_ck" }, 23562306a36Sopenharmony_ci { 0 }, 23662306a36Sopenharmony_ci}; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_d2d_clkctrl_regs[] __initconst = { 23962306a36Sopenharmony_ci { OMAP4_C2C_CLKCTRL, NULL, 0, "div_core_ck" }, 24062306a36Sopenharmony_ci { 0 }, 24162306a36Sopenharmony_ci}; 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l4_cfg_clkctrl_regs[] __initconst = { 24462306a36Sopenharmony_ci { OMAP4_L4_CFG_CLKCTRL, NULL, 0, "l4_div_ck" }, 24562306a36Sopenharmony_ci { OMAP4_SPINLOCK_CLKCTRL, NULL, 0, "l4_div_ck" }, 24662306a36Sopenharmony_ci { OMAP4_MAILBOX_CLKCTRL, NULL, 0, "l4_div_ck" }, 24762306a36Sopenharmony_ci { 0 }, 24862306a36Sopenharmony_ci}; 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_instr_clkctrl_regs[] __initconst = { 25162306a36Sopenharmony_ci { OMAP4_L3_MAIN_3_CLKCTRL, NULL, CLKF_HW_SUP, "l3_div_ck" }, 25262306a36Sopenharmony_ci { OMAP4_L3_INSTR_CLKCTRL, NULL, CLKF_HW_SUP, "l3_div_ck" }, 25362306a36Sopenharmony_ci { OMAP4_OCP_WP_NOC_CLKCTRL, NULL, CLKF_HW_SUP, "l3_div_ck" }, 25462306a36Sopenharmony_ci { 0 }, 25562306a36Sopenharmony_ci}; 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_ivahd_clkctrl_regs[] __initconst = { 25862306a36Sopenharmony_ci { OMAP4_IVA_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_iva_m5x2_ck" }, 25962306a36Sopenharmony_ci { OMAP4_SL2IF_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_m5x2_ck" }, 26062306a36Sopenharmony_ci { 0 }, 26162306a36Sopenharmony_ci}; 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_cistatic const char * const omap4_iss_ctrlclk_parents[] __initconst = { 26462306a36Sopenharmony_ci "func_96m_fclk", 26562306a36Sopenharmony_ci NULL, 26662306a36Sopenharmony_ci}; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_iss_bit_data[] __initconst = { 26962306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_iss_ctrlclk_parents, NULL }, 27062306a36Sopenharmony_ci { 0 }, 27162306a36Sopenharmony_ci}; 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_cistatic const char * const omap4_fdif_fck_parents[] __initconst = { 27462306a36Sopenharmony_ci "dpll_per_m4x2_ck", 27562306a36Sopenharmony_ci NULL, 27662306a36Sopenharmony_ci}; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap4_fdif_fck_data __initconst = { 27962306a36Sopenharmony_ci .max_div = 4, 28062306a36Sopenharmony_ci .flags = CLK_DIVIDER_POWER_OF_TWO, 28162306a36Sopenharmony_ci}; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_fdif_bit_data[] __initconst = { 28462306a36Sopenharmony_ci { 24, TI_CLK_DIVIDER, omap4_fdif_fck_parents, &omap4_fdif_fck_data }, 28562306a36Sopenharmony_ci { 0 }, 28662306a36Sopenharmony_ci}; 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_iss_clkctrl_regs[] __initconst = { 28962306a36Sopenharmony_ci { OMAP4_ISS_CLKCTRL, omap4_iss_bit_data, CLKF_SW_SUP, "ducati_clk_mux_ck" }, 29062306a36Sopenharmony_ci { OMAP4_FDIF_CLKCTRL, omap4_fdif_bit_data, CLKF_SW_SUP, "iss-clkctrl:0008:24" }, 29162306a36Sopenharmony_ci { 0 }, 29262306a36Sopenharmony_ci}; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_cistatic const char * const omap4_dss_dss_clk_parents[] __initconst = { 29562306a36Sopenharmony_ci "dpll_per_m5x2_ck", 29662306a36Sopenharmony_ci NULL, 29762306a36Sopenharmony_ci}; 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_cistatic const char * const omap4_dss_48mhz_clk_parents[] __initconst = { 30062306a36Sopenharmony_ci "func_48mc_fclk", 30162306a36Sopenharmony_ci NULL, 30262306a36Sopenharmony_ci}; 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_cistatic const char * const omap4_dss_sys_clk_parents[] __initconst = { 30562306a36Sopenharmony_ci "syc_clk_div_ck", 30662306a36Sopenharmony_ci NULL, 30762306a36Sopenharmony_ci}; 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_cistatic const char * const omap4_dss_tv_clk_parents[] __initconst = { 31062306a36Sopenharmony_ci "extalt_clkin_ck", 31162306a36Sopenharmony_ci NULL, 31262306a36Sopenharmony_ci}; 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_dss_core_bit_data[] __initconst = { 31562306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_dss_dss_clk_parents, NULL }, 31662306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap4_dss_48mhz_clk_parents, NULL }, 31762306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap4_dss_sys_clk_parents, NULL }, 31862306a36Sopenharmony_ci { 11, TI_CLK_GATE, omap4_dss_tv_clk_parents, NULL }, 31962306a36Sopenharmony_ci { 0 }, 32062306a36Sopenharmony_ci}; 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_dss_clkctrl_regs[] __initconst = { 32362306a36Sopenharmony_ci { OMAP4_DSS_CORE_CLKCTRL, omap4_dss_core_bit_data, CLKF_SW_SUP, "l3-dss-clkctrl:0000:8" }, 32462306a36Sopenharmony_ci { 0 }, 32562306a36Sopenharmony_ci}; 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_cistatic const char * const omap4_sgx_clk_mux_parents[] __initconst = { 32862306a36Sopenharmony_ci "dpll_core_m7x2_ck", 32962306a36Sopenharmony_ci "dpll_per_m7x2_ck", 33062306a36Sopenharmony_ci NULL, 33162306a36Sopenharmony_ci}; 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpu_bit_data[] __initconst = { 33462306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_sgx_clk_mux_parents, NULL }, 33562306a36Sopenharmony_ci { 0 }, 33662306a36Sopenharmony_ci}; 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_gfx_clkctrl_regs[] __initconst = { 33962306a36Sopenharmony_ci { OMAP4_GPU_CLKCTRL, omap4_gpu_bit_data, CLKF_SW_SUP, "l3-gfx-clkctrl:0000:24" }, 34062306a36Sopenharmony_ci { 0 }, 34162306a36Sopenharmony_ci}; 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_cistatic const char * const omap4_hsmmc1_fclk_parents[] __initconst = { 34462306a36Sopenharmony_ci "func_64m_fclk", 34562306a36Sopenharmony_ci "func_96m_fclk", 34662306a36Sopenharmony_ci NULL, 34762306a36Sopenharmony_ci}; 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mmc1_bit_data[] __initconst = { 35062306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_hsmmc1_fclk_parents, NULL }, 35162306a36Sopenharmony_ci { 0 }, 35262306a36Sopenharmony_ci}; 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mmc2_bit_data[] __initconst = { 35562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_hsmmc1_fclk_parents, NULL }, 35662306a36Sopenharmony_ci { 0 }, 35762306a36Sopenharmony_ci}; 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_cistatic const char * const omap4_hsi_fck_parents[] __initconst = { 36062306a36Sopenharmony_ci "dpll_per_m2x2_ck", 36162306a36Sopenharmony_ci NULL, 36262306a36Sopenharmony_ci}; 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap4_hsi_fck_data __initconst = { 36562306a36Sopenharmony_ci .max_div = 4, 36662306a36Sopenharmony_ci .flags = CLK_DIVIDER_POWER_OF_TWO, 36762306a36Sopenharmony_ci}; 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_hsi_bit_data[] __initconst = { 37062306a36Sopenharmony_ci { 24, TI_CLK_DIVIDER, omap4_hsi_fck_parents, &omap4_hsi_fck_data }, 37162306a36Sopenharmony_ci { 0 }, 37262306a36Sopenharmony_ci}; 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_cistatic const char * const omap4_usb_host_hs_utmi_p1_clk_parents[] __initconst = { 37562306a36Sopenharmony_ci "l3-init-clkctrl:0038:24", 37662306a36Sopenharmony_ci NULL, 37762306a36Sopenharmony_ci}; 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_cistatic const char * const omap4_usb_host_hs_utmi_p2_clk_parents[] __initconst = { 38062306a36Sopenharmony_ci "l3-init-clkctrl:0038:25", 38162306a36Sopenharmony_ci NULL, 38262306a36Sopenharmony_ci}; 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_cistatic const char * const omap4_usb_host_hs_utmi_p3_clk_parents[] __initconst = { 38562306a36Sopenharmony_ci "init_60m_fclk", 38662306a36Sopenharmony_ci NULL, 38762306a36Sopenharmony_ci}; 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_cistatic const char * const omap4_usb_host_hs_hsic480m_p1_clk_parents[] __initconst = { 39062306a36Sopenharmony_ci "dpll_usb_m2_ck", 39162306a36Sopenharmony_ci NULL, 39262306a36Sopenharmony_ci}; 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_cistatic const char * const omap4_utmi_p1_gfclk_parents[] __initconst = { 39562306a36Sopenharmony_ci "init_60m_fclk", 39662306a36Sopenharmony_ci "xclk60mhsp1_ck", 39762306a36Sopenharmony_ci NULL, 39862306a36Sopenharmony_ci}; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_cistatic const char * const omap4_utmi_p2_gfclk_parents[] __initconst = { 40162306a36Sopenharmony_ci "init_60m_fclk", 40262306a36Sopenharmony_ci "xclk60mhsp2_ck", 40362306a36Sopenharmony_ci NULL, 40462306a36Sopenharmony_ci}; 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_usb_host_hs_bit_data[] __initconst = { 40762306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_usb_host_hs_utmi_p1_clk_parents, NULL }, 40862306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap4_usb_host_hs_utmi_p2_clk_parents, NULL }, 40962306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 41062306a36Sopenharmony_ci { 11, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 41162306a36Sopenharmony_ci { 12, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 41262306a36Sopenharmony_ci { 13, TI_CLK_GATE, omap4_usb_host_hs_hsic480m_p1_clk_parents, NULL }, 41362306a36Sopenharmony_ci { 14, TI_CLK_GATE, omap4_usb_host_hs_hsic480m_p1_clk_parents, NULL }, 41462306a36Sopenharmony_ci { 15, TI_CLK_GATE, omap4_dss_48mhz_clk_parents, NULL }, 41562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_utmi_p1_gfclk_parents, NULL }, 41662306a36Sopenharmony_ci { 25, TI_CLK_MUX, omap4_utmi_p2_gfclk_parents, NULL }, 41762306a36Sopenharmony_ci { 0 }, 41862306a36Sopenharmony_ci}; 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_cistatic const char * const omap4_usb_otg_hs_xclk_parents[] __initconst = { 42162306a36Sopenharmony_ci "l3-init-clkctrl:0040:24", 42262306a36Sopenharmony_ci NULL, 42362306a36Sopenharmony_ci}; 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_cistatic const char * const omap4_otg_60m_gfclk_parents[] __initconst = { 42662306a36Sopenharmony_ci "utmi_phy_clkout_ck", 42762306a36Sopenharmony_ci "xclk60motg_ck", 42862306a36Sopenharmony_ci NULL, 42962306a36Sopenharmony_ci}; 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_usb_otg_hs_bit_data[] __initconst = { 43262306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_usb_otg_hs_xclk_parents, NULL }, 43362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_otg_60m_gfclk_parents, NULL }, 43462306a36Sopenharmony_ci { 0 }, 43562306a36Sopenharmony_ci}; 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_usb_tll_hs_bit_data[] __initconst = { 43862306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 43962306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 44062306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap4_usb_host_hs_utmi_p3_clk_parents, NULL }, 44162306a36Sopenharmony_ci { 0 }, 44262306a36Sopenharmony_ci}; 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_cistatic const char * const omap4_ocp2scp_usb_phy_phy_48m_parents[] __initconst = { 44562306a36Sopenharmony_ci "func_48m_fclk", 44662306a36Sopenharmony_ci NULL, 44762306a36Sopenharmony_ci}; 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_ocp2scp_usb_phy_bit_data[] __initconst = { 45062306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_ocp2scp_usb_phy_phy_48m_parents, NULL }, 45162306a36Sopenharmony_ci { 0 }, 45262306a36Sopenharmony_ci}; 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l3_init_clkctrl_regs[] __initconst = { 45562306a36Sopenharmony_ci { OMAP4_MMC1_CLKCTRL, omap4_mmc1_bit_data, CLKF_SW_SUP, "l3-init-clkctrl:0008:24" }, 45662306a36Sopenharmony_ci { OMAP4_MMC2_CLKCTRL, omap4_mmc2_bit_data, CLKF_SW_SUP, "l3-init-clkctrl:0010:24" }, 45762306a36Sopenharmony_ci { OMAP4_HSI_CLKCTRL, omap4_hsi_bit_data, CLKF_HW_SUP, "l3-init-clkctrl:0018:24" }, 45862306a36Sopenharmony_ci { OMAP4_USB_HOST_HS_CLKCTRL, omap4_usb_host_hs_bit_data, CLKF_SW_SUP, "init_60m_fclk" }, 45962306a36Sopenharmony_ci { OMAP4_USB_OTG_HS_CLKCTRL, omap4_usb_otg_hs_bit_data, CLKF_HW_SUP, "l3_div_ck" }, 46062306a36Sopenharmony_ci { OMAP4_USB_TLL_HS_CLKCTRL, omap4_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 46162306a36Sopenharmony_ci { OMAP4_USB_HOST_FS_CLKCTRL, NULL, CLKF_SW_SUP, "func_48mc_fclk" }, 46262306a36Sopenharmony_ci { OMAP4_OCP2SCP_USB_PHY_CLKCTRL, omap4_ocp2scp_usb_phy_bit_data, CLKF_HW_SUP, "l3-init-clkctrl:00c0:8" }, 46362306a36Sopenharmony_ci { 0 }, 46462306a36Sopenharmony_ci}; 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_cistatic const char * const omap4_cm2_dm10_mux_parents[] __initconst = { 46762306a36Sopenharmony_ci "sys_clkin_ck", 46862306a36Sopenharmony_ci "sys_32k_ck", 46962306a36Sopenharmony_ci NULL, 47062306a36Sopenharmony_ci}; 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer10_bit_data[] __initconst = { 47362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 47462306a36Sopenharmony_ci { 0 }, 47562306a36Sopenharmony_ci}; 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer11_bit_data[] __initconst = { 47862306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 47962306a36Sopenharmony_ci { 0 }, 48062306a36Sopenharmony_ci}; 48162306a36Sopenharmony_ci 48262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer2_bit_data[] __initconst = { 48362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 48462306a36Sopenharmony_ci { 0 }, 48562306a36Sopenharmony_ci}; 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer3_bit_data[] __initconst = { 48862306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 48962306a36Sopenharmony_ci { 0 }, 49062306a36Sopenharmony_ci}; 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer4_bit_data[] __initconst = { 49362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 49462306a36Sopenharmony_ci { 0 }, 49562306a36Sopenharmony_ci}; 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer9_bit_data[] __initconst = { 49862306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 49962306a36Sopenharmony_ci { 0 }, 50062306a36Sopenharmony_ci}; 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_cistatic const char * const omap4_gpio2_dbclk_parents[] __initconst = { 50362306a36Sopenharmony_ci "sys_32k_ck", 50462306a36Sopenharmony_ci NULL, 50562306a36Sopenharmony_ci}; 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio2_bit_data[] __initconst = { 50862306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 50962306a36Sopenharmony_ci { 0 }, 51062306a36Sopenharmony_ci}; 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio3_bit_data[] __initconst = { 51362306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 51462306a36Sopenharmony_ci { 0 }, 51562306a36Sopenharmony_ci}; 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio4_bit_data[] __initconst = { 51862306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 51962306a36Sopenharmony_ci { 0 }, 52062306a36Sopenharmony_ci}; 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio5_bit_data[] __initconst = { 52362306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 52462306a36Sopenharmony_ci { 0 }, 52562306a36Sopenharmony_ci}; 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio6_bit_data[] __initconst = { 52862306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 52962306a36Sopenharmony_ci { 0 }, 53062306a36Sopenharmony_ci}; 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_cistatic const char * const omap4_per_mcbsp4_gfclk_parents[] __initconst = { 53362306a36Sopenharmony_ci "l4-per-clkctrl:00c0:26", 53462306a36Sopenharmony_ci "pad_clks_ck", 53562306a36Sopenharmony_ci NULL, 53662306a36Sopenharmony_ci}; 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_cistatic const char * const omap4_mcbsp4_sync_mux_ck_parents[] __initconst = { 53962306a36Sopenharmony_ci "func_96m_fclk", 54062306a36Sopenharmony_ci "per_abe_nc_fclk", 54162306a36Sopenharmony_ci NULL, 54262306a36Sopenharmony_ci}; 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_mcbsp4_bit_data[] __initconst = { 54562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_per_mcbsp4_gfclk_parents, NULL }, 54662306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap4_mcbsp4_sync_mux_ck_parents, NULL }, 54762306a36Sopenharmony_ci { 0 }, 54862306a36Sopenharmony_ci}; 54962306a36Sopenharmony_ci 55062306a36Sopenharmony_cistatic const char * const omap4_slimbus2_fclk_0_parents[] __initconst = { 55162306a36Sopenharmony_ci "func_24mc_fclk", 55262306a36Sopenharmony_ci NULL, 55362306a36Sopenharmony_ci}; 55462306a36Sopenharmony_ci 55562306a36Sopenharmony_cistatic const char * const omap4_slimbus2_fclk_1_parents[] __initconst = { 55662306a36Sopenharmony_ci "per_abe_24m_fclk", 55762306a36Sopenharmony_ci NULL, 55862306a36Sopenharmony_ci}; 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_cistatic const char * const omap4_slimbus2_slimbus_clk_parents[] __initconst = { 56162306a36Sopenharmony_ci "pad_slimbus_core_clks_ck", 56262306a36Sopenharmony_ci NULL, 56362306a36Sopenharmony_ci}; 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_slimbus2_bit_data[] __initconst = { 56662306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_slimbus2_fclk_0_parents, NULL }, 56762306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap4_slimbus2_fclk_1_parents, NULL }, 56862306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap4_slimbus2_slimbus_clk_parents, NULL }, 56962306a36Sopenharmony_ci { 0 }, 57062306a36Sopenharmony_ci}; 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initconst = { 57362306a36Sopenharmony_ci { OMAP4_TIMER10_CLKCTRL, omap4_timer10_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0008:24" }, 57462306a36Sopenharmony_ci { OMAP4_TIMER11_CLKCTRL, omap4_timer11_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0010:24" }, 57562306a36Sopenharmony_ci { OMAP4_TIMER2_CLKCTRL, omap4_timer2_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0018:24" }, 57662306a36Sopenharmony_ci { OMAP4_TIMER3_CLKCTRL, omap4_timer3_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0020:24" }, 57762306a36Sopenharmony_ci { OMAP4_TIMER4_CLKCTRL, omap4_timer4_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0028:24" }, 57862306a36Sopenharmony_ci { OMAP4_TIMER9_CLKCTRL, omap4_timer9_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0030:24" }, 57962306a36Sopenharmony_ci { OMAP4_ELM_CLKCTRL, NULL, 0, "l4_div_ck" }, 58062306a36Sopenharmony_ci { OMAP4_GPIO2_CLKCTRL, omap4_gpio2_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 58162306a36Sopenharmony_ci { OMAP4_GPIO3_CLKCTRL, omap4_gpio3_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 58262306a36Sopenharmony_ci { OMAP4_GPIO4_CLKCTRL, omap4_gpio4_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 58362306a36Sopenharmony_ci { OMAP4_GPIO5_CLKCTRL, omap4_gpio5_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 58462306a36Sopenharmony_ci { OMAP4_GPIO6_CLKCTRL, omap4_gpio6_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 58562306a36Sopenharmony_ci { OMAP4_HDQ1W_CLKCTRL, NULL, CLKF_SW_SUP, "func_12m_fclk" }, 58662306a36Sopenharmony_ci { OMAP4_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 58762306a36Sopenharmony_ci { OMAP4_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 58862306a36Sopenharmony_ci { OMAP4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 58962306a36Sopenharmony_ci { OMAP4_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 59062306a36Sopenharmony_ci { OMAP4_L4_PER_CLKCTRL, NULL, 0, "l4_div_ck" }, 59162306a36Sopenharmony_ci { OMAP4_MCBSP4_CLKCTRL, omap4_mcbsp4_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:00c0:24" }, 59262306a36Sopenharmony_ci { OMAP4_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59362306a36Sopenharmony_ci { OMAP4_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59462306a36Sopenharmony_ci { OMAP4_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59562306a36Sopenharmony_ci { OMAP4_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59662306a36Sopenharmony_ci { OMAP4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59762306a36Sopenharmony_ci { OMAP4_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 59862306a36Sopenharmony_ci { OMAP4_SLIMBUS2_CLKCTRL, omap4_slimbus2_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0118:8" }, 59962306a36Sopenharmony_ci { OMAP4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 60062306a36Sopenharmony_ci { OMAP4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 60162306a36Sopenharmony_ci { OMAP4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 60262306a36Sopenharmony_ci { OMAP4_UART4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 60362306a36Sopenharmony_ci { OMAP4_MMC5_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 60462306a36Sopenharmony_ci { 0 }, 60562306a36Sopenharmony_ci}; 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_cistatic const struct 60862306a36Sopenharmony_ciomap_clkctrl_reg_data omap4_l4_secure_clkctrl_regs[] __initconst = { 60962306a36Sopenharmony_ci { OMAP4_AES1_CLKCTRL, NULL, CLKF_SW_SUP, "l3_div_ck" }, 61062306a36Sopenharmony_ci { OMAP4_AES2_CLKCTRL, NULL, CLKF_SW_SUP, "l3_div_ck" }, 61162306a36Sopenharmony_ci { OMAP4_DES3DES_CLKCTRL, NULL, CLKF_SW_SUP, "l4_div_ck" }, 61262306a36Sopenharmony_ci { OMAP4_PKA_CLKCTRL, NULL, CLKF_SW_SUP, "l4_div_ck" }, 61362306a36Sopenharmony_ci { OMAP4_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "l4_div_ck" }, 61462306a36Sopenharmony_ci { OMAP4_SHA2MD5_CLKCTRL, NULL, CLKF_SW_SUP, "l3_div_ck" }, 61562306a36Sopenharmony_ci { OMAP4_CRYPTODMA_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "l3_div_ck" }, 61662306a36Sopenharmony_ci { 0 }, 61762306a36Sopenharmony_ci}; 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_gpio1_bit_data[] __initconst = { 62062306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 62162306a36Sopenharmony_ci { 0 }, 62262306a36Sopenharmony_ci}; 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_timer1_bit_data[] __initconst = { 62562306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap4_cm2_dm10_mux_parents, NULL }, 62662306a36Sopenharmony_ci { 0 }, 62762306a36Sopenharmony_ci}; 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_l4_wkup_clkctrl_regs[] __initconst = { 63062306a36Sopenharmony_ci { OMAP4_L4_WKUP_CLKCTRL, NULL, 0, "l4_wkup_clk_mux_ck" }, 63162306a36Sopenharmony_ci { OMAP4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 63262306a36Sopenharmony_ci { OMAP4_GPIO1_CLKCTRL, omap4_gpio1_bit_data, CLKF_HW_SUP, "l4_wkup_clk_mux_ck" }, 63362306a36Sopenharmony_ci { OMAP4_TIMER1_CLKCTRL, omap4_timer1_bit_data, CLKF_SW_SUP, "l4-wkup-clkctrl:0020:24" }, 63462306a36Sopenharmony_ci { OMAP4_COUNTER_32K_CLKCTRL, NULL, 0, "sys_32k_ck" }, 63562306a36Sopenharmony_ci { OMAP4_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 63662306a36Sopenharmony_ci { 0 }, 63762306a36Sopenharmony_ci}; 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_cistatic const char * const omap4_pmd_stm_clock_mux_ck_parents[] __initconst = { 64062306a36Sopenharmony_ci "sys_clkin_ck", 64162306a36Sopenharmony_ci "dpll_core_m6x2_ck", 64262306a36Sopenharmony_ci "tie_low_clock_ck", 64362306a36Sopenharmony_ci NULL, 64462306a36Sopenharmony_ci}; 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_cistatic const char * const omap4_trace_clk_div_div_ck_parents[] __initconst = { 64762306a36Sopenharmony_ci "emu-sys-clkctrl:0000:22", 64862306a36Sopenharmony_ci NULL, 64962306a36Sopenharmony_ci}; 65062306a36Sopenharmony_ci 65162306a36Sopenharmony_cistatic const int omap4_trace_clk_div_div_ck_divs[] __initconst = { 65262306a36Sopenharmony_ci 0, 65362306a36Sopenharmony_ci 1, 65462306a36Sopenharmony_ci 2, 65562306a36Sopenharmony_ci 0, 65662306a36Sopenharmony_ci 4, 65762306a36Sopenharmony_ci -1, 65862306a36Sopenharmony_ci}; 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap4_trace_clk_div_div_ck_data __initconst = { 66162306a36Sopenharmony_ci .dividers = omap4_trace_clk_div_div_ck_divs, 66262306a36Sopenharmony_ci}; 66362306a36Sopenharmony_ci 66462306a36Sopenharmony_cistatic const char * const omap4_stm_clk_div_ck_parents[] __initconst = { 66562306a36Sopenharmony_ci "emu-sys-clkctrl:0000:20", 66662306a36Sopenharmony_ci NULL, 66762306a36Sopenharmony_ci}; 66862306a36Sopenharmony_ci 66962306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap4_stm_clk_div_ck_data __initconst = { 67062306a36Sopenharmony_ci .max_div = 64, 67162306a36Sopenharmony_ci .flags = CLK_DIVIDER_POWER_OF_TWO, 67262306a36Sopenharmony_ci}; 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap4_debugss_bit_data[] __initconst = { 67562306a36Sopenharmony_ci { 20, TI_CLK_MUX, omap4_pmd_stm_clock_mux_ck_parents, NULL }, 67662306a36Sopenharmony_ci { 22, TI_CLK_MUX, omap4_pmd_stm_clock_mux_ck_parents, NULL }, 67762306a36Sopenharmony_ci { 24, TI_CLK_DIVIDER, omap4_trace_clk_div_div_ck_parents, &omap4_trace_clk_div_div_ck_data }, 67862306a36Sopenharmony_ci { 27, TI_CLK_DIVIDER, omap4_stm_clk_div_ck_parents, &omap4_stm_clk_div_ck_data }, 67962306a36Sopenharmony_ci { 0 }, 68062306a36Sopenharmony_ci}; 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap4_emu_sys_clkctrl_regs[] __initconst = { 68362306a36Sopenharmony_ci { OMAP4_DEBUGSS_CLKCTRL, omap4_debugss_bit_data, 0, "trace_clk_div_ck" }, 68462306a36Sopenharmony_ci { 0 }, 68562306a36Sopenharmony_ci}; 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ciconst struct omap_clkctrl_data omap4_clkctrl_data[] __initconst = { 68862306a36Sopenharmony_ci { 0x4a004320, omap4_mpuss_clkctrl_regs }, 68962306a36Sopenharmony_ci { 0x4a004420, omap4_tesla_clkctrl_regs }, 69062306a36Sopenharmony_ci { 0x4a004520, omap4_abe_clkctrl_regs }, 69162306a36Sopenharmony_ci { 0x4a008620, omap4_l4_ao_clkctrl_regs }, 69262306a36Sopenharmony_ci { 0x4a008720, omap4_l3_1_clkctrl_regs }, 69362306a36Sopenharmony_ci { 0x4a008820, omap4_l3_2_clkctrl_regs }, 69462306a36Sopenharmony_ci { 0x4a008920, omap4_ducati_clkctrl_regs }, 69562306a36Sopenharmony_ci { 0x4a008a20, omap4_l3_dma_clkctrl_regs }, 69662306a36Sopenharmony_ci { 0x4a008b20, omap4_l3_emif_clkctrl_regs }, 69762306a36Sopenharmony_ci { 0x4a008c20, omap4_d2d_clkctrl_regs }, 69862306a36Sopenharmony_ci { 0x4a008d20, omap4_l4_cfg_clkctrl_regs }, 69962306a36Sopenharmony_ci { 0x4a008e20, omap4_l3_instr_clkctrl_regs }, 70062306a36Sopenharmony_ci { 0x4a008f20, omap4_ivahd_clkctrl_regs }, 70162306a36Sopenharmony_ci { 0x4a009020, omap4_iss_clkctrl_regs }, 70262306a36Sopenharmony_ci { 0x4a009120, omap4_l3_dss_clkctrl_regs }, 70362306a36Sopenharmony_ci { 0x4a009220, omap4_l3_gfx_clkctrl_regs }, 70462306a36Sopenharmony_ci { 0x4a009320, omap4_l3_init_clkctrl_regs }, 70562306a36Sopenharmony_ci { 0x4a009420, omap4_l4_per_clkctrl_regs }, 70662306a36Sopenharmony_ci { 0x4a0095a0, omap4_l4_secure_clkctrl_regs }, 70762306a36Sopenharmony_ci { 0x4a307820, omap4_l4_wkup_clkctrl_regs }, 70862306a36Sopenharmony_ci { 0x4a307a20, omap4_emu_sys_clkctrl_regs }, 70962306a36Sopenharmony_ci { 0 }, 71062306a36Sopenharmony_ci}; 71162306a36Sopenharmony_ci 71262306a36Sopenharmony_cistatic struct ti_dt_clk omap44xx_clks[] = { 71362306a36Sopenharmony_ci DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"), 71462306a36Sopenharmony_ci /* 71562306a36Sopenharmony_ci * XXX: All the clock aliases below are only needed for legacy 71662306a36Sopenharmony_ci * hwmod support. Once hwmod is removed, these can be removed 71762306a36Sopenharmony_ci * also. 71862306a36Sopenharmony_ci */ 71962306a36Sopenharmony_ci DT_CLK(NULL, "aess_fclk", "abe-clkctrl:0008:24"), 72062306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm10_mux", "l4-per-clkctrl:0008:24"), 72162306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm11_mux", "l4-per-clkctrl:0010:24"), 72262306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm2_mux", "l4-per-clkctrl:0018:24"), 72362306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm3_mux", "l4-per-clkctrl:0020:24"), 72462306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm4_mux", "l4-per-clkctrl:0028:24"), 72562306a36Sopenharmony_ci DT_CLK(NULL, "cm2_dm9_mux", "l4-per-clkctrl:0030:24"), 72662306a36Sopenharmony_ci DT_CLK(NULL, "dmic_sync_mux_ck", "abe-clkctrl:0018:26"), 72762306a36Sopenharmony_ci DT_CLK(NULL, "dmt1_clk_mux", "l4-wkup-clkctrl:0020:24"), 72862306a36Sopenharmony_ci DT_CLK(NULL, "dss_48mhz_clk", "l3-dss-clkctrl:0000:9"), 72962306a36Sopenharmony_ci DT_CLK(NULL, "dss_dss_clk", "l3-dss-clkctrl:0000:8"), 73062306a36Sopenharmony_ci DT_CLK(NULL, "dss_sys_clk", "l3-dss-clkctrl:0000:10"), 73162306a36Sopenharmony_ci DT_CLK(NULL, "dss_tv_clk", "l3-dss-clkctrl:0000:11"), 73262306a36Sopenharmony_ci DT_CLK(NULL, "fdif_fck", "iss-clkctrl:0008:24"), 73362306a36Sopenharmony_ci DT_CLK(NULL, "func_dmic_abe_gfclk", "abe-clkctrl:0018:24"), 73462306a36Sopenharmony_ci DT_CLK(NULL, "func_mcasp_abe_gfclk", "abe-clkctrl:0020:24"), 73562306a36Sopenharmony_ci DT_CLK(NULL, "func_mcbsp1_gfclk", "abe-clkctrl:0028:24"), 73662306a36Sopenharmony_ci DT_CLK(NULL, "func_mcbsp2_gfclk", "abe-clkctrl:0030:24"), 73762306a36Sopenharmony_ci DT_CLK(NULL, "func_mcbsp3_gfclk", "abe-clkctrl:0038:24"), 73862306a36Sopenharmony_ci DT_CLK(NULL, "gpio1_dbclk", "l4-wkup-clkctrl:0018:8"), 73962306a36Sopenharmony_ci DT_CLK(NULL, "gpio2_dbclk", "l4-per-clkctrl:0040:8"), 74062306a36Sopenharmony_ci DT_CLK(NULL, "gpio3_dbclk", "l4-per-clkctrl:0048:8"), 74162306a36Sopenharmony_ci DT_CLK(NULL, "gpio4_dbclk", "l4-per-clkctrl:0050:8"), 74262306a36Sopenharmony_ci DT_CLK(NULL, "gpio5_dbclk", "l4-per-clkctrl:0058:8"), 74362306a36Sopenharmony_ci DT_CLK(NULL, "gpio6_dbclk", "l4-per-clkctrl:0060:8"), 74462306a36Sopenharmony_ci DT_CLK(NULL, "hsi_fck", "l3-init-clkctrl:0018:24"), 74562306a36Sopenharmony_ci DT_CLK(NULL, "hsmmc1_fclk", "l3-init-clkctrl:0008:24"), 74662306a36Sopenharmony_ci DT_CLK(NULL, "hsmmc2_fclk", "l3-init-clkctrl:0010:24"), 74762306a36Sopenharmony_ci DT_CLK(NULL, "iss_ctrlclk", "iss-clkctrl:0000:8"), 74862306a36Sopenharmony_ci DT_CLK(NULL, "mcasp_sync_mux_ck", "abe-clkctrl:0020:26"), 74962306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe-clkctrl:0028:26"), 75062306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe-clkctrl:0030:26"), 75162306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe-clkctrl:0038:26"), 75262306a36Sopenharmony_ci DT_CLK("40122000.mcbsp", "prcm_fck", "abe-clkctrl:0028:26"), 75362306a36Sopenharmony_ci DT_CLK("40124000.mcbsp", "prcm_fck", "abe-clkctrl:0030:26"), 75462306a36Sopenharmony_ci DT_CLK("40126000.mcbsp", "prcm_fck", "abe-clkctrl:0038:26"), 75562306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp4_sync_mux_ck", "l4-per-clkctrl:00c0:26"), 75662306a36Sopenharmony_ci DT_CLK("48096000.mcbsp", "prcm_fck", "l4-per-clkctrl:00c0:26"), 75762306a36Sopenharmony_ci DT_CLK(NULL, "ocp2scp_usb_phy_phy_48m", "l3-init-clkctrl:00c0:8"), 75862306a36Sopenharmony_ci DT_CLK(NULL, "otg_60m_gfclk", "l3-init-clkctrl:0040:24"), 75962306a36Sopenharmony_ci DT_CLK(NULL, "pad_fck", "pad_clks_ck"), 76062306a36Sopenharmony_ci DT_CLK(NULL, "per_mcbsp4_gfclk", "l4-per-clkctrl:00c0:24"), 76162306a36Sopenharmony_ci DT_CLK(NULL, "pmd_stm_clock_mux_ck", "emu-sys-clkctrl:0000:20"), 76262306a36Sopenharmony_ci DT_CLK(NULL, "pmd_trace_clk_mux_ck", "emu-sys-clkctrl:0000:22"), 76362306a36Sopenharmony_ci DT_CLK(NULL, "sgx_clk_mux", "l3-gfx-clkctrl:0000:24"), 76462306a36Sopenharmony_ci DT_CLK(NULL, "slimbus1_fclk_0", "abe-clkctrl:0040:8"), 76562306a36Sopenharmony_ci DT_CLK(NULL, "slimbus1_fclk_1", "abe-clkctrl:0040:9"), 76662306a36Sopenharmony_ci DT_CLK(NULL, "slimbus1_fclk_2", "abe-clkctrl:0040:10"), 76762306a36Sopenharmony_ci DT_CLK(NULL, "slimbus1_slimbus_clk", "abe-clkctrl:0040:11"), 76862306a36Sopenharmony_ci DT_CLK(NULL, "slimbus2_fclk_0", "l4-per-clkctrl:0118:8"), 76962306a36Sopenharmony_ci DT_CLK(NULL, "slimbus2_fclk_1", "l4-per-clkctrl:0118:9"), 77062306a36Sopenharmony_ci DT_CLK(NULL, "slimbus2_slimbus_clk", "l4-per-clkctrl:0118:10"), 77162306a36Sopenharmony_ci DT_CLK(NULL, "stm_clk_div_ck", "emu-sys-clkctrl:0000:27"), 77262306a36Sopenharmony_ci DT_CLK(NULL, "timer5_sync_mux", "abe-clkctrl:0048:24"), 77362306a36Sopenharmony_ci DT_CLK(NULL, "timer6_sync_mux", "abe-clkctrl:0050:24"), 77462306a36Sopenharmony_ci DT_CLK(NULL, "timer7_sync_mux", "abe-clkctrl:0058:24"), 77562306a36Sopenharmony_ci DT_CLK(NULL, "timer8_sync_mux", "abe-clkctrl:0060:24"), 77662306a36Sopenharmony_ci DT_CLK(NULL, "trace_clk_div_div_ck", "emu-sys-clkctrl:0000:24"), 77762306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_func48mclk", "l3-init-clkctrl:0038:15"), 77862306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3-init-clkctrl:0038:13"), 77962306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3-init-clkctrl:0038:14"), 78062306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3-init-clkctrl:0038:11"), 78162306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3-init-clkctrl:0038:12"), 78262306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3-init-clkctrl:0038:8"), 78362306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3-init-clkctrl:0038:9"), 78462306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3_init-clkctrl:0038:10"), 78562306a36Sopenharmony_ci DT_CLK(NULL, "usb_otg_hs_xclk", "l3-init-clkctrl:0040:8"), 78662306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3-init-clkctrl:0048:8"), 78762306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3-init-clkctrl:0048:9"), 78862306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3-init-clkctrl:0048:10"), 78962306a36Sopenharmony_ci DT_CLK(NULL, "utmi_p1_gfclk", "l3-init-clkctrl:0038:24"), 79062306a36Sopenharmony_ci DT_CLK(NULL, "utmi_p2_gfclk", "l3-init-clkctrl:0038:25"), 79162306a36Sopenharmony_ci { .node_name = NULL }, 79262306a36Sopenharmony_ci}; 79362306a36Sopenharmony_ci 79462306a36Sopenharmony_ciint __init omap4xxx_dt_clk_init(void) 79562306a36Sopenharmony_ci{ 79662306a36Sopenharmony_ci int rc; 79762306a36Sopenharmony_ci struct clk *abe_dpll_ref, *abe_dpll, *sys_32k_ck, *usb_dpll; 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci ti_dt_clocks_register(omap44xx_clks); 80062306a36Sopenharmony_ci 80162306a36Sopenharmony_ci omap2_clk_disable_autoidle_all(); 80262306a36Sopenharmony_ci 80362306a36Sopenharmony_ci ti_clk_add_aliases(); 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ci /* 80662306a36Sopenharmony_ci * Lock USB DPLL on OMAP4 devices so that the L3INIT power 80762306a36Sopenharmony_ci * domain can transition to retention state when not in use. 80862306a36Sopenharmony_ci */ 80962306a36Sopenharmony_ci usb_dpll = clk_get_sys(NULL, "dpll_usb_ck"); 81062306a36Sopenharmony_ci rc = clk_set_rate(usb_dpll, OMAP4_DPLL_USB_DEFFREQ); 81162306a36Sopenharmony_ci if (rc) 81262306a36Sopenharmony_ci pr_err("%s: failed to configure USB DPLL!\n", __func__); 81362306a36Sopenharmony_ci 81462306a36Sopenharmony_ci /* 81562306a36Sopenharmony_ci * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power 81662306a36Sopenharmony_ci * state when turning the ABE clock domain. Workaround this by 81762306a36Sopenharmony_ci * locking the ABE DPLL on boot. 81862306a36Sopenharmony_ci * Lock the ABE DPLL in any case to avoid issues with audio. 81962306a36Sopenharmony_ci */ 82062306a36Sopenharmony_ci abe_dpll_ref = clk_get_sys(NULL, "abe_dpll_refclk_mux_ck"); 82162306a36Sopenharmony_ci sys_32k_ck = clk_get_sys(NULL, "sys_32k_ck"); 82262306a36Sopenharmony_ci rc = clk_set_parent(abe_dpll_ref, sys_32k_ck); 82362306a36Sopenharmony_ci abe_dpll = clk_get_sys(NULL, "dpll_abe_ck"); 82462306a36Sopenharmony_ci if (!rc) 82562306a36Sopenharmony_ci rc = clk_set_rate(abe_dpll, OMAP4_DPLL_ABE_DEFFREQ); 82662306a36Sopenharmony_ci if (rc) 82762306a36Sopenharmony_ci pr_err("%s: failed to configure ABE DPLL!\n", __func__); 82862306a36Sopenharmony_ci 82962306a36Sopenharmony_ci return 0; 83062306a36Sopenharmony_ci} 831