xref: /linux/arch/arm/mach-gemini/board-dt.c (revision 41d9830cd09f652936be95431cecfbac39ed09f7)
1*41d9830cSLinus Walleij /*
2*41d9830cSLinus Walleij  * Gemini Device Tree boot support
3*41d9830cSLinus Walleij  */
4*41d9830cSLinus Walleij #include <linux/kernel.h>
5*41d9830cSLinus Walleij #include <linux/init.h>
6*41d9830cSLinus Walleij #include <linux/io.h>
7*41d9830cSLinus Walleij 
8*41d9830cSLinus Walleij #include <asm/mach/arch.h>
9*41d9830cSLinus Walleij #include <asm/mach/map.h>
10*41d9830cSLinus Walleij 
11*41d9830cSLinus Walleij #ifdef CONFIG_DEBUG_GEMINI
12*41d9830cSLinus Walleij /* This is needed for LL-debug/earlyprintk/debug-macro.S */
13*41d9830cSLinus Walleij static struct map_desc gemini_io_desc[] __initdata = {
14*41d9830cSLinus Walleij 	{
15*41d9830cSLinus Walleij 		.virtual = CONFIG_DEBUG_UART_VIRT,
16*41d9830cSLinus Walleij 		.pfn = __phys_to_pfn(CONFIG_DEBUG_UART_PHYS),
17*41d9830cSLinus Walleij 		.length = SZ_4K,
18*41d9830cSLinus Walleij 		.type = MT_DEVICE,
19*41d9830cSLinus Walleij 	},
20*41d9830cSLinus Walleij };
21*41d9830cSLinus Walleij 
22*41d9830cSLinus Walleij static void __init gemini_map_io(void)
23*41d9830cSLinus Walleij {
24*41d9830cSLinus Walleij 	iotable_init(gemini_io_desc, ARRAY_SIZE(gemini_io_desc));
25*41d9830cSLinus Walleij }
26*41d9830cSLinus Walleij #else
27*41d9830cSLinus Walleij #define gemini_map_io NULL
28*41d9830cSLinus Walleij #endif
29*41d9830cSLinus Walleij 
30*41d9830cSLinus Walleij static const char *gemini_board_compat[] = {
31*41d9830cSLinus Walleij 	"cortina,gemini",
32*41d9830cSLinus Walleij 	NULL,
33*41d9830cSLinus Walleij };
34*41d9830cSLinus Walleij 
35*41d9830cSLinus Walleij DT_MACHINE_START(GEMINI_DT, "Gemini (Device Tree)")
36*41d9830cSLinus Walleij 	.map_io		= gemini_map_io,
37*41d9830cSLinus Walleij 	.dt_compat	= gemini_board_compat,
38*41d9830cSLinus Walleij MACHINE_END
39