mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
dm: cache: Create a uclass for cache
The cache UCLASS will be used for configure settings that can be found in a CPU's L2 cache controller. Add a uclass and a test for cache. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
This commit is contained in:
16
drivers/cache/Kconfig
vendored
Normal file
16
drivers/cache/Kconfig
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# Cache controllers
|
||||
#
|
||||
|
||||
menu "Cache Controller drivers"
|
||||
|
||||
config CACHE
|
||||
bool "Enable Driver Model for Cache controllers"
|
||||
depends on DM
|
||||
help
|
||||
Enable driver model for cache controllers that are found on
|
||||
most CPU's. Cache is memory that the CPU can access directly and
|
||||
is usually located on the same chip. This uclass can be used for
|
||||
configuring settings that be found from a device tree file.
|
||||
|
||||
endmenu
|
||||
3
drivers/cache/Makefile
vendored
Normal file
3
drivers/cache/Makefile
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
obj-$(CONFIG_CACHE) += cache-uclass.o
|
||||
obj-$(CONFIG_SANDBOX) += sandbox_cache.o
|
||||
24
drivers/cache/cache-uclass.c
vendored
Normal file
24
drivers/cache/cache-uclass.c
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation <www.intel.com>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <cache.h>
|
||||
#include <dm.h>
|
||||
|
||||
int cache_get_info(struct udevice *dev, struct cache_info *info)
|
||||
{
|
||||
struct cache_ops *ops = cache_get_ops(dev);
|
||||
|
||||
if (!ops->get_info)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->get_info(dev, info);
|
||||
}
|
||||
|
||||
UCLASS_DRIVER(cache) = {
|
||||
.id = UCLASS_CACHE,
|
||||
.name = "cache",
|
||||
.post_bind = dm_scan_fdt_dev,
|
||||
};
|
||||
34
drivers/cache/sandbox_cache.c
vendored
Normal file
34
drivers/cache/sandbox_cache.c
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation <www.intel.com>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <cache.h>
|
||||
#include <dm.h>
|
||||
#include <errno.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
static int sandbox_get_info(struct udevice *dev, struct cache_info *info)
|
||||
{
|
||||
info->base = 0x11223344;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct cache_ops sandbox_cache_ops = {
|
||||
.get_info = sandbox_get_info,
|
||||
};
|
||||
|
||||
static const struct udevice_id sandbox_cache_ids[] = {
|
||||
{ .compatible = "sandbox,cache" },
|
||||
{ }
|
||||
};
|
||||
|
||||
U_BOOT_DRIVER(cache_sandbox) = {
|
||||
.name = "cache_sandbox",
|
||||
.id = UCLASS_CACHE,
|
||||
.of_match = sandbox_cache_ids,
|
||||
.ops = &sandbox_cache_ops,
|
||||
};
|
||||
Reference in New Issue
Block a user