summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/time.c')
-rw-r--r--arch/sparc/kernel/time.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c
index 7ee196241..008567aba 100644
--- a/arch/sparc/kernel/time.c
+++ b/arch/sparc/kernel/time.c
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.46 1999/08/31 13:11:26 anton Exp $
+/* $Id: time.c,v 1.49 1999/11/17 07:34:07 zaitcev Exp $
* linux/arch/sparc/kernel/time.c
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -26,6 +26,7 @@
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/pci.h>
+#include <linux/ioport.h>
#include <asm/oplib.h>
#include <asm/segment.h>
@@ -38,6 +39,7 @@
#include <asm/machines.h>
#include <asm/sun4paddr.h>
#include <asm/page.h>
+#include <asm/pcic.h>
extern rwlock_t xtime_lock;
@@ -207,13 +209,14 @@ static __inline__ void sun4_clock_probe(void)
{
#ifdef CONFIG_SUN4
int temp;
+ struct resource r;
+ memset(&r, 0, sizeof(r));
if( idprom->id_machtype == (SM_SUN4 | SM_4_330) ) {
sp_clock_typ = MSTK48T02;
- mstk48t02_regs = (unsigned long)
- sparc_alloc_io(sun4_clock_physaddr, 0,
- sizeof(struct mostek48t02),
- "clock", 0x0, 0x0);
+ r.start = sun4_clock_physaddr;
+ mstk48t02_regs = sbus_ioremap(&r, 0,
+ sizeof(struct mostek48t02), 0);
mstk48t08_regs = 0; /* To catch weirdness */
intersil_clock = 0; /* just in case */
@@ -224,10 +227,9 @@ static __inline__ void sun4_clock_probe(void)
/* intersil setup code */
printk("Clock: INTERSIL at %8x ",sun4_clock_physaddr);
sp_clock_typ = INTERSIL;
+ r.start = sun4_clock_physaddr;
intersil_clock = (struct intersil *)
- sparc_alloc_io(sun4_clock_physaddr, 0,
- sizeof(*intersil_clock),
- "clock", 0x0, 0x0);
+ sparc_ioremap(&r, 0, sizeof(*intersil_clock), "intersil");
mstk48t02_regs = 0; /* just be sure */
mstk48t08_regs = 0; /* ditto */
/* initialise the clock */
@@ -256,8 +258,10 @@ static __inline__ void clock_probe(void)
struct linux_prom_registers clk_reg[2];
char model[128];
register int node, cpuunit, bootbus;
+ struct resource r;
cpuunit = bootbus = 0;
+ memset(&r, 0, sizeof(r));
/* Determine the correct starting PROM node for the probe. */
node = prom_getchild(prom_root_node);
@@ -297,10 +301,10 @@ static __inline__ void clock_probe(void)
else
prom_apply_obio_ranges(clk_reg, 1);
/* Map the clock register io area read-only */
- mstk48t02_regs = (unsigned long)
- sparc_alloc_io(clk_reg[0].phys_addr,
- (void *) 0, sizeof(struct mostek48t02),
- "clock", clk_reg[0].which_io, 0x0);
+ r.flags = clk_reg[0].which_io;
+ r.start = clk_reg[0].phys_addr;
+ mstk48t02_regs = sbus_ioremap(&r, 0,
+ sizeof(struct mostek48t02), "mk48t02");
mstk48t08_regs = 0; /* To catch weirdness */
} else if (strcmp(model, "mk48t08") == 0) {
sp_clock_typ = MSTK48T08;
@@ -314,10 +318,11 @@ static __inline__ void clock_probe(void)
else
prom_apply_obio_ranges(clk_reg, 1);
/* Map the clock register io area read-only */
- mstk48t08_regs = (struct mostek48t08 *)
- sparc_alloc_io(clk_reg[0].phys_addr,
- (void *) 0, sizeof(*mstk48t08_regs),
- "clock", clk_reg[0].which_io, 0x0);
+ /* XXX r/o attribute is somewhere in r.flags */
+ r.flags = clk_reg[0].which_io;
+ r.start = clk_reg[0].phys_addr;
+ mstk48t08_regs = (struct mostek48t08 *) sbus_ioremap(&r, 0,
+ sizeof(struct mostek48t08), "mk48t08");
mstk48t02_regs = (unsigned long)&mstk48t08_regs->regs;
} else {
@@ -420,7 +425,7 @@ void __init time_init(void)
{
#ifdef CONFIG_PCI
extern void pci_time_init(void);
- if (pci_present()) {
+ if (pcic_present()) {
pci_time_init();
return;
}