dm: cache: Add enable and disable ops for cache uclass
authorRick Chen <rick@andestech.com>
Wed, 28 Aug 2019 10:46:04 +0000 (18:46 +0800)
committerAndes <uboot@andestech.com>
Tue, 3 Sep 2019 01:31:03 +0000 (09:31 +0800)
Add cache enable/disable ops to the DM cache uclass driver

Signed-off-by: Rick Chen <rick@andestech.com>
Cc: KC Lin <kclin@andestech.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
drivers/cache/cache-uclass.c
include/cache.h

index 97ce0249a4a8b6878cc2ef79a533440ada0ba621..3b20a10f087d06b80caab67e3b48bd190fdc1c09 100644 (file)
@@ -17,6 +17,26 @@ int cache_get_info(struct udevice *dev, struct cache_info *info)
        return ops->get_info(dev, info);
 }
 
+int cache_enable(struct udevice *dev)
+{
+       struct cache_ops *ops = cache_get_ops(dev);
+
+       if (!ops->enable)
+               return -ENOSYS;
+
+       return ops->enable(dev);
+}
+
+int cache_disable(struct udevice *dev)
+{
+       struct cache_ops *ops = cache_get_ops(dev);
+
+       if (!ops->disable)
+               return -ENOSYS;
+
+       return ops->disable(dev);
+}
+
 UCLASS_DRIVER(cache) = {
        .id             = UCLASS_CACHE,
        .name           = "cache",
index c6334ca27fb3db63c192b7a927e980a89f0da42c..32f59fd8f7148e0dcc7ba4f9917bf7017a0949b8 100644 (file)
@@ -22,6 +22,22 @@ struct cache_ops {
         * @return 0 if OK, -ve on error
         */
        int (*get_info)(struct udevice *dev, struct cache_info *info);
+
+       /**
+        * enable() - Enable cache
+        *
+        * @dev:        Device to check (UCLASS_CACHE)
+        * @return 0 if OK, -ve on error
+        */
+       int (*enable)(struct udevice *dev);
+
+       /**
+        * disable() - Flush and disable cache
+        *
+        * @dev:        Device to check (UCLASS_CACHE)
+        * @return 0 if OK, -ve on error
+        */
+       int (*disable)(struct udevice *dev);
 };
 
 #define cache_get_ops(dev)     ((struct cache_ops *)(dev)->driver->ops)
@@ -35,4 +51,19 @@ struct cache_ops {
  */
 int cache_get_info(struct udevice *dev, struct cache_info *info);
 
+/**
+ * cache_enable() - Enable cache
+ *
+ * @dev:       Device to check (UCLASS_CACHE)
+ * @return 0 if OK, -ve on error
+ */
+int cache_enable(struct udevice *dev);
+
+/**
+ * cache_disable() - Flush and disable cache
+ *
+ * @dev:       Device to check (UCLASS_CACHE)
+ * @return 0 if OK, -ve on error
+ */
+int cache_disable(struct udevice *dev);
 #endif