]> git.sur5r.net Git - u-boot/blobdiff - drivers/core/device.c
Merge branch 'master' of git://git.denx.de/u-boot-sunxi
[u-boot] / drivers / core / device.c
index 144ac2a991473fb5fd3fc606bbe70f033650b6a0..d5f5fc31b0359982db36e71a341779438e398b10 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Device manager
  *
@@ -5,12 +6,11 @@
  *
  * (C) Copyright 2012
  * Pavel Herrmann <morpheus.ibis@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <asm/io.h>
+#include <clk.h>
 #include <fdtdec.h>
 #include <fdt_support.h>
 #include <malloc.h>
@@ -230,6 +230,14 @@ int device_bind(struct udevice *parent, const struct driver *drv,
                                  offset_to_ofnode(of_offset), 0, devp);
 }
 
+int device_bind_ofnode(struct udevice *parent, const struct driver *drv,
+                      const char *name, void *platdata, ofnode node,
+                      struct udevice **devp)
+{
+       return device_bind_common(parent, drv, name, platdata, 0, node, 0,
+                                 devp);
+}
+
 int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
                        const struct driver_info *info, struct udevice **devp)
 {
@@ -391,6 +399,11 @@ int device_probe(struct udevice *dev)
                        goto fail;
        }
 
+       /* Process 'assigned-{clocks/clock-parents/clock-rates}' properties */
+       ret = clk_set_defaults(dev);
+       if (ret)
+               goto fail;
+
        if (drv->probe) {
                ret = drv->probe(dev);
                if (ret) {
@@ -703,13 +716,7 @@ int device_set_name(struct udevice *dev, const char *name)
 
 bool device_is_compatible(struct udevice *dev, const char *compat)
 {
-       const void *fdt = gd->fdt_blob;
-       ofnode node = dev_ofnode(dev);
-
-       if (ofnode_is_np(node))
-               return of_device_is_compatible(ofnode_to_np(node), compat, NULL, NULL);
-       else
-               return !fdt_node_check_compatible(fdt, ofnode_to_offset(node), compat);
+       return ofnode_device_is_compatible(dev_ofnode(dev), compat);
 }
 
 bool of_machine_is_compatible(const char *compat)