diff options
Diffstat (limited to 'arch/ia64/sn/sn1/setup.c')
-rw-r--r-- | arch/ia64/sn/sn1/setup.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/arch/ia64/sn/sn1/setup.c b/arch/ia64/sn/sn1/setup.c new file mode 100644 index 000000000..1e3a39ae3 --- /dev/null +++ b/arch/ia64/sn/sn1/setup.c @@ -0,0 +1,77 @@ +/* + * + * Copyright (C) 1999 Silicon Graphics, Inc. + * Copyright (C) Vijay Chander(vijay@engr.sgi.com) + */ +#include <linux/config.h> +#include <linux/init.h> +#include <linux/delay.h> +#include <linux/kernel.h> +#include <linux/kdev_t.h> +#include <linux/string.h> +#include <linux/tty.h> +#include <linux/console.h> +#include <linux/timex.h> +#include <linux/sched.h> + +#include <asm/io.h> +#include <asm/machvec.h> +#include <asm/system.h> +#include <asm/processor.h> + + +/* + * The format of "screen_info" is strange, and due to early i386-setup + * code. This is just enough to make the console code think we're on a + * VGA color display. + */ +struct screen_info sn1_screen_info = { + orig_x: 0, + orig_y: 0, + orig_video_mode: 3, + orig_video_cols: 80, + orig_video_ega_bx: 3, + orig_video_lines: 25, + orig_video_isVGA: 1, + orig_video_points: 16 +}; + +/* + * This is here so we can use the CMOS detection in ide-probe.c to + * determine what drives are present. In theory, we don't need this + * as the auto-detection could be done via ide-probe.c:do_probe() but + * in practice that would be much slower, which is painful when + * running in the simulator. Note that passing zeroes in DRIVE_INFO + * is sufficient (the IDE driver will autodetect the drive geometry). + */ +char drive_info[4*16]; + +unsigned long +sn1_map_nr (unsigned long addr) +{ + return MAP_NR_SN1(addr); +} + +void +sn1_setup(char **cmdline_p) +{ + + ROOT_DEV = to_kdev_t(0x0301); /* default to first IDE drive */ + +#if !defined (CONFIG_IA64_SOFTSDV_HACKS) + /* + * Program the timer to deliver timer ticks. 0x40 is the I/O port + * address of PIT counter 0, 0x43 is the I/O port address of the + * PIT control word. + */ + request_region(0x40,0x20,"timer"); + outb(0x34, 0x43); /* Control word */ + outb(LATCH & 0xff , 0x40); /* LSB */ + outb(LATCH >> 8, 0x40); /* MSB */ + printk("PIT: LATCH at 0x%x%x for %d HZ\n", LATCH >> 8, LATCH & 0xff, HZ); +#endif +#ifdef __SMP__ + init_smp_config(); +#endif + screen_info = sn1_screen_info; +} |