Browse Source

sifive: make WayEnable can be configured by menuconfig

Signed-off-by:TekkamanV <tekkamanv@starfivetech.com>
TekkamanV 2 years ago
parent
commit
e43e6f8469
2 changed files with 16 additions and 0 deletions
  1. 12 0
      drivers/cache/Kconfig
  2. 4 0
      drivers/cache/cache-sifive-ccache.c

+ 12 - 0
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

+ 4 - 0
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;