sparc: convert various prom_* functions to use phandle
Subsystems (2)
PATCH v2 2/2 sparc: convert various prom_* functions to use phandle
Rather than passing around ints everywhere, use the phandle type where appropriate for the various functions that talk to the PROM.
v2: use __kernel_phandle in openprom.h instead of phandle.
Note: this has only been compile-tested for 64bit sparc.
Signed-off-by Andres Salomon <[email protected]>
--- arch/sparc/include/asm/floppy_32.h | 3 +- arch/sparc/include/asm/openprom.h | 15 +++++---- arch/sparc/include/asm/oplib_32.h | 44 +++++++++++++------------- arch/sparc/include/asm/oplib_64.h | 39 +++++++++++----------- arch/sparc/kernel/auxio_32.c | 4 +- arch/sparc/kernel/btext.c | 4 +- arch/sparc/kernel/devices.c | 23 +++++++------ arch/sparc/kernel/pcic.c | 4 +- arch/sparc/kernel/setup_64.c | 2 +- arch/sparc/kernel/starfire.c | 2 +- arch/sparc/kernel/tadpole.c | 2 +- arch/sparc/mm/init_64.c | 2 +- arch/sparc/mm/srmmu.c | 8 +++-- arch/sparc/mm/sun4c.c | 2 +- arch/sparc/prom/init_32.c | 2 +- arch/sparc/prom/init_64.c | 4 +- arch/sparc/prom/memory.c | 3 +- arch/sparc/prom/misc_64.c | 6 ++- arch/sparc/prom/ranges.c | 6 ++-- arch/sparc/prom/tree_32.c | 58 +++++++++++++++++---------------- arch/sparc/prom/tree_64.c | 62 ++++++++++++++++++------------------ drivers/sbus/char/jsflash.c | 2 +- drivers/video/aty/atyfb_base.c | 3 +- 23 files changed, 156 insertions(+), 144 deletions(-)
arch/sparc/include/asm/floppy_32.h +2 -1
@@ -304,7 +304,8 @@ static struct linux_prom_registers fd_regs[2];static int sun_floppy_init (void ) {char state[128 ]; -int tnode, fd_node, num_regs; +phandle tnode, fd_node; +int num_regs;struct resource r; use_virtual_dma =1 ;
arch/sparc/include/asm/openprom.h +8 -7
@@ -6,6 +6,7 @@* * Copyright (C) 1995,1996 David S. Miller ([email protected]) */ +#include <linux/types.h> /* Empirical constants... */ #define LINUX_OPPROM_MAGIC 0x10010407
@@ -26,7 +27,7 @@ struct linux_dev_v0_funcs {/* V2 and later prom device operations. */ struct linux_dev_v2_funcs { -int (*v2_inst2pkg)(int d);/* Convert ihandle to phandle */ +__kernel_phandle (*v2_inst2pkg)(int d);/* Convert ihandle to phandle */ char * (*v2_dumb_mem_alloc)(char *va,unsigned sz);void (*v2_dumb_mem_free)(char *va,unsigned sz);
@@ -168,12 +169,12 @@ struct linux_romvec {/* Routines for traversing the prom device tree. */ struct linux_nodeops { -int (*no_nextnode)(int node); -int (*no_child)(int node); -int (*no_proplen)(int node,const char *name); -int (*no_getprop)(int node,const char *name,char *val); -int (*no_setprop)(int node,const char *name,char *val,int len); -char * (*no_nextprop)(int node,char *name); +__kernel_phandle (*no_nextnode)(__kernel_phandle node); +__kernel_phandle (*no_child)(__kernel_phandle node); +int (*no_proplen)(__kernel_phandle node,const char *name); +int (*no_getprop)(__kernel_phandle node,const char *name,char *val); +int (*no_setprop)(__kernel_phandle node,const char *name,char *val,int len); +char * (*no_nextprop)(__kernel_phandle node,char *name); };/* More fun PROM structures for device probing. */
arch/sparc/include/asm/oplib_32.h +22 -22
110 lines not on this page · raw message
arch/sparc/include/asm/oplib_64.h +20 -19
@@ -16,7 +16,7 @@ extern char prom_version[];/* Root node of the prom device tree, this stays constant after * initialization is complete. */ -extern int prom_root_node; +extern phandle prom_root_node;/* PROM stdin and stdout */ extern int prom_stdin, prom_stdout;
@@ -24,7 +24,7 @@ extern int prom_stdin, prom_stdout;/* /chosen node of the prom device tree, this stays constant after * initialization is complete. */ -extern int prom_chosen_node; +extern phandle prom_chosen_node;/* Helper values and strings in arch/sparc64/kernel/head.S */ extern const char prom_peer_name[];
@@ -218,68 +218,69 @@ extern void prom_unmap(unsigned long size, unsigned long vaddr);/* PROM device tree traversal functions... */ /* Get the child node of the given node, or zero if no child exists. */ -extern int prom_getchild (int parent_node); +extern phandle prom_getchild (phandle parent_node);/* Get the next sibling node of the given node, or zero if no further * siblings exist. */ -extern int prom_getsibling (int node); +extern phandle prom_getsibling (phandle node);/* Get the length, at the passed node, of the given property type. * Returns -1 on error (ie. no such property at this node). */ -extern int prom_getproplen (int thisnode,const char *property); +extern int prom_getproplen (phandle thisnode,const char *property);/* Fetch the requested property using the given buffer. Returns * the number of bytes the prom put into your buffer or -1 on error. */ -extern int prom_getproperty (int thisnode,const char *property, +extern int prom_getproperty (phandle thisnode,const char *property,char *prop_buffer,int propbuf_size);/* Acquire an integer property. */ -extern int prom_getint (int node,const char *property); +extern int prom_getint (phandle node,const char *property);/* Acquire an integer property, with a default value. */ -extern int prom_getintdefault (int node,const char *property,int defval); +extern int prom_getintdefault (phandle node,const char *property,int defval);/* Acquire a boolean property, 0=FALSE 1=TRUE. */ -extern int prom_getbool (int node,const char *prop); +extern int prom_getbool (phandle node,const char *prop);/* Acquire a string property, null string on error. */ -extern void prom_getstring (int node,const char *prop,char *buf,int bufsize); +extern void prom_getstring (phandle node,const char *prop,char *buf, +int bufsize);/* Does the passed node have the given "name"? YES=1 NO=0 */ -extern int prom_nodematch (int thisnode,const char *name); +extern int prom_nodematch (phandle thisnode,const char *name);/* Search all siblings starting at the passed node for "name" matching * the given string. Returns the node on success, zero on failure. */ -extern int prom_searchsiblings (int node_start,const char *name); +extern phandle prom_searchsiblings (phandle node_start,const char *name);/* Return the first property type, as a string, for the given node. * Returns a null string on error. Buffer should be at least 32B long. */ -extern char *prom_firstprop (int node,char *buffer); +extern char *prom_firstprop (phandle node,char *buffer);/* Returns the next property after the passed property for the given * node. Returns null string on failure. Buffer should be at least 32B long. */ -extern char *prom_nextprop (int node,const char *prev_property,char *buffer); +extern char *prom_nextprop (phandle node,const char *prev_property,char *buf);/* Returns 1 if the specified node has given property. */ -extern int prom_node_has_property (int node,const char *property); +extern int prom_node_has_property (phandle node,const char *property);/* Returns phandle of the path specified */ -extern int prom_finddevice (const char *name); +extern phandle prom_finddevice (const char *name);/* Set the indicated property at the given node with the passed value. * Returns the number of bytes of your value that the prom took. */ -extern int prom_setprop (int node,const char *prop_name,char *prop_value, +extern int prom_setprop (phandle node,const char *prop_name,char *prop_value,int value_size); -extern int prom_pathtoinode (const char *path); -extern int prom_inst2pkg (int ); +extern phandle prom_pathtoinode (const char *path); +extern phandle prom_inst2pkg (int );extern int prom_service_exists (const char *service_name);extern void prom_sun4v_guest_soft_state (void );
arch/sparc/kernel/auxio_32.c +2 -2
@@ -23,7 +23,7 @@ static DEFINE_SPINLOCK(auxio_lock);void __init auxio_probe (void ) { -int node, auxio_nd; +phandle node, auxio_nd;struct linux_prom_registers auxregs[1 ];struct resource r;
@@ -113,7 +113,7 @@ volatile unsigned char * auxio_power_register = NULL;void __init auxio_power_probe (void ) {struct linux_prom_registers regs; -int node; +phandle node;struct resource r;/* Attempt to find the sun4m power control node. */
arch/sparc/kernel/btext.c +2 -2
@@ -40,7 +40,7 @@ static unsigned char *dispDeviceBase __force_data;static unsigned char vga_font[cmapsz]; -static int __init btext_initialize (unsigned int node) +static int __init btext_initialize (phandle node) {unsigned int width, height, depth, pitch;unsigned long address =0 ;
@@ -309,7 +309,7 @@ static struct console btext_console = {int __init btext_find_display (void ) { -unsigned int node; +phandle node;char type[32 ];int ret;
arch/sparc/kernel/devices.c +12 -11
@@ -31,9 +31,9 @@ static char *cpu_mid_prop(void)return "mid" ; } -static int check_cpu_node (int nd,int *cur_inst, -int (*compare)(int ,int ,void *),void *compare_arg, -int *prom_node,int *mid) +static int check_cpu_node (phandle nd,int *cur_inst, +int (*compare)(phandle ,int ,void *),void *compare_arg, +phandle *prom_node,int *mid) {if (!compare (nd, *cur_inst, compare_arg)) {if (prom_node)
@@ -51,8 +51,8 @@ static int check_cpu_node(int nd, int *cur_inst,return -ENODEV ; } -static int __cpu_find_by (int (*compare)(int ,int ,void *),void *compare_arg, -int *prom_node,int *mid) +static int __cpu_find_by (int (*compare)(phandle ,int ,void *), +void *compare_arg,phandle *prom_node,int *mid) {struct device_node *dp;int cur_inst;
@@ -71,7 +71,7 @@ static int __cpu_find_by(int (*compare)(int, int, void *), void *compare_arg,return -ENODEV ; } -static int cpu_instance_compare (int nd,int instance,void *_arg) +static int cpu_instance_compare (phandle nd,int instance,void *_arg) {int desired_instance = (int ) _arg;
@@ -80,13 +80,13 @@ static int cpu_instance_compare(int nd, int instance, void *_arg)return -ENODEV ; } -int cpu_find_by_instance (int instance,int *prom_node,int *mid) +int cpu_find_by_instance (int instance,phandle *prom_node,int *mid) {return __cpu_find_by (cpu_instance_compare, (void *)instance, prom_node, mid); } -static int cpu_mid_compare (int nd,int instance,void *_arg) +static int cpu_mid_compare (phandle nd,int instance,void *_arg) {int desired_mid = (int ) _arg;int this_mid;
@@ -98,7 +98,7 @@ static int cpu_mid_compare(int nd, int instance, void *_arg)return -ENODEV ; } -int cpu_find_by_mid (int mid,int *prom_node) +int cpu_find_by_mid (int mid,phandle *prom_node) {return __cpu_find_by (cpu_mid_compare, (void *)mid, prom_node,NULL );
@@ -108,7 +108,7 @@ int cpu_find_by_mid(int mid, int *prom_node)* address (0-3). This gives us the true hardware mid, which might have * some other bits set. On 4d hardware and software mids are the same. */ -int cpu_get_hwmid (int prom_node) +int cpu_get_hwmid (phandle prom_node) {return prom_getintdefault (prom_node,cpu_mid_prop (), -ENODEV ); }
@@ -119,7 +119,8 @@ void __init device_scan(void)#ifndef CONFIG_SMP { -int err, cpu_node; +phandle cpu_node; +int err; err =cpu_find_by_instance (0 , &cpu_node,NULL );if (err) {/* Probably a sun4e, Sun is trying to trick us ;-) */
arch/sparc/kernel/pcic.c +2 -2
@@ -284,7 +284,7 @@ int __init pcic_probe(void)struct linux_prom_registers regs[PROMREG_MAX ];struct linux_pbm_info * pbm;char namebuf[64 ]; -int node; +phandle node;int err;if (pcic0_up) {
@@ -440,7 +440,7 @@ static int __devinit pdev_to_pnode(struct linux_pbm_info *pbm, {struct linux_prom_pci_registers regs[PROMREG_MAX ];int err; -int node =prom_getchild (pbm->prom_node); +phandle node =prom_getchild (pbm->prom_node);while (node) { err = prom_getproperty(node, "reg",
arch/sparc/kernel/setup_64.c +1 -1
@@ -315,7 +315,7 @@ void __init setup_arch(char **cmdline_p)#ifdef CONFIG_IP_PNP if (!ic_set_manually) { -int chosen =prom_finddevice ("/chosen" ); +phandle chosen =prom_finddevice ("/chosen" );u32 cl, sv, gw; cl =prom_getintdefault (chosen,"client-ip" ,0 );
arch/sparc/kernel/starfire.c +1 -1
@@ -23,7 +23,7 @@ int this_is_starfire = 0;void check_if_starfire (void ) { -int ssnode =prom_finddevice ("/ssp-serial" ); +phandle ssnode =prom_finddevice ("/ssp-serial" );if (ssnode !=0 && ssnode !=-1 ) this_is_starfire =1 ; }
arch/sparc/kernel/tadpole.c +1 -1
@@ -100,7 +100,7 @@ static void swift_clockstop(void)void __init clock_stop_probe (void ) { -unsigned int node, clk_nd; +phandle node, clk_nd;char name[20 ];prom_getstring (prom_root_node,"name" , name,sizeof (name));
arch/sparc/mm/init_64.c +1 -1
@@ -88,7 +88,7 @@ static void __init read_obp_memory(const char *property,struct linux_prom64_registers *regs, int *num_ents) { - int node = prom_finddevice("/memory"); + phandle node = prom_finddevice("/memory");int prop_size =prom_getproplen (node, property);int ents, ret, i;
arch/sparc/mm/srmmu.c +5 -3
@@ -1262,7 +1262,8 @@ extern unsigned long bootmem_init(unsigned long *pages_avail);void __init srmmu_paging_init (void ) { -int i, cpunode; +int i; +phandle cpunode;char node_str[128 ];pgd_t *pgd;pmd_t *pmd;
@@ -1398,7 +1399,8 @@ static void __init srmmu_is_bad(void)static void __init init_vac_layout (void ) { -int nd, cache_lines; +phandle nd; +int cache_lines;char node_str[128 ];#ifdef CONFIG_SMP int cpu =0 ;
@@ -2082,7 +2084,7 @@ static void __init get_srmmu_type(void)/* Next check for Fujitsu Swift. */ if (psr_typ ==0 && psr_vers ==4 ) { -int cpunode; +phandle cpunode;char node_str[128 ];/* Look if it is not a TurboSparc emulating Swift... */
arch/sparc/mm/sun4c.c +1 -1
@@ -420,7 +420,7 @@ volatile unsigned long __iomem *sun4c_memerr_reg = NULL;void __init sun4c_probe_memerr_reg (void ) { -int node; +phandle node;struct linux_prom_registers regs[1 ]; node =prom_getchild (prom_root_node);
arch/sparc/prom/init_32.c +1 -1
@@ -20,7 +20,7 @@ enum prom_major_version prom_vers;unsigned int prom_rev, prom_prev;/* The root node of the prom device tree. */ -int prom_root_node; +phandle prom_root_node;EXPORT_SYMBOL (prom_root_node);/* Pointer to the device tree operations structure. */
arch/sparc/prom/init_64.c +2 -2
@@ -19,7 +19,7 @@ char prom_version[80];/* The root node of the prom device tree. */ int prom_stdin, prom_stdout; -int prom_chosen_node; +phandle prom_chosen_node;/* You must call prom_init() before you attempt to use any of the * routines in the prom library. It returns 0 on success, 1 on
@@ -30,7 +30,7 @@ extern void prom_cif_init(void *, void *);void __init prom_init (void *cif_handler,void *cif_stack) { -int node; +phandle node;prom_cif_init (cif_handler, cif_stack);
arch/sparc/prom/memory.c +2 -1
@@ -31,7 +31,8 @@ static int __init prom_meminit_v0(void)static int __init prom_meminit_v2 (void ) {struct linux_prom_registers reg[64 ]; -int node, size, num_ents, i; +phandle node; +int size, num_ents, i; node =prom_searchsiblings (prom_getchild (prom_root_node),"memory" ); size =prom_getproperty (node,"available" , (char *) reg,sizeof (reg));
arch/sparc/prom/misc_64.c +4 -2
@@ -183,7 +183,8 @@ unsigned char prom_get_idprom(char *idbuf, int num_bytes)int prom_get_mmu_ihandle (void ) { -int node, ret; +phandle node; +int ret;if (prom_mmu_ihandle_cache !=0 )return prom_mmu_ihandle_cache;
@@ -201,7 +202,8 @@ int prom_get_mmu_ihandle(void)static int prom_get_memory_ihandle (void ) {static int memory_ihandle_cache; -int node, ret; +phandle node; +int ret;if (memory_ihandle_cache !=0 )return memory_ihandle_cache;
arch/sparc/prom/ranges.c +3 -3
@@ -68,7 +68,7 @@ EXPORT_SYMBOL(prom_apply_obio_ranges);void __init prom_ranges_init (void ) { -int node, obio_node; +phandle node, obio_node;int success; num_obio_ranges =0 ;
@@ -89,8 +89,8 @@ void __init prom_ranges_init(void)prom_printf ("PROMLIB: obio_ranges %d\n" , num_obio_ranges); } -void -prom_apply_generic_ranges (int node,int parent,struct linux_prom_registers *regs,int nregs) +void prom_apply_generic_ranges (phandle node,phandle parent, +struct linux_prom_registers *regs,int nregs) {int success;int num_ranges;
arch/sparc/prom/tree_32.c +30 -28
191 lines not on this page · raw message
arch/sparc/prom/tree_64.c +31 -31
196 lines not on this page · raw message
drivers/sbus/char/jsflash.c +1 -1
@@ -459,7 +459,7 @@ static int jsflash_init(void) {int rc;struct jsflash *jsf; -int node; +phandle node;char banner[128 ];struct linux_prom_registers reg0;
drivers/video/aty/atyfb_base.c +2 -1
@@ -2970,7 +2970,8 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev,struct atyfb_par *par = info->par;struct device_node *dp;char prop[128 ]; -int node, len, i, j, ret; +phandle node; +int len, i, j, ret;u32 mem, chip_id;/*
Signature · 1 line
1.5.6.5