1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (C) 2019 Intel Corporation <www.intel.com> 4 */ 5 6 #ifndef __CACHE_H 7 #define __CACHE_H 8 9 #include <linux/types.h> 10 11 struct udevice; 12 13 /* 14 * Structure for the cache controller 15 */ 16 struct cache_info { 17 phys_addr_t base; /* Base physical address of cache device. */ 18 }; 19 20 struct cache_ops { 21 /** 22 * get_info() - Get basic cache info 23 * 24 * @dev: Device to check (UCLASS_CACHE) 25 * @info: Place to put info 26 * @return 0 if OK, -ve on error 27 */ 28 int (*get_info)(struct udevice *dev, struct cache_info *info); 29 30 /** 31 * enable() - Enable cache 32 * 33 * @dev: Device to check (UCLASS_CACHE) 34 * @return 0 if OK, -ve on error 35 */ 36 int (*enable)(struct udevice *dev); 37 38 /** 39 * disable() - Flush and disable cache 40 * 41 * @dev: Device to check (UCLASS_CACHE) 42 * @return 0 if OK, -ve on error 43 */ 44 int (*disable)(struct udevice *dev); 45 }; 46 47 #define cache_get_ops(dev) ((struct cache_ops *)(dev)->driver->ops) 48 49 /** 50 * cache_get_info() - Get information about a cache controller 51 * 52 * @dev: Device to check (UCLASS_CACHE) 53 * @info: Returns cache info 54 * Return: 0 if OK, -ve on error 55 */ 56 int cache_get_info(struct udevice *dev, struct cache_info *info); 57 58 /** 59 * cache_enable() - Enable cache 60 * 61 * @dev: Device to check (UCLASS_CACHE) 62 * Return: 0 if OK, -ve on error 63 */ 64 int cache_enable(struct udevice *dev); 65 66 /** 67 * cache_disable() - Flush and disable cache 68 * 69 * @dev: Device to check (UCLASS_CACHE) 70 * Return: 0 if OK, -ve on error 71 */ 72 int cache_disable(struct udevice *dev); 73 #endif 74