mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
This commit is contained in:
commit
23bcbf1b63
@ -39,7 +39,7 @@ struct linux_dev_v2_funcs {
|
||||
int (*v2_dev_open)(char *devpath);
|
||||
void (*v2_dev_close)(int d);
|
||||
int (*v2_dev_read)(int d, char *buf, int nbytes);
|
||||
int (*v2_dev_write)(int d, char *buf, int nbytes);
|
||||
int (*v2_dev_write)(int d, const char *buf, int nbytes);
|
||||
int (*v2_dev_seek)(int d, int hi, int lo);
|
||||
|
||||
/* Never issued (multistage load support) */
|
||||
|
@ -60,25 +60,6 @@ extern char *prom_getbootargs(void);
|
||||
extern char *prom_mapio(char *virt_hint, int io_space, unsigned int phys_addr, unsigned int num_bytes);
|
||||
extern void prom_unmapio(char *virt_addr, unsigned int num_bytes);
|
||||
|
||||
/* Device operations. */
|
||||
|
||||
/* Open the device described by the passed string. Note, that the format
|
||||
* of the string is different on V0 vs. V2->higher proms. The caller must
|
||||
* know what he/she is doing! Returns the device descriptor, an int.
|
||||
*/
|
||||
extern int prom_devopen(char *device_string);
|
||||
|
||||
/* Close a previously opened device described by the passed integer
|
||||
* descriptor.
|
||||
*/
|
||||
extern int prom_devclose(int device_handle);
|
||||
|
||||
/* Do a seek operation on the device described by the passed integer
|
||||
* descriptor.
|
||||
*/
|
||||
extern void prom_seek(int device_handle, unsigned int seek_hival,
|
||||
unsigned int seek_lowval);
|
||||
|
||||
/* Miscellaneous routines, don't really fit in any category per se. */
|
||||
|
||||
/* Reboot the machine with the command line passed. */
|
||||
@ -121,19 +102,8 @@ extern int prom_getrev(void);
|
||||
/* Get the prom firmware revision. */
|
||||
extern int prom_getprev(void);
|
||||
|
||||
/* Character operations to/from the console.... */
|
||||
|
||||
/* Non-blocking get character from console. */
|
||||
extern int prom_nbgetchar(void);
|
||||
|
||||
/* Non-blocking put character to console. */
|
||||
extern int prom_nbputchar(char character);
|
||||
|
||||
/* Blocking get character from console. */
|
||||
extern char prom_getchar(void);
|
||||
|
||||
/* Blocking put character to console. */
|
||||
extern void prom_putchar(char character);
|
||||
/* Write a buffer of characters to the console. */
|
||||
extern void prom_console_write_buf(const char *buf, int len);
|
||||
|
||||
/* Prom's internal routines, don't use in kernel/boot code. */
|
||||
extern void prom_printf(const char *fmt, ...);
|
||||
@ -238,7 +208,6 @@ extern int prom_node_has_property(phandle node, char *property);
|
||||
extern int prom_setprop(phandle node, const char *prop_name, char *prop_value,
|
||||
int value_size);
|
||||
|
||||
extern phandle prom_pathtoinode(char *path);
|
||||
extern phandle prom_inst2pkg(int);
|
||||
|
||||
/* Dorking with Bus ranges... */
|
||||
|
@ -67,27 +67,6 @@ extern void prom_init(void *cif_handler, void *cif_stack);
|
||||
/* Boot argument acquisition, returns the boot command line string. */
|
||||
extern char *prom_getbootargs(void);
|
||||
|
||||
/* Device utilities. */
|
||||
|
||||
/* Device operations. */
|
||||
|
||||
/* Open the device described by the passed string. Note, that the format
|
||||
* of the string is different on V0 vs. V2->higher proms. The caller must
|
||||
* know what he/she is doing! Returns the device descriptor, an int.
|
||||
*/
|
||||
extern int prom_devopen(const char *device_string);
|
||||
|
||||
/* Close a previously opened device described by the passed integer
|
||||
* descriptor.
|
||||
*/
|
||||
extern int prom_devclose(int device_handle);
|
||||
|
||||
/* Do a seek operation on the device described by the passed integer
|
||||
* descriptor.
|
||||
*/
|
||||
extern void prom_seek(int device_handle, unsigned int seek_hival,
|
||||
unsigned int seek_lowval);
|
||||
|
||||
/* Miscellaneous routines, don't really fit in any category per se. */
|
||||
|
||||
/* Reboot the machine with the command line passed. */
|
||||
@ -109,33 +88,14 @@ extern void prom_halt(void) __attribute__ ((noreturn));
|
||||
/* Halt and power-off the machine. */
|
||||
extern void prom_halt_power_off(void) __attribute__ ((noreturn));
|
||||
|
||||
/* Set the PROM 'sync' callback function to the passed function pointer.
|
||||
* When the user gives the 'sync' command at the prom prompt while the
|
||||
* kernel is still active, the prom will call this routine.
|
||||
*
|
||||
*/
|
||||
typedef int (*callback_func_t)(long *cmd);
|
||||
extern void prom_setcallback(callback_func_t func_ptr);
|
||||
|
||||
/* Acquire the IDPROM of the root node in the prom device tree. This
|
||||
* gets passed a buffer where you would like it stuffed. The return value
|
||||
* is the format type of this idprom or 0xff on error.
|
||||
*/
|
||||
extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);
|
||||
|
||||
/* Character operations to/from the console.... */
|
||||
|
||||
/* Non-blocking get character from console. */
|
||||
extern int prom_nbgetchar(void);
|
||||
|
||||
/* Non-blocking put character to console. */
|
||||
extern int prom_nbputchar(char character);
|
||||
|
||||
/* Blocking get character from console. */
|
||||
extern char prom_getchar(void);
|
||||
|
||||
/* Blocking put character to console. */
|
||||
extern void prom_putchar(char character);
|
||||
/* Write a buffer of characters to the console. */
|
||||
extern void prom_console_write_buf(const char *buf, int len);
|
||||
|
||||
/* Prom's internal routines, don't use in kernel/boot code. */
|
||||
extern void prom_printf(const char *fmt, ...);
|
||||
@ -279,9 +239,7 @@ extern phandle prom_finddevice(const char *name);
|
||||
extern int prom_setprop(phandle node, const char *prop_name, char *prop_value,
|
||||
int value_size);
|
||||
|
||||
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);
|
||||
|
||||
extern int prom_ihandle2path(int handle, char *buffer, int bufsize);
|
||||
|
@ -114,7 +114,7 @@ void __init leon_init_timers(irq_handler_t counter_fn)
|
||||
if (leon3_gptimer_regs && leon3_irqctrl_regs) {
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].val, 0);
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].rld,
|
||||
(((1000000 / 100) - 1)));
|
||||
(((1000000 / HZ) - 1)));
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].ctrl, 0);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
@ -128,7 +128,7 @@ void __init leon_init_timers(irq_handler_t counter_fn)
|
||||
}
|
||||
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[1].val, 0);
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[1].rld, (((1000000/100) - 1)));
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[1].rld, (((1000000/HZ) - 1)));
|
||||
LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[1].ctrl, 0);
|
||||
# endif
|
||||
|
||||
|
@ -6,7 +6,6 @@ ccflags := -Werror
|
||||
|
||||
lib-y := bootstr_$(BITS).o
|
||||
lib-$(CONFIG_SPARC32) += devmap.o
|
||||
lib-y += devops_$(BITS).o
|
||||
lib-y += init_$(BITS).o
|
||||
lib-$(CONFIG_SPARC32) += memory.o
|
||||
lib-y += misc_$(BITS).o
|
||||
|
@ -16,63 +16,26 @@
|
||||
|
||||
extern void restore_current(void);
|
||||
|
||||
/* Non blocking get character from console input device, returns -1
|
||||
* if no input was taken. This can be used for polling.
|
||||
*/
|
||||
int
|
||||
prom_nbgetchar(void)
|
||||
{
|
||||
static char inc;
|
||||
int i = -1;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&prom_lock, flags);
|
||||
switch(prom_vers) {
|
||||
case PROM_V0:
|
||||
i = (*(romvec->pv_nbgetchar))();
|
||||
break;
|
||||
case PROM_V2:
|
||||
case PROM_V3:
|
||||
if( (*(romvec->pv_v2devops).v2_dev_read)(*romvec->pv_v2bootargs.fd_stdin , &inc, 0x1) == 1) {
|
||||
i = inc;
|
||||
} else {
|
||||
i = -1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
i = -1;
|
||||
break;
|
||||
};
|
||||
restore_current();
|
||||
spin_unlock_irqrestore(&prom_lock, flags);
|
||||
return i; /* Ugh, we could spin forever on unsupported proms ;( */
|
||||
}
|
||||
|
||||
/* Non blocking put character to console device, returns -1 if
|
||||
* unsuccessful.
|
||||
*/
|
||||
int
|
||||
prom_nbputchar(char c)
|
||||
static int prom_nbputchar(const char *buf)
|
||||
{
|
||||
static char outc;
|
||||
unsigned long flags;
|
||||
int i = -1;
|
||||
|
||||
spin_lock_irqsave(&prom_lock, flags);
|
||||
switch(prom_vers) {
|
||||
case PROM_V0:
|
||||
i = (*(romvec->pv_nbputchar))(c);
|
||||
i = (*(romvec->pv_nbputchar))(*buf);
|
||||
break;
|
||||
case PROM_V2:
|
||||
case PROM_V3:
|
||||
outc = c;
|
||||
if( (*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout, &outc, 0x1) == 1)
|
||||
if ((*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout,
|
||||
buf, 0x1) == 1)
|
||||
i = 0;
|
||||
else
|
||||
i = -1;
|
||||
break;
|
||||
default:
|
||||
i = -1;
|
||||
break;
|
||||
};
|
||||
restore_current();
|
||||
@ -80,18 +43,14 @@ prom_nbputchar(char c)
|
||||
return i; /* Ugh, we could spin forever on unsupported proms ;( */
|
||||
}
|
||||
|
||||
/* Blocking version of get character routine above. */
|
||||
char
|
||||
prom_getchar(void)
|
||||
void prom_console_write_buf(const char *buf, int len)
|
||||
{
|
||||
int character;
|
||||
while((character = prom_nbgetchar()) == -1) ;
|
||||
return (char) character;
|
||||
while (len) {
|
||||
int n = prom_nbputchar(buf);
|
||||
if (n)
|
||||
continue;
|
||||
len--;
|
||||
buf++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Blocking version of put character routine above. */
|
||||
void
|
||||
prom_putchar(char c)
|
||||
{
|
||||
while(prom_nbputchar(c) == -1) ;
|
||||
}
|
||||
|
@ -15,85 +15,34 @@
|
||||
|
||||
extern int prom_stdin, prom_stdout;
|
||||
|
||||
/* Non blocking get character from console input device, returns -1
|
||||
* if no input was taken. This can be used for polling.
|
||||
*/
|
||||
inline int
|
||||
prom_nbgetchar(void)
|
||||
static int __prom_console_write_buf(const char *buf, int len)
|
||||
{
|
||||
unsigned long args[7];
|
||||
char inc;
|
||||
|
||||
args[0] = (unsigned long) "read";
|
||||
args[1] = 3;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned int) prom_stdin;
|
||||
args[4] = (unsigned long) &inc;
|
||||
args[5] = 1;
|
||||
args[6] = (unsigned long) -1;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
|
||||
if (args[6] == 1)
|
||||
return inc;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Non blocking put character to console device, returns -1 if
|
||||
* unsuccessful.
|
||||
*/
|
||||
inline int
|
||||
prom_nbputchar(char c)
|
||||
{
|
||||
unsigned long args[7];
|
||||
char outc;
|
||||
|
||||
outc = c;
|
||||
int ret;
|
||||
|
||||
args[0] = (unsigned long) "write";
|
||||
args[1] = 3;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned int) prom_stdout;
|
||||
args[4] = (unsigned long) &outc;
|
||||
args[5] = 1;
|
||||
args[4] = (unsigned long) buf;
|
||||
args[5] = (unsigned int) len;
|
||||
args[6] = (unsigned long) -1;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
|
||||
if (args[6] == 1)
|
||||
return 0;
|
||||
else
|
||||
ret = (int) args[6];
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Blocking version of get character routine above. */
|
||||
char
|
||||
prom_getchar(void)
|
||||
void prom_console_write_buf(const char *buf, int len)
|
||||
{
|
||||
int character;
|
||||
while((character = prom_nbgetchar()) == -1) ;
|
||||
return (char) character;
|
||||
}
|
||||
|
||||
/* Blocking version of put character routine above. */
|
||||
void
|
||||
prom_putchar(char c)
|
||||
{
|
||||
prom_nbputchar(c);
|
||||
}
|
||||
|
||||
void
|
||||
prom_puts(const char *s, int len)
|
||||
{
|
||||
unsigned long args[7];
|
||||
|
||||
args[0] = (unsigned long) "write";
|
||||
args[1] = 3;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned int) prom_stdout;
|
||||
args[4] = (unsigned long) s;
|
||||
args[5] = len;
|
||||
args[6] = (unsigned long) -1;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
while (len) {
|
||||
int n = __prom_console_write_buf(buf, len);
|
||||
if (n < 0)
|
||||
continue;
|
||||
len -= n;
|
||||
buf += len;
|
||||
}
|
||||
}
|
||||
|
@ -1,87 +0,0 @@
|
||||
/*
|
||||
* devops.c: Device operations using the PROM.
|
||||
*
|
||||
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
|
||||
*/
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
#include <asm/openprom.h>
|
||||
#include <asm/oplib.h>
|
||||
|
||||
extern void restore_current(void);
|
||||
|
||||
/* Open the device described by the string 'dstr'. Returns the handle
|
||||
* to that device used for subsequent operations on that device.
|
||||
* Returns -1 on failure.
|
||||
*/
|
||||
int
|
||||
prom_devopen(char *dstr)
|
||||
{
|
||||
int handle;
|
||||
unsigned long flags;
|
||||
spin_lock_irqsave(&prom_lock, flags);
|
||||
switch(prom_vers) {
|
||||
case PROM_V0:
|
||||
handle = (*(romvec->pv_v0devops.v0_devopen))(dstr);
|
||||
if(handle == 0) handle = -1;
|
||||
break;
|
||||
case PROM_V2:
|
||||
case PROM_V3:
|
||||
handle = (*(romvec->pv_v2devops.v2_dev_open))(dstr);
|
||||
break;
|
||||
default:
|
||||
handle = -1;
|
||||
break;
|
||||
};
|
||||
restore_current();
|
||||
spin_unlock_irqrestore(&prom_lock, flags);
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
/* Close the device described by device handle 'dhandle'. */
|
||||
int
|
||||
prom_devclose(int dhandle)
|
||||
{
|
||||
unsigned long flags;
|
||||
spin_lock_irqsave(&prom_lock, flags);
|
||||
switch(prom_vers) {
|
||||
case PROM_V0:
|
||||
(*(romvec->pv_v0devops.v0_devclose))(dhandle);
|
||||
break;
|
||||
case PROM_V2:
|
||||
case PROM_V3:
|
||||
(*(romvec->pv_v2devops.v2_dev_close))(dhandle);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
restore_current();
|
||||
spin_unlock_irqrestore(&prom_lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Seek to specified location described by 'seekhi' and 'seeklo'
|
||||
* for device 'dhandle'.
|
||||
*/
|
||||
void
|
||||
prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo)
|
||||
{
|
||||
unsigned long flags;
|
||||
spin_lock_irqsave(&prom_lock, flags);
|
||||
switch(prom_vers) {
|
||||
case PROM_V0:
|
||||
(*(romvec->pv_v0devops.v0_seekdev))(dhandle, seekhi, seeklo);
|
||||
break;
|
||||
case PROM_V2:
|
||||
case PROM_V3:
|
||||
(*(romvec->pv_v2devops.v2_dev_seek))(dhandle, seekhi, seeklo);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
restore_current();
|
||||
spin_unlock_irqrestore(&prom_lock, flags);
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
* devops.c: Device operations using the PROM.
|
||||
*
|
||||
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
|
||||
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
|
||||
*/
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
#include <asm/openprom.h>
|
||||
#include <asm/oplib.h>
|
||||
|
||||
/* Open the device described by the string 'dstr'. Returns the handle
|
||||
* to that device used for subsequent operations on that device.
|
||||
* Returns 0 on failure.
|
||||
*/
|
||||
int
|
||||
prom_devopen(const char *dstr)
|
||||
{
|
||||
unsigned long args[5];
|
||||
|
||||
args[0] = (unsigned long) "open";
|
||||
args[1] = 1;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned long) dstr;
|
||||
args[4] = (unsigned long) -1;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
|
||||
return (int) args[4];
|
||||
}
|
||||
|
||||
/* Close the device described by device handle 'dhandle'. */
|
||||
int
|
||||
prom_devclose(int dhandle)
|
||||
{
|
||||
unsigned long args[4];
|
||||
|
||||
args[0] = (unsigned long) "close";
|
||||
args[1] = 1;
|
||||
args[2] = 0;
|
||||
args[3] = (unsigned int) dhandle;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Seek to specified location described by 'seekhi' and 'seeklo'
|
||||
* for device 'dhandle'.
|
||||
*/
|
||||
void
|
||||
prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo)
|
||||
{
|
||||
unsigned long args[7];
|
||||
|
||||
args[0] = (unsigned long) "seek";
|
||||
args[1] = 3;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned int) dhandle;
|
||||
args[4] = seekhi;
|
||||
args[5] = seeklo;
|
||||
args[6] = (unsigned long) -1;
|
||||
|
||||
p1275_cmd_direct(args);
|
||||
}
|
@ -18,7 +18,7 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/ldc.h>
|
||||
|
||||
int prom_service_exists(const char *service_name)
|
||||
static int prom_service_exists(const char *service_name)
|
||||
{
|
||||
unsigned long args[5];
|
||||
|
||||
@ -150,20 +150,6 @@ void prom_halt_power_off(void)
|
||||
prom_halt();
|
||||
}
|
||||
|
||||
/* Set prom sync handler to call function 'funcp'. */
|
||||
void prom_setcallback(callback_func_t funcp)
|
||||
{
|
||||
unsigned long args[5];
|
||||
if (!funcp)
|
||||
return;
|
||||
args[0] = (unsigned long) "set-callback";
|
||||
args[1] = 1;
|
||||
args[2] = 1;
|
||||
args[3] = (unsigned long) funcp;
|
||||
args[4] = (unsigned long) -1;
|
||||
p1275_cmd_direct(args);
|
||||
}
|
||||
|
||||
/* Get the idprom and stuff it into buffer 'idbuf'. Returns the
|
||||
* format type. 'num_bytes' is the number of bytes that your idbuf
|
||||
* has space for. Returns 0xff on error.
|
||||
|
@ -15,22 +15,45 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
#include <asm/openprom.h>
|
||||
#include <asm/oplib.h>
|
||||
|
||||
#define CONSOLE_WRITE_BUF_SIZE 1024
|
||||
|
||||
static char ppbuf[1024];
|
||||
static char console_write_buf[CONSOLE_WRITE_BUF_SIZE];
|
||||
static DEFINE_RAW_SPINLOCK(console_write_lock);
|
||||
|
||||
void notrace prom_write(const char *buf, unsigned int n)
|
||||
{
|
||||
char ch;
|
||||
unsigned int dest_len;
|
||||
unsigned long flags;
|
||||
char *dest;
|
||||
|
||||
while (n != 0) {
|
||||
--n;
|
||||
if ((ch = *buf++) == '\n')
|
||||
prom_putchar('\r');
|
||||
prom_putchar(ch);
|
||||
dest = console_write_buf;
|
||||
raw_spin_lock_irqsave(&console_write_lock, flags);
|
||||
|
||||
dest_len = 0;
|
||||
while (n-- != 0) {
|
||||
char ch = *buf++;
|
||||
if (ch == '\n') {
|
||||
*dest++ = '\r';
|
||||
dest_len++;
|
||||
}
|
||||
*dest++ = ch;
|
||||
dest_len++;
|
||||
if (dest_len >= CONSOLE_WRITE_BUF_SIZE - 1) {
|
||||
prom_console_write_buf(console_write_buf, dest_len);
|
||||
dest = console_write_buf;
|
||||
dest_len = 0;
|
||||
}
|
||||
}
|
||||
if (dest_len)
|
||||
prom_console_write_buf(console_write_buf, dest_len);
|
||||
|
||||
raw_spin_unlock_irqrestore(&console_write_lock, flags);
|
||||
}
|
||||
|
||||
void notrace prom_printf(const char *fmt, ...)
|
||||
|
@ -342,19 +342,3 @@ phandle prom_inst2pkg(int inst)
|
||||
if (node == -1) return 0;
|
||||
return node;
|
||||
}
|
||||
|
||||
/* Return 'node' assigned to a particular prom 'path'
|
||||
* FIXME: Should work for v0 as well
|
||||
*/
|
||||
phandle prom_pathtoinode(char *path)
|
||||
{
|
||||
phandle node;
|
||||
int inst;
|
||||
|
||||
inst = prom_devopen (path);
|
||||
if (inst == -1) return 0;
|
||||
node = prom_inst2pkg (inst);
|
||||
prom_devclose (inst);
|
||||
if (node == -1) return 0;
|
||||
return node;
|
||||
}
|
||||
|
@ -374,24 +374,6 @@ inline phandle prom_inst2pkg(int inst)
|
||||
return node;
|
||||
}
|
||||
|
||||
/* Return 'node' assigned to a particular prom 'path'
|
||||
* FIXME: Should work for v0 as well
|
||||
*/
|
||||
phandle prom_pathtoinode(const char *path)
|
||||
{
|
||||
phandle node;
|
||||
int inst;
|
||||
|
||||
inst = prom_devopen (path);
|
||||
if (inst == 0)
|
||||
return 0;
|
||||
node = prom_inst2pkg(inst);
|
||||
prom_devclose(inst);
|
||||
if (node == -1)
|
||||
return 0;
|
||||
return node;
|
||||
}
|
||||
|
||||
int prom_ihandle2path(int handle, char *buffer, int bufsize)
|
||||
{
|
||||
unsigned long args[7];
|
||||
|
Loading…
Reference in New Issue
Block a user