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 171a34275dSTony Lindgren static struct ti_dt_clk dm816x_clks[] = { 181a34275dSTony Lindgren DT_CLK(NULL, "sys_clkin", "sys_clkin_ck"), 191a34275dSTony Lindgren DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"), 201a34275dSTony Lindgren DT_CLK(NULL, "sys_32k_ck", "sys_32k_ck"), 211a34275dSTony Lindgren DT_CLK(NULL, "mpu_ck", "mpu_ck"), 221a34275dSTony Lindgren DT_CLK(NULL, "timer1_fck", "timer1_fck"), 231a34275dSTony Lindgren DT_CLK(NULL, "timer2_fck", "timer2_fck"), 241a34275dSTony Lindgren DT_CLK(NULL, "timer3_fck", "timer3_fck"), 251a34275dSTony Lindgren DT_CLK(NULL, "timer4_fck", "timer4_fck"), 261a34275dSTony Lindgren DT_CLK(NULL, "timer5_fck", "timer5_fck"), 271a34275dSTony Lindgren DT_CLK(NULL, "timer6_fck", "timer6_fck"), 281a34275dSTony Lindgren DT_CLK(NULL, "timer7_fck", "timer7_fck"), 291a34275dSTony Lindgren DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"), 301a34275dSTony Lindgren DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"), 311a34275dSTony Lindgren DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"), 321a34275dSTony Lindgren DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"), 331a34275dSTony Lindgren DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"), 341a34275dSTony Lindgren DT_CLK(NULL, "sysclk24_ck", "sysclk24_ck"), 351a34275dSTony Lindgren DT_CLK("4a100000.ethernet", "sysclk24_ck", "sysclk24_ck"), 361a34275dSTony Lindgren { .node_name = NULL }, 371a34275dSTony Lindgren }; 381a34275dSTony Lindgren 391a34275dSTony Lindgren static const char *enable_init_clks[] = { 401a34275dSTony Lindgren "ddr_pll_clk1", 411a34275dSTony Lindgren "ddr_pll_clk2", 421a34275dSTony Lindgren "ddr_pll_clk3", 431a34275dSTony Lindgren }; 441a34275dSTony Lindgren 451a34275dSTony Lindgren int __init ti81xx_dt_clk_init(void) 461a34275dSTony Lindgren { 471a34275dSTony Lindgren ti_dt_clocks_register(dm816x_clks); 481a34275dSTony Lindgren omap2_clk_disable_autoidle_all(); 491a34275dSTony Lindgren omap2_clk_enable_init_clocks(enable_init_clks, 501a34275dSTony Lindgren ARRAY_SIZE(enable_init_clks)); 511a34275dSTony Lindgren 521a34275dSTony Lindgren return 0; 531a34275dSTony Lindgren } 54