162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * OMAP5 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/io.h> 1562306a36Sopenharmony_ci#include <linux/clk/ti.h> 1662306a36Sopenharmony_ci#include <dt-bindings/clock/omap5.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#include "clock.h" 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define OMAP5_DPLL_ABE_DEFFREQ 98304000 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* 2362306a36Sopenharmony_ci * OMAP543x TRM, section "3.6.3.9.5 DPLL_USB Preferred Settings" 2462306a36Sopenharmony_ci * states it must be at 960MHz 2562306a36Sopenharmony_ci */ 2662306a36Sopenharmony_ci#define OMAP5_DPLL_USB_DEFFREQ 960000000 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_mpu_clkctrl_regs[] __initconst = { 2962306a36Sopenharmony_ci { OMAP5_MPU_CLKCTRL, NULL, 0, "dpll_mpu_m2_ck" }, 3062306a36Sopenharmony_ci { 0 }, 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_dsp_clkctrl_regs[] __initconst = { 3462306a36Sopenharmony_ci { OMAP5_MMU_DSP_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_iva_h11x2_ck" }, 3562306a36Sopenharmony_ci { 0 }, 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistatic const char * const omap5_aess_fclk_parents[] __initconst = { 3962306a36Sopenharmony_ci "abe_clk", 4062306a36Sopenharmony_ci NULL, 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap5_aess_fclk_data __initconst = { 4462306a36Sopenharmony_ci .max_div = 2, 4562306a36Sopenharmony_ci}; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_aess_bit_data[] __initconst = { 4862306a36Sopenharmony_ci { 24, TI_CLK_DIVIDER, omap5_aess_fclk_parents, &omap5_aess_fclk_data }, 4962306a36Sopenharmony_ci { 0 }, 5062306a36Sopenharmony_ci}; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistatic const char * const omap5_dmic_gfclk_parents[] __initconst = { 5362306a36Sopenharmony_ci "abe-clkctrl:0018:26", 5462306a36Sopenharmony_ci "pad_clks_ck", 5562306a36Sopenharmony_ci "slimbus_clk", 5662306a36Sopenharmony_ci NULL, 5762306a36Sopenharmony_ci}; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistatic const char * const omap5_dmic_sync_mux_ck_parents[] __initconst = { 6062306a36Sopenharmony_ci "abe_24m_fclk", 6162306a36Sopenharmony_ci "dss_syc_gfclk_div", 6262306a36Sopenharmony_ci "func_24m_clk", 6362306a36Sopenharmony_ci NULL, 6462306a36Sopenharmony_ci}; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_dmic_bit_data[] __initconst = { 6762306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_dmic_gfclk_parents, NULL }, 6862306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL }, 6962306a36Sopenharmony_ci { 0 }, 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistatic const char * const omap5_mcbsp1_gfclk_parents[] __initconst = { 7362306a36Sopenharmony_ci "abe-clkctrl:0028:26", 7462306a36Sopenharmony_ci "pad_clks_ck", 7562306a36Sopenharmony_ci "slimbus_clk", 7662306a36Sopenharmony_ci NULL, 7762306a36Sopenharmony_ci}; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_mcbsp1_bit_data[] __initconst = { 8062306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_mcbsp1_gfclk_parents, NULL }, 8162306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL }, 8262306a36Sopenharmony_ci { 0 }, 8362306a36Sopenharmony_ci}; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistatic const char * const omap5_mcbsp2_gfclk_parents[] __initconst = { 8662306a36Sopenharmony_ci "abe-clkctrl:0030:26", 8762306a36Sopenharmony_ci "pad_clks_ck", 8862306a36Sopenharmony_ci "slimbus_clk", 8962306a36Sopenharmony_ci NULL, 9062306a36Sopenharmony_ci}; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_mcbsp2_bit_data[] __initconst = { 9362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_mcbsp2_gfclk_parents, NULL }, 9462306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL }, 9562306a36Sopenharmony_ci { 0 }, 9662306a36Sopenharmony_ci}; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_cistatic const char * const omap5_mcbsp3_gfclk_parents[] __initconst = { 9962306a36Sopenharmony_ci "abe-clkctrl:0038:26", 10062306a36Sopenharmony_ci "pad_clks_ck", 10162306a36Sopenharmony_ci "slimbus_clk", 10262306a36Sopenharmony_ci NULL, 10362306a36Sopenharmony_ci}; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_mcbsp3_bit_data[] __initconst = { 10662306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_mcbsp3_gfclk_parents, NULL }, 10762306a36Sopenharmony_ci { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL }, 10862306a36Sopenharmony_ci { 0 }, 10962306a36Sopenharmony_ci}; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_cistatic const char * const omap5_timer5_gfclk_mux_parents[] __initconst = { 11262306a36Sopenharmony_ci "dss_syc_gfclk_div", 11362306a36Sopenharmony_ci "sys_32k_ck", 11462306a36Sopenharmony_ci NULL, 11562306a36Sopenharmony_ci}; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer5_bit_data[] __initconst = { 11862306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL }, 11962306a36Sopenharmony_ci { 0 }, 12062306a36Sopenharmony_ci}; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer6_bit_data[] __initconst = { 12362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL }, 12462306a36Sopenharmony_ci { 0 }, 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer7_bit_data[] __initconst = { 12862306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL }, 12962306a36Sopenharmony_ci { 0 }, 13062306a36Sopenharmony_ci}; 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer8_bit_data[] __initconst = { 13362306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL }, 13462306a36Sopenharmony_ci { 0 }, 13562306a36Sopenharmony_ci}; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_abe_clkctrl_regs[] __initconst = { 13862306a36Sopenharmony_ci { OMAP5_L4_ABE_CLKCTRL, NULL, 0, "abe_iclk" }, 13962306a36Sopenharmony_ci { OMAP5_AESS_CLKCTRL, omap5_aess_bit_data, CLKF_SW_SUP, "abe-clkctrl:0008:24" }, 14062306a36Sopenharmony_ci { OMAP5_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" }, 14162306a36Sopenharmony_ci { OMAP5_DMIC_CLKCTRL, omap5_dmic_bit_data, CLKF_SW_SUP, "abe-clkctrl:0018:24" }, 14262306a36Sopenharmony_ci { OMAP5_MCBSP1_CLKCTRL, omap5_mcbsp1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0028:24" }, 14362306a36Sopenharmony_ci { OMAP5_MCBSP2_CLKCTRL, omap5_mcbsp2_bit_data, CLKF_SW_SUP, "abe-clkctrl:0030:24" }, 14462306a36Sopenharmony_ci { OMAP5_MCBSP3_CLKCTRL, omap5_mcbsp3_bit_data, CLKF_SW_SUP, "abe-clkctrl:0038:24" }, 14562306a36Sopenharmony_ci { OMAP5_TIMER5_CLKCTRL, omap5_timer5_bit_data, CLKF_SW_SUP, "abe-clkctrl:0048:24" }, 14662306a36Sopenharmony_ci { OMAP5_TIMER6_CLKCTRL, omap5_timer6_bit_data, CLKF_SW_SUP, "abe-clkctrl:0050:24" }, 14762306a36Sopenharmony_ci { OMAP5_TIMER7_CLKCTRL, omap5_timer7_bit_data, CLKF_SW_SUP, "abe-clkctrl:0058:24" }, 14862306a36Sopenharmony_ci { OMAP5_TIMER8_CLKCTRL, omap5_timer8_bit_data, CLKF_SW_SUP, "abe-clkctrl:0060:24" }, 14962306a36Sopenharmony_ci { 0 }, 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l3main1_clkctrl_regs[] __initconst = { 15362306a36Sopenharmony_ci { OMAP5_L3_MAIN_1_CLKCTRL, NULL, 0, "l3_iclk_div" }, 15462306a36Sopenharmony_ci { 0 }, 15562306a36Sopenharmony_ci}; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l3main2_clkctrl_regs[] __initconst = { 15862306a36Sopenharmony_ci { OMAP5_L3_MAIN_2_CLKCTRL, NULL, 0, "l3_iclk_div" }, 15962306a36Sopenharmony_ci { OMAP5_L3_MAIN_2_GPMC_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 16062306a36Sopenharmony_ci { OMAP5_L3_MAIN_2_OCMC_RAM_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 16162306a36Sopenharmony_ci { 0 }, 16262306a36Sopenharmony_ci}; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_ipu_clkctrl_regs[] __initconst = { 16562306a36Sopenharmony_ci { OMAP5_MMU_IPU_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_core_h22x2_ck" }, 16662306a36Sopenharmony_ci { 0 }, 16762306a36Sopenharmony_ci}; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_dma_clkctrl_regs[] __initconst = { 17062306a36Sopenharmony_ci { OMAP5_DMA_SYSTEM_CLKCTRL, NULL, 0, "l3_iclk_div" }, 17162306a36Sopenharmony_ci { 0 }, 17262306a36Sopenharmony_ci}; 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_emif_clkctrl_regs[] __initconst = { 17562306a36Sopenharmony_ci { OMAP5_DMM_CLKCTRL, NULL, 0, "l3_iclk_div" }, 17662306a36Sopenharmony_ci { OMAP5_EMIF1_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h11x2_ck" }, 17762306a36Sopenharmony_ci { OMAP5_EMIF2_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h11x2_ck" }, 17862306a36Sopenharmony_ci { 0 }, 17962306a36Sopenharmony_ci}; 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l4cfg_clkctrl_regs[] __initconst = { 18262306a36Sopenharmony_ci { OMAP5_L4_CFG_CLKCTRL, NULL, 0, "l4_root_clk_div" }, 18362306a36Sopenharmony_ci { OMAP5_SPINLOCK_CLKCTRL, NULL, 0, "l4_root_clk_div" }, 18462306a36Sopenharmony_ci { OMAP5_MAILBOX_CLKCTRL, NULL, 0, "l4_root_clk_div" }, 18562306a36Sopenharmony_ci { 0 }, 18662306a36Sopenharmony_ci}; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l3instr_clkctrl_regs[] __initconst = { 18962306a36Sopenharmony_ci { OMAP5_L3_MAIN_3_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 19062306a36Sopenharmony_ci { OMAP5_L3_INSTR_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 19162306a36Sopenharmony_ci { 0 }, 19262306a36Sopenharmony_ci}; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_cistatic const char * const omap5_timer10_gfclk_mux_parents[] __initconst = { 19562306a36Sopenharmony_ci "sys_clkin", 19662306a36Sopenharmony_ci "sys_32k_ck", 19762306a36Sopenharmony_ci NULL, 19862306a36Sopenharmony_ci}; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer10_bit_data[] __initconst = { 20162306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 20262306a36Sopenharmony_ci { 0 }, 20362306a36Sopenharmony_ci}; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer11_bit_data[] __initconst = { 20662306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 20762306a36Sopenharmony_ci { 0 }, 20862306a36Sopenharmony_ci}; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer2_bit_data[] __initconst = { 21162306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 21262306a36Sopenharmony_ci { 0 }, 21362306a36Sopenharmony_ci}; 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer3_bit_data[] __initconst = { 21662306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 21762306a36Sopenharmony_ci { 0 }, 21862306a36Sopenharmony_ci}; 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer4_bit_data[] __initconst = { 22162306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 22262306a36Sopenharmony_ci { 0 }, 22362306a36Sopenharmony_ci}; 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer9_bit_data[] __initconst = { 22662306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 22762306a36Sopenharmony_ci { 0 }, 22862306a36Sopenharmony_ci}; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_cistatic const char * const omap5_gpio2_dbclk_parents[] __initconst = { 23162306a36Sopenharmony_ci "sys_32k_ck", 23262306a36Sopenharmony_ci NULL, 23362306a36Sopenharmony_ci}; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio2_bit_data[] __initconst = { 23662306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 23762306a36Sopenharmony_ci { 0 }, 23862306a36Sopenharmony_ci}; 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio3_bit_data[] __initconst = { 24162306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 24262306a36Sopenharmony_ci { 0 }, 24362306a36Sopenharmony_ci}; 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio4_bit_data[] __initconst = { 24662306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 24762306a36Sopenharmony_ci { 0 }, 24862306a36Sopenharmony_ci}; 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio5_bit_data[] __initconst = { 25162306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 25262306a36Sopenharmony_ci { 0 }, 25362306a36Sopenharmony_ci}; 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio6_bit_data[] __initconst = { 25662306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 25762306a36Sopenharmony_ci { 0 }, 25862306a36Sopenharmony_ci}; 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio7_bit_data[] __initconst = { 26162306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 26262306a36Sopenharmony_ci { 0 }, 26362306a36Sopenharmony_ci}; 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio8_bit_data[] __initconst = { 26662306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 26762306a36Sopenharmony_ci { 0 }, 26862306a36Sopenharmony_ci}; 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l4per_clkctrl_regs[] __initconst = { 27162306a36Sopenharmony_ci { OMAP5_TIMER10_CLKCTRL, omap5_timer10_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0008:24" }, 27262306a36Sopenharmony_ci { OMAP5_TIMER11_CLKCTRL, omap5_timer11_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0010:24" }, 27362306a36Sopenharmony_ci { OMAP5_TIMER2_CLKCTRL, omap5_timer2_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0018:24" }, 27462306a36Sopenharmony_ci { OMAP5_TIMER3_CLKCTRL, omap5_timer3_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0020:24" }, 27562306a36Sopenharmony_ci { OMAP5_TIMER4_CLKCTRL, omap5_timer4_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0028:24" }, 27662306a36Sopenharmony_ci { OMAP5_TIMER9_CLKCTRL, omap5_timer9_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0030:24" }, 27762306a36Sopenharmony_ci { OMAP5_GPIO2_CLKCTRL, omap5_gpio2_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 27862306a36Sopenharmony_ci { OMAP5_GPIO3_CLKCTRL, omap5_gpio3_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 27962306a36Sopenharmony_ci { OMAP5_GPIO4_CLKCTRL, omap5_gpio4_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 28062306a36Sopenharmony_ci { OMAP5_GPIO5_CLKCTRL, omap5_gpio5_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 28162306a36Sopenharmony_ci { OMAP5_GPIO6_CLKCTRL, omap5_gpio6_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 28262306a36Sopenharmony_ci { OMAP5_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 28362306a36Sopenharmony_ci { OMAP5_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 28462306a36Sopenharmony_ci { OMAP5_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 28562306a36Sopenharmony_ci { OMAP5_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 28662306a36Sopenharmony_ci { OMAP5_L4_PER_CLKCTRL, NULL, 0, "l4_root_clk_div" }, 28762306a36Sopenharmony_ci { OMAP5_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 28862306a36Sopenharmony_ci { OMAP5_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 28962306a36Sopenharmony_ci { OMAP5_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29062306a36Sopenharmony_ci { OMAP5_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29162306a36Sopenharmony_ci { OMAP5_GPIO7_CLKCTRL, omap5_gpio7_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 29262306a36Sopenharmony_ci { OMAP5_GPIO8_CLKCTRL, omap5_gpio8_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 29362306a36Sopenharmony_ci { OMAP5_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29462306a36Sopenharmony_ci { OMAP5_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29562306a36Sopenharmony_ci { OMAP5_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29662306a36Sopenharmony_ci { OMAP5_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29762306a36Sopenharmony_ci { OMAP5_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29862306a36Sopenharmony_ci { OMAP5_UART4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 29962306a36Sopenharmony_ci { OMAP5_MMC5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 30062306a36Sopenharmony_ci { OMAP5_I2C5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 30162306a36Sopenharmony_ci { OMAP5_UART5_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 30262306a36Sopenharmony_ci { OMAP5_UART6_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 30362306a36Sopenharmony_ci { 0 }, 30462306a36Sopenharmony_ci}; 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_cistatic const struct 30762306a36Sopenharmony_ciomap_clkctrl_reg_data omap5_l4_secure_clkctrl_regs[] __initconst = { 30862306a36Sopenharmony_ci { OMAP5_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 30962306a36Sopenharmony_ci { OMAP5_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 31062306a36Sopenharmony_ci { OMAP5_DES3DES_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" }, 31162306a36Sopenharmony_ci { OMAP5_FPKA_CLKCTRL, NULL, CLKF_SW_SUP, "l4_root_clk_div" }, 31262306a36Sopenharmony_ci { OMAP5_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "l4_root_clk_div" }, 31362306a36Sopenharmony_ci { OMAP5_SHA2MD5_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 31462306a36Sopenharmony_ci { OMAP5_DMA_CRYPTO_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "l3_iclk_div" }, 31562306a36Sopenharmony_ci { 0 }, 31662306a36Sopenharmony_ci}; 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_iva_clkctrl_regs[] __initconst = { 31962306a36Sopenharmony_ci { OMAP5_IVA_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_h12x2_ck" }, 32062306a36Sopenharmony_ci { OMAP5_SL2IF_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_h12x2_ck" }, 32162306a36Sopenharmony_ci { 0 }, 32262306a36Sopenharmony_ci}; 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_cistatic const char * const omap5_dss_dss_clk_parents[] __initconst = { 32562306a36Sopenharmony_ci "dpll_per_h12x2_ck", 32662306a36Sopenharmony_ci NULL, 32762306a36Sopenharmony_ci}; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_cistatic const char * const omap5_dss_48mhz_clk_parents[] __initconst = { 33062306a36Sopenharmony_ci "func_48m_fclk", 33162306a36Sopenharmony_ci NULL, 33262306a36Sopenharmony_ci}; 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_cistatic const char * const omap5_dss_sys_clk_parents[] __initconst = { 33562306a36Sopenharmony_ci "dss_syc_gfclk_div", 33662306a36Sopenharmony_ci NULL, 33762306a36Sopenharmony_ci}; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_dss_core_bit_data[] __initconst = { 34062306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_dss_dss_clk_parents, NULL }, 34162306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap5_dss_48mhz_clk_parents, NULL }, 34262306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap5_dss_sys_clk_parents, NULL }, 34362306a36Sopenharmony_ci { 11, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 34462306a36Sopenharmony_ci { 0 }, 34562306a36Sopenharmony_ci}; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_dss_clkctrl_regs[] __initconst = { 34862306a36Sopenharmony_ci { OMAP5_DSS_CORE_CLKCTRL, omap5_dss_core_bit_data, CLKF_SW_SUP, "dss-clkctrl:0000:8" }, 34962306a36Sopenharmony_ci { 0 }, 35062306a36Sopenharmony_ci}; 35162306a36Sopenharmony_ci 35262306a36Sopenharmony_cistatic const char * const omap5_gpu_core_mux_parents[] __initconst = { 35362306a36Sopenharmony_ci "dpll_core_h14x2_ck", 35462306a36Sopenharmony_ci "dpll_per_h14x2_ck", 35562306a36Sopenharmony_ci NULL, 35662306a36Sopenharmony_ci}; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_cistatic const char * const omap5_gpu_hyd_mux_parents[] __initconst = { 35962306a36Sopenharmony_ci "dpll_core_h14x2_ck", 36062306a36Sopenharmony_ci "dpll_per_h14x2_ck", 36162306a36Sopenharmony_ci NULL, 36262306a36Sopenharmony_ci}; 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_cistatic const char * const omap5_gpu_sys_clk_parents[] __initconst = { 36562306a36Sopenharmony_ci "sys_clkin", 36662306a36Sopenharmony_ci NULL, 36762306a36Sopenharmony_ci}; 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap5_gpu_sys_clk_data __initconst = { 37062306a36Sopenharmony_ci .max_div = 2, 37162306a36Sopenharmony_ci}; 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpu_core_bit_data[] __initconst = { 37462306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_gpu_core_mux_parents, NULL }, 37562306a36Sopenharmony_ci { 25, TI_CLK_MUX, omap5_gpu_hyd_mux_parents, NULL }, 37662306a36Sopenharmony_ci { 26, TI_CLK_DIVIDER, omap5_gpu_sys_clk_parents, &omap5_gpu_sys_clk_data }, 37762306a36Sopenharmony_ci { 0 }, 37862306a36Sopenharmony_ci}; 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_gpu_clkctrl_regs[] __initconst = { 38162306a36Sopenharmony_ci { OMAP5_GPU_CLKCTRL, omap5_gpu_core_bit_data, CLKF_SW_SUP, "gpu-clkctrl:0000:24" }, 38262306a36Sopenharmony_ci { 0 }, 38362306a36Sopenharmony_ci}; 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_cistatic const char * const omap5_mmc1_fclk_mux_parents[] __initconst = { 38662306a36Sopenharmony_ci "func_128m_clk", 38762306a36Sopenharmony_ci "dpll_per_m2x2_ck", 38862306a36Sopenharmony_ci NULL, 38962306a36Sopenharmony_ci}; 39062306a36Sopenharmony_ci 39162306a36Sopenharmony_cistatic const char * const omap5_mmc1_fclk_parents[] __initconst = { 39262306a36Sopenharmony_ci "l3init-clkctrl:0008:24", 39362306a36Sopenharmony_ci NULL, 39462306a36Sopenharmony_ci}; 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap5_mmc1_fclk_data __initconst = { 39762306a36Sopenharmony_ci .max_div = 2, 39862306a36Sopenharmony_ci}; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_mmc1_bit_data[] __initconst = { 40162306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 40262306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_mmc1_fclk_mux_parents, NULL }, 40362306a36Sopenharmony_ci { 25, TI_CLK_DIVIDER, omap5_mmc1_fclk_parents, &omap5_mmc1_fclk_data }, 40462306a36Sopenharmony_ci { 0 }, 40562306a36Sopenharmony_ci}; 40662306a36Sopenharmony_ci 40762306a36Sopenharmony_cistatic const char * const omap5_mmc2_fclk_parents[] __initconst = { 40862306a36Sopenharmony_ci "l3init-clkctrl:0010:24", 40962306a36Sopenharmony_ci NULL, 41062306a36Sopenharmony_ci}; 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_cistatic const struct omap_clkctrl_div_data omap5_mmc2_fclk_data __initconst = { 41362306a36Sopenharmony_ci .max_div = 2, 41462306a36Sopenharmony_ci}; 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_mmc2_bit_data[] __initconst = { 41762306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_mmc1_fclk_mux_parents, NULL }, 41862306a36Sopenharmony_ci { 25, TI_CLK_DIVIDER, omap5_mmc2_fclk_parents, &omap5_mmc2_fclk_data }, 41962306a36Sopenharmony_ci { 0 }, 42062306a36Sopenharmony_ci}; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_cistatic const char * const omap5_usb_host_hs_hsic60m_p3_clk_parents[] __initconst = { 42362306a36Sopenharmony_ci "l3init_60m_fclk", 42462306a36Sopenharmony_ci NULL, 42562306a36Sopenharmony_ci}; 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_cistatic const char * const omap5_usb_host_hs_hsic480m_p3_clk_parents[] __initconst = { 42862306a36Sopenharmony_ci "dpll_usb_m2_ck", 42962306a36Sopenharmony_ci NULL, 43062306a36Sopenharmony_ci}; 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_cistatic const char * const omap5_usb_host_hs_utmi_p1_clk_parents[] __initconst = { 43362306a36Sopenharmony_ci "l3init-clkctrl:0038:24", 43462306a36Sopenharmony_ci NULL, 43562306a36Sopenharmony_ci}; 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_cistatic const char * const omap5_usb_host_hs_utmi_p2_clk_parents[] __initconst = { 43862306a36Sopenharmony_ci "l3init-clkctrl:0038:25", 43962306a36Sopenharmony_ci NULL, 44062306a36Sopenharmony_ci}; 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_cistatic const char * const omap5_utmi_p1_gfclk_parents[] __initconst = { 44362306a36Sopenharmony_ci "l3init_60m_fclk", 44462306a36Sopenharmony_ci "xclk60mhsp1_ck", 44562306a36Sopenharmony_ci NULL, 44662306a36Sopenharmony_ci}; 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_cistatic const char * const omap5_utmi_p2_gfclk_parents[] __initconst = { 44962306a36Sopenharmony_ci "l3init_60m_fclk", 45062306a36Sopenharmony_ci "xclk60mhsp2_ck", 45162306a36Sopenharmony_ci NULL, 45262306a36Sopenharmony_ci}; 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_usb_host_hs_bit_data[] __initconst = { 45562306a36Sopenharmony_ci { 6, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 45662306a36Sopenharmony_ci { 7, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL }, 45762306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_usb_host_hs_utmi_p1_clk_parents, NULL }, 45862306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap5_usb_host_hs_utmi_p2_clk_parents, NULL }, 45962306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 46062306a36Sopenharmony_ci { 11, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 46162306a36Sopenharmony_ci { 12, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 46262306a36Sopenharmony_ci { 13, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL }, 46362306a36Sopenharmony_ci { 14, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL }, 46462306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_utmi_p1_gfclk_parents, NULL }, 46562306a36Sopenharmony_ci { 25, TI_CLK_MUX, omap5_utmi_p2_gfclk_parents, NULL }, 46662306a36Sopenharmony_ci { 0 }, 46762306a36Sopenharmony_ci}; 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_usb_tll_hs_bit_data[] __initconst = { 47062306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 47162306a36Sopenharmony_ci { 9, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 47262306a36Sopenharmony_ci { 10, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL }, 47362306a36Sopenharmony_ci { 0 }, 47462306a36Sopenharmony_ci}; 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_cistatic const char * const omap5_sata_ref_clk_parents[] __initconst = { 47762306a36Sopenharmony_ci "sys_clkin", 47862306a36Sopenharmony_ci NULL, 47962306a36Sopenharmony_ci}; 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_sata_bit_data[] __initconst = { 48262306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_sata_ref_clk_parents, NULL }, 48362306a36Sopenharmony_ci { 0 }, 48462306a36Sopenharmony_ci}; 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_cistatic const char * const omap5_usb_otg_ss_refclk960m_parents[] __initconst = { 48762306a36Sopenharmony_ci "dpll_usb_clkdcoldo", 48862306a36Sopenharmony_ci NULL, 48962306a36Sopenharmony_ci}; 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_usb_otg_ss_bit_data[] __initconst = { 49262306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_usb_otg_ss_refclk960m_parents, NULL }, 49362306a36Sopenharmony_ci { 0 }, 49462306a36Sopenharmony_ci}; 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_l3init_clkctrl_regs[] __initconst = { 49762306a36Sopenharmony_ci { OMAP5_MMC1_CLKCTRL, omap5_mmc1_bit_data, CLKF_SW_SUP, "l3init-clkctrl:0008:25" }, 49862306a36Sopenharmony_ci { OMAP5_MMC2_CLKCTRL, omap5_mmc2_bit_data, CLKF_SW_SUP, "l3init-clkctrl:0010:25" }, 49962306a36Sopenharmony_ci { OMAP5_USB_HOST_HS_CLKCTRL, omap5_usb_host_hs_bit_data, CLKF_SW_SUP, "l3init_60m_fclk" }, 50062306a36Sopenharmony_ci { OMAP5_USB_TLL_HS_CLKCTRL, omap5_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_root_clk_div" }, 50162306a36Sopenharmony_ci { OMAP5_SATA_CLKCTRL, omap5_sata_bit_data, CLKF_SW_SUP, "func_48m_fclk" }, 50262306a36Sopenharmony_ci { OMAP5_OCP2SCP1_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" }, 50362306a36Sopenharmony_ci { OMAP5_OCP2SCP3_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" }, 50462306a36Sopenharmony_ci { OMAP5_USB_OTG_SS_CLKCTRL, omap5_usb_otg_ss_bit_data, CLKF_HW_SUP, "dpll_core_h13x2_ck" }, 50562306a36Sopenharmony_ci { 0 }, 50662306a36Sopenharmony_ci}; 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_gpio1_bit_data[] __initconst = { 50962306a36Sopenharmony_ci { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL }, 51062306a36Sopenharmony_ci { 0 }, 51162306a36Sopenharmony_ci}; 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_cistatic const struct omap_clkctrl_bit_data omap5_timer1_bit_data[] __initconst = { 51462306a36Sopenharmony_ci { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL }, 51562306a36Sopenharmony_ci { 0 }, 51662306a36Sopenharmony_ci}; 51762306a36Sopenharmony_ci 51862306a36Sopenharmony_cistatic const struct omap_clkctrl_reg_data omap5_wkupaon_clkctrl_regs[] __initconst = { 51962306a36Sopenharmony_ci { OMAP5_L4_WKUP_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" }, 52062306a36Sopenharmony_ci { OMAP5_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 52162306a36Sopenharmony_ci { OMAP5_GPIO1_CLKCTRL, omap5_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" }, 52262306a36Sopenharmony_ci { OMAP5_TIMER1_CLKCTRL, omap5_timer1_bit_data, CLKF_SW_SUP, "wkupaon-clkctrl:0020:24" }, 52362306a36Sopenharmony_ci { OMAP5_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" }, 52462306a36Sopenharmony_ci { OMAP5_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 52562306a36Sopenharmony_ci { 0 }, 52662306a36Sopenharmony_ci}; 52762306a36Sopenharmony_ci 52862306a36Sopenharmony_ciconst struct omap_clkctrl_data omap5_clkctrl_data[] __initconst = { 52962306a36Sopenharmony_ci { 0x4a004320, omap5_mpu_clkctrl_regs }, 53062306a36Sopenharmony_ci { 0x4a004420, omap5_dsp_clkctrl_regs }, 53162306a36Sopenharmony_ci { 0x4a004520, omap5_abe_clkctrl_regs }, 53262306a36Sopenharmony_ci { 0x4a008720, omap5_l3main1_clkctrl_regs }, 53362306a36Sopenharmony_ci { 0x4a008820, omap5_l3main2_clkctrl_regs }, 53462306a36Sopenharmony_ci { 0x4a008920, omap5_ipu_clkctrl_regs }, 53562306a36Sopenharmony_ci { 0x4a008a20, omap5_dma_clkctrl_regs }, 53662306a36Sopenharmony_ci { 0x4a008b20, omap5_emif_clkctrl_regs }, 53762306a36Sopenharmony_ci { 0x4a008d20, omap5_l4cfg_clkctrl_regs }, 53862306a36Sopenharmony_ci { 0x4a008e20, omap5_l3instr_clkctrl_regs }, 53962306a36Sopenharmony_ci { 0x4a009020, omap5_l4per_clkctrl_regs }, 54062306a36Sopenharmony_ci { 0x4a0091a0, omap5_l4_secure_clkctrl_regs }, 54162306a36Sopenharmony_ci { 0x4a009220, omap5_iva_clkctrl_regs }, 54262306a36Sopenharmony_ci { 0x4a009420, omap5_dss_clkctrl_regs }, 54362306a36Sopenharmony_ci { 0x4a009520, omap5_gpu_clkctrl_regs }, 54462306a36Sopenharmony_ci { 0x4a009620, omap5_l3init_clkctrl_regs }, 54562306a36Sopenharmony_ci { 0x4ae07920, omap5_wkupaon_clkctrl_regs }, 54662306a36Sopenharmony_ci { 0 }, 54762306a36Sopenharmony_ci}; 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_cistatic struct ti_dt_clk omap54xx_clks[] = { 55062306a36Sopenharmony_ci DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"), 55162306a36Sopenharmony_ci DT_CLK(NULL, "sys_clkin_ck", "sys_clkin"), 55262306a36Sopenharmony_ci DT_CLK(NULL, "dmic_gfclk", "abe-clkctrl:0018:24"), 55362306a36Sopenharmony_ci DT_CLK(NULL, "dmic_sync_mux_ck", "abe-clkctrl:0018:26"), 55462306a36Sopenharmony_ci DT_CLK(NULL, "dss_32khz_clk", "dss-clkctrl:0000:11"), 55562306a36Sopenharmony_ci DT_CLK(NULL, "dss_48mhz_clk", "dss-clkctrl:0000:9"), 55662306a36Sopenharmony_ci DT_CLK(NULL, "dss_dss_clk", "dss-clkctrl:0000:8"), 55762306a36Sopenharmony_ci DT_CLK(NULL, "dss_sys_clk", "dss-clkctrl:0000:10"), 55862306a36Sopenharmony_ci DT_CLK(NULL, "gpio1_dbclk", "wkupaon-clkctrl:0018:8"), 55962306a36Sopenharmony_ci DT_CLK(NULL, "gpio2_dbclk", "l4per-clkctrl:0040:8"), 56062306a36Sopenharmony_ci DT_CLK(NULL, "gpio3_dbclk", "l4per-clkctrl:0048:8"), 56162306a36Sopenharmony_ci DT_CLK(NULL, "gpio4_dbclk", "l4per-clkctrl:0050:8"), 56262306a36Sopenharmony_ci DT_CLK(NULL, "gpio5_dbclk", "l4per-clkctrl:0058:8"), 56362306a36Sopenharmony_ci DT_CLK(NULL, "gpio6_dbclk", "l4per-clkctrl:0060:8"), 56462306a36Sopenharmony_ci DT_CLK(NULL, "gpio7_dbclk", "l4per-clkctrl:00f0:8"), 56562306a36Sopenharmony_ci DT_CLK(NULL, "gpio8_dbclk", "l4per-clkctrl:00f8:8"), 56662306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp1_gfclk", "abe-clkctrl:0028:24"), 56762306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe-clkctrl:0028:26"), 56862306a36Sopenharmony_ci DT_CLK("40122000.mcbsp", "prcm_fck", "abe-clkctrl:0028:26"), 56962306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp2_gfclk", "abe-clkctrl:0030:24"), 57062306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe-clkctrl:0030:26"), 57162306a36Sopenharmony_ci DT_CLK("40124000.mcbsp", "prcm_fck", "abe-clkctrl:0030:26"), 57262306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp3_gfclk", "abe-clkctrl:0038:24"), 57362306a36Sopenharmony_ci DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe-clkctrl:0038:26"), 57462306a36Sopenharmony_ci DT_CLK("40126000.mcbsp", "prcm_fck", "abe-clkctrl:0038:26"), 57562306a36Sopenharmony_ci DT_CLK(NULL, "mmc1_32khz_clk", "l3init-clkctrl:0008:8"), 57662306a36Sopenharmony_ci DT_CLK(NULL, "mmc1_fclk", "l3init-clkctrl:0008:25"), 57762306a36Sopenharmony_ci DT_CLK(NULL, "mmc1_fclk_mux", "l3init-clkctrl:0008:24"), 57862306a36Sopenharmony_ci DT_CLK(NULL, "mmc2_fclk", "l3init-clkctrl:0010:25"), 57962306a36Sopenharmony_ci DT_CLK(NULL, "mmc2_fclk_mux", "l3init-clkctrl:0010:24"), 58062306a36Sopenharmony_ci DT_CLK(NULL, "pad_fck", "pad_clks_ck"), 58162306a36Sopenharmony_ci DT_CLK(NULL, "sata_ref_clk", "l3init-clkctrl:0068:8"), 58262306a36Sopenharmony_ci DT_CLK(NULL, "timer10_gfclk_mux", "l4per-clkctrl:0008:24"), 58362306a36Sopenharmony_ci DT_CLK(NULL, "timer11_gfclk_mux", "l4per-clkctrl:0010:24"), 58462306a36Sopenharmony_ci DT_CLK(NULL, "timer1_gfclk_mux", "wkupaon-clkctrl:0020:24"), 58562306a36Sopenharmony_ci DT_CLK(NULL, "timer2_gfclk_mux", "l4per-clkctrl:0018:24"), 58662306a36Sopenharmony_ci DT_CLK(NULL, "timer3_gfclk_mux", "l4per-clkctrl:0020:24"), 58762306a36Sopenharmony_ci DT_CLK(NULL, "timer4_gfclk_mux", "l4per-clkctrl:0028:24"), 58862306a36Sopenharmony_ci DT_CLK(NULL, "timer5_gfclk_mux", "abe-clkctrl:0048:24"), 58962306a36Sopenharmony_ci DT_CLK(NULL, "timer6_gfclk_mux", "abe-clkctrl:0050:24"), 59062306a36Sopenharmony_ci DT_CLK(NULL, "timer7_gfclk_mux", "abe-clkctrl:0058:24"), 59162306a36Sopenharmony_ci DT_CLK(NULL, "timer8_gfclk_mux", "abe-clkctrl:0060:24"), 59262306a36Sopenharmony_ci DT_CLK(NULL, "timer9_gfclk_mux", "l4per-clkctrl:0030:24"), 59362306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3init-clkctrl:0038:13"), 59462306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3init-clkctrl:0038:14"), 59562306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic480m_p3_clk", "l3init-clkctrl:0038:7"), 59662306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3init-clkctrl:0038:11"), 59762306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3init-clkctrl:0038:12"), 59862306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_hsic60m_p3_clk", "l3init-clkctrl:0038:6"), 59962306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3init-clkctrl:0038:8"), 60062306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3init-clkctrl:0038:9"), 60162306a36Sopenharmony_ci DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3init-clkctrl:0038:10"), 60262306a36Sopenharmony_ci DT_CLK(NULL, "usb_otg_ss_refclk960m", "l3init-clkctrl:00d0:8"), 60362306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3init-clkctrl:0048:8"), 60462306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3init-clkctrl:0048:9"), 60562306a36Sopenharmony_ci DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3init-clkctrl:0048:10"), 60662306a36Sopenharmony_ci DT_CLK(NULL, "utmi_p1_gfclk", "l3init-clkctrl:0038:24"), 60762306a36Sopenharmony_ci DT_CLK(NULL, "utmi_p2_gfclk", "l3init-clkctrl:0038:25"), 60862306a36Sopenharmony_ci { .node_name = NULL }, 60962306a36Sopenharmony_ci}; 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_ciint __init omap5xxx_dt_clk_init(void) 61262306a36Sopenharmony_ci{ 61362306a36Sopenharmony_ci int rc; 61462306a36Sopenharmony_ci struct clk *abe_dpll_ref, *abe_dpll, *abe_dpll_byp, *sys_32k_ck, *usb_dpll; 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ci ti_dt_clocks_register(omap54xx_clks); 61762306a36Sopenharmony_ci 61862306a36Sopenharmony_ci omap2_clk_disable_autoidle_all(); 61962306a36Sopenharmony_ci 62062306a36Sopenharmony_ci ti_clk_add_aliases(); 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci abe_dpll_ref = clk_get_sys(NULL, "abe_dpll_clk_mux"); 62362306a36Sopenharmony_ci sys_32k_ck = clk_get_sys(NULL, "sys_32k_ck"); 62462306a36Sopenharmony_ci rc = clk_set_parent(abe_dpll_ref, sys_32k_ck); 62562306a36Sopenharmony_ci 62662306a36Sopenharmony_ci /* 62762306a36Sopenharmony_ci * This must also be set to sys_32k_ck to match or 62862306a36Sopenharmony_ci * the ABE DPLL will not lock on a warm reboot when 62962306a36Sopenharmony_ci * ABE timers are used. 63062306a36Sopenharmony_ci */ 63162306a36Sopenharmony_ci abe_dpll_byp = clk_get_sys(NULL, "abe_dpll_bypass_clk_mux"); 63262306a36Sopenharmony_ci if (!rc) 63362306a36Sopenharmony_ci rc = clk_set_parent(abe_dpll_byp, sys_32k_ck); 63462306a36Sopenharmony_ci 63562306a36Sopenharmony_ci abe_dpll = clk_get_sys(NULL, "dpll_abe_ck"); 63662306a36Sopenharmony_ci if (!rc) 63762306a36Sopenharmony_ci rc = clk_set_rate(abe_dpll, OMAP5_DPLL_ABE_DEFFREQ); 63862306a36Sopenharmony_ci if (rc) 63962306a36Sopenharmony_ci pr_err("%s: failed to configure ABE DPLL!\n", __func__); 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ci abe_dpll = clk_get_sys(NULL, "dpll_abe_m2x2_ck"); 64262306a36Sopenharmony_ci if (!rc) 64362306a36Sopenharmony_ci rc = clk_set_rate(abe_dpll, OMAP5_DPLL_ABE_DEFFREQ * 2); 64462306a36Sopenharmony_ci if (rc) 64562306a36Sopenharmony_ci pr_err("%s: failed to configure ABE m2x2 DPLL!\n", __func__); 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_ci usb_dpll = clk_get_sys(NULL, "dpll_usb_ck"); 64862306a36Sopenharmony_ci rc = clk_set_rate(usb_dpll, OMAP5_DPLL_USB_DEFFREQ); 64962306a36Sopenharmony_ci if (rc) 65062306a36Sopenharmony_ci pr_err("%s: failed to configure USB DPLL!\n", __func__); 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci usb_dpll = clk_get_sys(NULL, "dpll_usb_m2_ck"); 65362306a36Sopenharmony_ci rc = clk_set_rate(usb_dpll, OMAP5_DPLL_USB_DEFFREQ/2); 65462306a36Sopenharmony_ci if (rc) 65562306a36Sopenharmony_ci pr_err("%s: failed to set USB_DPLL M2 OUT\n", __func__); 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci return 0; 65862306a36Sopenharmony_ci} 659