lib: utils/cache: add cache enable function

Add functions to enable/disable the cache.

Signed-off-by: Ben Zong-You Xie <ben717@andestech.com>
Link: https://lore.kernel.org/r/20251229071914.1451587-4-ben717@andestech.com
Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Ben Zong-You Xie
2025-12-29 15:19:12 +08:00
committed by Anup Patel
parent 85bff9cc16
commit 6d26b43c47
4 changed files with 58 additions and 0 deletions

View File

@@ -44,3 +44,14 @@ int cache_flush_all(struct cache_device *dev)
return dev->ops->cache_flush_all(dev);
}
int cache_enable(struct cache_device *dev, bool enable)
{
if (!dev)
return SBI_ENODEV;
if (!dev->ops || !dev->ops->cache_enable)
return SBI_ENOTSUPP;
return dev->ops->cache_enable(dev, enable);
}

View File

@@ -41,6 +41,29 @@ int fdt_cmo_llc_flush_all(void)
return cache_flush_all(llc);
}
int fdt_cmo_private_flc_enable(bool enable)
{
struct cache_device *flc = get_hart_flc(sbi_scratch_thishart_ptr());
if (!flc || !flc->cpu_private)
return SBI_ENODEV;
return cache_enable(flc, enable);
}
int fdt_cmo_llc_enable(bool enable)
{
struct cache_device *llc = get_hart_flc(sbi_scratch_thishart_ptr());
if (!llc)
return SBI_ENODEV;
while (llc->next)
llc = llc->next;
return cache_enable(llc, enable);
}
static int fdt_cmo_cold_init(const void *fdt)
{
struct sbi_scratch *scratch;