]>
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> |
1da177e4 LT |
12 | |
13 | #include <asm/hardware/dec21285.h> | |
14 | #include <asm/io.h> | |
15 | #include <asm/mach-types.h> | |
16 | #include <asm/setup.h> | |
17 | ||
18 | #include <asm/mach/arch.h> | |
19 | ||
20 | #include "common.h" | |
21 | ||
22 | #define CFG_PORT 0x370 | |
23 | #define INDEX_PORT (CFG_PORT) | |
24 | #define DATA_PORT (CFG_PORT + 1) | |
25 | ||
26 | static int __init cats_hw_init(void) | |
27 | { | |
28 | if (machine_is_cats()) { | |
29 | /* Set Aladdin to CONFIGURE mode */ | |
30 | outb(0x51, CFG_PORT); | |
31 | outb(0x23, CFG_PORT); | |
32 | ||
33 | /* Select logical device 3 */ | |
34 | outb(0x07, INDEX_PORT); | |
35 | outb(0x03, DATA_PORT); | |
36 | ||
37 | /* Set parallel port to DMA channel 3, ECP+EPP1.9, | |
38 | enable EPP timeout */ | |
39 | outb(0x74, INDEX_PORT); | |
40 | outb(0x03, DATA_PORT); | |
41 | ||
42 | outb(0xf0, INDEX_PORT); | |
43 | outb(0x0f, DATA_PORT); | |
44 | ||
45 | outb(0xf1, INDEX_PORT); | |
46 | outb(0x07, DATA_PORT); | |
47 | ||
48 | /* Select logical device 4 */ | |
49 | outb(0x07, INDEX_PORT); | |
50 | outb(0x04, DATA_PORT); | |
51 | ||
52 | /* UART1 high speed mode */ | |
53 | outb(0xf0, INDEX_PORT); | |
54 | outb(0x02, DATA_PORT); | |
55 | ||
56 | /* Select logical device 5 */ | |
57 | outb(0x07, INDEX_PORT); | |
58 | outb(0x05, DATA_PORT); | |
59 | ||
60 | /* UART2 high speed mode */ | |
61 | outb(0xf0, INDEX_PORT); | |
62 | outb(0x02, DATA_PORT); | |
63 | ||
64 | /* Set Aladdin to RUN mode */ | |
65 | outb(0xbb, CFG_PORT); | |
66 | } | |
67 | ||
68 | return 0; | |
69 | } | |
70 | ||
71 | __initcall(cats_hw_init); | |
72 | ||
73 | /* | |
74 | * CATS uses soft-reboot by default, since | |
75 | * hard reboots fail on early boards. | |
76 | */ | |
77 | static void __init | |
78 | fixup_cats(struct machine_desc *desc, struct tag *tags, | |
79 | char **cmdline, struct meminfo *mi) | |
80 | { | |
81 | ORIG_VIDEO_LINES = 25; | |
82 | ORIG_VIDEO_POINTS = 16; | |
83 | ORIG_Y = 24; | |
84 | } | |
85 | ||
86 | MACHINE_START(CATS, "Chalice-CATS") | |
e9dea0c6 | 87 | /* Maintainer: Philip Blundell */ |
e9dea0c6 RK |
88 | .phys_io = DC21285_ARMCSR_BASE, |
89 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, | |
90 | .boot_params = 0x00000100, | |
91 | .soft_reboot = 1, | |
92 | .fixup = fixup_cats, | |
93 | .map_io = footbridge_map_io, | |
94 | .init_irq = footbridge_init_irq, | |
1da177e4 LT |
95 | .timer = &isa_timer, |
96 | MACHINE_END |