]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
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> | |
b1c495ff | 11 | #include <linux/screen_info.h> |
fced80c7 | 12 | #include <linux/io.h> |
70d13e08 | 13 | #include <linux/spinlock.h> |
1da177e4 LT |
14 | |
15 | #include <asm/hardware/dec21285.h> | |
1da177e4 LT |
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 | ||
27 | static 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 | */ | |
78 | static void __init | |
79 | fixup_cats(struct machine_desc *desc, struct tag *tags, | |
80 | char **cmdline, struct meminfo *mi) | |
81 | { | |
3ea33510 PA |
82 | screen_info.orig_video_lines = 25; |
83 | screen_info.orig_video_points = 16; | |
84 | screen_info.orig_y = 24; | |
1da177e4 LT |
85 | } |
86 | ||
87 | MACHINE_START(CATS, "Chalice-CATS") | |
e9dea0c6 | 88 | /* Maintainer: Philip Blundell */ |
e9dea0c6 RK |
89 | .boot_params = 0x00000100, |
90 | .soft_reboot = 1, | |
91 | .fixup = fixup_cats, | |
92 | .map_io = footbridge_map_io, | |
93 | .init_irq = footbridge_init_irq, | |
1da177e4 LT |
94 | .timer = &isa_timer, |
95 | MACHINE_END |