]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/of/address.c
Merge tag 'iio-fixes-for-3.16b' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / of / address.c
index c54baee87d93aba6e3e5a5879251dae750a36dad..5edfcb0da37d9e036dba3f0e9d6764dcd9bc28ef 100644 (file)
@@ -498,8 +498,7 @@ static u64 __of_translate_address(struct device_node *dev,
        /* Count address cells & copy address locally */
        bus->count_cells(dev, &na, &ns);
        if (!OF_CHECK_COUNTS(na, ns)) {
-               printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
-                      of_node_full_name(dev));
+               pr_debug("OF: Bad cell count for %s\n", of_node_full_name(dev));
                goto bail;
        }
        memcpy(addr, in_addr, na * 4);
@@ -564,25 +563,6 @@ u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr)
 }
 EXPORT_SYMBOL(of_translate_dma_address);
 
-bool of_can_translate_address(struct device_node *dev)
-{
-       struct device_node *parent;
-       struct of_bus *bus;
-       int na, ns;
-
-       parent = of_get_parent(dev);
-       if (parent == NULL)
-               return false;
-
-       bus = of_match_bus(parent);
-       bus->count_cells(dev, &na, &ns);
-
-       of_node_put(parent);
-
-       return OF_CHECK_COUNTS(na, ns);
-}
-EXPORT_SYMBOL(of_can_translate_address);
-
 const __be32 *of_get_address(struct device_node *dev, int index, u64 *size,
                    unsigned int *flags)
 {
@@ -808,3 +788,26 @@ out:
        return ret;
 }
 EXPORT_SYMBOL_GPL(of_dma_get_range);
+
+/**
+ * of_dma_is_coherent - Check if device is coherent
+ * @np:        device node
+ *
+ * It returns true if "dma-coherent" property was found
+ * for this device in DT.
+ */
+bool of_dma_is_coherent(struct device_node *np)
+{
+       struct device_node *node = of_node_get(np);
+
+       while (node) {
+               if (of_property_read_bool(node, "dma-coherent")) {
+                       of_node_put(node);
+                       return true;
+               }
+               node = of_get_next_parent(node);
+       }
+       of_node_put(node);
+       return false;
+}
+EXPORT_SYMBOL_GPL(of_dma_is_coherent);