xref: /openbmc/linux/drivers/clk/ti/clk-816x.c (revision a5aa8a60)
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"),
231a34275dSTony Lindgren 	DT_CLK(NULL, "mpu_ck", "mpu_ck"),
241a34275dSTony Lindgren 	DT_CLK(NULL, "timer1_fck", "timer1_fck"),
251a34275dSTony Lindgren 	DT_CLK(NULL, "timer2_fck", "timer2_fck"),
261a34275dSTony Lindgren 	DT_CLK(NULL, "timer3_fck", "timer3_fck"),
271a34275dSTony Lindgren 	DT_CLK(NULL, "timer4_fck", "timer4_fck"),
281a34275dSTony Lindgren 	DT_CLK(NULL, "timer5_fck", "timer5_fck"),
291a34275dSTony Lindgren 	DT_CLK(NULL, "timer6_fck", "timer6_fck"),
301a34275dSTony Lindgren 	DT_CLK(NULL, "timer7_fck", "timer7_fck"),
311a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"),
321a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"),
331a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"),
341a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"),
351a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"),
361a34275dSTony Lindgren 	DT_CLK(NULL, "sysclk24_ck", "sysclk24_ck"),
371a34275dSTony Lindgren 	DT_CLK("4a100000.ethernet", "sysclk24_ck", "sysclk24_ck"),
381a34275dSTony Lindgren 	{ .node_name = NULL },
391a34275dSTony Lindgren };
401a34275dSTony Lindgren 
411a34275dSTony Lindgren static const char *enable_init_clks[] = {
421a34275dSTony Lindgren 	"ddr_pll_clk1",
431a34275dSTony Lindgren 	"ddr_pll_clk2",
441a34275dSTony Lindgren 	"ddr_pll_clk3",
451a34275dSTony Lindgren };
461a34275dSTony Lindgren 
471a34275dSTony Lindgren int __init ti81xx_dt_clk_init(void)
481a34275dSTony Lindgren {
491a34275dSTony Lindgren 	ti_dt_clocks_register(dm816x_clks);
501a34275dSTony Lindgren 	omap2_clk_disable_autoidle_all();
511a34275dSTony Lindgren 	omap2_clk_enable_init_clocks(enable_init_clks,
521a34275dSTony Lindgren 				     ARRAY_SIZE(enable_init_clks));
531a34275dSTony Lindgren 
541a34275dSTony Lindgren 	return 0;
551a34275dSTony Lindgren }
56