xref: /openbmc/linux/arch/arm/mach-sunxi/sunxi.c (revision bef6229f)
13b52634fSMaxime Ripard /*
23b52634fSMaxime Ripard  * Device Tree support for Allwinner A1X SoCs
33b52634fSMaxime Ripard  *
43b52634fSMaxime Ripard  * Copyright (C) 2012 Maxime Ripard
53b52634fSMaxime Ripard  *
63b52634fSMaxime Ripard  * Maxime Ripard <maxime.ripard@free-electrons.com>
73b52634fSMaxime Ripard  *
83b52634fSMaxime Ripard  * This file is licensed under the terms of the GNU General Public
93b52634fSMaxime Ripard  * License version 2.  This program is licensed "as is" without any
103b52634fSMaxime Ripard  * warranty of any kind, whether express or implied.
113b52634fSMaxime Ripard  */
123b52634fSMaxime Ripard 
13751b2ac4SMaxime Ripard #include <linux/clk-provider.h>
14751b2ac4SMaxime Ripard #include <linux/clocksource.h>
15d767af5eSMaxime Ripard #include <linux/init.h>
16f91b7c62SChen-Yu Tsai #include <linux/platform_device.h>
173b52634fSMaxime Ripard 
183b52634fSMaxime Ripard #include <asm/mach/arch.h>
19bc34b5f2SMaxime Ripard 
20f91b7c62SChen-Yu Tsai static void __init sunxi_dt_cpufreq_init(void)
21f91b7c62SChen-Yu Tsai {
22f91b7c62SChen-Yu Tsai 	platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
23f91b7c62SChen-Yu Tsai }
24f91b7c62SChen-Yu Tsai 
253b52634fSMaxime Ripard static const char * const sunxi_board_dt_compat[] = {
2643880f70SMaxime Ripard 	"allwinner,sun4i-a10",
2781265dfbSMaxime Ripard 	"allwinner,sun5i-a10s",
2843880f70SMaxime Ripard 	"allwinner,sun5i-a13",
29bef6229fSMaxime Ripard 	"allwinner,sun5i-r8",
303b52634fSMaxime Ripard 	NULL,
313b52634fSMaxime Ripard };
323b52634fSMaxime Ripard 
33bef6229fSMaxime Ripard DT_MACHINE_START(SUNXI_DT, "Allwinner sun4i/sun5i Families")
343b52634fSMaxime Ripard 	.dt_compat	= sunxi_board_dt_compat,
35f91b7c62SChen-Yu Tsai 	.init_late	= sunxi_dt_cpufreq_init,
363b52634fSMaxime Ripard MACHINE_END
3791a31977SMaxime Ripard 
3891a31977SMaxime Ripard static const char * const sun6i_board_dt_compat[] = {
3991a31977SMaxime Ripard 	"allwinner,sun6i-a31",
40b0f2faa5SHans de Goede 	"allwinner,sun6i-a31s",
4191a31977SMaxime Ripard 	NULL,
4291a31977SMaxime Ripard };
4391a31977SMaxime Ripard 
44751b2ac4SMaxime Ripard extern void __init sun6i_reset_init(void);
45751b2ac4SMaxime Ripard static void __init sun6i_timer_init(void)
46751b2ac4SMaxime Ripard {
47751b2ac4SMaxime Ripard 	of_clk_init(NULL);
48e58cf019SArnd Bergmann 	if (IS_ENABLED(CONFIG_RESET_CONTROLLER))
49751b2ac4SMaxime Ripard 		sun6i_reset_init();
50751b2ac4SMaxime Ripard 	clocksource_of_init();
51751b2ac4SMaxime Ripard }
52751b2ac4SMaxime Ripard 
5391a31977SMaxime Ripard DT_MACHINE_START(SUN6I_DT, "Allwinner sun6i (A31) Family")
54751b2ac4SMaxime Ripard 	.init_time	= sun6i_timer_init,
5591a31977SMaxime Ripard 	.dt_compat	= sun6i_board_dt_compat,
56f91b7c62SChen-Yu Tsai 	.init_late	= sunxi_dt_cpufreq_init,
5791a31977SMaxime Ripard MACHINE_END
5891a31977SMaxime Ripard 
5991a31977SMaxime Ripard static const char * const sun7i_board_dt_compat[] = {
6091a31977SMaxime Ripard 	"allwinner,sun7i-a20",
6191a31977SMaxime Ripard 	NULL,
6291a31977SMaxime Ripard };
6391a31977SMaxime Ripard 
6491a31977SMaxime Ripard DT_MACHINE_START(SUN7I_DT, "Allwinner sun7i (A20) Family")
6591a31977SMaxime Ripard 	.dt_compat	= sun7i_board_dt_compat,
66f91b7c62SChen-Yu Tsai 	.init_late	= sunxi_dt_cpufreq_init,
673b52634fSMaxime Ripard MACHINE_END
68ac84b79fSChen-Yu Tsai 
69ac84b79fSChen-Yu Tsai static const char * const sun8i_board_dt_compat[] = {
70ac84b79fSChen-Yu Tsai 	"allwinner,sun8i-a23",
71159870d2SVishnu Patekar 	"allwinner,sun8i-a33",
7214a882dfSJens Kuske 	"allwinner,sun8i-h3",
73ac84b79fSChen-Yu Tsai 	NULL,
74ac84b79fSChen-Yu Tsai };
75ac84b79fSChen-Yu Tsai 
7614a882dfSJens Kuske DT_MACHINE_START(SUN8I_DT, "Allwinner sun8i Family")
7714a882dfSJens Kuske 	.init_time	= sun6i_timer_init,
78ac84b79fSChen-Yu Tsai 	.dt_compat	= sun8i_board_dt_compat,
79f91b7c62SChen-Yu Tsai 	.init_late	= sunxi_dt_cpufreq_init,
80ac84b79fSChen-Yu Tsai MACHINE_END
813d4c2f1cSChen-Yu Tsai 
823d4c2f1cSChen-Yu Tsai static const char * const sun9i_board_dt_compat[] = {
833d4c2f1cSChen-Yu Tsai 	"allwinner,sun9i-a80",
843d4c2f1cSChen-Yu Tsai 	NULL,
853d4c2f1cSChen-Yu Tsai };
863d4c2f1cSChen-Yu Tsai 
873d4c2f1cSChen-Yu Tsai DT_MACHINE_START(SUN9I_DT, "Allwinner sun9i Family")
883d4c2f1cSChen-Yu Tsai 	.dt_compat	= sun9i_board_dt_compat,
893d4c2f1cSChen-Yu Tsai MACHINE_END
90