diff options
author | davem <davem> | 2001-12-19 00:29:51 +0000 |
---|---|---|
committer | davem <davem> | 2001-12-19 00:29:51 +0000 |
commit | 4bad515e6486bceb12c12f984ba038738554967b (patch) | |
tree | 3a902c8a66717292b77c91787651127102078fe4 | |
parent | e6fa1d2fd4f9da278116ccf7ed608c90e74c4a7d (diff) | |
download | netdev-vger-cvs-4bad515e6486bceb12c12f984ba038738554967b.tar.gz |
Bring range/reg fixes to the mainline.
-rw-r--r-- | arch/sparc/prom/ranges.c | 17 | ||||
-rw-r--r-- | arch/sparc64/kernel/central.c | 3 | ||||
-rw-r--r-- | drivers/sbus/sbus.c | 3 | ||||
-rw-r--r-- | include/asm-sparc/oplib.h | 13 | ||||
-rw-r--r-- | include/asm-sparc64/oplib.h | 16 |
5 files changed, 14 insertions, 38 deletions
diff --git a/arch/sparc/prom/ranges.c b/arch/sparc/prom/ranges.c index 1529adb95..655415dca 100644 --- a/arch/sparc/prom/ranges.c +++ b/arch/sparc/prom/ranges.c @@ -1,4 +1,4 @@ -/* $Id: ranges.c,v 1.14 1999-10-06 19:28:54 zaitcev Exp $ +/* $Id: ranges.c,v 1.15 2001-12-19 00:29:51 davem Exp $ * ranges.c: Handle ranges in newer proms for obio/sbus. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -16,26 +16,25 @@ struct linux_prom_ranges promlib_obio_ranges[PROMREG_MAX]; int num_obio_ranges; /* Adjust register values based upon the ranges parameters. */ -void +static void prom_adjust_regs(struct linux_prom_registers *regp, int nregs, struct linux_prom_ranges *rangep, int nranges) { int regc, rngc; - for(regc=0; regc < nregs; regc++) { - for(rngc=0; rngc < nranges; rngc++) - if(regp[regc].which_io == rangep[rngc].ot_child_space && - regp[regc].phys_addr >= rangep[rngc].ot_child_base && - regp[regc].phys_addr + regp[regc].reg_size <= rangep[rngc].ot_child_base + rangep[rngc].or_size) + for (regc = 0; regc < nregs; regc++) { + for (rngc = 0; rngc < nranges; rngc++) + if (regp[regc].which_io == rangep[rngc].ot_child_space) break; /* Fount it */ - if(rngc==nranges) /* oops */ + if (rngc == nranges) /* oops */ prom_printf("adjust_regs: Could not find range with matching bus type...\n"); regp[regc].which_io = rangep[rngc].ot_parent_space; + regp[regc].phys_addr -= rangep[rngc].ot_child_base; regp[regc].phys_addr += rangep[rngc].ot_parent_base; } } -void +static void prom_adjust_ranges(struct linux_prom_ranges *ranges1, int nranges1, struct linux_prom_ranges *ranges2, int nranges2) { diff --git a/arch/sparc64/kernel/central.c b/arch/sparc64/kernel/central.c index f3fe579c6..ac60dbae0 100644 --- a/arch/sparc64/kernel/central.c +++ b/arch/sparc64/kernel/central.c @@ -1,4 +1,4 @@ -/* $Id: central.c,v 1.14 2000-09-21 06:25:14 anton Exp $ +/* $Id: central.c,v 1.15 2001-12-19 00:29:51 davem Exp $ * central.c: Central FHC driver for Sunfire/Starfire/Wildfire. * * Copyright (C) 1997, 1999 David S. Miller (davem@redhat.com) @@ -67,6 +67,7 @@ static void adjust_regs(struct linux_prom_registers *regp, int nregs, if (rngc == nranges) /* oops */ prom_printf("adjust_regs: Could not find range with matching bus type...\n"); regp[regc].which_io = rangep[rngc].ot_parent_space; + regp[regc].phys_addr -= rangep[rngc].ot_child_base; regp[regc].phys_addr += rangep[rngc].ot_parent_base; } } diff --git a/drivers/sbus/sbus.c b/drivers/sbus/sbus.c index 6e1282125..43b2d9c42 100644 --- a/drivers/sbus/sbus.c +++ b/drivers/sbus/sbus.c @@ -1,4 +1,4 @@ -/* $Id: sbus.c,v 1.96 2001-12-18 20:41:06 davem Exp $ +/* $Id: sbus.c,v 1.97 2001-12-19 00:29:51 davem Exp $ * sbus.c: SBus support routines. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -231,6 +231,7 @@ static void __init __apply_ranges_to_regs(struct linux_prom_ranges *ranges, return; } regs[regnum].which_io = ranges[rngnum].ot_parent_space; + regs[regnum].phys_addr -= ranges[rngnum].ot_child_base; regs[regnum].phys_addr += ranges[rngnum].ot_parent_base; } } diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h index d48929c99..eed063b8f 100644 --- a/include/asm-sparc/oplib.h +++ b/include/asm-sparc/oplib.h @@ -1,4 +1,4 @@ -/* $Id: oplib.h,v 1.21 2000-08-26 02:38:04 anton Exp $ +/* $Id: oplib.h,v 1.22 2001-12-19 00:29:51 davem Exp $ * oplib.h: Describes the interface and available routines in the * Linux Prom library. * @@ -298,17 +298,6 @@ extern int prom_inst2pkg(int); /* Dorking with Bus ranges... */ -/* Adjust reg values with the passed ranges. */ -extern void prom_adjust_regs(struct linux_prom_registers *regp, int nregs, - struct linux_prom_ranges *rangep, int nranges); - -/* Adjust child ranges with the passed parent ranges. */ -extern void prom_adjust_ranges(struct linux_prom_ranges *cranges, int ncranges, - struct linux_prom_ranges *pranges, int npranges); - -/* Apply promlib probed OBIO ranges to registers. */ -extern void prom_apply_obio_ranges(struct linux_prom_registers *obioregs, int nregs); - /* Apply ranges of any prom node (and optionally parent node as well) to registers. */ extern void prom_apply_generic_ranges(int node, int parent, struct linux_prom_registers *sbusregs, int nregs); diff --git a/include/asm-sparc64/oplib.h b/include/asm-sparc64/oplib.h index 544c0d7c4..e2fc73704 100644 --- a/include/asm-sparc64/oplib.h +++ b/include/asm-sparc64/oplib.h @@ -1,4 +1,4 @@ -/* $Id: oplib.h,v 1.13 2000-05-09 17:40:15 davem Exp $ +/* $Id: oplib.h,v 1.14 2001-12-19 00:29:51 davem Exp $ * oplib.h: Describes the interface and available routines in the * Linux Prom library. * @@ -326,20 +326,6 @@ extern int prom_inst2pkg(int); /* Client interface level routines. */ extern void prom_set_trap_table(unsigned long tba); -/* Dorking with Bus ranges... */ - -/* Adjust reg values with the passed ranges. */ -extern void prom_adjust_regs(struct linux_prom_registers *regp, int nregs, - struct linux_prom_ranges *rangep, int nranges); - -/* Adjust child ranges with the passed parent ranges. */ -extern void prom_adjust_ranges(struct linux_prom_ranges *cranges, int ncranges, - struct linux_prom_ranges *pranges, int npranges); - -/* Apply ranges of any prom node (and optionally parent node as well) to registers. */ -extern void prom_apply_generic_ranges(int node, int parent, - struct linux_prom_registers *sbusregs, int nregs); - extern long p1275_cmd (char *, long, ...); |