1/*
2 * linux/arch/arm/mach-footbridge/cats-hw.c
3 *
4 * CATS machine fixup
5 *
6 * Copyright (C) 1998, 1999 Russell King, Phil Blundell
7 */
8#include <linux/ioport.h>
9#include <linux/kernel.h>
10#include <linux/init.h>
11#include <linux/screen_info.h>
12#include <linux/io.h>
13#include <linux/spinlock.h>
14
15#include <asm/hardware/dec21285.h>
16#include <asm/mach-types.h>
17#include <asm/setup.h>
18
19#include <asm/mach/arch.h>
20
21#include "common.h"
22
23#define CFG_PORT	0x370
24#define INDEX_PORT	(CFG_PORT)
25#define DATA_PORT	(CFG_PORT + 1)
26
27static int __init cats_hw_init(void)
28{
29	if (machine_is_cats()) {
30		/* Set Aladdin to CONFIGURE mode */
31		outb(0x51, CFG_PORT);
32		outb(0x23, CFG_PORT);
33
34		/* Select logical device 3 */
35		outb(0x07, INDEX_PORT);
36		outb(0x03, DATA_PORT);
37
38		/* Set parallel port to DMA channel 3, ECP+EPP1.9,
39		   enable EPP timeout */
40		outb(0x74, INDEX_PORT);
41		outb(0x03, DATA_PORT);
42
43		outb(0xf0, INDEX_PORT);
44		outb(0x0f, DATA_PORT);
45
46		outb(0xf1, INDEX_PORT);
47		outb(0x07, DATA_PORT);
48
49		/* Select logical device 4 */
50		outb(0x07, INDEX_PORT);
51		outb(0x04, DATA_PORT);
52
53		/* UART1 high speed mode */
54		outb(0xf0, INDEX_PORT);
55		outb(0x02, DATA_PORT);
56
57		/* Select logical device 5 */
58		outb(0x07, INDEX_PORT);
59		outb(0x05, DATA_PORT);
60
61		/* UART2 high speed mode */
62		outb(0xf0, INDEX_PORT);
63		outb(0x02, DATA_PORT);
64
65		/* Set Aladdin to RUN mode */
66		outb(0xbb, CFG_PORT);
67	}
68
69	return 0;
70}
71
72__initcall(cats_hw_init);
73
74/*
75 * CATS uses soft-reboot by default, since
76 * hard reboots fail on early boards.
77 */
78static void __init
79fixup_cats(struct tag *tags, char **cmdline)
80{
81#if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_DUMMY_CONSOLE)
82	screen_info.orig_video_lines  = 25;
83	screen_info.orig_video_points = 16;
84	screen_info.orig_y = 24;
85#endif
86}
87
88MACHINE_START(CATS, "Chalice-CATS")
89	/* Maintainer: Philip Blundell */
90	.atag_offset	= 0x100,
91	.reboot_mode	= REBOOT_SOFT,
92	.fixup		= fixup_cats,
93	.map_io		= footbridge_map_io,
94	.init_irq	= footbridge_init_irq,
95	.init_time	= isa_timer_init,
96	.restart	= footbridge_restart,
97MACHINE_END
98