cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

board-generic.c (9571B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Copyright (C) 2005 Nokia Corporation
      4 * Author: Paul Mundt <paul.mundt@nokia.com>
      5 *
      6 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
      7 *
      8 * Modified from the original mach-omap/omap2/board-generic.c did by Paul
      9 * to support the OMAP2+ device tree boards with an unique board file.
     10 */
     11#include <linux/io.h>
     12#include <linux/of_irq.h>
     13#include <linux/of_platform.h>
     14#include <linux/irqdomain.h>
     15#include <linux/clocksource.h>
     16
     17#include <asm/setup.h>
     18#include <asm/mach/arch.h>
     19#include <asm/system_info.h>
     20
     21#include "common.h"
     22
     23static const struct of_device_id omap_dt_match_table[] __initconst = {
     24	{ .compatible = "simple-bus", },
     25	{ .compatible = "ti,omap-infra", },
     26	{ }
     27};
     28
     29static void __init __maybe_unused omap_generic_init(void)
     30{
     31	pdata_quirks_init(omap_dt_match_table);
     32	omap_soc_device_init();
     33}
     34
     35/* Clocks are needed early, see drivers/clocksource for the rest */
     36static void __init __maybe_unused omap_init_time_of(void)
     37{
     38	omap_clk_init();
     39	timer_probe();
     40}
     41
     42/* Used by am437x for ARM timer in non-SMP configurations */
     43#if !defined(CONFIG_SMP) && defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST)
     44void tick_broadcast(const struct cpumask *mask)
     45{
     46}
     47#endif
     48
     49#ifdef CONFIG_SOC_OMAP2420
     50static const char *const omap242x_boards_compat[] __initconst = {
     51	"ti,omap2420",
     52	NULL,
     53};
     54
     55DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
     56	.reserve	= omap_reserve,
     57	.map_io		= omap242x_map_io,
     58	.init_early	= omap2420_init_early,
     59	.init_machine	= omap_generic_init,
     60	.init_time	= omap_init_time_of,
     61	.dt_compat	= omap242x_boards_compat,
     62	.restart	= omap2xxx_restart,
     63MACHINE_END
     64#endif
     65
     66#ifdef CONFIG_SOC_OMAP2430
     67static const char *const omap243x_boards_compat[] __initconst = {
     68	"ti,omap2430",
     69	NULL,
     70};
     71
     72DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
     73	.reserve	= omap_reserve,
     74	.map_io		= omap243x_map_io,
     75	.init_early	= omap2430_init_early,
     76	.init_machine	= omap_generic_init,
     77	.init_time	= omap_init_time_of,
     78	.dt_compat	= omap243x_boards_compat,
     79	.restart	= omap2xxx_restart,
     80MACHINE_END
     81#endif
     82
     83#ifdef CONFIG_ARCH_OMAP3
     84/* Some boards need board name for legacy userspace in /proc/cpuinfo */
     85static const char *const n900_boards_compat[] __initconst = {
     86	"nokia,omap3-n900",
     87	NULL,
     88};
     89
     90/* Set system_rev from atags */
     91static void __init rx51_set_system_rev(const struct tag *tags)
     92{
     93	const struct tag *tag;
     94
     95	if (tags->hdr.tag != ATAG_CORE)
     96		return;
     97
     98	for_each_tag(tag, tags) {
     99		if (tag->hdr.tag == ATAG_REVISION) {
    100			system_rev = tag->u.revision.rev;
    101			break;
    102		}
    103	}
    104}
    105
    106/* Legacy userspace on Nokia N900 needs ATAGS exported in /proc/atags,
    107 * save them while the data is still not overwritten
    108 */
    109static void __init rx51_reserve(void)
    110{
    111	const struct tag *tags = (const struct tag *)(PAGE_OFFSET + 0x100);
    112
    113	save_atags(tags);
    114	rx51_set_system_rev(tags);
    115	omap_reserve();
    116}
    117
    118DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
    119	.reserve	= rx51_reserve,
    120	.map_io		= omap3_map_io,
    121	.init_early	= omap3430_init_early,
    122	.init_machine	= omap_generic_init,
    123	.init_late	= omap3_init_late,
    124	.init_time	= omap_init_time_of,
    125	.dt_compat	= n900_boards_compat,
    126	.restart	= omap3xxx_restart,
    127MACHINE_END
    128
    129/* Generic omap3 boards, most boards can use these */
    130static const char *const omap3_boards_compat[] __initconst = {
    131	"ti,omap3430",
    132	"ti,omap3",
    133	NULL,
    134};
    135
    136DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
    137	.reserve	= omap_reserve,
    138	.map_io		= omap3_map_io,
    139	.init_early	= omap3430_init_early,
    140	.init_machine	= omap_generic_init,
    141	.init_late	= omap3_init_late,
    142	.init_time	= omap_init_time_of,
    143	.dt_compat	= omap3_boards_compat,
    144	.restart	= omap3xxx_restart,
    145MACHINE_END
    146
    147static const char *const omap36xx_boards_compat[] __initconst = {
    148	"ti,omap3630",
    149	"ti,omap36xx",
    150	NULL,
    151};
    152
    153DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
    154	.reserve	= omap_reserve,
    155	.map_io		= omap3_map_io,
    156	.init_early	= omap3630_init_early,
    157	.init_machine	= omap_generic_init,
    158	.init_late	= omap3_init_late,
    159	.init_time	= omap_init_time_of,
    160	.dt_compat	= omap36xx_boards_compat,
    161	.restart	= omap3xxx_restart,
    162MACHINE_END
    163
    164static const char *const omap3_gp_boards_compat[] __initconst = {
    165	"ti,omap3-beagle",
    166	"timll,omap3-devkit8000",
    167	NULL,
    168};
    169
    170DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
    171	.reserve	= omap_reserve,
    172	.map_io		= omap3_map_io,
    173	.init_early	= omap3430_init_early,
    174	.init_machine	= omap_generic_init,
    175	.init_late	= omap3_init_late,
    176	.init_time	= omap_init_time_of,
    177	.dt_compat	= omap3_gp_boards_compat,
    178	.restart	= omap3xxx_restart,
    179MACHINE_END
    180
    181static const char *const am3517_boards_compat[] __initconst = {
    182	"ti,am3517",
    183	NULL,
    184};
    185
    186DT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)")
    187	.reserve	= omap_reserve,
    188	.map_io		= omap3_map_io,
    189	.init_early	= am35xx_init_early,
    190	.init_machine	= omap_generic_init,
    191	.init_late	= omap3_init_late,
    192	.init_time	= omap_init_time_of,
    193	.dt_compat	= am3517_boards_compat,
    194	.restart	= omap3xxx_restart,
    195MACHINE_END
    196#endif
    197
    198#ifdef CONFIG_SOC_TI81XX
    199static const char *const ti814x_boards_compat[] __initconst = {
    200	"ti,dm8148",
    201	"ti,dm814",
    202	NULL,
    203};
    204
    205DT_MACHINE_START(TI814X_DT, "Generic ti814x (Flattened Device Tree)")
    206	.reserve	= omap_reserve,
    207	.map_io		= ti81xx_map_io,
    208	.init_early	= ti814x_init_early,
    209	.init_machine	= omap_generic_init,
    210	.init_late	= ti81xx_init_late,
    211	.init_time	= omap_init_time_of,
    212	.dt_compat	= ti814x_boards_compat,
    213	.restart	= ti81xx_restart,
    214MACHINE_END
    215
    216static const char *const ti816x_boards_compat[] __initconst = {
    217	"ti,dm8168",
    218	"ti,dm816",
    219	NULL,
    220};
    221
    222DT_MACHINE_START(TI816X_DT, "Generic ti816x (Flattened Device Tree)")
    223	.reserve	= omap_reserve,
    224	.map_io		= ti81xx_map_io,
    225	.init_early	= ti816x_init_early,
    226	.init_machine	= omap_generic_init,
    227	.init_late	= ti81xx_init_late,
    228	.init_time	= omap_init_time_of,
    229	.dt_compat	= ti816x_boards_compat,
    230	.restart	= ti81xx_restart,
    231MACHINE_END
    232#endif
    233
    234#ifdef CONFIG_SOC_AM33XX
    235static const char *const am33xx_boards_compat[] __initconst = {
    236	"ti,am33xx",
    237	NULL,
    238};
    239
    240DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
    241	.reserve	= omap_reserve,
    242	.map_io		= am33xx_map_io,
    243	.init_early	= am33xx_init_early,
    244	.init_machine	= omap_generic_init,
    245	.init_late	= am33xx_init_late,
    246	.init_time	= omap_init_time_of,
    247	.dt_compat	= am33xx_boards_compat,
    248	.restart	= am33xx_restart,
    249MACHINE_END
    250#endif
    251
    252#ifdef CONFIG_ARCH_OMAP4
    253static const char *const omap4_boards_compat[] __initconst = {
    254	"ti,omap4460",
    255	"ti,omap4430",
    256	"ti,omap4",
    257	NULL,
    258};
    259
    260DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
    261	.l2c_aux_val	= OMAP_L2C_AUX_CTRL,
    262	.l2c_aux_mask	= 0xcf9fffff,
    263	.l2c_write_sec	= omap4_l2c310_write_sec,
    264	.reserve	= omap_reserve,
    265	.smp		= smp_ops(omap4_smp_ops),
    266	.map_io		= omap4_map_io,
    267	.init_early	= omap4430_init_early,
    268	.init_irq	= omap_gic_of_init,
    269	.init_machine	= omap_generic_init,
    270	.init_late	= omap4430_init_late,
    271	.init_time	= omap_init_time_of,
    272	.dt_compat	= omap4_boards_compat,
    273	.restart	= omap44xx_restart,
    274MACHINE_END
    275#endif
    276
    277#ifdef CONFIG_SOC_OMAP5
    278static const char *const omap5_boards_compat[] __initconst = {
    279	"ti,omap5432",
    280	"ti,omap5430",
    281	"ti,omap5",
    282	NULL,
    283};
    284
    285DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
    286#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    287	.dma_zone_size	= SZ_2G,
    288#endif
    289	.reserve	= omap_reserve,
    290	.smp		= smp_ops(omap4_smp_ops),
    291	.map_io		= omap5_map_io,
    292	.init_early	= omap5_init_early,
    293	.init_irq	= omap_gic_of_init,
    294	.init_machine	= omap_generic_init,
    295	.init_late	= omap5_init_late,
    296	.init_time	= omap5_realtime_timer_init,
    297	.dt_compat	= omap5_boards_compat,
    298	.restart	= omap44xx_restart,
    299MACHINE_END
    300#endif
    301
    302#ifdef CONFIG_SOC_AM43XX
    303static const char *const am43_boards_compat[] __initconst = {
    304	"ti,am4372",
    305	"ti,am43",
    306	NULL,
    307};
    308
    309DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
    310	.l2c_aux_val	= OMAP_L2C_AUX_CTRL,
    311	.l2c_aux_mask	= 0xcf9fffff,
    312	.l2c_write_sec	= omap4_l2c310_write_sec,
    313	.map_io		= am33xx_map_io,
    314	.init_early	= am43xx_init_early,
    315	.init_late	= am43xx_init_late,
    316	.init_irq	= omap_gic_of_init,
    317	.init_machine	= omap_generic_init,
    318	.init_time	= omap_init_time_of,
    319	.dt_compat	= am43_boards_compat,
    320	.restart	= omap44xx_restart,
    321MACHINE_END
    322#endif
    323
    324#ifdef CONFIG_SOC_DRA7XX
    325static const char *const dra74x_boards_compat[] __initconst = {
    326	"ti,dra762",
    327	"ti,am5728",
    328	"ti,am5726",
    329	"ti,dra742",
    330	"ti,dra7",
    331	NULL,
    332};
    333
    334DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
    335#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    336	.dma_zone_size	= SZ_2G,
    337#endif
    338	.reserve	= omap_reserve,
    339	.smp		= smp_ops(omap4_smp_ops),
    340	.map_io		= dra7xx_map_io,
    341	.init_early	= dra7xx_init_early,
    342	.init_late	= dra7xx_init_late,
    343	.init_irq	= omap_gic_of_init,
    344	.init_machine	= omap_generic_init,
    345	.init_time	= omap5_realtime_timer_init,
    346	.dt_compat	= dra74x_boards_compat,
    347	.restart	= omap44xx_restart,
    348MACHINE_END
    349
    350static const char *const dra72x_boards_compat[] __initconst = {
    351	"ti,am5718",
    352	"ti,am5716",
    353	"ti,dra722",
    354	"ti,dra718",
    355	NULL,
    356};
    357
    358DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
    359#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    360	.dma_zone_size	= SZ_2G,
    361#endif
    362	.reserve	= omap_reserve,
    363	.map_io		= dra7xx_map_io,
    364	.init_early	= dra7xx_init_early,
    365	.init_late	= dra7xx_init_late,
    366	.init_irq	= omap_gic_of_init,
    367	.init_machine	= omap_generic_init,
    368	.init_time	= omap5_realtime_timer_init,
    369	.dt_compat	= dra72x_boards_compat,
    370	.restart	= omap44xx_restart,
    371MACHINE_END
    372#endif