162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Setup code for SAMA5 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2013 Atmel, 662306a36Sopenharmony_ci * 2013 Ludovic Desroches <ludovic.desroches@atmel.com> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/of.h> 1062306a36Sopenharmony_ci#include <linux/of_platform.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <asm/hardware/cache-l2x0.h> 1362306a36Sopenharmony_ci#include <asm/mach/arch.h> 1462306a36Sopenharmony_ci#include <asm/mach/map.h> 1562306a36Sopenharmony_ci#include <asm/outercache.h> 1662306a36Sopenharmony_ci#include <asm/system_misc.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#include "generic.h" 1962306a36Sopenharmony_ci#include "sam_secure.h" 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistatic void sama5_l2c310_write_sec(unsigned long val, unsigned reg) 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci /* OP-TEE configures the L2 cache and does not allow modifying it yet */ 2462306a36Sopenharmony_ci} 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistatic void __init sama5_secure_cache_init(void) 2762306a36Sopenharmony_ci{ 2862306a36Sopenharmony_ci sam_secure_init(); 2962306a36Sopenharmony_ci if (IS_ENABLED(CONFIG_OUTER_CACHE) && sam_linux_is_optee_available()) 3062306a36Sopenharmony_ci outer_cache.write_sec = sama5_l2c310_write_sec; 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistatic void __init sama5_dt_device_init(void) 3462306a36Sopenharmony_ci{ 3562306a36Sopenharmony_ci of_platform_default_populate(NULL, NULL, NULL); 3662306a36Sopenharmony_ci sama5_pm_init(); 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistatic const char *const sama5_dt_board_compat[] __initconst = { 4062306a36Sopenharmony_ci "atmel,sama5", 4162306a36Sopenharmony_ci NULL 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ciDT_MACHINE_START(sama5_dt, "Atmel SAMA5") 4562306a36Sopenharmony_ci /* Maintainer: Atmel */ 4662306a36Sopenharmony_ci .init_machine = sama5_dt_device_init, 4762306a36Sopenharmony_ci .dt_compat = sama5_dt_board_compat, 4862306a36Sopenharmony_ciMACHINE_END 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistatic const char *const sama5_alt_dt_board_compat[] __initconst = { 5162306a36Sopenharmony_ci "atmel,sama5d4", 5262306a36Sopenharmony_ci NULL 5362306a36Sopenharmony_ci}; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciDT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") 5662306a36Sopenharmony_ci /* Maintainer: Atmel */ 5762306a36Sopenharmony_ci .init_machine = sama5_dt_device_init, 5862306a36Sopenharmony_ci .dt_compat = sama5_alt_dt_board_compat, 5962306a36Sopenharmony_ci .l2c_aux_mask = ~0UL, 6062306a36Sopenharmony_ciMACHINE_END 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cistatic void __init sama5d2_init(void) 6362306a36Sopenharmony_ci{ 6462306a36Sopenharmony_ci of_platform_default_populate(NULL, NULL, NULL); 6562306a36Sopenharmony_ci sama5d2_pm_init(); 6662306a36Sopenharmony_ci} 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistatic const char *const sama5d2_compat[] __initconst = { 6962306a36Sopenharmony_ci "atmel,sama5d2", 7062306a36Sopenharmony_ci NULL 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciDT_MACHINE_START(sama5d2, "Atmel SAMA5") 7462306a36Sopenharmony_ci /* Maintainer: Atmel */ 7562306a36Sopenharmony_ci .init_machine = sama5d2_init, 7662306a36Sopenharmony_ci .init_early = sama5_secure_cache_init, 7762306a36Sopenharmony_ci .dt_compat = sama5d2_compat, 7862306a36Sopenharmony_ci .l2c_aux_mask = ~0UL, 7962306a36Sopenharmony_ciMACHINE_END 80