blob: 8f9a0ef087bd75dc43f8e32f95481c00cfe84815 [file] [log] [blame]
Sathish Ambley9b40e7d2012-01-03 16:50:44 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Sathish Ambleyc58afc22011-10-09 21:55:39 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/kernel.h>
14#include <linux/errno.h>
15#include <linux/of.h>
16#include <linux/of_address.h>
17#include <linux/of_platform.h>
18#include <linux/of_fdt.h>
Sathish Ambley098f9bd2011-11-09 16:32:53 -080019#include <linux/of_irq.h>
Sathish Ambley9b40e7d2012-01-03 16:50:44 -080020#include <asm/hardware/gic.h>
Sathish Ambley098f9bd2011-11-09 16:32:53 -080021#include <asm/arch_timer.h>
Sathish Ambleyc58afc22011-10-09 21:55:39 -070022#include <asm/mach/arch.h>
Sathish Ambley098f9bd2011-11-09 16:32:53 -080023#include <asm/mach/time.h>
Sathish Ambleyc58afc22011-10-09 21:55:39 -070024#include <mach/socinfo.h>
25#include <mach/board.h>
Stepan Moskovchenkoa000d132012-08-14 21:05:14 -070026#include <mach/restart.h>
Sathish Ambley098f9bd2011-11-09 16:32:53 -080027
28static void __init msm_dt_timer_init(void)
29{
Sathish Ambley2f27a172012-03-16 10:46:28 -070030 arch_timer_of_register();
Sathish Ambley098f9bd2011-11-09 16:32:53 -080031}
32
33static struct sys_timer msm_dt_timer = {
34 .init = msm_dt_timer_init
35};
36
Sathish Ambleyc58afc22011-10-09 21:55:39 -070037static void __init msm_dt_init_irq(void)
38{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070039 if (machine_is_msm8974())
40 msm_8974_init_irq();
Sathish Ambleyc58afc22011-10-09 21:55:39 -070041}
42
43static void __init msm_dt_map_io(void)
44{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070045 if (early_machine_is_msm8974())
46 msm_map_8974_io();
Sathish Ambleyc58afc22011-10-09 21:55:39 -070047 if (socinfo_init() < 0)
48 pr_err("%s: socinfo_init() failed\n", __func__);
49}
50
51static void __init msm_dt_init(void)
52{
53 struct of_dev_auxdata *adata = NULL;
54
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070055 if (machine_is_msm8974())
56 msm_8974_init(&adata);
Sathish Ambleyc58afc22011-10-09 21:55:39 -070057
58 of_platform_populate(NULL, of_default_bus_match_table, adata, NULL);
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070059 if (machine_is_msm8974()) {
60 msm_8974_add_devices();
61 msm_8974_add_drivers();
Michael Bohane7c2b472012-03-30 14:27:18 -070062 }
Sathish Ambleyc58afc22011-10-09 21:55:39 -070063}
64
David Brown25454262012-03-29 15:28:43 -070065static const char *msm_dt_match[] __initconst = {
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070066 "qcom,msm8974",
Sathish Ambleyc58afc22011-10-09 21:55:39 -070067 NULL
68};
69
Olav Hauganb800c8c2012-01-30 08:50:45 -080070static void __init msm_dt_reserve(void)
71{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070072 if (early_machine_is_msm8974())
73 msm_8974_reserve();
Olav Hauganb800c8c2012-01-30 08:50:45 -080074}
75
76static void __init msm_dt_init_very_early(void)
77{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -070078 if (early_machine_is_msm8974())
79 msm_8974_very_early();
Olav Hauganb800c8c2012-01-30 08:50:45 -080080}
81
Sathish Ambleyc58afc22011-10-09 21:55:39 -070082DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
83 .map_io = msm_dt_map_io,
84 .init_irq = msm_dt_init_irq,
85 .init_machine = msm_dt_init,
Sathish Ambley9b40e7d2012-01-03 16:50:44 -080086 .handle_irq = gic_handle_irq,
Sathish Ambley098f9bd2011-11-09 16:32:53 -080087 .timer = &msm_dt_timer,
Sathish Ambleyc58afc22011-10-09 21:55:39 -070088 .dt_compat = msm_dt_match,
Olav Hauganb800c8c2012-01-30 08:50:45 -080089 .reserve = msm_dt_reserve,
90 .init_very_early = msm_dt_init_very_early,
Stepan Moskovchenkoa000d132012-08-14 21:05:14 -070091 .restart = msm_restart,
Sathish Ambleyc58afc22011-10-09 21:55:39 -070092MACHINE_END