Commit 679530278d5a79d34e356ad2d452f4400953bfc2

Authored by Michael Walle
Committed by Albert ARIBAUD
1 parent 81a6c009fe
Exists in master and in 55 other branches 8qm-imx_v2020.04_5.4.70_2.3.0, emb_lf_v2022.04, emb_lf_v2023.04, imx_v2015.04_4.1.15_1.0.0_ga, pitx_8mp_lf_v2020.04, smarc-8m-android-10.0.0_2.6.0, smarc-8m-android-11.0.0_2.0.0, smarc-8mp-android-11.0.0_2.0.0, smarc-emmc-imx_v2014.04_3.10.53_1.1.0_ga, smarc-emmc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx-l5.0.0_1.0.0-ga, smarc-imx6_v2018.03_4.14.98_2.0.0_ga, smarc-imx7_v2017.03_4.9.11_1.0.0_ga, smarc-imx7_v2018.03_4.14.98_2.0.0_ga, smarc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx_v2015.04_4.1.15_1.0.0_ga, smarc-imx_v2017.03_4.9.11_1.0.0_ga, smarc-imx_v2017.03_4.9.88_2.0.0_ga, smarc-imx_v2017.03_o8.1.0_1.3.0_8m, smarc-imx_v2018.03_4.14.78_1.0.0_ga, smarc-m6.0.1_2.1.0-ga, smarc-n7.1.2_2.0.0-ga, smarc-rel_imx_4.1.15_2.0.0_ga, smarc_8m-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8m-imx_v2019.04_4.19.35_1.1.0, smarc_8m_00d0-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2019.04_4.19.35_1.1.0, smarc_8mm-imx_v2020.04_5.4.24_2.1.0, smarc_8mp_lf_v2020.04, smarc_8mq-imx_v2020.04_5.4.24_2.1.0, smarc_8mq_lf_v2020.04, ti-u-boot-2015.07, u-boot-2013.01.y, v2013.10, v2013.10-smarct33, v2013.10-smartmen, v2014.01, v2014.04, v2014.04-smarct33, v2014.04-smarct33-emmc, v2014.04-smartmen, v2014.07, v2014.07-smarct33, v2014.07-smartmen, v2015.07-smarct33, v2015.07-smarct33-emmc, v2015.07-smarct4x, v2016.05-dlt, v2016.05-smarct3x, v2016.05-smarct3x-emmc, v2016.05-smarct4x, v2017.01-smarct3x, v2017.01-smarct3x-emmc, v2017.01-smarct4x

arm, arm-kirkwood: disable l2c before linux boot

The decompressor expects the L2 cache to be disabled. This fixes booting
some kernels, which have CONFIG_ARM_PATCH_PHYS_VIRT enabled.

Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Prafulla Wadaskar <prafulla@marvell.com>
Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
Cc: Wolfgang Denk <wd@denx.de>

Showing 4 changed files with 46 additions and 0 deletions Side-by-side Diff

arch/arm/cpu/arm926ejs/cache.c
... ... @@ -68,4 +68,13 @@
68 68 {
69 69 }
70 70 #endif /* #ifndef CONFIG_SYS_DCACHE_OFF */
  71 +
  72 +/*
  73 + * Stub implementations for l2 cache operations
  74 + */
  75 +void __l2_cache_disable(void)
  76 +{
  77 +}
  78 +void l2_cache_disable(void)
  79 + __attribute__((weak, alias("__l2_cache_disable")));
arch/arm/cpu/arm926ejs/cpu.c
... ... @@ -50,6 +50,8 @@
50 50 /* turn off I/D-cache */
51 51 icache_disable();
52 52 dcache_disable();
  53 + l2_cache_disable();
  54 +
53 55 /* flush I/D-cache */
54 56 cache_flush();
55 57  
arch/arm/cpu/arm926ejs/kirkwood/Makefile
... ... @@ -30,6 +30,7 @@
30 30 COBJS-y += dram.o
31 31 COBJS-y += mpp.o
32 32 COBJS-y += timer.o
  33 +COBJS-y += cache.o
33 34  
34 35 SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
35 36 OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS-y))
arch/arm/cpu/arm926ejs/kirkwood/cache.c
  1 +/*
  2 + * Copyright (c) 2012 Michael Walle
  3 + * Michael Walle <michael@walle.cc>
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc.
  21 + */
  22 +#include <common.h>
  23 +#include <asm/arch/cpu.h>
  24 +
  25 +#define FEROCEON_EXTRA_FEATURE_L2C_EN (1<<22)
  26 +
  27 +void l2_cache_disable()
  28 +{
  29 + u32 ctrl;
  30 +
  31 + ctrl = readfr_extra_feature_reg();
  32 + ctrl &= ~FEROCEON_EXTRA_FEATURE_L2C_EN;
  33 + writefr_extra_feature_reg(ctrl);
  34 +}