xref: /openbmc/linux/arch/arm/mach-pxa/pxa-dt.c (revision e7749a26)
1e7749a26SDaniel Mack /*
2e7749a26SDaniel Mack  *  linux/arch/arm/mach-pxa/pxa-dt.c
3e7749a26SDaniel Mack  *
4e7749a26SDaniel Mack  *  Copyright (C) 2012 Daniel Mack
5e7749a26SDaniel Mack  *
6e7749a26SDaniel Mack  *  This program is free software; you can redistribute it and/or modify
7e7749a26SDaniel Mack  *  it under the terms of the GNU General Public License version 2 as
8e7749a26SDaniel Mack  *  publishhed by the Free Software Foundation.
9e7749a26SDaniel Mack  */
10e7749a26SDaniel Mack 
11e7749a26SDaniel Mack #include <linux/irq.h>
12e7749a26SDaniel Mack #include <linux/irqdomain.h>
13e7749a26SDaniel Mack #include <linux/of_irq.h>
14e7749a26SDaniel Mack #include <linux/of_platform.h>
15e7749a26SDaniel Mack #include <asm/mach/arch.h>
16e7749a26SDaniel Mack #include <asm/mach/time.h>
17e7749a26SDaniel Mack #include <mach/irqs.h>
18e7749a26SDaniel Mack #include <mach/pxa3xx.h>
19e7749a26SDaniel Mack 
20e7749a26SDaniel Mack #include "generic.h"
21e7749a26SDaniel Mack 
22e7749a26SDaniel Mack #ifdef CONFIG_PXA3xx
23e7749a26SDaniel Mack extern void __init pxa3xx_dt_init_irq(void);
24e7749a26SDaniel Mack 
25e7749a26SDaniel Mack static const struct of_dev_auxdata pxa3xx_auxdata_lookup[] __initconst = {
26e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40100000, "pxa2xx-uart.0", NULL),
27e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40200000, "pxa2xx-uart.1", NULL),
28e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40700000, "pxa2xx-uart.2", NULL),
29e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x41600000, "pxa2xx-uart.3", NULL),
30e7749a26SDaniel Mack 	OF_DEV_AUXDATA("marvell,pxa-mmc",	0x41100000, "pxa2xx-mci.0", NULL),
31e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-gpio",		0x40e00000, "pxa-gpio", NULL),
32e7749a26SDaniel Mack 	OF_DEV_AUXDATA("marvell,pxa-ohci",	0x4c000000, "pxa27x-ohci", NULL),
33e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pxa-i2c",		0x40301680, "pxa2xx-i2c.0", NULL),
34e7749a26SDaniel Mack 	OF_DEV_AUXDATA("mrvl,pwri2c",		0x40f500c0, "pxa3xx-i2c.1", NULL),
35e7749a26SDaniel Mack 	OF_DEV_AUXDATA("marvell,pxa3xx-nand",	0x43100000, "pxa3xx-nand", NULL),
36e7749a26SDaniel Mack 	{}
37e7749a26SDaniel Mack };
38e7749a26SDaniel Mack 
39e7749a26SDaniel Mack static void __init pxa3xx_dt_init(void)
40e7749a26SDaniel Mack {
41e7749a26SDaniel Mack 	of_platform_populate(NULL, of_default_bus_match_table,
42e7749a26SDaniel Mack 			     pxa3xx_auxdata_lookup, NULL);
43e7749a26SDaniel Mack }
44e7749a26SDaniel Mack 
45e7749a26SDaniel Mack static const char *pxa3xx_dt_board_compat[] __initdata = {
46e7749a26SDaniel Mack 	"marvell,pxa300",
47e7749a26SDaniel Mack 	"marvell,pxa310",
48e7749a26SDaniel Mack 	"marvell,pxa320",
49e7749a26SDaniel Mack 	NULL,
50e7749a26SDaniel Mack };
51e7749a26SDaniel Mack #endif
52e7749a26SDaniel Mack 
53e7749a26SDaniel Mack #ifdef CONFIG_PXA3xx
54e7749a26SDaniel Mack DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)")
55e7749a26SDaniel Mack 	.map_io		= pxa3xx_map_io,
56e7749a26SDaniel Mack 	.init_irq	= pxa3xx_dt_init_irq,
57e7749a26SDaniel Mack 	.handle_irq	= pxa3xx_handle_irq,
58e7749a26SDaniel Mack 	.timer		= &pxa_timer,
59e7749a26SDaniel Mack 	.restart	= pxa_restart,
60e7749a26SDaniel Mack 	.init_machine	= pxa3xx_dt_init,
61e7749a26SDaniel Mack 	.dt_compat	= pxa3xx_dt_board_compat,
62e7749a26SDaniel Mack MACHINE_END
63e7749a26SDaniel Mack #endif
64