OSDN Git Service

of: kill off of_can_translate_address
authorRob Herring <robh@kernel.org>
Wed, 7 May 2014 20:23:56 +0000 (15:23 -0500)
committerRob Herring <robh@kernel.org>
Tue, 13 May 2014 19:11:09 +0000 (14:11 -0500)
of_can_translate_address only checks some conditions for address
translation, but does not check other conditions like having range
properties. The checks it does do are redundant with
__of_address_translate. The only difference is printing a message or
not. Since we only have a single caller that does the full translation
anyway, just remove of_can_translate_address and quiet the error
message.

Cc: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Tested-by: Frank Rowand <frank.rowand@sonymobile.com>
Reviewed-by: Frank Rowand <frank.rowand@sonymobile.com>
drivers/of/address.c
drivers/of/platform.c
include/linux/of_address.h

index cb4242a..95351b2 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)
 {
index 0602eb5..d0009b3 100644 (file)
@@ -140,9 +140,8 @@ struct platform_device *of_device_alloc(struct device_node *np,
                return NULL;
 
        /* count the io and irq resources */
-       if (of_can_translate_address(np))
-               while (of_address_to_resource(np, num_reg, &temp_res) == 0)
-                       num_reg++;
+       while (of_address_to_resource(np, num_reg, &temp_res) == 0)
+               num_reg++;
        num_irq = of_irq_count(np);
 
        /* Populate the resource table */
index 5f6ed6b..906ca76 100644 (file)
@@ -40,7 +40,6 @@ extern u64 of_translate_dma_address(struct device_node *dev,
 
 #ifdef CONFIG_OF_ADDRESS
 extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
-extern bool of_can_translate_address(struct device_node *dev);
 extern int of_address_to_resource(struct device_node *dev, int index,
                                  struct resource *r);
 extern struct device_node *of_find_matching_node_by_address(