162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci// Copyright (C) 2012-2014 Broadcom Corporation 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/init.h> 662306a36Sopenharmony_ci#include <linux/printk.h> 762306a36Sopenharmony_ci#include <asm/hardware/cache-l2x0.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include "bcm_kona_smc.h" 1062306a36Sopenharmony_ci#include "kona_l2_cache.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_civoid __init kona_l2_cache_init(void) 1362306a36Sopenharmony_ci{ 1462306a36Sopenharmony_ci unsigned int result; 1562306a36Sopenharmony_ci int ret; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci ret = bcm_kona_smc_init(); 1862306a36Sopenharmony_ci if (ret) { 1962306a36Sopenharmony_ci pr_info("Secure API not available (%d). Skipping L2 init.\n", 2062306a36Sopenharmony_ci ret); 2162306a36Sopenharmony_ci return; 2262306a36Sopenharmony_ci } 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci result = bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0); 2562306a36Sopenharmony_ci if (result != SEC_ROM_RET_OK) { 2662306a36Sopenharmony_ci pr_err("Secure Monitor call failed (%u)! Skipping L2 init.\n", 2762306a36Sopenharmony_ci result); 2862306a36Sopenharmony_ci return; 2962306a36Sopenharmony_ci } 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci /* 3262306a36Sopenharmony_ci * The aux_val and aux_mask have no effect since L2 cache is already 3362306a36Sopenharmony_ci * enabled. Pass 0s for aux_val and 1s for aux_mask for default value. 3462306a36Sopenharmony_ci */ 3562306a36Sopenharmony_ci ret = l2x0_of_init(0, ~0); 3662306a36Sopenharmony_ci if (ret) 3762306a36Sopenharmony_ci pr_err("Couldn't enable L2 cache: %d\n", ret); 3862306a36Sopenharmony_ci} 39