summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Fu <wefu@redhat.com>2021-09-19 09:40:29 +0300
committerTekkaman Ninja <tekkamanninja@163.com>2022-02-15 12:48:24 +0300
commitb3f2cfad943c6c044ad757fee5893710dfbac752 (patch)
tree6b9ca99642d91f285f331a1860ef84d833d5ef73
parent954644d8f5008610e21ef289b22979fdd737fbcc (diff)
downloadu-boot-b3f2cfad943c6c044ad757fee5893710dfbac752.tar.xz
sifive: make WayEnable can be configured by menuconfig
Signed-off-by:Wei Fu <wefu@redhat.com>
-rw-r--r--drivers/cache/Kconfig12
-rw-r--r--drivers/cache/cache-sifive-ccache.c4
2 files changed, 16 insertions, 0 deletions
diff --git a/drivers/cache/Kconfig b/drivers/cache/Kconfig
index 40f41a817c..259d6e154c 100644
--- a/drivers/cache/Kconfig
+++ b/drivers/cache/Kconfig
@@ -46,4 +46,16 @@ config SIFIVE_CCACHE
This driver is for SiFive Composable L2/L3 cache. It enables cache
ways of composable cache.
+config SIFIVE_CCACHE_WAYENABLE_OPT
+ bool "SiFive composable cache: customized the largest way enabled."
+ depends on SIFIVE_CCACHE
+
+config SIFIVE_CCACHE_WAYENABLE_NUM
+ int "SiFive composable cache: the largest way which will be enabled"
+ depends on SIFIVE_CCACHE_WAYENABLE_OPT
+ default 1
+ range 1 256
+ help
+ Range[1, 256]. The index of the largest way which will be enabled.
+
endmenu
diff --git a/drivers/cache/cache-sifive-ccache.c b/drivers/cache/cache-sifive-ccache.c
index a4889f1bc5..5177f45216 100644
--- a/drivers/cache/cache-sifive-ccache.c
+++ b/drivers/cache/cache-sifive-ccache.c
@@ -35,6 +35,10 @@ static int sifive_ccache_enable(struct udevice *dev)
config = readl(priv->base + SIFIVE_CCACHE_CONFIG);
ways = FIELD_GET(SIFIVE_CCACHE_CONFIG_WAYS, config);
+#if CONFIG_IS_ENABLED(SIFIVE_CCACHE_WAYENABLE_OPT)
+ if (CONFIG_SIFIVE_CCACHE_WAYENABLE_NUM < ways)
+ ways = CONFIG_SIFIVE_CCACHE_WAYENABLE_NUM;
+#endif
writel(ways - 1, priv->base + SIFIVE_CCACHE_WAY_ENABLE);
return 0;