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:
Dinh Nguyen
2019-04-23 16:55:03 -05:00
committed by Tom Rini
parent 2bac27ce94
commit 84b124db35
9 changed files with 139 additions and 0 deletions

16
drivers/cache/Kconfig vendored Normal file
View 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
View 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
View 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
View 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,
};