From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752560AbeETKRG (ORCPT ); Sun, 20 May 2018 06:17:06 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:40795 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751292AbeETKQ0 (ORCPT ); Sun, 20 May 2018 06:16:26 -0400 X-Google-Smtp-Source: AB8JxZox15mn8sIIR2QkI/G1zr+Gv0nhYPTsd1ume+k8CU6wab22xWqioiUhr1YBhkpqRCm8MLYj9A== From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v1 3/5] ARM: tegra: Setup L2 cache using Trusted Foundations firmware Date: Sun, 20 May 2018 13:15:40 +0300 Message-Id: <20180520101542.12206-4-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tegra20/30 L2 cache must be initialized using firmware call if CPU is running in insecure mode. Initialize L2 cache and setup the outer-cache callbacks in early boot using the firmware API. Signed-off-by: Dmitry Osipenko --- arch/arm/mach-tegra/tegra.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c index f9587be48235..590b1cf1a8c4 100644 --- a/arch/arm/mach-tegra/tegra.c +++ b/arch/arm/mach-tegra/tegra.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -70,9 +71,23 @@ u32 tegra_uart_config[3] = { 0, }; +static void __init tegra_trusted_foundations_l2x0_cache_init(void) +{ + if (IS_ENABLED(CONFIG_CACHE_L2X0) && + IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC) && + of_machine_is_compatible("nvidia,tegra20")) + call_firmware_op(l2x0_init); + + if (IS_ENABLED(CONFIG_CACHE_L2X0) && + IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) && + of_machine_is_compatible("nvidia,tegra30")) + call_firmware_op(l2x0_init); +} + static void __init tegra_init_early(void) { of_register_trusted_foundations(); + tegra_trusted_foundations_l2x0_cache_init(); tegra_cpu_reset_handler_init(); } -- 2.17.0