Merge branch 'sfc-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-prima2 / common.c
1 /*
2  * Defines machines for CSR SiRFprimaII
3  *
4  * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
5  *
6  * Licensed under GPLv2 or later.
7  */
8
9 #include <linux/init.h>
10 #include <linux/kernel.h>
11 #include <linux/irqchip.h>
12 #include <asm/sizes.h>
13 #include <asm/mach-types.h>
14 #include <asm/mach/arch.h>
15 #include <linux/of.h>
16 #include <linux/of_platform.h>
17 #include "common.h"
18
19 static struct of_device_id sirfsoc_of_bus_ids[] __initdata = {
20         { .compatible = "simple-bus", },
21         {},
22 };
23
24 void __init sirfsoc_mach_init(void)
25 {
26         of_platform_bus_probe(NULL, sirfsoc_of_bus_ids, NULL);
27 }
28
29 void __init sirfsoc_init_late(void)
30 {
31         sirfsoc_pm_init();
32 }
33
34 static __init void sirfsoc_map_io(void)
35 {
36         sirfsoc_map_lluart();
37         sirfsoc_map_scu();
38 }
39
40 #ifdef CONFIG_ARCH_PRIMA2
41 static const char *prima2_dt_match[] __initdata = {
42        "sirf,prima2",
43        NULL
44 };
45
46 DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)")
47         /* Maintainer: Barry Song <baohua.song@csr.com> */
48         .map_io         = sirfsoc_map_io,
49         .init_irq       = sirfsoc_of_irq_init,
50         .init_time      = sirfsoc_prima2_timer_init,
51 #ifdef CONFIG_MULTI_IRQ_HANDLER
52         .handle_irq     = sirfsoc_handle_irq,
53 #endif
54         .dma_zone_size  = SZ_256M,
55         .init_machine   = sirfsoc_mach_init,
56         .init_late      = sirfsoc_init_late,
57         .dt_compat      = prima2_dt_match,
58         .restart        = sirfsoc_restart,
59 MACHINE_END
60 #endif
61
62 #ifdef CONFIG_ARCH_MARCO
63 static const char *marco_dt_match[] __initdata = {
64         "sirf,marco",
65         NULL
66 };
67
68 DT_MACHINE_START(MARCO_DT, "Generic MARCO (Flattened Device Tree)")
69         /* Maintainer: Barry Song <baohua.song@csr.com> */
70         .smp            = smp_ops(sirfsoc_smp_ops),
71         .map_io         = sirfsoc_map_io,
72         .init_irq       = irqchip_init,
73         .init_time      = sirfsoc_marco_timer_init,
74         .init_machine   = sirfsoc_mach_init,
75         .init_late      = sirfsoc_init_late,
76         .dt_compat      = marco_dt_match,
77         .restart        = sirfsoc_restart,
78 MACHINE_END
79 #endif