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