18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2005 Nokia Corporation
48c2ecf20Sopenharmony_ci * Author: Paul Mundt <paul.mundt@nokia.com>
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Modified from the original mach-omap/omap2/board-generic.c did by Paul
98c2ecf20Sopenharmony_ci * to support the OMAP2+ device tree boards with an unique board file.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci#include <linux/io.h>
128c2ecf20Sopenharmony_ci#include <linux/of_irq.h>
138c2ecf20Sopenharmony_ci#include <linux/of_platform.h>
148c2ecf20Sopenharmony_ci#include <linux/irqdomain.h>
158c2ecf20Sopenharmony_ci#include <linux/clocksource.h>
168c2ecf20Sopenharmony_ci#include <linux/clockchips.h>
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci#include <asm/setup.h>
198c2ecf20Sopenharmony_ci#include <asm/mach/arch.h>
208c2ecf20Sopenharmony_ci#include <asm/system_info.h>
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci#include "common.h"
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistatic const struct of_device_id omap_dt_match_table[] __initconst = {
258c2ecf20Sopenharmony_ci	{ .compatible = "simple-bus", },
268c2ecf20Sopenharmony_ci	{ .compatible = "ti,omap-infra", },
278c2ecf20Sopenharmony_ci	{ }
288c2ecf20Sopenharmony_ci};
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cistatic void __init __maybe_unused omap_generic_init(void)
318c2ecf20Sopenharmony_ci{
328c2ecf20Sopenharmony_ci	pdata_quirks_init(omap_dt_match_table);
338c2ecf20Sopenharmony_ci	omap_soc_device_init();
348c2ecf20Sopenharmony_ci}
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci/* Clocks are needed early, see drivers/clocksource for the rest */
378c2ecf20Sopenharmony_cistatic void __init __maybe_unused omap_init_time_of(void)
388c2ecf20Sopenharmony_ci{
398c2ecf20Sopenharmony_ci	omap_clk_init();
408c2ecf20Sopenharmony_ci	timer_probe();
418c2ecf20Sopenharmony_ci}
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci/* Used by am437x for ARM timer in non-SMP configurations */
448c2ecf20Sopenharmony_ci#if !defined(CONFIG_SMP) && defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST)
458c2ecf20Sopenharmony_civoid tick_broadcast(const struct cpumask *mask)
468c2ecf20Sopenharmony_ci{
478c2ecf20Sopenharmony_ci}
488c2ecf20Sopenharmony_ci#endif
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_OMAP2420
518c2ecf20Sopenharmony_cistatic const char *const omap242x_boards_compat[] __initconst = {
528c2ecf20Sopenharmony_ci	"ti,omap2420",
538c2ecf20Sopenharmony_ci	NULL,
548c2ecf20Sopenharmony_ci};
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
578c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
588c2ecf20Sopenharmony_ci	.map_io		= omap242x_map_io,
598c2ecf20Sopenharmony_ci	.init_early	= omap2420_init_early,
608c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
618c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
628c2ecf20Sopenharmony_ci	.dt_compat	= omap242x_boards_compat,
638c2ecf20Sopenharmony_ci	.restart	= omap2xxx_restart,
648c2ecf20Sopenharmony_ciMACHINE_END
658c2ecf20Sopenharmony_ci#endif
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_OMAP2430
688c2ecf20Sopenharmony_cistatic const char *const omap243x_boards_compat[] __initconst = {
698c2ecf20Sopenharmony_ci	"ti,omap2430",
708c2ecf20Sopenharmony_ci	NULL,
718c2ecf20Sopenharmony_ci};
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
748c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
758c2ecf20Sopenharmony_ci	.map_io		= omap243x_map_io,
768c2ecf20Sopenharmony_ci	.init_early	= omap2430_init_early,
778c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
788c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
798c2ecf20Sopenharmony_ci	.dt_compat	= omap243x_boards_compat,
808c2ecf20Sopenharmony_ci	.restart	= omap2xxx_restart,
818c2ecf20Sopenharmony_ciMACHINE_END
828c2ecf20Sopenharmony_ci#endif
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci#ifdef CONFIG_ARCH_OMAP3
858c2ecf20Sopenharmony_ci/* Some boards need board name for legacy userspace in /proc/cpuinfo */
868c2ecf20Sopenharmony_cistatic const char *const n900_boards_compat[] __initconst = {
878c2ecf20Sopenharmony_ci	"nokia,omap3-n900",
888c2ecf20Sopenharmony_ci	NULL,
898c2ecf20Sopenharmony_ci};
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci/* Set system_rev from atags */
928c2ecf20Sopenharmony_cistatic void __init rx51_set_system_rev(const struct tag *tags)
938c2ecf20Sopenharmony_ci{
948c2ecf20Sopenharmony_ci	const struct tag *tag;
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci	if (tags->hdr.tag != ATAG_CORE)
978c2ecf20Sopenharmony_ci		return;
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci	for_each_tag(tag, tags) {
1008c2ecf20Sopenharmony_ci		if (tag->hdr.tag == ATAG_REVISION) {
1018c2ecf20Sopenharmony_ci			system_rev = tag->u.revision.rev;
1028c2ecf20Sopenharmony_ci			break;
1038c2ecf20Sopenharmony_ci		}
1048c2ecf20Sopenharmony_ci	}
1058c2ecf20Sopenharmony_ci}
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci/* Legacy userspace on Nokia N900 needs ATAGS exported in /proc/atags,
1088c2ecf20Sopenharmony_ci * save them while the data is still not overwritten
1098c2ecf20Sopenharmony_ci */
1108c2ecf20Sopenharmony_cistatic void __init rx51_reserve(void)
1118c2ecf20Sopenharmony_ci{
1128c2ecf20Sopenharmony_ci	const struct tag *tags = (const struct tag *)(PAGE_OFFSET + 0x100);
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci	save_atags(tags);
1158c2ecf20Sopenharmony_ci	rx51_set_system_rev(tags);
1168c2ecf20Sopenharmony_ci	omap_reserve();
1178c2ecf20Sopenharmony_ci}
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
1208c2ecf20Sopenharmony_ci	.reserve	= rx51_reserve,
1218c2ecf20Sopenharmony_ci	.map_io		= omap3_map_io,
1228c2ecf20Sopenharmony_ci	.init_early	= omap3430_init_early,
1238c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
1248c2ecf20Sopenharmony_ci	.init_late	= omap3_init_late,
1258c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
1268c2ecf20Sopenharmony_ci	.dt_compat	= n900_boards_compat,
1278c2ecf20Sopenharmony_ci	.restart	= omap3xxx_restart,
1288c2ecf20Sopenharmony_ciMACHINE_END
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci/* Generic omap3 boards, most boards can use these */
1318c2ecf20Sopenharmony_cistatic const char *const omap3_boards_compat[] __initconst = {
1328c2ecf20Sopenharmony_ci	"ti,omap3430",
1338c2ecf20Sopenharmony_ci	"ti,omap3",
1348c2ecf20Sopenharmony_ci	NULL,
1358c2ecf20Sopenharmony_ci};
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
1388c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
1398c2ecf20Sopenharmony_ci	.map_io		= omap3_map_io,
1408c2ecf20Sopenharmony_ci	.init_early	= omap3430_init_early,
1418c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
1428c2ecf20Sopenharmony_ci	.init_late	= omap3_init_late,
1438c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
1448c2ecf20Sopenharmony_ci	.dt_compat	= omap3_boards_compat,
1458c2ecf20Sopenharmony_ci	.restart	= omap3xxx_restart,
1468c2ecf20Sopenharmony_ciMACHINE_END
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_cistatic const char *const omap36xx_boards_compat[] __initconst = {
1498c2ecf20Sopenharmony_ci	"ti,omap3630",
1508c2ecf20Sopenharmony_ci	"ti,omap36xx",
1518c2ecf20Sopenharmony_ci	NULL,
1528c2ecf20Sopenharmony_ci};
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
1558c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
1568c2ecf20Sopenharmony_ci	.map_io		= omap3_map_io,
1578c2ecf20Sopenharmony_ci	.init_early	= omap3630_init_early,
1588c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
1598c2ecf20Sopenharmony_ci	.init_late	= omap3_init_late,
1608c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
1618c2ecf20Sopenharmony_ci	.dt_compat	= omap36xx_boards_compat,
1628c2ecf20Sopenharmony_ci	.restart	= omap3xxx_restart,
1638c2ecf20Sopenharmony_ciMACHINE_END
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_cistatic const char *const omap3_gp_boards_compat[] __initconst = {
1668c2ecf20Sopenharmony_ci	"ti,omap3-beagle",
1678c2ecf20Sopenharmony_ci	"timll,omap3-devkit8000",
1688c2ecf20Sopenharmony_ci	NULL,
1698c2ecf20Sopenharmony_ci};
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
1728c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
1738c2ecf20Sopenharmony_ci	.map_io		= omap3_map_io,
1748c2ecf20Sopenharmony_ci	.init_early	= omap3430_init_early,
1758c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
1768c2ecf20Sopenharmony_ci	.init_late	= omap3_init_late,
1778c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
1788c2ecf20Sopenharmony_ci	.dt_compat	= omap3_gp_boards_compat,
1798c2ecf20Sopenharmony_ci	.restart	= omap3xxx_restart,
1808c2ecf20Sopenharmony_ciMACHINE_END
1818c2ecf20Sopenharmony_ci
1828c2ecf20Sopenharmony_cistatic const char *const am3517_boards_compat[] __initconst = {
1838c2ecf20Sopenharmony_ci	"ti,am3517",
1848c2ecf20Sopenharmony_ci	NULL,
1858c2ecf20Sopenharmony_ci};
1868c2ecf20Sopenharmony_ci
1878c2ecf20Sopenharmony_ciDT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)")
1888c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
1898c2ecf20Sopenharmony_ci	.map_io		= omap3_map_io,
1908c2ecf20Sopenharmony_ci	.init_early	= am35xx_init_early,
1918c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
1928c2ecf20Sopenharmony_ci	.init_late	= omap3_init_late,
1938c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
1948c2ecf20Sopenharmony_ci	.dt_compat	= am3517_boards_compat,
1958c2ecf20Sopenharmony_ci	.restart	= omap3xxx_restart,
1968c2ecf20Sopenharmony_ciMACHINE_END
1978c2ecf20Sopenharmony_ci#endif
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_TI81XX
2008c2ecf20Sopenharmony_cistatic const char *const ti814x_boards_compat[] __initconst = {
2018c2ecf20Sopenharmony_ci	"ti,dm8148",
2028c2ecf20Sopenharmony_ci	"ti,dm814",
2038c2ecf20Sopenharmony_ci	NULL,
2048c2ecf20Sopenharmony_ci};
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_ciDT_MACHINE_START(TI814X_DT, "Generic ti814x (Flattened Device Tree)")
2078c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
2088c2ecf20Sopenharmony_ci	.map_io		= ti81xx_map_io,
2098c2ecf20Sopenharmony_ci	.init_early	= ti814x_init_early,
2108c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
2118c2ecf20Sopenharmony_ci	.init_late	= ti81xx_init_late,
2128c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
2138c2ecf20Sopenharmony_ci	.dt_compat	= ti814x_boards_compat,
2148c2ecf20Sopenharmony_ci	.restart	= ti81xx_restart,
2158c2ecf20Sopenharmony_ciMACHINE_END
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_cistatic const char *const ti816x_boards_compat[] __initconst = {
2188c2ecf20Sopenharmony_ci	"ti,dm8168",
2198c2ecf20Sopenharmony_ci	"ti,dm816",
2208c2ecf20Sopenharmony_ci	NULL,
2218c2ecf20Sopenharmony_ci};
2228c2ecf20Sopenharmony_ci
2238c2ecf20Sopenharmony_ciDT_MACHINE_START(TI816X_DT, "Generic ti816x (Flattened Device Tree)")
2248c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
2258c2ecf20Sopenharmony_ci	.map_io		= ti81xx_map_io,
2268c2ecf20Sopenharmony_ci	.init_early	= ti816x_init_early,
2278c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
2288c2ecf20Sopenharmony_ci	.init_late	= ti81xx_init_late,
2298c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
2308c2ecf20Sopenharmony_ci	.dt_compat	= ti816x_boards_compat,
2318c2ecf20Sopenharmony_ci	.restart	= ti81xx_restart,
2328c2ecf20Sopenharmony_ciMACHINE_END
2338c2ecf20Sopenharmony_ci#endif
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_AM33XX
2368c2ecf20Sopenharmony_cistatic const char *const am33xx_boards_compat[] __initconst = {
2378c2ecf20Sopenharmony_ci	"ti,am33xx",
2388c2ecf20Sopenharmony_ci	NULL,
2398c2ecf20Sopenharmony_ci};
2408c2ecf20Sopenharmony_ci
2418c2ecf20Sopenharmony_ciDT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
2428c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
2438c2ecf20Sopenharmony_ci	.map_io		= am33xx_map_io,
2448c2ecf20Sopenharmony_ci	.init_early	= am33xx_init_early,
2458c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
2468c2ecf20Sopenharmony_ci	.init_late	= am33xx_init_late,
2478c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
2488c2ecf20Sopenharmony_ci	.dt_compat	= am33xx_boards_compat,
2498c2ecf20Sopenharmony_ci	.restart	= am33xx_restart,
2508c2ecf20Sopenharmony_ciMACHINE_END
2518c2ecf20Sopenharmony_ci#endif
2528c2ecf20Sopenharmony_ci
2538c2ecf20Sopenharmony_ci#ifdef CONFIG_ARCH_OMAP4
2548c2ecf20Sopenharmony_cistatic const char *const omap4_boards_compat[] __initconst = {
2558c2ecf20Sopenharmony_ci	"ti,omap4460",
2568c2ecf20Sopenharmony_ci	"ti,omap4430",
2578c2ecf20Sopenharmony_ci	"ti,omap4",
2588c2ecf20Sopenharmony_ci	NULL,
2598c2ecf20Sopenharmony_ci};
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
2628c2ecf20Sopenharmony_ci	.l2c_aux_val	= OMAP_L2C_AUX_CTRL,
2638c2ecf20Sopenharmony_ci	.l2c_aux_mask	= 0xcf9fffff,
2648c2ecf20Sopenharmony_ci	.l2c_write_sec	= omap4_l2c310_write_sec,
2658c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
2668c2ecf20Sopenharmony_ci	.smp		= smp_ops(omap4_smp_ops),
2678c2ecf20Sopenharmony_ci	.map_io		= omap4_map_io,
2688c2ecf20Sopenharmony_ci	.init_early	= omap4430_init_early,
2698c2ecf20Sopenharmony_ci	.init_irq	= omap_gic_of_init,
2708c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
2718c2ecf20Sopenharmony_ci	.init_late	= omap4430_init_late,
2728c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
2738c2ecf20Sopenharmony_ci	.dt_compat	= omap4_boards_compat,
2748c2ecf20Sopenharmony_ci	.restart	= omap44xx_restart,
2758c2ecf20Sopenharmony_ciMACHINE_END
2768c2ecf20Sopenharmony_ci#endif
2778c2ecf20Sopenharmony_ci
2788c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_OMAP5
2798c2ecf20Sopenharmony_cistatic const char *const omap5_boards_compat[] __initconst = {
2808c2ecf20Sopenharmony_ci	"ti,omap5432",
2818c2ecf20Sopenharmony_ci	"ti,omap5430",
2828c2ecf20Sopenharmony_ci	"ti,omap5",
2838c2ecf20Sopenharmony_ci	NULL,
2848c2ecf20Sopenharmony_ci};
2858c2ecf20Sopenharmony_ci
2868c2ecf20Sopenharmony_ciDT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
2878c2ecf20Sopenharmony_ci#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
2888c2ecf20Sopenharmony_ci	.dma_zone_size	= SZ_2G,
2898c2ecf20Sopenharmony_ci#endif
2908c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
2918c2ecf20Sopenharmony_ci	.smp		= smp_ops(omap4_smp_ops),
2928c2ecf20Sopenharmony_ci	.map_io		= omap5_map_io,
2938c2ecf20Sopenharmony_ci	.init_early	= omap5_init_early,
2948c2ecf20Sopenharmony_ci	.init_irq	= omap_gic_of_init,
2958c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
2968c2ecf20Sopenharmony_ci	.init_late	= omap5_init_late,
2978c2ecf20Sopenharmony_ci	.init_time	= omap5_realtime_timer_init,
2988c2ecf20Sopenharmony_ci	.dt_compat	= omap5_boards_compat,
2998c2ecf20Sopenharmony_ci	.restart	= omap44xx_restart,
3008c2ecf20Sopenharmony_ciMACHINE_END
3018c2ecf20Sopenharmony_ci#endif
3028c2ecf20Sopenharmony_ci
3038c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_AM43XX
3048c2ecf20Sopenharmony_cistatic const char *const am43_boards_compat[] __initconst = {
3058c2ecf20Sopenharmony_ci	"ti,am4372",
3068c2ecf20Sopenharmony_ci	"ti,am43",
3078c2ecf20Sopenharmony_ci	NULL,
3088c2ecf20Sopenharmony_ci};
3098c2ecf20Sopenharmony_ci
3108c2ecf20Sopenharmony_ciDT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
3118c2ecf20Sopenharmony_ci	.l2c_aux_val	= OMAP_L2C_AUX_CTRL,
3128c2ecf20Sopenharmony_ci	.l2c_aux_mask	= 0xcf9fffff,
3138c2ecf20Sopenharmony_ci	.l2c_write_sec	= omap4_l2c310_write_sec,
3148c2ecf20Sopenharmony_ci	.map_io		= am33xx_map_io,
3158c2ecf20Sopenharmony_ci	.init_early	= am43xx_init_early,
3168c2ecf20Sopenharmony_ci	.init_late	= am43xx_init_late,
3178c2ecf20Sopenharmony_ci	.init_irq	= omap_gic_of_init,
3188c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
3198c2ecf20Sopenharmony_ci	.init_time	= omap_init_time_of,
3208c2ecf20Sopenharmony_ci	.dt_compat	= am43_boards_compat,
3218c2ecf20Sopenharmony_ci	.restart	= omap44xx_restart,
3228c2ecf20Sopenharmony_ciMACHINE_END
3238c2ecf20Sopenharmony_ci#endif
3248c2ecf20Sopenharmony_ci
3258c2ecf20Sopenharmony_ci#ifdef CONFIG_SOC_DRA7XX
3268c2ecf20Sopenharmony_cistatic const char *const dra74x_boards_compat[] __initconst = {
3278c2ecf20Sopenharmony_ci	"ti,dra762",
3288c2ecf20Sopenharmony_ci	"ti,am5728",
3298c2ecf20Sopenharmony_ci	"ti,am5726",
3308c2ecf20Sopenharmony_ci	"ti,dra742",
3318c2ecf20Sopenharmony_ci	"ti,dra7",
3328c2ecf20Sopenharmony_ci	NULL,
3338c2ecf20Sopenharmony_ci};
3348c2ecf20Sopenharmony_ci
3358c2ecf20Sopenharmony_ciDT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
3368c2ecf20Sopenharmony_ci#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
3378c2ecf20Sopenharmony_ci	.dma_zone_size	= SZ_2G,
3388c2ecf20Sopenharmony_ci#endif
3398c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
3408c2ecf20Sopenharmony_ci	.smp		= smp_ops(omap4_smp_ops),
3418c2ecf20Sopenharmony_ci	.map_io		= dra7xx_map_io,
3428c2ecf20Sopenharmony_ci	.init_early	= dra7xx_init_early,
3438c2ecf20Sopenharmony_ci	.init_late	= dra7xx_init_late,
3448c2ecf20Sopenharmony_ci	.init_irq	= omap_gic_of_init,
3458c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
3468c2ecf20Sopenharmony_ci	.init_time	= omap5_realtime_timer_init,
3478c2ecf20Sopenharmony_ci	.dt_compat	= dra74x_boards_compat,
3488c2ecf20Sopenharmony_ci	.restart	= omap44xx_restart,
3498c2ecf20Sopenharmony_ciMACHINE_END
3508c2ecf20Sopenharmony_ci
3518c2ecf20Sopenharmony_cistatic const char *const dra72x_boards_compat[] __initconst = {
3528c2ecf20Sopenharmony_ci	"ti,am5718",
3538c2ecf20Sopenharmony_ci	"ti,am5716",
3548c2ecf20Sopenharmony_ci	"ti,dra722",
3558c2ecf20Sopenharmony_ci	"ti,dra718",
3568c2ecf20Sopenharmony_ci	NULL,
3578c2ecf20Sopenharmony_ci};
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ciDT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
3608c2ecf20Sopenharmony_ci#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
3618c2ecf20Sopenharmony_ci	.dma_zone_size	= SZ_2G,
3628c2ecf20Sopenharmony_ci#endif
3638c2ecf20Sopenharmony_ci	.reserve	= omap_reserve,
3648c2ecf20Sopenharmony_ci	.map_io		= dra7xx_map_io,
3658c2ecf20Sopenharmony_ci	.init_early	= dra7xx_init_early,
3668c2ecf20Sopenharmony_ci	.init_late	= dra7xx_init_late,
3678c2ecf20Sopenharmony_ci	.init_irq	= omap_gic_of_init,
3688c2ecf20Sopenharmony_ci	.init_machine	= omap_generic_init,
3698c2ecf20Sopenharmony_ci	.init_time	= omap5_realtime_timer_init,
3708c2ecf20Sopenharmony_ci	.dt_compat	= dra72x_boards_compat,
3718c2ecf20Sopenharmony_ci	.restart	= omap44xx_restart,
3728c2ecf20Sopenharmony_ciMACHINE_END
3738c2ecf20Sopenharmony_ci#endif
374