11dbae815STony Lindgren /* 21dbae815STony Lindgren * Copyright (C) 2005 Nokia Corporation 31dbae815STony Lindgren * Author: Paul Mundt <paul.mundt@nokia.com> 41dbae815STony Lindgren * 58d61649dSBenoit Cousson * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 61dbae815STony Lindgren * 78d61649dSBenoit Cousson * Modified from the original mach-omap/omap2/board-generic.c did by Paul 88d61649dSBenoit Cousson * to support the OMAP2+ device tree boards with an unique board file. 91dbae815STony Lindgren * 101dbae815STony Lindgren * This program is free software; you can redistribute it and/or modify 111dbae815STony Lindgren * it under the terms of the GNU General Public License version 2 as 121dbae815STony Lindgren * published by the Free Software Foundation. 131dbae815STony Lindgren */ 148d61649dSBenoit Cousson #include <linux/io.h> 15fbf75da7SBenoit Cousson #include <linux/of_irq.h> 168d61649dSBenoit Cousson #include <linux/of_platform.h> 178d61649dSBenoit Cousson #include <linux/irqdomain.h> 18741532c4SRoger Quadros #include <linux/clk.h> 191dbae815STony Lindgren 201dbae815STony Lindgren #include <asm/mach/arch.h> 211dbae815STony Lindgren 224e65331cSTony Lindgren #include "common.h" 23a7cbb9b1SBenoit Cousson #include "common-board-devices.h" 2463d5fc0cSTomi Valkeinen #include "dss-common.h" 251dbae815STony Lindgren 2675a57fe9STony Lindgren #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) 27c4082d49SR Sricharan #define intc_of_init NULL 2875a57fe9STony Lindgren #endif 2975a57fe9STony Lindgren #ifndef CONFIG_ARCH_OMAP4 3075a57fe9STony Lindgren #define gic_of_init NULL 3175a57fe9STony Lindgren #endif 3275a57fe9STony Lindgren 338d61649dSBenoit Cousson static struct of_device_id omap_dt_match_table[] __initdata = { 348d61649dSBenoit Cousson { .compatible = "simple-bus", }, 358d61649dSBenoit Cousson { .compatible = "ti,omap-infra", }, 368d61649dSBenoit Cousson { } 37b3c6df3aSPaul Walmsley }; 38b3c6df3aSPaul Walmsley 39741532c4SRoger Quadros /* 40741532c4SRoger Quadros * Create alias for USB host PHY clock. 41741532c4SRoger Quadros * Remove this when clock phandle can be provided via DT 42741532c4SRoger Quadros */ 43741532c4SRoger Quadros static void __init legacy_init_ehci_clk(char *clkname) 44741532c4SRoger Quadros { 45741532c4SRoger Quadros int ret; 46741532c4SRoger Quadros 47741532c4SRoger Quadros ret = clk_add_alias("main_clk", NULL, clkname, NULL); 48741532c4SRoger Quadros if (ret) { 49741532c4SRoger Quadros pr_err("%s:Failed to add main_clk alias to %s :%d\n", 50741532c4SRoger Quadros __func__, clkname, ret); 51741532c4SRoger Quadros } 52741532c4SRoger Quadros } 53741532c4SRoger Quadros 541dbae815STony Lindgren static void __init omap_generic_init(void) 551dbae815STony Lindgren { 56a4ca9dbeSTony Lindgren omap_sdrc_init(NULL, NULL); 578d61649dSBenoit Cousson 588d61649dSBenoit Cousson of_platform_populate(NULL, omap_dt_match_table, NULL, NULL); 5963d5fc0cSTomi Valkeinen 6063d5fc0cSTomi Valkeinen /* 6163d5fc0cSTomi Valkeinen * HACK: call display setup code for selected boards to enable omapdss. 6263d5fc0cSTomi Valkeinen * This will be removed when omapdss supports DT. 6363d5fc0cSTomi Valkeinen */ 64741532c4SRoger Quadros if (of_machine_is_compatible("ti,omap4-panda")) { 6563d5fc0cSTomi Valkeinen omap4_panda_display_init_of(); 66741532c4SRoger Quadros legacy_init_ehci_clk("auxclk3_ck"); 67741532c4SRoger Quadros 68741532c4SRoger Quadros } 6963d5fc0cSTomi Valkeinen else if (of_machine_is_compatible("ti,omap4-sdp")) 7063d5fc0cSTomi Valkeinen omap_4430sdp_display_init_of(); 71741532c4SRoger Quadros else if (of_machine_is_compatible("ti,omap5-uevm")) 72741532c4SRoger Quadros legacy_init_ehci_clk("auxclk1_ck"); 731dbae815STony Lindgren } 741dbae815STony Lindgren 750e02a8c1SBenoit Cousson #ifdef CONFIG_SOC_OMAP2420 768d61649dSBenoit Cousson static const char *omap242x_boards_compat[] __initdata = { 778d61649dSBenoit Cousson "ti,omap2420", 788d61649dSBenoit Cousson NULL, 798d61649dSBenoit Cousson }; 801dbae815STony Lindgren 818d61649dSBenoit Cousson DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") 8271ee7dadSRussell King .reserve = omap_reserve, 838d61649dSBenoit Cousson .map_io = omap242x_map_io, 848d61649dSBenoit Cousson .init_early = omap2420_init_early, 85c4082d49SR Sricharan .init_irq = omap_intc_of_init, 86b755706cSBenoit Cousson .handle_irq = omap2_intc_handle_irq, 871dbae815STony Lindgren .init_machine = omap_generic_init, 886bb27d73SStephen Warren .init_time = omap2_sync32k_timer_init, 898d61649dSBenoit Cousson .dt_compat = omap242x_boards_compat, 90187e3e06SPaul Walmsley .restart = omap2xxx_restart, 911dbae815STony Lindgren MACHINE_END 928d61649dSBenoit Cousson #endif 938d61649dSBenoit Cousson 940e02a8c1SBenoit Cousson #ifdef CONFIG_SOC_OMAP2430 958d61649dSBenoit Cousson static const char *omap243x_boards_compat[] __initdata = { 968d61649dSBenoit Cousson "ti,omap2430", 978d61649dSBenoit Cousson NULL, 988d61649dSBenoit Cousson }; 998d61649dSBenoit Cousson 1008d61649dSBenoit Cousson DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") 1018d61649dSBenoit Cousson .reserve = omap_reserve, 1028d61649dSBenoit Cousson .map_io = omap243x_map_io, 1038d61649dSBenoit Cousson .init_early = omap2430_init_early, 104c4082d49SR Sricharan .init_irq = omap_intc_of_init, 1056b2f55d7SMarc Zyngier .handle_irq = omap2_intc_handle_irq, 1068d61649dSBenoit Cousson .init_machine = omap_generic_init, 1076bb27d73SStephen Warren .init_time = omap2_sync32k_timer_init, 1088d61649dSBenoit Cousson .dt_compat = omap243x_boards_compat, 109187e3e06SPaul Walmsley .restart = omap2xxx_restart, 1108d61649dSBenoit Cousson MACHINE_END 1118d61649dSBenoit Cousson #endif 1128d61649dSBenoit Cousson 1130e02a8c1SBenoit Cousson #ifdef CONFIG_ARCH_OMAP3 1148d61649dSBenoit Cousson static const char *omap3_boards_compat[] __initdata = { 1158d61649dSBenoit Cousson "ti,omap3", 1168d61649dSBenoit Cousson NULL, 1178d61649dSBenoit Cousson }; 1188d61649dSBenoit Cousson 1198d61649dSBenoit Cousson DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") 1208d61649dSBenoit Cousson .reserve = omap_reserve, 1218d61649dSBenoit Cousson .map_io = omap3_map_io, 1228d61649dSBenoit Cousson .init_early = omap3430_init_early, 123c4082d49SR Sricharan .init_irq = omap_intc_of_init, 124b755706cSBenoit Cousson .handle_irq = omap3_intc_handle_irq, 12593651b85SBenoit Cousson .init_machine = omap_generic_init, 126990fa4f5SRajendra Nayak .init_late = omap3_init_late, 1276bb27d73SStephen Warren .init_time = omap3_sync32k_timer_init, 1288d61649dSBenoit Cousson .dt_compat = omap3_boards_compat, 129187e3e06SPaul Walmsley .restart = omap3xxx_restart, 1308d61649dSBenoit Cousson MACHINE_END 1317dd9d502SJon Hunter 1327dd9d502SJon Hunter static const char *omap3_gp_boards_compat[] __initdata = { 1337dd9d502SJon Hunter "ti,omap3-beagle", 1344bfe6341SAnil Kumar "timll,omap3-devkit8000", 1357dd9d502SJon Hunter NULL, 1367dd9d502SJon Hunter }; 1377dd9d502SJon Hunter 1387dd9d502SJon Hunter DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") 1397dd9d502SJon Hunter .reserve = omap_reserve, 1407dd9d502SJon Hunter .map_io = omap3_map_io, 1417dd9d502SJon Hunter .init_early = omap3430_init_early, 1427dd9d502SJon Hunter .init_irq = omap_intc_of_init, 1437dd9d502SJon Hunter .handle_irq = omap3_intc_handle_irq, 1447dd9d502SJon Hunter .init_machine = omap_generic_init, 145990fa4f5SRajendra Nayak .init_late = omap3_init_late, 1466bb27d73SStephen Warren .init_time = omap3_secure_sync32k_timer_init, 1477dd9d502SJon Hunter .dt_compat = omap3_gp_boards_compat, 148d01e4afdSLinus Torvalds .restart = omap3xxx_restart, 1498d61649dSBenoit Cousson MACHINE_END 1508d61649dSBenoit Cousson #endif 1518d61649dSBenoit Cousson 15208f30989SAfzal Mohammed #ifdef CONFIG_SOC_AM33XX 15308f30989SAfzal Mohammed static const char *am33xx_boards_compat[] __initdata = { 15408f30989SAfzal Mohammed "ti,am33xx", 15508f30989SAfzal Mohammed NULL, 15608f30989SAfzal Mohammed }; 15708f30989SAfzal Mohammed 15808f30989SAfzal Mohammed DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)") 15908f30989SAfzal Mohammed .reserve = omap_reserve, 16008f30989SAfzal Mohammed .map_io = am33xx_map_io, 16108f30989SAfzal Mohammed .init_early = am33xx_init_early, 162c4082d49SR Sricharan .init_irq = omap_intc_of_init, 16308f30989SAfzal Mohammed .handle_irq = omap3_intc_handle_irq, 16408f30989SAfzal Mohammed .init_machine = omap_generic_init, 16500ea4d56SJon Hunter .init_time = omap3_gptimer_timer_init, 16608f30989SAfzal Mohammed .dt_compat = am33xx_boards_compat, 16714e067c1SJean-Sebastien A. Beaudry .restart = am33xx_restart, 16808f30989SAfzal Mohammed MACHINE_END 16908f30989SAfzal Mohammed #endif 17008f30989SAfzal Mohammed 1710e02a8c1SBenoit Cousson #ifdef CONFIG_ARCH_OMAP4 1728d61649dSBenoit Cousson static const char *omap4_boards_compat[] __initdata = { 1738d61649dSBenoit Cousson "ti,omap4", 1748d61649dSBenoit Cousson NULL, 1758d61649dSBenoit Cousson }; 1768d61649dSBenoit Cousson 1778d61649dSBenoit Cousson DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") 1788d61649dSBenoit Cousson .reserve = omap_reserve, 17906915321SMarc Zyngier .smp = smp_ops(omap4_smp_ops), 1808d61649dSBenoit Cousson .map_io = omap4_map_io, 1818d61649dSBenoit Cousson .init_early = omap4430_init_early, 182c4082d49SR Sricharan .init_irq = omap_gic_of_init, 18393651b85SBenoit Cousson .init_machine = omap_generic_init, 184bbd707acSShawn Guo .init_late = omap4430_init_late, 1856bb27d73SStephen Warren .init_time = omap4_local_timer_init, 1868d61649dSBenoit Cousson .dt_compat = omap4_boards_compat, 187187e3e06SPaul Walmsley .restart = omap44xx_restart, 1888d61649dSBenoit Cousson MACHINE_END 1898d61649dSBenoit Cousson #endif 1900c1b6facSR Sricharan 1910c1b6facSR Sricharan #ifdef CONFIG_SOC_OMAP5 1920c1b6facSR Sricharan static const char *omap5_boards_compat[] __initdata = { 1930c1b6facSR Sricharan "ti,omap5", 1940c1b6facSR Sricharan NULL, 1950c1b6facSR Sricharan }; 1960c1b6facSR Sricharan 1970c1b6facSR Sricharan DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)") 1980c1b6facSR Sricharan .reserve = omap_reserve, 19906915321SMarc Zyngier .smp = smp_ops(omap4_smp_ops), 2000c1b6facSR Sricharan .map_io = omap5_map_io, 2010c1b6facSR Sricharan .init_early = omap5_init_early, 2020c1b6facSR Sricharan .init_irq = omap_gic_of_init, 2030c1b6facSR Sricharan .init_machine = omap_generic_init, 2046bb27d73SStephen Warren .init_time = omap5_realtime_timer_init, 2050c1b6facSR Sricharan .dt_compat = omap5_boards_compat, 206187e3e06SPaul Walmsley .restart = omap44xx_restart, 2070c1b6facSR Sricharan MACHINE_END 2080c1b6facSR Sricharan #endif 209bb256f80SAfzal Mohammed 210bb256f80SAfzal Mohammed #ifdef CONFIG_SOC_AM43XX 211bb256f80SAfzal Mohammed static const char *am43_boards_compat[] __initdata = { 212bb256f80SAfzal Mohammed "ti,am43", 213bb256f80SAfzal Mohammed NULL, 214bb256f80SAfzal Mohammed }; 215bb256f80SAfzal Mohammed 216bb256f80SAfzal Mohammed DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") 217bb256f80SAfzal Mohammed .map_io = am33xx_map_io, 218bb256f80SAfzal Mohammed .init_early = am43xx_init_early, 219bb256f80SAfzal Mohammed .init_irq = omap_gic_of_init, 220bb256f80SAfzal Mohammed .init_machine = omap_generic_init, 221bb256f80SAfzal Mohammed .init_time = omap3_sync32k_timer_init, 222bb256f80SAfzal Mohammed .dt_compat = am43_boards_compat, 223bb256f80SAfzal Mohammed MACHINE_END 224bb256f80SAfzal Mohammed #endif 225439bf39eSR Sricharan 226439bf39eSR Sricharan #ifdef CONFIG_SOC_DRA7XX 227439bf39eSR Sricharan static const char *dra7xx_boards_compat[] __initdata = { 228439bf39eSR Sricharan "ti,dra7", 229439bf39eSR Sricharan NULL, 230439bf39eSR Sricharan }; 231439bf39eSR Sricharan 232439bf39eSR Sricharan DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)") 233439bf39eSR Sricharan .reserve = omap_reserve, 234439bf39eSR Sricharan .smp = smp_ops(omap4_smp_ops), 235439bf39eSR Sricharan .map_io = omap5_map_io, 236439bf39eSR Sricharan .init_early = dra7xx_init_early, 237439bf39eSR Sricharan .init_irq = omap_gic_of_init, 238439bf39eSR Sricharan .init_machine = omap_generic_init, 239439bf39eSR Sricharan .init_time = omap5_realtime_timer_init, 240439bf39eSR Sricharan .dt_compat = dra7xx_boards_compat, 2411d597b07SRajendra Nayak .restart = omap44xx_restart, 242439bf39eSR Sricharan MACHINE_END 243439bf39eSR Sricharan #endif 244