11a34275dSTony Lindgren /* 21a34275dSTony Lindgren * This program is free software; you can redistribute it and/or 31a34275dSTony Lindgren * modify it under the terms of the GNU General Public License as 41a34275dSTony Lindgren * published by the Free Software Foundation version 2. 51a34275dSTony Lindgren * 61a34275dSTony Lindgren * This program is distributed "as is" WITHOUT ANY WARRANTY of any 71a34275dSTony Lindgren * kind, whether express or implied; without even the implied warranty 81a34275dSTony Lindgren * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 91a34275dSTony Lindgren * GNU General Public License for more details. 101a34275dSTony Lindgren */ 111a34275dSTony Lindgren 121a34275dSTony Lindgren #include <linux/kernel.h> 131a34275dSTony Lindgren #include <linux/list.h> 141a34275dSTony Lindgren #include <linux/clk-provider.h> 151a34275dSTony Lindgren #include <linux/clk/ti.h> 161a34275dSTony Lindgren 17a5aa8a60STero Kristo #include "clock.h" 18a5aa8a60STero Kristo 191a34275dSTony Lindgren static struct ti_dt_clk dm816x_clks[] = { 201a34275dSTony Lindgren DT_CLK(NULL, "sys_clkin", "sys_clkin_ck"), 211a34275dSTony Lindgren DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"), 221a34275dSTony Lindgren DT_CLK(NULL, "sys_32k_ck", "sys_32k_ck"), 233a5b1dc4SNeil Armstrong DT_CLK(NULL, "timer_32k_ck", "sysclk18_ck"), 243a5b1dc4SNeil Armstrong DT_CLK(NULL, "timer_ext_ck", "tclkin_ck"), 251a34275dSTony Lindgren DT_CLK(NULL, "mpu_ck", "mpu_ck"), 261a34275dSTony Lindgren DT_CLK(NULL, "timer1_fck", "timer1_fck"), 271a34275dSTony Lindgren DT_CLK(NULL, "timer2_fck", "timer2_fck"), 281a34275dSTony Lindgren DT_CLK(NULL, "timer3_fck", "timer3_fck"), 291a34275dSTony Lindgren DT_CLK(NULL, "timer4_fck", "timer4_fck"), 301a34275dSTony Lindgren DT_CLK(NULL, "timer5_fck", "timer5_fck"), 311a34275dSTony Lindgren DT_CLK(NULL, "timer6_fck", "timer6_fck"), 321a34275dSTony Lindgren DT_CLK(NULL, "timer7_fck", "timer7_fck"), 331a34275dSTony Lindgren DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"), 341a34275dSTony Lindgren DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"), 351a34275dSTony Lindgren DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"), 361a34275dSTony Lindgren DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"), 371a34275dSTony Lindgren DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"), 381a34275dSTony Lindgren DT_CLK(NULL, "sysclk24_ck", "sysclk24_ck"), 391a34275dSTony Lindgren DT_CLK("4a100000.ethernet", "sysclk24_ck", "sysclk24_ck"), 401a34275dSTony Lindgren { .node_name = NULL }, 411a34275dSTony Lindgren }; 421a34275dSTony Lindgren 431a34275dSTony Lindgren static const char *enable_init_clks[] = { 441a34275dSTony Lindgren "ddr_pll_clk1", 451a34275dSTony Lindgren "ddr_pll_clk2", 461a34275dSTony Lindgren "ddr_pll_clk3", 471a34275dSTony Lindgren }; 481a34275dSTony Lindgren 499cf705deSTony Lindgren int __init dm816x_dt_clk_init(void) 501a34275dSTony Lindgren { 511a34275dSTony Lindgren ti_dt_clocks_register(dm816x_clks); 521a34275dSTony Lindgren omap2_clk_disable_autoidle_all(); 531a34275dSTony Lindgren omap2_clk_enable_init_clocks(enable_init_clks, 541a34275dSTony Lindgren ARRAY_SIZE(enable_init_clks)); 551a34275dSTony Lindgren 561a34275dSTony Lindgren return 0; 571a34275dSTony Lindgren } 58