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 /* 10 * Structure for the cache controller 11 */ 12 struct cache_info { 13 phys_addr_t base; /* Base physical address of cache device. */ 14 }; 15 16 struct cache_ops { 17 /** 18 * get_info() - Get basic cache info 19 * 20 * @dev: Device to check (UCLASS_CACHE) 21 * @info: Place to put info 22 * @return 0 if OK, -ve on error 23 */ 24 int (*get_info)(struct udevice *dev, struct cache_info *info); 25 26 /** 27 * enable() - Enable cache 28 * 29 * @dev: Device to check (UCLASS_CACHE) 30 * @return 0 if OK, -ve on error 31 */ 32 int (*enable)(struct udevice *dev); 33 34 /** 35 * disable() - Flush and disable cache 36 * 37 * @dev: Device to check (UCLASS_CACHE) 38 * @return 0 if OK, -ve on error 39 */ 40 int (*disable)(struct udevice *dev); 41 }; 42 43 #define cache_get_ops(dev) ((struct cache_ops *)(dev)->driver->ops) 44 45 /** 46 * cache_get_info() - Get information about a cache controller 47 * 48 * @dev: Device to check (UCLASS_CACHE) 49 * @info: Returns cache info 50 * @return 0 if OK, -ve on error 51 */ 52 int cache_get_info(struct udevice *dev, struct cache_info *info); 53 54 /** 55 * cache_enable() - Enable cache 56 * 57 * @dev: Device to check (UCLASS_CACHE) 58 * @return 0 if OK, -ve on error 59 */ 60 int cache_enable(struct udevice *dev); 61 62 /** 63 * cache_disable() - Flush and disable cache 64 * 65 * @dev: Device to check (UCLASS_CACHE) 66 * @return 0 if OK, -ve on error 67 */ 68 int cache_disable(struct udevice *dev); 69 #endif 70