Merge tag 'tag-sh-for-4.6' of git://git.libc.org/linux-sh
[linux-2.6-microblaze.git] / drivers / misc / cxl / base.c
index a9f0dd3..9b90ec6 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/rcupdate.h>
 #include <asm/errno.h>
 #include <misc/cxl-base.h>
+#include <linux/of_platform.h>
 #include "cxl.h"
 
 /* protected by rcu */
@@ -84,3 +85,34 @@ void unregister_cxl_calls(struct cxl_calls *calls)
        synchronize_rcu();
 }
 EXPORT_SYMBOL_GPL(unregister_cxl_calls);
+
+int cxl_update_properties(struct device_node *dn,
+                         struct property *new_prop)
+{
+       return of_update_property(dn, new_prop);
+}
+EXPORT_SYMBOL_GPL(cxl_update_properties);
+
+static int __init cxl_base_init(void)
+{
+       struct device_node *np = NULL;
+       struct platform_device *dev;
+       int count = 0;
+
+       /*
+        * Scan for compatible devices in guest only
+        */
+       if (cpu_has_feature(CPU_FTR_HVMODE))
+               return 0;
+
+       while ((np = of_find_compatible_node(np, NULL,
+                                    "ibm,coherent-platform-facility"))) {
+               dev = of_platform_device_create(np, NULL, NULL);
+               if (dev)
+                       count++;
+       }
+       pr_devel("Found %d cxl device(s)\n", count);
+       return 0;
+}
+
+module_init(cxl_base_init);