summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTekkamanV <tekkamanv@starfivetech.com>2021-09-19 09:40:29 +0300
committerTekkaman Ninja <tekkamanninja@163.com>2021-09-29 09:51:21 +0300
commite43e6f846985b57af3dc6354a49adb448dd0ec09 (patch)
tree6df7dd7eb0fd40c3b81b03146939a966215946da
parent70040b561ce0f5befdf1f9a43b1625a184f40c6e (diff)
downloadu-boot-e43e6f846985b57af3dc6354a49adb448dd0ec09.tar.xz
sifive: make WayEnable can be configured by menuconfig
Signed-off-by:TekkamanV <tekkamanv@starfivetech.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..c9b5fd3d5e 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 0 255
+ help
+ Range[0, 255]. 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 60b8ac122f..cf45cc9a82 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;