mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 04:55:18 +07:00
Merge branch 'sparc-OF-name-and-device_type-rework'
Rob Herring says: ==================== sparc: OF name and device_type rework All other platforms have been converted to only store the local node name in device_node.full_name except Sparc. Sparc was complicated by having a path_component_name in addition to full_name and name. By switching full_name to just the local node name, path_component_name becomes redundant and can be removed. The rest of the series converts the sparc code to use printf specifiers and helper functions to access node name and device_type instead of directly accessing device_node full_name, name and type pointers. I've tested this series under qemu. v2: - Add patch using of_node_name_eq for openpromfs - Add patch converting some resource names to full_name - Also drop full path on !Sparc PDT node name construction - Add a few missed %pOFn conversions ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
20a9da34ae
@ -528,9 +528,9 @@ static int sun_pci_fd_test_drive(unsigned long port, int drive)
|
||||
|
||||
static int __init ebus_fdthree_p(struct device_node *dp)
|
||||
{
|
||||
if (!strcmp(dp->name, "fdthree"))
|
||||
if (of_node_name_eq(dp, "fdthree"))
|
||||
return 1;
|
||||
if (!strcmp(dp->name, "floppy")) {
|
||||
if (of_node_name_eq(dp, "floppy")) {
|
||||
const char *compat;
|
||||
|
||||
compat = of_get_property(dp, "compatible", NULL);
|
||||
@ -555,7 +555,7 @@ static unsigned long __init sun_floppy_init(void)
|
||||
op = NULL;
|
||||
|
||||
for_each_node_by_name(dp, "SUNW,fdtwo") {
|
||||
if (strcmp(dp->parent->name, "sbus"))
|
||||
if (!of_node_name_eq(dp->parent, "sbus"))
|
||||
continue;
|
||||
op = of_find_device_by_node(dp);
|
||||
if (op)
|
||||
@ -656,7 +656,7 @@ static unsigned long __init sun_floppy_init(void)
|
||||
*/
|
||||
config = 0;
|
||||
for (dp = ebus_dp->child; dp; dp = dp->sibling) {
|
||||
if (!strcmp(dp->name, "ecpp")) {
|
||||
if (of_node_name_eq(dp, "ecpp")) {
|
||||
struct platform_device *ecpp_op;
|
||||
|
||||
ecpp_op = of_find_device_by_node(dp);
|
||||
|
@ -225,7 +225,6 @@ void leon_update_virq_handling(unsigned int virq,
|
||||
irq_flow_handler_t flow_handler,
|
||||
const char *name, int do_ack);
|
||||
void leon_init_timers(void);
|
||||
void leon_trans_init(struct device_node *dp);
|
||||
void leon_node_init(struct device_node *dp, struct device_node ***nextp);
|
||||
void init_leon(void);
|
||||
void poke_leonsparc(void);
|
||||
|
@ -117,7 +117,7 @@ static int ecpp_probe(struct platform_device *op)
|
||||
int slot, err;
|
||||
|
||||
parent = op->dev.of_node->parent;
|
||||
if (!strcmp(parent->name, "dma")) {
|
||||
if (of_node_name_eq(parent, "dma")) {
|
||||
p = parport_pc_probe_port(base, base + 0x400,
|
||||
op->archdata.irqs[0], PARPORT_DMA_NOFIFO,
|
||||
op->dev.parent->parent, 0);
|
||||
|
@ -108,23 +108,22 @@ static int auxio_probe(struct platform_device *dev)
|
||||
struct device_node *dp = dev->dev.of_node;
|
||||
unsigned long size;
|
||||
|
||||
if (!strcmp(dp->parent->name, "ebus")) {
|
||||
if (of_node_name_eq(dp->parent, "ebus")) {
|
||||
auxio_devtype = AUXIO_TYPE_EBUS;
|
||||
size = sizeof(u32);
|
||||
} else if (!strcmp(dp->parent->name, "sbus")) {
|
||||
} else if (of_node_name_eq(dp->parent, "sbus")) {
|
||||
auxio_devtype = AUXIO_TYPE_SBUS;
|
||||
size = 1;
|
||||
} else {
|
||||
printk("auxio: Unknown parent bus type [%s]\n",
|
||||
dp->parent->name);
|
||||
printk("auxio: Unknown parent bus type [%pOFn]\n",
|
||||
dp->parent);
|
||||
return -ENODEV;
|
||||
}
|
||||
auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio");
|
||||
if (!auxio_register)
|
||||
return -ENODEV;
|
||||
|
||||
printk(KERN_INFO "AUXIO: Found device at %s\n",
|
||||
dp->full_name);
|
||||
printk(KERN_INFO "AUXIO: Found device at %pOF\n", dp);
|
||||
|
||||
if (auxio_devtype == AUXIO_TYPE_EBUS)
|
||||
auxio_set_led(AUXIO_LED_ON);
|
||||
|
@ -168,7 +168,7 @@ static int fhc_probe(struct platform_device *op)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!strcmp(op->dev.of_node->parent->name, "central"))
|
||||
if (of_node_name_eq(op->dev.of_node->parent, "central"))
|
||||
p->central = true;
|
||||
|
||||
p->pregs = of_ioremap(&op->resource[0], 0,
|
||||
|
@ -464,8 +464,8 @@ static int jbusmc_probe(struct platform_device *op)
|
||||
|
||||
mc_list_add(&p->list);
|
||||
|
||||
printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %s\n",
|
||||
op->dev.of_node->full_name);
|
||||
printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %pOF\n",
|
||||
op->dev.of_node);
|
||||
|
||||
dev_set_drvdata(&op->dev, p);
|
||||
|
||||
@ -747,8 +747,8 @@ static int chmc_probe(struct platform_device *op)
|
||||
|
||||
mc_list_add(&p->list);
|
||||
|
||||
printk(KERN_INFO PFX "UltraSPARC-III memory controller at %s [%s]\n",
|
||||
dp->full_name,
|
||||
printk(KERN_INFO PFX "UltraSPARC-III memory controller at %pOF [%s]\n",
|
||||
dp,
|
||||
(p->layout_size ? "ACTIVE" : "INACTIVE"));
|
||||
|
||||
dev_set_drvdata(&op->dev, p);
|
||||
|
@ -302,7 +302,7 @@ static void *sbus_alloc_coherent(struct device *dev, size_t len,
|
||||
if (sbus_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0)
|
||||
goto err_noiommu;
|
||||
|
||||
res->name = op->dev.of_node->name;
|
||||
res->name = op->dev.of_node->full_name;
|
||||
|
||||
return (void *)(unsigned long)res->start;
|
||||
|
||||
|
@ -915,7 +915,7 @@ static void map_prom_timers(void)
|
||||
dp = of_find_node_by_path("/");
|
||||
dp = dp->child;
|
||||
while (dp) {
|
||||
if (!strcmp(dp->name, "counter-timer"))
|
||||
if (of_node_name_eq(dp, "counter-timer"))
|
||||
break;
|
||||
dp = dp->sibling;
|
||||
}
|
||||
|
@ -484,20 +484,6 @@ static void leon_load_profile_irq(int cpu, unsigned int limit)
|
||||
{
|
||||
}
|
||||
|
||||
void __init leon_trans_init(struct device_node *dp)
|
||||
{
|
||||
if (strcmp(dp->type, "cpu") == 0 && strcmp(dp->name, "<NULL>") == 0) {
|
||||
struct property *p;
|
||||
p = of_find_property(dp, "mid", (void *)0);
|
||||
if (p) {
|
||||
int mid;
|
||||
dp->name = prom_early_alloc(5 + 1);
|
||||
memcpy(&mid, p->value, p->length);
|
||||
sprintf((char *)dp->name, "cpu%.2d", mid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void leon_clear_profile_irq(int cpu)
|
||||
{
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
static int of_bus_pci_match(struct device_node *np)
|
||||
{
|
||||
if (!strcmp(np->type, "pci") || !strcmp(np->type, "pciex")) {
|
||||
if (of_node_is_type(np, "pci") || of_node_is_type(np, "pciex")) {
|
||||
/* Do not do PCI specific frobbing if the
|
||||
* PCI bridge lacks a ranges property. We
|
||||
* want to pass it through up to the next
|
||||
@ -107,7 +107,7 @@ static unsigned long of_bus_sbus_get_flags(const u32 *addr, unsigned long flags)
|
||||
|
||||
static int of_bus_ambapp_match(struct device_node *np)
|
||||
{
|
||||
return !strcmp(np->type, "ambapp");
|
||||
return of_node_is_type(np, "ambapp");
|
||||
}
|
||||
|
||||
static void of_bus_ambapp_count_cells(struct device_node *child,
|
||||
@ -232,10 +232,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
|
||||
* But, we should still pass the translation work up
|
||||
* to the SBUS itself.
|
||||
*/
|
||||
if (!strcmp(pp->name, "dma") ||
|
||||
!strcmp(pp->name, "espdma") ||
|
||||
!strcmp(pp->name, "ledma") ||
|
||||
!strcmp(pp->name, "lebuffer"))
|
||||
if (of_node_name_eq(pp, "dma") ||
|
||||
of_node_name_eq(pp, "espdma") ||
|
||||
of_node_name_eq(pp, "ledma") ||
|
||||
of_node_name_eq(pp, "lebuffer"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
@ -324,8 +324,8 @@ static void __init build_device_resources(struct platform_device *op,
|
||||
memset(r, 0, sizeof(*r));
|
||||
|
||||
if (of_resource_verbose)
|
||||
printk("%s reg[%d] -> %llx\n",
|
||||
op->dev.of_node->full_name, index,
|
||||
printk("%pOF reg[%d] -> %llx\n",
|
||||
op->dev.of_node, index,
|
||||
result);
|
||||
|
||||
if (result != OF_BAD_ADDR) {
|
||||
@ -333,7 +333,7 @@ static void __init build_device_resources(struct platform_device *op,
|
||||
r->end = result + size - 1;
|
||||
r->flags = flags | ((result >> 32ULL) & 0xffUL);
|
||||
}
|
||||
r->name = op->dev.of_node->name;
|
||||
r->name = op->dev.of_node->full_name;
|
||||
}
|
||||
}
|
||||
|
||||
@ -386,8 +386,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
|
||||
op->dev.dma_mask = &op->dev.coherent_dma_mask;
|
||||
|
||||
if (of_device_register(op)) {
|
||||
printk("%s: Could not register of device.\n",
|
||||
dp->full_name);
|
||||
printk("%pOF: Could not register of device.\n", dp);
|
||||
kfree(op);
|
||||
op = NULL;
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ EXPORT_SYMBOL(of_iounmap);
|
||||
|
||||
static int of_bus_pci_match(struct device_node *np)
|
||||
{
|
||||
if (!strcmp(np->name, "pci")) {
|
||||
if (of_node_name_eq(np, "pci")) {
|
||||
const char *model = of_get_property(np, "model", NULL);
|
||||
|
||||
if (model && !strcmp(model, "SUNW,simba"))
|
||||
@ -77,7 +77,7 @@ static int of_bus_simba_match(struct device_node *np)
|
||||
/* Treat PCI busses lacking ranges property just like
|
||||
* simba.
|
||||
*/
|
||||
if (!strcmp(np->name, "pci")) {
|
||||
if (of_node_name_eq(np, "pci")) {
|
||||
if (!of_find_property(np, "ranges", NULL))
|
||||
return 1;
|
||||
}
|
||||
@ -170,8 +170,8 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags)
|
||||
*/
|
||||
static int of_bus_fhc_match(struct device_node *np)
|
||||
{
|
||||
return !strcmp(np->name, "fhc") ||
|
||||
!strcmp(np->name, "central");
|
||||
return of_node_name_eq(np, "fhc") ||
|
||||
of_node_name_eq(np, "central");
|
||||
}
|
||||
|
||||
#define of_bus_fhc_count_cells of_bus_sbus_count_cells
|
||||
@ -295,17 +295,17 @@ static int __init use_1to1_mapping(struct device_node *pp)
|
||||
* But, we should still pass the translation work up
|
||||
* to the SBUS itself.
|
||||
*/
|
||||
if (!strcmp(pp->name, "dma") ||
|
||||
!strcmp(pp->name, "espdma") ||
|
||||
!strcmp(pp->name, "ledma") ||
|
||||
!strcmp(pp->name, "lebuffer"))
|
||||
if (of_node_name_eq(pp, "dma") ||
|
||||
of_node_name_eq(pp, "espdma") ||
|
||||
of_node_name_eq(pp, "ledma") ||
|
||||
of_node_name_eq(pp, "lebuffer"))
|
||||
return 0;
|
||||
|
||||
/* Similarly for all PCI bridges, if we get this far
|
||||
* it lacks a ranges property, and this will include
|
||||
* cases like Simba.
|
||||
*/
|
||||
if (!strcmp(pp->name, "pci"))
|
||||
if (of_node_name_eq(pp, "pci"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
@ -341,9 +341,9 @@ static void __init build_device_resources(struct platform_device *op,
|
||||
|
||||
/* Prevent overrunning the op->resources[] array. */
|
||||
if (num_reg > PROMREG_MAX) {
|
||||
printk(KERN_WARNING "%s: Too many regs (%d), "
|
||||
printk(KERN_WARNING "%pOF: Too many regs (%d), "
|
||||
"limiting to %d.\n",
|
||||
op->dev.of_node->full_name, num_reg, PROMREG_MAX);
|
||||
op->dev.of_node, num_reg, PROMREG_MAX);
|
||||
num_reg = PROMREG_MAX;
|
||||
}
|
||||
|
||||
@ -401,8 +401,8 @@ static void __init build_device_resources(struct platform_device *op,
|
||||
memset(r, 0, sizeof(*r));
|
||||
|
||||
if (of_resource_verbose)
|
||||
printk("%s reg[%d] -> %llx\n",
|
||||
op->dev.of_node->full_name, index,
|
||||
printk("%pOF reg[%d] -> %llx\n",
|
||||
op->dev.of_node, index,
|
||||
result);
|
||||
|
||||
if (result != OF_BAD_ADDR) {
|
||||
@ -413,7 +413,7 @@ static void __init build_device_resources(struct platform_device *op,
|
||||
r->end = result + size - 1;
|
||||
r->flags = flags;
|
||||
}
|
||||
r->name = op->dev.of_node->name;
|
||||
r->name = op->dev.of_node->full_name;
|
||||
}
|
||||
}
|
||||
|
||||
@ -548,8 +548,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
|
||||
dp->irq_trans->data);
|
||||
|
||||
if (of_irq_verbose)
|
||||
printk("%s: direct translate %x --> %x\n",
|
||||
dp->full_name, orig_irq, irq);
|
||||
printk("%pOF: direct translate %x --> %x\n",
|
||||
dp, orig_irq, irq);
|
||||
|
||||
goto out;
|
||||
}
|
||||
@ -579,10 +579,9 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
|
||||
&irq);
|
||||
|
||||
if (of_irq_verbose)
|
||||
printk("%s: Apply [%s:%x] imap --> [%s:%x]\n",
|
||||
op->dev.of_node->full_name,
|
||||
pp->full_name, this_orig_irq,
|
||||
of_node_full_name(iret), irq);
|
||||
printk("%pOF: Apply [%pOF:%x] imap --> [%pOF:%x]\n",
|
||||
op->dev.of_node,
|
||||
pp, this_orig_irq, iret, irq);
|
||||
|
||||
if (!iret)
|
||||
break;
|
||||
@ -592,15 +591,15 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (!strcmp(pp->name, "pci")) {
|
||||
if (of_node_name_eq(pp, "pci")) {
|
||||
unsigned int this_orig_irq = irq;
|
||||
|
||||
irq = pci_irq_swizzle(dp, pp, irq);
|
||||
if (of_irq_verbose)
|
||||
printk("%s: PCI swizzle [%s] "
|
||||
printk("%pOF: PCI swizzle [%pOF] "
|
||||
"%x --> %x\n",
|
||||
op->dev.of_node->full_name,
|
||||
pp->full_name, this_orig_irq,
|
||||
op->dev.of_node,
|
||||
pp, this_orig_irq,
|
||||
irq);
|
||||
|
||||
}
|
||||
@ -619,8 +618,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
|
||||
irq = ip->irq_trans->irq_build(op->dev.of_node, irq,
|
||||
ip->irq_trans->data);
|
||||
if (of_irq_verbose)
|
||||
printk("%s: Apply IRQ trans [%s] %x --> %x\n",
|
||||
op->dev.of_node->full_name, ip->full_name, orig_irq, irq);
|
||||
printk("%pOF: Apply IRQ trans [%pOF] %x --> %x\n",
|
||||
op->dev.of_node, ip, orig_irq, irq);
|
||||
|
||||
out:
|
||||
nid = of_node_to_nid(dp);
|
||||
@ -656,9 +655,9 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
|
||||
|
||||
/* Prevent overrunning the op->irqs[] array. */
|
||||
if (op->archdata.num_irqs > PROMINTR_MAX) {
|
||||
printk(KERN_WARNING "%s: Too many irqs (%d), "
|
||||
printk(KERN_WARNING "%pOF: Too many irqs (%d), "
|
||||
"limiting to %d.\n",
|
||||
dp->full_name, op->archdata.num_irqs, PROMINTR_MAX);
|
||||
dp, op->archdata.num_irqs, PROMINTR_MAX);
|
||||
op->archdata.num_irqs = PROMINTR_MAX;
|
||||
}
|
||||
memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4);
|
||||
@ -680,8 +679,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
|
||||
op->dev.dma_mask = &op->dev.coherent_dma_mask;
|
||||
|
||||
if (of_device_register(op)) {
|
||||
printk("%s: Could not register of device.\n",
|
||||
dp->full_name);
|
||||
printk("%pOF: Could not register of device.\n", dp);
|
||||
kfree(op);
|
||||
op = NULL;
|
||||
}
|
||||
|
@ -151,8 +151,8 @@ int of_bus_sbus_match(struct device_node *np)
|
||||
struct device_node *dp = np;
|
||||
|
||||
while (dp) {
|
||||
if (!strcmp(dp->name, "sbus") ||
|
||||
!strcmp(dp->name, "sbi"))
|
||||
if (of_node_name_eq(dp, "sbus") ||
|
||||
of_node_name_eq(dp, "sbi"))
|
||||
return 1;
|
||||
|
||||
/* Have a look at use_1to1_mapping(). We're trying
|
||||
|
@ -267,7 +267,6 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
|
||||
struct dev_archdata *sd;
|
||||
struct platform_device *op;
|
||||
struct pci_dev *dev;
|
||||
const char *type;
|
||||
u32 class;
|
||||
|
||||
dev = pci_alloc_dev(bus);
|
||||
@ -283,16 +282,12 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
|
||||
sd->stc = &pbm->stc;
|
||||
sd->numa_node = pbm->numa_node;
|
||||
|
||||
if (!strcmp(node->name, "ebus"))
|
||||
if (of_node_name_eq(node, "ebus"))
|
||||
of_propagate_archdata(op);
|
||||
|
||||
type = of_get_property(node, "device_type", NULL);
|
||||
if (type == NULL)
|
||||
type = "";
|
||||
|
||||
if (ofpci_verbose)
|
||||
pci_info(bus," create device, devfn: %x, type: %s\n",
|
||||
devfn, type);
|
||||
devfn, of_node_get_device_type(node));
|
||||
|
||||
dev->sysdata = node;
|
||||
dev->dev.parent = bus->bridge;
|
||||
@ -336,11 +331,11 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
|
||||
dev->error_state = pci_channel_io_normal;
|
||||
dev->dma_mask = 0xffffffff;
|
||||
|
||||
if (!strcmp(node->name, "pci")) {
|
||||
if (of_node_name_eq(node, "pci")) {
|
||||
/* a PCI-PCI bridge */
|
||||
dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
|
||||
dev->rom_base_reg = PCI_ROM_ADDRESS1;
|
||||
} else if (!strcmp(type, "cardbus")) {
|
||||
} else if (of_node_is_type(node, "cardbus")) {
|
||||
dev->hdr_type = PCI_HEADER_TYPE_CARDBUS;
|
||||
} else {
|
||||
dev->hdr_type = PCI_HEADER_TYPE_NORMAL;
|
||||
@ -431,13 +426,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
|
||||
u64 size;
|
||||
|
||||
if (ofpci_verbose)
|
||||
pci_info(dev, "of_scan_pci_bridge(%s)\n", node->full_name);
|
||||
pci_info(dev, "of_scan_pci_bridge(%pOF)\n", node);
|
||||
|
||||
/* parse bus-range property */
|
||||
busrange = of_get_property(node, "bus-range", &len);
|
||||
if (busrange == NULL || len != 8) {
|
||||
pci_info(dev, "Can't get bus-range for PCI-PCI bridge %s\n",
|
||||
node->full_name);
|
||||
pci_info(dev, "Can't get bus-range for PCI-PCI bridge %pOF\n",
|
||||
node);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -455,8 +450,8 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
|
||||
|
||||
bus = pci_add_new_bus(dev->bus, dev, busrange[0]);
|
||||
if (!bus) {
|
||||
pci_err(dev, "Failed to create pci bus for %s\n",
|
||||
node->full_name);
|
||||
pci_err(dev, "Failed to create pci bus for %pOF\n",
|
||||
node);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -512,13 +507,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
|
||||
res = bus->resource[0];
|
||||
if (res->flags) {
|
||||
pci_err(dev, "ignoring extra I/O range"
|
||||
" for bridge %s\n", node->full_name);
|
||||
" for bridge %pOF\n", node);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (i >= PCI_NUM_RESOURCES - PCI_BRIDGE_RESOURCES) {
|
||||
pci_err(dev, "too many memory ranges"
|
||||
" for bridge %s\n", node->full_name);
|
||||
" for bridge %pOF\n", node);
|
||||
continue;
|
||||
}
|
||||
res = bus->resource[i];
|
||||
@ -554,14 +549,14 @@ static void pci_of_scan_bus(struct pci_pbm_info *pbm,
|
||||
struct pci_dev *dev;
|
||||
|
||||
if (ofpci_verbose)
|
||||
pci_info(bus, "scan_bus[%s] bus no %d\n",
|
||||
node->full_name, bus->number);
|
||||
pci_info(bus, "scan_bus[%pOF] bus no %d\n",
|
||||
node, bus->number);
|
||||
|
||||
child = NULL;
|
||||
prev_devfn = -1;
|
||||
while ((child = of_get_next_child(node, child)) != NULL) {
|
||||
if (ofpci_verbose)
|
||||
pci_info(bus, " * %s\n", child->full_name);
|
||||
pci_info(bus, " * %pOF\n", child);
|
||||
reg = of_get_property(child, "reg", ®len);
|
||||
if (reg == NULL || reglen < 20)
|
||||
continue;
|
||||
@ -598,7 +593,7 @@ show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char *
|
||||
pdev = to_pci_dev(dev);
|
||||
dp = pdev->dev.of_node;
|
||||
|
||||
return snprintf (buf, PAGE_SIZE, "%s\n", dp->full_name);
|
||||
return snprintf (buf, PAGE_SIZE, "%pOF\n", dp);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL);
|
||||
@ -698,7 +693,7 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
|
||||
struct device_node *node = pbm->op->dev.of_node;
|
||||
struct pci_bus *bus;
|
||||
|
||||
printk("PCI: Scanning PBM %s\n", node->full_name);
|
||||
printk("PCI: Scanning PBM %pOF\n", node);
|
||||
|
||||
pci_add_resource_offset(&resources, &pbm->io_space,
|
||||
pbm->io_offset);
|
||||
@ -714,8 +709,7 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
|
||||
bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops,
|
||||
pbm, &resources);
|
||||
if (!bus) {
|
||||
printk(KERN_ERR "Failed to create bus for %s\n",
|
||||
node->full_name);
|
||||
printk(KERN_ERR "Failed to create bus for %pOF\n", node);
|
||||
pci_free_resource_list(&resources);
|
||||
return NULL;
|
||||
}
|
||||
@ -1111,8 +1105,8 @@ static void pci_bus_slot_names(struct device_node *node, struct pci_bus *bus)
|
||||
sp = prop->names;
|
||||
|
||||
if (ofpci_verbose)
|
||||
pci_info(bus, "Making slots for [%s] mask[0x%02x]\n",
|
||||
node->full_name, mask);
|
||||
pci_info(bus, "Making slots for [%pOF] mask[0x%02x]\n",
|
||||
node, mask);
|
||||
|
||||
i = 0;
|
||||
while (mask) {
|
||||
|
@ -475,7 +475,7 @@ static int sabre_probe(struct platform_device *op)
|
||||
* different ways, inconsistently.
|
||||
*/
|
||||
for_each_node_by_type(cpu_dp, "cpu") {
|
||||
if (!strcmp(cpu_dp->name, "SUNW,UltraSPARC-IIe"))
|
||||
if (of_node_name_eq(cpu_dp, "SUNW,UltraSPARC-IIe"))
|
||||
hummingbird_p = 1;
|
||||
}
|
||||
}
|
||||
|
@ -41,8 +41,8 @@ static int power_probe(struct platform_device *op)
|
||||
|
||||
power_reg = of_ioremap(res, 0, 0x4, "power");
|
||||
|
||||
printk(KERN_INFO "%s: Control reg at %llx\n",
|
||||
op->dev.of_node->name, res->start);
|
||||
printk(KERN_INFO "%pOFn: Control reg at %llx\n",
|
||||
op->dev.of_node, res->start);
|
||||
|
||||
if (has_button_interrupt(irq, op->dev.of_node)) {
|
||||
if (request_irq(irq,
|
||||
|
@ -110,7 +110,7 @@ void machine_restart(char * cmd)
|
||||
void machine_power_off(void)
|
||||
{
|
||||
if (auxio_power_register &&
|
||||
(strcmp(of_console_device->type, "serial") || scons_pwroff)) {
|
||||
(!of_node_is_type(of_console_device, "serial") || scons_pwroff)) {
|
||||
u8 power_register = sbus_readb(auxio_power_register);
|
||||
power_register |= AUXIO_POWER_OFF;
|
||||
sbus_writeb(power_register, auxio_power_register);
|
||||
|
@ -60,6 +60,7 @@ void * __init prom_early_alloc(unsigned long size)
|
||||
*/
|
||||
static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_registers *regs;
|
||||
struct property *rprop;
|
||||
|
||||
@ -69,13 +70,14 @@ static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
regs = rprop->value;
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
regs->which_io, regs->phys_addr);
|
||||
}
|
||||
|
||||
/* "name@slot,offset" */
|
||||
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -85,7 +87,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
regs = prop->value;
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
regs->which_io,
|
||||
regs->phys_addr);
|
||||
}
|
||||
@ -93,6 +95,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@devnum[,func]" */
|
||||
static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_pci_registers *regs;
|
||||
struct property *prop;
|
||||
unsigned int devfn;
|
||||
@ -105,12 +108,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
devfn = (regs->phys_hi >> 8) & 0xff;
|
||||
if (devfn & 0x07) {
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
devfn >> 3,
|
||||
devfn & 0x07);
|
||||
} else {
|
||||
sprintf(tmp_buf, "%s@%x",
|
||||
dp->name,
|
||||
name,
|
||||
devfn >> 3);
|
||||
}
|
||||
}
|
||||
@ -118,6 +121,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@addrhi,addrlo" */
|
||||
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -128,13 +132,14 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
regs = prop->value;
|
||||
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
regs->which_io, regs->phys_addr);
|
||||
}
|
||||
|
||||
/* "name:vendor:device@irq,addrlo" */
|
||||
static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct amba_prom_registers *regs;
|
||||
unsigned int *intr, *device, *vendor, reg0;
|
||||
struct property *prop;
|
||||
@ -168,7 +173,7 @@ static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf)
|
||||
device = prop->value;
|
||||
|
||||
sprintf(tmp_buf, "%s:%d:%d@%x,%x",
|
||||
dp->name, *vendor, *device,
|
||||
name, *vendor, *device,
|
||||
*intr, reg0);
|
||||
}
|
||||
|
||||
@ -177,14 +182,14 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
|
||||
struct device_node *parent = dp->parent;
|
||||
|
||||
if (parent != NULL) {
|
||||
if (!strcmp(parent->type, "pci") ||
|
||||
!strcmp(parent->type, "pciex"))
|
||||
if (of_node_is_type(parent, "pci") ||
|
||||
of_node_is_type(parent, "pciex"))
|
||||
return pci_path_component(dp, tmp_buf);
|
||||
if (!strcmp(parent->type, "sbus"))
|
||||
if (of_node_is_type(parent, "sbus"))
|
||||
return sbus_path_component(dp, tmp_buf);
|
||||
if (!strcmp(parent->type, "ebus"))
|
||||
if (of_node_is_type(parent, "ebus"))
|
||||
return ebus_path_component(dp, tmp_buf);
|
||||
if (!strcmp(parent->type, "ambapp"))
|
||||
if (of_node_is_type(parent, "ambapp"))
|
||||
return ambapp_path_component(dp, tmp_buf);
|
||||
|
||||
/* "isa" is handled with platform naming */
|
||||
@ -196,12 +201,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
char * __init build_path_component(struct device_node *dp)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
char tmp_buf[64], *n;
|
||||
|
||||
tmp_buf[0] = '\0';
|
||||
__build_path_component(dp, tmp_buf);
|
||||
if (tmp_buf[0] == '\0')
|
||||
strcpy(tmp_buf, dp->name);
|
||||
strcpy(tmp_buf, name);
|
||||
|
||||
n = prom_early_alloc(strlen(tmp_buf) + 1);
|
||||
strcpy(n, tmp_buf);
|
||||
@ -255,7 +261,7 @@ void __init of_console_init(void)
|
||||
}
|
||||
of_console_device = dp;
|
||||
|
||||
strcpy(of_console_path, dp->full_name);
|
||||
sprintf(of_console_path, "%pOF", dp);
|
||||
if (!strcmp(type, "serial")) {
|
||||
strcat(of_console_path,
|
||||
(skip ? ":b" : ":a"));
|
||||
@ -278,15 +284,9 @@ void __init of_console_init(void)
|
||||
prom_halt();
|
||||
}
|
||||
dp = of_find_node_by_phandle(node);
|
||||
type = of_get_property(dp, "device_type", NULL);
|
||||
|
||||
if (!type) {
|
||||
prom_printf("Console stdout lacks "
|
||||
"device_type property.\n");
|
||||
prom_halt();
|
||||
}
|
||||
|
||||
if (strcmp(type, "display") && strcmp(type, "serial")) {
|
||||
if (!of_node_is_type(dp, "display") &&
|
||||
!of_node_is_type(dp, "serial")) {
|
||||
prom_printf("Console device_type is neither display "
|
||||
"nor serial.\n");
|
||||
prom_halt();
|
||||
@ -295,7 +295,7 @@ void __init of_console_init(void)
|
||||
of_console_device = dp;
|
||||
|
||||
if (prom_vers == PROM_V2) {
|
||||
strcpy(of_console_path, dp->full_name);
|
||||
sprintf(of_console_path, "%pOF", dp);
|
||||
switch (*romvec->pv_stdout) {
|
||||
case PROMDEV_TTYA:
|
||||
strcat(of_console_path, ":a");
|
||||
|
@ -72,6 +72,7 @@ void * __init prom_early_alloc(unsigned long size)
|
||||
*/
|
||||
static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom64_registers *regs;
|
||||
struct property *rprop;
|
||||
u32 high_bits, low_bits, type;
|
||||
@ -83,7 +84,7 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
|
||||
regs = rprop->value;
|
||||
if (!of_node_is_root(dp->parent)) {
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
(unsigned int) (regs->phys_addr >> 32UL),
|
||||
(unsigned int) (regs->phys_addr & 0xffffffffUL));
|
||||
return;
|
||||
@ -98,21 +99,22 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
if (low_bits)
|
||||
sprintf(tmp_buf, "%s@%s%x,%x",
|
||||
dp->name, prefix,
|
||||
name, prefix,
|
||||
high_bits, low_bits);
|
||||
else
|
||||
sprintf(tmp_buf, "%s@%s%x",
|
||||
dp->name,
|
||||
name,
|
||||
prefix,
|
||||
high_bits);
|
||||
} else if (type == 12) {
|
||||
sprintf(tmp_buf, "%s@%x",
|
||||
dp->name, high_bits);
|
||||
name, high_bits);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom64_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -123,7 +125,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
|
||||
regs = prop->value;
|
||||
if (!of_node_is_root(dp->parent)) {
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
(unsigned int) (regs->phys_addr >> 32UL),
|
||||
(unsigned int) (regs->phys_addr & 0xffffffffUL));
|
||||
return;
|
||||
@ -139,7 +141,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
|
||||
mask = 0x7fffff;
|
||||
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
*(u32 *)prop->value,
|
||||
(unsigned int) (regs->phys_addr & mask));
|
||||
}
|
||||
@ -148,6 +150,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@slot,offset" */
|
||||
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -157,7 +160,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
regs = prop->value;
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
regs->which_io,
|
||||
regs->phys_addr);
|
||||
}
|
||||
@ -165,6 +168,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@devnum[,func]" */
|
||||
static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom_pci_registers *regs;
|
||||
struct property *prop;
|
||||
unsigned int devfn;
|
||||
@ -177,12 +181,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
devfn = (regs->phys_hi >> 8) & 0xff;
|
||||
if (devfn & 0x07) {
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
devfn >> 3,
|
||||
devfn & 0x07);
|
||||
} else {
|
||||
sprintf(tmp_buf, "%s@%x",
|
||||
dp->name,
|
||||
name,
|
||||
devfn >> 3);
|
||||
}
|
||||
}
|
||||
@ -190,6 +194,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@UPA_PORTID,offset" */
|
||||
static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom64_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -204,7 +209,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
|
||||
return;
|
||||
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
*(u32 *) prop->value,
|
||||
(unsigned int) (regs->phys_addr & 0xffffffffUL));
|
||||
}
|
||||
@ -212,6 +217,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@reg" */
|
||||
static void __init vdev_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct property *prop;
|
||||
u32 *regs;
|
||||
|
||||
@ -221,12 +227,13 @@ static void __init vdev_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
regs = prop->value;
|
||||
|
||||
sprintf(tmp_buf, "%s@%x", dp->name, *regs);
|
||||
sprintf(tmp_buf, "%s@%x", name, *regs);
|
||||
}
|
||||
|
||||
/* "name@addrhi,addrlo" */
|
||||
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct linux_prom64_registers *regs;
|
||||
struct property *prop;
|
||||
|
||||
@ -237,7 +244,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
regs = prop->value;
|
||||
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name,
|
||||
name,
|
||||
(unsigned int) (regs->phys_addr >> 32UL),
|
||||
(unsigned int) (regs->phys_addr & 0xffffffffUL));
|
||||
}
|
||||
@ -245,6 +252,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
|
||||
/* "name@bus,addr" */
|
||||
static void __init i2c_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct property *prop;
|
||||
u32 *regs;
|
||||
|
||||
@ -258,12 +266,13 @@ static void __init i2c_path_component(struct device_node *dp, char *tmp_buf)
|
||||
* property of the i2c bus node etc. etc.
|
||||
*/
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name, regs[0], regs[1]);
|
||||
name, regs[0], regs[1]);
|
||||
}
|
||||
|
||||
/* "name@reg0[,reg1]" */
|
||||
static void __init usb_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct property *prop;
|
||||
u32 *regs;
|
||||
|
||||
@ -275,16 +284,17 @@ static void __init usb_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
if (prop->length == sizeof(u32) || regs[1] == 1) {
|
||||
sprintf(tmp_buf, "%s@%x",
|
||||
dp->name, regs[0]);
|
||||
name, regs[0]);
|
||||
} else {
|
||||
sprintf(tmp_buf, "%s@%x,%x",
|
||||
dp->name, regs[0], regs[1]);
|
||||
name, regs[0], regs[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/* "name@reg0reg1[,reg2reg3]" */
|
||||
static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
struct property *prop;
|
||||
u32 *regs;
|
||||
|
||||
@ -296,10 +306,10 @@ static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf
|
||||
|
||||
if (regs[2] || regs[3]) {
|
||||
sprintf(tmp_buf, "%s@%08x%08x,%04x%08x",
|
||||
dp->name, regs[0], regs[1], regs[2], regs[3]);
|
||||
name, regs[0], regs[1], regs[2], regs[3]);
|
||||
} else {
|
||||
sprintf(tmp_buf, "%s@%08x%08x",
|
||||
dp->name, regs[0], regs[1]);
|
||||
name, regs[0], regs[1]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -308,37 +318,37 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
|
||||
struct device_node *parent = dp->parent;
|
||||
|
||||
if (parent != NULL) {
|
||||
if (!strcmp(parent->type, "pci") ||
|
||||
!strcmp(parent->type, "pciex")) {
|
||||
if (of_node_is_type(parent, "pci") ||
|
||||
of_node_is_type(parent, "pciex")) {
|
||||
pci_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "sbus")) {
|
||||
if (of_node_is_type(parent, "sbus")) {
|
||||
sbus_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "upa")) {
|
||||
if (of_node_is_type(parent, "upa")) {
|
||||
upa_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "ebus")) {
|
||||
if (of_node_is_type(parent, "ebus")) {
|
||||
ebus_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->name, "usb") ||
|
||||
!strcmp(parent->name, "hub")) {
|
||||
if (of_node_name_eq(parent, "usb") ||
|
||||
of_node_name_eq(parent, "hub")) {
|
||||
usb_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "i2c")) {
|
||||
if (of_node_is_type(parent, "i2c")) {
|
||||
i2c_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "firewire")) {
|
||||
if (of_node_is_type(parent, "firewire")) {
|
||||
ieee1394_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(parent->type, "virtual-devices")) {
|
||||
if (of_node_is_type(parent, "virtual-devices")) {
|
||||
vdev_path_component(dp, tmp_buf);
|
||||
return;
|
||||
}
|
||||
@ -356,12 +366,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
|
||||
|
||||
char * __init build_path_component(struct device_node *dp)
|
||||
{
|
||||
const char *name = of_get_property(dp, "name", NULL);
|
||||
char tmp_buf[64], *n;
|
||||
|
||||
tmp_buf[0] = '\0';
|
||||
__build_path_component(dp, tmp_buf);
|
||||
if (tmp_buf[0] == '\0')
|
||||
strcpy(tmp_buf, dp->name);
|
||||
strcpy(tmp_buf, name);
|
||||
|
||||
n = prom_early_alloc(strlen(tmp_buf) + 1);
|
||||
strcpy(n, tmp_buf);
|
||||
@ -594,7 +605,6 @@ void __init of_console_init(void)
|
||||
{
|
||||
char *msg = "OF stdout device is: %s\n";
|
||||
struct device_node *dp;
|
||||
const char *type;
|
||||
phandle node;
|
||||
|
||||
of_console_path = prom_early_alloc(256);
|
||||
@ -617,13 +627,8 @@ void __init of_console_init(void)
|
||||
}
|
||||
|
||||
dp = of_find_node_by_phandle(node);
|
||||
type = of_get_property(dp, "device_type", NULL);
|
||||
if (!type) {
|
||||
prom_printf("Console stdout lacks device_type property.\n");
|
||||
prom_halt();
|
||||
}
|
||||
|
||||
if (strcmp(type, "display") && strcmp(type, "serial")) {
|
||||
if (!of_node_is_type(dp, "display") && !of_node_is_type(dp, "serial")) {
|
||||
prom_printf("Console device_type is neither display "
|
||||
"nor serial.\n");
|
||||
prom_halt();
|
||||
|
@ -193,7 +193,7 @@ static int sabre_device_needs_wsync(struct device_node *dp)
|
||||
* the DMA synchronization handling
|
||||
*/
|
||||
while (parent) {
|
||||
if (!strcmp(parent->type, "pci"))
|
||||
if (of_node_is_type(parent, "pci"))
|
||||
break;
|
||||
parent = parent->parent;
|
||||
}
|
||||
@ -725,11 +725,11 @@ static unsigned int central_build_irq(struct device_node *dp,
|
||||
unsigned long imap, iclr;
|
||||
u32 tmp;
|
||||
|
||||
if (!strcmp(dp->name, "eeprom")) {
|
||||
if (of_node_name_eq(dp, "eeprom")) {
|
||||
res = ¢ral_op->resource[5];
|
||||
} else if (!strcmp(dp->name, "zs")) {
|
||||
} else if (of_node_name_eq(dp, "zs")) {
|
||||
res = ¢ral_op->resource[4];
|
||||
} else if (!strcmp(dp->name, "clock-board")) {
|
||||
} else if (of_node_name_eq(dp, "clock-board")) {
|
||||
res = ¢ral_op->resource[3];
|
||||
} else {
|
||||
return ino;
|
||||
@ -824,19 +824,19 @@ void __init irq_trans_init(struct device_node *dp)
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_SBUS
|
||||
if (!strcmp(dp->name, "sbus") ||
|
||||
!strcmp(dp->name, "sbi")) {
|
||||
if (of_node_name_eq(dp, "sbus") ||
|
||||
of_node_name_eq(dp, "sbi")) {
|
||||
sbus_irq_trans_init(dp);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (!strcmp(dp->name, "fhc") &&
|
||||
!strcmp(dp->parent->name, "central")) {
|
||||
if (of_node_name_eq(dp, "fhc") &&
|
||||
of_node_name_eq(dp->parent, "central")) {
|
||||
central_irq_trans_init(dp);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(dp->name, "virtual-devices") ||
|
||||
!strcmp(dp->name, "niu")) {
|
||||
if (of_node_name_eq(dp, "virtual-devices") ||
|
||||
of_node_name_eq(dp, "niu")) {
|
||||
sun4v_vdev_irq_trans_init(dp);
|
||||
return;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#include <asm/oplib.h>
|
||||
#include <asm/prom.h>
|
||||
@ -25,7 +26,7 @@ EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
void machine_power_off(void)
|
||||
{
|
||||
if (strcmp(of_console_device->type, "serial") || scons_pwroff)
|
||||
if (!of_node_is_type(of_console_device, "serial") || scons_pwroff)
|
||||
prom_halt_power_off();
|
||||
|
||||
prom_halt();
|
||||
|
@ -67,8 +67,8 @@ void sbus_set_sbus64(struct device *dev, int bursts)
|
||||
|
||||
regs = of_get_property(op->dev.of_node, "reg", NULL);
|
||||
if (!regs) {
|
||||
printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %s\n",
|
||||
op->dev.of_node->full_name);
|
||||
printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %pOF\n",
|
||||
op->dev.of_node);
|
||||
return;
|
||||
}
|
||||
slot = regs->which_io;
|
||||
|
@ -335,12 +335,12 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op,
|
||||
|
||||
irq = real_irq;
|
||||
while (bus) {
|
||||
if (!strcmp(bus->name, "sbi")) {
|
||||
if (of_node_name_eq(bus, "sbi")) {
|
||||
bus_connection = "io-unit";
|
||||
break;
|
||||
}
|
||||
|
||||
if (!strcmp(bus->name, "bootbus")) {
|
||||
if (of_node_name_eq(bus, "bootbus")) {
|
||||
bus_connection = "cpu-unit";
|
||||
break;
|
||||
}
|
||||
@ -360,16 +360,16 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op,
|
||||
* If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit
|
||||
* lacks a "board#" property, something is very wrong.
|
||||
*/
|
||||
if (!bus->parent || strcmp(bus->parent->name, bus_connection)) {
|
||||
printk(KERN_ERR "%s: Error, parent is not %s.\n",
|
||||
bus->full_name, bus_connection);
|
||||
if (!of_node_name_eq(bus->parent, bus_connection)) {
|
||||
printk(KERN_ERR "%pOF: Error, parent is not %s.\n",
|
||||
bus, bus_connection);
|
||||
goto err_out;
|
||||
}
|
||||
board_parent = bus->parent;
|
||||
board = of_getintprop_default(board_parent, "board#", -1);
|
||||
if (board == -1) {
|
||||
printk(KERN_ERR "%s: Error, lacks board# property.\n",
|
||||
board_parent->full_name);
|
||||
printk(KERN_ERR "%pOF: Error, lacks board# property.\n",
|
||||
board_parent);
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
|
@ -445,8 +445,8 @@ static int rtc_probe(struct platform_device *op)
|
||||
{
|
||||
struct resource *r;
|
||||
|
||||
printk(KERN_INFO "%s: RTC regs at 0x%llx\n",
|
||||
op->dev.of_node->full_name, op->resource[0].start);
|
||||
printk(KERN_INFO "%pOF: RTC regs at 0x%llx\n",
|
||||
op->dev.of_node, op->resource[0].start);
|
||||
|
||||
/* The CMOS RTC driver only accepts IORESOURCE_IO, so cons
|
||||
* up a fake resource so that the probe works for all cases.
|
||||
@ -501,8 +501,8 @@ static struct platform_device rtc_bq4802_device = {
|
||||
static int bq4802_probe(struct platform_device *op)
|
||||
{
|
||||
|
||||
printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n",
|
||||
op->dev.of_node->full_name, op->resource[0].start);
|
||||
printk(KERN_INFO "%pOF: BQ4802 regs at 0x%llx\n",
|
||||
op->dev.of_node, op->resource[0].start);
|
||||
|
||||
rtc_bq4802_device.resource = &op->resource[0];
|
||||
return platform_device_register(&rtc_bq4802_device);
|
||||
@ -561,12 +561,12 @@ static int mostek_probe(struct platform_device *op)
|
||||
/* On an Enterprise system there can be multiple mostek clocks.
|
||||
* We should only match the one that is on the central FHC bus.
|
||||
*/
|
||||
if (!strcmp(dp->parent->name, "fhc") &&
|
||||
strcmp(dp->parent->parent->name, "central") != 0)
|
||||
if (of_node_name_eq(dp->parent, "fhc") &&
|
||||
!of_node_name_eq(dp->parent->parent, "central"))
|
||||
return -ENODEV;
|
||||
|
||||
printk(KERN_INFO "%s: Mostek regs at 0x%llx\n",
|
||||
dp->full_name, op->resource[0].start);
|
||||
printk(KERN_INFO "%pOF: Mostek regs at 0x%llx\n",
|
||||
dp, op->resource[0].start);
|
||||
|
||||
m48t59_rtc.resource = &op->resource[0];
|
||||
return platform_device_register(&m48t59_rtc);
|
||||
|
@ -193,7 +193,7 @@ show_pciobppath_attr(struct device *dev, struct device_attribute *attr,
|
||||
vdev = to_vio_dev(dev);
|
||||
dp = vdev->dp;
|
||||
|
||||
return snprintf (buf, PAGE_SIZE, "%s\n", dp->full_name);
|
||||
return snprintf (buf, PAGE_SIZE, "%pOF\n", dp);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH,
|
||||
@ -366,12 +366,9 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
|
||||
if (parent == NULL) {
|
||||
dp = cdev_node;
|
||||
} else if (to_vio_dev(parent) == root_vdev) {
|
||||
dp = of_get_next_child(cdev_node, NULL);
|
||||
while (dp) {
|
||||
if (!strcmp(dp->type, type))
|
||||
for_each_child_of_node(cdev_node, dp) {
|
||||
if (of_node_is_type(dp, type))
|
||||
break;
|
||||
|
||||
dp = of_get_next_child(cdev_node, dp);
|
||||
}
|
||||
} else {
|
||||
dp = to_vio_dev(parent)->dp;
|
||||
|
@ -32,24 +32,7 @@ unsigned int of_pdt_unique_id __initdata;
|
||||
|
||||
static char * __init of_pdt_build_full_name(struct device_node *dp)
|
||||
{
|
||||
int len, ourlen, plen;
|
||||
char *n;
|
||||
|
||||
dp->path_component_name = build_path_component(dp);
|
||||
|
||||
plen = strlen(dp->parent->full_name);
|
||||
ourlen = strlen(dp->path_component_name);
|
||||
len = ourlen + plen + 2;
|
||||
|
||||
n = prom_early_alloc(len);
|
||||
strcpy(n, dp->parent->full_name);
|
||||
if (!of_node_is_root(dp->parent)) {
|
||||
strcpy(n + plen, "/");
|
||||
plen++;
|
||||
}
|
||||
strcpy(n + plen, dp->path_component_name);
|
||||
|
||||
return n;
|
||||
return build_path_component(dp);
|
||||
}
|
||||
|
||||
#else /* CONFIG_SPARC */
|
||||
@ -60,23 +43,21 @@ static inline void irq_trans_init(struct device_node *dp) { }
|
||||
static char * __init of_pdt_build_full_name(struct device_node *dp)
|
||||
{
|
||||
static int failsafe_id = 0; /* for generating unique names on failure */
|
||||
const char *name;
|
||||
char path[256];
|
||||
char *buf;
|
||||
int len;
|
||||
|
||||
if (of_pdt_prom_ops->pkg2path(dp->phandle, NULL, 0, &len))
|
||||
goto failsafe;
|
||||
if (!of_pdt_prom_ops->pkg2path(dp->phandle, path, sizeof(path), &len)) {
|
||||
name = kbasename(path);
|
||||
buf = prom_early_alloc(strlen(name) + 1);
|
||||
strcpy(buf, name);
|
||||
return buf;
|
||||
}
|
||||
|
||||
buf = prom_early_alloc(len + 1);
|
||||
if (of_pdt_prom_ops->pkg2path(dp->phandle, buf, len, &len))
|
||||
goto failsafe;
|
||||
return buf;
|
||||
|
||||
failsafe:
|
||||
buf = prom_early_alloc(strlen(dp->parent->full_name) +
|
||||
strlen(dp->name) + 16);
|
||||
sprintf(buf, "%s/%s@unknown%i",
|
||||
of_node_is_root(dp->parent) ? "" : dp->parent->full_name,
|
||||
dp->name, failsafe_id++);
|
||||
name = of_get_property(dp, "name", &len);
|
||||
buf = prom_early_alloc(len + 16);
|
||||
sprintf(buf, "%s@unknown%i", name, failsafe_id++);
|
||||
pr_err("%s: pkg2path failed; assigning %s\n", __func__, buf);
|
||||
return buf;
|
||||
}
|
||||
@ -181,6 +162,8 @@ static struct device_node * __init of_pdt_create_node(phandle node,
|
||||
|
||||
dp->properties = of_pdt_build_prop_list(node);
|
||||
|
||||
dp->full_name = of_pdt_build_full_name(dp);
|
||||
|
||||
irq_trans_init(dp);
|
||||
|
||||
return dp;
|
||||
@ -204,8 +187,6 @@ static struct device_node * __init of_pdt_build_tree(struct device_node *parent,
|
||||
ret = dp;
|
||||
prev_sibling = dp;
|
||||
|
||||
dp->full_name = of_pdt_build_full_name(dp);
|
||||
|
||||
dp->child = of_pdt_build_tree(dp, of_pdt_prom_ops->getchild(node));
|
||||
|
||||
if (of_pdt_build_more)
|
||||
@ -228,9 +209,6 @@ void __init of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops)
|
||||
of_pdt_prom_ops = ops;
|
||||
|
||||
of_root = of_pdt_create_node(root_node, NULL);
|
||||
#if defined(CONFIG_SPARC)
|
||||
of_root->path_component_name = "";
|
||||
#endif
|
||||
of_root->full_name = "/";
|
||||
|
||||
of_root->child = of_pdt_build_tree(of_root,
|
||||
|
@ -199,10 +199,11 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry
|
||||
|
||||
child = dp->child;
|
||||
while (child) {
|
||||
int n = strlen(child->path_component_name);
|
||||
const char *node_name = kbasename(child->full_name);
|
||||
int n = strlen(node_name);
|
||||
|
||||
if (len == n &&
|
||||
!strncmp(child->path_component_name, name, len)) {
|
||||
!strncmp(node_name, name, len)) {
|
||||
ent_type = op_inode_node;
|
||||
ent_data.node = child;
|
||||
ino = child->unique_id;
|
||||
@ -245,7 +246,7 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry
|
||||
set_nlink(inode, 2);
|
||||
break;
|
||||
case op_inode_prop:
|
||||
if (!strcmp(dp->name, "options") && (len == 17) &&
|
||||
if (of_node_name_eq(dp, "options") && (len == 17) &&
|
||||
!strncmp (name, "security-password", 17))
|
||||
inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR;
|
||||
else
|
||||
@ -293,8 +294,8 @@ static int openpromfs_readdir(struct file *file, struct dir_context *ctx)
|
||||
}
|
||||
while (child) {
|
||||
if (!dir_emit(ctx,
|
||||
child->path_component_name,
|
||||
strlen(child->path_component_name),
|
||||
kbasename(child->full_name),
|
||||
strlen(kbasename(child->full_name)),
|
||||
child->unique_id, DT_DIR))
|
||||
goto out;
|
||||
|
||||
|
@ -66,7 +66,6 @@ struct device_node {
|
||||
unsigned long _flags;
|
||||
void *data;
|
||||
#if defined(CONFIG_SPARC)
|
||||
const char *path_component_name;
|
||||
unsigned int unique_id;
|
||||
struct of_irq_controller *irq_trans;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user