Commit f14121ab authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'dt-for-3.6' of git://sources.calxeda.com/kernel/linux

Pull devicetree updates from Rob Herring:
 "A small set of changes for devicetree:
   - Couple of Documentation fixes
   - Addition of new helper function of_node_full_name
   - Improve of_parse_phandle_with_args return values
   - Some NULL related sparse fixes"

Grant's busy packing.

* tag 'dt-for-3.6' of git://sources.calxeda.com/kernel/linux:
  of: mtd: nuke useless const qualifier
  devicetree: add helper inline for retrieving a node's full name
  of: return -ENOENT when no property
  usage-model.txt: fix typo machine_init->init_machine
  of: Fix null pointer related warnings in base.c file
  LED: Fix missing semicolon in OF documentation
  of: fix a few typos in the binding documentation
parents 914311c9 e95d8aaf
...@@ -55,4 +55,4 @@ run-control { ...@@ -55,4 +55,4 @@ run-control {
gpios = <&mpc8572 7 0>; gpios = <&mpc8572 7 0>;
default-state = "on"; default-state = "on";
}; };
} };
...@@ -35,4 +35,4 @@ flash@0 { ...@@ -35,4 +35,4 @@ flash@0 {
uimage@100000 { uimage@100000 {
reg = <0x0100000 0x200000>; reg = <0x0100000 0x200000>;
}; };
]; };
...@@ -312,7 +312,7 @@ device tree for the NVIDIA Tegra board. ...@@ -312,7 +312,7 @@ device tree for the NVIDIA Tegra board.
}; };
}; };
At .machine_init() time, Tegra board support code will need to look at At .init_machine() time, Tegra board support code will need to look at
this DT and decide which nodes to create platform_devices for. this DT and decide which nodes to create platform_devices for.
However, looking at the tree, it is not immediately obvious what kind However, looking at the tree, it is not immediately obvious what kind
of device each node represents, or even if a node represents a device of device each node represents, or even if a node represents a device
......
...@@ -249,8 +249,7 @@ int pci_read_irq_line(struct pci_dev *pci_dev) ...@@ -249,8 +249,7 @@ int pci_read_irq_line(struct pci_dev *pci_dev)
} else { } else {
pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n", pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",
oirq.size, oirq.specifier[0], oirq.specifier[1], oirq.size, oirq.specifier[0], oirq.specifier[1],
oirq.controller ? oirq.controller->full_name : of_node_full_name(oirq.controller));
"<default>");
virq = irq_create_of_mapping(oirq.controller, oirq.specifier, virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
oirq.size); oirq.size);
...@@ -1493,8 +1492,7 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose) ...@@ -1493,8 +1492,7 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose)
struct pci_bus *bus; struct pci_bus *bus;
struct device_node *node = hose->dn; struct device_node *node = hose->dn;
pr_debug("PCI: Scanning PHB %s\n", pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
node ? node->full_name : "<NO NAME>");
pcibios_setup_phb_resources(hose, &resources); pcibios_setup_phb_resources(hose, &resources);
......
...@@ -248,8 +248,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev) ...@@ -248,8 +248,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
} else { } else {
pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n", pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",
oirq.size, oirq.specifier[0], oirq.specifier[1], oirq.size, oirq.specifier[0], oirq.specifier[1],
oirq.controller ? oirq.controller->full_name : of_node_full_name(oirq.controller));
"<default>");
virq = irq_create_of_mapping(oirq.controller, oirq.specifier, virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
oirq.size); oirq.size);
...@@ -1628,8 +1627,7 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose) ...@@ -1628,8 +1627,7 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
struct device_node *node = hose->dn; struct device_node *node = hose->dn;
int mode; int mode;
pr_debug("PCI: Scanning PHB %s\n", pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
node ? node->full_name : "<NO NAME>");
/* Get some IO space for the new PHB */ /* Get some IO space for the new PHB */
pcibios_setup_phb_io_space(hose); pcibios_setup_phb_io_space(hose);
......
...@@ -1294,8 +1294,7 @@ static void __devinit vio_dev_release(struct device *dev) ...@@ -1294,8 +1294,7 @@ static void __devinit vio_dev_release(struct device *dev)
struct iommu_table *tbl = get_iommu_table_base(dev); struct iommu_table *tbl = get_iommu_table_base(dev);
if (tbl) if (tbl)
iommu_free_table(tbl, dev->of_node ? iommu_free_table(tbl, of_node_full_name(dev->of_node));
dev->of_node->full_name : dev_name(dev));
of_node_put(dev->of_node); of_node_put(dev->of_node);
kfree(to_vio_dev(dev)); kfree(to_vio_dev(dev));
} }
...@@ -1519,7 +1518,7 @@ static ssize_t devspec_show(struct device *dev, ...@@ -1519,7 +1518,7 @@ static ssize_t devspec_show(struct device *dev,
{ {
struct device_node *of_node = dev->of_node; struct device_node *of_node = dev->of_node;
return sprintf(buf, "%s\n", of_node ? of_node->full_name : "none"); return sprintf(buf, "%s\n", of_node_full_name(of_node));
} }
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
......
...@@ -551,8 +551,7 @@ static struct iommu_table *cell_get_iommu_table(struct device *dev) ...@@ -551,8 +551,7 @@ static struct iommu_table *cell_get_iommu_table(struct device *dev)
iommu = cell_iommu_for_node(dev_to_node(dev)); iommu = cell_iommu_for_node(dev_to_node(dev));
if (iommu == NULL || list_empty(&iommu->windows)) { if (iommu == NULL || list_empty(&iommu->windows)) {
printk(KERN_ERR "iommu: missing iommu for %s (node %d)\n", printk(KERN_ERR "iommu: missing iommu for %s (node %d)\n",
dev->of_node ? dev->of_node->full_name : "?", of_node_full_name(dev->of_node), dev_to_node(dev));
dev_to_node(dev));
return NULL; return NULL;
} }
window = list_entry(iommu->windows.next, struct iommu_window, list); window = list_entry(iommu->windows.next, struct iommu_window, list);
......
...@@ -1134,7 +1134,7 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev) ...@@ -1134,7 +1134,7 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
if (!pdn || !PCI_DN(pdn)) { if (!pdn || !PCI_DN(pdn)) {
printk(KERN_WARNING "pci_dma_dev_setup_pSeriesLP: " printk(KERN_WARNING "pci_dma_dev_setup_pSeriesLP: "
"no DMA window found for pci dev=%s dn=%s\n", "no DMA window found for pci dev=%s dn=%s\n",
pci_name(dev), dn? dn->full_name : "<null>"); pci_name(dev), of_node_full_name(dn));
return; return;
} }
pr_debug(" parent is %s\n", pdn->full_name); pr_debug(" parent is %s\n", pdn->full_name);
......
...@@ -580,7 +580,7 @@ static unsigned int __init build_one_device_irq(struct platform_device *op, ...@@ -580,7 +580,7 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
printk("%s: Apply [%s:%x] imap --> [%s:%x]\n", printk("%s: Apply [%s:%x] imap --> [%s:%x]\n",
op->dev.of_node->full_name, op->dev.of_node->full_name,
pp->full_name, this_orig_irq, pp->full_name, this_orig_irq,
(iret ? iret->full_name : "NULL"), irq); of_node_full_name(iret), irq);
if (!iret) if (!iret)
break; break;
......
...@@ -173,9 +173,9 @@ struct property *of_find_property(const struct device_node *np, ...@@ -173,9 +173,9 @@ struct property *of_find_property(const struct device_node *np,
return NULL; return NULL;
read_lock(&devtree_lock); read_lock(&devtree_lock);
for (pp = np->properties; pp != 0; pp = pp->next) { for (pp = np->properties; pp; pp = pp->next) {
if (of_prop_cmp(pp->name, name) == 0) { if (of_prop_cmp(pp->name, name) == 0) {
if (lenp != 0) if (lenp)
*lenp = pp->length; *lenp = pp->length;
break; break;
} }
...@@ -497,7 +497,7 @@ struct device_node *of_find_node_with_property(struct device_node *from, ...@@ -497,7 +497,7 @@ struct device_node *of_find_node_with_property(struct device_node *from,
read_lock(&devtree_lock); read_lock(&devtree_lock);
np = from ? from->allnext : allnodes; np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) { for (; np; np = np->allnext) {
for (pp = np->properties; pp != 0; pp = pp->next) { for (pp = np->properties; pp; pp = pp->next) {
if (of_prop_cmp(pp->name, prop_name) == 0) { if (of_prop_cmp(pp->name, prop_name) == 0) {
of_node_get(np); of_node_get(np);
goto out; goto out;
...@@ -902,7 +902,7 @@ int of_parse_phandle_with_args(struct device_node *np, const char *list_name, ...@@ -902,7 +902,7 @@ int of_parse_phandle_with_args(struct device_node *np, const char *list_name,
/* Retrieve the phandle list property */ /* Retrieve the phandle list property */
list = of_get_property(np, list_name, &size); list = of_get_property(np, list_name, &size);
if (!list) if (!list)
return -EINVAL; return -ENOENT;
list_end = list + size / sizeof(*list); list_end = list + size / sizeof(*list);
/* Loop over the phandles until all the requested entry is found */ /* Loop over the phandles until all the requested entry is found */
...@@ -1180,7 +1180,7 @@ static void of_alias_add(struct alias_prop *ap, struct device_node *np, ...@@ -1180,7 +1180,7 @@ static void of_alias_add(struct alias_prop *ap, struct device_node *np,
ap->stem[stem_len] = 0; ap->stem[stem_len] = 0;
list_add_tail(&ap->link, &aliases_lookup); list_add_tail(&ap->link, &aliases_lookup);
pr_debug("adding DT alias:%s: stem=%s id=%i node=%s\n", pr_debug("adding DT alias:%s: stem=%s id=%i node=%s\n",
ap->alias, ap->stem, ap->id, np ? np->full_name : NULL); ap->alias, ap->stem, ap->id, of_node_full_name(np));
} }
/** /**
......
...@@ -255,7 +255,7 @@ int of_irq_map_raw(struct device_node *parent, const __be32 *intspec, ...@@ -255,7 +255,7 @@ int of_irq_map_raw(struct device_node *parent, const __be32 *intspec,
skiplevel: skiplevel:
/* Iterate again with new parent */ /* Iterate again with new parent */
pr_debug(" -> new parent: %s\n", newpar ? newpar->full_name : "<>"); pr_debug(" -> new parent: %s\n", of_node_full_name(newpar));
of_node_put(ipar); of_node_put(ipar);
ipar = newpar; ipar = newpar;
newpar = NULL; newpar = NULL;
......
...@@ -32,7 +32,7 @@ static const char *nand_ecc_modes[] = { ...@@ -32,7 +32,7 @@ static const char *nand_ecc_modes[] = {
* The function gets ecc mode string from property 'nand-ecc-mode', * The function gets ecc mode string from property 'nand-ecc-mode',
* and return its index in nand_ecc_modes table, or errno in error case. * and return its index in nand_ecc_modes table, or errno in error case.
*/ */
const int of_get_nand_ecc_mode(struct device_node *np) int of_get_nand_ecc_mode(struct device_node *np)
{ {
const char *pm; const char *pm;
int err, i; int err, i;
......
...@@ -163,6 +163,11 @@ static inline int of_node_to_nid(struct device_node *np) { return -1; } ...@@ -163,6 +163,11 @@ static inline int of_node_to_nid(struct device_node *np) { return -1; }
#define of_node_to_nid of_node_to_nid #define of_node_to_nid of_node_to_nid
#endif #endif
static inline const char* of_node_full_name(struct device_node *np)
{
return np ? np->full_name : "<no-node>";
}
extern struct device_node *of_find_node_by_name(struct device_node *from, extern struct device_node *of_find_node_by_name(struct device_node *from,
const char *name); const char *name);
#define for_each_node_by_name(dn, name) \ #define for_each_node_by_name(dn, name) \
...@@ -302,6 +307,11 @@ const char *of_prop_next_string(struct property *prop, const char *cur); ...@@ -302,6 +307,11 @@ const char *of_prop_next_string(struct property *prop, const char *cur);
#else /* CONFIG_OF */ #else /* CONFIG_OF */
static inline const char* of_node_full_name(struct device_node *np)
{
return "<no-node>";
}
static inline bool of_have_populated_dt(void) static inline bool of_have_populated_dt(void)
{ {
return false; return false;
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#ifdef CONFIG_OF_MTD #ifdef CONFIG_OF_MTD
#include <linux/of.h> #include <linux/of.h>
extern const int of_get_nand_ecc_mode(struct device_node *np); int of_get_nand_ecc_mode(struct device_node *np);
int of_get_nand_bus_width(struct device_node *np); int of_get_nand_bus_width(struct device_node *np);
bool of_get_nand_on_flash_bbt(struct device_node *np); bool of_get_nand_on_flash_bbt(struct device_node *np);
#endif #endif
......
...@@ -448,7 +448,7 @@ unsigned int irq_create_mapping(struct irq_domain *domain, ...@@ -448,7 +448,7 @@ unsigned int irq_create_mapping(struct irq_domain *domain,
} }
pr_debug("irq %lu on domain %s mapped to virtual irq %u\n", pr_debug("irq %lu on domain %s mapped to virtual irq %u\n",
hwirq, domain->of_node ? domain->of_node->full_name : "null", virq); hwirq, of_node_full_name(domain->of_node), virq);
return virq; return virq;
} }
...@@ -477,7 +477,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller, ...@@ -477,7 +477,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller,
return intspec[0]; return intspec[0];
#endif #endif
pr_warning("no irq domain found for %s !\n", pr_warning("no irq domain found for %s !\n",
controller->full_name); of_node_full_name(controller));
return 0; return 0;
} }
...@@ -725,8 +725,8 @@ static int virq_debug_show(struct seq_file *m, void *private) ...@@ -725,8 +725,8 @@ static int virq_debug_show(struct seq_file *m, void *private)
data = irq_desc_get_chip_data(desc); data = irq_desc_get_chip_data(desc);
seq_printf(m, data ? "0x%p " : " %p ", data); seq_printf(m, data ? "0x%p " : " %p ", data);
if (desc->irq_data.domain && desc->irq_data.domain->of_node) if (desc->irq_data.domain)
p = desc->irq_data.domain->of_node->full_name; p = of_node_full_name(desc->irq_data.domain->of_node);
else else
p = none; p = none;
seq_printf(m, "%s\n", p); seq_printf(m, "%s\n", p);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment