Commit c2f1f3e0 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next

Pull sparc updates from David Miller:

 - Automatic system call table generation, from Firoz Khan.

 - Clean up accesses to the OF device names by using full_name instead
   of path_component_name.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next:
  ALSA: sparc: Use of_node_name_eq for node name comparisons
  sbus: Use of_node_name_eq for node name comparisons
  sparc: generate uapi header and system call table files
  sparc: add system call table generation support
  sparc: add __NR_syscalls along with NR_syscalls
  sparc: move __IGNORE* entries to non uapi header
  sparc: Use DT node full_name instead of name for resources
  sparc: Remove unused leon_trans_init
  sparc: Use device_type helpers to access the node type
  sparc: Use of_node_name_eq for node name comparisons
  sparc: Convert to using %pOFn instead of device_node.name
  sparc: prom: use property "name" directly to construct node names
  of: Drop full path from full_name for PDT systems
  sparc: Convert to using %pOF instead of full_name
  fs/openpromfs: Use of_node_name_eq for node name comparisons
  fs/openpromfs: use full_name instead of path_component_name
parents 9830afca c23b8e7a
...@@ -81,6 +81,9 @@ install: ...@@ -81,6 +81,9 @@ install:
archclean: archclean:
$(Q)$(MAKE) $(clean)=$(boot) $(Q)$(MAKE) $(clean)=$(boot)
archheaders:
$(Q)$(MAKE) $(build)=arch/sparc/kernel/syscalls all
PHONY += vdso_install PHONY += vdso_install
vdso_install: vdso_install:
$(Q)$(MAKE) $(build)=arch/sparc/vdso $@ $(Q)$(MAKE) $(build)=arch/sparc/vdso $@
......
# User exported sparc header files # User exported sparc header files
generated-y += syscall_table_32.h
generated-y += syscall_table_64.h
generated-y += syscall_table_c32.h
generic-y += div64.h generic-y += div64.h
generic-y += emergency-restart.h generic-y += emergency-restart.h
generic-y += exec.h generic-y += exec.h
......
...@@ -528,9 +528,9 @@ static int sun_pci_fd_test_drive(unsigned long port, int drive) ...@@ -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) static int __init ebus_fdthree_p(struct device_node *dp)
{ {
if (!strcmp(dp->name, "fdthree")) if (of_node_name_eq(dp, "fdthree"))
return 1; return 1;
if (!strcmp(dp->name, "floppy")) { if (of_node_name_eq(dp, "floppy")) {
const char *compat; const char *compat;
compat = of_get_property(dp, "compatible", NULL); compat = of_get_property(dp, "compatible", NULL);
...@@ -555,7 +555,7 @@ static unsigned long __init sun_floppy_init(void) ...@@ -555,7 +555,7 @@ static unsigned long __init sun_floppy_init(void)
op = NULL; op = NULL;
for_each_node_by_name(dp, "SUNW,fdtwo") { for_each_node_by_name(dp, "SUNW,fdtwo") {
if (strcmp(dp->parent->name, "sbus")) if (!of_node_name_eq(dp->parent, "sbus"))
continue; continue;
op = of_find_device_by_node(dp); op = of_find_device_by_node(dp);
if (op) if (op)
...@@ -656,7 +656,7 @@ static unsigned long __init sun_floppy_init(void) ...@@ -656,7 +656,7 @@ static unsigned long __init sun_floppy_init(void)
*/ */
config = 0; config = 0;
for (dp = ebus_dp->child; dp; dp = dp->sibling) { 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; struct platform_device *ecpp_op;
ecpp_op = of_find_device_by_node(dp); ecpp_op = of_find_device_by_node(dp);
......
...@@ -225,7 +225,6 @@ void leon_update_virq_handling(unsigned int virq, ...@@ -225,7 +225,6 @@ void leon_update_virq_handling(unsigned int virq,
irq_flow_handler_t flow_handler, irq_flow_handler_t flow_handler,
const char *name, int do_ack); const char *name, int do_ack);
void leon_init_timers(void); 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 leon_node_init(struct device_node *dp, struct device_node ***nextp);
void init_leon(void); void init_leon(void);
void poke_leonsparc(void); void poke_leonsparc(void);
......
...@@ -117,7 +117,7 @@ static int ecpp_probe(struct platform_device *op) ...@@ -117,7 +117,7 @@ static int ecpp_probe(struct platform_device *op)
int slot, err; int slot, err;
parent = op->dev.of_node->parent; 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, p = parport_pc_probe_port(base, base + 0x400,
op->archdata.irqs[0], PARPORT_DMA_NOFIFO, op->archdata.irqs[0], PARPORT_DMA_NOFIFO,
op->dev.parent->parent, 0); op->dev.parent->parent, 0);
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define NR_syscalls __NR_syscalls
#ifdef __32bit_syscall_numbers__ #ifdef __32bit_syscall_numbers__
#else #else
#define __NR_time 231 /* Linux sparc32 */ #define __NR_time 231 /* Linux sparc32 */
...@@ -46,4 +48,20 @@ ...@@ -46,4 +48,20 @@
#define __ARCH_WANT_COMPAT_SYS_SENDFILE #define __ARCH_WANT_COMPAT_SYS_SENDFILE
#endif #endif
#ifdef __32bit_syscall_numbers__
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
* it never had the plain ones and there is no value to adding those
* old versions into the syscall table.
*/
#define __IGNORE_setresuid
#define __IGNORE_getresuid
#define __IGNORE_setresgid
#define __IGNORE_getresgid
#endif
/* Sparc doesn't have protection keys. */
#define __IGNORE_pkey_mprotect
#define __IGNORE_pkey_alloc
#define __IGNORE_pkey_free
#endif /* _SPARC_UNISTD_H */ #endif /* _SPARC_UNISTD_H */
# UAPI Header export list # UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h
generated-y += unistd_64.h
generic-y += bpf_perf_event.h generic-y += bpf_perf_event.h
generic-y += types.h generic-y += types.h
This diff is collapsed.
...@@ -108,23 +108,22 @@ static int auxio_probe(struct platform_device *dev) ...@@ -108,23 +108,22 @@ static int auxio_probe(struct platform_device *dev)
struct device_node *dp = dev->dev.of_node; struct device_node *dp = dev->dev.of_node;
unsigned long size; unsigned long size;
if (!strcmp(dp->parent->name, "ebus")) { if (of_node_name_eq(dp->parent, "ebus")) {
auxio_devtype = AUXIO_TYPE_EBUS; auxio_devtype = AUXIO_TYPE_EBUS;
size = sizeof(u32); size = sizeof(u32);
} else if (!strcmp(dp->parent->name, "sbus")) { } else if (of_node_name_eq(dp->parent, "sbus")) {
auxio_devtype = AUXIO_TYPE_SBUS; auxio_devtype = AUXIO_TYPE_SBUS;
size = 1; size = 1;
} else { } else {
printk("auxio: Unknown parent bus type [%s]\n", printk("auxio: Unknown parent bus type [%pOFn]\n",
dp->parent->name); dp->parent);
return -ENODEV; return -ENODEV;
} }
auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio"); auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio");
if (!auxio_register) if (!auxio_register)
return -ENODEV; return -ENODEV;
printk(KERN_INFO "AUXIO: Found device at %s\n", printk(KERN_INFO "AUXIO: Found device at %pOF\n", dp);
dp->full_name);
if (auxio_devtype == AUXIO_TYPE_EBUS) if (auxio_devtype == AUXIO_TYPE_EBUS)
auxio_set_led(AUXIO_LED_ON); auxio_set_led(AUXIO_LED_ON);
......
...@@ -168,7 +168,7 @@ static int fhc_probe(struct platform_device *op) ...@@ -168,7 +168,7 @@ static int fhc_probe(struct platform_device *op)
goto out; 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->central = true;
p->pregs = of_ioremap(&op->resource[0], 0, p->pregs = of_ioremap(&op->resource[0], 0,
......
...@@ -464,8 +464,8 @@ static int jbusmc_probe(struct platform_device *op) ...@@ -464,8 +464,8 @@ static int jbusmc_probe(struct platform_device *op)
mc_list_add(&p->list); mc_list_add(&p->list);
printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %s\n", printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %pOF\n",
op->dev.of_node->full_name); op->dev.of_node);
dev_set_drvdata(&op->dev, p); dev_set_drvdata(&op->dev, p);
...@@ -747,8 +747,8 @@ static int chmc_probe(struct platform_device *op) ...@@ -747,8 +747,8 @@ static int chmc_probe(struct platform_device *op)
mc_list_add(&p->list); mc_list_add(&p->list);
printk(KERN_INFO PFX "UltraSPARC-III memory controller at %s [%s]\n", printk(KERN_INFO PFX "UltraSPARC-III memory controller at %pOF [%s]\n",
dp->full_name, dp,
(p->layout_size ? "ACTIVE" : "INACTIVE")); (p->layout_size ? "ACTIVE" : "INACTIVE"));
dev_set_drvdata(&op->dev, p); dev_set_drvdata(&op->dev, p);
......
...@@ -302,7 +302,7 @@ static void *sbus_alloc_coherent(struct device *dev, size_t len, ...@@ -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) if (sbus_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0)
goto err_noiommu; goto err_noiommu;
res->name = op->dev.of_node->name; res->name = op->dev.of_node->full_name;
return (void *)(unsigned long)res->start; return (void *)(unsigned long)res->start;
......
...@@ -915,7 +915,7 @@ static void map_prom_timers(void) ...@@ -915,7 +915,7 @@ static void map_prom_timers(void)
dp = of_find_node_by_path("/"); dp = of_find_node_by_path("/");
dp = dp->child; dp = dp->child;
while (dp) { while (dp) {
if (!strcmp(dp->name, "counter-timer")) if (of_node_name_eq(dp, "counter-timer"))
break; break;
dp = dp->sibling; dp = dp->sibling;
} }
......
...@@ -484,20 +484,6 @@ static void leon_load_profile_irq(int cpu, unsigned int limit) ...@@ -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 #ifdef CONFIG_SMP
void leon_clear_profile_irq(int cpu) void leon_clear_profile_irq(int cpu)
{ {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
static int of_bus_pci_match(struct device_node *np) 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 /* Do not do PCI specific frobbing if the
* PCI bridge lacks a ranges property. We * PCI bridge lacks a ranges property. We
* want to pass it through up to the next * 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) ...@@ -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) 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, 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) ...@@ -232,10 +232,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
* But, we should still pass the translation work up * But, we should still pass the translation work up
* to the SBUS itself. * to the SBUS itself.
*/ */
if (!strcmp(pp->name, "dma") || if (of_node_name_eq(pp, "dma") ||
!strcmp(pp->name, "espdma") || of_node_name_eq(pp, "espdma") ||
!strcmp(pp->name, "ledma") || of_node_name_eq(pp, "ledma") ||
!strcmp(pp->name, "lebuffer")) of_node_name_eq(pp, "lebuffer"))
return 0; return 0;
return 1; return 1;
...@@ -324,8 +324,8 @@ static void __init build_device_resources(struct platform_device *op, ...@@ -324,8 +324,8 @@ static void __init build_device_resources(struct platform_device *op,
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
if (of_resource_verbose) if (of_resource_verbose)
printk("%s reg[%d] -> %llx\n", printk("%pOF reg[%d] -> %llx\n",
op->dev.of_node->full_name, index, op->dev.of_node, index,
result); result);
if (result != OF_BAD_ADDR) { if (result != OF_BAD_ADDR) {
...@@ -333,7 +333,7 @@ static void __init build_device_resources(struct platform_device *op, ...@@ -333,7 +333,7 @@ static void __init build_device_resources(struct platform_device *op,
r->end = result + size - 1; r->end = result + size - 1;
r->flags = flags | ((result >> 32ULL) & 0xffUL); 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, ...@@ -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; op->dev.dma_mask = &op->dev.coherent_dma_mask;
if (of_device_register(op)) { if (of_device_register(op)) {
printk("%s: Could not register of device.\n", printk("%pOF: Could not register of device.\n", dp);
dp->full_name);
kfree(op); kfree(op);
op = NULL; op = NULL;
} }
......
...@@ -46,7 +46,7 @@ EXPORT_SYMBOL(of_iounmap); ...@@ -46,7 +46,7 @@ EXPORT_SYMBOL(of_iounmap);
static int of_bus_pci_match(struct device_node *np) 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); const char *model = of_get_property(np, "model", NULL);
if (model && !strcmp(model, "SUNW,simba")) if (model && !strcmp(model, "SUNW,simba"))
...@@ -77,7 +77,7 @@ static int of_bus_simba_match(struct device_node *np) ...@@ -77,7 +77,7 @@ static int of_bus_simba_match(struct device_node *np)
/* Treat PCI busses lacking ranges property just like /* Treat PCI busses lacking ranges property just like
* simba. * simba.
*/ */
if (!strcmp(np->name, "pci")) { if (of_node_name_eq(np, "pci")) {
if (!of_find_property(np, "ranges", NULL)) if (!of_find_property(np, "ranges", NULL))
return 1; return 1;
} }
...@@ -170,8 +170,8 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags) ...@@ -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) static int of_bus_fhc_match(struct device_node *np)
{ {
return !strcmp(np->name, "fhc") || return of_node_name_eq(np, "fhc") ||
!strcmp(np->name, "central"); of_node_name_eq(np, "central");
} }
#define of_bus_fhc_count_cells of_bus_sbus_count_cells #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) ...@@ -295,17 +295,17 @@ static int __init use_1to1_mapping(struct device_node *pp)
* But, we should still pass the translation work up * But, we should still pass the translation work up
* to the SBUS itself. * to the SBUS itself.
*/ */
if (!strcmp(pp->name, "dma") || if (of_node_name_eq(pp, "dma") ||
!strcmp(pp->name, "espdma") || of_node_name_eq(pp, "espdma") ||
!strcmp(pp->name, "ledma") || of_node_name_eq(pp, "ledma") ||
!strcmp(pp->name, "lebuffer")) of_node_name_eq(pp, "lebuffer"))
return 0; return 0;
/* Similarly for all PCI bridges, if we get this far /* Similarly for all PCI bridges, if we get this far
* it lacks a ranges property, and this will include * it lacks a ranges property, and this will include
* cases like Simba. * cases like Simba.
*/ */
if (!strcmp(pp->name, "pci")) if (of_node_name_eq(pp, "pci"))
return 0; return 0;
return 1; return 1;
...@@ -341,9 +341,9 @@ static void __init build_device_resources(struct platform_device *op, ...@@ -341,9 +341,9 @@ static void __init build_device_resources(struct platform_device *op,
/* Prevent overrunning the op->resources[] array. */ /* Prevent overrunning the op->resources[] array. */
if (num_reg > PROMREG_MAX) { 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", "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; num_reg = PROMREG_MAX;
} }
...@@ -401,8 +401,8 @@ static void __init build_device_resources(struct platform_device *op, ...@@ -401,8 +401,8 @@ static void __init build_device_resources(struct platform_device *op,
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
if (of_resource_verbose) if (of_resource_verbose)
printk("%s reg[%d] -> %llx\n", printk("%pOF reg[%d] -> %llx\n",
op->dev.of_node->full_name, index, op->dev.of_node, index,
result); result);
if (result != OF_BAD_ADDR) { if (result != OF_BAD_ADDR) {
...@@ -413,7 +413,7 @@ static void __init build_device_resources(struct platform_device *op, ...@@ -413,7 +413,7 @@ static void __init build_device_resources(struct platform_device *op,
r->end = result + size - 1; r->end = result + size - 1;
r->flags = flags; 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, ...@@ -548,8 +548,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
dp->irq_trans->data); dp->irq_trans->data);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: direct translate %x --> %x\n", printk("%pOF: direct translate %x --> %x\n",
dp->full_name, orig_irq, irq); dp, orig_irq, irq);
goto out; goto out;
} }
...@@ -579,10 +579,9 @@ static unsigned int __init build_one_device_irq(struct platform_device *op, ...@@ -579,10 +579,9 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
&irq); &irq);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: Apply [%s:%x] imap --> [%s:%x]\n", printk("%pOF: Apply [%pOF:%x] imap --> [%pOF:%x]\n",
op->dev.of_node->full_name, op->dev.of_node,
pp->full_name, this_orig_irq, pp, this_orig_irq, iret, irq);
of_node_full_name(iret), irq);
if (!iret) if (!iret)
break; break;
...@@ -592,15 +591,15 @@ static unsigned int __init build_one_device_irq(struct platform_device *op, ...@@ -592,15 +591,15 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
break; break;
} }
} else { } else {
if (!strcmp(pp->name, "pci")) { if (of_node_name_eq(pp, "pci")) {
unsigned int this_orig_irq = irq; unsigned int this_orig_irq = irq;
irq = pci_irq_swizzle(dp, pp, irq); irq = pci_irq_swizzle(dp, pp, irq);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: PCI swizzle [%s] " printk("%pOF: PCI swizzle [%pOF] "
"%x --> %x\n", "%x --> %x\n",
op->dev.of_node->full_name, op->dev.of_node,
pp->full_name, this_orig_irq, pp, this_orig_irq,
irq); irq);
} }
...@@ -619,8 +618,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op, ...@@ -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, irq = ip->irq_trans->irq_build(op->dev.of_node, irq,
ip->irq_trans->data); ip->irq_trans->data);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: Apply IRQ trans [%s] %x --> %x\n", printk("%pOF: Apply IRQ trans [%pOF] %x --> %x\n",
op->dev.of_node->full_name, ip->full_name, orig_irq, irq); op->dev.of_node, ip, orig_irq, irq);
out: out:
nid = of_node_to_nid(dp); nid = of_node_to_nid(dp);
...@@ -656,9 +655,9 @@ static struct platform_device * __init scan_one_device(struct device_node *dp, ...@@ -656,9 +655,9 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
/* Prevent overrunning the op->irqs[] array. */ /* Prevent overrunning the op->irqs[] array. */
if (op->archdata.num_irqs > PROMINTR_MAX) { 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", "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; op->archdata.num_irqs = PROMINTR_MAX;
} }
memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4); 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, ...@@ -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; op->dev.dma_mask = &op->dev.coherent_dma_mask;
if (of_device_register(op)) { if (of_device_register(op)) {
printk("%s: Could not register of device.\n", printk("%pOF: Could not register of device.\n", dp);
dp->full_name);
kfree(op); kfree(op);
op = NULL; op = NULL;
} }
......
...@@ -151,8 +151,8 @@ int of_bus_sbus_match(struct device_node *np) ...@@ -151,8 +151,8 @@ int of_bus_sbus_match(struct device_node *np)
struct device_node *dp = np; struct device_node *dp = np;
while (dp) { while (dp) {
if (!strcmp(dp->name, "sbus") || if (of_node_name_eq(dp, "sbus") ||
!strcmp(dp->name, "sbi")) of_node_name_eq(dp, "sbi"))
return 1; return 1;
/* Have a look at use_1to1_mapping(). We're trying /* 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, ...@@ -267,7 +267,6 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
struct dev_archdata *sd; struct dev_archdata *sd;
struct platform_device *op; struct platform_device *op;
struct pci_dev *dev; struct pci_dev *dev;
const char *type;
u32 class; u32 class;
dev = pci_alloc_dev(bus); dev = pci_alloc_dev(bus);
...@@ -283,16 +282,12 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, ...@@ -283,16 +282,12 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
sd->stc = &pbm->stc; sd->stc = &pbm->stc;
sd->numa_node = pbm->numa_node; sd->numa_node = pbm->numa_node;
if (!strcmp(node->name, "ebus")) if (of_node_name_eq(node, "ebus"))
of_propagate_archdata(op); of_propagate_archdata(op);
type = of_get_property(node, "device_type", NULL);
if (type == NULL)
type = "";
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus," create device, devfn: %x, type: %s\n", pci_info(bus," create device, devfn: %x, type: %s\n",
devfn, type); devfn, of_node_get_device_type(node));
dev->sysdata = node; dev->sysdata = node;
dev->dev.parent = bus->bridge; dev->dev.parent = bus->bridge;
...@@ -336,11 +331,11 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, ...@@ -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->error_state = pci_channel_io_normal;
dev->dma_mask = 0xffffffff; dev->dma_mask = 0xffffffff;
if (!strcmp(node->name, "pci")) { if (of_node_name_eq(node, "pci")) {
/* a PCI-PCI bridge */ /* a PCI-PCI bridge */
dev->hdr_type = PCI_HEADER_TYPE_BRIDGE; dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
dev->rom_base_reg = PCI_ROM_ADDRESS1; 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; dev->hdr_type = PCI_HEADER_TYPE_CARDBUS;
} else { } else {
dev->hdr_type = PCI_HEADER_TYPE_NORMAL; dev->hdr_type = PCI_HEADER_TYPE_NORMAL;
...@@ -431,13 +426,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, ...@@ -431,13 +426,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
u64 size; u64 size;
if (ofpci_verbose) 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 */ /* parse bus-range property */
busrange = of_get_property(node, "bus-range", &len); busrange = of_get_property(node, "bus-range", &len);
if (busrange == NULL || len != 8) { if (busrange == NULL || len != 8) {
pci_info(dev, "Can't get bus-range for PCI-PCI bridge %s\n", pci_info(dev, "Can't get bus-range for PCI-PCI bridge %pOF\n",
node->full_name); node);
return; return;
} }
...@@ -455,8 +450,8 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, ...@@ -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]); bus = pci_add_new_bus(dev->bus, dev, busrange[0]);
if (!bus) { if (!bus) {
pci_err(dev, "Failed to create pci bus for %s\n", pci_err(dev, "Failed to create pci bus for %pOF\n",
node->full_name); node);
return; return;
} }
...@@ -512,13 +507,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, ...@@ -512,13 +507,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
res = bus->resource[0]; res = bus->resource[0];
if (res->flags) { if (res->flags) {
pci_err(dev, "ignoring extra I/O range" pci_err(dev, "ignoring extra I/O range"
" for bridge %s\n", node->full_name); " for bridge %pOF\n", node);
continue; continue;
} }
} else { } else {
if (i >= PCI_NUM_RESOURCES - PCI_BRIDGE_RESOURCES) { if (i >= PCI_NUM_RESOURCES - PCI_BRIDGE_RESOURCES) {
pci_err(dev, "too many memory ranges" pci_err(dev, "too many memory ranges"
" for bridge %s\n", node->full_name); " for bridge %pOF\n", node);
continue; continue;
} }
res = bus->resource[i]; res = bus->resource[i];
...@@ -554,14 +549,14 @@ static void pci_of_scan_bus(struct pci_pbm_info *pbm, ...@@ -554,14 +549,14 @@ static void pci_of_scan_bus(struct pci_pbm_info *pbm,
struct pci_dev *dev; struct pci_dev *dev;
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, "scan_bus[%s] bus no %d\n", pci_info(bus, "scan_bus[%pOF] bus no %d\n",
node->full_name, bus->number); node, bus->number);
child = NULL; child = NULL;
prev_devfn = -1; prev_devfn = -1;
while ((child = of_get_next_child(node, child)) != NULL) { while ((child = of_get_next_child(node, child)) != NULL) {
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, " * %s\n", child->full_name); pci_info(bus, " * %pOF\n", child);
reg = of_get_property(child, "reg", &reglen); reg = of_get_property(child, "reg", &reglen);
if (reg == NULL || reglen < 20) if (reg == NULL || reglen < 20)
continue; continue;
...@@ -598,7 +593,7 @@ show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char * ...@@ -598,7 +593,7 @@ show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char *
pdev = to_pci_dev(dev); pdev = to_pci_dev(dev);
dp = pdev->dev.of_node; 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); 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, ...@@ -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 device_node *node = pbm->op->dev.of_node;
struct pci_bus *bus; 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, pci_add_resource_offset(&resources, &pbm->io_space,
pbm->io_offset); pbm->io_offset);
...@@ -714,8 +709,7 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm, ...@@ -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, bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops,
pbm, &resources); pbm, &resources);
if (!bus) { if (!bus) {
printk(KERN_ERR "Failed to create bus for %s\n", printk(KERN_ERR "Failed to create bus for %pOF\n", node);
node->full_name);
pci_free_resource_list(&resources); pci_free_resource_list(&resources);
return NULL; return NULL;
} }
...@@ -1111,8 +1105,8 @@ static void pci_bus_slot_names(struct device_node *node, struct pci_bus *bus) ...@@ -1111,8 +1105,8 @@ static void pci_bus_slot_names(struct device_node *node, struct pci_bus *bus)
sp = prop->names; sp = prop->names;
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, "Making slots for [%s] mask[0x%02x]\n", pci_info(bus, "Making slots for [%pOF] mask[0x%02x]\n",
node->full_name, mask); node, mask);
i = 0; i = 0;
while (mask) { while (mask) {
......
...@@ -475,7 +475,7 @@ static int sabre_probe(struct platform_device *op) ...@@ -475,7 +475,7 @@ static int sabre_probe(struct platform_device *op)
* different ways, inconsistently. * different ways, inconsistently.
*/ */
for_each_node_by_type(cpu_dp, "cpu") { 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; hummingbird_p = 1;
} }
} }
......
...@@ -41,8 +41,8 @@ static int power_probe(struct platform_device *op) ...@@ -41,8 +41,8 @@ static int power_probe(struct platform_device *op)
power_reg = of_ioremap(res, 0, 0x4, "power"); power_reg = of_ioremap(res, 0, 0x4, "power");
printk(KERN_INFO "%s: Control reg at %llx\n", printk(KERN_INFO "%pOFn: Control reg at %llx\n",
op->dev.of_node->name, res->start); op->dev.of_node, res->start);
if (has_button_interrupt(irq, op->dev.of_node)) { if (has_button_interrupt(irq, op->dev.of_node)) {
if (request_irq(irq, if (request_irq(irq,
......
...@@ -110,7 +110,7 @@ void machine_restart(char * cmd) ...@@ -110,7 +110,7 @@ void machine_restart(char * cmd)
void machine_power_off(void) void machine_power_off(void)
{ {
if (auxio_power_register && 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); u8 power_register = sbus_readb(auxio_power_register);
power_register |= AUXIO_POWER_OFF; power_register |= AUXIO_POWER_OFF;
sbus_writeb(power_register, auxio_power_register); sbus_writeb(power_register, auxio_power_register);
......
...@@ -60,6 +60,7 @@ void * __init prom_early_alloc(unsigned long size) ...@@ -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) 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 linux_prom_registers *regs;
struct property *rprop; struct property *rprop;
...@@ -69,13 +70,14 @@ static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf) ...@@ -69,13 +70,14 @@ static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf)
regs = rprop->value; regs = rprop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->phys_addr); regs->which_io, regs->phys_addr);
} }
/* "name@slot,offset" */ /* "name@slot,offset" */
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom_registers *regs;
struct property *prop; struct property *prop;
...@@ -85,7 +87,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -85,7 +87,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->which_io,
regs->phys_addr); regs->phys_addr);
} }
...@@ -93,6 +95,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -93,6 +95,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@devnum[,func]" */ /* "name@devnum[,func]" */
static void __init pci_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom_pci_registers *regs;
struct property *prop; struct property *prop;
unsigned int devfn; unsigned int devfn;
...@@ -105,12 +108,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf) ...@@ -105,12 +108,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
devfn = (regs->phys_hi >> 8) & 0xff; devfn = (regs->phys_hi >> 8) & 0xff;
if (devfn & 0x07) { if (devfn & 0x07) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
devfn >> 3, devfn >> 3,
devfn & 0x07); devfn & 0x07);
} else { } else {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, name,
devfn >> 3); devfn >> 3);
} }
} }
...@@ -118,6 +121,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf) ...@@ -118,6 +121,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
/* "name@addrhi,addrlo" */ /* "name@addrhi,addrlo" */
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom_registers *regs;
struct property *prop; struct property *prop;
...@@ -128,13 +132,14 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -128,13 +132,14 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->phys_addr); regs->which_io, regs->phys_addr);
} }
/* "name:vendor:device@irq,addrlo" */ /* "name:vendor:device@irq,addrlo" */
static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf) 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; struct amba_prom_registers *regs;
unsigned int *intr, *device, *vendor, reg0; unsigned int *intr, *device, *vendor, reg0;
struct property *prop; struct property *prop;
...@@ -168,7 +173,7 @@ static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf) ...@@ -168,7 +173,7 @@ static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf)
device = prop->value; device = prop->value;
sprintf(tmp_buf, "%s:%d:%d@%x,%x", sprintf(tmp_buf, "%s:%d:%d@%x,%x",
dp->name, *vendor, *device, name, *vendor, *device,
*intr, reg0); *intr, reg0);
} }
...@@ -177,14 +182,14 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf) ...@@ -177,14 +182,14 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
struct device_node *parent = dp->parent; struct device_node *parent = dp->parent;
if (parent != NULL) { if (parent != NULL) {
if (!strcmp(parent->type, "pci") || if (of_node_is_type(parent, "pci") ||
!strcmp(parent->type, "pciex")) of_node_is_type(parent, "pciex"))
return pci_path_component(dp, tmp_buf); 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); 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); 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); return ambapp_path_component(dp, tmp_buf);
/* "isa" is handled with platform naming */ /* "isa" is handled with platform naming */
...@@ -196,12 +201,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf) ...@@ -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) char * __init build_path_component(struct device_node *dp)
{ {
const char *name = of_get_property(dp, "name", NULL);
char tmp_buf[64], *n; char tmp_buf[64], *n;
tmp_buf[0] = '\0'; tmp_buf[0] = '\0';
__build_path_component(dp, tmp_buf); __build_path_component(dp, tmp_buf);
if (tmp_buf[0] == '\0') if (tmp_buf[0] == '\0')
strcpy(tmp_buf, dp->name); strcpy(tmp_buf, name);
n = prom_early_alloc(strlen(tmp_buf) + 1); n = prom_early_alloc(strlen(tmp_buf) + 1);
strcpy(n, tmp_buf); strcpy(n, tmp_buf);
...@@ -255,7 +261,7 @@ void __init of_console_init(void) ...@@ -255,7 +261,7 @@ void __init of_console_init(void)
} }
of_console_device = dp; of_console_device = dp;
strcpy(of_console_path, dp->full_name); sprintf(of_console_path, "%pOF", dp);
if (!strcmp(type, "serial")) { if (!strcmp(type, "serial")) {
strcat(of_console_path, strcat(of_console_path,
(skip ? ":b" : ":a")); (skip ? ":b" : ":a"));
...@@ -278,15 +284,9 @@ void __init of_console_init(void) ...@@ -278,15 +284,9 @@ void __init of_console_init(void)
prom_halt(); prom_halt();
} }
dp = of_find_node_by_phandle(node); dp = of_find_node_by_phandle(node);
type = of_get_property(dp, "device_type", NULL);
if (!type) { if (!of_node_is_type(dp, "display") &&
prom_printf("Console stdout lacks " !of_node_is_type(dp, "serial")) {
"device_type property.\n");
prom_halt();
}
if (strcmp(type, "display") && strcmp(type, "serial")) {
prom_printf("Console device_type is neither display " prom_printf("Console device_type is neither display "
"nor serial.\n"); "nor serial.\n");
prom_halt(); prom_halt();
...@@ -295,7 +295,7 @@ void __init of_console_init(void) ...@@ -295,7 +295,7 @@ void __init of_console_init(void)
of_console_device = dp; of_console_device = dp;
if (prom_vers == PROM_V2) { if (prom_vers == PROM_V2) {
strcpy(of_console_path, dp->full_name); sprintf(of_console_path, "%pOF", dp);
switch (*romvec->pv_stdout) { switch (*romvec->pv_stdout) {
case PROMDEV_TTYA: case PROMDEV_TTYA:
strcat(of_console_path, ":a"); strcat(of_console_path, ":a");
......
...@@ -72,6 +72,7 @@ void * __init prom_early_alloc(unsigned long size) ...@@ -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) 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 linux_prom64_registers *regs;
struct property *rprop; struct property *rprop;
u32 high_bits, low_bits, type; u32 high_bits, low_bits, type;
...@@ -83,7 +84,7 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf) ...@@ -83,7 +84,7 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
regs = rprop->value; regs = rprop->value;
if (!of_node_is_root(dp->parent)) { if (!of_node_is_root(dp->parent)) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
return; return;
...@@ -98,21 +99,22 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf) ...@@ -98,21 +99,22 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
if (low_bits) if (low_bits)
sprintf(tmp_buf, "%s@%s%x,%x", sprintf(tmp_buf, "%s@%s%x,%x",
dp->name, prefix, name, prefix,
high_bits, low_bits); high_bits, low_bits);
else else
sprintf(tmp_buf, "%s@%s%x", sprintf(tmp_buf, "%s@%s%x",
dp->name, name,
prefix, prefix,
high_bits); high_bits);
} else if (type == 12) { } else if (type == 12) {
sprintf(tmp_buf, "%s@%x", 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) 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 linux_prom64_registers *regs;
struct property *prop; struct property *prop;
...@@ -123,7 +125,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf) ...@@ -123,7 +125,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
if (!of_node_is_root(dp->parent)) { if (!of_node_is_root(dp->parent)) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
return; return;
...@@ -139,7 +141,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf) ...@@ -139,7 +141,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
mask = 0x7fffff; mask = 0x7fffff;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
*(u32 *)prop->value, *(u32 *)prop->value,
(unsigned int) (regs->phys_addr & mask)); (unsigned int) (regs->phys_addr & mask));
} }
...@@ -148,6 +150,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf) ...@@ -148,6 +150,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
/* "name@slot,offset" */ /* "name@slot,offset" */
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom_registers *regs;
struct property *prop; struct property *prop;
...@@ -157,7 +160,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -157,7 +160,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->which_io,
regs->phys_addr); regs->phys_addr);
} }
...@@ -165,6 +168,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -165,6 +168,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@devnum[,func]" */ /* "name@devnum[,func]" */
static void __init pci_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom_pci_registers *regs;
struct property *prop; struct property *prop;
unsigned int devfn; unsigned int devfn;
...@@ -177,12 +181,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf) ...@@ -177,12 +181,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
devfn = (regs->phys_hi >> 8) & 0xff; devfn = (regs->phys_hi >> 8) & 0xff;
if (devfn & 0x07) { if (devfn & 0x07) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
devfn >> 3, devfn >> 3,
devfn & 0x07); devfn & 0x07);
} else { } else {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, name,
devfn >> 3); devfn >> 3);
} }
} }
...@@ -190,6 +194,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf) ...@@ -190,6 +194,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
/* "name@UPA_PORTID,offset" */ /* "name@UPA_PORTID,offset" */
static void __init upa_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom64_registers *regs;
struct property *prop; struct property *prop;
...@@ -204,7 +209,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf) ...@@ -204,7 +209,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
return; return;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
*(u32 *) prop->value, *(u32 *) prop->value,
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
} }
...@@ -212,6 +217,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf) ...@@ -212,6 +217,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
/* "name@reg" */ /* "name@reg" */
static void __init vdev_path_component(struct device_node *dp, char *tmp_buf) 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; struct property *prop;
u32 *regs; u32 *regs;
...@@ -221,12 +227,13 @@ static void __init vdev_path_component(struct device_node *dp, char *tmp_buf) ...@@ -221,12 +227,13 @@ static void __init vdev_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x", dp->name, *regs); sprintf(tmp_buf, "%s@%x", name, *regs);
} }
/* "name@addrhi,addrlo" */ /* "name@addrhi,addrlo" */
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) 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 linux_prom64_registers *regs;
struct property *prop; struct property *prop;
...@@ -237,7 +244,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -237,7 +244,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
} }
...@@ -245,6 +252,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) ...@@ -245,6 +252,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@bus,addr" */ /* "name@bus,addr" */
static void __init i2c_path_component(struct device_node *dp, char *tmp_buf) 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; struct property *prop;
u32 *regs; u32 *regs;
...@@ -258,12 +266,13 @@ static void __init i2c_path_component(struct device_node *dp, char *tmp_buf) ...@@ -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. * property of the i2c bus node etc. etc.
*/ */
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, regs[0], regs[1]); name, regs[0], regs[1]);
} }
/* "name@reg0[,reg1]" */ /* "name@reg0[,reg1]" */
static void __init usb_path_component(struct device_node *dp, char *tmp_buf) 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; struct property *prop;
u32 *regs; u32 *regs;
...@@ -275,16 +284,17 @@ static void __init usb_path_component(struct device_node *dp, char *tmp_buf) ...@@ -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) { if (prop->length == sizeof(u32) || regs[1] == 1) {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, regs[0]); name, regs[0]);
} else { } else {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, regs[0], regs[1]); name, regs[0], regs[1]);
} }
} }
/* "name@reg0reg1[,reg2reg3]" */ /* "name@reg0reg1[,reg2reg3]" */
static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf) 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; struct property *prop;
u32 *regs; u32 *regs;
...@@ -296,10 +306,10 @@ static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf ...@@ -296,10 +306,10 @@ static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf
if (regs[2] || regs[3]) { if (regs[2] || regs[3]) {
sprintf(tmp_buf, "%s@%08x%08x,%04x%08x", 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 { } else {
sprintf(tmp_buf, "%s@%08x%08x", 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) ...@@ -308,37 +318,37 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
struct device_node *parent = dp->parent; struct device_node *parent = dp->parent;
if (parent != NULL) { if (parent != NULL) {
if (!strcmp(parent->type, "pci") || if (of_node_is_type(parent, "pci") ||
!strcmp(parent->type, "pciex")) { of_node_is_type(parent, "pciex")) {
pci_path_component(dp, tmp_buf); pci_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "sbus")) { if (of_node_is_type(parent, "sbus")) {
sbus_path_component(dp, tmp_buf); sbus_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "upa")) { if (of_node_is_type(parent, "upa")) {
upa_path_component(dp, tmp_buf); upa_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "ebus")) { if (of_node_is_type(parent, "ebus")) {
ebus_path_component(dp, tmp_buf); ebus_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->name, "usb") || if (of_node_name_eq(parent, "usb") ||
!strcmp(parent->name, "hub")) { of_node_name_eq(parent, "hub")) {
usb_path_component(dp, tmp_buf); usb_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "i2c")) { if (of_node_is_type(parent, "i2c")) {
i2c_path_component(dp, tmp_buf); i2c_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "firewire")) { if (of_node_is_type(parent, "firewire")) {
ieee1394_path_component(dp, tmp_buf); ieee1394_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "virtual-devices")) { if (of_node_is_type(parent, "virtual-devices")) {
vdev_path_component(dp, tmp_buf); vdev_path_component(dp, tmp_buf);
return; return;
} }
...@@ -356,12 +366,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf) ...@@ -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) char * __init build_path_component(struct device_node *dp)
{ {
const char *name = of_get_property(dp, "name", NULL);
char tmp_buf[64], *n; char tmp_buf[64], *n;
tmp_buf[0] = '\0'; tmp_buf[0] = '\0';
__build_path_component(dp, tmp_buf); __build_path_component(dp, tmp_buf);
if (tmp_buf[0] == '\0') if (tmp_buf[0] == '\0')
strcpy(tmp_buf, dp->name); strcpy(tmp_buf, name);
n = prom_early_alloc(strlen(tmp_buf) + 1); n = prom_early_alloc(strlen(tmp_buf) + 1);
strcpy(n, tmp_buf); strcpy(n, tmp_buf);
...@@ -594,7 +605,6 @@ void __init of_console_init(void) ...@@ -594,7 +605,6 @@ void __init of_console_init(void)
{ {
char *msg = "OF stdout device is: %s\n"; char *msg = "OF stdout device is: %s\n";
struct device_node *dp; struct device_node *dp;
const char *type;
phandle node; phandle node;
of_console_path = prom_early_alloc(256); of_console_path = prom_early_alloc(256);
...@@ -617,13 +627,8 @@ void __init of_console_init(void) ...@@ -617,13 +627,8 @@ void __init of_console_init(void)
} }
dp = of_find_node_by_phandle(node); 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 " prom_printf("Console device_type is neither display "
"nor serial.\n"); "nor serial.\n");
prom_halt(); prom_halt();
......
...@@ -193,7 +193,7 @@ static int sabre_device_needs_wsync(struct device_node *dp) ...@@ -193,7 +193,7 @@ static int sabre_device_needs_wsync(struct device_node *dp)
* the DMA synchronization handling * the DMA synchronization handling
*/ */
while (parent) { while (parent) {
if (!strcmp(parent->type, "pci")) if (of_node_is_type(parent, "pci"))
break; break;
parent = parent->parent; parent = parent->parent;
} }
...@@ -725,11 +725,11 @@ static unsigned int central_build_irq(struct device_node *dp, ...@@ -725,11 +725,11 @@ static unsigned int central_build_irq(struct device_node *dp,
unsigned long imap, iclr; unsigned long imap, iclr;
u32 tmp; u32 tmp;
if (!strcmp(dp->name, "eeprom")) { if (of_node_name_eq(dp, "eeprom")) {
res = &central_op->resource[5]; res = &central_op->resource[5];
} else if (!strcmp(dp->name, "zs")) { } else if (of_node_name_eq(dp, "zs")) {
res = &central_op->resource[4]; res = &central_op->resource[4];
} else if (!strcmp(dp->name, "clock-board")) { } else if (of_node_name_eq(dp, "clock-board")) {
res = &central_op->resource[3]; res = &central_op->resource[3];
} else { } else {
return ino; return ino;
...@@ -824,19 +824,19 @@ void __init irq_trans_init(struct device_node *dp) ...@@ -824,19 +824,19 @@ void __init irq_trans_init(struct device_node *dp)
} }
#endif #endif
#ifdef CONFIG_SBUS #ifdef CONFIG_SBUS
if (!strcmp(dp->name, "sbus") || if (of_node_name_eq(dp, "sbus") ||
!strcmp(dp->name, "sbi")) { of_node_name_eq(dp, "sbi")) {
sbus_irq_trans_init(dp); sbus_irq_trans_init(dp);
return; return;
} }
#endif #endif
if (!strcmp(dp->name, "fhc") && if (of_node_name_eq(dp, "fhc") &&
!strcmp(dp->parent->name, "central")) { of_node_name_eq(dp->parent, "central")) {
central_irq_trans_init(dp); central_irq_trans_init(dp);
return; return;
} }
if (!strcmp(dp->name, "virtual-devices") || if (of_node_name_eq(dp, "virtual-devices") ||
!strcmp(dp->name, "niu")) { of_node_name_eq(dp, "niu")) {
sun4v_vdev_irq_trans_init(dp); sun4v_vdev_irq_trans_init(dp);
return; return;
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/reboot.h> #include <linux/reboot.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/of.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/prom.h> #include <asm/prom.h>
...@@ -25,7 +26,7 @@ EXPORT_SYMBOL(pm_power_off); ...@@ -25,7 +26,7 @@ EXPORT_SYMBOL(pm_power_off);
void machine_power_off(void) 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_power_off();
prom_halt(); prom_halt();
......
...@@ -67,8 +67,8 @@ void sbus_set_sbus64(struct device *dev, int bursts) ...@@ -67,8 +67,8 @@ void sbus_set_sbus64(struct device *dev, int bursts)
regs = of_get_property(op->dev.of_node, "reg", NULL); regs = of_get_property(op->dev.of_node, "reg", NULL);
if (!regs) { if (!regs) {
printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %s\n", printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %pOF\n",
op->dev.of_node->full_name); op->dev.of_node);
return; return;
} }
slot = regs->which_io; slot = regs->which_io;
......
...@@ -335,12 +335,12 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op, ...@@ -335,12 +335,12 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op,
irq = real_irq; irq = real_irq;
while (bus) { while (bus) {
if (!strcmp(bus->name, "sbi")) { if (of_node_name_eq(bus, "sbi")) {
bus_connection = "io-unit"; bus_connection = "io-unit";
break; break;
} }
if (!strcmp(bus->name, "bootbus")) { if (of_node_name_eq(bus, "bootbus")) {
bus_connection = "cpu-unit"; bus_connection = "cpu-unit";
break; break;
} }
...@@ -360,16 +360,16 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op, ...@@ -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 * If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit
* lacks a "board#" property, something is very wrong. * lacks a "board#" property, something is very wrong.
*/ */
if (!bus->parent || strcmp(bus->parent->name, bus_connection)) { if (!of_node_name_eq(bus->parent, bus_connection)) {
printk(KERN_ERR "%s: Error, parent is not %s.\n", printk(KERN_ERR "%pOF: Error, parent is not %s.\n",
bus->full_name, bus_connection); bus, bus_connection);
goto err_out; goto err_out;
} }
board_parent = bus->parent; board_parent = bus->parent;
board = of_getintprop_default(board_parent, "board#", -1); board = of_getintprop_default(board_parent, "board#", -1);
if (board == -1) { if (board == -1) {
printk(KERN_ERR "%s: Error, lacks board# property.\n", printk(KERN_ERR "%pOF: Error, lacks board# property.\n",
board_parent->full_name); board_parent);
goto err_out; goto err_out;
} }
......
# SPDX-License-Identifier: GPL-2.0
kapi := arch/$(SRCARCH)/include/generated/asm
uapi := arch/$(SRCARCH)/include/generated/uapi/asm
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
syscall := $(srctree)/$(src)/syscall.tbl
syshdr := $(srctree)/$(src)/syscallhdr.sh
systbl := $(srctree)/$(src)/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
'$(syshdr_abis_$(basetarget))' \
'$(syshdr_pfx_$(basetarget))' \
'$(syshdr_offset_$(basetarget))'
quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
'$(systbl_abis_$(basetarget))' \
'$(systbl_abi_$(basetarget))' \
'$(systbl_offset_$(basetarget))'
syshdr_abis_unistd_32 := common,32
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
syshdr_abis_unistd_64 := common,64
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
systbl_abis_syscall_table_32 := common,32
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
systbl_abis_syscall_table_64 := common,64
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
$(call if_changed,systbl)
systbl_abis_syscall_table_c32 := common,32
systbl_abi_syscall_table_c32 := c32
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
uapisyshdr-y += unistd_32.h unistd_64.h
kapisyshdr-y += syscall_table_32.h \
syscall_table_64.h \
syscall_table_c32.h
targets += $(uapisyshdr-y) $(kapisyshdr-y)
PHONY += all
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
@:
This diff is collapsed.
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
prefix="$4"
offset="$5"
fileguard=_UAPI_ASM_SPARC_`basename "$out" | sed \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
printf "#ifndef %s\n" "${fileguard}"
printf "#define %s\n" "${fileguard}"
printf "\n"
nxt=0
while read nr abi name entry compat ; do
if [ -z "$offset" ]; then
printf "#define __NR_%s%s\t%s\n" \
"${prefix}" "${name}" "${nr}"
else
printf "#define __NR_%s%s\t(%s + %s)\n" \
"${prefix}" "${name}" "${offset}" "${nr}"
fi
nxt=$((nr+1))
done
printf "\n"
printf "#ifdef __KERNEL__\n"
printf "#define __NR_syscalls\t%s\n" "${nxt}"
printf "#endif\n"
printf "\n"
printf "#endif /* %s */" "${fileguard}"
) > "$out"
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
my_abi="$4"
offset="$5"
emit() {
t_nxt="$1"
t_nr="$2"
t_entry="$3"
while [ $t_nxt -lt $t_nr ]; do
printf "__SYSCALL(%s, sys_nis_syscall, )\n" "${t_nxt}"
t_nxt=$((t_nxt+1))
done
printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
}
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
nxt=0
if [ -z "$offset" ]; then
offset=0
fi
while read nr abi name entry compat ; do
if [ "$my_abi" = "c32" ] && [ ! -z "$compat" ]; then
emit $((nxt+offset)) $((nr+offset)) $compat
else
emit $((nxt+offset)) $((nr+offset)) $entry
fi
nxt=$((nr+1))
done
) > "$out"
...@@ -9,85 +9,10 @@ ...@@ -9,85 +9,10 @@
* Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu)
*/ */
#define __SYSCALL(nr, entry, nargs) .long entry
.data .data
.align 4 .align 4
/* First, the Linux native syscall table. */
.globl sys_call_table .globl sys_call_table
sys_call_table: sys_call_table:
/*0*/ .long sys_restart_syscall, sys_exit, sys_fork, sys_read, sys_write #include <asm/syscall_table_32.h> /* 32-bit native syscalls */
/*5*/ .long sys_open, sys_close, sys_wait4, sys_creat, sys_link #undef __SYSCALL
/*10*/ .long sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
/*15*/ .long sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys_lseek
/*20*/ .long sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
/*60*/ .long sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
/*65*/ .long sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_geteuid
/*70*/ .long sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect
/*75*/ .long sys_madvise, sys_vhangup, sys_truncate64, sys_mincore, sys_getgroups16
/*80*/ .long sys_setgroups16, sys_getpgrp, sys_setgroups, sys_setitimer, sys_ftruncate64
/*85*/ .long sys_swapon, sys_getitimer, sys_setuid, sys_sethostname, sys_setgid
/*90*/ .long sys_dup2, sys_setfsuid, sys_fcntl, sys_select, sys_setfsgid
/*95*/ .long sys_fsync, sys_setpriority, sys_socket, sys_connect, sys_accept
/*100*/ .long sys_getpriority, sys_rt_sigreturn, sys_rt_sigaction, sys_rt_sigprocmask, sys_rt_sigpending
/*105*/ .long sys_rt_sigtimedwait, sys_rt_sigqueueinfo, sys_rt_sigsuspend, sys_setresuid, sys_getresuid
/*110*/ .long sys_setresgid, sys_getresgid, sys_setregid, sys_recvmsg, sys_sendmsg
/*115*/ .long sys_getgroups, sys_gettimeofday, sys_getrusage, sys_getsockopt, sys_getcwd
/*120*/ .long sys_readv, sys_writev, sys_settimeofday, sys_fchown16, sys_fchmod
/*125*/ .long sys_recvfrom, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate
/*130*/ .long sys_ftruncate, sys_flock, sys_lstat64, sys_sendto, sys_shutdown
/*135*/ .long sys_socketpair, sys_mkdir, sys_rmdir, sys_utimes, sys_stat64
/*140*/ .long sys_sendfile64, sys_getpeername, sys_futex, sys_gettid, sys_getrlimit
/*145*/ .long sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write
/*150*/ .long sys_getsockname, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
/*155*/ .long sys_fcntl64, sys_inotify_rm_watch, sys_statfs, sys_fstatfs, sys_oldumount
/*160*/ .long sys_sched_setaffinity, sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_nis_syscall
/*165*/ .long sys_quotactl, sys_set_tid_address, sys_mount, sys_ustat, sys_setxattr
/*170*/ .long sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
/*175*/ .long sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
/*180*/ .long sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_sigpending, sys_ni_syscall
/*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
/*190*/ .long sys_init_module, sys_personality, sys_sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
/*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_sparc_sigaction, sys_sgetmask
/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir
/*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
/*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
/*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
/*220*/ .long sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
/*225*/ .long sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16
/*230*/ .long sys_select, sys_time, sys_splice, sys_stime, sys_statfs64
/* "We are the Knights of the Forest of Ni!!" */
/*235*/ .long sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .long sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
/*245*/ .long sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
/*250*/ .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_ni_syscall
/*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
/*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy
/*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
/*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
/*280*/ .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
/*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
/*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy
/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
/*330*/ .long sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime
/*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev
/*340*/ .long sys_ni_syscall, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr
/*345*/ .long sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf
/*350*/ .long sys_execveat, sys_membarrier, sys_userfaultfd, sys_bind, sys_listen
/*355*/ .long sys_setsockopt, sys_mlock2, sys_copy_file_range, sys_preadv2, sys_pwritev2
/*360*/ .long sys_statx, sys_io_pgetevents
This diff is collapsed.
...@@ -445,8 +445,8 @@ static int rtc_probe(struct platform_device *op) ...@@ -445,8 +445,8 @@ static int rtc_probe(struct platform_device *op)
{ {
struct resource *r; struct resource *r;
printk(KERN_INFO "%s: RTC regs at 0x%llx\n", printk(KERN_INFO "%pOF: RTC regs at 0x%llx\n",
op->dev.of_node->full_name, op->resource[0].start); op->dev.of_node, op->resource[0].start);
/* The CMOS RTC driver only accepts IORESOURCE_IO, so cons /* The CMOS RTC driver only accepts IORESOURCE_IO, so cons
* up a fake resource so that the probe works for all cases. * up a fake resource so that the probe works for all cases.
...@@ -501,8 +501,8 @@ static struct platform_device rtc_bq4802_device = { ...@@ -501,8 +501,8 @@ static struct platform_device rtc_bq4802_device = {
static int bq4802_probe(struct platform_device *op) static int bq4802_probe(struct platform_device *op)
{ {
printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n", printk(KERN_INFO "%pOF: BQ4802 regs at 0x%llx\n",
op->dev.of_node->full_name, op->resource[0].start); op->dev.of_node, op->resource[0].start);
rtc_bq4802_device.resource = &op->resource[0]; rtc_bq4802_device.resource = &op->resource[0];
return platform_device_register(&rtc_bq4802_device); return platform_device_register(&rtc_bq4802_device);
...@@ -561,12 +561,12 @@ static int mostek_probe(struct platform_device *op) ...@@ -561,12 +561,12 @@ static int mostek_probe(struct platform_device *op)
/* On an Enterprise system there can be multiple mostek clocks. /* On an Enterprise system there can be multiple mostek clocks.
* We should only match the one that is on the central FHC bus. * We should only match the one that is on the central FHC bus.
*/ */
if (!strcmp(dp->parent->name, "fhc") && if (of_node_name_eq(dp->parent, "fhc") &&
strcmp(dp->parent->parent->name, "central") != 0) !of_node_name_eq(dp->parent->parent, "central"))
return -ENODEV; return -ENODEV;
printk(KERN_INFO "%s: Mostek regs at 0x%llx\n", printk(KERN_INFO "%pOF: Mostek regs at 0x%llx\n",
dp->full_name, op->resource[0].start); dp, op->resource[0].start);
m48t59_rtc.resource = &op->resource[0]; m48t59_rtc.resource = &op->resource[0];
return platform_device_register(&m48t59_rtc); return platform_device_register(&m48t59_rtc);
......
...@@ -193,7 +193,7 @@ show_pciobppath_attr(struct device *dev, struct device_attribute *attr, ...@@ -193,7 +193,7 @@ show_pciobppath_attr(struct device *dev, struct device_attribute *attr,
vdev = to_vio_dev(dev); vdev = to_vio_dev(dev);
dp = vdev->dp; 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, 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, ...@@ -366,12 +366,9 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
if (parent == NULL) { if (parent == NULL) {
dp = cdev_node; dp = cdev_node;
} else if (to_vio_dev(parent) == root_vdev) { } else if (to_vio_dev(parent) == root_vdev) {
dp = of_get_next_child(cdev_node, NULL); for_each_child_of_node(cdev_node, dp) {
while (dp) { if (of_node_is_type(dp, type))
if (!strcmp(dp->type, type))
break; break;
dp = of_get_next_child(cdev_node, dp);
} }
} else { } else {
dp = to_vio_dev(parent)->dp; dp = to_vio_dev(parent)->dp;
......
...@@ -32,24 +32,7 @@ unsigned int of_pdt_unique_id __initdata; ...@@ -32,24 +32,7 @@ unsigned int of_pdt_unique_id __initdata;
static char * __init of_pdt_build_full_name(struct device_node *dp) static char * __init of_pdt_build_full_name(struct device_node *dp)
{ {
int len, ourlen, plen; return build_path_component(dp);
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;
} }
#else /* CONFIG_SPARC */ #else /* CONFIG_SPARC */
...@@ -60,23 +43,21 @@ static inline void irq_trans_init(struct device_node *dp) { } ...@@ -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 char * __init of_pdt_build_full_name(struct device_node *dp)
{ {
static int failsafe_id = 0; /* for generating unique names on failure */ static int failsafe_id = 0; /* for generating unique names on failure */
const char *name;
char path[256];
char *buf; char *buf;
int len; int len;
if (of_pdt_prom_ops->pkg2path(dp->phandle, NULL, 0, &len)) if (!of_pdt_prom_ops->pkg2path(dp->phandle, path, sizeof(path), &len)) {
goto failsafe; name = kbasename(path);
buf = prom_early_alloc(strlen(name) + 1);
buf = prom_early_alloc(len + 1); strcpy(buf, name);
if (of_pdt_prom_ops->pkg2path(dp->phandle, buf, len, &len)) return buf;
goto failsafe; }
return buf;
failsafe: name = of_get_property(dp, "name", &len);
buf = prom_early_alloc(strlen(dp->parent->full_name) + buf = prom_early_alloc(len + 16);
strlen(dp->name) + 16); sprintf(buf, "%s@unknown%i", name, failsafe_id++);
sprintf(buf, "%s/%s@unknown%i",
of_node_is_root(dp->parent) ? "" : dp->parent->full_name,
dp->name, failsafe_id++);
pr_err("%s: pkg2path failed; assigning %s\n", __func__, buf); pr_err("%s: pkg2path failed; assigning %s\n", __func__, buf);
return buf; return buf;
} }
...@@ -181,6 +162,8 @@ static struct device_node * __init of_pdt_create_node(phandle node, ...@@ -181,6 +162,8 @@ static struct device_node * __init of_pdt_create_node(phandle node,
dp->properties = of_pdt_build_prop_list(node); dp->properties = of_pdt_build_prop_list(node);
dp->full_name = of_pdt_build_full_name(dp);
irq_trans_init(dp); irq_trans_init(dp);
return dp; return dp;
...@@ -204,8 +187,6 @@ static struct device_node * __init of_pdt_build_tree(struct device_node *parent, ...@@ -204,8 +187,6 @@ static struct device_node * __init of_pdt_build_tree(struct device_node *parent,
ret = dp; ret = dp;
prev_sibling = 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)); dp->child = of_pdt_build_tree(dp, of_pdt_prom_ops->getchild(node));
if (of_pdt_build_more) if (of_pdt_build_more)
...@@ -228,9 +209,6 @@ void __init of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops) ...@@ -228,9 +209,6 @@ void __init of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops)
of_pdt_prom_ops = ops; of_pdt_prom_ops = ops;
of_root = of_pdt_create_node(root_node, NULL); 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->full_name = "/";
of_root->child = of_pdt_build_tree(of_root, of_root->child = of_pdt_build_tree(of_root,
......
...@@ -571,9 +571,9 @@ int bbc_envctrl_init(struct bbc_i2c_bus *bp) ...@@ -571,9 +571,9 @@ int bbc_envctrl_init(struct bbc_i2c_bus *bp)
int devidx = 0; int devidx = 0;
while ((op = bbc_i2c_getdev(bp, devidx++)) != NULL) { while ((op = bbc_i2c_getdev(bp, devidx++)) != NULL) {
if (!strcmp(op->dev.of_node->name, "temperature")) if (of_node_name_eq(op->dev.of_node, "temperature"))
attach_one_temp(bp, op, temp_index++); attach_one_temp(bp, op, temp_index++);
if (!strcmp(op->dev.of_node->name, "fan-control")) if (of_node_name_eq(op->dev.of_node, "fan-control"))
attach_one_fan(bp, op, fan_index++); attach_one_fan(bp, op, fan_index++);
} }
if (temp_index != 0 && fan_index != 0) { if (temp_index != 0 && fan_index != 0) {
......
...@@ -906,7 +906,7 @@ static void envctrl_init_i2c_child(struct device_node *dp, ...@@ -906,7 +906,7 @@ static void envctrl_init_i2c_child(struct device_node *dp,
int len; int len;
root_node = of_find_node_by_path("/"); root_node = of_find_node_by_path("/");
if (!strcmp(root_node->name, "SUNW,UltraSPARC-IIi-cEngine")) { if (of_node_name_eq(root_node, "SUNW,UltraSPARC-IIi-cEngine")) {
for (len = 0; len < PCF8584_MAX_CHANNELS; ++len) { for (len = 0; len < PCF8584_MAX_CHANNELS; ++len) {
pchild->mon_type[len] = ENVCTRL_NOMON; pchild->mon_type[len] = ENVCTRL_NOMON;
} }
...@@ -1039,10 +1039,10 @@ static int envctrl_probe(struct platform_device *op) ...@@ -1039,10 +1039,10 @@ static int envctrl_probe(struct platform_device *op)
index = 0; index = 0;
dp = op->dev.of_node->child; dp = op->dev.of_node->child;
while (dp) { while (dp) {
if (!strcmp(dp->name, "gpio")) { if (of_node_name_eq(dp, "gpio")) {
i2c_childlist[index].i2ctype = I2C_GPIO; i2c_childlist[index].i2ctype = I2C_GPIO;
envctrl_init_i2c_child(dp, &(i2c_childlist[index++])); envctrl_init_i2c_child(dp, &(i2c_childlist[index++]));
} else if (!strcmp(dp->name, "adc")) { } else if (of_node_name_eq(dp, "adc")) {
i2c_childlist[index].i2ctype = I2C_ADC; i2c_childlist[index].i2ctype = I2C_ADC;
envctrl_init_i2c_child(dp, &(i2c_childlist[index++])); envctrl_init_i2c_child(dp, &(i2c_childlist[index++]));
} }
......
...@@ -165,9 +165,9 @@ static int flash_probe(struct platform_device *op) ...@@ -165,9 +165,9 @@ static int flash_probe(struct platform_device *op)
parent = dp->parent; parent = dp->parent;
if (strcmp(parent->name, "sbus") && if (!of_node_name_eq(parent, "sbus") &&
strcmp(parent->name, "sbi") && !of_node_name_eq(parent, "sbi") &&
strcmp(parent->name, "ebus")) !of_node_name_eq(parent, "ebus"))
return -ENODEV; return -ENODEV;
flash.read_base = op->resource[0].start; flash.read_base = op->resource[0].start;
......
...@@ -199,10 +199,11 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry ...@@ -199,10 +199,11 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry
child = dp->child; child = dp->child;
while (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 && if (len == n &&
!strncmp(child->path_component_name, name, len)) { !strncmp(node_name, name, len)) {
ent_type = op_inode_node; ent_type = op_inode_node;
ent_data.node = child; ent_data.node = child;
ino = child->unique_id; ino = child->unique_id;
...@@ -245,7 +246,7 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry ...@@ -245,7 +246,7 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry
set_nlink(inode, 2); set_nlink(inode, 2);
break; break;
case op_inode_prop: 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)) !strncmp (name, "security-password", 17))
inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR; inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR;
else else
...@@ -293,8 +294,8 @@ static int openpromfs_readdir(struct file *file, struct dir_context *ctx) ...@@ -293,8 +294,8 @@ static int openpromfs_readdir(struct file *file, struct dir_context *ctx)
} }
while (child) { while (child) {
if (!dir_emit(ctx, if (!dir_emit(ctx,
child->path_component_name, kbasename(child->full_name),
strlen(child->path_component_name), strlen(kbasename(child->full_name)),
child->unique_id, DT_DIR)) child->unique_id, DT_DIR))
goto out; goto out;
......
...@@ -66,7 +66,6 @@ struct device_node { ...@@ -66,7 +66,6 @@ struct device_node {
unsigned long _flags; unsigned long _flags;
void *data; void *data;
#if defined(CONFIG_SPARC) #if defined(CONFIG_SPARC)
const char *path_component_name;
unsigned int unique_id; unsigned int unique_id;
struct of_irq_controller *irq_trans; struct of_irq_controller *irq_trans;
#endif #endif
......
...@@ -2071,12 +2071,12 @@ static int cs4231_ebus_probe(struct platform_device *op) ...@@ -2071,12 +2071,12 @@ static int cs4231_ebus_probe(struct platform_device *op)
static int cs4231_probe(struct platform_device *op) static int cs4231_probe(struct platform_device *op)
{ {
#ifdef EBUS_SUPPORT #ifdef EBUS_SUPPORT
if (!strcmp(op->dev.of_node->parent->name, "ebus")) if (of_node_name_eq(op->dev.of_node->parent, "ebus"))
return cs4231_ebus_probe(op); return cs4231_ebus_probe(op);
#endif #endif
#ifdef SBUS_SUPPORT #ifdef SBUS_SUPPORT
if (!strcmp(op->dev.of_node->parent->name, "sbus") || if (of_node_name_eq(op->dev.of_node->parent, "sbus") ||
!strcmp(op->dev.of_node->parent->name, "sbi")) of_node_name_eq(op->dev.of_node->parent, "sbi"))
return cs4231_sbus_probe(op); return cs4231_sbus_probe(op);
#endif #endif
return -ENODEV; return -ENODEV;
......
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