diff options
Diffstat (limited to 'arch/sparc/prom')
| -rw-r--r-- | arch/sparc/prom/Makefile | 2 | ||||
| -rw-r--r-- | arch/sparc/prom/bootstr_32.c | 3 | ||||
| -rw-r--r-- | arch/sparc/prom/console_32.c | 7 | ||||
| -rw-r--r-- | arch/sparc/prom/console_64.c | 2 | ||||
| -rw-r--r-- | arch/sparc/prom/devmap.c | 53 | ||||
| -rw-r--r-- | arch/sparc/prom/init_64.c | 3 | ||||
| -rw-r--r-- | arch/sparc/prom/misc_32.c | 2 | ||||
| -rw-r--r-- | arch/sparc/prom/mp.c | 78 | ||||
| -rw-r--r-- | arch/sparc/prom/palloc.c | 43 | ||||
| -rw-r--r-- | arch/sparc/prom/ranges.c | 6 | ||||
| -rw-r--r-- | arch/sparc/prom/tree_32.c | 50 |
11 files changed, 18 insertions, 231 deletions
diff --git a/arch/sparc/prom/Makefile b/arch/sparc/prom/Makefile index 816c0fa12dc0..8287bbe88768 100644 --- a/arch/sparc/prom/Makefile +++ b/arch/sparc/prom/Makefile | |||
| @@ -5,12 +5,10 @@ asflags := -ansi | |||
| 5 | ccflags := -Werror | 5 | ccflags := -Werror |
| 6 | 6 | ||
| 7 | lib-y := bootstr_$(BITS).o | 7 | lib-y := bootstr_$(BITS).o |
| 8 | lib-$(CONFIG_SPARC32) += devmap.o | ||
| 9 | lib-y += init_$(BITS).o | 8 | lib-y += init_$(BITS).o |
| 10 | lib-$(CONFIG_SPARC32) += memory.o | 9 | lib-$(CONFIG_SPARC32) += memory.o |
| 11 | lib-y += misc_$(BITS).o | 10 | lib-y += misc_$(BITS).o |
| 12 | lib-$(CONFIG_SPARC32) += mp.o | 11 | lib-$(CONFIG_SPARC32) += mp.o |
| 13 | lib-$(CONFIG_SPARC32) += palloc.o | ||
| 14 | lib-$(CONFIG_SPARC32) += ranges.o | 12 | lib-$(CONFIG_SPARC32) += ranges.o |
| 15 | lib-$(CONFIG_SPARC32) += segment.o | 13 | lib-$(CONFIG_SPARC32) += segment.o |
| 16 | lib-y += console_$(BITS).o | 14 | lib-y += console_$(BITS).o |
diff --git a/arch/sparc/prom/bootstr_32.c b/arch/sparc/prom/bootstr_32.c index 916831da7e67..f5ec32e0d419 100644 --- a/arch/sparc/prom/bootstr_32.c +++ b/arch/sparc/prom/bootstr_32.c | |||
| @@ -29,7 +29,8 @@ prom_getbootargs(void) | |||
| 29 | /* Start from 1 and go over fd(0,0,0)kernel */ | 29 | /* Start from 1 and go over fd(0,0,0)kernel */ |
| 30 | for(iter = 1; iter < 8; iter++) { | 30 | for(iter = 1; iter < 8; iter++) { |
| 31 | arg = (*(romvec->pv_v0bootargs))->argv[iter]; | 31 | arg = (*(romvec->pv_v0bootargs))->argv[iter]; |
| 32 | if(arg == 0) break; | 32 | if (arg == NULL) |
| 33 | break; | ||
| 33 | while(*arg != 0) { | 34 | while(*arg != 0) { |
| 34 | /* Leave place for space and null. */ | 35 | /* Leave place for space and null. */ |
| 35 | if(cp >= barg_buf + BARG_LEN-2){ | 36 | if(cp >= barg_buf + BARG_LEN-2){ |
diff --git a/arch/sparc/prom/console_32.c b/arch/sparc/prom/console_32.c index 48863108a44c..b05e3db5fa63 100644 --- a/arch/sparc/prom/console_32.c +++ b/arch/sparc/prom/console_32.c | |||
| @@ -27,13 +27,14 @@ static int prom_nbputchar(const char *buf) | |||
| 27 | spin_lock_irqsave(&prom_lock, flags); | 27 | spin_lock_irqsave(&prom_lock, flags); |
| 28 | switch(prom_vers) { | 28 | switch(prom_vers) { |
| 29 | case PROM_V0: | 29 | case PROM_V0: |
| 30 | i = (*(romvec->pv_nbputchar))(*buf); | 30 | if ((*(romvec->pv_nbputchar))(*buf)) |
| 31 | i = 1; | ||
| 31 | break; | 32 | break; |
| 32 | case PROM_V2: | 33 | case PROM_V2: |
| 33 | case PROM_V3: | 34 | case PROM_V3: |
| 34 | if ((*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout, | 35 | if ((*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout, |
| 35 | buf, 0x1) == 1) | 36 | buf, 0x1) == 1) |
| 36 | i = 0; | 37 | i = 1; |
| 37 | break; | 38 | break; |
| 38 | default: | 39 | default: |
| 39 | break; | 40 | break; |
| @@ -47,7 +48,7 @@ void prom_console_write_buf(const char *buf, int len) | |||
| 47 | { | 48 | { |
| 48 | while (len) { | 49 | while (len) { |
| 49 | int n = prom_nbputchar(buf); | 50 | int n = prom_nbputchar(buf); |
| 50 | if (n) | 51 | if (n < 0) |
| 51 | continue; | 52 | continue; |
| 52 | len--; | 53 | len--; |
| 53 | buf++; | 54 | buf++; |
diff --git a/arch/sparc/prom/console_64.c b/arch/sparc/prom/console_64.c index ed39e75828bd..9de6c8cfe04a 100644 --- a/arch/sparc/prom/console_64.c +++ b/arch/sparc/prom/console_64.c | |||
| @@ -13,8 +13,6 @@ | |||
| 13 | #include <asm/system.h> | 13 | #include <asm/system.h> |
| 14 | #include <linux/string.h> | 14 | #include <linux/string.h> |
| 15 | 15 | ||
| 16 | extern int prom_stdin, prom_stdout; | ||
| 17 | |||
| 18 | static int __prom_console_write_buf(const char *buf, int len) | 16 | static int __prom_console_write_buf(const char *buf, int len) |
| 19 | { | 17 | { |
| 20 | unsigned long args[7]; | 18 | unsigned long args[7]; |
diff --git a/arch/sparc/prom/devmap.c b/arch/sparc/prom/devmap.c deleted file mode 100644 index 46157d2aba0d..000000000000 --- a/arch/sparc/prom/devmap.c +++ /dev/null | |||
| @@ -1,53 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * promdevmap.c: Map device/IO areas to virtual addresses. | ||
| 3 | * | ||
| 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <linux/types.h> | ||
| 8 | #include <linux/kernel.h> | ||
| 9 | #include <linux/sched.h> | ||
| 10 | |||
| 11 | #include <asm/openprom.h> | ||
| 12 | #include <asm/oplib.h> | ||
| 13 | |||
| 14 | extern void restore_current(void); | ||
| 15 | |||
| 16 | /* Just like the routines in palloc.c, these should not be used | ||
| 17 | * by the kernel at all. Bootloader facility mainly. And again, | ||
| 18 | * this is only available on V2 proms and above. | ||
| 19 | */ | ||
| 20 | |||
| 21 | /* Map physical device address 'paddr' in IO space 'ios' of size | ||
| 22 | * 'num_bytes' to a virtual address, with 'vhint' being a hint to | ||
| 23 | * the prom as to where you would prefer the mapping. We return | ||
| 24 | * where the prom actually mapped it. | ||
| 25 | */ | ||
| 26 | char * | ||
| 27 | prom_mapio(char *vhint, int ios, unsigned int paddr, unsigned int num_bytes) | ||
| 28 | { | ||
| 29 | unsigned long flags; | ||
| 30 | char *ret; | ||
| 31 | |||
| 32 | spin_lock_irqsave(&prom_lock, flags); | ||
| 33 | if((num_bytes == 0) || (paddr == 0)) ret = (char *) 0x0; | ||
| 34 | else | ||
| 35 | ret = (*(romvec->pv_v2devops.v2_dumb_mmap))(vhint, ios, paddr, | ||
| 36 | num_bytes); | ||
| 37 | restore_current(); | ||
| 38 | spin_unlock_irqrestore(&prom_lock, flags); | ||
| 39 | return ret; | ||
| 40 | } | ||
| 41 | |||
| 42 | /* Unmap an IO/device area that was mapped using the above routine. */ | ||
| 43 | void | ||
| 44 | prom_unmapio(char *vaddr, unsigned int num_bytes) | ||
| 45 | { | ||
| 46 | unsigned long flags; | ||
| 47 | |||
| 48 | if(num_bytes == 0x0) return; | ||
| 49 | spin_lock_irqsave(&prom_lock, flags); | ||
| 50 | (*(romvec->pv_v2devops.v2_dumb_munmap))(vaddr, num_bytes); | ||
| 51 | restore_current(); | ||
| 52 | spin_unlock_irqrestore(&prom_lock, flags); | ||
| 53 | } | ||
diff --git a/arch/sparc/prom/init_64.c b/arch/sparc/prom/init_64.c index 3ff911e7d25b..9c6ac4b81ded 100644 --- a/arch/sparc/prom/init_64.c +++ b/arch/sparc/prom/init_64.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | char prom_version[80]; | 18 | char prom_version[80]; |
| 19 | 19 | ||
| 20 | /* The root node of the prom device tree. */ | 20 | /* The root node of the prom device tree. */ |
| 21 | int prom_stdin, prom_stdout; | 21 | int prom_stdout; |
| 22 | phandle prom_chosen_node; | 22 | phandle prom_chosen_node; |
| 23 | 23 | ||
| 24 | /* You must call prom_init() before you attempt to use any of the | 24 | /* You must call prom_init() before you attempt to use any of the |
| @@ -38,7 +38,6 @@ void __init prom_init(void *cif_handler, void *cif_stack) | |||
| 38 | if (!prom_chosen_node || prom_chosen_node == -1) | 38 | if (!prom_chosen_node || prom_chosen_node == -1) |
| 39 | prom_halt(); | 39 | prom_halt(); |
| 40 | 40 | ||
| 41 | prom_stdin = prom_getint(prom_chosen_node, "stdin"); | ||
| 42 | prom_stdout = prom_getint(prom_chosen_node, "stdout"); | 41 | prom_stdout = prom_getint(prom_chosen_node, "stdout"); |
| 43 | 42 | ||
| 44 | node = prom_finddevice("/openprom"); | 43 | node = prom_finddevice("/openprom"); |
diff --git a/arch/sparc/prom/misc_32.c b/arch/sparc/prom/misc_32.c index 4d61c540bb3d..8c278c311ba4 100644 --- a/arch/sparc/prom/misc_32.c +++ b/arch/sparc/prom/misc_32.c | |||
| @@ -70,7 +70,7 @@ prom_cmdline(void) | |||
| 70 | /* Drop into the prom, but completely terminate the program. | 70 | /* Drop into the prom, but completely terminate the program. |
| 71 | * No chance of continuing. | 71 | * No chance of continuing. |
| 72 | */ | 72 | */ |
| 73 | void | 73 | void __noreturn |
| 74 | prom_halt(void) | 74 | prom_halt(void) |
| 75 | { | 75 | { |
| 76 | unsigned long flags; | 76 | unsigned long flags; |
diff --git a/arch/sparc/prom/mp.c b/arch/sparc/prom/mp.c index 4c4dc79f65af..97c44c9ddbc8 100644 --- a/arch/sparc/prom/mp.c +++ b/arch/sparc/prom/mp.c | |||
| @@ -41,81 +41,3 @@ prom_startcpu(int cpunode, struct linux_prom_registers *ctable_reg, int ctx, cha | |||
| 41 | 41 | ||
| 42 | return ret; | 42 | return ret; |
| 43 | } | 43 | } |
| 44 | |||
| 45 | /* Stop CPU with device prom-tree node 'cpunode'. | ||
| 46 | * XXX Again, what does the return value really mean? XXX | ||
| 47 | */ | ||
| 48 | int | ||
| 49 | prom_stopcpu(int cpunode) | ||
| 50 | { | ||
| 51 | int ret; | ||
| 52 | unsigned long flags; | ||
| 53 | |||
| 54 | spin_lock_irqsave(&prom_lock, flags); | ||
| 55 | switch(prom_vers) { | ||
| 56 | case PROM_V0: | ||
| 57 | case PROM_V2: | ||
| 58 | default: | ||
| 59 | ret = -1; | ||
| 60 | break; | ||
| 61 | case PROM_V3: | ||
| 62 | ret = (*(romvec->v3_cpustop))(cpunode); | ||
| 63 | break; | ||
| 64 | }; | ||
| 65 | restore_current(); | ||
| 66 | spin_unlock_irqrestore(&prom_lock, flags); | ||
| 67 | |||
| 68 | return ret; | ||
| 69 | } | ||
| 70 | |||
| 71 | /* Make CPU with device prom-tree node 'cpunode' idle. | ||
| 72 | * XXX Return value, anyone? XXX | ||
| 73 | */ | ||
| 74 | int | ||
| 75 | prom_idlecpu(int cpunode) | ||
| 76 | { | ||
| 77 | int ret; | ||
| 78 | unsigned long flags; | ||
| 79 | |||
| 80 | spin_lock_irqsave(&prom_lock, flags); | ||
| 81 | switch(prom_vers) { | ||
| 82 | case PROM_V0: | ||
| 83 | case PROM_V2: | ||
| 84 | default: | ||
| 85 | ret = -1; | ||
| 86 | break; | ||
| 87 | case PROM_V3: | ||
| 88 | ret = (*(romvec->v3_cpuidle))(cpunode); | ||
| 89 | break; | ||
| 90 | }; | ||
| 91 | restore_current(); | ||
| 92 | spin_unlock_irqrestore(&prom_lock, flags); | ||
| 93 | |||
| 94 | return ret; | ||
| 95 | } | ||
| 96 | |||
| 97 | /* Resume the execution of CPU with nodeid 'cpunode'. | ||
| 98 | * XXX Come on, somebody has to know... XXX | ||
| 99 | */ | ||
| 100 | int | ||
| 101 | prom_restartcpu(int cpunode) | ||
| 102 | { | ||
| 103 | int ret; | ||
| 104 | unsigned long flags; | ||
| 105 | |||
| 106 | spin_lock_irqsave(&prom_lock, flags); | ||
| 107 | switch(prom_vers) { | ||
| 108 | case PROM_V0: | ||
| 109 | case PROM_V2: | ||
| 110 | default: | ||
| 111 | ret = -1; | ||
| 112 | break; | ||
| 113 | case PROM_V3: | ||
| 114 | ret = (*(romvec->v3_cpuresume))(cpunode); | ||
| 115 | break; | ||
| 116 | }; | ||
| 117 | restore_current(); | ||
| 118 | spin_unlock_irqrestore(&prom_lock, flags); | ||
| 119 | |||
| 120 | return ret; | ||
| 121 | } | ||
diff --git a/arch/sparc/prom/palloc.c b/arch/sparc/prom/palloc.c deleted file mode 100644 index 2e2a88b211fb..000000000000 --- a/arch/sparc/prom/palloc.c +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * palloc.c: Memory allocation from the Sun PROM. | ||
| 3 | * | ||
| 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <asm/openprom.h> | ||
| 8 | #include <asm/oplib.h> | ||
| 9 | |||
| 10 | /* You should not call these routines after memory management | ||
| 11 | * has been initialized in the kernel, if fact you should not | ||
| 12 | * use these if at all possible in the kernel. They are mainly | ||
| 13 | * to be used for a bootloader for temporary allocations which | ||
| 14 | * it will free before jumping into the kernel it has loaded. | ||
| 15 | * | ||
| 16 | * Also, these routines don't work on V0 proms, only V2 and later. | ||
| 17 | */ | ||
| 18 | |||
| 19 | /* Allocate a chunk of memory of size 'num_bytes' giving a suggestion | ||
| 20 | * of virtual_hint as the preferred virtual base address of this chunk. | ||
| 21 | * There are no guarantees that you will get the allocation, or that | ||
| 22 | * the prom will abide by your "hint". So check your return value. | ||
| 23 | */ | ||
| 24 | char * | ||
| 25 | prom_alloc(char *virtual_hint, unsigned int num_bytes) | ||
| 26 | { | ||
| 27 | if(prom_vers == PROM_V0) return (char *) 0x0; | ||
| 28 | if(num_bytes == 0x0) return (char *) 0x0; | ||
| 29 | return (*(romvec->pv_v2devops.v2_dumb_mem_alloc))(virtual_hint, num_bytes); | ||
| 30 | } | ||
| 31 | |||
| 32 | /* Free a previously allocated chunk back to the prom at virtual address | ||
| 33 | * 'vaddr' of size 'num_bytes'. NOTE: This vaddr is not the hint you | ||
| 34 | * used for the allocation, but the virtual address the prom actually | ||
| 35 | * returned to you. They may be have been the same, they may have not, | ||
| 36 | * doesn't matter. | ||
| 37 | */ | ||
| 38 | void | ||
| 39 | prom_free(char *vaddr, unsigned int num_bytes) | ||
| 40 | { | ||
| 41 | if((prom_vers == PROM_V0) || (num_bytes == 0x0)) return; | ||
| 42 | (*(romvec->pv_v2devops.v2_dumb_mem_free))(vaddr, num_bytes); | ||
| 43 | } | ||
diff --git a/arch/sparc/prom/ranges.c b/arch/sparc/prom/ranges.c index 541fc829c207..0857aa9e839d 100644 --- a/arch/sparc/prom/ranges.c +++ b/arch/sparc/prom/ranges.c | |||
| @@ -13,8 +13,8 @@ | |||
| 13 | #include <asm/types.h> | 13 | #include <asm/types.h> |
| 14 | #include <asm/system.h> | 14 | #include <asm/system.h> |
| 15 | 15 | ||
| 16 | struct linux_prom_ranges promlib_obio_ranges[PROMREG_MAX]; | 16 | static struct linux_prom_ranges promlib_obio_ranges[PROMREG_MAX]; |
| 17 | int num_obio_ranges; | 17 | static int num_obio_ranges; |
| 18 | 18 | ||
| 19 | /* Adjust register values based upon the ranges parameters. */ | 19 | /* Adjust register values based upon the ranges parameters. */ |
| 20 | static void | 20 | static void |
| @@ -35,7 +35,7 @@ prom_adjust_regs(struct linux_prom_registers *regp, int nregs, | |||
| 35 | } | 35 | } |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | void | 38 | static void |
| 39 | prom_adjust_ranges(struct linux_prom_ranges *ranges1, int nranges1, | 39 | prom_adjust_ranges(struct linux_prom_ranges *ranges1, int nranges1, |
| 40 | struct linux_prom_ranges *ranges2, int nranges2) | 40 | struct linux_prom_ranges *ranges2, int nranges2) |
| 41 | { | 41 | { |
diff --git a/arch/sparc/prom/tree_32.c b/arch/sparc/prom/tree_32.c index 535e2e69ac1d..bc8e4cb87a68 100644 --- a/arch/sparc/prom/tree_32.c +++ b/arch/sparc/prom/tree_32.c | |||
| @@ -20,7 +20,7 @@ extern void restore_current(void); | |||
| 20 | static char promlib_buf[128]; | 20 | static char promlib_buf[128]; |
| 21 | 21 | ||
| 22 | /* Internal version of prom_getchild that does not alter return values. */ | 22 | /* Internal version of prom_getchild that does not alter return values. */ |
| 23 | phandle __prom_getchild(phandle node) | 23 | static phandle __prom_getchild(phandle node) |
| 24 | { | 24 | { |
| 25 | unsigned long flags; | 25 | unsigned long flags; |
| 26 | phandle cnode; | 26 | phandle cnode; |
| @@ -52,7 +52,7 @@ phandle prom_getchild(phandle node) | |||
| 52 | EXPORT_SYMBOL(prom_getchild); | 52 | EXPORT_SYMBOL(prom_getchild); |
| 53 | 53 | ||
| 54 | /* Internal version of prom_getsibling that does not alter return values. */ | 54 | /* Internal version of prom_getsibling that does not alter return values. */ |
| 55 | phandle __prom_getsibling(phandle node) | 55 | static phandle __prom_getsibling(phandle node) |
| 56 | { | 56 | { |
| 57 | unsigned long flags; | 57 | unsigned long flags; |
| 58 | phandle cnode; | 58 | phandle cnode; |
| @@ -177,20 +177,6 @@ void prom_getstring(phandle node, char *prop, char *user_buf, int ubuf_size) | |||
| 177 | EXPORT_SYMBOL(prom_getstring); | 177 | EXPORT_SYMBOL(prom_getstring); |
| 178 | 178 | ||
| 179 | 179 | ||
| 180 | /* Does the device at node 'node' have name 'name'? | ||
| 181 | * YES = 1 NO = 0 | ||
| 182 | */ | ||
| 183 | int prom_nodematch(phandle node, char *name) | ||
| 184 | { | ||
| 185 | int error; | ||
| 186 | |||
| 187 | static char namebuf[128]; | ||
| 188 | error = prom_getproperty(node, "name", namebuf, sizeof(namebuf)); | ||
| 189 | if (error == -1) return 0; | ||
| 190 | if(strcmp(namebuf, name) == 0) return 1; | ||
| 191 | return 0; | ||
| 192 | } | ||
| 193 | |||
| 194 | /* Search siblings at 'node_start' for a node with name | 180 | /* Search siblings at 'node_start' for a node with name |
| 195 | * 'nodename'. Return node if successful, zero if not. | 181 | * 'nodename'. Return node if successful, zero if not. |
| 196 | */ | 182 | */ |
| @@ -214,7 +200,7 @@ phandle prom_searchsiblings(phandle node_start, char *nodename) | |||
| 214 | EXPORT_SYMBOL(prom_searchsiblings); | 200 | EXPORT_SYMBOL(prom_searchsiblings); |
| 215 | 201 | ||
| 216 | /* Interal version of nextprop that does not alter return values. */ | 202 | /* Interal version of nextprop that does not alter return values. */ |
| 217 | char *__prom_nextprop(phandle node, char * oprop) | 203 | static char *__prom_nextprop(phandle node, char * oprop) |
| 218 | { | 204 | { |
| 219 | unsigned long flags; | 205 | unsigned long flags; |
| 220 | char *prop; | 206 | char *prop; |
| @@ -227,17 +213,6 @@ char *__prom_nextprop(phandle node, char * oprop) | |||
| 227 | return prop; | 213 | return prop; |
| 228 | } | 214 | } |
| 229 | 215 | ||
| 230 | /* Return the first property name for node 'node'. */ | ||
| 231 | /* buffer is unused argument, but as v9 uses it, we need to have the same interface */ | ||
| 232 | char *prom_firstprop(phandle node, char *bufer) | ||
| 233 | { | ||
| 234 | if (node == 0 || node == -1) | ||
| 235 | return ""; | ||
| 236 | |||
| 237 | return __prom_nextprop(node, ""); | ||
| 238 | } | ||
| 239 | EXPORT_SYMBOL(prom_firstprop); | ||
| 240 | |||
| 241 | /* Return the property type string after property type 'oprop' | 216 | /* Return the property type string after property type 'oprop' |
| 242 | * at node 'node' . Returns empty string if no more | 217 | * at node 'node' . Returns empty string if no more |
| 243 | * property types for this node. | 218 | * property types for this node. |
| @@ -299,19 +274,6 @@ phandle prom_finddevice(char *name) | |||
| 299 | } | 274 | } |
| 300 | EXPORT_SYMBOL(prom_finddevice); | 275 | EXPORT_SYMBOL(prom_finddevice); |
| 301 | 276 | ||
| 302 | int prom_node_has_property(phandle node, char *prop) | ||
| 303 | { | ||
| 304 | char *current_property = ""; | ||
| 305 | |||
| 306 | do { | ||
| 307 | current_property = prom_nextprop(node, current_property, NULL); | ||
| 308 | if(!strcmp(current_property, prop)) | ||
| 309 | return 1; | ||
| 310 | } while (*current_property); | ||
| 311 | return 0; | ||
| 312 | } | ||
| 313 | EXPORT_SYMBOL(prom_node_has_property); | ||
| 314 | |||
| 315 | /* Set property 'pname' at node 'node' to value 'value' which has a length | 277 | /* Set property 'pname' at node 'node' to value 'value' which has a length |
| 316 | * of 'size' bytes. Return the number of bytes the prom accepted. | 278 | * of 'size' bytes. Return the number of bytes the prom accepted. |
| 317 | */ | 279 | */ |
| @@ -320,8 +282,10 @@ int prom_setprop(phandle node, const char *pname, char *value, int size) | |||
| 320 | unsigned long flags; | 282 | unsigned long flags; |
| 321 | int ret; | 283 | int ret; |
| 322 | 284 | ||
| 323 | if(size == 0) return 0; | 285 | if (size == 0) |
| 324 | if((pname == 0) || (value == 0)) return 0; | 286 | return 0; |
| 287 | if ((pname == NULL) || (value == NULL)) | ||
| 288 | return 0; | ||
| 325 | spin_lock_irqsave(&prom_lock, flags); | 289 | spin_lock_irqsave(&prom_lock, flags); |
| 326 | ret = prom_nodeops->no_setprop(node, pname, value, size); | 290 | ret = prom_nodeops->no_setprop(node, pname, value, size); |
| 327 | restore_current(); | 291 | restore_current(); |
